changeset 1810:5b10caa4c7fd

Add support for disabling Nimbus code generation with JIBX and instead using pre-built files. 2009-05-21 Andrew John Hughes <ahughes@redhat.com> * Makefile.am: Apply patch and use our generated source directory when ENABLE_NIMBUS_GENERATION is not enabled. Symlink JIBX when it is. * acinclude.m4: (AC_CHECK_ENABLE_NIMBUS_GENERATION): New macro. * configure.ac: Turn on ENABLE_NIMBUS_GENERATION and only check for JIBX when this is enabled. * generated/javax/swing/plaf/nimbus/ArrowButtonPainter.java, * generated/javax/swing/plaf/nimbus/ButtonPainter.java, * generated/javax/swing/plaf/nimbus/CheckBoxMenuItemPainter.java, * generated/javax/swing/plaf/nimbus/CheckBoxPainter.java, * generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonEditableState.java, * generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonPainter.java, * generated/javax/swing/plaf/nimbus/ComboBoxComboBoxTextFieldPainter.java, * generated/javax/swing/plaf/nimbus/ComboBoxEditableState.java, * generated/javax/swing/plaf/nimbus/ComboBoxPainter.java, * generated/javax/swing/plaf/nimbus/DesktopIconPainter.java, * generated/javax/swing/plaf/nimbus/DesktopPanePainter.java, * generated/javax/swing/plaf/nimbus/EditorPanePainter.java, * generated/javax/swing/plaf/nimbus/FileChooserPainter.java, * generated/javax/swing/plaf/nimbus/FormattedTextFieldPainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonWindowNotFocusedState.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonWindowNotFocusedState.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowMaximizedState.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonWindowNotFocusedState.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePanePainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneWindowFocusedState.java, * generated/javax/swing/plaf/nimbus/InternalFramePainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameWindowFocusedState.java, * generated/javax/swing/plaf/nimbus/MenuBarMenuPainter.java, * generated/javax/swing/plaf/nimbus/MenuBarPainter.java, * generated/javax/swing/plaf/nimbus/MenuItemPainter.java, * generated/javax/swing/plaf/nimbus/MenuPainter.java, * generated/javax/swing/plaf/nimbus/NimbusDefaults.java, * generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaOptionPaneLabelPainter.java, * generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaPainter.java, * generated/javax/swing/plaf/nimbus/OptionPanePainter.java, * generated/javax/swing/plaf/nimbus/PasswordFieldPainter.java, * generated/javax/swing/plaf/nimbus/PopupMenuPainter.java, * generated/javax/swing/plaf/nimbus/PopupMenuSeparatorPainter.java, * generated/javax/swing/plaf/nimbus/ProgressBarFinishedState.java, * generated/javax/swing/plaf/nimbus/ProgressBarIndeterminateState.java, * generated/javax/swing/plaf/nimbus/ProgressBarPainter.java, * generated/javax/swing/plaf/nimbus/RadioButtonMenuItemPainter.java, * generated/javax/swing/plaf/nimbus/RadioButtonPainter.java, * generated/javax/swing/plaf/nimbus/ScrollBarPainter.java, * generated/javax/swing/plaf/nimbus/ScrollBarScrollBarButtonPainter.java, * generated/javax/swing/plaf/nimbus/ScrollBarScrollBarThumbPainter.java, * generated/javax/swing/plaf/nimbus/ScrollBarScrollBarTrackPainter.java, * generated/javax/swing/plaf/nimbus/ScrollPanePainter.java, * generated/javax/swing/plaf/nimbus/SeparatorPainter.java, * generated/javax/swing/plaf/nimbus/SliderArrowShapeState.java, * generated/javax/swing/plaf/nimbus/SliderPainter.java, * generated/javax/swing/plaf/nimbus/SliderSliderThumbArrowShapeState.java, * generated/javax/swing/plaf/nimbus/SliderSliderThumbPainter.java, * generated/javax/swing/plaf/nimbus/SliderSliderTrackArrowShapeState.java, * generated/javax/swing/plaf/nimbus/SliderSliderTrackPainter.java, * generated/javax/swing/plaf/nimbus/SpinnerPainter.java, * generated/javax/swing/plaf/nimbus/SpinnerPanelSpinnerFormattedTextFieldPainter.java, * generated/javax/swing/plaf/nimbus/SpinnerSpinnerNextButtonPainter.java, * generated/javax/swing/plaf/nimbus/SpinnerSpinnerPreviousButtonPainter.java, * generated/javax/swing/plaf/nimbus/SplitPanePainter.java, * generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerPainter.java, * generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerVerticalState.java, * generated/javax/swing/plaf/nimbus/SplitPaneVerticalState.java, * generated/javax/swing/plaf/nimbus/TabbedPanePainter.java, * generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabAreaPainter.java, * generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabPainter.java, * generated/javax/swing/plaf/nimbus/TableEditorPainter.java, * generated/javax/swing/plaf/nimbus/TableHeaderPainter.java, * generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererPainter.java, * generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererSortedState.java, * generated/javax/swing/plaf/nimbus/TextAreaNotInScrollPaneState.java, * generated/javax/swing/plaf/nimbus/TextAreaPainter.java, * generated/javax/swing/plaf/nimbus/TextFieldPainter.java, * generated/javax/swing/plaf/nimbus/TextPanePainter.java, * generated/javax/swing/plaf/nimbus/ToggleButtonPainter.java, * generated/javax/swing/plaf/nimbus/ToolBarButtonPainter.java, * generated/javax/swing/plaf/nimbus/ToolBarEastState.java, * generated/javax/swing/plaf/nimbus/ToolBarNorthState.java, * generated/javax/swing/plaf/nimbus/ToolBarPainter.java, * generated/javax/swing/plaf/nimbus/ToolBarSouthState.java, * generated/javax/swing/plaf/nimbus/ToolBarToggleButtonPainter.java, * generated/javax/swing/plaf/nimbus/ToolBarWestState.java, * generated/javax/swing/plaf/nimbus/ToolTipPainter.java, * generated/javax/swing/plaf/nimbus/TreeCellEditorPainter.java, * generated/javax/swing/plaf/nimbus/TreePainter.java, * generated/javax/swing/plaf/nimbus/TreeTreeCellPainter.java: Add generated Nimbus files. * patches/icedtea-stop-nimbus-generation.patch: Turn off building Nimbus tool when --disable-nimbus-generation is given.
author Andrew John Hughes <ahughes@redhat.com>
date Thu, 21 May 2009 13:45:49 +0100
parents 2afddd1c229e
children 282bc825e2cb
files ChangeLog Makefile.am acinclude.m4 configure.ac generated/javax/swing/plaf/nimbus/ArrowButtonPainter.java generated/javax/swing/plaf/nimbus/ButtonPainter.java generated/javax/swing/plaf/nimbus/CheckBoxMenuItemPainter.java generated/javax/swing/plaf/nimbus/CheckBoxPainter.java generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonEditableState.java generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonPainter.java generated/javax/swing/plaf/nimbus/ComboBoxComboBoxTextFieldPainter.java generated/javax/swing/plaf/nimbus/ComboBoxEditableState.java generated/javax/swing/plaf/nimbus/ComboBoxPainter.java generated/javax/swing/plaf/nimbus/DesktopIconPainter.java generated/javax/swing/plaf/nimbus/DesktopPanePainter.java generated/javax/swing/plaf/nimbus/EditorPanePainter.java generated/javax/swing/plaf/nimbus/FileChooserPainter.java generated/javax/swing/plaf/nimbus/FormattedTextFieldPainter.java generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter.java generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonWindowNotFocusedState.java generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter.java generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonWindowNotFocusedState.java generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.java generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowMaximizedState.java generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState.java generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter.java generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonWindowNotFocusedState.java generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePanePainter.java generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneWindowFocusedState.java generated/javax/swing/plaf/nimbus/InternalFramePainter.java generated/javax/swing/plaf/nimbus/InternalFrameWindowFocusedState.java generated/javax/swing/plaf/nimbus/MenuBarMenuPainter.java generated/javax/swing/plaf/nimbus/MenuBarPainter.java generated/javax/swing/plaf/nimbus/MenuItemPainter.java generated/javax/swing/plaf/nimbus/MenuPainter.java generated/javax/swing/plaf/nimbus/NimbusDefaults.java generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaOptionPaneLabelPainter.java generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaPainter.java generated/javax/swing/plaf/nimbus/OptionPanePainter.java generated/javax/swing/plaf/nimbus/PasswordFieldPainter.java generated/javax/swing/plaf/nimbus/PopupMenuPainter.java generated/javax/swing/plaf/nimbus/PopupMenuSeparatorPainter.java generated/javax/swing/plaf/nimbus/ProgressBarFinishedState.java generated/javax/swing/plaf/nimbus/ProgressBarIndeterminateState.java generated/javax/swing/plaf/nimbus/ProgressBarPainter.java generated/javax/swing/plaf/nimbus/RadioButtonMenuItemPainter.java generated/javax/swing/plaf/nimbus/RadioButtonPainter.java generated/javax/swing/plaf/nimbus/ScrollBarPainter.java generated/javax/swing/plaf/nimbus/ScrollBarScrollBarButtonPainter.java generated/javax/swing/plaf/nimbus/ScrollBarScrollBarThumbPainter.java generated/javax/swing/plaf/nimbus/ScrollBarScrollBarTrackPainter.java generated/javax/swing/plaf/nimbus/ScrollPanePainter.java generated/javax/swing/plaf/nimbus/SeparatorPainter.java generated/javax/swing/plaf/nimbus/SliderArrowShapeState.java generated/javax/swing/plaf/nimbus/SliderPainter.java generated/javax/swing/plaf/nimbus/SliderSliderThumbArrowShapeState.java generated/javax/swing/plaf/nimbus/SliderSliderThumbPainter.java generated/javax/swing/plaf/nimbus/SliderSliderTrackArrowShapeState.java generated/javax/swing/plaf/nimbus/SliderSliderTrackPainter.java generated/javax/swing/plaf/nimbus/SpinnerPainter.java generated/javax/swing/plaf/nimbus/SpinnerPanelSpinnerFormattedTextFieldPainter.java generated/javax/swing/plaf/nimbus/SpinnerSpinnerNextButtonPainter.java generated/javax/swing/plaf/nimbus/SpinnerSpinnerPreviousButtonPainter.java generated/javax/swing/plaf/nimbus/SplitPanePainter.java generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerPainter.java generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerVerticalState.java generated/javax/swing/plaf/nimbus/SplitPaneVerticalState.java generated/javax/swing/plaf/nimbus/TabbedPanePainter.java generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabAreaPainter.java generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabPainter.java generated/javax/swing/plaf/nimbus/TableEditorPainter.java generated/javax/swing/plaf/nimbus/TableHeaderPainter.java generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererPainter.java generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererSortedState.java generated/javax/swing/plaf/nimbus/TextAreaNotInScrollPaneState.java generated/javax/swing/plaf/nimbus/TextAreaPainter.java generated/javax/swing/plaf/nimbus/TextFieldPainter.java generated/javax/swing/plaf/nimbus/TextPanePainter.java generated/javax/swing/plaf/nimbus/ToggleButtonPainter.java generated/javax/swing/plaf/nimbus/ToolBarButtonPainter.java generated/javax/swing/plaf/nimbus/ToolBarEastState.java generated/javax/swing/plaf/nimbus/ToolBarNorthState.java generated/javax/swing/plaf/nimbus/ToolBarPainter.java generated/javax/swing/plaf/nimbus/ToolBarSouthState.java generated/javax/swing/plaf/nimbus/ToolBarToggleButtonPainter.java generated/javax/swing/plaf/nimbus/ToolBarWestState.java generated/javax/swing/plaf/nimbus/ToolTipPainter.java generated/javax/swing/plaf/nimbus/TreeCellEditorPainter.java generated/javax/swing/plaf/nimbus/TreePainter.java generated/javax/swing/plaf/nimbus/TreeTreeCellPainter.java patches/icedtea-stop-nimbus-generation.patch
diffstat 91 files changed, 25386 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu May 21 00:16:15 2009 +0100
+++ b/ChangeLog	Thu May 21 13:45:49 2009 +0100
@@ -1,3 +1,105 @@
+2009-05-21  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am:
+	Apply patch and use our generated source directory
+	when ENABLE_NIMBUS_GENERATION is not enabled.  Symlink
+	JIBX when it is.
+	* acinclude.m4:
+	(AC_CHECK_ENABLE_NIMBUS_GENERATION): New macro.
+	* configure.ac:
+	Turn on ENABLE_NIMBUS_GENERATION and only check for
+	JIBX when this is enabled.
+	* generated/javax/swing/plaf/nimbus/ArrowButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/ButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/CheckBoxMenuItemPainter.java,
+	* generated/javax/swing/plaf/nimbus/CheckBoxPainter.java,
+	* generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonEditableState.java,
+	* generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/ComboBoxComboBoxTextFieldPainter.java,
+	* generated/javax/swing/plaf/nimbus/ComboBoxEditableState.java,
+	* generated/javax/swing/plaf/nimbus/ComboBoxPainter.java,
+	* generated/javax/swing/plaf/nimbus/DesktopIconPainter.java,
+	* generated/javax/swing/plaf/nimbus/DesktopPanePainter.java,
+	* generated/javax/swing/plaf/nimbus/EditorPanePainter.java,
+	* generated/javax/swing/plaf/nimbus/FileChooserPainter.java,
+	* generated/javax/swing/plaf/nimbus/FormattedTextFieldPainter.java,
+	* generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonWindowNotFocusedState.java,
+	* generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonWindowNotFocusedState.java,
+	* generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowMaximizedState.java,
+	* generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState.java,
+	* generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonWindowNotFocusedState.java,
+	* generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePanePainter.java,
+	* generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneWindowFocusedState.java,
+	* generated/javax/swing/plaf/nimbus/InternalFramePainter.java,
+	* generated/javax/swing/plaf/nimbus/InternalFrameWindowFocusedState.java,
+	* generated/javax/swing/plaf/nimbus/MenuBarMenuPainter.java,
+	* generated/javax/swing/plaf/nimbus/MenuBarPainter.java,
+	* generated/javax/swing/plaf/nimbus/MenuItemPainter.java,
+	* generated/javax/swing/plaf/nimbus/MenuPainter.java,
+	* generated/javax/swing/plaf/nimbus/NimbusDefaults.java,
+	* generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaOptionPaneLabelPainter.java,
+	* generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaPainter.java,
+	* generated/javax/swing/plaf/nimbus/OptionPanePainter.java,
+	* generated/javax/swing/plaf/nimbus/PasswordFieldPainter.java,
+	* generated/javax/swing/plaf/nimbus/PopupMenuPainter.java,
+	* generated/javax/swing/plaf/nimbus/PopupMenuSeparatorPainter.java,
+	* generated/javax/swing/plaf/nimbus/ProgressBarFinishedState.java,
+	* generated/javax/swing/plaf/nimbus/ProgressBarIndeterminateState.java,
+	* generated/javax/swing/plaf/nimbus/ProgressBarPainter.java,
+	* generated/javax/swing/plaf/nimbus/RadioButtonMenuItemPainter.java,
+	* generated/javax/swing/plaf/nimbus/RadioButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/ScrollBarPainter.java,
+	* generated/javax/swing/plaf/nimbus/ScrollBarScrollBarButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/ScrollBarScrollBarThumbPainter.java,
+	* generated/javax/swing/plaf/nimbus/ScrollBarScrollBarTrackPainter.java,
+	* generated/javax/swing/plaf/nimbus/ScrollPanePainter.java,
+	* generated/javax/swing/plaf/nimbus/SeparatorPainter.java,
+	* generated/javax/swing/plaf/nimbus/SliderArrowShapeState.java,
+	* generated/javax/swing/plaf/nimbus/SliderPainter.java,
+	* generated/javax/swing/plaf/nimbus/SliderSliderThumbArrowShapeState.java,
+	* generated/javax/swing/plaf/nimbus/SliderSliderThumbPainter.java,
+	* generated/javax/swing/plaf/nimbus/SliderSliderTrackArrowShapeState.java,
+	* generated/javax/swing/plaf/nimbus/SliderSliderTrackPainter.java,
+	* generated/javax/swing/plaf/nimbus/SpinnerPainter.java,
+	* generated/javax/swing/plaf/nimbus/SpinnerPanelSpinnerFormattedTextFieldPainter.java,
+	* generated/javax/swing/plaf/nimbus/SpinnerSpinnerNextButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/SpinnerSpinnerPreviousButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/SplitPanePainter.java,
+	* generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerPainter.java,
+	* generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerVerticalState.java,
+	* generated/javax/swing/plaf/nimbus/SplitPaneVerticalState.java,
+	* generated/javax/swing/plaf/nimbus/TabbedPanePainter.java,
+	* generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabAreaPainter.java,
+	* generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabPainter.java,
+	* generated/javax/swing/plaf/nimbus/TableEditorPainter.java,
+	* generated/javax/swing/plaf/nimbus/TableHeaderPainter.java,
+	* generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererPainter.java,
+	* generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererSortedState.java,
+	* generated/javax/swing/plaf/nimbus/TextAreaNotInScrollPaneState.java,
+	* generated/javax/swing/plaf/nimbus/TextAreaPainter.java,
+	* generated/javax/swing/plaf/nimbus/TextFieldPainter.java,
+	* generated/javax/swing/plaf/nimbus/TextPanePainter.java,
+	* generated/javax/swing/plaf/nimbus/ToggleButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/ToolBarButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/ToolBarEastState.java,
+	* generated/javax/swing/plaf/nimbus/ToolBarNorthState.java,
+	* generated/javax/swing/plaf/nimbus/ToolBarPainter.java,
+	* generated/javax/swing/plaf/nimbus/ToolBarSouthState.java,
+	* generated/javax/swing/plaf/nimbus/ToolBarToggleButtonPainter.java,
+	* generated/javax/swing/plaf/nimbus/ToolBarWestState.java,
+	* generated/javax/swing/plaf/nimbus/ToolTipPainter.java,
+	* generated/javax/swing/plaf/nimbus/TreeCellEditorPainter.java,
+	* generated/javax/swing/plaf/nimbus/TreePainter.java,
+	* generated/javax/swing/plaf/nimbus/TreeTreeCellPainter.java:
+	Add generated Nimbus files.
+	* patches/icedtea-stop-nimbus-generation.patch:
+	Turn off building Nimbus tool when --disable-nimbus-generation
+	is given.
+
 2009-05-21  Andrew John Hughes  <ahughes@redhat.com>
 
 	* Makefile.am:
--- a/Makefile.am	Thu May 21 00:16:15 2009 +0100
+++ b/Makefile.am	Thu May 21 13:45:49 2009 +0100
@@ -1495,6 +1495,11 @@
 	"ALT_JAR_CMD=$(ALT_JAR_CMD)"
 endif
 
+if !ENABLE_NIMBUS_GENERATION
+ICEDTEA_ENV += \
+	"GENSRCDIR=$(abs_top_builddir)/generated"
+endif
+
 env:
 	@echo 'unset JAVA_HOME'
 	@echo 'export $(ICEDTEA_ENV)'
@@ -2007,6 +2012,10 @@
 ICEDTEA_PATCHES += patches/icedtea-systemtap.patch
 endif
 
+if !ENABLE_NIMBUS_GENERATION
+ICEDTEA_PATCHES += patches/icedtea-stop-nimbus-generation.patch
+endif
+
 stamps/extract.stamp: stamps/download.stamp
 if OPENJDK_SRC_DIR_FOUND
 	cp -a $(OPENJDK_SRC_DIR) openjdk
@@ -3039,12 +3048,14 @@
 
 stamps/jibx.stamp: extra-lib/about.jar
 if ENABLE_NIMBUS
+if ENABLE_NIMBUS_GENERATION
 	mkdir $(JIBX_DEPS_DIR)
 	ln -s $(BCEL_JAR) $(JIBX_DEPS_DIR)
 	ln -s $(XPP3_JAR) $(JIBX_DEPS_DIR)
 	ln -s $(JIBX_DIR)/jibx-bind.jar $(JIBX_DEPS_DIR)
 	ln -s $(JIBX_DIR)/jibx-run.jar $(JIBX_DEPS_DIR)
 endif
+endif
 	mkdir -p stamps
 	touch $@
 
--- a/acinclude.m4	Thu May 21 00:16:15 2009 +0100
+++ b/acinclude.m4	Thu May 21 13:45:49 2009 +0100
@@ -1498,3 +1498,20 @@
 
 AC_SUBST(MOZILLA_VERSION_COLLAPSED, $xulrunner_cv_collapsed_version)
 ])
+
+AC_DEFUN([AC_CHECK_ENABLE_NIMBUS_GENERATION],
+[
+  AC_MSG_CHECKING(whether to generate the Nimbus source files using JIBX)
+  AC_ARG_ENABLE([nimbus-generation],
+	      [AS_HELP_STRING(--enable-nimbus-generation,generate the Nimbus source with JIBX [[default=yes]])],
+  [
+    ENABLE_NIMBUS_GENERATION="${enableval}"
+  ],
+  [
+    ENABLE_NIMBUS_GENERATION=yes
+  ])
+
+  AC_MSG_RESULT(${ENABLE_NIMBUS_GENERATION})
+  AM_CONDITIONAL(ENABLE_NIMBUS_GENERATION, test x"${ENABLE_NIMBUS_GENERATION}" = "xyes")
+  AC_SUBST(ENABLE_NIMBUS_GENERATION)
+])
--- a/configure.ac	Thu May 21 00:16:15 2009 +0100
+++ b/configure.ac	Thu May 21 13:45:49 2009 +0100
@@ -310,6 +310,7 @@
 AC_CHECK_WITH_CACAO_HOME
 AC_CHECK_WITH_CACAO_SRC_ZIP
 AC_CHECK_ENABLE_NIMBUS
+AC_CHECK_ENABLE_NIMBUS_GENERATION
 ENABLE_OPTIMIZATIONS
 SET_SHARK_BUILD
 ENABLE_ZERO_BUILD
@@ -346,9 +347,12 @@
 
 if test "x${ENABLE_NIMBUS}" = "xyes"
 then
-FIND_BCEL_JAR
-FIND_XPP3_JAR
-FIND_JIBX_DIR
+  if test "x${ENABLE_NIMBUS_GENERATION}" = "xyes"
+  then
+    FIND_BCEL_JAR
+    FIND_XPP3_JAR
+    FIND_JIBX_DIR
+  fi
 fi
 
 dnl pkgconfig cannot be used to find these headers and libraries.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ArrowButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ArrowButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ArrowButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int FOREGROUND_DISABLED = 2;
+    static final int FOREGROUND_ENABLED = 3;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ArrowButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBase", 0.027408898f, -0.57391655f, 0.1490196f, 0);
+    private Color color2 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.37254906f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ArrowButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case FOREGROUND_DISABLED: paintForegroundDisabled(g); break;
+            case FOREGROUND_ENABLED: paintForegroundEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintForegroundDisabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundEnabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color2);
+        g.fill(path);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(1.8f), decodeY(1.2f));
+        path.lineTo(decodeX(1.2f), decodeY(1.5f));
+        path.lineTo(decodeX(1.8f), decodeY(1.8f));
+        path.lineTo(decodeX(1.8f), decodeY(1.2f));
+        path.closePath();
+        return path;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,652 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DEFAULT = 1;
+    static final int BACKGROUND_DEFAULT_FOCUSED = 2;
+    static final int BACKGROUND_MOUSEOVER_DEFAULT = 3;
+    static final int BACKGROUND_MOUSEOVER_DEFAULT_FOCUSED = 4;
+    static final int BACKGROUND_PRESSED_DEFAULT = 5;
+    static final int BACKGROUND_PRESSED_DEFAULT_FOCUSED = 6;
+    static final int BACKGROUND_DISABLED = 7;
+    static final int BACKGROUND_ENABLED = 8;
+    static final int BACKGROUND_FOCUSED = 9;
+    static final int BACKGROUND_MOUSEOVER = 10;
+    static final int BACKGROUND_MOUSEOVER_FOCUSED = 11;
+    static final int BACKGROUND_PRESSED = 12;
+    static final int BACKGROUND_PRESSED_FOCUSED = 13;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.06885965f, -0.36862746f, -190);
+    private Color color2 = decodeColor("nimbusBase", 5.1498413E-4f, -0.34585923f, -0.007843137f, 0);
+    private Color color3 = decodeColor("nimbusBase", 5.1498413E-4f, -0.095173776f, -0.25882354f, 0);
+    private Color color4 = decodeColor("nimbusBase", 0.004681647f, -0.6197143f, 0.43137252f, 0);
+    private Color color5 = decodeColor("nimbusBase", 0.004681647f, -0.5766426f, 0.38039213f, 0);
+    private Color color6 = decodeColor("nimbusBase", 5.1498413E-4f, -0.43866998f, 0.24705881f, 0);
+    private Color color7 = decodeColor("nimbusBase", 5.1498413E-4f, -0.46404046f, 0.36470586f, 0);
+    private Color color8 = decodeColor("nimbusBase", 5.1498413E-4f, -0.47761154f, 0.44313723f, 0);
+    private Color color9 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color10 = decodeColor("nimbusBase", 0.0013483167f, -0.1769987f, -0.12156865f, 0);
+    private Color color11 = decodeColor("nimbusBase", 0.059279382f, 0.3642857f, -0.43529415f, 0);
+    private Color color12 = decodeColor("nimbusBase", 0.004681647f, -0.6198413f, 0.43921566f, 0);
+    private Color color13 = decodeColor("nimbusBase", -0.0017285943f, -0.5822163f, 0.40392154f, 0);
+    private Color color14 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4555341f, 0.3215686f, 0);
+    private Color color15 = decodeColor("nimbusBase", 5.1498413E-4f, -0.47698414f, 0.43921566f, 0);
+    private Color color16 = decodeColor("nimbusBase", -0.06415892f, -0.5455182f, 0.45098037f, 0);
+    private Color color17 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -95);
+    private Color color18 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.54901963f, 0);
+    private Color color19 = decodeColor("nimbusBase", -3.528595E-5f, 0.018606722f, -0.23137257f, 0);
+    private Color color20 = decodeColor("nimbusBase", -4.2033195E-4f, -0.38050595f, 0.20392156f, 0);
+    private Color color21 = decodeColor("nimbusBase", 0.001903832f, -0.29863563f, 0.1490196f, 0);
+    private Color color22 = decodeColor("nimbusBase", 0.0f, 0.0f, 0.0f, 0);
+    private Color color23 = decodeColor("nimbusBase", 0.0018727183f, -0.14126986f, 0.15686274f, 0);
+    private Color color24 = decodeColor("nimbusBase", 8.9377165E-4f, -0.20852983f, 0.2588235f, 0);
+    private Color color25 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.06885965f, -0.36862746f, -232);
+    private Color color26 = decodeColor("nimbusBlueGrey", 0.0f, -0.06766917f, 0.07843137f, 0);
+    private Color color27 = decodeColor("nimbusBlueGrey", 0.0f, -0.06484103f, 0.027450979f, 0);
+    private Color color28 = decodeColor("nimbusBlueGrey", 0.0f, -0.08477524f, 0.16862744f, 0);
+    private Color color29 = decodeColor("nimbusBlueGrey", -0.015872955f, -0.080091536f, 0.15686274f, 0);
+    private Color color30 = decodeColor("nimbusBlueGrey", 0.0f, -0.07016757f, 0.12941176f, 0);
+    private Color color31 = decodeColor("nimbusBlueGrey", 0.0f, -0.07052632f, 0.1372549f, 0);
+    private Color color32 = decodeColor("nimbusBlueGrey", 0.0f, -0.070878744f, 0.14509803f, 0);
+    private Color color33 = decodeColor("nimbusBlueGrey", -0.055555522f, -0.05356429f, -0.12549019f, 0);
+    private Color color34 = decodeColor("nimbusBlueGrey", 0.0f, -0.0147816315f, -0.3764706f, 0);
+    private Color color35 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10655806f, 0.24313724f, 0);
+    private Color color36 = decodeColor("nimbusBlueGrey", 0.0f, -0.09823123f, 0.2117647f, 0);
+    private Color color37 = decodeColor("nimbusBlueGrey", 0.0f, -0.0749532f, 0.24705881f, 0);
+    private Color color38 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color39 = decodeColor("nimbusBlueGrey", 0.0f, -0.020974077f, -0.21960783f, 0);
+    private Color color40 = decodeColor("nimbusBlueGrey", 0.0f, 0.11169591f, -0.53333336f, 0);
+    private Color color41 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10658931f, 0.25098038f, 0);
+    private Color color42 = decodeColor("nimbusBlueGrey", 0.0f, -0.098526314f, 0.2352941f, 0);
+    private Color color43 = decodeColor("nimbusBlueGrey", 0.0f, -0.07333623f, 0.20392156f, 0);
+    private Color color44 = new Color(245, 250, 255, 160);
+    private Color color45 = decodeColor("nimbusBlueGrey", 0.055555582f, 0.8894737f, -0.7176471f, 0);
+    private Color color46 = decodeColor("nimbusBlueGrey", 0.0f, 5.847961E-4f, -0.32156864f, 0);
+    private Color color47 = decodeColor("nimbusBlueGrey", -0.00505054f, -0.05960039f, 0.10196078f, 0);
+    private Color color48 = decodeColor("nimbusBlueGrey", -0.008547008f, -0.04772438f, 0.06666666f, 0);
+    private Color color49 = decodeColor("nimbusBlueGrey", -0.0027777553f, -0.0018306673f, -0.02352941f, 0);
+    private Color color50 = decodeColor("nimbusBlueGrey", -0.0027777553f, -0.0212406f, 0.13333333f, 0);
+    private Color color51 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.030845039f, 0.23921567f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DEFAULT: paintBackgroundDefault(g); break;
+            case BACKGROUND_DEFAULT_FOCUSED: paintBackgroundDefaultAndFocused(g); break;
+            case BACKGROUND_MOUSEOVER_DEFAULT: paintBackgroundMouseOverAndDefault(g); break;
+            case BACKGROUND_MOUSEOVER_DEFAULT_FOCUSED: paintBackgroundMouseOverAndDefaultAndFocused(g); break;
+            case BACKGROUND_PRESSED_DEFAULT: paintBackgroundPressedAndDefault(g); break;
+            case BACKGROUND_PRESSED_DEFAULT_FOCUSED: paintBackgroundPressedAndDefaultAndFocused(g); break;
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_FOCUSED: paintBackgroundFocused(g); break;
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_MOUSEOVER_FOCUSED: paintBackgroundMouseOverAndFocused(g); break;
+            case BACKGROUND_PRESSED: paintBackgroundPressed(g); break;
+            case BACKGROUND_PRESSED_FOCUSED: paintBackgroundPressedAndFocused(g); break;
+
+        }
+    }
+        
+    protected Object[] getExtendedCacheKeys(JComponent c) {
+        Object[] extendedCacheKeys = null;
+        switch(state) {
+            case BACKGROUND_DEFAULT:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color4, -0.6197143f, 0.43137252f, 0),
+                     getComponentColor(c, "background", color5, -0.5766426f, 0.38039213f, 0),
+                     getComponentColor(c, "background", color6, -0.43866998f, 0.24705881f, 0),
+                     getComponentColor(c, "background", color7, -0.46404046f, 0.36470586f, 0),
+                     getComponentColor(c, "background", color8, -0.47761154f, 0.44313723f, 0)};
+                break;
+            case BACKGROUND_DEFAULT_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color4, -0.6197143f, 0.43137252f, 0),
+                     getComponentColor(c, "background", color5, -0.5766426f, 0.38039213f, 0),
+                     getComponentColor(c, "background", color6, -0.43866998f, 0.24705881f, 0),
+                     getComponentColor(c, "background", color7, -0.46404046f, 0.36470586f, 0),
+                     getComponentColor(c, "background", color8, -0.47761154f, 0.44313723f, 0)};
+                break;
+            case BACKGROUND_MOUSEOVER_DEFAULT:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color12, -0.6198413f, 0.43921566f, 0),
+                     getComponentColor(c, "background", color13, -0.5822163f, 0.40392154f, 0),
+                     getComponentColor(c, "background", color14, -0.4555341f, 0.3215686f, 0),
+                     getComponentColor(c, "background", color15, -0.47698414f, 0.43921566f, 0),
+                     getComponentColor(c, "background", color16, -0.5455182f, 0.45098037f, 0)};
+                break;
+            case BACKGROUND_MOUSEOVER_DEFAULT_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color12, -0.6198413f, 0.43921566f, 0),
+                     getComponentColor(c, "background", color13, -0.5822163f, 0.40392154f, 0),
+                     getComponentColor(c, "background", color14, -0.4555341f, 0.3215686f, 0),
+                     getComponentColor(c, "background", color15, -0.47698414f, 0.43921566f, 0),
+                     getComponentColor(c, "background", color16, -0.5455182f, 0.45098037f, 0)};
+                break;
+            case BACKGROUND_PRESSED_DEFAULT:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color20, -0.38050595f, 0.20392156f, 0),
+                     getComponentColor(c, "background", color21, -0.29863563f, 0.1490196f, 0),
+                     getComponentColor(c, "background", color22, 0.0f, 0.0f, 0),
+                     getComponentColor(c, "background", color23, -0.14126986f, 0.15686274f, 0),
+                     getComponentColor(c, "background", color24, -0.20852983f, 0.2588235f, 0)};
+                break;
+            case BACKGROUND_PRESSED_DEFAULT_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color20, -0.38050595f, 0.20392156f, 0),
+                     getComponentColor(c, "background", color21, -0.29863563f, 0.1490196f, 0),
+                     getComponentColor(c, "background", color22, 0.0f, 0.0f, 0),
+                     getComponentColor(c, "background", color23, -0.14126986f, 0.15686274f, 0),
+                     getComponentColor(c, "background", color24, -0.20852983f, 0.2588235f, 0)};
+                break;
+            case BACKGROUND_ENABLED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color35, -0.10655806f, 0.24313724f, 0),
+                     getComponentColor(c, "background", color36, -0.09823123f, 0.2117647f, 0),
+                     getComponentColor(c, "background", color30, -0.07016757f, 0.12941176f, 0),
+                     getComponentColor(c, "background", color37, -0.0749532f, 0.24705881f, 0),
+                     getComponentColor(c, "background", color38, -0.110526316f, 0.25490195f, 0)};
+                break;
+            case BACKGROUND_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color35, -0.10655806f, 0.24313724f, 0),
+                     getComponentColor(c, "background", color36, -0.09823123f, 0.2117647f, 0),
+                     getComponentColor(c, "background", color30, -0.07016757f, 0.12941176f, 0),
+                     getComponentColor(c, "background", color37, -0.0749532f, 0.24705881f, 0),
+                     getComponentColor(c, "background", color38, -0.110526316f, 0.25490195f, 0)};
+                break;
+            case BACKGROUND_MOUSEOVER:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color41, -0.10658931f, 0.25098038f, 0),
+                     getComponentColor(c, "background", color42, -0.098526314f, 0.2352941f, 0),
+                     getComponentColor(c, "background", color43, -0.07333623f, 0.20392156f, 0),
+                     getComponentColor(c, "background", color38, -0.110526316f, 0.25490195f, 0)};
+                break;
+            case BACKGROUND_MOUSEOVER_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color41, -0.10658931f, 0.25098038f, 0),
+                     getComponentColor(c, "background", color42, -0.098526314f, 0.2352941f, 0),
+                     getComponentColor(c, "background", color43, -0.07333623f, 0.20392156f, 0),
+                     getComponentColor(c, "background", color38, -0.110526316f, 0.25490195f, 0)};
+                break;
+            case BACKGROUND_PRESSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color47, -0.05960039f, 0.10196078f, 0),
+                     getComponentColor(c, "background", color48, -0.04772438f, 0.06666666f, 0),
+                     getComponentColor(c, "background", color49, -0.0018306673f, -0.02352941f, 0),
+                     getComponentColor(c, "background", color50, -0.0212406f, 0.13333333f, 0),
+                     getComponentColor(c, "background", color51, -0.030845039f, 0.23921567f, 0)};
+                break;
+            case BACKGROUND_PRESSED_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color47, -0.05960039f, 0.10196078f, 0),
+                     getComponentColor(c, "background", color48, -0.04772438f, 0.06666666f, 0),
+                     getComponentColor(c, "background", color49, -0.0018306673f, -0.02352941f, 0),
+                     getComponentColor(c, "background", color50, -0.0212406f, 0.13333333f, 0),
+                     getComponentColor(c, "background", color51, -0.030845039f, 0.23921567f, 0)};
+                break;
+        }
+        return extendedCacheKeys;
+    }
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDefault(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundDefaultAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color9);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundMouseOverAndDefault(Graphics2D g) {
+        roundRect = decodeRoundRect5();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundMouseOverAndDefaultAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color9);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressedAndDefault(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color17);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressedAndDefaultAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color9);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color25);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color9);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient9(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundMouseOverAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color9);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient9(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressed(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color44);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient11(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color9);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient11(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(0.2857143f), //x
+                               decodeY(0.42857143f), //y
+                               decodeX(2.7142859f) - decodeX(0.2857143f), //width
+                               decodeY(2.857143f) - decodeY(0.42857143f), //height
+                               12.0f, 12.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect2() {
+        roundRect.setRoundRect(decodeX(0.2857143f), //x
+                               decodeY(0.2857143f), //y
+                               decodeX(2.7142859f) - decodeX(0.2857143f), //width
+                               decodeY(2.7142859f) - decodeY(0.2857143f), //height
+                               9.0f, 9.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect3() {
+        roundRect.setRoundRect(decodeX(0.42857143f), //x
+                               decodeY(0.42857143f), //y
+                               decodeX(2.5714285f) - decodeX(0.42857143f), //width
+                               decodeY(2.5714285f) - decodeY(0.42857143f), //height
+                               7.0f, 7.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect4() {
+        roundRect.setRoundRect(decodeX(0.08571429f), //x
+                               decodeY(0.08571429f), //y
+                               decodeX(2.914286f) - decodeX(0.08571429f), //width
+                               decodeY(2.914286f) - decodeY(0.08571429f), //height
+                               11.0f, 11.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect5() {
+        roundRect.setRoundRect(decodeX(0.2857143f), //x
+                               decodeY(0.42857143f), //y
+                               decodeX(2.7142859f) - decodeX(0.2857143f), //width
+                               decodeY(2.857143f) - decodeY(0.42857143f), //height
+                               9.0f, 9.0f); //rounding
+        return roundRect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.05f,0.5f,0.95f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.024f,0.06f,0.276f,0.6f,0.65f,0.7f,0.856f,0.96f,0.98399997f,1.0f },
+                new Color[] { (Color)componentColors[0],
+                            decodeColor((Color)componentColors[0],(Color)componentColors[1],0.5f),
+                            (Color)componentColors[1],
+                            decodeColor((Color)componentColors[1],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2],
+                            decodeColor((Color)componentColors[2],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2],
+                            decodeColor((Color)componentColors[2],(Color)componentColors[3],0.5f),
+                            (Color)componentColors[3],
+                            decodeColor((Color)componentColors[3],(Color)componentColors[4],0.5f),
+                            (Color)componentColors[4]});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.05f,0.5f,0.95f },
+                new Color[] { color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.05f,0.5f,0.95f },
+                new Color[] { color18,
+                            decodeColor(color18,color19,0.5f),
+                            color19});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.09f,0.52f,0.95f },
+                new Color[] { color26,
+                            decodeColor(color26,color27,0.5f),
+                            color27});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.03f,0.06f,0.33f,0.6f,0.65f,0.7f,0.825f,0.95f,0.975f,1.0f },
+                new Color[] { color28,
+                            decodeColor(color28,color29,0.5f),
+                            color29,
+                            decodeColor(color29,color30,0.5f),
+                            color30,
+                            decodeColor(color30,color30,0.5f),
+                            color30,
+                            decodeColor(color30,color31,0.5f),
+                            color31,
+                            decodeColor(color31,color32,0.5f),
+                            color32});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.09f,0.52f,0.95f },
+                new Color[] { color33,
+                            decodeColor(color33,color34,0.5f),
+                            color34});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.03f,0.06f,0.33f,0.6f,0.65f,0.7f,0.825f,0.95f,0.975f,1.0f },
+                new Color[] { (Color)componentColors[0],
+                            decodeColor((Color)componentColors[0],(Color)componentColors[1],0.5f),
+                            (Color)componentColors[1],
+                            decodeColor((Color)componentColors[1],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2],
+                            decodeColor((Color)componentColors[2],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2],
+                            decodeColor((Color)componentColors[2],(Color)componentColors[3],0.5f),
+                            (Color)componentColors[3],
+                            decodeColor((Color)componentColors[3],(Color)componentColors[4],0.5f),
+                            (Color)componentColors[4]});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.09f,0.52f,0.95f },
+                new Color[] { color39,
+                            decodeColor(color39,color40,0.5f),
+                            color40});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.024f,0.06f,0.276f,0.6f,0.65f,0.7f,0.856f,0.96f,0.98f,1.0f },
+                new Color[] { (Color)componentColors[0],
+                            decodeColor((Color)componentColors[0],(Color)componentColors[1],0.5f),
+                            (Color)componentColors[1],
+                            decodeColor((Color)componentColors[1],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2],
+                            decodeColor((Color)componentColors[2],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2],
+                            decodeColor((Color)componentColors[2],(Color)componentColors[3],0.5f),
+                            (Color)componentColors[3],
+                            decodeColor((Color)componentColors[3],(Color)componentColors[3],0.5f),
+                            (Color)componentColors[3]});
+    }
+
+    private Paint decodeGradient11(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.05f,0.5f,0.95f },
+                new Color[] { color45,
+                            decodeColor(color45,color46,0.5f),
+                            color46});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/CheckBoxMenuItemPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,162 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class CheckBoxMenuItemPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of CheckBoxMenuItemPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_MOUSEOVER = 3;
+    static final int BACKGROUND_SELECTED_MOUSEOVER = 4;
+    static final int CHECKICON_DISABLED_SELECTED = 5;
+    static final int CHECKICON_ENABLED_SELECTED = 6;
+    static final int CHECKICON_SELECTED_MOUSEOVER = 7;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of CheckBoxMenuItemPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusSelection", 0.0f, 0.0f, 0.0f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", 0.0f, -0.08983666f, -0.17647058f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.096827686f, -0.45882353f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public CheckBoxMenuItemPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_SELECTED_MOUSEOVER: paintBackgroundSelectedAndMouseOver(g); break;
+            case CHECKICON_DISABLED_SELECTED: paintcheckIconDisabledAndSelected(g); break;
+            case CHECKICON_ENABLED_SELECTED: paintcheckIconEnabledAndSelected(g); break;
+            case CHECKICON_SELECTED_MOUSEOVER: paintcheckIconSelectedAndMouseOver(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundSelectedAndMouseOver(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintcheckIconDisabledAndSelected(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color2);
+        g.fill(path);
+
+    }
+
+    private void paintcheckIconEnabledAndSelected(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color3);
+        g.fill(path);
+
+    }
+
+    private void paintcheckIconSelectedAndMouseOver(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color4);
+        g.fill(path);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(1.5f));
+        path.lineTo(decodeX(0.4292683f), decodeY(1.5f));
+        path.lineTo(decodeX(0.7121951f), decodeY(2.4780488f));
+        path.lineTo(decodeX(2.5926828f), decodeY(0.0f));
+        path.lineTo(decodeX(3.0f), decodeY(0.0f));
+        path.lineTo(decodeX(3.0f), decodeY(0.2f));
+        path.lineTo(decodeX(2.8317075f), decodeY(0.39512196f));
+        path.lineTo(decodeX(0.8f), decodeY(3.0f));
+        path.lineTo(decodeX(0.5731707f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(1.5f));
+        path.closePath();
+        return path;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/CheckBoxPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,635 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class CheckBoxPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of CheckBoxPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int ICON_DISABLED = 3;
+    static final int ICON_ENABLED = 4;
+    static final int ICON_FOCUSED = 5;
+    static final int ICON_MOUSEOVER = 6;
+    static final int ICON_MOUSEOVER_FOCUSED = 7;
+    static final int ICON_PRESSED = 8;
+    static final int ICON_PRESSED_FOCUSED = 9;
+    static final int ICON_SELECTED = 10;
+    static final int ICON_SELECTED_FOCUSED = 11;
+    static final int ICON_PRESSED_SELECTED = 12;
+    static final int ICON_PRESSED_SELECTED_FOCUSED = 13;
+    static final int ICON_MOUSEOVER_SELECTED = 14;
+    static final int ICON_MOUSEOVER_SELECTED_FOCUSED = 15;
+    static final int ICON_DISABLED_SELECTED = 16;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of CheckBoxPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", 0.0f, -0.06766917f, 0.07843137f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", 0.0f, -0.06484103f, 0.027450979f, 0);
+    private Color color3 = decodeColor("nimbusBase", 0.032459438f, -0.60996324f, 0.36470586f, 0);
+    private Color color4 = decodeColor("nimbusBase", 0.02551502f, -0.5996783f, 0.3215686f, 0);
+    private Color color5 = decodeColor("nimbusBase", 0.032459438f, -0.59624064f, 0.34509802f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.0f, 0.0f, 0.0f, -89);
+    private Color color7 = decodeColor("nimbusBlueGrey", 0.0f, -0.05356429f, -0.12549019f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.0f, -0.015789472f, -0.37254903f, 0);
+    private Color color9 = decodeColor("nimbusBase", 0.08801502f, -0.63174605f, 0.43921566f, 0);
+    private Color color10 = decodeColor("nimbusBase", 0.032459438f, -0.5953556f, 0.32549018f, 0);
+    private Color color11 = decodeColor("nimbusBase", 0.032459438f, -0.59942394f, 0.4235294f, 0);
+    private Color color12 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color13 = decodeColor("nimbusBlueGrey", 0.0f, -0.020974077f, -0.21960783f, 0);
+    private Color color14 = decodeColor("nimbusBlueGrey", 0.01010108f, 0.08947369f, -0.5294118f, 0);
+    private Color color15 = decodeColor("nimbusBase", 0.08801502f, -0.6317773f, 0.4470588f, 0);
+    private Color color16 = decodeColor("nimbusBase", 0.032459438f, -0.5985242f, 0.39999998f, 0);
+    private Color color17 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, 0);
+    private Color color18 = decodeColor("nimbusBlueGrey", 0.055555582f, 0.8894737f, -0.7176471f, 0);
+    private Color color19 = decodeColor("nimbusBlueGrey", 0.0f, 0.0016232133f, -0.3254902f, 0);
+    private Color color20 = decodeColor("nimbusBase", 0.027408898f, -0.5847884f, 0.2980392f, 0);
+    private Color color21 = decodeColor("nimbusBase", 0.029681683f, -0.52701867f, 0.17254901f, 0);
+    private Color color22 = decodeColor("nimbusBase", 0.029681683f, -0.5376751f, 0.25098038f, 0);
+    private Color color23 = decodeColor("nimbusBase", 5.1498413E-4f, -0.34585923f, -0.007843137f, 0);
+    private Color color24 = decodeColor("nimbusBase", 5.1498413E-4f, -0.10238093f, -0.25490198f, 0);
+    private Color color25 = decodeColor("nimbusBase", 0.004681647f, -0.6197143f, 0.43137252f, 0);
+    private Color color26 = decodeColor("nimbusBase", 5.1498413E-4f, -0.44153953f, 0.2588235f, 0);
+    private Color color27 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4602757f, 0.34509802f, 0);
+    private Color color28 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.54901963f, 0);
+    private Color color29 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color30 = decodeColor("nimbusBase", -3.528595E-5f, 0.026785731f, -0.23529413f, 0);
+    private Color color31 = decodeColor("nimbusBase", -4.2033195E-4f, -0.38050595f, 0.20392156f, 0);
+    private Color color32 = decodeColor("nimbusBase", -0.0021489263f, -0.2891234f, 0.14117646f, 0);
+    private Color color33 = decodeColor("nimbusBase", -0.006362498f, -0.016311288f, -0.02352941f, 0);
+    private Color color34 = decodeColor("nimbusBase", 0.0f, -0.17930403f, 0.21568626f, 0);
+    private Color color35 = decodeColor("nimbusBase", 0.0013483167f, -0.1769987f, -0.12156865f, 0);
+    private Color color36 = decodeColor("nimbusBase", 0.05468172f, 0.3642857f, -0.43137258f, 0);
+    private Color color37 = decodeColor("nimbusBase", 0.004681647f, -0.6198413f, 0.43921566f, 0);
+    private Color color38 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4555341f, 0.3215686f, 0);
+    private Color color39 = decodeColor("nimbusBase", 5.1498413E-4f, -0.47377098f, 0.41960782f, 0);
+    private Color color40 = decodeColor("nimbusBlueGrey", -0.01111114f, -0.03771078f, 0.062745094f, 0);
+    private Color color41 = decodeColor("nimbusBlueGrey", -0.02222222f, -0.032806106f, 0.011764705f, 0);
+    private Color color42 = decodeColor("nimbusBase", 0.021348298f, -0.59223604f, 0.35294116f, 0);
+    private Color color43 = decodeColor("nimbusBase", 0.021348298f, -0.56722116f, 0.3098039f, 0);
+    private Color color44 = decodeColor("nimbusBase", 0.021348298f, -0.56875f, 0.32941175f, 0);
+    private Color color45 = decodeColor("nimbusBase", 0.027408898f, -0.5735674f, 0.14509803f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public CheckBoxPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case ICON_DISABLED: painticonDisabled(g); break;
+            case ICON_ENABLED: painticonEnabled(g); break;
+            case ICON_FOCUSED: painticonFocused(g); break;
+            case ICON_MOUSEOVER: painticonMouseOver(g); break;
+            case ICON_MOUSEOVER_FOCUSED: painticonMouseOverAndFocused(g); break;
+            case ICON_PRESSED: painticonPressed(g); break;
+            case ICON_PRESSED_FOCUSED: painticonPressedAndFocused(g); break;
+            case ICON_SELECTED: painticonSelected(g); break;
+            case ICON_SELECTED_FOCUSED: painticonSelectedAndFocused(g); break;
+            case ICON_PRESSED_SELECTED: painticonPressedAndSelected(g); break;
+            case ICON_PRESSED_SELECTED_FOCUSED: painticonPressedAndSelectedAndFocused(g); break;
+            case ICON_MOUSEOVER_SELECTED: painticonMouseOverAndSelected(g); break;
+            case ICON_MOUSEOVER_SELECTED_FOCUSED: painticonMouseOverAndSelectedAndFocused(g); break;
+            case ICON_DISABLED_SELECTED: painticonDisabledAndSelected(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void painticonDisabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void painticonEnabled(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color6);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void painticonFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color12);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void painticonMouseOver(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color6);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void painticonMouseOverAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color12);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void painticonPressed(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color6);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void painticonPressedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color12);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void painticonSelected(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color6);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient9(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(color28);
+        g.fill(path);
+
+    }
+
+    private void painticonSelectedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color12);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient9(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(color28);
+        g.fill(path);
+
+    }
+
+    private void painticonPressedAndSelected(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color29);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient11(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient12(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(color28);
+        g.fill(path);
+
+    }
+
+    private void painticonPressedAndSelectedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color12);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient11(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient12(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(color28);
+        g.fill(path);
+
+    }
+
+    private void painticonMouseOverAndSelected(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color6);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient13(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient14(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(color28);
+        g.fill(path);
+
+    }
+
+    private void painticonMouseOverAndSelectedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color12);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient13(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient14(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(color28);
+        g.fill(path);
+
+    }
+
+    private void painticonDisabledAndSelected(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient15(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient16(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(color45);
+        g.fill(path);
+
+    }
+
+
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(0.4f), //x
+                               decodeY(0.4f), //y
+                               decodeX(2.6f) - decodeX(0.4f), //width
+                               decodeY(2.6f) - decodeY(0.4f), //height
+                               3.7058823f, 3.7058823f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect2() {
+        roundRect.setRoundRect(decodeX(0.6f), //x
+                               decodeY(0.6f), //y
+                               decodeX(2.4f) - decodeX(0.6f), //width
+                               decodeY(2.4f) - decodeY(0.6f), //height
+                               3.764706f, 3.764706f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect3() {
+        roundRect.setRoundRect(decodeX(0.4f), //x
+                               decodeY(1.75f), //y
+                               decodeX(2.6f) - decodeX(0.4f), //width
+                               decodeY(2.8f) - decodeY(1.75f), //height
+                               5.1764708f, 5.1764708f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect4() {
+        roundRect.setRoundRect(decodeX(0.120000005f), //x
+                               decodeY(0.120000005f), //y
+                               decodeX(2.8799999f) - decodeX(0.120000005f), //width
+                               decodeY(2.8799999f) - decodeY(0.120000005f), //height
+                               8.0f, 8.0f); //rounding
+        return roundRect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(1.0036764f), decodeY(1.382353f));
+        path.lineTo(decodeX(1.2536764f), decodeY(1.382353f));
+        path.lineTo(decodeX(1.430147f), decodeY(1.757353f));
+        path.lineTo(decodeX(1.8235294f), decodeY(0.62352943f));
+        path.lineTo(decodeX(2.2f), decodeY(0.61764705f));
+        path.lineTo(decodeX(1.492647f), decodeY(2.0058823f));
+        path.lineTo(decodeX(1.382353f), decodeY(2.0058823f));
+        path.lineTo(decodeX(1.0036764f), decodeY(1.382353f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25210086f * w) + x, (0.9957983f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (0.997549f * h) + y,
+                new float[] { 0.0f,0.32228917f,0.64457834f,0.82228917f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25210086f * w) + x, (0.9957983f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (0.997549f * h) + y,
+                new float[] { 0.0f,0.32228917f,0.64457834f,0.82228917f,1.0f },
+                new Color[] { color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25210086f * w) + x, (0.9957983f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (0.997549f * h) + y,
+                new float[] { 0.0f,0.32228917f,0.64457834f,0.82228917f,1.0f },
+                new Color[] { color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25210086f * w) + x, (0.9957983f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color18,
+                            decodeColor(color18,color19,0.5f),
+                            color19});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (0.997549f * h) + y,
+                new float[] { 0.0f,0.32228917f,0.64457834f,0.82228917f,1.0f },
+                new Color[] { color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25210086f * w) + x, (0.9957983f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color23,
+                            decodeColor(color23,color24,0.5f),
+                            color24});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (0.997549f * h) + y,
+                new float[] { 0.0f,0.32228917f,0.64457834f,0.82228917f,1.0f },
+                new Color[] { color25,
+                            decodeColor(color25,color26,0.5f),
+                            color26,
+                            decodeColor(color26,color27,0.5f),
+                            color27});
+    }
+
+    private Paint decodeGradient11(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25210086f * w) + x, (0.9957983f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color28,
+                            decodeColor(color28,color30,0.5f),
+                            color30});
+    }
+
+    private Paint decodeGradient12(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (0.997549f * h) + y,
+                new float[] { 0.0f,0.05775076f,0.11550152f,0.38003993f,0.64457834f,0.82228917f,1.0f },
+                new Color[] { color31,
+                            decodeColor(color31,color32,0.5f),
+                            color32,
+                            decodeColor(color32,color33,0.5f),
+                            color33,
+                            decodeColor(color33,color34,0.5f),
+                            color34});
+    }
+
+    private Paint decodeGradient13(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25210086f * w) + x, (0.9957983f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color35,
+                            decodeColor(color35,color36,0.5f),
+                            color36});
+    }
+
+    private Paint decodeGradient14(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (0.997549f * h) + y,
+                new float[] { 0.0f,0.32228917f,0.64457834f,0.82228917f,1.0f },
+                new Color[] { color37,
+                            decodeColor(color37,color38,0.5f),
+                            color38,
+                            decodeColor(color38,color39,0.5f),
+                            color39});
+    }
+
+    private Paint decodeGradient15(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25210086f * w) + x, (0.9957983f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color40,
+                            decodeColor(color40,color41,0.5f),
+                            color41});
+    }
+
+    private Paint decodeGradient16(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (0.997549f * h) + y,
+                new float[] { 0.0f,0.32228917f,0.64457834f,0.82228917f,1.0f },
+                new Color[] { color42,
+                            decodeColor(color42,color43,0.5f),
+                            color43,
+                            decodeColor(color43,color44,0.5f),
+                            color44});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonEditableState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class ComboBoxComboBoxArrowButtonEditableState extends State {
+    ComboBoxComboBoxArrowButtonEditableState() {
+        super("Editable");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                                Component parent = c.getParent();
+                                return parent instanceof JComboBox && ((JComboBox)parent).isEditable();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,476 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ComboBoxComboBoxArrowButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ComboBoxComboBoxArrowButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_ENABLED_MOUSEOVER = 3;
+    static final int BACKGROUND_ENABLED_PRESSED = 4;
+    static final int BACKGROUND_DISABLED_EDITABLE = 5;
+    static final int BACKGROUND_ENABLED_EDITABLE = 6;
+    static final int BACKGROUND_MOUSEOVER_EDITABLE = 7;
+    static final int BACKGROUND_PRESSED_EDITABLE = 8;
+    static final int BACKGROUND_SELECTED_EDITABLE = 9;
+    static final int FOREGROUND_ENABLED = 10;
+    static final int FOREGROUND_MOUSEOVER = 11;
+    static final int FOREGROUND_DISABLED = 12;
+    static final int FOREGROUND_PRESSED = 13;
+    static final int FOREGROUND_SELECTED = 14;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ComboBoxComboBoxArrowButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.6111111f, -0.110526316f, -0.74509805f, -247);
+    private Color color2 = decodeColor("nimbusBase", 0.021348298f, -0.56289876f, 0.2588235f, 0);
+    private Color color3 = decodeColor("nimbusBase", 0.010237217f, -0.55799407f, 0.20784312f, 0);
+    private Color color4 = new Color(255, 200, 0, 255);
+    private Color color5 = decodeColor("nimbusBase", 0.021348298f, -0.59223604f, 0.35294116f, 0);
+    private Color color6 = decodeColor("nimbusBase", 0.02391243f, -0.5774183f, 0.32549018f, 0);
+    private Color color7 = decodeColor("nimbusBase", 0.021348298f, -0.56722116f, 0.3098039f, 0);
+    private Color color8 = decodeColor("nimbusBase", 0.021348298f, -0.567841f, 0.31764704f, 0);
+    private Color color9 = decodeColor("nimbusBlueGrey", -0.6111111f, -0.110526316f, -0.74509805f, -191);
+    private Color color10 = decodeColor("nimbusBase", 5.1498413E-4f, -0.34585923f, -0.007843137f, 0);
+    private Color color11 = decodeColor("nimbusBase", 5.1498413E-4f, -0.095173776f, -0.25882354f, 0);
+    private Color color12 = decodeColor("nimbusBase", 0.004681647f, -0.6197143f, 0.43137252f, 0);
+    private Color color13 = decodeColor("nimbusBase", 0.0023007393f, -0.46825016f, 0.27058822f, 0);
+    private Color color14 = decodeColor("nimbusBase", 5.1498413E-4f, -0.43866998f, 0.24705881f, 0);
+    private Color color15 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4625541f, 0.35686272f, 0);
+    private Color color16 = decodeColor("nimbusBase", 0.0013483167f, -0.1769987f, -0.12156865f, 0);
+    private Color color17 = decodeColor("nimbusBase", 0.059279382f, 0.3642857f, -0.43529415f, 0);
+    private Color color18 = decodeColor("nimbusBase", 0.004681647f, -0.6198413f, 0.43921566f, 0);
+    private Color color19 = decodeColor("nimbusBase", 0.0023007393f, -0.48084703f, 0.33725488f, 0);
+    private Color color20 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4555341f, 0.3215686f, 0);
+    private Color color21 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4757143f, 0.43137252f, 0);
+    private Color color22 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.54901963f, 0);
+    private Color color23 = decodeColor("nimbusBase", -3.528595E-5f, 0.018606722f, -0.23137257f, 0);
+    private Color color24 = decodeColor("nimbusBase", -4.2033195E-4f, -0.38050595f, 0.20392156f, 0);
+    private Color color25 = decodeColor("nimbusBase", 7.13408E-4f, -0.064285696f, 0.027450979f, 0);
+    private Color color26 = decodeColor("nimbusBase", 0.0f, -0.00895375f, 0.007843137f, 0);
+    private Color color27 = decodeColor("nimbusBase", 8.9377165E-4f, -0.13853917f, 0.14509803f, 0);
+    private Color color28 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.37254906f, 0);
+    private Color color29 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.5254902f, 0);
+    private Color color30 = decodeColor("nimbusBase", 0.027408898f, -0.57391655f, 0.1490196f, 0);
+    private Color color31 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ComboBoxComboBoxArrowButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED_EDITABLE: paintBackgroundDisabledAndEditable(g); break;
+            case BACKGROUND_ENABLED_EDITABLE: paintBackgroundEnabledAndEditable(g); break;
+            case BACKGROUND_MOUSEOVER_EDITABLE: paintBackgroundMouseOverAndEditable(g); break;
+            case BACKGROUND_PRESSED_EDITABLE: paintBackgroundPressedAndEditable(g); break;
+            case BACKGROUND_SELECTED_EDITABLE: paintBackgroundSelectedAndEditable(g); break;
+            case FOREGROUND_ENABLED: paintForegroundEnabled(g); break;
+            case FOREGROUND_MOUSEOVER: paintForegroundMouseOver(g); break;
+            case FOREGROUND_DISABLED: paintForegroundDisabled(g); break;
+            case FOREGROUND_PRESSED: paintForegroundPressed(g); break;
+            case FOREGROUND_SELECTED: paintForegroundSelected(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabledAndEditable(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(color4);
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient2(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabledAndEditable(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color9);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(color4);
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOverAndEditable(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color9);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(color4);
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundPressedAndEditable(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color9);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(color4);
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundSelectedAndEditable(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color9);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(color4);
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+
+    }
+
+    private void paintForegroundEnabled(Graphics2D g) {
+        path = decodePath5();
+        g.setPaint(decodeGradient9(path));
+        g.fill(path);
+
+    }
+
+    private void paintForegroundMouseOver(Graphics2D g) {
+        path = decodePath6();
+        g.setPaint(decodeGradient9(path));
+        g.fill(path);
+
+    }
+
+    private void paintForegroundDisabled(Graphics2D g) {
+        path = decodePath7();
+        g.setPaint(color30);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundPressed(Graphics2D g) {
+        path = decodePath8();
+        g.setPaint(color31);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundSelected(Graphics2D g) {
+        path = decodePath7();
+        g.setPaint(color31);
+        g.fill(path);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(2.0f));
+        path.lineTo(decodeX(2.75f), decodeY(2.0f));
+        path.lineTo(decodeX(2.75f), decodeY(2.25f));
+        path.curveTo(decodeAnchorX(2.75f, 0.0f), decodeAnchorY(2.25f, 4.0f), decodeAnchorX(2.125f, 3.0f), decodeAnchorY(2.875f, 0.0f), decodeX(2.125f), decodeY(2.875f));
+        path.lineTo(decodeX(0.0f), decodeY(2.875f));
+        path.lineTo(decodeX(0.0f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.25f));
+        path.lineTo(decodeX(2.125f), decodeY(0.25f));
+        path.curveTo(decodeAnchorX(2.125f, 3.0f), decodeAnchorY(0.25f, 0.0f), decodeAnchorX(2.75f, 0.0f), decodeAnchorY(0.875f, -3.0f), decodeX(2.75f), decodeY(0.875f));
+        path.lineTo(decodeX(2.75f), decodeY(2.125f));
+        path.curveTo(decodeAnchorX(2.75f, 0.0f), decodeAnchorY(2.125f, 3.0f), decodeAnchorX(2.125f, 3.0f), decodeAnchorY(2.75f, 0.0f), decodeX(2.125f), decodeY(2.75f));
+        path.lineTo(decodeX(0.0f), decodeY(2.75f));
+        path.lineTo(decodeX(0.0f), decodeY(0.25f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(0.85294116f), decodeY(2.639706f));
+        path.lineTo(decodeX(0.85294116f), decodeY(2.639706f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(0.375f));
+        path.lineTo(decodeX(2.0f), decodeY(0.375f));
+        path.curveTo(decodeAnchorX(2.0f, 4.0f), decodeAnchorY(0.375f, 0.0f), decodeAnchorX(2.625f, 0.0f), decodeAnchorY(1.0f, -4.0f), decodeX(2.625f), decodeY(1.0f));
+        path.lineTo(decodeX(2.625f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(2.625f, 0.0f), decodeAnchorY(2.0f, 4.0f), decodeAnchorX(2.0f, 4.0f), decodeAnchorY(2.625f, 0.0f), decodeX(2.0f), decodeY(2.625f));
+        path.lineTo(decodeX(1.0f), decodeY(2.625f));
+        path.lineTo(decodeX(1.0f), decodeY(0.375f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath5() {
+        path.reset();
+        path.moveTo(decodeX(0.9995915f), decodeY(1.3616071f));
+        path.lineTo(decodeX(2.0f), decodeY(0.8333333f));
+        path.lineTo(decodeX(2.0f), decodeY(1.8571429f));
+        path.lineTo(decodeX(0.9995915f), decodeY(1.3616071f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath6() {
+        path.reset();
+        path.moveTo(decodeX(1.00625f), decodeY(1.3526785f));
+        path.lineTo(decodeX(2.0f), decodeY(0.8333333f));
+        path.lineTo(decodeX(2.0f), decodeY(1.8571429f));
+        path.lineTo(decodeX(1.00625f), decodeY(1.3526785f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath7() {
+        path.reset();
+        path.moveTo(decodeX(1.0117648f), decodeY(1.3616071f));
+        path.lineTo(decodeX(2.0f), decodeY(0.8333333f));
+        path.lineTo(decodeX(2.0f), decodeY(1.8571429f));
+        path.lineTo(decodeX(1.0117648f), decodeY(1.3616071f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath8() {
+        path.reset();
+        path.moveTo(decodeX(1.0242647f), decodeY(1.3526785f));
+        path.lineTo(decodeX(2.0f), decodeY(0.8333333f));
+        path.lineTo(decodeX(2.0f), decodeY(1.8571429f));
+        path.lineTo(decodeX(1.0242647f), decodeY(1.3526785f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.171875f,0.34375f,0.4815341f,0.6193182f,0.8096591f,1.0f },
+                new Color[] { color5,
+                            decodeColor(color5,color6,0.5f),
+                            color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.12299465f,0.44652405f,0.5441176f,0.64171124f,0.8208556f,1.0f },
+                new Color[] { color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14,
+                            decodeColor(color14,color15,0.5f),
+                            color15});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.12299465f,0.44652405f,0.5441176f,0.64171124f,0.81283426f,0.98395723f },
+                new Color[] { color18,
+                            decodeColor(color18,color19,0.5f),
+                            color19,
+                            decodeColor(color19,color20,0.5f),
+                            color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color22,
+                            decodeColor(color22,color23,0.5f),
+                            color23});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.12299465f,0.44652405f,0.5441176f,0.64171124f,0.8208556f,1.0f },
+                new Color[] { color24,
+                            decodeColor(color24,color25,0.5f),
+                            color25,
+                            decodeColor(color25,color26,0.5f),
+                            color26,
+                            decodeColor(color26,color27,0.5f),
+                            color27});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((1.0f * w) + x, (0.5f * h) + y, (0.0f * w) + x, (0.5f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color28,
+                            decodeColor(color28,color29,0.5f),
+                            color29});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ComboBoxComboBoxTextFieldPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,254 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ComboBoxComboBoxTextFieldPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ComboBoxComboBoxTextFieldPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_SELECTED = 3;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ComboBoxComboBoxTextFieldPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.6111111f, -0.110526316f, -0.74509805f, -237);
+    private Color color2 = decodeColor("nimbusBlueGrey", -0.006944418f, -0.07187897f, 0.06666666f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07703349f, 0.0745098f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07968931f, 0.14509803f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07856284f, 0.11372548f, 0);
+    private Color color6 = decodeColor("nimbusBase", 0.040395975f, -0.60315615f, 0.29411763f, 0);
+    private Color color7 = decodeColor("nimbusBase", 0.016586483f, -0.6051466f, 0.3490196f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.0965403f, -0.18431371f, 0);
+    private Color color9 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.1048766f, -0.05098039f, 0);
+    private Color color10 = decodeColor("nimbusLightBackground", 0.6666667f, 0.004901961f, -0.19999999f, 0);
+    private Color color11 = decodeColor("nimbusLightBackground", 0.0f, 0.0f, 0.0f, 0);
+    private Color color12 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.105344966f, 0.011764705f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ComboBoxComboBoxTextFieldPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_SELECTED: paintBackgroundSelected(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color6);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color7);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient3(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color12);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color11);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundSelected(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient3(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color12);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color11);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(2.3333333f), //y
+                         decodeX(3.0f) - decodeX(0.6666667f), //width
+                         decodeY(2.6666667f) - decodeY(2.3333333f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(0.4f), //y
+                         decodeX(3.0f) - decodeX(0.6666667f), //width
+                         decodeY(1.0f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(0.6f), //y
+                         decodeX(3.0f) - decodeX(1.0f), //width
+                         decodeY(1.0f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(1.0f), //y
+                         decodeX(3.0f) - decodeX(0.6666667f), //width
+                         decodeY(2.3333333f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect5() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(3.0f) - decodeX(1.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (1.0f * h) + y, (0.5f * w) + x, (0.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.49573863f,0.99147725f },
+                new Color[] { color8,
+                            decodeColor(color8,color9,0.5f),
+                            color9});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.1f,0.49999997f,0.9f },
+                new Color[] { color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ComboBoxEditableState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class ComboBoxEditableState extends State {
+    ComboBoxEditableState() {
+        super("Editable");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                          return ((JComboBox)c).isEditable();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ComboBoxPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,733 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ComboBoxPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ComboBoxPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_DISABLED_PRESSED = 2;
+    static final int BACKGROUND_ENABLED = 3;
+    static final int BACKGROUND_FOCUSED = 4;
+    static final int BACKGROUND_MOUSEOVER_FOCUSED = 5;
+    static final int BACKGROUND_MOUSEOVER = 6;
+    static final int BACKGROUND_PRESSED_FOCUSED = 7;
+    static final int BACKGROUND_PRESSED = 8;
+    static final int BACKGROUND_ENABLED_SELECTED = 9;
+    static final int BACKGROUND_DISABLED_EDITABLE = 10;
+    static final int BACKGROUND_ENABLED_EDITABLE = 11;
+    static final int BACKGROUND_FOCUSED_EDITABLE = 12;
+    static final int BACKGROUND_MOUSEOVER_EDITABLE = 13;
+    static final int BACKGROUND_PRESSED_EDITABLE = 14;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ComboBoxPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.6111111f, -0.110526316f, -0.74509805f, -247);
+    private Color color2 = decodeColor("nimbusBase", 0.032459438f, -0.5928571f, 0.2745098f, 0);
+    private Color color3 = decodeColor("nimbusBase", 0.032459438f, -0.590029f, 0.2235294f, 0);
+    private Color color4 = decodeColor("nimbusBase", 0.032459438f, -0.60996324f, 0.36470586f, 0);
+    private Color color5 = decodeColor("nimbusBase", 0.040395975f, -0.60474086f, 0.33725488f, 0);
+    private Color color6 = decodeColor("nimbusBase", 0.032459438f, -0.5953556f, 0.32549018f, 0);
+    private Color color7 = decodeColor("nimbusBase", 0.032459438f, -0.5957143f, 0.3333333f, 0);
+    private Color color8 = decodeColor("nimbusBase", 0.021348298f, -0.56289876f, 0.2588235f, 0);
+    private Color color9 = decodeColor("nimbusBase", 0.010237217f, -0.55799407f, 0.20784312f, 0);
+    private Color color10 = decodeColor("nimbusBase", 0.021348298f, -0.59223604f, 0.35294116f, 0);
+    private Color color11 = decodeColor("nimbusBase", 0.02391243f, -0.5774183f, 0.32549018f, 0);
+    private Color color12 = decodeColor("nimbusBase", 0.021348298f, -0.56722116f, 0.3098039f, 0);
+    private Color color13 = decodeColor("nimbusBase", 0.021348298f, -0.567841f, 0.31764704f, 0);
+    private Color color14 = decodeColor("nimbusBlueGrey", 0.0f, 0.0f, -0.22f, -176);
+    private Color color15 = decodeColor("nimbusBase", 0.032459438f, -0.5787523f, 0.07058823f, 0);
+    private Color color16 = decodeColor("nimbusBase", 0.032459438f, -0.5399696f, -0.18039218f, 0);
+    private Color color17 = decodeColor("nimbusBase", 0.08801502f, -0.63174605f, 0.43921566f, 0);
+    private Color color18 = decodeColor("nimbusBase", 0.040395975f, -0.6054113f, 0.35686272f, 0);
+    private Color color19 = decodeColor("nimbusBase", 0.032459438f, -0.5998577f, 0.4352941f, 0);
+    private Color color20 = decodeColor("nimbusBase", 5.1498413E-4f, -0.34585923f, -0.007843137f, 0);
+    private Color color21 = decodeColor("nimbusBase", 5.1498413E-4f, -0.095173776f, -0.25882354f, 0);
+    private Color color22 = decodeColor("nimbusBase", 0.004681647f, -0.6197143f, 0.43137252f, 0);
+    private Color color23 = decodeColor("nimbusBase", -0.0028941035f, -0.4800539f, 0.28235292f, 0);
+    private Color color24 = decodeColor("nimbusBase", 5.1498413E-4f, -0.43866998f, 0.24705881f, 0);
+    private Color color25 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4625541f, 0.35686272f, 0);
+    private Color color26 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color27 = decodeColor("nimbusBase", 0.032459438f, -0.54616207f, -0.02352941f, 0);
+    private Color color28 = decodeColor("nimbusBase", 0.032459438f, -0.41349208f, -0.33725494f, 0);
+    private Color color29 = decodeColor("nimbusBase", 0.08801502f, -0.6317773f, 0.4470588f, 0);
+    private Color color30 = decodeColor("nimbusBase", 0.032459438f, -0.6113241f, 0.41568625f, 0);
+    private Color color31 = decodeColor("nimbusBase", 0.032459438f, -0.5985242f, 0.39999998f, 0);
+    private Color color32 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, 0);
+    private Color color33 = decodeColor("nimbusBase", 0.0013483167f, -0.1769987f, -0.12156865f, 0);
+    private Color color34 = decodeColor("nimbusBase", 0.059279382f, 0.3642857f, -0.43529415f, 0);
+    private Color color35 = decodeColor("nimbusBase", 0.004681647f, -0.6198413f, 0.43921566f, 0);
+    private Color color36 = decodeColor("nimbusBase", -8.738637E-4f, -0.50527954f, 0.35294116f, 0);
+    private Color color37 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4555341f, 0.3215686f, 0);
+    private Color color38 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4757143f, 0.43137252f, 0);
+    private Color color39 = decodeColor("nimbusBase", 0.08801502f, 0.3642857f, -0.52156866f, 0);
+    private Color color40 = decodeColor("nimbusBase", 0.032459438f, -0.5246032f, -0.12549022f, 0);
+    private Color color41 = decodeColor("nimbusBase", 0.027408898f, -0.5847884f, 0.2980392f, 0);
+    private Color color42 = decodeColor("nimbusBase", 0.026611507f, -0.53623784f, 0.19999999f, 0);
+    private Color color43 = decodeColor("nimbusBase", 0.029681683f, -0.52701867f, 0.17254901f, 0);
+    private Color color44 = decodeColor("nimbusBase", 0.03801495f, -0.5456242f, 0.3215686f, 0);
+    private Color color45 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.54901963f, 0);
+    private Color color46 = decodeColor("nimbusBase", -3.528595E-5f, 0.018606722f, -0.23137257f, 0);
+    private Color color47 = decodeColor("nimbusBase", -4.2033195E-4f, -0.38050595f, 0.20392156f, 0);
+    private Color color48 = decodeColor("nimbusBase", 4.081726E-4f, -0.12922078f, 0.054901958f, 0);
+    private Color color49 = decodeColor("nimbusBase", 0.0f, -0.00895375f, 0.007843137f, 0);
+    private Color color50 = decodeColor("nimbusBase", -0.0015907288f, -0.1436508f, 0.19215685f, 0);
+    private Color color51 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -83);
+    private Color color52 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -88);
+    private Color color53 = decodeColor("nimbusBlueGrey", 0.0f, -0.005263157f, -0.52156866f, -191);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ComboBoxPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_DISABLED_PRESSED: paintBackgroundDisabledAndPressed(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_FOCUSED: paintBackgroundFocused(g); break;
+            case BACKGROUND_MOUSEOVER_FOCUSED: paintBackgroundMouseOverAndFocused(g); break;
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_PRESSED_FOCUSED: paintBackgroundPressedAndFocused(g); break;
+            case BACKGROUND_PRESSED: paintBackgroundPressed(g); break;
+            case BACKGROUND_ENABLED_SELECTED: paintBackgroundEnabledAndSelected(g); break;
+            case BACKGROUND_DISABLED_EDITABLE: paintBackgroundDisabledAndEditable(g); break;
+            case BACKGROUND_ENABLED_EDITABLE: paintBackgroundEnabledAndEditable(g); break;
+            case BACKGROUND_FOCUSED_EDITABLE: paintBackgroundFocusedAndEditable(g); break;
+            case BACKGROUND_MOUSEOVER_EDITABLE: paintBackgroundMouseOverAndEditable(g); break;
+            case BACKGROUND_PRESSED_EDITABLE: paintBackgroundPressedAndEditable(g); break;
+
+        }
+    }
+        
+    protected Object[] getExtendedCacheKeys(JComponent c) {
+        Object[] extendedCacheKeys = null;
+        switch(state) {
+            case BACKGROUND_ENABLED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color17, -0.63174605f, 0.43921566f, 0),
+                     getComponentColor(c, "background", color18, -0.6054113f, 0.35686272f, 0),
+                     getComponentColor(c, "background", color6, -0.5953556f, 0.32549018f, 0),
+                     getComponentColor(c, "background", color19, -0.5998577f, 0.4352941f, 0),
+                     getComponentColor(c, "background", color22, -0.6197143f, 0.43137252f, 0),
+                     getComponentColor(c, "background", color23, -0.4800539f, 0.28235292f, 0),
+                     getComponentColor(c, "background", color24, -0.43866998f, 0.24705881f, 0),
+                     getComponentColor(c, "background", color25, -0.4625541f, 0.35686272f, 0)};
+                break;
+            case BACKGROUND_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color17, -0.63174605f, 0.43921566f, 0),
+                     getComponentColor(c, "background", color18, -0.6054113f, 0.35686272f, 0),
+                     getComponentColor(c, "background", color6, -0.5953556f, 0.32549018f, 0),
+                     getComponentColor(c, "background", color19, -0.5998577f, 0.4352941f, 0),
+                     getComponentColor(c, "background", color22, -0.6197143f, 0.43137252f, 0),
+                     getComponentColor(c, "background", color23, -0.4800539f, 0.28235292f, 0),
+                     getComponentColor(c, "background", color24, -0.43866998f, 0.24705881f, 0),
+                     getComponentColor(c, "background", color25, -0.4625541f, 0.35686272f, 0)};
+                break;
+            case BACKGROUND_MOUSEOVER_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color29, -0.6317773f, 0.4470588f, 0),
+                     getComponentColor(c, "background", color30, -0.6113241f, 0.41568625f, 0),
+                     getComponentColor(c, "background", color31, -0.5985242f, 0.39999998f, 0),
+                     getComponentColor(c, "background", color32, -0.6357143f, 0.45098037f, 0),
+                     getComponentColor(c, "background", color35, -0.6198413f, 0.43921566f, 0),
+                     getComponentColor(c, "background", color36, -0.50527954f, 0.35294116f, 0),
+                     getComponentColor(c, "background", color37, -0.4555341f, 0.3215686f, 0),
+                     getComponentColor(c, "background", color25, -0.4625541f, 0.35686272f, 0),
+                     getComponentColor(c, "background", color38, -0.4757143f, 0.43137252f, 0)};
+                break;
+            case BACKGROUND_MOUSEOVER:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color29, -0.6317773f, 0.4470588f, 0),
+                     getComponentColor(c, "background", color30, -0.6113241f, 0.41568625f, 0),
+                     getComponentColor(c, "background", color31, -0.5985242f, 0.39999998f, 0),
+                     getComponentColor(c, "background", color32, -0.6357143f, 0.45098037f, 0),
+                     getComponentColor(c, "background", color35, -0.6198413f, 0.43921566f, 0),
+                     getComponentColor(c, "background", color36, -0.50527954f, 0.35294116f, 0),
+                     getComponentColor(c, "background", color37, -0.4555341f, 0.3215686f, 0),
+                     getComponentColor(c, "background", color25, -0.4625541f, 0.35686272f, 0),
+                     getComponentColor(c, "background", color38, -0.4757143f, 0.43137252f, 0)};
+                break;
+            case BACKGROUND_PRESSED_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color41, -0.5847884f, 0.2980392f, 0),
+                     getComponentColor(c, "background", color42, -0.53623784f, 0.19999999f, 0),
+                     getComponentColor(c, "background", color43, -0.52701867f, 0.17254901f, 0),
+                     getComponentColor(c, "background", color44, -0.5456242f, 0.3215686f, 0),
+                     getComponentColor(c, "background", color47, -0.38050595f, 0.20392156f, 0),
+                     getComponentColor(c, "background", color48, -0.12922078f, 0.054901958f, 0),
+                     getComponentColor(c, "background", color49, -0.00895375f, 0.007843137f, 0),
+                     getComponentColor(c, "background", color50, -0.1436508f, 0.19215685f, 0)};
+                break;
+            case BACKGROUND_PRESSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color41, -0.5847884f, 0.2980392f, 0),
+                     getComponentColor(c, "background", color42, -0.53623784f, 0.19999999f, 0),
+                     getComponentColor(c, "background", color43, -0.52701867f, 0.17254901f, 0),
+                     getComponentColor(c, "background", color44, -0.5456242f, 0.3215686f, 0),
+                     getComponentColor(c, "background", color47, -0.38050595f, 0.20392156f, 0),
+                     getComponentColor(c, "background", color48, -0.12922078f, 0.054901958f, 0),
+                     getComponentColor(c, "background", color49, -0.00895375f, 0.007843137f, 0),
+                     getComponentColor(c, "background", color50, -0.1436508f, 0.19215685f, 0)};
+                break;
+            case BACKGROUND_ENABLED_SELECTED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color41, -0.5847884f, 0.2980392f, 0),
+                     getComponentColor(c, "background", color42, -0.53623784f, 0.19999999f, 0),
+                     getComponentColor(c, "background", color43, -0.52701867f, 0.17254901f, 0),
+                     getComponentColor(c, "background", color44, -0.5456242f, 0.3215686f, 0),
+                     getComponentColor(c, "background", color47, -0.38050595f, 0.20392156f, 0),
+                     getComponentColor(c, "background", color48, -0.12922078f, 0.054901958f, 0),
+                     getComponentColor(c, "background", color49, -0.00895375f, 0.007843137f, 0),
+                     getComponentColor(c, "background", color50, -0.1436508f, 0.19215685f, 0)};
+                break;
+        }
+        return extendedCacheKeys;
+    }
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient2(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundDisabledAndPressed(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient2(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color14);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundFocused(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color26);
+        g.fill(roundRect);
+        path = decodePath2();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOverAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color26);
+        g.fill(roundRect);
+        path = decodePath2();
+        g.setPaint(decodeGradient9(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient10(path));
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color14);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient9(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient10(path));
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundPressedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color26);
+        g.fill(roundRect);
+        path = decodePath2();
+        g.setPaint(decodeGradient11(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient12(path));
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundPressed(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color51);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient11(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient12(path));
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabledAndSelected(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color52);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient11(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient12(path));
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundDisabledAndEditable(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color53);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabledAndEditable(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color53);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundFocusedAndEditable(Graphics2D g) {
+        path = decodePath6();
+        g.setPaint(color26);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOverAndEditable(Graphics2D g) {
+        rect = decodeRect2();
+        g.setPaint(color53);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundPressedAndEditable(Graphics2D g) {
+        rect = decodeRect2();
+        g.setPaint(color53);
+        g.fill(rect);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.22222222f), decodeY(2.0f));
+        path.lineTo(decodeX(0.22222222f), decodeY(2.25f));
+        path.curveTo(decodeAnchorX(0.2222222238779068f, 0.0f), decodeAnchorY(2.25f, 3.0f), decodeAnchorX(0.7777777910232544f, -3.0f), decodeAnchorY(2.875f, 0.0f), decodeX(0.7777778f), decodeY(2.875f));
+        path.lineTo(decodeX(2.631579f), decodeY(2.875f));
+        path.curveTo(decodeAnchorX(2.6315789222717285f, 3.0f), decodeAnchorY(2.875f, 0.0f), decodeAnchorX(2.8947367668151855f, 0.0f), decodeAnchorY(2.25f, 3.0f), decodeX(2.8947368f), decodeY(2.25f));
+        path.lineTo(decodeX(2.8947368f), decodeY(2.0f));
+        path.lineTo(decodeX(0.22222222f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(0.22222222f), decodeY(0.875f));
+        path.lineTo(decodeX(0.22222222f), decodeY(2.125f));
+        path.curveTo(decodeAnchorX(0.2222222238779068f, 0.0f), decodeAnchorY(2.125f, 3.0f), decodeAnchorX(0.7777777910232544f, -3.0f), decodeAnchorY(2.75f, 0.0f), decodeX(0.7777778f), decodeY(2.75f));
+        path.lineTo(decodeX(2.0f), decodeY(2.75f));
+        path.lineTo(decodeX(2.0f), decodeY(0.25f));
+        path.lineTo(decodeX(0.7777778f), decodeY(0.25f));
+        path.curveTo(decodeAnchorX(0.7777777910232544f, -3.0f), decodeAnchorY(0.25f, 0.0f), decodeAnchorX(0.2222222238779068f, 0.0f), decodeAnchorY(0.875f, -3.0f), decodeX(0.22222222f), decodeY(0.875f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(0.8888889f), decodeY(0.375f));
+        path.lineTo(decodeX(2.0f), decodeY(0.375f));
+        path.lineTo(decodeX(2.0f), decodeY(2.625f));
+        path.lineTo(decodeX(0.8888889f), decodeY(2.625f));
+        path.curveTo(decodeAnchorX(0.8888888955116272f, -4.0f), decodeAnchorY(2.625f, 0.0f), decodeAnchorX(0.3333333432674408f, 0.0f), decodeAnchorY(2.0f, 4.0f), decodeX(0.33333334f), decodeY(2.0f));
+        path.lineTo(decodeX(0.33333334f), decodeY(0.875f));
+        path.curveTo(decodeAnchorX(0.3333333432674408f, 0.0f), decodeAnchorY(0.875f, -3.0f), decodeAnchorX(0.8888888955116272f, -4.0f), decodeAnchorY(0.375f, 0.0f), decodeX(0.8888889f), decodeY(0.375f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(2.0f), decodeY(0.25f));
+        path.lineTo(decodeX(2.631579f), decodeY(0.25f));
+        path.curveTo(decodeAnchorX(2.6315789222717285f, 3.0f), decodeAnchorY(0.25f, 0.0f), decodeAnchorX(2.8947367668151855f, 0.0f), decodeAnchorY(0.875f, -3.0f), decodeX(2.8947368f), decodeY(0.875f));
+        path.lineTo(decodeX(2.8947368f), decodeY(2.125f));
+        path.curveTo(decodeAnchorX(2.8947367668151855f, 0.0f), decodeAnchorY(2.125f, 3.0f), decodeAnchorX(2.6315789222717285f, 3.0f), decodeAnchorY(2.75f, 0.0f), decodeX(2.631579f), decodeY(2.75f));
+        path.lineTo(decodeX(2.0f), decodeY(2.75f));
+        path.lineTo(decodeX(2.0f), decodeY(0.25f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath5() {
+        path.reset();
+        path.moveTo(decodeX(2.0131578f), decodeY(0.375f));
+        path.lineTo(decodeX(2.5789473f), decodeY(0.375f));
+        path.curveTo(decodeAnchorX(2.5789473056793213f, 4.0f), decodeAnchorY(0.375f, 0.0f), decodeAnchorX(2.8421053886413574f, 0.0f), decodeAnchorY(1.0f, -4.0f), decodeX(2.8421054f), decodeY(1.0f));
+        path.lineTo(decodeX(2.8421054f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(2.8421053886413574f, 0.0f), decodeAnchorY(2.0f, 4.0f), decodeAnchorX(2.5789473056793213f, 4.0f), decodeAnchorY(2.625f, 0.0f), decodeX(2.5789473f), decodeY(2.625f));
+        path.lineTo(decodeX(2.0131578f), decodeY(2.625f));
+        path.lineTo(decodeX(2.0131578f), decodeY(0.375f));
+        path.closePath();
+        return path;
+    }
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(0.06666667f), //x
+                               decodeY(0.075f), //y
+                               decodeX(2.9684212f) - decodeX(0.06666667f), //width
+                               decodeY(2.925f) - decodeY(0.075f), //height
+                               13.0f, 13.0f); //rounding
+        return roundRect;
+    }
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.4385965f), //x
+                         decodeY(1.4444444f), //y
+                         decodeX(1.4385965f) - decodeX(1.4385965f), //width
+                         decodeY(1.4444444f) - decodeY(1.4444444f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath6() {
+        path.reset();
+        path.moveTo(decodeX(0.120000005f), decodeY(0.120000005f));
+        path.lineTo(decodeX(1.9954545f), decodeY(0.120000005f));
+        path.curveTo(decodeAnchorX(1.9954545497894287f, 3.0f), decodeAnchorY(0.12000000476837158f, 0.0f), decodeAnchorX(2.8799986839294434f, 0.0f), decodeAnchorY(1.0941176414489746f, -2.9999999999999996f), decodeX(2.8799987f), decodeY(1.0941176f));
+        path.lineTo(decodeX(2.8799987f), decodeY(1.964706f));
+        path.curveTo(decodeAnchorX(2.8799986839294434f, 0.0f), decodeAnchorY(1.9647059440612793f, 3.0f), decodeAnchorX(1.9954545497894287f, 3.0f), decodeAnchorY(2.879999876022339f, 0.0f), decodeX(1.9954545f), decodeY(2.8799999f));
+        path.lineTo(decodeX(0.120000005f), decodeY(2.8799999f));
+        path.lineTo(decodeX(0.120000005f), decodeY(0.120000005f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(1.4385965f), //x
+                         decodeY(1.5f), //y
+                         decodeX(1.4385965f) - decodeX(1.4385965f), //width
+                         decodeY(1.5f) - decodeY(1.5f)); //height
+        return rect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.2002841f,0.4005682f,0.5326705f,0.66477275f,0.8323864f,1.0f },
+                new Color[] { color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5,
+                            decodeColor(color5,color6,0.5f),
+                            color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color8,
+                            decodeColor(color8,color9,0.5f),
+                            color9});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.171875f,0.34375f,0.4815341f,0.6193182f,0.8096591f,1.0f },
+                new Color[] { color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11,
+                            decodeColor(color11,color12,0.5f),
+                            color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.2002841f,0.4005682f,0.5326705f,0.66477275f,0.8323864f,1.0f },
+                new Color[] { (Color)componentColors[0],
+                            decodeColor((Color)componentColors[0],(Color)componentColors[1],0.5f),
+                            (Color)componentColors[1],
+                            decodeColor((Color)componentColors[1],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2],
+                            decodeColor((Color)componentColors[2],(Color)componentColors[3],0.5f),
+                            (Color)componentColors[3]});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.171875f,0.34375f,0.4815341f,0.6193182f,0.8096591f,1.0f },
+                new Color[] { (Color)componentColors[4],
+                            decodeColor((Color)componentColors[4],(Color)componentColors[5],0.5f),
+                            (Color)componentColors[5],
+                            decodeColor((Color)componentColors[5],(Color)componentColors[6],0.5f),
+                            (Color)componentColors[6],
+                            decodeColor((Color)componentColors[6],(Color)componentColors[7],0.5f),
+                            (Color)componentColors[7]});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color27,
+                            decodeColor(color27,color28,0.5f),
+                            color28});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color33,
+                            decodeColor(color33,color34,0.5f),
+                            color34});
+    }
+
+    private Paint decodeGradient11(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color39,
+                            decodeColor(color39,color40,0.5f),
+                            color40});
+    }
+
+    private Paint decodeGradient12(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color45,
+                            decodeColor(color45,color46,0.5f),
+                            color46});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/DesktopIconPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class DesktopIconPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of DesktopIconPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of DesktopIconPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBase", 0.02551502f, -0.47885156f, -0.34901965f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.102261856f, 0.20392156f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.0f, -0.0682728f, 0.09019607f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", -0.01111114f, -0.088974595f, 0.16470587f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.0f, -0.029445238f, -0.019607842f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public DesktopIconPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+
+    }
+
+
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(0.4f), //x
+                               decodeY(0.0f), //y
+                               decodeX(2.8f) - decodeX(0.4f), //width
+                               decodeY(2.6f) - decodeY(0.0f), //height
+                               4.8333335f, 4.8333335f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect2() {
+        roundRect.setRoundRect(decodeX(0.6f), //x
+                               decodeY(0.2f), //y
+                               decodeX(2.8f) - decodeX(0.6f), //width
+                               decodeY(2.4f) - decodeY(0.2f), //height
+                               3.1f, 3.1f); //rounding
+        return roundRect;
+    }
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.8f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.4f) - decodeX(0.8f), //width
+                         decodeY(2.2f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.24f,1.0f },
+                new Color[] { color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/DesktopPanePainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,350 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class DesktopPanePainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of DesktopPanePainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of DesktopPanePainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBase", -0.004577577f, -0.12867206f, 0.007843137f, 0);
+    private Color color2 = decodeColor("nimbusBase", -0.0063245893f, -0.08363098f, -0.17254904f, 0);
+    private Color color3 = decodeColor("nimbusBase", -3.6883354E-4f, -0.056766927f, -0.10196081f, 0);
+    private Color color4 = decodeColor("nimbusBase", -0.008954704f, -0.12645501f, -0.12549022f, 0);
+    private Color color5 = new Color(255, 200, 0, 6);
+    private Color color6 = decodeColor("nimbusBase", -8.028746E-5f, -0.084533215f, -0.05098042f, 0);
+    private Color color7 = decodeColor("nimbusBase", -0.0052053332f, -0.12267083f, -0.09803924f, 0);
+    private Color color8 = decodeColor("nimbusBase", -0.012559712f, -0.13136649f, -0.09803924f, 0);
+    private Color color9 = decodeColor("nimbusBase", -0.009207249f, -0.13984653f, -0.07450983f, 0);
+    private Color color10 = decodeColor("nimbusBase", -0.010750473f, -0.13571429f, -0.12549022f, 0);
+    private Color color11 = decodeColor("nimbusBase", -0.008476257f, -0.1267857f, -0.109803945f, 0);
+    private Color color12 = decodeColor("nimbusBase", -0.0034883022f, -0.042691052f, -0.21176472f, 0);
+    private Color color13 = decodeColor("nimbusBase", -0.012613952f, -0.11610645f, -0.14901963f, 0);
+    private Color color14 = decodeColor("nimbusBase", -0.0038217902f, -0.05238098f, -0.21960786f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public DesktopPanePainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient2(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(color5);
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+        path = decodePath6();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath7();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath8();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath9();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(1.2716666f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(1.2716666460037231f, 0.0f), decodeAnchorY(2.0f, 0.5f), decodeAnchorX(1.128333330154419f, 0.0f), decodeAnchorY(1.0f, 0.0f), decodeX(1.1283333f), decodeY(1.0f));
+        path.lineTo(decodeX(1.3516667f), decodeY(1.0f));
+        path.lineTo(decodeX(1.5866666f), decodeY(1.5754311f));
+        path.lineTo(decodeX(1.5416667f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(1.5416667461395264f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeAnchorX(1.2716666460037231f, 0.0f), decodeAnchorY(2.0f, -0.5f), decodeX(1.2716666f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(1.7883334f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(1.7883334159851074f, 0.0f), decodeAnchorY(2.0f, 0.5f), decodeAnchorX(1.653333306312561f, 0.0f), decodeAnchorY(1.7737069129943848f, 0.0f), decodeX(1.6533333f), decodeY(1.7737069f));
+        path.lineTo(decodeX(2.0f), decodeY(1.1465517f));
+        path.curveTo(decodeAnchorX(2.0f, 0.0f), decodeAnchorY(1.1465517282485962f, 0.0f), decodeAnchorX(2.0f, 0.0f), decodeAnchorY(2.0f, -0.5f), decodeX(2.0f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(2.0f, 0.5f), decodeAnchorY(2.0f, 0.5f), decodeAnchorX(1.7883334159851074f, 0.0f), decodeAnchorY(2.0f, -0.5f), decodeX(1.7883334f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(1.5666666f), decodeY(1.0f));
+        path.lineTo(decodeX(1.5666666f), decodeY(1.5689654f));
+        path.lineTo(decodeX(1.675f), decodeY(1.7715517f));
+        path.curveTo(decodeAnchorX(1.6749999523162842f, 0.0f), decodeAnchorY(1.7715517282485962f, 0.0f), decodeAnchorX(1.81166672706604f, -23.5f), decodeAnchorY(1.4978448152542114f, 33.5f), decodeX(1.8116667f), decodeY(1.4978448f));
+        path.curveTo(decodeAnchorX(1.81166672706604f, 23.5f), decodeAnchorY(1.4978448152542114f, -33.5f), decodeAnchorX(2.0f, 0.0f), decodeAnchorY(1.200430989265442f, 0.0f), decodeX(2.0f), decodeY(1.200431f));
+        path.lineTo(decodeX(2.0f), decodeY(1.0f));
+        path.lineTo(decodeX(1.5666666f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(1.3383334f), decodeY(1.0f));
+        path.curveTo(decodeAnchorX(1.3383333683013916f, 0.0f), decodeAnchorY(1.0f, 0.0f), decodeAnchorX(1.441666603088379f, -21.0f), decodeAnchorY(1.3103448152542114f, -37.5f), decodeX(1.4416666f), decodeY(1.3103448f));
+        path.curveTo(decodeAnchorX(1.441666603088379f, 21.0f), decodeAnchorY(1.3103448152542114f, 37.5f), decodeAnchorX(1.5733332633972168f, 0.0f), decodeAnchorY(1.5840517282485962f, 0.0f), decodeX(1.5733333f), decodeY(1.5840517f));
+        path.curveTo(decodeAnchorX(1.5733332633972168f, 0.0f), decodeAnchorY(1.5840517282485962f, 0.0f), decodeAnchorX(1.6066666841506958f, 1.5f), decodeAnchorY(1.2413792610168457f, 29.5f), decodeX(1.6066667f), decodeY(1.2413793f));
+        path.curveTo(decodeAnchorX(1.6066666841506958f, -1.5f), decodeAnchorY(1.2413792610168457f, -29.5f), decodeAnchorX(1.6050000190734863f, 0.0f), decodeAnchorY(1.0f, 0.0f), decodeX(1.605f), decodeY(1.0f));
+        path.lineTo(decodeX(1.3383334f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath5() {
+        path.reset();
+        path.moveTo(decodeX(1.5683334f), decodeY(1.5797414f));
+        path.curveTo(decodeAnchorX(1.568333387374878f, 0.0f), decodeAnchorY(1.579741358757019f, 0.0f), decodeAnchorX(1.5750000476837158f, 0.0f), decodeAnchorY(1.2392241954803467f, 33.0f), decodeX(1.575f), decodeY(1.2392242f));
+        path.curveTo(decodeAnchorX(1.5750000476837158f, 0.0f), decodeAnchorY(1.2392241954803467f, -33.0f), decodeAnchorX(1.56166672706604f, 0.0f), decodeAnchorY(1.0f, 0.0f), decodeX(1.5616667f), decodeY(1.0f));
+        path.lineTo(decodeX(2.0f), decodeY(1.0f));
+        path.lineTo(decodeX(2.0f), decodeY(1.1982758f));
+        path.curveTo(decodeAnchorX(2.0f, 0.0f), decodeAnchorY(1.1982758045196533f, 0.0f), decodeAnchorX(1.806666612625122f, 27.5f), decodeAnchorY(1.5043103694915771f, -38.5f), decodeX(1.8066666f), decodeY(1.5043104f));
+        path.curveTo(decodeAnchorX(1.806666612625122f, -27.5f), decodeAnchorY(1.5043103694915771f, 38.5f), decodeAnchorX(1.6766667366027832f, 0.0f), decodeAnchorY(1.778017282485962f, 0.0f), decodeX(1.6766667f), decodeY(1.7780173f));
+        path.lineTo(decodeX(1.5683334f), decodeY(1.5797414f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath6() {
+        path.reset();
+        path.moveTo(decodeX(1.5216666f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(1.5216666460037231f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeAnchorX(1.5550000667572021f, -2.0f), decodeAnchorY(1.778017282485962f, 22.5f), decodeX(1.5550001f), decodeY(1.7780173f));
+        path.curveTo(decodeAnchorX(1.5550000667572021f, 2.0f), decodeAnchorY(1.778017282485962f, -22.5f), decodeAnchorX(1.568333387374878f, 0.0f), decodeAnchorY(1.576508641242981f, 0.0f), decodeX(1.5683334f), decodeY(1.5765086f));
+        path.lineTo(decodeX(1.6775f), decodeY(1.7747846f));
+        path.curveTo(decodeAnchorX(1.6775000095367432f, 0.0f), decodeAnchorY(1.7747845649719238f, 0.0f), decodeAnchorX(1.6508333683013916f, 6.0f), decodeAnchorY(1.892241358757019f, -14.0f), decodeX(1.6508334f), decodeY(1.8922414f));
+        path.curveTo(decodeAnchorX(1.6508333683013916f, -6.0f), decodeAnchorY(1.892241358757019f, 14.0f), decodeAnchorX(1.6083333492279053f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeX(1.6083333f), decodeY(2.0f));
+        path.lineTo(decodeX(1.5216666f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath7() {
+        path.reset();
+        path.moveTo(decodeX(1.6066667f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(1.6066666841506958f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeAnchorX(1.6399999856948853f, -7.0f), decodeAnchorY(1.8814654350280762f, 17.0f), decodeX(1.64f), decodeY(1.8814654f));
+        path.curveTo(decodeAnchorX(1.6399999856948853f, 7.0f), decodeAnchorY(1.8814654350280762f, -17.0f), decodeAnchorX(1.6775000095367432f, 0.0f), decodeAnchorY(1.7747845649719238f, 0.0f), decodeX(1.6775f), decodeY(1.7747846f));
+        path.curveTo(decodeAnchorX(1.6775000095367432f, 0.0f), decodeAnchorY(1.7747845649719238f, 0.0f), decodeAnchorX(1.7416666746139526f, -11.0f), decodeAnchorY(1.8836207389831543f, -15.0f), decodeX(1.7416667f), decodeY(1.8836207f));
+        path.curveTo(decodeAnchorX(1.7416666746139526f, 11.0f), decodeAnchorY(1.8836207389831543f, 15.0f), decodeAnchorX(1.81333327293396f, 0.0f), decodeAnchorY(2.0f, -0.5f), decodeX(1.8133333f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(1.81333327293396f, 0.0f), decodeAnchorY(2.0f, 0.5f), decodeAnchorX(1.6066666841506958f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeX(1.6066667f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath8() {
+        path.reset();
+        path.moveTo(decodeX(1.2733333f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(1.2733333110809326f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeAnchorX(1.2633333206176758f, 5.0f), decodeAnchorY(1.659482717514038f, 37.0f), decodeX(1.2633333f), decodeY(1.6594827f));
+        path.curveTo(decodeAnchorX(1.2633333206176758f, -5.0f), decodeAnchorY(1.659482717514038f, -37.0f), decodeAnchorX(1.193333387374878f, 9.0f), decodeAnchorY(1.2241379022598267f, 33.5f), decodeX(1.1933334f), decodeY(1.2241379f));
+        path.curveTo(decodeAnchorX(1.193333387374878f, -9.0f), decodeAnchorY(1.2241379022598267f, -33.5f), decodeAnchorX(1.1333333253860474f, 0.0f), decodeAnchorY(1.0f, 0.0f), decodeX(1.1333333f), decodeY(1.0f));
+        path.lineTo(decodeX(1.0f), decodeY(1.0f));
+        path.lineTo(decodeX(1.0f), decodeY(1.6120689f));
+        path.curveTo(decodeAnchorX(1.0f, 0.0f), decodeAnchorY(1.6120688915252686f, 0.0f), decodeAnchorX(1.149999976158142f, 0.0f), decodeAnchorY(2.0f, -0.5f), decodeX(1.15f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(1.149999976158142f, 0.0f), decodeAnchorY(2.0f, 0.5f), decodeAnchorX(1.2733333110809326f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeX(1.2733333f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath9() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(2.0f));
+        path.lineTo(decodeX(1.0f), decodeY(1.5969827f));
+        path.curveTo(decodeAnchorX(1.0f, 0.0f), decodeAnchorY(1.596982717514038f, 0.0f), decodeAnchorX(1.0733333826065063f, -10.0f), decodeAnchorY(1.7974138259887695f, -19.5f), decodeX(1.0733334f), decodeY(1.7974138f));
+        path.curveTo(decodeAnchorX(1.0733333826065063f, 10.0f), decodeAnchorY(1.7974138259887695f, 19.5f), decodeAnchorX(1.1666666269302368f, 0.0f), decodeAnchorY(2.0f, -0.5f), decodeX(1.1666666f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(1.1666666269302368f, 0.0f), decodeAnchorY(2.0f, 0.5f), decodeAnchorX(1.0f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeX(1.0f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.75f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.9567308f * w) + x, (0.06835443f * h) + y, (0.75f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.83536583f * w) + x, (0.9522059f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.8659696f * w) + x, (0.011049724f * h) + y, (0.24809887f * w) + x, (0.95027626f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color6,
+                            decodeColor(color6,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.3511236f * w) + x, (0.09326425f * h) + y, (0.33426967f * w) + x, (0.9846154f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.3548387f * w) + x, (0.114285715f * h) + y, (0.48387095f * w) + x, (0.9809524f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color11,
+                            decodeColor(color11,color4,0.5f),
+                            color4});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.75f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color12,0.5f),
+                            color12});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.75f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/EditorPanePainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class EditorPanePainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of EditorPanePainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_SELECTED = 3;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of EditorPanePainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.015872955f, -0.07995863f, 0.15294117f, 0);
+    private Color color2 = decodeColor("nimbusLightBackground", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public EditorPanePainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_SELECTED: paintBackgroundSelected(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color2);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundSelected(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color2);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/FileChooserPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,2248 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class FileChooserPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of FileChooserPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int FILEICON_ENABLED = 2;
+    static final int DIRECTORYICON_ENABLED = 3;
+    static final int UPFOLDERICON_ENABLED = 4;
+    static final int NEWFOLDERICON_ENABLED = 5;
+    static final int COMPUTERICON_ENABLED = 6;
+    static final int HARDDRIVEICON_ENABLED = 7;
+    static final int FLOPPYDRIVEICON_ENABLED = 8;
+    static final int HOMEFOLDERICON_ENABLED = 9;
+    static final int DETAILSVIEWICON_ENABLED = 10;
+    static final int LISTVIEWICON_ENABLED = 11;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of FileChooserPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("control", 0.0f, 0.0f, 0.0f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.065654516f, -0.13333333f, 0);
+    private Color color3 = new Color(97, 98, 102, 255);
+    private Color color4 = decodeColor("nimbusBlueGrey", -0.032679737f, -0.043332636f, 0.24705881f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color6 = decodeColor("nimbusBase", 0.0077680945f, -0.51781034f, 0.3490196f, 0);
+    private Color color7 = decodeColor("nimbusBase", 0.013940871f, -0.599277f, 0.41960782f, 0);
+    private Color color8 = decodeColor("nimbusBase", 0.004681647f, -0.4198052f, 0.14117646f, 0);
+    private Color color9 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, -127);
+    private Color color10 = decodeColor("nimbusBlueGrey", 0.0f, 0.0f, -0.21f, -99);
+    private Color color11 = decodeColor("nimbusBase", 2.9569864E-4f, -0.45978838f, 0.2980392f, 0);
+    private Color color12 = decodeColor("nimbusBase", 0.0015952587f, -0.34848025f, 0.18823528f, 0);
+    private Color color13 = decodeColor("nimbusBase", 0.0015952587f, -0.30844158f, 0.09803921f, 0);
+    private Color color14 = decodeColor("nimbusBase", 0.0015952587f, -0.27329817f, 0.035294116f, 0);
+    private Color color15 = decodeColor("nimbusBase", 0.004681647f, -0.6198413f, 0.43921566f, 0);
+    private Color color16 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, -125);
+    private Color color17 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, -50);
+    private Color color18 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, -100);
+    private Color color19 = decodeColor("nimbusBase", 0.0012094378f, -0.23571429f, -0.0784314f, 0);
+    private Color color20 = decodeColor("nimbusBase", 2.9569864E-4f, -0.115166366f, -0.2627451f, 0);
+    private Color color21 = decodeColor("nimbusBase", 0.0027436614f, -0.335015f, 0.011764705f, 0);
+    private Color color22 = decodeColor("nimbusBase", 0.0024294257f, -0.3857143f, 0.031372547f, 0);
+    private Color color23 = decodeColor("nimbusBase", 0.0018081069f, -0.3595238f, -0.13725492f, 0);
+    private Color color24 = new Color(255, 200, 0, 255);
+    private Color color25 = decodeColor("nimbusBase", 0.004681647f, -0.44904763f, 0.039215684f, 0);
+    private Color color26 = decodeColor("nimbusBase", 0.0015952587f, -0.43718487f, -0.015686274f, 0);
+    private Color color27 = decodeColor("nimbusBase", 2.9569864E-4f, -0.39212453f, -0.24313727f, 0);
+    private Color color28 = decodeColor("nimbusBase", 0.004681647f, -0.6117143f, 0.43137252f, 0);
+    private Color color29 = decodeColor("nimbusBase", 0.0012094378f, -0.28015873f, -0.019607842f, 0);
+    private Color color30 = decodeColor("nimbusBase", 0.00254488f, -0.07049692f, -0.2784314f, 0);
+    private Color color31 = decodeColor("nimbusBase", 0.0015952587f, -0.28045115f, 0.04705882f, 0);
+    private Color color32 = decodeColor("nimbusBlueGrey", 0.0f, 5.847961E-4f, -0.21568626f, 0);
+    private Color color33 = decodeColor("nimbusBase", -0.0061469674f, 0.3642857f, 0.14509803f, 0);
+    private Color color34 = decodeColor("nimbusBase", 0.0053939223f, 0.3642857f, -0.0901961f, 0);
+    private Color color35 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, 0);
+    private Color color36 = decodeColor("nimbusBase", -0.006044388f, -0.23963585f, 0.45098037f, 0);
+    private Color color37 = decodeColor("nimbusBase", -0.0063245893f, 0.01592505f, 0.4078431f, 0);
+    private Color color38 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -170);
+    private Color color39 = decodeColor("nimbusOrange", -0.032758567f, -0.018273294f, 0.25098038f, 0);
+    private Color color40 = new Color(255, 255, 255, 255);
+    private Color color41 = new Color(252, 255, 92, 255);
+    private Color color42 = new Color(253, 191, 4, 255);
+    private Color color43 = new Color(160, 161, 163, 255);
+    private Color color44 = new Color(0, 0, 0, 255);
+    private Color color45 = new Color(239, 241, 243, 255);
+    private Color color46 = new Color(197, 201, 205, 255);
+    private Color color47 = new Color(105, 110, 118, 255);
+    private Color color48 = new Color(63, 67, 72, 255);
+    private Color color49 = new Color(56, 51, 25, 255);
+    private Color color50 = new Color(144, 255, 0, 255);
+    private Color color51 = new Color(243, 245, 246, 255);
+    private Color color52 = new Color(208, 212, 216, 255);
+    private Color color53 = new Color(191, 193, 194, 255);
+    private Color color54 = new Color(170, 172, 175, 255);
+    private Color color55 = new Color(152, 155, 158, 255);
+    private Color color56 = new Color(59, 62, 66, 255);
+    private Color color57 = new Color(46, 46, 46, 255);
+    private Color color58 = new Color(64, 64, 64, 255);
+    private Color color59 = new Color(43, 43, 43, 255);
+    private Color color60 = new Color(164, 179, 206, 255);
+    private Color color61 = new Color(97, 123, 170, 255);
+    private Color color62 = new Color(53, 86, 146, 255);
+    private Color color63 = new Color(48, 82, 144, 255);
+    private Color color64 = new Color(71, 99, 150, 255);
+    private Color color65 = new Color(224, 224, 224, 255);
+    private Color color66 = new Color(232, 232, 232, 255);
+    private Color color67 = new Color(231, 234, 237, 255);
+    private Color color68 = new Color(205, 211, 215, 255);
+    private Color color69 = new Color(149, 153, 156, 54);
+    private Color color70 = new Color(255, 122, 101, 255);
+    private Color color71 = new Color(54, 78, 122, 255);
+    private Color color72 = new Color(51, 60, 70, 255);
+    private Color color73 = new Color(228, 232, 237, 255);
+    private Color color74 = new Color(27, 57, 87, 255);
+    private Color color75 = new Color(75, 109, 137, 255);
+    private Color color76 = new Color(77, 133, 185, 255);
+    private Color color77 = new Color(81, 59, 7, 255);
+    private Color color78 = new Color(97, 74, 18, 255);
+    private Color color79 = new Color(137, 115, 60, 255);
+    private Color color80 = new Color(174, 151, 91, 255);
+    private Color color81 = new Color(114, 92, 13, 255);
+    private Color color82 = new Color(64, 48, 0, 255);
+    private Color color83 = new Color(244, 222, 143, 255);
+    private Color color84 = new Color(160, 161, 162, 255);
+    private Color color85 = new Color(226, 230, 233, 255);
+    private Color color86 = new Color(221, 225, 230, 255);
+    private Color color87 = decodeColor("nimbusBase", 0.004681647f, -0.48756614f, 0.19215685f, 0);
+    private Color color88 = decodeColor("nimbusBase", 0.004681647f, -0.48399013f, 0.019607842f, 0);
+    private Color color89 = decodeColor("nimbusBase", -0.0028941035f, -0.5906323f, 0.4078431f, 0);
+    private Color color90 = decodeColor("nimbusBase", 0.004681647f, -0.51290727f, 0.34509802f, 0);
+    private Color color91 = decodeColor("nimbusBase", 0.009583652f, -0.5642857f, 0.3843137f, 0);
+    private Color color92 = decodeColor("nimbusBase", -0.0072231293f, -0.6074885f, 0.4235294f, 0);
+    private Color color93 = decodeColor("nimbusBase", 7.13408E-4f, -0.52158386f, 0.17254901f, 0);
+    private Color color94 = decodeColor("nimbusBase", 0.012257397f, -0.5775132f, 0.19215685f, 0);
+    private Color color95 = decodeColor("nimbusBase", 0.08801502f, -0.6164835f, -0.14117649f, 0);
+    private Color color96 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.5019608f, 0);
+    private Color color97 = decodeColor("nimbusBase", -0.0036516786f, -0.555393f, 0.42745095f, 0);
+    private Color color98 = decodeColor("nimbusBase", -0.0010654926f, -0.3634138f, 0.2862745f, 0);
+    private Color color99 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.29803923f, 0);
+    private Color color100 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, 0.12156862f, 0);
+    private Color color101 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.54901963f, 0);
+    private Color color102 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.48627454f, 0);
+    private Color color103 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.007843137f, 0);
+    private Color color104 = decodeColor("nimbusBase", -0.0028941035f, -0.5408867f, -0.09411767f, 0);
+    private Color color105 = decodeColor("nimbusBase", -0.011985004f, -0.54721874f, -0.10588238f, 0);
+    private Color color106 = decodeColor("nimbusBase", -0.0022627711f, -0.4305861f, -0.0901961f, 0);
+    private Color color107 = decodeColor("nimbusBase", -0.00573498f, -0.447479f, -0.21568629f, 0);
+    private Color color108 = decodeColor("nimbusBase", 0.004681647f, -0.53271f, 0.36470586f, 0);
+    private Color color109 = decodeColor("nimbusBase", 0.004681647f, -0.5276062f, -0.11372551f, 0);
+    private Color color110 = decodeColor("nimbusBase", -8.738637E-4f, -0.5278006f, -0.0039215684f, 0);
+    private Color color111 = decodeColor("nimbusBase", -0.0028941035f, -0.5338625f, -0.12549022f, 0);
+    private Color color112 = decodeColor("nimbusBlueGrey", -0.03535354f, -0.008674465f, -0.32156864f, 0);
+    private Color color113 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.010526314f, -0.3529412f, 0);
+    private Color color114 = decodeColor("nimbusBase", -0.0028941035f, -0.5234694f, -0.1647059f, 0);
+    private Color color115 = decodeColor("nimbusBase", 0.004681647f, -0.53401935f, -0.086274534f, 0);
+    private Color color116 = decodeColor("nimbusBase", 0.004681647f, -0.52077174f, -0.20784315f, 0);
+    private Color color117 = new Color(108, 114, 120, 255);
+    private Color color118 = new Color(77, 82, 87, 255);
+    private Color color119 = decodeColor("nimbusBase", -0.004577577f, -0.52179027f, -0.2392157f, 0);
+    private Color color120 = decodeColor("nimbusBase", -0.004577577f, -0.547479f, -0.14901963f, 0);
+    private Color color121 = new Color(186, 186, 186, 50);
+    private Color color122 = new Color(186, 186, 186, 40);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public FileChooserPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case FILEICON_ENABLED: paintfileIconEnabled(g); break;
+            case DIRECTORYICON_ENABLED: paintdirectoryIconEnabled(g); break;
+            case UPFOLDERICON_ENABLED: paintupFolderIconEnabled(g); break;
+            case NEWFOLDERICON_ENABLED: paintnewFolderIconEnabled(g); break;
+            case HARDDRIVEICON_ENABLED: painthardDriveIconEnabled(g); break;
+            case FLOPPYDRIVEICON_ENABLED: paintfloppyDriveIconEnabled(g); break;
+            case HOMEFOLDERICON_ENABLED: painthomeFolderIconEnabled(g); break;
+            case DETAILSVIEWICON_ENABLED: paintdetailsViewIconEnabled(g); break;
+            case LISTVIEWICON_ENABLED: paintlistViewIconEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintfileIconEnabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color2);
+        g.fill(path);
+        rect = decodeRect2();
+        g.setPaint(color3);
+        g.fill(rect);
+        path = decodePath2();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient2(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(color8);
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(color9);
+        g.fill(path);
+
+    }
+
+    private void paintdirectoryIconEnabled(Graphics2D g) {
+        path = decodePath6();
+        g.setPaint(color10);
+        g.fill(path);
+        path = decodePath7();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath8();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color17);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color18);
+        g.fill(rect);
+        path = decodePath9();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath10();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath11();
+        g.setPaint(color24);
+        g.fill(path);
+
+    }
+
+    private void paintupFolderIconEnabled(Graphics2D g) {
+        path = decodePath12();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath13();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+        path = decodePath14();
+        g.setPaint(decodeGradient9(path));
+        g.fill(path);
+        path = decodePath15();
+        g.setPaint(decodeGradient10(path));
+        g.fill(path);
+        path = decodePath16();
+        g.setPaint(color32);
+        g.fill(path);
+        path = decodePath17();
+        g.setPaint(decodeGradient11(path));
+        g.fill(path);
+        path = decodePath18();
+        g.setPaint(color35);
+        g.fill(path);
+        path = decodePath19();
+        g.setPaint(decodeGradient12(path));
+        g.fill(path);
+
+    }
+
+    private void paintnewFolderIconEnabled(Graphics2D g) {
+        path = decodePath6();
+        g.setPaint(color10);
+        g.fill(path);
+        path = decodePath7();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath8();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color17);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color18);
+        g.fill(rect);
+        path = decodePath9();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath10();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath11();
+        g.setPaint(color24);
+        g.fill(path);
+        path = decodePath20();
+        g.setPaint(color38);
+        g.fill(path);
+        path = decodePath21();
+        g.setPaint(color39);
+        g.fill(path);
+        path = decodePath22();
+        g.setPaint(decodeRadial1(path));
+        g.fill(path);
+
+    }
+
+    private void painthardDriveIconEnabled(Graphics2D g) {
+        rect = decodeRect6();
+        g.setPaint(color43);
+        g.fill(rect);
+        rect = decodeRect7();
+        g.setPaint(color44);
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(decodeGradient13(rect));
+        g.fill(rect);
+        path = decodePath23();
+        g.setPaint(decodeGradient14(path));
+        g.fill(path);
+        rect = decodeRect9();
+        g.setPaint(color49);
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color49);
+        g.fill(rect);
+        ellipse = decodeEllipse1();
+        g.setPaint(color50);
+        g.fill(ellipse);
+        path = decodePath24();
+        g.setPaint(decodeGradient15(path));
+        g.fill(path);
+        ellipse = decodeEllipse2();
+        g.setPaint(color53);
+        g.fill(ellipse);
+        ellipse = decodeEllipse3();
+        g.setPaint(color53);
+        g.fill(ellipse);
+        ellipse = decodeEllipse4();
+        g.setPaint(color54);
+        g.fill(ellipse);
+        ellipse = decodeEllipse5();
+        g.setPaint(color55);
+        g.fill(ellipse);
+        ellipse = decodeEllipse6();
+        g.setPaint(color55);
+        g.fill(ellipse);
+        ellipse = decodeEllipse7();
+        g.setPaint(color55);
+        g.fill(ellipse);
+        rect = decodeRect11();
+        g.setPaint(color56);
+        g.fill(rect);
+        rect = decodeRect12();
+        g.setPaint(color56);
+        g.fill(rect);
+        rect = decodeRect13();
+        g.setPaint(color56);
+        g.fill(rect);
+
+    }
+
+    private void paintfloppyDriveIconEnabled(Graphics2D g) {
+        path = decodePath25();
+        g.setPaint(decodeGradient16(path));
+        g.fill(path);
+        path = decodePath26();
+        g.setPaint(decodeGradient17(path));
+        g.fill(path);
+        path = decodePath27();
+        g.setPaint(decodeGradient18(path));
+        g.fill(path);
+        path = decodePath28();
+        g.setPaint(decodeGradient19(path));
+        g.fill(path);
+        path = decodePath29();
+        g.setPaint(color69);
+        g.fill(path);
+        rect = decodeRect14();
+        g.setPaint(color70);
+        g.fill(rect);
+        rect = decodeRect15();
+        g.setPaint(color40);
+        g.fill(rect);
+        rect = decodeRect16();
+        g.setPaint(color67);
+        g.fill(rect);
+        rect = decodeRect17();
+        g.setPaint(color71);
+        g.fill(rect);
+        rect = decodeRect18();
+        g.setPaint(color44);
+        g.fill(rect);
+
+    }
+
+    private void painthomeFolderIconEnabled(Graphics2D g) {
+        path = decodePath30();
+        g.setPaint(color72);
+        g.fill(path);
+        path = decodePath31();
+        g.setPaint(color73);
+        g.fill(path);
+        rect = decodeRect19();
+        g.setPaint(decodeGradient20(rect));
+        g.fill(rect);
+        rect = decodeRect20();
+        g.setPaint(color76);
+        g.fill(rect);
+        path = decodePath32();
+        g.setPaint(decodeGradient21(path));
+        g.fill(path);
+        rect = decodeRect21();
+        g.setPaint(decodeGradient22(rect));
+        g.fill(rect);
+        path = decodePath33();
+        g.setPaint(decodeGradient23(path));
+        g.fill(path);
+        path = decodePath34();
+        g.setPaint(color83);
+        g.fill(path);
+        path = decodePath35();
+        g.setPaint(decodeGradient24(path));
+        g.fill(path);
+        path = decodePath36();
+        g.setPaint(decodeGradient25(path));
+        g.fill(path);
+
+    }
+
+    private void paintdetailsViewIconEnabled(Graphics2D g) {
+        rect = decodeRect22();
+        g.setPaint(decodeGradient26(rect));
+        g.fill(rect);
+        rect = decodeRect23();
+        g.setPaint(decodeGradient27(rect));
+        g.fill(rect);
+        rect = decodeRect24();
+        g.setPaint(color93);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color93);
+        g.fill(rect);
+        rect = decodeRect25();
+        g.setPaint(color93);
+        g.fill(rect);
+        rect = decodeRect26();
+        g.setPaint(color94);
+        g.fill(rect);
+        ellipse = decodeEllipse8();
+        g.setPaint(decodeGradient28(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse9();
+        g.setPaint(decodeRadial2(ellipse));
+        g.fill(ellipse);
+        path = decodePath37();
+        g.setPaint(decodeGradient29(path));
+        g.fill(path);
+        path = decodePath38();
+        g.setPaint(decodeGradient30(path));
+        g.fill(path);
+        rect = decodeRect27();
+        g.setPaint(color104);
+        g.fill(rect);
+        rect = decodeRect28();
+        g.setPaint(color105);
+        g.fill(rect);
+        rect = decodeRect29();
+        g.setPaint(color106);
+        g.fill(rect);
+        rect = decodeRect30();
+        g.setPaint(color107);
+        g.fill(rect);
+
+    }
+
+    private void paintlistViewIconEnabled(Graphics2D g) {
+        rect = decodeRect31();
+        g.setPaint(decodeGradient26(rect));
+        g.fill(rect);
+        rect = decodeRect32();
+        g.setPaint(decodeGradient31(rect));
+        g.fill(rect);
+        rect = decodeRect33();
+        g.setPaint(color109);
+        g.fill(rect);
+        rect = decodeRect34();
+        g.setPaint(decodeGradient32(rect));
+        g.fill(rect);
+        rect = decodeRect35();
+        g.setPaint(color111);
+        g.fill(rect);
+        rect = decodeRect36();
+        g.setPaint(color112);
+        g.fill(rect);
+        rect = decodeRect37();
+        g.setPaint(color113);
+        g.fill(rect);
+        rect = decodeRect38();
+        g.setPaint(decodeGradient33(rect));
+        g.fill(rect);
+        rect = decodeRect39();
+        g.setPaint(color116);
+        g.fill(rect);
+        rect = decodeRect40();
+        g.setPaint(decodeGradient34(rect));
+        g.fill(rect);
+        rect = decodeRect41();
+        g.setPaint(decodeGradient35(rect));
+        g.fill(rect);
+        rect = decodeRect42();
+        g.setPaint(color119);
+        g.fill(rect);
+        rect = decodeRect43();
+        g.setPaint(color121);
+        g.fill(rect);
+        rect = decodeRect44();
+        g.setPaint(color121);
+        g.fill(rect);
+        rect = decodeRect45();
+        g.setPaint(color121);
+        g.fill(rect);
+        rect = decodeRect46();
+        g.setPaint(color122);
+        g.fill(rect);
+        rect = decodeRect47();
+        g.setPaint(color121);
+        g.fill(rect);
+        rect = decodeRect48();
+        g.setPaint(color122);
+        g.fill(rect);
+        rect = decodeRect49();
+        g.setPaint(color122);
+        g.fill(rect);
+        rect = decodeRect50();
+        g.setPaint(color121);
+        g.fill(rect);
+        rect = decodeRect51();
+        g.setPaint(color122);
+        g.fill(rect);
+        rect = decodeRect52();
+        g.setPaint(color122);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.2f), decodeY(0.0f));
+        path.lineTo(decodeX(0.2f), decodeY(3.0f));
+        path.lineTo(decodeX(0.4f), decodeY(3.0f));
+        path.lineTo(decodeX(0.4f), decodeY(0.2f));
+        path.lineTo(decodeX(1.9197531f), decodeY(0.2f));
+        path.lineTo(decodeX(2.6f), decodeY(0.9f));
+        path.lineTo(decodeX(2.6f), decodeY(3.0f));
+        path.lineTo(decodeX(2.8f), decodeY(3.0f));
+        path.lineTo(decodeX(2.8f), decodeY(0.88888896f));
+        path.lineTo(decodeX(1.9537036f), decodeY(0.0f));
+        path.lineTo(decodeX(0.2f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(2.8f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(3.0f) - decodeY(2.8f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.lineTo(decodeX(1.8333333f), decodeY(1.0f));
+        path.lineTo(decodeX(2.6f), decodeY(1.0f));
+        path.lineTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.lineTo(decodeX(0.4f), decodeY(0.2f));
+        path.lineTo(decodeX(0.4f), decodeY(2.8f));
+        path.lineTo(decodeX(2.6f), decodeY(2.8f));
+        path.lineTo(decodeX(2.6f), decodeY(1.0f));
+        path.lineTo(decodeX(1.8333333f), decodeY(1.0f));
+        path.lineTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.lineTo(decodeX(1.6234567f), decodeY(0.2f));
+        path.lineTo(decodeX(1.6296296f), decodeY(1.2037038f));
+        path.lineTo(decodeX(2.6f), decodeY(1.2006173f));
+        path.lineTo(decodeX(2.6f), decodeY(1.0f));
+        path.lineTo(decodeX(1.8333333f), decodeY(1.0f));
+        path.lineTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath5() {
+        path.reset();
+        path.moveTo(decodeX(1.8333333f), decodeY(0.4f));
+        path.lineTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.lineTo(decodeX(0.4f), decodeY(0.2f));
+        path.lineTo(decodeX(0.4f), decodeY(2.8f));
+        path.lineTo(decodeX(2.6f), decodeY(2.8f));
+        path.lineTo(decodeX(2.6f), decodeY(1.0f));
+        path.lineTo(decodeX(2.4f), decodeY(1.0f));
+        path.lineTo(decodeX(2.4f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6f), decodeY(0.4f));
+        path.lineTo(decodeX(1.8333333f), decodeY(0.4f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath6() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(2.4f));
+        path.lineTo(decodeX(0.0f), decodeY(2.6f));
+        path.lineTo(decodeX(0.2f), decodeY(3.0f));
+        path.lineTo(decodeX(2.6f), decodeY(3.0f));
+        path.lineTo(decodeX(2.8f), decodeY(2.6f));
+        path.lineTo(decodeX(2.8f), decodeY(2.4f));
+        path.lineTo(decodeX(0.0f), decodeY(2.4f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath7() {
+        path.reset();
+        path.moveTo(decodeX(0.6f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6037037f), decodeY(1.8425925f));
+        path.lineTo(decodeX(0.8f), decodeY(1.0f));
+        path.lineTo(decodeX(2.8f), decodeY(1.0f));
+        path.lineTo(decodeX(2.8f), decodeY(1.3333334f));
+        path.lineTo(decodeX(2.6f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6f), decodeY(2.6f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath8() {
+        path.reset();
+        path.moveTo(decodeX(0.2f), decodeY(2.6f));
+        path.lineTo(decodeX(0.4f), decodeY(2.6f));
+        path.lineTo(decodeX(0.40833336f), decodeY(1.8645833f));
+        path.lineTo(decodeX(0.79583335f), decodeY(0.8f));
+        path.lineTo(decodeX(2.4f), decodeY(0.8f));
+        path.lineTo(decodeX(2.4f), decodeY(0.6f));
+        path.lineTo(decodeX(1.5f), decodeY(0.6f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.4f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.2f));
+        path.lineTo(decodeX(0.6f), decodeY(0.2f));
+        path.lineTo(decodeX(0.6f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(0.6f));
+        path.lineTo(decodeX(0.2f), decodeY(0.6f));
+        path.lineTo(decodeX(0.2f), decodeY(2.6f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(0.2f), //x
+                         decodeY(0.6f), //y
+                         decodeX(0.4f) - decodeX(0.2f), //width
+                         decodeY(0.8f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(0.2f), //y
+                         decodeX(1.3333334f) - decodeX(0.6f), //width
+                         decodeY(0.4f) - decodeY(0.2f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect5() {
+            rect.setRect(decodeX(1.5f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.4f) - decodeX(1.5f), //width
+                         decodeY(0.8f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath9() {
+        path.reset();
+        path.moveTo(decodeX(3.0f), decodeY(0.8f));
+        path.lineTo(decodeX(3.0f), decodeY(1.0f));
+        path.lineTo(decodeX(2.4f), decodeY(1.0f));
+        path.lineTo(decodeX(2.4f), decodeY(0.6f));
+        path.lineTo(decodeX(1.5f), decodeY(0.6f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.4f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.2f));
+        path.lineTo(decodeX(0.5888889f), decodeY(0.20370372f));
+        path.lineTo(decodeX(0.5962963f), decodeY(0.34814817f));
+        path.lineTo(decodeX(0.34814817f), decodeY(0.6f));
+        path.lineTo(decodeX(0.2f), decodeY(0.6f));
+        path.lineTo(decodeX(0.2f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(1.3333334f));
+        path.lineTo(decodeX(2.774074f), decodeY(1.1604939f));
+        path.lineTo(decodeX(2.8f), decodeY(1.0f));
+        path.lineTo(decodeX(3.0f), decodeY(1.0f));
+        path.lineTo(decodeX(2.8925927f), decodeY(1.1882716f));
+        path.lineTo(decodeX(2.8f), decodeY(1.3333334f));
+        path.lineTo(decodeX(2.8f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(2.8f));
+        path.lineTo(decodeX(0.2f), decodeY(2.8f));
+        path.lineTo(decodeX(0.0f), decodeY(2.6f));
+        path.lineTo(decodeX(0.0f), decodeY(0.65185183f));
+        path.lineTo(decodeX(0.63703704f), decodeY(0.0f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.0f));
+        path.lineTo(decodeX(1.5925925f), decodeY(0.4f));
+        path.lineTo(decodeX(2.4f), decodeY(0.4f));
+        path.lineTo(decodeX(2.6f), decodeY(0.6f));
+        path.lineTo(decodeX(2.6f), decodeY(0.8f));
+        path.lineTo(decodeX(3.0f), decodeY(0.8f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath10() {
+        path.reset();
+        path.moveTo(decodeX(2.4f), decodeY(1.0f));
+        path.lineTo(decodeX(2.4f), decodeY(0.8f));
+        path.lineTo(decodeX(0.74814814f), decodeY(0.8f));
+        path.lineTo(decodeX(0.4037037f), decodeY(1.8425925f));
+        path.lineTo(decodeX(0.4f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6f), decodeY(2.6f));
+        path.lineTo(decodeX(0.5925926f), decodeY(2.225926f));
+        path.lineTo(decodeX(0.916f), decodeY(0.996f));
+        path.lineTo(decodeX(2.4f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath11() {
+        path.reset();
+        path.moveTo(decodeX(2.2f), decodeY(2.2f));
+        path.lineTo(decodeX(2.2f), decodeY(2.2f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath12() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(2.8f));
+        path.lineTo(decodeX(0.2f), decodeY(3.0f));
+        path.lineTo(decodeX(2.6f), decodeY(3.0f));
+        path.lineTo(decodeX(2.8f), decodeY(2.8f));
+        path.lineTo(decodeX(2.8f), decodeY(1.8333333f));
+        path.lineTo(decodeX(3.0f), decodeY(1.3333334f));
+        path.lineTo(decodeX(3.0f), decodeY(1.0f));
+        path.lineTo(decodeX(1.5f), decodeY(1.0f));
+        path.lineTo(decodeX(1.5f), decodeY(0.4f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.2f));
+        path.lineTo(decodeX(0.6f), decodeY(0.2f));
+        path.lineTo(decodeX(0.4f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(0.6f));
+        path.lineTo(decodeX(0.2f), decodeY(0.6f));
+        path.lineTo(decodeX(0.0f), decodeY(0.8f));
+        path.lineTo(decodeX(0.0f), decodeY(2.8f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath13() {
+        path.reset();
+        path.moveTo(decodeX(0.2f), decodeY(2.8f));
+        path.lineTo(decodeX(0.2f), decodeY(0.8f));
+        path.lineTo(decodeX(0.4f), decodeY(0.8f));
+        path.lineTo(decodeX(0.6f), decodeY(0.6f));
+        path.lineTo(decodeX(0.6f), decodeY(0.4f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.4f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.6f));
+        path.lineTo(decodeX(1.5f), decodeY(0.6f));
+        path.lineTo(decodeX(1.5f), decodeY(2.8f));
+        path.lineTo(decodeX(0.2f), decodeY(2.8f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath14() {
+        path.reset();
+        path.moveTo(decodeX(0.4f), decodeY(2.0f));
+        path.lineTo(decodeX(0.6f), decodeY(1.1666666f));
+        path.lineTo(decodeX(0.8f), decodeY(1.0f));
+        path.lineTo(decodeX(2.8f), decodeY(1.0f));
+        path.lineTo(decodeX(2.8f), decodeY(2.8f));
+        path.lineTo(decodeX(2.4f), decodeY(3.0f));
+        path.lineTo(decodeX(0.4f), decodeY(3.0f));
+        path.lineTo(decodeX(0.4f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath15() {
+        path.reset();
+        path.moveTo(decodeX(0.6f), decodeY(2.8f));
+        path.lineTo(decodeX(0.6f), decodeY(2.0f));
+        path.lineTo(decodeX(0.8f), decodeY(1.1666666f));
+        path.lineTo(decodeX(2.8f), decodeY(1.1666666f));
+        path.lineTo(decodeX(2.6f), decodeY(2.0f));
+        path.lineTo(decodeX(2.6f), decodeY(2.8f));
+        path.lineTo(decodeX(0.6f), decodeY(2.8f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath16() {
+        path.reset();
+        path.moveTo(decodeX(1.1702899f), decodeY(1.2536231f));
+        path.lineTo(decodeX(1.1666666f), decodeY(1.0615941f));
+        path.lineTo(decodeX(3.0f), decodeY(1.0978261f));
+        path.lineTo(decodeX(2.7782607f), decodeY(1.25f));
+        path.lineTo(decodeX(2.3913045f), decodeY(1.3188406f));
+        path.lineTo(decodeX(2.3826087f), decodeY(1.7246377f));
+        path.lineTo(decodeX(2.173913f), decodeY(1.9347827f));
+        path.lineTo(decodeX(1.8695652f), decodeY(1.923913f));
+        path.lineTo(decodeX(1.710145f), decodeY(1.7246377f));
+        path.lineTo(decodeX(1.710145f), decodeY(1.3115941f));
+        path.lineTo(decodeX(1.1702899f), decodeY(1.2536231f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath17() {
+        path.reset();
+        path.moveTo(decodeX(1.1666666f), decodeY(1.1666666f));
+        path.lineTo(decodeX(1.1666666f), decodeY(0.9130435f));
+        path.lineTo(decodeX(1.9456522f), decodeY(0.0f));
+        path.lineTo(decodeX(2.0608697f), decodeY(0.0f));
+        path.lineTo(decodeX(2.9956522f), decodeY(0.9130435f));
+        path.lineTo(decodeX(3.0f), decodeY(1.1666666f));
+        path.lineTo(decodeX(2.4f), decodeY(1.1666666f));
+        path.lineTo(decodeX(2.4f), decodeY(1.6666667f));
+        path.lineTo(decodeX(2.2f), decodeY(1.8333333f));
+        path.lineTo(decodeX(1.8333333f), decodeY(1.8333333f));
+        path.lineTo(decodeX(1.6666667f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.6666667f), decodeY(1.1666666f));
+        path.lineTo(decodeX(1.1666666f), decodeY(1.1666666f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath18() {
+        path.reset();
+        path.moveTo(decodeX(1.2717391f), decodeY(0.9956522f));
+        path.lineTo(decodeX(1.8333333f), decodeY(1.0f));
+        path.lineTo(decodeX(1.8333333f), decodeY(1.6666667f));
+        path.lineTo(decodeX(2.2f), decodeY(1.6666667f));
+        path.lineTo(decodeX(2.2f), decodeY(1.0f));
+        path.lineTo(decodeX(2.8652174f), decodeY(1.0f));
+        path.lineTo(decodeX(2.0f), decodeY(0.13043478f));
+        path.lineTo(decodeX(1.2717391f), decodeY(0.9956522f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath19() {
+        path.reset();
+        path.moveTo(decodeX(1.8333333f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.8333333f), decodeY(1.0f));
+        path.lineTo(decodeX(1.3913044f), decodeY(1.0f));
+        path.lineTo(decodeX(1.9963768f), decodeY(0.25652176f));
+        path.lineTo(decodeX(2.6608696f), decodeY(1.0f));
+        path.lineTo(decodeX(2.2f), decodeY(1.0f));
+        path.lineTo(decodeX(2.2f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.8333333f), decodeY(1.6666667f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath20() {
+        path.reset();
+        path.moveTo(decodeX(0.22692308f), decodeY(0.061538465f));
+        path.lineTo(decodeX(0.75384617f), decodeY(0.37692308f));
+        path.lineTo(decodeX(0.91923076f), decodeY(0.01923077f));
+        path.lineTo(decodeX(1.2532052f), decodeY(0.40769228f));
+        path.lineTo(decodeX(1.7115386f), decodeY(0.13846155f));
+        path.lineTo(decodeX(1.6923077f), decodeY(0.85f));
+        path.lineTo(decodeX(2.169231f), decodeY(0.9115385f));
+        path.lineTo(decodeX(1.7852564f), decodeY(1.3333334f));
+        path.lineTo(decodeX(1.9166667f), decodeY(1.9679487f));
+        path.lineTo(decodeX(1.3685898f), decodeY(1.8301282f));
+        path.lineTo(decodeX(1.1314102f), decodeY(2.2115386f));
+        path.lineTo(decodeX(0.63076925f), decodeY(1.8205128f));
+        path.lineTo(decodeX(0.22692308f), decodeY(1.9262822f));
+        path.lineTo(decodeX(0.31153846f), decodeY(1.4871795f));
+        path.lineTo(decodeX(0.0f), decodeY(1.1538461f));
+        path.lineTo(decodeX(0.38461536f), decodeY(0.68076926f));
+        path.lineTo(decodeX(0.22692308f), decodeY(0.061538465f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath21() {
+        path.reset();
+        path.moveTo(decodeX(0.23461537f), decodeY(0.33076924f));
+        path.lineTo(decodeX(0.32692307f), decodeY(0.21538463f));
+        path.lineTo(decodeX(0.9653846f), decodeY(0.74615383f));
+        path.lineTo(decodeX(1.0160257f), decodeY(0.01923077f));
+        path.lineTo(decodeX(1.1506411f), decodeY(0.01923077f));
+        path.lineTo(decodeX(1.2275641f), decodeY(0.72307694f));
+        path.lineTo(decodeX(1.6987178f), decodeY(0.20769231f));
+        path.lineTo(decodeX(1.8237178f), decodeY(0.37692308f));
+        path.lineTo(decodeX(1.3878205f), decodeY(0.94230765f));
+        path.lineTo(decodeX(1.9775641f), decodeY(1.0256411f));
+        path.lineTo(decodeX(1.9839742f), decodeY(1.1474359f));
+        path.lineTo(decodeX(1.4070512f), decodeY(1.2083334f));
+        path.lineTo(decodeX(1.7980769f), decodeY(1.7307692f));
+        path.lineTo(decodeX(1.7532051f), decodeY(1.8269231f));
+        path.lineTo(decodeX(1.2211539f), decodeY(1.3365384f));
+        path.lineTo(decodeX(1.1506411f), decodeY(1.9839742f));
+        path.lineTo(decodeX(1.0288461f), decodeY(1.9775641f));
+        path.lineTo(decodeX(0.95384616f), decodeY(1.3429488f));
+        path.lineTo(decodeX(0.28846154f), decodeY(1.8012822f));
+        path.lineTo(decodeX(0.20769231f), decodeY(1.7371795f));
+        path.lineTo(decodeX(0.75f), decodeY(1.173077f));
+        path.lineTo(decodeX(0.011538462f), decodeY(1.1634616f));
+        path.lineTo(decodeX(0.015384616f), decodeY(1.0224359f));
+        path.lineTo(decodeX(0.79615384f), decodeY(0.94230765f));
+        path.lineTo(decodeX(0.23461537f), decodeY(0.33076924f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath22() {
+        path.reset();
+        path.moveTo(decodeX(0.58461535f), decodeY(0.6615385f));
+        path.lineTo(decodeX(0.68846154f), decodeY(0.56923074f));
+        path.lineTo(decodeX(0.9884615f), decodeY(0.80769235f));
+        path.lineTo(decodeX(1.0352564f), decodeY(0.43076926f));
+        path.lineTo(decodeX(1.1282052f), decodeY(0.43846154f));
+        path.lineTo(decodeX(1.1891025f), decodeY(0.80769235f));
+        path.lineTo(decodeX(1.4006411f), decodeY(0.59615386f));
+        path.lineTo(decodeX(1.4967948f), decodeY(0.70384616f));
+        path.lineTo(decodeX(1.3173077f), decodeY(0.9384615f));
+        path.lineTo(decodeX(1.625f), decodeY(1.0256411f));
+        path.lineTo(decodeX(1.6282051f), decodeY(1.1346154f));
+        path.lineTo(decodeX(1.2564102f), decodeY(1.176282f));
+        path.lineTo(decodeX(1.4711539f), decodeY(1.3910257f));
+        path.lineTo(decodeX(1.4070512f), decodeY(1.4807693f));
+        path.lineTo(decodeX(1.1858975f), decodeY(1.2724359f));
+        path.lineTo(decodeX(1.1474359f), decodeY(1.6602564f));
+        path.lineTo(decodeX(1.0416666f), decodeY(1.6602564f));
+        path.lineTo(decodeX(0.9769231f), decodeY(1.2884616f));
+        path.lineTo(decodeX(0.6923077f), decodeY(1.5f));
+        path.lineTo(decodeX(0.6423077f), decodeY(1.3782052f));
+        path.lineTo(decodeX(0.83076924f), decodeY(1.176282f));
+        path.lineTo(decodeX(0.46923074f), decodeY(1.1474359f));
+        path.lineTo(decodeX(0.48076925f), decodeY(1.0064102f));
+        path.lineTo(decodeX(0.8230769f), decodeY(0.98461545f));
+        path.lineTo(decodeX(0.58461535f), decodeY(0.6615385f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect6() {
+            rect.setRect(decodeX(0.2f), //x
+                         decodeY(0.0f), //y
+                         decodeX(2.8f) - decodeX(0.2f), //width
+                         decodeY(2.2f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect7() {
+            rect.setRect(decodeX(0.2f), //x
+                         decodeY(2.2f), //y
+                         decodeX(2.8f) - decodeX(0.2f), //width
+                         decodeY(3.0f) - decodeY(2.2f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect8() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(0.2f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(2.2f) - decodeY(0.2f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath23() {
+        path.reset();
+        path.moveTo(decodeX(0.4f), decodeY(2.2f));
+        path.lineTo(decodeX(0.4f), decodeY(2.8f));
+        path.lineTo(decodeX(0.6f), decodeY(2.8f));
+        path.lineTo(decodeX(0.6f), decodeY(2.6f));
+        path.lineTo(decodeX(2.4f), decodeY(2.6f));
+        path.lineTo(decodeX(2.4f), decodeY(2.8f));
+        path.lineTo(decodeX(2.6f), decodeY(2.8f));
+        path.lineTo(decodeX(2.6f), decodeY(2.2f));
+        path.lineTo(decodeX(0.4f), decodeY(2.2f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect9() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(2.8f), //y
+                         decodeX(1.6666667f) - decodeX(0.6f), //width
+                         decodeY(3.0f) - decodeY(2.8f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect10() {
+            rect.setRect(decodeX(1.8333333f), //x
+                         decodeY(2.8f), //y
+                         decodeX(2.4f) - decodeX(1.8333333f), //width
+                         decodeY(3.0f) - decodeY(2.8f)); //height
+        return rect;
+    }
+
+    private Ellipse2D decodeEllipse1() {
+        ellipse.setFrame(decodeX(0.6f), //x
+                         decodeY(2.4f), //y
+                         decodeX(0.8f) - decodeX(0.6f), //width
+                         decodeY(2.6f) - decodeY(2.4f)); //height
+        return ellipse;
+    }
+
+    private Path2D decodePath24() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(0.4f));
+        path.curveTo(decodeAnchorX(1.0f, 1.0f), decodeAnchorY(0.4000000059604645f, -1.0f), decodeAnchorX(2.0f, -1.0f), decodeAnchorY(0.4000000059604645f, -1.0f), decodeX(2.0f), decodeY(0.4f));
+        path.curveTo(decodeAnchorX(2.0f, 1.0f), decodeAnchorY(0.4000000059604645f, 1.0f), decodeAnchorX(2.200000047683716f, 0.0f), decodeAnchorY(1.0f, -1.0f), decodeX(2.2f), decodeY(1.0f));
+        path.curveTo(decodeAnchorX(2.200000047683716f, 0.0f), decodeAnchorY(1.0f, 1.0f), decodeAnchorX(2.200000047683716f, 0.0f), decodeAnchorY(1.5f, -2.0f), decodeX(2.2f), decodeY(1.5f));
+        path.curveTo(decodeAnchorX(2.200000047683716f, 0.0f), decodeAnchorY(1.5f, 2.0f), decodeAnchorX(1.6666667461395264f, 1.0f), decodeAnchorY(1.8333332538604736f, 0.0f), decodeX(1.6666667f), decodeY(1.8333333f));
+        path.curveTo(decodeAnchorX(1.6666667461395264f, -1.0f), decodeAnchorY(1.8333332538604736f, 0.0f), decodeAnchorX(1.3333333730697632f, 1.0f), decodeAnchorY(1.8333332538604736f, 0.0f), decodeX(1.3333334f), decodeY(1.8333333f));
+        path.curveTo(decodeAnchorX(1.3333333730697632f, -1.0f), decodeAnchorY(1.8333332538604736f, 0.0f), decodeAnchorX(0.800000011920929f, 0.0f), decodeAnchorY(1.5f, 2.0f), decodeX(0.8f), decodeY(1.5f));
+        path.curveTo(decodeAnchorX(0.800000011920929f, 0.0f), decodeAnchorY(1.5f, -2.0f), decodeAnchorX(0.800000011920929f, 0.0f), decodeAnchorY(1.0f, 1.0f), decodeX(0.8f), decodeY(1.0f));
+        path.curveTo(decodeAnchorX(0.800000011920929f, 0.0f), decodeAnchorY(1.0f, -1.0f), decodeAnchorX(1.0f, -1.0f), decodeAnchorY(0.4000000059604645f, 1.0f), decodeX(1.0f), decodeY(0.4f));
+        path.closePath();
+        return path;
+    }
+
+    private Ellipse2D decodeEllipse2() {
+        ellipse.setFrame(decodeX(0.6f), //x
+                         decodeY(0.2f), //y
+                         decodeX(0.8f) - decodeX(0.6f), //width
+                         decodeY(0.4f) - decodeY(0.2f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse3() {
+        ellipse.setFrame(decodeX(2.2f), //x
+                         decodeY(0.2f), //y
+                         decodeX(2.4f) - decodeX(2.2f), //width
+                         decodeY(0.4f) - decodeY(0.2f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse4() {
+        ellipse.setFrame(decodeX(2.2f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.4f) - decodeX(2.2f), //width
+                         decodeY(1.1666666f) - decodeY(1.0f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse5() {
+        ellipse.setFrame(decodeX(2.2f), //x
+                         decodeY(1.6666667f), //y
+                         decodeX(2.4f) - decodeX(2.2f), //width
+                         decodeY(1.8333333f) - decodeY(1.6666667f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse6() {
+        ellipse.setFrame(decodeX(0.6f), //x
+                         decodeY(1.6666667f), //y
+                         decodeX(0.8f) - decodeX(0.6f), //width
+                         decodeY(1.8333333f) - decodeY(1.6666667f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse7() {
+        ellipse.setFrame(decodeX(0.6f), //x
+                         decodeY(1.0f), //y
+                         decodeX(0.8f) - decodeX(0.6f), //width
+                         decodeY(1.1666666f) - decodeY(1.0f)); //height
+        return ellipse;
+    }
+
+    private Rectangle2D decodeRect11() {
+            rect.setRect(decodeX(0.8f), //x
+                         decodeY(2.2f), //y
+                         decodeX(1.0f) - decodeX(0.8f), //width
+                         decodeY(2.6f) - decodeY(2.2f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect12() {
+            rect.setRect(decodeX(1.1666666f), //x
+                         decodeY(2.2f), //y
+                         decodeX(1.3333334f) - decodeX(1.1666666f), //width
+                         decodeY(2.6f) - decodeY(2.2f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect13() {
+            rect.setRect(decodeX(1.5f), //x
+                         decodeY(2.2f), //y
+                         decodeX(1.6666667f) - decodeX(1.5f), //width
+                         decodeY(2.6f) - decodeY(2.2f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath25() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.2f));
+        path.lineTo(decodeX(0.2f), decodeY(0.0f));
+        path.lineTo(decodeX(2.6f), decodeY(0.0f));
+        path.lineTo(decodeX(3.0f), decodeY(0.4f));
+        path.lineTo(decodeX(3.0f), decodeY(2.8f));
+        path.lineTo(decodeX(2.8f), decodeY(3.0f));
+        path.lineTo(decodeX(0.2f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(2.8f));
+        path.lineTo(decodeX(0.0f), decodeY(0.2f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath26() {
+        path.reset();
+        path.moveTo(decodeX(0.2f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(0.2f));
+        path.lineTo(decodeX(2.4f), decodeY(0.2f));
+        path.lineTo(decodeX(2.8f), decodeY(0.6f));
+        path.lineTo(decodeX(2.8f), decodeY(2.8f));
+        path.lineTo(decodeX(0.2f), decodeY(2.8f));
+        path.lineTo(decodeX(0.2f), decodeY(0.4f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath27() {
+        path.reset();
+        path.moveTo(decodeX(0.8f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.0f), decodeY(1.5f));
+        path.lineTo(decodeX(2.0f), decodeY(1.5f));
+        path.lineTo(decodeX(2.2f), decodeY(1.6666667f));
+        path.lineTo(decodeX(2.2f), decodeY(2.6f));
+        path.lineTo(decodeX(0.8f), decodeY(2.6f));
+        path.lineTo(decodeX(0.8f), decodeY(1.6666667f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath28() {
+        path.reset();
+        path.moveTo(decodeX(1.1666666f), decodeY(0.2f));
+        path.lineTo(decodeX(1.1666666f), decodeY(1.1666666f));
+        path.lineTo(decodeX(2.2f), decodeY(1.1666666f));
+        path.lineTo(decodeX(2.2f), decodeY(0.4f));
+        path.lineTo(decodeX(2.0f), decodeY(0.4f));
+        path.lineTo(decodeX(2.0f), decodeY(1.0f));
+        path.lineTo(decodeX(1.6666667f), decodeY(1.0f));
+        path.lineTo(decodeX(1.6666667f), decodeY(0.4f));
+        path.lineTo(decodeX(2.2f), decodeY(0.4f));
+        path.lineTo(decodeX(2.2f), decodeY(0.2f));
+        path.lineTo(decodeX(1.1666666f), decodeY(0.2f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath29() {
+        path.reset();
+        path.moveTo(decodeX(0.8f), decodeY(0.2f));
+        path.lineTo(decodeX(1.0f), decodeY(0.2f));
+        path.lineTo(decodeX(1.0f), decodeY(1.0f));
+        path.lineTo(decodeX(1.3333334f), decodeY(1.0f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.2f));
+        path.lineTo(decodeX(1.5f), decodeY(0.2f));
+        path.lineTo(decodeX(1.5f), decodeY(1.0f));
+        path.lineTo(decodeX(1.6666667f), decodeY(1.0f));
+        path.lineTo(decodeX(1.6666667f), decodeY(1.1666666f));
+        path.lineTo(decodeX(0.8f), decodeY(1.1666666f));
+        path.lineTo(decodeX(0.8f), decodeY(0.2f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect14() {
+            rect.setRect(decodeX(0.8f), //x
+                         decodeY(2.6f), //y
+                         decodeX(2.2f) - decodeX(0.8f), //width
+                         decodeY(2.8f) - decodeY(2.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect15() {
+            rect.setRect(decodeX(0.36153847f), //x
+                         decodeY(2.3576922f), //y
+                         decodeX(0.63461536f) - decodeX(0.36153847f), //width
+                         decodeY(2.6807692f) - decodeY(2.3576922f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect16() {
+            rect.setRect(decodeX(2.376923f), //x
+                         decodeY(2.3807693f), //y
+                         decodeX(2.6384616f) - decodeX(2.376923f), //width
+                         decodeY(2.6846154f) - decodeY(2.3807693f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect17() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(2.4f), //y
+                         decodeX(0.6f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(2.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect18() {
+            rect.setRect(decodeX(2.4f), //x
+                         decodeY(2.4f), //y
+                         decodeX(2.6f) - decodeX(2.4f), //width
+                         decodeY(2.6f) - decodeY(2.4f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath30() {
+        path.reset();
+        path.moveTo(decodeX(0.4f), decodeY(1.5f));
+        path.lineTo(decodeX(0.4f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6f), decodeY(2.8f));
+        path.lineTo(decodeX(2.4f), decodeY(2.8f));
+        path.lineTo(decodeX(2.6f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(1.5f));
+        path.lineTo(decodeX(0.4f), decodeY(1.5f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath31() {
+        path.reset();
+        path.moveTo(decodeX(0.6f), decodeY(1.5f));
+        path.lineTo(decodeX(0.6f), decodeY(2.6f));
+        path.lineTo(decodeX(2.4f), decodeY(2.6f));
+        path.lineTo(decodeX(2.4f), decodeY(1.5f));
+        path.lineTo(decodeX(1.5f), decodeY(0.8f));
+        path.lineTo(decodeX(0.6f), decodeY(1.5f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect19() {
+            rect.setRect(decodeX(1.6666667f), //x
+                         decodeY(1.6666667f), //y
+                         decodeX(2.2f) - decodeX(1.6666667f), //width
+                         decodeY(2.2f) - decodeY(1.6666667f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect20() {
+            rect.setRect(decodeX(1.8333333f), //x
+                         decodeY(1.8333333f), //y
+                         decodeX(2.0f) - decodeX(1.8333333f), //width
+                         decodeY(2.0f) - decodeY(1.8333333f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath32() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(2.8f));
+        path.lineTo(decodeX(1.5f), decodeY(2.8f));
+        path.lineTo(decodeX(1.5f), decodeY(1.8333333f));
+        path.lineTo(decodeX(1.3333334f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.1666666f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.0f), decodeY(1.8333333f));
+        path.lineTo(decodeX(1.0f), decodeY(2.8f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect21() {
+            rect.setRect(decodeX(1.1666666f), //x
+                         decodeY(1.8333333f), //y
+                         decodeX(1.3333334f) - decodeX(1.1666666f), //width
+                         decodeY(2.6f) - decodeY(1.8333333f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath33() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(1.3333334f));
+        path.lineTo(decodeX(0.0f), decodeY(1.6666667f));
+        path.lineTo(decodeX(0.4f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.3974359f), decodeY(0.6f));
+        path.lineTo(decodeX(1.596154f), decodeY(0.6f));
+        path.lineTo(decodeX(2.6f), decodeY(1.6666667f));
+        path.lineTo(decodeX(3.0f), decodeY(1.6666667f));
+        path.lineTo(decodeX(3.0f), decodeY(1.3333334f));
+        path.lineTo(decodeX(1.6666667f), decodeY(0.0f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(1.3333334f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath34() {
+        path.reset();
+        path.moveTo(decodeX(0.2576923f), decodeY(1.3717948f));
+        path.lineTo(decodeX(0.2f), decodeY(1.5f));
+        path.lineTo(decodeX(0.3230769f), decodeY(1.4711539f));
+        path.lineTo(decodeX(1.4006411f), decodeY(0.40384617f));
+        path.lineTo(decodeX(1.5929487f), decodeY(0.4f));
+        path.lineTo(decodeX(2.6615386f), decodeY(1.4615384f));
+        path.lineTo(decodeX(2.8f), decodeY(1.5f));
+        path.lineTo(decodeX(2.7461538f), decodeY(1.3653846f));
+        path.lineTo(decodeX(1.6089742f), decodeY(0.19615385f));
+        path.lineTo(decodeX(1.4070512f), decodeY(0.2f));
+        path.lineTo(decodeX(0.2576923f), decodeY(1.3717948f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath35() {
+        path.reset();
+        path.moveTo(decodeX(0.6f), decodeY(1.5f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.6f));
+        path.lineTo(decodeX(1.5f), decodeY(0.6f));
+        path.lineTo(decodeX(1.5f), decodeY(1.1666666f));
+        path.lineTo(decodeX(1.0f), decodeY(1.6666667f));
+        path.lineTo(decodeX(0.6f), decodeY(1.6666667f));
+        path.lineTo(decodeX(0.6f), decodeY(1.5f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath36() {
+        path.reset();
+        path.moveTo(decodeX(1.6666667f), decodeY(0.6f));
+        path.lineTo(decodeX(1.5f), decodeY(0.6f));
+        path.lineTo(decodeX(1.5f), decodeY(1.1666666f));
+        path.lineTo(decodeX(2.0f), decodeY(1.6666667f));
+        path.lineTo(decodeX(2.4f), decodeY(1.6666667f));
+        path.lineTo(decodeX(2.4f), decodeY(1.3333334f));
+        path.lineTo(decodeX(1.6666667f), decodeY(0.6f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect22() {
+            rect.setRect(decodeX(0.2f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(0.2f), //width
+                         decodeY(2.8f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect23() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(0.2f), //y
+                         decodeX(2.8f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(0.2f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect24() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(0.6f), //y
+                         decodeX(1.3333334f) - decodeX(1.0f), //width
+                         decodeY(0.8f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect25() {
+            rect.setRect(decodeX(1.5f), //x
+                         decodeY(1.3333334f), //y
+                         decodeX(2.4f) - decodeX(1.5f), //width
+                         decodeY(1.5f) - decodeY(1.3333334f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect26() {
+            rect.setRect(decodeX(1.5f), //x
+                         decodeY(2.0f), //y
+                         decodeX(2.4f) - decodeX(1.5f), //width
+                         decodeY(2.2f) - decodeY(2.0f)); //height
+        return rect;
+    }
+
+    private Ellipse2D decodeEllipse8() {
+        ellipse.setFrame(decodeX(0.6f), //x
+                         decodeY(0.8f), //y
+                         decodeX(2.2f) - decodeX(0.6f), //width
+                         decodeY(2.4f) - decodeY(0.8f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse9() {
+        ellipse.setFrame(decodeX(0.8f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.0f) - decodeX(0.8f), //width
+                         decodeY(2.2f) - decodeY(1.0f)); //height
+        return ellipse;
+    }
+
+    private Path2D decodePath37() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(2.8f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.4f), decodeY(3.0f));
+        path.lineTo(decodeX(1.0f), decodeY(2.2f));
+        path.lineTo(decodeX(0.8f), decodeY(1.8333333f));
+        path.lineTo(decodeX(0.0f), decodeY(2.8f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath38() {
+        path.reset();
+        path.moveTo(decodeX(0.1826087f), decodeY(2.7217393f));
+        path.lineTo(decodeX(0.2826087f), decodeY(2.8217392f));
+        path.lineTo(decodeX(1.0181159f), decodeY(2.095652f));
+        path.lineTo(decodeX(0.9130435f), decodeY(1.9891305f));
+        path.lineTo(decodeX(0.1826087f), decodeY(2.7217393f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect27() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.3333334f), //y
+                         decodeX(1.3333334f) - decodeX(1.0f), //width
+                         decodeY(1.5f) - decodeY(1.3333334f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect28() {
+            rect.setRect(decodeX(1.5f), //x
+                         decodeY(1.3333334f), //y
+                         decodeX(1.8333333f) - decodeX(1.5f), //width
+                         decodeY(1.5f) - decodeY(1.3333334f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect29() {
+            rect.setRect(decodeX(1.5f), //x
+                         decodeY(1.6666667f), //y
+                         decodeX(1.8333333f) - decodeX(1.5f), //width
+                         decodeY(1.8333333f) - decodeY(1.6666667f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect30() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.6666667f), //y
+                         decodeX(1.3333334f) - decodeX(1.0f), //width
+                         decodeY(1.8333333f) - decodeY(1.6666667f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect31() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(2.8f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect32() {
+            rect.setRect(decodeX(0.2f), //x
+                         decodeY(0.2f), //y
+                         decodeX(2.8f) - decodeX(0.2f), //width
+                         decodeY(2.6f) - decodeY(0.2f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect33() {
+            rect.setRect(decodeX(0.8f), //x
+                         decodeY(0.6f), //y
+                         decodeX(1.1666666f) - decodeX(0.8f), //width
+                         decodeY(0.8f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect34() {
+            rect.setRect(decodeX(1.3333334f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.2f) - decodeX(1.3333334f), //width
+                         decodeY(0.8f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect35() {
+            rect.setRect(decodeX(1.3333334f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.0f) - decodeX(1.3333334f), //width
+                         decodeY(1.1666666f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect36() {
+            rect.setRect(decodeX(0.8f), //x
+                         decodeY(1.0f), //y
+                         decodeX(1.1666666f) - decodeX(0.8f), //width
+                         decodeY(1.1666666f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect37() {
+            rect.setRect(decodeX(0.8f), //x
+                         decodeY(1.3333334f), //y
+                         decodeX(1.1666666f) - decodeX(0.8f), //width
+                         decodeY(1.5f) - decodeY(1.3333334f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect38() {
+            rect.setRect(decodeX(1.3333334f), //x
+                         decodeY(1.3333334f), //y
+                         decodeX(2.2f) - decodeX(1.3333334f), //width
+                         decodeY(1.5f) - decodeY(1.3333334f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect39() {
+            rect.setRect(decodeX(0.8f), //x
+                         decodeY(1.6666667f), //y
+                         decodeX(1.1666666f) - decodeX(0.8f), //width
+                         decodeY(1.8333333f) - decodeY(1.6666667f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect40() {
+            rect.setRect(decodeX(1.3333334f), //x
+                         decodeY(1.6666667f), //y
+                         decodeX(2.0f) - decodeX(1.3333334f), //width
+                         decodeY(1.8333333f) - decodeY(1.6666667f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect41() {
+            rect.setRect(decodeX(1.3333334f), //x
+                         decodeY(2.0f), //y
+                         decodeX(2.2f) - decodeX(1.3333334f), //width
+                         decodeY(2.2f) - decodeY(2.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect42() {
+            rect.setRect(decodeX(0.8f), //x
+                         decodeY(2.0f), //y
+                         decodeX(1.1666666f) - decodeX(0.8f), //width
+                         decodeY(2.2f) - decodeY(2.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect43() {
+            rect.setRect(decodeX(0.8f), //x
+                         decodeY(0.8f), //y
+                         decodeX(1.1666666f) - decodeX(0.8f), //width
+                         decodeY(1.0f) - decodeY(0.8f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect44() {
+            rect.setRect(decodeX(1.3333334f), //x
+                         decodeY(0.8f), //y
+                         decodeX(2.2f) - decodeX(1.3333334f), //width
+                         decodeY(1.0f) - decodeY(0.8f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect45() {
+            rect.setRect(decodeX(0.8f), //x
+                         decodeY(1.1666666f), //y
+                         decodeX(1.1666666f) - decodeX(0.8f), //width
+                         decodeY(1.3333334f) - decodeY(1.1666666f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect46() {
+            rect.setRect(decodeX(1.3333334f), //x
+                         decodeY(1.1666666f), //y
+                         decodeX(2.0f) - decodeX(1.3333334f), //width
+                         decodeY(1.3333334f) - decodeY(1.1666666f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect47() {
+            rect.setRect(decodeX(0.8f), //x
+                         decodeY(1.5f), //y
+                         decodeX(1.1666666f) - decodeX(0.8f), //width
+                         decodeY(1.6666667f) - decodeY(1.5f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect48() {
+            rect.setRect(decodeX(1.3333334f), //x
+                         decodeY(1.5f), //y
+                         decodeX(2.2f) - decodeX(1.3333334f), //width
+                         decodeY(1.6666667f) - decodeY(1.5f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect49() {
+            rect.setRect(decodeX(1.3333334f), //x
+                         decodeY(1.8333333f), //y
+                         decodeX(2.0f) - decodeX(1.3333334f), //width
+                         decodeY(2.0f) - decodeY(1.8333333f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect50() {
+            rect.setRect(decodeX(0.8f), //x
+                         decodeY(1.8333333f), //y
+                         decodeX(1.1666666f) - decodeX(0.8f), //width
+                         decodeY(2.0f) - decodeY(1.8333333f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect51() {
+            rect.setRect(decodeX(0.8f), //x
+                         decodeY(2.2f), //y
+                         decodeX(1.1666666f) - decodeX(0.8f), //width
+                         decodeY(2.4f) - decodeY(2.2f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect52() {
+            rect.setRect(decodeX(1.3333334f), //x
+                         decodeY(2.2f), //y
+                         decodeX(2.2f) - decodeX(1.3333334f), //width
+                         decodeY(2.4f) - decodeY(2.2f)); //height
+        return rect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.046296295f * w) + x, (0.9675926f * h) + y, (0.4861111f * w) + x, (0.5324074f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.04191617f,0.10329342f,0.16467066f,0.24550897f,0.3263473f,0.6631737f,1.0f },
+                new Color[] { color11,
+                            decodeColor(color11,color12,0.5f),
+                            color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color6,
+                            decodeColor(color6,color15,0.5f),
+                            color15});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color19,
+                            decodeColor(color19,color20,0.5f),
+                            color20});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.12724552f,0.25449103f,0.62724555f,1.0f },
+                new Color[] { color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22,
+                            decodeColor(color22,color23,0.5f),
+                            color23});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.06392045f,0.1278409f,0.5213069f,0.91477275f },
+                new Color[] { color25,
+                            decodeColor(color25,color26,0.5f),
+                            color26,
+                            decodeColor(color26,color27,0.5f),
+                            color27});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.048295453f,0.09659091f,0.5482955f,1.0f },
+                new Color[] { color28,
+                            decodeColor(color28,color6,0.5f),
+                            color6,
+                            decodeColor(color6,color15,0.5f),
+                            color15});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color29,
+                            decodeColor(color29,color30,0.5f),
+                            color30});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.06534091f,0.13068181f,0.3096591f,0.48863637f,0.7443182f,1.0f },
+                new Color[] { color11,
+                            decodeColor(color11,color12,0.5f),
+                            color12,
+                            decodeColor(color12,color31,0.5f),
+                            color31,
+                            decodeColor(color31,color14,0.5f),
+                            color14});
+    }
+
+    private Paint decodeGradient11(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color33,
+                            decodeColor(color33,color34,0.5f),
+                            color34});
+    }
+
+    private Paint decodeGradient12(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color36,
+                            decodeColor(color36,color37,0.5f),
+                            color37});
+    }
+
+    private Paint decodeRadial1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeRadialGradient((0.5f * w) + x, (1.0f * h) + y, 0.53913116f,
+                new float[] { 0.11290322f,0.17419355f,0.23548387f,0.31129032f,0.38709676f,0.47903225f,0.57096773f },
+                new Color[] { color40,
+                            decodeColor(color40,color41,0.5f),
+                            color41,
+                            decodeColor(color41,color41,0.5f),
+                            color41,
+                            decodeColor(color41,color42,0.5f),
+                            color42});
+    }
+
+    private Paint decodeGradient13(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color45,
+                            decodeColor(color45,color46,0.5f),
+                            color46});
+    }
+
+    private Paint decodeGradient14(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color47,
+                            decodeColor(color47,color48,0.5f),
+                            color48});
+    }
+
+    private Paint decodeGradient15(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.3983871f,0.7967742f,0.8983871f,1.0f },
+                new Color[] { color51,
+                            decodeColor(color51,color52,0.5f),
+                            color52,
+                            decodeColor(color52,color51,0.5f),
+                            color51});
+    }
+
+    private Paint decodeGradient16(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.061290324f,0.12258065f,0.5016129f,0.88064516f,0.9403226f,1.0f },
+                new Color[] { color57,
+                            decodeColor(color57,color58,0.5f),
+                            color58,
+                            decodeColor(color58,color59,0.5f),
+                            color59,
+                            decodeColor(color59,color44,0.5f),
+                            color44});
+    }
+
+    private Paint decodeGradient17(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.05f,0.1f,0.19193548f,0.28387097f,0.5209677f,0.7580645f,0.87903225f,1.0f },
+                new Color[] { color60,
+                            decodeColor(color60,color61,0.5f),
+                            color61,
+                            decodeColor(color61,color62,0.5f),
+                            color62,
+                            decodeColor(color62,color63,0.5f),
+                            color63,
+                            decodeColor(color63,color64,0.5f),
+                            color64});
+    }
+
+    private Paint decodeGradient18(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.058064517f,0.090322584f,0.12258065f,0.15645161f,0.19032258f,0.22741935f,0.26451612f,0.31290323f,0.36129034f,0.38225806f,0.4032258f,0.4596774f,0.516129f,0.54193544f,0.56774193f,0.61451614f,0.66129035f,0.70645165f,0.7516129f },
+                new Color[] { color65,
+                            decodeColor(color65,color40,0.5f),
+                            color40,
+                            decodeColor(color40,color40,0.5f),
+                            color40,
+                            decodeColor(color40,color65,0.5f),
+                            color65,
+                            decodeColor(color65,color65,0.5f),
+                            color65,
+                            decodeColor(color65,color40,0.5f),
+                            color40,
+                            decodeColor(color40,color40,0.5f),
+                            color40,
+                            decodeColor(color40,color66,0.5f),
+                            color66,
+                            decodeColor(color66,color66,0.5f),
+                            color66,
+                            decodeColor(color66,color40,0.5f),
+                            color40});
+    }
+
+    private Paint decodeGradient19(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color67,
+                            decodeColor(color67,color67,0.5f),
+                            color67});
+    }
+
+    private Paint decodeGradient20(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color74,
+                            decodeColor(color74,color75,0.5f),
+                            color75});
+    }
+
+    private Paint decodeGradient21(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color77,
+                            decodeColor(color77,color78,0.5f),
+                            color78});
+    }
+
+    private Paint decodeGradient22(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color79,
+                            decodeColor(color79,color80,0.5f),
+                            color80});
+    }
+
+    private Paint decodeGradient23(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color81,
+                            decodeColor(color81,color82,0.5f),
+                            color82});
+    }
+
+    private Paint decodeGradient24(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.43076923f * w) + x, (0.37820512f * h) + y, (0.7076923f * w) + x, (0.6730769f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color84,
+                            decodeColor(color84,color85,0.5f),
+                            color85});
+    }
+
+    private Paint decodeGradient25(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.63076925f * w) + x, (0.3621795f * h) + y, (0.28846154f * w) + x, (0.73397434f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color84,
+                            decodeColor(color84,color86,0.5f),
+                            color86});
+    }
+
+    private Paint decodeGradient26(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color87,
+                            decodeColor(color87,color88,0.5f),
+                            color88});
+    }
+
+    private Paint decodeGradient27(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.056818184f,0.11363637f,0.34232956f,0.57102275f,0.7855114f,1.0f },
+                new Color[] { color89,
+                            decodeColor(color89,color90,0.5f),
+                            color90,
+                            decodeColor(color90,color91,0.5f),
+                            color91,
+                            decodeColor(color91,color92,0.5f),
+                            color92});
+    }
+
+    private Paint decodeGradient28(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.75f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color95,
+                            decodeColor(color95,color96,0.5f),
+                            color96});
+    }
+
+    private Paint decodeRadial2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeRadialGradient((0.49223602f * w) + x, (0.9751553f * h) + y, 0.73615754f,
+                new float[] { 0.0f,0.40625f,1.0f },
+                new Color[] { color97,
+                            decodeColor(color97,color98,0.5f),
+                            color98});
+    }
+
+    private Paint decodeGradient29(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.0f * w) + x, (0.0f * h) + y, (1.0f * w) + x, (1.0f * h) + y,
+                new float[] { 0.38352272f,0.4190341f,0.45454547f,0.484375f,0.51420456f },
+                new Color[] { color99,
+                            decodeColor(color99,color100,0.5f),
+                            color100,
+                            decodeColor(color100,color101,0.5f),
+                            color101});
+    }
+
+    private Paint decodeGradient30(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((1.0f * w) + x, (0.0f * h) + y, (0.0f * w) + x, (1.0f * h) + y,
+                new float[] { 0.12215909f,0.16051137f,0.19886364f,0.2627841f,0.32670453f,0.43039775f,0.53409094f },
+                new Color[] { color102,
+                            decodeColor(color102,color35,0.5f),
+                            color35,
+                            decodeColor(color35,color35,0.5f),
+                            color35,
+                            decodeColor(color35,color103,0.5f),
+                            color103});
+    }
+
+    private Paint decodeGradient31(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.038352273f,0.07670455f,0.24289773f,0.4090909f,0.7045455f,1.0f },
+                new Color[] { color89,
+                            decodeColor(color89,color90,0.5f),
+                            color90,
+                            decodeColor(color90,color108,0.5f),
+                            color108,
+                            decodeColor(color108,color92,0.5f),
+                            color92});
+    }
+
+    private Paint decodeGradient32(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.0f * w) + x, (0.0f * h) + y, (1.0f * w) + x, (1.0f * h) + y,
+                new float[] { 0.25f,0.33522725f,0.42045453f,0.50142044f,0.5823864f },
+                new Color[] { color109,
+                            decodeColor(color109,color110,0.5f),
+                            color110,
+                            decodeColor(color110,color109,0.5f),
+                            color109});
+    }
+
+    private Paint decodeGradient33(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.75f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.24147727f,0.48295453f,0.74147725f,1.0f },
+                new Color[] { color114,
+                            decodeColor(color114,color115,0.5f),
+                            color115,
+                            decodeColor(color115,color114,0.5f),
+                            color114});
+    }
+
+    private Paint decodeGradient34(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.0f * w) + x, (0.0f * h) + y, (1.0f * w) + x, (0.0f * h) + y,
+                new float[] { 0.0f,0.21732955f,0.4346591f },
+                new Color[] { color117,
+                            decodeColor(color117,color118,0.5f),
+                            color118});
+    }
+
+    private Paint decodeGradient35(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.0f * w) + x, (0.0f * h) + y, (1.0f * w) + x, (0.0f * h) + y,
+                new float[] { 0.0f,0.21448864f,0.42897728f,0.7144886f,1.0f },
+                new Color[] { color119,
+                            decodeColor(color119,color120,0.5f),
+                            color120,
+                            decodeColor(color120,color119,0.5f),
+                            color119});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/FormattedTextFieldPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,381 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class FormattedTextFieldPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of FormattedTextFieldPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_SELECTED = 3;
+    static final int BORDER_DISABLED = 4;
+    static final int BORDER_FOCUSED = 5;
+    static final int BORDER_ENABLED = 6;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of FormattedTextFieldPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.015872955f, -0.07995863f, 0.15294117f, 0);
+    private Color color2 = decodeColor("nimbusLightBackground", 0.0f, 0.0f, 0.0f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", -0.006944418f, -0.07187897f, 0.06666666f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07826825f, 0.10588235f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07856284f, 0.11372548f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07796818f, 0.09803921f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.0965403f, -0.18431371f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.1048766f, -0.05098039f, 0);
+    private Color color9 = decodeColor("nimbusLightBackground", 0.6666667f, 0.004901961f, -0.19999999f, 0);
+    private Color color10 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10512091f, -0.019607842f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.105344966f, 0.011764705f, 0);
+    private Color color12 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public FormattedTextFieldPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_SELECTED: paintBackgroundSelected(g); break;
+            case BORDER_DISABLED: paintBorderDisabled(g); break;
+            case BORDER_FOCUSED: paintBorderFocused(g); break;
+            case BORDER_ENABLED: paintBorderEnabled(g); break;
+
+        }
+    }
+        
+    protected Object[] getExtendedCacheKeys(JComponent c) {
+        Object[] extendedCacheKeys = null;
+        switch(state) {
+            case BACKGROUND_ENABLED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)};
+                break;
+            case BORDER_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color9, 0.004901961f, -0.19999999f, 0),
+                     getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)};
+                break;
+            case BORDER_ENABLED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color9, 0.004901961f, -0.19999999f, 0),
+                     getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)};
+                break;
+        }
+        return extendedCacheKeys;
+    }
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint((Color)componentColors[0]);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundSelected(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color2);
+        g.fill(rect);
+
+    }
+
+    private void paintBorderDisabled(Graphics2D g) {
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color6);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color4);
+        g.fill(rect);
+        rect = decodeRect6();
+        g.setPaint(color4);
+        g.fill(rect);
+
+    }
+
+    private void paintBorderFocused(Graphics2D g) {
+        rect = decodeRect7();
+        g.setPaint(decodeGradient3(rect));
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect9();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect11();
+        g.setPaint(color11);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color12);
+        g.fill(path);
+
+    }
+
+    private void paintBorderEnabled(Graphics2D g) {
+        rect = decodeRect7();
+        g.setPaint(decodeGradient5(rect));
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect9();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect11();
+        g.setPaint(color11);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.3333333f) - decodeX(0.6666667f), //width
+                         decodeY(1.0f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(1.0f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(1.0f), //y
+                         decodeX(1.0f) - decodeX(0.6666667f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect5() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(2.3333333f), //y
+                         decodeX(2.3333333f) - decodeX(0.6666667f), //width
+                         decodeY(2.0f) - decodeY(2.3333333f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect6() {
+            rect.setRect(decodeX(2.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.3333333f) - decodeX(2.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect7() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(1.0f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect8() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.4f) - decodeX(0.6f), //width
+                         decodeY(1.0f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect9() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(1.0f), //y
+                         decodeX(0.6f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect10() {
+            rect.setRect(decodeX(2.4f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.6f) - decodeX(2.4f), //width
+                         decodeY(2.6f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect11() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(2.4f), //y
+                         decodeX(2.4f) - decodeX(0.6f), //width
+                         decodeY(2.6f) - decodeY(2.4f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.4f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(0.4f));
+        path.curveTo(decodeAnchorX(2.5999999046325684f, 0.0f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeAnchorX(2.880000352859497f, 0.09999999999999432f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeX(2.8800004f), decodeY(0.4f));
+        path.curveTo(decodeAnchorX(2.880000352859497f, 0.09999999999999432f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeAnchorX(2.880000352859497f, 0.0f), decodeAnchorY(2.879999876022339f, 0.0f), decodeX(2.8800004f), decodeY(2.8799999f));
+        path.lineTo(decodeX(0.120000005f), decodeY(2.8799999f));
+        path.lineTo(decodeX(0.120000005f), decodeY(0.120000005f));
+        path.lineTo(decodeX(2.8800004f), decodeY(0.120000005f));
+        path.lineTo(decodeX(2.8800004f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(0.4f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color5,
+                            decodeColor(color5,color1,0.5f),
+                            color1});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (0.1625f * h) + y,
+                new float[] { 0.1f,0.49999997f,0.9f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.1f,0.49999997f,0.9f },
+                new Color[] { (Color)componentColors[0],
+                            decodeColor((Color)componentColors[0],(Color)componentColors[1],0.5f),
+                            (Color)componentColors[1]});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.1f,0.49999997f,0.9f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,463 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_MOUSEOVER = 3;
+    static final int BACKGROUND_PRESSED = 4;
+    static final int BACKGROUND_ENABLED_WINDOWNOTFOCUSED = 5;
+    static final int BACKGROUND_MOUSEOVER_WINDOWNOTFOCUSED = 6;
+    static final int BACKGROUND_PRESSED_WINDOWNOTFOCUSED = 7;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusRed", 0.5893519f, -0.75736576f, 0.09411764f, 0);
+    private Color color2 = decodeColor("nimbusRed", 0.5962963f, -0.71005917f, 0.0f, 0);
+    private Color color3 = decodeColor("nimbusRed", 0.6005698f, -0.7200287f, -0.015686274f, -122);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.062449392f, 0.07058823f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.0029994324f, -0.38039216f, -185);
+    private Color color6 = decodeColor("nimbusRed", -0.014814814f, 0.20118344f, -0.4431373f, 0);
+    private Color color7 = decodeColor("nimbusRed", -2.7342606E-4f, 0.13829035f, -0.039215684f, 0);
+    private Color color8 = decodeColor("nimbusRed", 6.890595E-4f, -0.36665577f, 0.11764705f, 0);
+    private Color color9 = decodeColor("nimbusRed", -0.001021713f, 0.101804554f, -0.031372547f, 0);
+    private Color color10 = decodeColor("nimbusRed", -2.7342606E-4f, 0.13243341f, -0.035294116f, 0);
+    private Color color11 = decodeColor("nimbusRed", -2.7342606E-4f, 0.002258718f, 0.06666666f, 0);
+    private Color color12 = decodeColor("nimbusRed", 0.0056530247f, 0.0040003657f, -0.38431373f, -122);
+    private Color color13 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color14 = decodeColor("nimbusRed", -0.014814814f, 0.20118344f, -0.3882353f, 0);
+    private Color color15 = decodeColor("nimbusRed", -0.014814814f, 0.20118344f, -0.13333333f, 0);
+    private Color color16 = decodeColor("nimbusRed", 6.890595E-4f, -0.38929275f, 0.1607843f, 0);
+    private Color color17 = decodeColor("nimbusRed", 2.537202E-5f, 0.012294531f, 0.043137252f, 0);
+    private Color color18 = decodeColor("nimbusRed", -2.7342606E-4f, 0.033585668f, 0.039215684f, 0);
+    private Color color19 = decodeColor("nimbusRed", -2.7342606E-4f, -0.07198727f, 0.14117646f, 0);
+    private Color color20 = decodeColor("nimbusRed", -0.014814814f, 0.20118344f, 0.0039215684f, -122);
+    private Color color21 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -140);
+    private Color color22 = decodeColor("nimbusRed", -0.014814814f, 0.20118344f, -0.49411768f, 0);
+    private Color color23 = decodeColor("nimbusRed", -0.014814814f, 0.20118344f, -0.20392159f, 0);
+    private Color color24 = decodeColor("nimbusRed", -0.014814814f, -0.21260965f, 0.019607842f, 0);
+    private Color color25 = decodeColor("nimbusRed", -0.014814814f, 0.17340565f, -0.09803921f, 0);
+    private Color color26 = decodeColor("nimbusRed", -0.014814814f, 0.20118344f, -0.10588235f, 0);
+    private Color color27 = decodeColor("nimbusRed", -0.014814814f, 0.20118344f, -0.04705882f, 0);
+    private Color color28 = decodeColor("nimbusRed", -0.014814814f, 0.20118344f, -0.31764707f, -122);
+    private Color color29 = decodeColor("nimbusRed", 0.5962963f, -0.6994788f, -0.07058823f, 0);
+    private Color color30 = decodeColor("nimbusRed", 0.5962963f, -0.66245294f, -0.23137257f, 0);
+    private Color color31 = decodeColor("nimbusRed", 0.58518517f, -0.77649516f, 0.21568626f, 0);
+    private Color color32 = decodeColor("nimbusRed", 0.5962963f, -0.7372781f, 0.10196078f, 0);
+    private Color color33 = decodeColor("nimbusRed", 0.5962963f, -0.73911506f, 0.12549019f, 0);
+    private Color color34 = decodeColor("nimbusBlueGrey", 0.0f, -0.027957506f, -0.31764707f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_PRESSED: paintBackgroundPressed(g); break;
+            case BACKGROUND_ENABLED_WINDOWNOTFOCUSED: paintBackgroundEnabledAndWindowNotFocused(g); break;
+            case BACKGROUND_MOUSEOVER_WINDOWNOTFOCUSED: paintBackgroundMouseOverAndWindowNotFocused(g); break;
+            case BACKGROUND_PRESSED_WINDOWNOTFOCUSED: paintBackgroundPressedAndWindowNotFocused(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(color3);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color4);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        roundRect = decodeRoundRect2();
+        g.setPaint(color5);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(color12);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color13);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        roundRect = decodeRoundRect2();
+        g.setPaint(color5);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect4();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(color20);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color13);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundPressed(Graphics2D g) {
+        roundRect = decodeRoundRect2();
+        g.setPaint(color21);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(color28);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color13);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabledAndWindowNotFocused(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient9(roundRect));
+        g.fill(roundRect);
+        path = decodePath2();
+        g.setPaint(color34);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOverAndWindowNotFocused(Graphics2D g) {
+        roundRect = decodeRoundRect2();
+        g.setPaint(color5);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect4();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(color20);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color13);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundPressedAndWindowNotFocused(Graphics2D g) {
+        roundRect = decodeRoundRect2();
+        g.setPaint(color21);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(color28);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color13);
+        g.fill(path);
+
+    }
+
+
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(1.0f), //x
+                               decodeY(1.0f), //y
+                               decodeX(2.0f) - decodeX(1.0f), //width
+                               decodeY(1.9444444f) - decodeY(1.0f), //height
+                               8.6f, 8.6f); //rounding
+        return roundRect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(1.25f), decodeY(1.7373737f));
+        path.lineTo(decodeX(1.3002392f), decodeY(1.794192f));
+        path.lineTo(decodeX(1.5047847f), decodeY(1.5909091f));
+        path.lineTo(decodeX(1.6842105f), decodeY(1.7954545f));
+        path.lineTo(decodeX(1.7595694f), decodeY(1.719697f));
+        path.lineTo(decodeX(1.5956938f), decodeY(1.5239899f));
+        path.lineTo(decodeX(1.7535884f), decodeY(1.3409091f));
+        path.lineTo(decodeX(1.6830144f), decodeY(1.2537879f));
+        path.lineTo(decodeX(1.5083733f), decodeY(1.4406565f));
+        path.lineTo(decodeX(1.3301436f), decodeY(1.2563131f));
+        path.lineTo(decodeX(1.257177f), decodeY(1.3320707f));
+        path.lineTo(decodeX(1.4270334f), decodeY(1.5252526f));
+        path.lineTo(decodeX(1.25f), decodeY(1.7373737f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(1.257177f), decodeY(1.2828283f));
+        path.lineTo(decodeX(1.3217703f), decodeY(1.2133838f));
+        path.lineTo(decodeX(1.5f), decodeY(1.4040405f));
+        path.lineTo(decodeX(1.673445f), decodeY(1.2108586f));
+        path.lineTo(decodeX(1.7440192f), decodeY(1.2853535f));
+        path.lineTo(decodeX(1.5669856f), decodeY(1.4709597f));
+        path.lineTo(decodeX(1.7488039f), decodeY(1.6527778f));
+        path.lineTo(decodeX(1.673445f), decodeY(1.7398989f));
+        path.lineTo(decodeX(1.4988039f), decodeY(1.5416667f));
+        path.lineTo(decodeX(1.3313397f), decodeY(1.7424242f));
+        path.lineTo(decodeX(1.2523923f), decodeY(1.6565657f));
+        path.lineTo(decodeX(1.4366028f), decodeY(1.4722222f));
+        path.lineTo(decodeX(1.257177f), decodeY(1.2828283f));
+        path.closePath();
+        return path;
+    }
+
+    private RoundRectangle2D decodeRoundRect2() {
+        roundRect.setRoundRect(decodeX(1.0f), //x
+                               decodeY(1.6111112f), //y
+                               decodeX(2.0f) - decodeX(1.0f), //width
+                               decodeY(2.0f) - decodeY(1.6111112f), //height
+                               6.0f, 6.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect3() {
+        roundRect.setRoundRect(decodeX(1.0526316f), //x
+                               decodeY(1.0530303f), //y
+                               decodeX(1.9473684f) - decodeX(1.0526316f), //width
+                               decodeY(1.8863636f) - decodeY(1.0530303f), //height
+                               6.75f, 6.75f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect4() {
+        roundRect.setRoundRect(decodeX(1.0526316f), //x
+                               decodeY(1.0517677f), //y
+                               decodeX(1.9473684f) - decodeX(1.0526316f), //width
+                               decodeY(1.8851011f) - decodeY(1.0517677f), //height
+                               6.75f, 6.75f); //rounding
+        return roundRect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color8,
+                            decodeColor(color8,color9,0.5f),
+                            color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color14,
+                            decodeColor(color14,color15,0.5f),
+                            color15});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.81480503f,0.97904193f },
+                new Color[] { color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18,
+                            decodeColor(color18,color19,0.5f),
+                            color19});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color22,
+                            decodeColor(color22,color23,0.5f),
+                            color23});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.81630206f,0.98203593f },
+                new Color[] { color24,
+                            decodeColor(color24,color25,0.5f),
+                            color25,
+                            decodeColor(color25,color26,0.5f),
+                            color26,
+                            decodeColor(color26,color27,0.5f),
+                            color27});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color29,
+                            decodeColor(color29,color30,0.5f),
+                            color30});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.24101797f,0.48203593f,0.5838324f,0.6856288f,0.8428144f,1.0f },
+                new Color[] { color31,
+                            decodeColor(color31,color32,0.5f),
+                            color32,
+                            decodeColor(color32,color32,0.5f),
+                            color32,
+                            decodeColor(color32,color33,0.5f),
+                            color33});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonWindowNotFocusedState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonWindowNotFocusedState extends State {
+    InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonWindowNotFocusedState() {
+        super("WindowNotFocused");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                               Component parent = c;
+                               while (parent.getParent() != null) {
+                                   if (parent instanceof JInternalFrame) {
+                                       break;
+                                   }
+                                   parent = parent.getParent();
+                               }
+                               if (parent instanceof JInternalFrame) {
+                                   return !(((JInternalFrame)parent).isSelected());
+                               }
+                               return false;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,606 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int BACKGROUND_DISABLED = 2;
+    static final int BACKGROUND_MOUSEOVER = 3;
+    static final int BACKGROUND_PRESSED = 4;
+    static final int BACKGROUND_ENABLED_WINDOWNOTFOCUSED = 5;
+    static final int BACKGROUND_MOUSEOVER_WINDOWNOTFOCUSED = 6;
+    static final int BACKGROUND_PRESSED_WINDOWNOTFOCUSED = 7;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.0029994324f, -0.38039216f, -185);
+    private Color color2 = decodeColor("nimbusOrange", -0.08377897f, 0.02094239f, -0.40392157f, 0);
+    private Color color3 = decodeColor("nimbusOrange", 0.0f, 0.0f, 0.0f, 0);
+    private Color color4 = decodeColor("nimbusOrange", -4.4563413E-4f, -0.48364475f, 0.10588235f, 0);
+    private Color color5 = decodeColor("nimbusOrange", 0.0f, -0.0050992966f, 0.0039215684f, 0);
+    private Color color6 = decodeColor("nimbusOrange", 0.0f, -0.12125945f, 0.10588235f, 0);
+    private Color color7 = decodeColor("nimbusOrange", -0.08377897f, 0.02094239f, -0.40392157f, -106);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color9 = decodeColor("nimbusOrange", 0.5203877f, -0.9376068f, 0.007843137f, 0);
+    private Color color10 = decodeColor("nimbusOrange", 0.5273321f, -0.8903002f, -0.086274505f, 0);
+    private Color color11 = decodeColor("nimbusOrange", 0.5273321f, -0.93313926f, 0.019607842f, 0);
+    private Color color12 = decodeColor("nimbusOrange", 0.53526866f, -0.8995122f, -0.058823526f, 0);
+    private Color color13 = decodeColor("nimbusOrange", 0.5233639f, -0.8971863f, -0.07843137f, 0);
+    private Color color14 = decodeColor("nimbusBlueGrey", -0.0808081f, 0.015910469f, -0.40392157f, -216);
+    private Color color15 = decodeColor("nimbusBlueGrey", -0.003968239f, -0.03760965f, 0.007843137f, 0);
+    private Color color16 = new Color(255, 200, 0, 255);
+    private Color color17 = decodeColor("nimbusOrange", -0.08377897f, 0.02094239f, -0.31764707f, 0);
+    private Color color18 = decodeColor("nimbusOrange", -0.02758849f, 0.02094239f, -0.062745094f, 0);
+    private Color color19 = decodeColor("nimbusOrange", -4.4563413E-4f, -0.5074419f, 0.1490196f, 0);
+    private Color color20 = decodeColor("nimbusOrange", 9.745359E-6f, -0.11175901f, 0.07843137f, 0);
+    private Color color21 = decodeColor("nimbusOrange", 0.0f, -0.09280169f, 0.07843137f, 0);
+    private Color color22 = decodeColor("nimbusOrange", 0.0f, -0.19002807f, 0.18039215f, 0);
+    private Color color23 = decodeColor("nimbusOrange", -0.025772434f, 0.02094239f, 0.05098039f, 0);
+    private Color color24 = decodeColor("nimbusOrange", -0.08377897f, 0.02094239f, -0.4f, 0);
+    private Color color25 = decodeColor("nimbusOrange", -0.053104125f, 0.02094239f, -0.109803915f, 0);
+    private Color color26 = decodeColor("nimbusOrange", -0.017887495f, -0.33726656f, 0.039215684f, 0);
+    private Color color27 = decodeColor("nimbusOrange", -0.018038228f, 0.02094239f, -0.043137252f, 0);
+    private Color color28 = decodeColor("nimbusOrange", -0.015844189f, 0.02094239f, -0.027450979f, 0);
+    private Color color29 = decodeColor("nimbusOrange", -0.010274701f, 0.02094239f, 0.015686274f, 0);
+    private Color color30 = decodeColor("nimbusOrange", -0.08377897f, 0.02094239f, -0.14509803f, -91);
+    private Color color31 = decodeColor("nimbusOrange", 0.5273321f, -0.87971985f, -0.15686274f, 0);
+    private Color color32 = decodeColor("nimbusOrange", 0.5273321f, -0.842694f, -0.31764707f, 0);
+    private Color color33 = decodeColor("nimbusOrange", 0.516221f, -0.9567362f, 0.12941176f, 0);
+    private Color color34 = decodeColor("nimbusOrange", 0.5222816f, -0.9229352f, 0.019607842f, 0);
+    private Color color35 = decodeColor("nimbusOrange", 0.5273321f, -0.91751915f, 0.015686274f, 0);
+    private Color color36 = decodeColor("nimbusOrange", 0.5273321f, -0.9193561f, 0.039215684f, 0);
+    private Color color37 = decodeColor("nimbusBlueGrey", -0.01111114f, -0.017933726f, -0.32156864f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_PRESSED: paintBackgroundPressed(g); break;
+            case BACKGROUND_ENABLED_WINDOWNOTFOCUSED: paintBackgroundEnabledAndWindowNotFocused(g); break;
+            case BACKGROUND_MOUSEOVER_WINDOWNOTFOCUSED: paintBackgroundMouseOverAndWindowNotFocused(g); break;
+            case BACKGROUND_PRESSED_WINDOWNOTFOCUSED: paintBackgroundPressedAndWindowNotFocused(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color7);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color8);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color14);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color15);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color23);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color8);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundPressed(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect4();
+        g.setPaint(color30);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color8);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabledAndWindowNotFocused(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient9(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color14);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color37);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundMouseOverAndWindowNotFocused(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color23);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color8);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundPressedAndWindowNotFocused(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect4();
+        g.setPaint(color30);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color8);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+
+    }
+
+
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(1.0f), //x
+                               decodeY(1.6111112f), //y
+                               decodeX(2.0f) - decodeX(1.0f), //width
+                               decodeY(2.0f) - decodeY(1.6111112f), //height
+                               6.0f, 6.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect2() {
+        roundRect.setRoundRect(decodeX(1.0f), //x
+                               decodeY(1.0f), //y
+                               decodeX(2.0f) - decodeX(1.0f), //width
+                               decodeY(1.9444444f) - decodeY(1.0f), //height
+                               8.6f, 8.6f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect3() {
+        roundRect.setRoundRect(decodeX(1.0526316f), //x
+                               decodeY(1.0555556f), //y
+                               decodeX(1.9473684f) - decodeX(1.0526316f), //width
+                               decodeY(1.8888888f) - decodeY(1.0555556f), //height
+                               6.75f, 6.75f); //rounding
+        return roundRect;
+    }
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.25f), //x
+                         decodeY(1.6628788f), //y
+                         decodeX(1.75f) - decodeX(1.25f), //width
+                         decodeY(1.7487373f) - decodeY(1.6628788f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(1.2870814f), //x
+                         decodeY(1.6123737f), //y
+                         decodeX(1.7165072f) - decodeX(1.2870814f), //width
+                         decodeY(1.7222222f) - decodeY(1.6123737f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(1.0f) - decodeX(1.0f), //width
+                         decodeY(1.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(1.25f), //x
+                         decodeY(1.6527778f), //y
+                         decodeX(1.7511961f) - decodeX(1.25f), //width
+                         decodeY(1.7828283f) - decodeY(1.6527778f)); //height
+        return rect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color4,
+                            decodeColor(color4,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color5,0.5f),
+                            color5,
+                            decodeColor(color5,color6,0.5f),
+                            color6});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color11,
+                            decodeColor(color11,color12,0.5f),
+                            color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13,
+                            decodeColor(color13,color10,0.5f),
+                            color10});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color19,
+                            decodeColor(color19,color20,0.5f),
+                            color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color24,
+                            decodeColor(color24,color25,0.5f),
+                            color25});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color26,
+                            decodeColor(color26,color27,0.5f),
+                            color27,
+                            decodeColor(color27,color28,0.5f),
+                            color28,
+                            decodeColor(color28,color29,0.5f),
+                            color29});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color31,
+                            decodeColor(color31,color32,0.5f),
+                            color32});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.78336793f,0.9161677f },
+                new Color[] { color33,
+                            decodeColor(color33,color34,0.5f),
+                            color34,
+                            decodeColor(color34,color35,0.5f),
+                            color35,
+                            decodeColor(color35,color36,0.5f),
+                            color36});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonWindowNotFocusedState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonWindowNotFocusedState extends State {
+    InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonWindowNotFocusedState() {
+        super("WindowNotFocused");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                               Component parent = c;
+                               while (parent.getParent() != null) {
+                                   if (parent instanceof JInternalFrame) {
+                                       break;
+                                   }
+                                   parent = parent.getParent();
+                               }
+                               if (parent instanceof JInternalFrame) {
+                                   return !(((JInternalFrame)parent).isSelected());
+                               }
+                               return false;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,1045 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED_WINDOWMAXIMIZED = 1;
+    static final int BACKGROUND_ENABLED_WINDOWMAXIMIZED = 2;
+    static final int BACKGROUND_MOUSEOVER_WINDOWMAXIMIZED = 3;
+    static final int BACKGROUND_PRESSED_WINDOWMAXIMIZED = 4;
+    static final int BACKGROUND_ENABLED_WINDOWNOTFOCUSED_WINDOWMAXIMIZED = 5;
+    static final int BACKGROUND_MOUSEOVER_WINDOWNOTFOCUSED_WINDOWMAXIMIZED = 6;
+    static final int BACKGROUND_PRESSED_WINDOWNOTFOCUSED_WINDOWMAXIMIZED = 7;
+    static final int BACKGROUND_DISABLED = 8;
+    static final int BACKGROUND_ENABLED = 9;
+    static final int BACKGROUND_MOUSEOVER = 10;
+    static final int BACKGROUND_PRESSED = 11;
+    static final int BACKGROUND_ENABLED_WINDOWNOTFOCUSED = 12;
+    static final int BACKGROUND_MOUSEOVER_WINDOWNOTFOCUSED = 13;
+    static final int BACKGROUND_PRESSED_WINDOWNOTFOCUSED = 14;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusGreen", 0.43362403f, -0.6792196f, 0.054901958f, 0);
+    private Color color2 = decodeColor("nimbusGreen", 0.44056845f, -0.631913f, -0.039215684f, 0);
+    private Color color3 = decodeColor("nimbusGreen", 0.44056845f, -0.67475206f, 0.06666666f, 0);
+    private Color color4 = new Color(255, 200, 0, 255);
+    private Color color5 = decodeColor("nimbusGreen", 0.4355179f, -0.6581704f, -0.011764705f, 0);
+    private Color color6 = decodeColor("nimbusGreen", 0.44484192f, -0.644647f, -0.031372547f, 0);
+    private Color color7 = decodeColor("nimbusGreen", 0.44484192f, -0.6480447f, 0.0f, 0);
+    private Color color8 = decodeColor("nimbusGreen", 0.4366002f, -0.6368381f, -0.04705882f, 0);
+    private Color color9 = decodeColor("nimbusGreen", 0.44484192f, -0.6423572f, -0.05098039f, 0);
+    private Color color10 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.062449392f, 0.07058823f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", -0.008547008f, -0.04174325f, -0.0039215684f, -13);
+    private Color color12 = decodeColor("nimbusBlueGrey", 0.0f, -0.049920253f, 0.031372547f, 0);
+    private Color color13 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.0029994324f, -0.38039216f, -185);
+    private Color color14 = decodeColor("nimbusGreen", 0.1627907f, 0.2793296f, -0.6431373f, 0);
+    private Color color15 = decodeColor("nimbusGreen", 0.025363803f, 0.2454313f, -0.2392157f, 0);
+    private Color color16 = decodeColor("nimbusGreen", 0.02642706f, -0.3456704f, -0.011764705f, 0);
+    private Color color17 = decodeColor("nimbusGreen", 0.025363803f, 0.2373128f, -0.23529413f, 0);
+    private Color color18 = decodeColor("nimbusGreen", 0.025363803f, 0.0655365f, -0.13333333f, 0);
+    private Color color19 = decodeColor("nimbusGreen", -0.0087068975f, -0.009330213f, -0.32156864f, 0);
+    private Color color20 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -13);
+    private Color color21 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -33);
+    private Color color22 = decodeColor("nimbusGreen", 0.1627907f, 0.2793296f, -0.627451f, 0);
+    private Color color23 = decodeColor("nimbusGreen", 0.04572721f, 0.2793296f, -0.37254903f, 0);
+    private Color color24 = decodeColor("nimbusGreen", 0.009822637f, -0.34243205f, 0.054901958f, 0);
+    private Color color25 = decodeColor("nimbusGreen", 0.010559708f, 0.13167858f, -0.11764705f, 0);
+    private Color color26 = decodeColor("nimbusGreen", 0.010559708f, 0.12599629f, -0.11372548f, 0);
+    private Color color27 = decodeColor("nimbusGreen", 0.010559708f, 9.2053413E-4f, -0.011764705f, 0);
+    private Color color28 = decodeColor("nimbusGreen", 0.015249729f, 0.2793296f, -0.22352943f, -49);
+    private Color color29 = decodeColor("nimbusGreen", 0.01279068f, 0.2793296f, -0.19215685f, 0);
+    private Color color30 = decodeColor("nimbusGreen", 0.013319805f, 0.2793296f, -0.20784315f, 0);
+    private Color color31 = decodeColor("nimbusGreen", 0.009604409f, 0.2793296f, -0.16862744f, 0);
+    private Color color32 = decodeColor("nimbusGreen", 0.011600211f, 0.2793296f, -0.15294117f, 0);
+    private Color color33 = decodeColor("nimbusGreen", 0.011939123f, 0.2793296f, -0.16470587f, 0);
+    private Color color34 = decodeColor("nimbusGreen", 0.009506017f, 0.257901f, -0.15294117f, 0);
+    private Color color35 = decodeColor("nimbusGreen", -0.17054264f, -0.7206704f, -0.7019608f, 0);
+    private Color color36 = decodeColor("nimbusGreen", 0.07804492f, 0.2793296f, -0.47058827f, 0);
+    private Color color37 = decodeColor("nimbusGreen", 0.03592503f, -0.23865601f, -0.15686274f, 0);
+    private Color color38 = decodeColor("nimbusGreen", 0.035979107f, 0.23766291f, -0.3254902f, 0);
+    private Color color39 = decodeColor("nimbusGreen", 0.03690417f, 0.2793296f, -0.33333334f, 0);
+    private Color color40 = decodeColor("nimbusGreen", 0.09681849f, 0.2793296f, -0.5137255f, 0);
+    private Color color41 = decodeColor("nimbusGreen", 0.06535478f, 0.2793296f, -0.44705883f, 0);
+    private Color color42 = decodeColor("nimbusGreen", 0.0675526f, 0.2793296f, -0.454902f, 0);
+    private Color color43 = decodeColor("nimbusGreen", 0.060800627f, 0.2793296f, -0.4392157f, 0);
+    private Color color44 = decodeColor("nimbusGreen", 0.06419912f, 0.2793296f, -0.42352942f, 0);
+    private Color color45 = decodeColor("nimbusGreen", 0.06375685f, 0.2793296f, -0.43137255f, 0);
+    private Color color46 = decodeColor("nimbusGreen", 0.048207358f, 0.2793296f, -0.3882353f, 0);
+    private Color color47 = decodeColor("nimbusGreen", 0.057156876f, 0.2793296f, -0.42352942f, 0);
+    private Color color48 = decodeColor("nimbusGreen", 0.44056845f, -0.62133265f, -0.109803915f, 0);
+    private Color color49 = decodeColor("nimbusGreen", 0.44056845f, -0.5843068f, -0.27058825f, 0);
+    private Color color50 = decodeColor("nimbusGreen", 0.4294573f, -0.698349f, 0.17647058f, 0);
+    private Color color51 = decodeColor("nimbusGreen", 0.45066953f, -0.665394f, 0.07843137f, 0);
+    private Color color52 = decodeColor("nimbusGreen", 0.44056845f, -0.65913194f, 0.062745094f, 0);
+    private Color color53 = decodeColor("nimbusGreen", 0.44056845f, -0.6609689f, 0.086274505f, 0);
+    private Color color54 = decodeColor("nimbusGreen", 0.44056845f, -0.6578432f, 0.04705882f, 0);
+    private Color color55 = decodeColor("nimbusGreen", 0.4355179f, -0.6633787f, 0.05098039f, 0);
+    private Color color56 = decodeColor("nimbusGreen", 0.4355179f, -0.664548f, 0.06666666f, 0);
+    private Color color57 = decodeColor("nimbusBlueGrey", 0.0f, -0.029445238f, -0.30980393f, -13);
+    private Color color58 = decodeColor("nimbusBlueGrey", 0.0f, -0.027957506f, -0.31764707f, -33);
+    private Color color59 = decodeColor("nimbusGreen", 0.43202144f, -0.64722407f, -0.007843137f, 0);
+    private Color color60 = decodeColor("nimbusGreen", 0.44056845f, -0.6339652f, -0.02352941f, 0);
+    private Color color61 = new Color(165, 169, 176, 255);
+    private Color color62 = decodeColor("nimbusBlueGrey", -0.00505054f, -0.057128258f, 0.062745094f, 0);
+    private Color color63 = decodeColor("nimbusBlueGrey", -0.003968239f, -0.035257496f, -0.015686274f, 0);
+    private Color color64 = new Color(64, 88, 0, 255);
+    private Color color65 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color66 = decodeColor("nimbusBlueGrey", 0.004830897f, -0.00920473f, 0.14509803f, -101);
+    private Color color67 = decodeColor("nimbusGreen", 0.009564877f, 0.100521624f, -0.109803915f, 0);
+    private Color color68 = new Color(113, 125, 0, 255);
+    private Color color69 = decodeColor("nimbusBlueGrey", 0.0025252104f, -0.0067527294f, 0.086274505f, -65);
+    private Color color70 = decodeColor("nimbusGreen", 0.03129223f, 0.2793296f, -0.27450982f, 0);
+    private Color color71 = new Color(19, 48, 0, 255);
+    private Color color72 = decodeColor("nimbusBlueGrey", 0.0f, -0.029445238f, -0.30980393f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED_WINDOWMAXIMIZED: paintBackgroundDisabledAndWindowMaximized(g); break;
+            case BACKGROUND_ENABLED_WINDOWMAXIMIZED: paintBackgroundEnabledAndWindowMaximized(g); break;
+            case BACKGROUND_MOUSEOVER_WINDOWMAXIMIZED: paintBackgroundMouseOverAndWindowMaximized(g); break;
+            case BACKGROUND_PRESSED_WINDOWMAXIMIZED: paintBackgroundPressedAndWindowMaximized(g); break;
+            case BACKGROUND_ENABLED_WINDOWNOTFOCUSED_WINDOWMAXIMIZED: paintBackgroundEnabledAndWindowNotFocusedAndWindowMaximized(g); break;
+            case BACKGROUND_MOUSEOVER_WINDOWNOTFOCUSED_WINDOWMAXIMIZED: paintBackgroundMouseOverAndWindowNotFocusedAndWindowMaximized(g); break;
+            case BACKGROUND_PRESSED_WINDOWNOTFOCUSED_WINDOWMAXIMIZED: paintBackgroundPressedAndWindowNotFocusedAndWindowMaximized(g); break;
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_PRESSED: paintBackgroundPressed(g); break;
+            case BACKGROUND_ENABLED_WINDOWNOTFOCUSED: paintBackgroundEnabledAndWindowNotFocused(g); break;
+            case BACKGROUND_MOUSEOVER_WINDOWNOTFOCUSED: paintBackgroundMouseOverAndWindowNotFocused(g); break;
+            case BACKGROUND_PRESSED_WINDOWNOTFOCUSED: paintBackgroundPressedAndWindowNotFocused(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabledAndWindowMaximized(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color5);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color6);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color6);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color7);
+        g.fill(rect);
+        rect = decodeRect6();
+        g.setPaint(color8);
+        g.fill(rect);
+        rect = decodeRect7();
+        g.setPaint(color9);
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(color7);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color12);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabledAndWindowMaximized(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color13);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color19);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color19);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color19);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color19);
+        g.fill(rect);
+        rect = decodeRect9();
+        g.setPaint(color19);
+        g.fill(rect);
+        rect = decodeRect7();
+        g.setPaint(color19);
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color19);
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(color19);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color20);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color21);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOverAndWindowMaximized(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color13);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color28);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color29);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color30);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color31);
+        g.fill(rect);
+        rect = decodeRect9();
+        g.setPaint(color32);
+        g.fill(rect);
+        rect = decodeRect7();
+        g.setPaint(color33);
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color34);
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(color31);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color20);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color21);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundPressedAndWindowMaximized(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color13);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient9(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color40);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color41);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color42);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color43);
+        g.fill(rect);
+        rect = decodeRect6();
+        g.setPaint(color44);
+        g.fill(rect);
+        rect = decodeRect7();
+        g.setPaint(color45);
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color46);
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(color47);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color20);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color21);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabledAndWindowNotFocusedAndWindowMaximized(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient11(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color54);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color55);
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(color56);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color57);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color58);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOverAndWindowNotFocusedAndWindowMaximized(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color13);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color28);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color29);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color30);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color31);
+        g.fill(rect);
+        rect = decodeRect9();
+        g.setPaint(color32);
+        g.fill(rect);
+        rect = decodeRect7();
+        g.setPaint(color33);
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color34);
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(color31);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color20);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color21);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundPressedAndWindowNotFocusedAndWindowMaximized(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color13);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient9(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color40);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color41);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color42);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color43);
+        g.fill(rect);
+        rect = decodeRect6();
+        g.setPaint(color44);
+        g.fill(rect);
+        rect = decodeRect7();
+        g.setPaint(color45);
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color46);
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(color47);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color20);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color21);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient12(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        path = decodePath3();
+        g.setPaint(color61);
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient13(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color13);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        path = decodePath3();
+        g.setPaint(color64);
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(color65);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color66);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient14(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        path = decodePath3();
+        g.setPaint(color68);
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(color65);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundPressed(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color69);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient15(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        path = decodePath3();
+        g.setPaint(color71);
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(color65);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabledAndWindowNotFocused(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient16(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        path = decodePath4();
+        g.setPaint(color72);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOverAndWindowNotFocused(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color66);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient14(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        path = decodePath3();
+        g.setPaint(color68);
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(color65);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundPressedAndWindowNotFocused(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(color69);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient15(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect1();
+        g.setPaint(color4);
+        g.fill(rect);
+        path = decodePath3();
+        g.setPaint(color71);
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(color65);
+        g.fill(path);
+
+    }
+
+
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(1.0f), //x
+                               decodeY(1.0f), //y
+                               decodeX(2.0f) - decodeX(1.0f), //width
+                               decodeY(1.9444444f) - decodeY(1.0f), //height
+                               8.6f, 8.6f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect2() {
+        roundRect.setRoundRect(decodeX(1.0526316f), //x
+                               decodeY(1.0555556f), //y
+                               decodeX(1.9473684f) - decodeX(1.0526316f), //width
+                               decodeY(1.8888888f) - decodeY(1.0555556f), //height
+                               6.75f, 6.75f); //rounding
+        return roundRect;
+    }
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(1.0f) - decodeX(1.0f), //width
+                         decodeY(1.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(1.2165072f), //x
+                         decodeY(1.2790405f), //y
+                         decodeX(1.6746411f) - decodeX(1.2165072f), //width
+                         decodeY(1.3876263f) - decodeY(1.2790405f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(1.2212919f), //x
+                         decodeY(1.6047981f), //y
+                         decodeX(1.270335f) - decodeX(1.2212919f), //width
+                         decodeY(1.3876263f) - decodeY(1.6047981f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(1.2643541f), //x
+                         decodeY(1.5542929f), //y
+                         decodeX(1.6315789f) - decodeX(1.2643541f), //width
+                         decodeY(1.5997474f) - decodeY(1.5542929f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect5() {
+            rect.setRect(decodeX(1.6267943f), //x
+                         decodeY(1.3888888f), //y
+                         decodeX(1.673445f) - decodeX(1.6267943f), //width
+                         decodeY(1.6085858f) - decodeY(1.3888888f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect6() {
+            rect.setRect(decodeX(1.3684211f), //x
+                         decodeY(1.6111112f), //y
+                         decodeX(1.4210527f) - decodeX(1.3684211f), //width
+                         decodeY(1.7777778f) - decodeY(1.6111112f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect7() {
+            rect.setRect(decodeX(1.4389952f), //x
+                         decodeY(1.7209597f), //y
+                         decodeX(1.7882775f) - decodeX(1.4389952f), //width
+                         decodeY(1.7765152f) - decodeY(1.7209597f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect8() {
+            rect.setRect(decodeX(1.5645933f), //x
+                         decodeY(1.4078283f), //y
+                         decodeX(1.7870812f) - decodeX(1.5645933f), //width
+                         decodeY(1.5239899f) - decodeY(1.4078283f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(1.2105263f), decodeY(1.2222222f));
+        path.lineTo(decodeX(1.6315789f), decodeY(1.2222222f));
+        path.lineTo(decodeX(1.6315789f), decodeY(1.5555556f));
+        path.lineTo(decodeX(1.2105263f), decodeY(1.5555556f));
+        path.lineTo(decodeX(1.2105263f), decodeY(1.3333334f));
+        path.lineTo(decodeX(1.2631578f), decodeY(1.3333334f));
+        path.lineTo(decodeX(1.2631578f), decodeY(1.5f));
+        path.lineTo(decodeX(1.5789473f), decodeY(1.5f));
+        path.lineTo(decodeX(1.5789473f), decodeY(1.3333334f));
+        path.lineTo(decodeX(1.2105263f), decodeY(1.3333334f));
+        path.lineTo(decodeX(1.2105263f), decodeY(1.2222222f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(1.6842105f), decodeY(1.3888888f));
+        path.lineTo(decodeX(1.6842105f), decodeY(1.5f));
+        path.lineTo(decodeX(1.7368422f), decodeY(1.5f));
+        path.lineTo(decodeX(1.7368422f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.4210527f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.4210527f), decodeY(1.6111112f));
+        path.lineTo(decodeX(1.3684211f), decodeY(1.6111112f));
+        path.lineTo(decodeX(1.3684211f), decodeY(1.7222222f));
+        path.lineTo(decodeX(1.7894738f), decodeY(1.7222222f));
+        path.lineTo(decodeX(1.7894738f), decodeY(1.3888888f));
+        path.lineTo(decodeX(1.6842105f), decodeY(1.3888888f));
+        path.closePath();
+        return path;
+    }
+
+    private RoundRectangle2D decodeRoundRect3() {
+        roundRect.setRoundRect(decodeX(1.0f), //x
+                               decodeY(1.6111112f), //y
+                               decodeX(2.0f) - decodeX(1.0f), //width
+                               decodeY(2.0f) - decodeY(1.6111112f), //height
+                               6.0f, 6.0f); //rounding
+        return roundRect;
+    }
+
+    private Rectangle2D decodeRect9() {
+            rect.setRect(decodeX(1.3815789f), //x
+                         decodeY(1.6111112f), //y
+                         decodeX(1.4366028f) - decodeX(1.3815789f), //width
+                         decodeY(1.7739899f) - decodeY(1.6111112f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect10() {
+            rect.setRect(decodeX(1.7918661f), //x
+                         decodeY(1.7752526f), //y
+                         decodeX(1.8349283f) - decodeX(1.7918661f), //width
+                         decodeY(1.4217172f) - decodeY(1.7752526f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(1.1913875f), decodeY(1.2916666f));
+        path.lineTo(decodeX(1.1925838f), decodeY(1.7462121f));
+        path.lineTo(decodeX(1.8157895f), decodeY(1.7449496f));
+        path.lineTo(decodeX(1.819378f), decodeY(1.2916666f));
+        path.lineTo(decodeX(1.722488f), decodeY(1.2916666f));
+        path.lineTo(decodeX(1.7320573f), decodeY(1.669192f));
+        path.lineTo(decodeX(1.2799044f), decodeY(1.6565657f));
+        path.lineTo(decodeX(1.284689f), decodeY(1.3863636f));
+        path.lineTo(decodeX(1.7260766f), decodeY(1.385101f));
+        path.lineTo(decodeX(1.722488f), decodeY(1.2904041f));
+        path.lineTo(decodeX(1.1913875f), decodeY(1.2916666f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(1.2105263f), decodeY(1.2222222f));
+        path.lineTo(decodeX(1.2105263f), decodeY(1.7222222f));
+        path.lineTo(decodeX(1.7894738f), decodeY(1.7222222f));
+        path.lineTo(decodeX(1.7894738f), decodeY(1.3333334f));
+        path.lineTo(decodeX(1.7368422f), decodeY(1.3333334f));
+        path.lineTo(decodeX(1.7368422f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.2631578f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.2631578f), decodeY(1.3333334f));
+        path.lineTo(decodeX(1.7894738f), decodeY(1.3333334f));
+        path.lineTo(decodeX(1.7894738f), decodeY(1.2222222f));
+        path.lineTo(decodeX(1.2105263f), decodeY(1.2222222f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color14,
+                            decodeColor(color14,color15,0.5f),
+                            color15});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color16,
+                            decodeColor(color16,color15,0.5f),
+                            color15,
+                            decodeColor(color15,color17,0.5f),
+                            color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color22,
+                            decodeColor(color22,color23,0.5f),
+                            color23});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color24,
+                            decodeColor(color24,color25,0.5f),
+                            color25,
+                            decodeColor(color25,color26,0.5f),
+                            color26,
+                            decodeColor(color26,color27,0.5f),
+                            color27});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color35,
+                            decodeColor(color35,color36,0.5f),
+                            color36});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color37,
+                            decodeColor(color37,color38,0.5f),
+                            color38,
+                            decodeColor(color38,color39,0.5f),
+                            color39,
+                            decodeColor(color39,color18,0.5f),
+                            color18});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color48,
+                            decodeColor(color48,color49,0.5f),
+                            color49});
+    }
+
+    private Paint decodeGradient11(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color50,
+                            decodeColor(color50,color51,0.5f),
+                            color51,
+                            decodeColor(color51,color52,0.5f),
+                            color52,
+                            decodeColor(color52,color53,0.5f),
+                            color53});
+    }
+
+    private Paint decodeGradient12(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.6082097f,0.6766467f,0.83832335f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color59,0.5f),
+                            color59,
+                            decodeColor(color59,color60,0.5f),
+                            color60,
+                            decodeColor(color60,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient13(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.26047903f,0.6302395f,1.0f },
+                new Color[] { color62,
+                            decodeColor(color62,color63,0.5f),
+                            color63});
+    }
+
+    private Paint decodeGradient14(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color24,
+                            decodeColor(color24,color67,0.5f),
+                            color67,
+                            decodeColor(color67,color25,0.5f),
+                            color25,
+                            decodeColor(color25,color27,0.5f),
+                            color27});
+    }
+
+    private Paint decodeGradient15(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.66659296f,0.79341316f,0.8967066f,1.0f },
+                new Color[] { color37,
+                            decodeColor(color37,color38,0.5f),
+                            color38,
+                            decodeColor(color38,color39,0.5f),
+                            color39,
+                            decodeColor(color39,color70,0.5f),
+                            color70});
+    }
+
+    private Paint decodeGradient16(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.6291678f,0.7185629f,0.8592814f,1.0f },
+                new Color[] { color50,
+                            decodeColor(color50,color52,0.5f),
+                            color52,
+                            decodeColor(color52,color52,0.5f),
+                            color52,
+                            decodeColor(color52,color53,0.5f),
+                            color53});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowMaximizedState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowMaximizedState extends State {
+    InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowMaximizedState() {
+        super("WindowMaximized");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                               Component parent = c;
+                               while (parent.getParent() != null) {
+                                   if (parent instanceof JInternalFrame) {
+                                       break;
+                                   }
+                                   parent = parent.getParent();
+                               }
+                               if (parent instanceof JInternalFrame) {
+                                   return ((JInternalFrame)parent).isMaximum();
+                               }
+                               return false;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState extends State {
+    InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState() {
+        super("WindowNotFocused");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                               Component parent = c;
+                               while (parent.getParent() != null) {
+                                   if (parent instanceof JInternalFrame) {
+                                       break;
+                                   }
+                                   parent = parent.getParent();
+                               }
+                               if (parent instanceof JInternalFrame) {
+                                   return !(((JInternalFrame)parent).isSelected());
+                               }
+                               return false;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,517 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int ICON_ENABLED = 1;
+    static final int ICON_DISABLED = 2;
+    static final int ICON_MOUSEOVER = 3;
+    static final int ICON_PRESSED = 4;
+    static final int ICON_ENABLED_WINDOWNOTFOCUSED = 5;
+    static final int ICON_MOUSEOVER_WINDOWNOTFOCUSED = 6;
+    static final int ICON_PRESSED_WINDOWNOTFOCUSED = 7;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.0029994324f, -0.38039216f, -185);
+    private Color color2 = decodeColor("nimbusBase", 0.08801502f, 0.3642857f, -0.5019608f, 0);
+    private Color color3 = decodeColor("nimbusBase", 0.030543745f, -0.3835404f, -0.09803924f, 0);
+    private Color color4 = decodeColor("nimbusBase", 0.029191494f, -0.53801316f, 0.13333333f, 0);
+    private Color color5 = decodeColor("nimbusBase", 0.030543745f, -0.3857143f, -0.09411767f, 0);
+    private Color color6 = decodeColor("nimbusBase", 0.030543745f, -0.43148893f, 0.007843137f, 0);
+    private Color color7 = decodeColor("nimbusBase", 0.029191494f, -0.24935067f, -0.20392159f, -132);
+    private Color color8 = decodeColor("nimbusBase", 0.029191494f, -0.24935067f, -0.20392159f, 0);
+    private Color color9 = decodeColor("nimbusBase", 0.029191494f, -0.24935067f, -0.20392159f, -123);
+    private Color color10 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.0029994324f, -0.38039216f, -208);
+    private Color color12 = decodeColor("nimbusBase", 0.02551502f, -0.5942635f, 0.20784312f, 0);
+    private Color color13 = decodeColor("nimbusBase", 0.032459438f, -0.5490091f, 0.12941176f, 0);
+    private Color color14 = decodeColor("nimbusBase", 0.032459438f, -0.5469569f, 0.11372548f, 0);
+    private Color color15 = decodeColor("nimbusBase", 0.032459438f, -0.5760128f, 0.23921567f, 0);
+    private Color color16 = decodeColor("nimbusBase", 0.08801502f, 0.3642857f, -0.4901961f, 0);
+    private Color color17 = decodeColor("nimbusBase", 0.032459438f, -0.1857143f, -0.23529413f, 0);
+    private Color color18 = decodeColor("nimbusBase", 0.029191494f, -0.5438224f, 0.17647058f, 0);
+    private Color color19 = decodeColor("nimbusBase", 0.030543745f, -0.41929638f, -0.02352941f, 0);
+    private Color color20 = decodeColor("nimbusBase", 0.030543745f, -0.45559007f, 0.082352936f, 0);
+    private Color color21 = decodeColor("nimbusBase", 0.03409344f, -0.329408f, -0.11372551f, -132);
+    private Color color22 = decodeColor("nimbusBase", 0.03409344f, -0.329408f, -0.11372551f, 0);
+    private Color color23 = decodeColor("nimbusBase", 0.03409344f, -0.329408f, -0.11372551f, -123);
+    private Color color24 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.54901963f, 0);
+    private Color color25 = decodeColor("nimbusBase", 0.031104386f, 0.12354499f, -0.33725494f, 0);
+    private Color color26 = decodeColor("nimbusBase", 0.032459438f, -0.4592437f, -0.015686274f, 0);
+    private Color color27 = decodeColor("nimbusBase", 0.029191494f, -0.2579365f, -0.19607845f, 0);
+    private Color color28 = decodeColor("nimbusBase", 0.03409344f, -0.3149596f, -0.13333336f, 0);
+    private Color color29 = decodeColor("nimbusBase", 0.029681683f, 0.07857144f, -0.3294118f, -132);
+    private Color color30 = decodeColor("nimbusBase", 0.029681683f, 0.07857144f, -0.3294118f, 0);
+    private Color color31 = decodeColor("nimbusBase", 0.029681683f, 0.07857144f, -0.3294118f, -123);
+    private Color color32 = decodeColor("nimbusBase", 0.032459438f, -0.53637654f, 0.043137252f, 0);
+    private Color color33 = decodeColor("nimbusBase", 0.032459438f, -0.49935067f, -0.11764708f, 0);
+    private Color color34 = decodeColor("nimbusBase", 0.021348298f, -0.6133929f, 0.32941175f, 0);
+    private Color color35 = decodeColor("nimbusBase", 0.042560518f, -0.5804379f, 0.23137254f, 0);
+    private Color color36 = decodeColor("nimbusBase", 0.032459438f, -0.57417583f, 0.21568626f, 0);
+    private Color color37 = decodeColor("nimbusBase", 0.027408898f, -0.5784226f, 0.20392156f, -132);
+    private Color color38 = decodeColor("nimbusBase", 0.042560518f, -0.5665319f, 0.0745098f, 0);
+    private Color color39 = decodeColor("nimbusBase", 0.036732912f, -0.5642857f, 0.16470587f, -123);
+    private Color color40 = decodeColor("nimbusBase", 0.021348298f, -0.54480517f, -0.11764708f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case ICON_ENABLED: painticonEnabled(g); break;
+            case ICON_DISABLED: painticonDisabled(g); break;
+            case ICON_MOUSEOVER: painticonMouseOver(g); break;
+            case ICON_PRESSED: painticonPressed(g); break;
+            case ICON_ENABLED_WINDOWNOTFOCUSED: painticonEnabledAndWindowNotFocused(g); break;
+            case ICON_MOUSEOVER_WINDOWNOTFOCUSED: painticonMouseOverAndWindowNotFocused(g); break;
+            case ICON_PRESSED_WINDOWNOTFOCUSED: painticonPressedAndWindowNotFocused(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void painticonEnabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color10);
+        g.fill(path);
+
+    }
+
+    private void painticonDisabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color11);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+        path = decodePath2();
+        g.setPaint(color15);
+        g.fill(path);
+
+    }
+
+    private void painticonMouseOver(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color10);
+        g.fill(path);
+
+    }
+
+    private void painticonPressed(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient9(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(decodeGradient10(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color10);
+        g.fill(path);
+
+    }
+
+    private void painticonEnabledAndWindowNotFocused(Graphics2D g) {
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient11(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient12(roundRect));
+        g.fill(roundRect);
+        path = decodePath3();
+        g.setPaint(decodeGradient13(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color40);
+        g.fill(path);
+
+    }
+
+    private void painticonMouseOverAndWindowNotFocused(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color10);
+        g.fill(path);
+
+    }
+
+    private void painticonPressedAndWindowNotFocused(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient9(roundRect));
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(decodeGradient10(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color10);
+        g.fill(path);
+
+    }
+
+
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(1.0f), //x
+                               decodeY(1.6111112f), //y
+                               decodeX(2.0f) - decodeX(1.0f), //width
+                               decodeY(2.0f) - decodeY(1.6111112f), //height
+                               6.0f, 6.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect2() {
+        roundRect.setRoundRect(decodeX(1.0f), //x
+                               decodeY(1.0f), //y
+                               decodeX(2.0f) - decodeX(1.0f), //width
+                               decodeY(1.9444444f) - decodeY(1.0f), //height
+                               8.6f, 8.6f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect3() {
+        roundRect.setRoundRect(decodeX(1.0526316f), //x
+                               decodeY(1.0555556f), //y
+                               decodeX(1.9473684f) - decodeX(1.0526316f), //width
+                               decodeY(1.8888888f) - decodeY(1.0555556f), //height
+                               6.75f, 6.75f); //rounding
+        return roundRect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(1.3157895f), decodeY(1.4444444f));
+        path.lineTo(decodeX(1.6842105f), decodeY(1.4444444f));
+        path.lineTo(decodeX(1.5013158f), decodeY(1.7208333f));
+        path.lineTo(decodeX(1.3157895f), decodeY(1.4444444f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(1.3157895f), decodeY(1.3333334f));
+        path.lineTo(decodeX(1.6842105f), decodeY(1.3333334f));
+        path.lineTo(decodeX(1.5f), decodeY(1.6083333f));
+        path.lineTo(decodeX(1.3157895f), decodeY(1.3333334f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(1.3157895f), decodeY(1.3888888f));
+        path.lineTo(decodeX(1.6842105f), decodeY(1.3888888f));
+        path.lineTo(decodeX(1.4952153f), decodeY(1.655303f));
+        path.lineTo(decodeX(1.3157895f), decodeY(1.3888888f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5,
+                            decodeColor(color5,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color6,0.5f),
+                            color6});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.50714284f * w) + x, (0.095f * h) + y, (0.49285713f * w) + x, (0.91f * h) + y,
+                new float[] { 0.0f,0.24289773f,0.48579547f,0.74289775f,1.0f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8,
+                            decodeColor(color8,color9,0.5f),
+                            color9});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.31107953f,0.62215906f,0.8110795f,1.0f },
+                new Color[] { color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color18,
+                            decodeColor(color18,color19,0.5f),
+                            color19,
+                            decodeColor(color19,color19,0.5f),
+                            color19,
+                            decodeColor(color19,color20,0.5f),
+                            color20});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.50714284f * w) + x, (0.095f * h) + y, (0.49285713f * w) + x, (0.91f * h) + y,
+                new float[] { 0.0f,0.24289773f,0.48579547f,0.74289775f,1.0f },
+                new Color[] { color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22,
+                            decodeColor(color22,color23,0.5f),
+                            color23});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color24,
+                            decodeColor(color24,color25,0.5f),
+                            color25});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color26,
+                            decodeColor(color26,color27,0.5f),
+                            color27,
+                            decodeColor(color27,color27,0.5f),
+                            color27,
+                            decodeColor(color27,color28,0.5f),
+                            color28});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.50714284f * w) + x, (0.095f * h) + y, (0.49285713f * w) + x, (0.91f * h) + y,
+                new float[] { 0.0f,0.24289773f,0.48579547f,0.74289775f,1.0f },
+                new Color[] { color29,
+                            decodeColor(color29,color30,0.5f),
+                            color30,
+                            decodeColor(color30,color31,0.5f),
+                            color31});
+    }
+
+    private Paint decodeGradient11(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.24868421f * w) + x, (0.0014705883f * h) + y, (0.24868421f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color32,
+                            decodeColor(color32,color33,0.5f),
+                            color33});
+    }
+
+    private Paint decodeGradient12(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25441176f * w) + x, (1.0016667f * h) + y,
+                new float[] { 0.0f,0.26988637f,0.53977275f,0.5951705f,0.6505682f,0.8252841f,1.0f },
+                new Color[] { color34,
+                            decodeColor(color34,color35,0.5f),
+                            color35,
+                            decodeColor(color35,color36,0.5f),
+                            color36,
+                            decodeColor(color36,color15,0.5f),
+                            color15});
+    }
+
+    private Paint decodeGradient13(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.50714284f * w) + x, (0.095f * h) + y, (0.49285713f * w) + x, (0.91f * h) + y,
+                new float[] { 0.0f,0.24289773f,0.48579547f,0.74289775f,1.0f },
+                new Color[] { color37,
+                            decodeColor(color37,color38,0.5f),
+                            color38,
+                            decodeColor(color38,color39,0.5f),
+                            color39});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonWindowNotFocusedState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonWindowNotFocusedState extends State {
+    InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonWindowNotFocusedState() {
+        super("WindowNotFocused");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                               Component parent = c;
+                               while (parent.getParent() != null) {
+                                   if (parent instanceof JInternalFrame) {
+                                       break;
+                                   }
+                                   parent = parent.getParent();
+                               }
+                               if (parent instanceof JInternalFrame) {
+                                   return !(((JInternalFrame)parent).isSelected());
+                               }
+                               return false;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePanePainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class InternalFrameInternalFrameTitlePanePainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of InternalFrameInternalFrameTitlePanePainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of InternalFrameInternalFrameTitlePanePainter would be created. For the moment at least,
+    //however, all are created for each instance.
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public InternalFrameInternalFrameTitlePanePainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneWindowFocusedState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class InternalFrameInternalFrameTitlePaneWindowFocusedState extends State {
+    InternalFrameInternalFrameTitlePaneWindowFocusedState() {
+        super("WindowFocused");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                         return c instanceof JInternalFrame && ((JInternalFrame)c).isSelected();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/InternalFramePainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,402 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class InternalFramePainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of InternalFramePainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int BACKGROUND_ENABLED_WINDOWFOCUSED = 2;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of InternalFramePainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBase", 0.032459438f, -0.53637654f, 0.043137252f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", 0.004273474f, -0.039488062f, -0.027450979f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", -0.00505054f, -0.056339122f, 0.05098039f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", -0.01111114f, -0.06357796f, 0.09019607f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.0f, -0.023821115f, -0.06666666f, 0);
+    private Color color6 = decodeColor("control", 0.0f, 0.0f, 0.0f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", -0.006944418f, -0.07399663f, 0.11372548f, 0);
+    private Color color8 = decodeColor("nimbusBase", 0.02551502f, -0.47885156f, -0.34901965f, 0);
+    private Color color9 = new Color(255, 200, 0, 255);
+    private Color color10 = decodeColor("nimbusBase", 0.004681647f, -0.6274498f, 0.39999998f, 0);
+    private Color color11 = decodeColor("nimbusBase", 0.032459438f, -0.5934608f, 0.2862745f, 0);
+    private Color color12 = new Color(204, 207, 213, 255);
+    private Color color13 = decodeColor("nimbusBase", 0.032459438f, -0.55506915f, 0.18039215f, 0);
+    private Color color14 = decodeColor("nimbusBase", 0.004681647f, -0.52792984f, 0.10588235f, 0);
+    private Color color15 = decodeColor("nimbusBase", 0.03801495f, -0.4794643f, -0.04705882f, 0);
+    private Color color16 = decodeColor("nimbusBase", 0.021348298f, -0.61416256f, 0.3607843f, 0);
+    private Color color17 = decodeColor("nimbusBase", 0.032459438f, -0.5546332f, 0.17647058f, 0);
+    private Color color18 = new Color(235, 236, 238, 255);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public InternalFramePainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_ENABLED_WINDOWFOCUSED: paintBackgroundEnabledAndWindowFocused(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        path = decodePath1();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color3);
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(color4);
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(color5);
+        g.fill(path);
+        rect = decodeRect1();
+        g.setPaint(color6);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color7);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabledAndWindowFocused(Graphics2D g) {
+        roundRect = decodeRoundRect2();
+        g.setPaint(color8);
+        g.fill(roundRect);
+        path = decodePath5();
+        g.setPaint(color9);
+        g.fill(path);
+        path = decodePath1();
+        g.setPaint(decodeGradient2(path));
+        g.fill(path);
+        path = decodePath6();
+        g.setPaint(color12);
+        g.fill(path);
+        path = decodePath7();
+        g.setPaint(color13);
+        g.fill(path);
+        path = decodePath8();
+        g.setPaint(color14);
+        g.fill(path);
+        path = decodePath9();
+        g.setPaint(color15);
+        g.fill(path);
+        rect = decodeRect1();
+        g.setPaint(color6);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color9);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color9);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color9);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(decodeGradient3(rect));
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color18);
+        g.fill(rect);
+
+    }
+
+
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(0.0f), //x
+                               decodeY(0.0f), //y
+                               decodeX(3.0f) - decodeX(0.0f), //width
+                               decodeY(3.0f) - decodeY(0.0f), //height
+                               4.6666665f, 4.6666665f); //rounding
+        return roundRect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.16666667f), decodeY(0.12f));
+        path.curveTo(decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(0.11999999731779099f, -1.0f), decodeAnchorX(0.5f, -1.0f), decodeAnchorY(0.03999999910593033f, 0.0f), decodeX(0.5f), decodeY(0.04f));
+        path.curveTo(decodeAnchorX(0.5f, 1.0f), decodeAnchorY(0.03999999910593033f, 0.0f), decodeAnchorX(2.5f, -1.0f), decodeAnchorY(0.03999999910593033f, 0.0f), decodeX(2.5f), decodeY(0.04f));
+        path.curveTo(decodeAnchorX(2.5f, 1.0f), decodeAnchorY(0.03999999910593033f, 0.0f), decodeAnchorX(2.8333332538604736f, 0.0f), decodeAnchorY(0.11999999731779099f, -1.0f), decodeX(2.8333333f), decodeY(0.12f));
+        path.curveTo(decodeAnchorX(2.8333332538604736f, 0.0f), decodeAnchorY(0.11999999731779099f, 1.0f), decodeAnchorX(2.8333332538604736f, 0.0f), decodeAnchorY(0.9599999785423279f, 0.0f), decodeX(2.8333333f), decodeY(0.96f));
+        path.lineTo(decodeX(0.16666667f), decodeY(0.96f));
+        path.curveTo(decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(0.9599999785423279f, 0.0f), decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(0.11999999731779099f, 1.0f), decodeX(0.16666667f), decodeY(0.12f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(0.6666667f), decodeY(0.96f));
+        path.lineTo(decodeX(0.16666667f), decodeY(0.96f));
+        path.curveTo(decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(0.9599999785423279f, 0.0f), decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(2.5f, -1.0f), decodeX(0.16666667f), decodeY(2.5f));
+        path.curveTo(decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(2.5f, 1.0f), decodeAnchorX(0.5f, -1.0f), decodeAnchorY(2.8333332538604736f, 0.0f), decodeX(0.5f), decodeY(2.8333333f));
+        path.curveTo(decodeAnchorX(0.5f, 1.0f), decodeAnchorY(2.8333332538604736f, 0.0f), decodeAnchorX(2.5f, -1.0f), decodeAnchorY(2.8333332538604736f, 0.0f), decodeX(2.5f), decodeY(2.8333333f));
+        path.curveTo(decodeAnchorX(2.5f, 1.0f), decodeAnchorY(2.8333332538604736f, 0.0f), decodeAnchorX(2.8333332538604736f, 0.0f), decodeAnchorY(2.5f, 1.0f), decodeX(2.8333333f), decodeY(2.5f));
+        path.curveTo(decodeAnchorX(2.8333332538604736f, 0.0f), decodeAnchorY(2.5f, -1.0f), decodeAnchorX(2.8333332538604736f, 0.0f), decodeAnchorY(0.9599999785423279f, 0.0f), decodeX(2.8333333f), decodeY(0.96f));
+        path.lineTo(decodeX(2.3333333f), decodeY(0.96f));
+        path.lineTo(decodeX(2.3333333f), decodeY(2.3333333f));
+        path.lineTo(decodeX(0.6666667f), decodeY(2.3333333f));
+        path.lineTo(decodeX(0.6666667f), decodeY(0.96f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(0.8333333f), decodeY(0.96f));
+        path.lineTo(decodeX(0.6666667f), decodeY(0.96f));
+        path.lineTo(decodeX(0.6666667f), decodeY(2.3333333f));
+        path.lineTo(decodeX(2.3333333f), decodeY(2.3333333f));
+        path.lineTo(decodeX(2.3333333f), decodeY(0.96f));
+        path.lineTo(decodeX(2.1666667f), decodeY(0.96f));
+        path.lineTo(decodeX(2.1666667f), decodeY(2.1666667f));
+        path.lineTo(decodeX(0.8333333f), decodeY(2.1666667f));
+        path.lineTo(decodeX(0.8333333f), decodeY(0.96f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(2.1666667f), decodeY(1.0f));
+        path.lineTo(decodeX(1.0f), decodeY(1.0f));
+        path.lineTo(decodeX(1.0f), decodeY(2.0f));
+        path.lineTo(decodeX(2.0f), decodeY(2.0f));
+        path.lineTo(decodeX(2.0f), decodeY(1.0f));
+        path.lineTo(decodeX(2.1666667f), decodeY(1.0f));
+        path.lineTo(decodeX(2.1666667f), decodeY(2.1666667f));
+        path.lineTo(decodeX(0.8333333f), decodeY(2.1666667f));
+        path.lineTo(decodeX(0.8333333f), decodeY(0.96f));
+        path.lineTo(decodeX(2.1666667f), decodeY(0.96f));
+        path.lineTo(decodeX(2.1666667f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.33333334f), //x
+                         decodeY(2.6666667f), //y
+                         decodeX(2.6666667f) - decodeX(0.33333334f), //width
+                         decodeY(2.8333333f) - decodeY(2.6666667f)); //height
+        return rect;
+    }
+
+    private RoundRectangle2D decodeRoundRect2() {
+        roundRect.setRoundRect(decodeX(0.0f), //x
+                               decodeY(0.0f), //y
+                               decodeX(3.0f) - decodeX(0.0f), //width
+                               decodeY(3.0f) - decodeY(0.0f), //height
+                               4.8333335f, 4.8333335f); //rounding
+        return roundRect;
+    }
+
+    private Path2D decodePath5() {
+        path.reset();
+        path.moveTo(decodeX(0.16666667f), decodeY(0.08f));
+        path.curveTo(decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(0.07999999821186066f, 1.0f), decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(0.07999999821186066f, -1.0f), decodeX(0.16666667f), decodeY(0.08f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath6() {
+        path.reset();
+        path.moveTo(decodeX(0.5f), decodeY(0.96f));
+        path.lineTo(decodeX(0.16666667f), decodeY(0.96f));
+        path.curveTo(decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(0.9599999785423279f, 0.0f), decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(2.5f, -1.0f), decodeX(0.16666667f), decodeY(2.5f));
+        path.curveTo(decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(2.5f, 1.0f), decodeAnchorX(0.5f, -1.0f), decodeAnchorY(2.8333332538604736f, 0.0f), decodeX(0.5f), decodeY(2.8333333f));
+        path.curveTo(decodeAnchorX(0.5f, 1.0f), decodeAnchorY(2.8333332538604736f, 0.0f), decodeAnchorX(2.5f, -1.0f), decodeAnchorY(2.8333332538604736f, 0.0f), decodeX(2.5f), decodeY(2.8333333f));
+        path.curveTo(decodeAnchorX(2.5f, 1.0f), decodeAnchorY(2.8333332538604736f, 0.0f), decodeAnchorX(2.8333332538604736f, 0.0f), decodeAnchorY(2.5f, 1.0f), decodeX(2.8333333f), decodeY(2.5f));
+        path.curveTo(decodeAnchorX(2.8333332538604736f, 0.0f), decodeAnchorY(2.5f, -1.0f), decodeAnchorX(2.8333332538604736f, 0.0f), decodeAnchorY(0.9599999785423279f, 0.0f), decodeX(2.8333333f), decodeY(0.96f));
+        path.lineTo(decodeX(2.5f), decodeY(0.96f));
+        path.lineTo(decodeX(2.5f), decodeY(2.5f));
+        path.lineTo(decodeX(0.5f), decodeY(2.5f));
+        path.lineTo(decodeX(0.5f), decodeY(0.96f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath7() {
+        path.reset();
+        path.moveTo(decodeX(0.6666667f), decodeY(0.96f));
+        path.lineTo(decodeX(0.33333334f), decodeY(0.96f));
+        path.curveTo(decodeAnchorX(0.3333333432674408f, 0.0f), decodeAnchorY(0.9599999785423279f, 0.0f), decodeAnchorX(0.3333333432674408f, 0.0f), decodeAnchorY(2.3333332538604736f, -1.0f), decodeX(0.33333334f), decodeY(2.3333333f));
+        path.curveTo(decodeAnchorX(0.3333333432674408f, 0.0f), decodeAnchorY(2.3333332538604736f, 1.0f), decodeAnchorX(0.6666666865348816f, -1.0f), decodeAnchorY(2.6666667461395264f, 0.0f), decodeX(0.6666667f), decodeY(2.6666667f));
+        path.curveTo(decodeAnchorX(0.6666666865348816f, 1.0f), decodeAnchorY(2.6666667461395264f, 0.0f), decodeAnchorX(2.3333332538604736f, -1.0f), decodeAnchorY(2.6666667461395264f, 0.0f), decodeX(2.3333333f), decodeY(2.6666667f));
+        path.curveTo(decodeAnchorX(2.3333332538604736f, 1.0f), decodeAnchorY(2.6666667461395264f, 0.0f), decodeAnchorX(2.6666667461395264f, 0.0f), decodeAnchorY(2.3333332538604736f, 1.0f), decodeX(2.6666667f), decodeY(2.3333333f));
+        path.curveTo(decodeAnchorX(2.6666667461395264f, 0.0f), decodeAnchorY(2.3333332538604736f, -1.0f), decodeAnchorX(2.6666667461395264f, 0.0f), decodeAnchorY(0.9599999785423279f, 0.0f), decodeX(2.6666667f), decodeY(0.96f));
+        path.lineTo(decodeX(2.3333333f), decodeY(0.96f));
+        path.lineTo(decodeX(2.3333333f), decodeY(2.3333333f));
+        path.lineTo(decodeX(0.6666667f), decodeY(2.3333333f));
+        path.lineTo(decodeX(0.6666667f), decodeY(0.96f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath8() {
+        path.reset();
+        path.moveTo(decodeX(2.3333333f), decodeY(0.96f));
+        path.lineTo(decodeX(2.1666667f), decodeY(0.96f));
+        path.lineTo(decodeX(2.1666667f), decodeY(2.1666667f));
+        path.lineTo(decodeX(0.8333333f), decodeY(2.1666667f));
+        path.lineTo(decodeX(0.8333333f), decodeY(0.96f));
+        path.lineTo(decodeX(0.6666667f), decodeY(0.96f));
+        path.lineTo(decodeX(0.6666667f), decodeY(2.3333333f));
+        path.lineTo(decodeX(2.3333333f), decodeY(2.3333333f));
+        path.lineTo(decodeX(2.3333333f), decodeY(0.96f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath9() {
+        path.reset();
+        path.moveTo(decodeX(0.8333333f), decodeY(1.0f));
+        path.lineTo(decodeX(0.8333333f), decodeY(2.1666667f));
+        path.lineTo(decodeX(2.1666667f), decodeY(2.1666667f));
+        path.lineTo(decodeX(2.1666667f), decodeY(0.96f));
+        path.lineTo(decodeX(0.8333333f), decodeY(0.96f));
+        path.lineTo(decodeX(0.8333333f), decodeY(1.0f));
+        path.lineTo(decodeX(2.0f), decodeY(1.0f));
+        path.lineTo(decodeX(2.0f), decodeY(2.0f));
+        path.lineTo(decodeX(1.0f), decodeY(2.0f));
+        path.lineTo(decodeX(1.0f), decodeY(1.0f));
+        path.lineTo(decodeX(0.8333333f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(0.0f) - decodeX(0.0f), //width
+                         decodeY(0.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(0.33333334f), //x
+                         decodeY(0.08f), //y
+                         decodeX(2.6666667f) - decodeX(0.33333334f), //width
+                         decodeY(0.96f) - decodeY(0.08f)); //height
+        return rect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.3203593f,1.0f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.24251497f,1.0f },
+                new Color[] { color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/InternalFrameWindowFocusedState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class InternalFrameWindowFocusedState extends State {
+    InternalFrameWindowFocusedState() {
+        super("WindowFocused");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                         return c instanceof JInternalFrame && ((JInternalFrame)c).isSelected();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/MenuBarMenuPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class MenuBarMenuPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of MenuBarMenuPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_SELECTED = 3;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of MenuBarMenuPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBase", -0.010750473f, -0.04875779f, -0.007843137f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public MenuBarMenuPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_SELECTED: paintBackgroundSelected(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundSelected(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/MenuBarPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,152 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class MenuBarPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of MenuBarPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int BORDER_ENABLED = 2;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of MenuBarPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", 0.0f, -0.07016757f, 0.12941176f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.10255819f, 0.23921567f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", -0.111111104f, -0.10654225f, 0.23921567f, -29);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -255);
+    private Color color5 = decodeColor("nimbusBorder", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public MenuBarPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BORDER_ENABLED: paintBorderEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintBorderEnabled(Graphics2D g) {
+        rect = decodeRect3();
+        g.setPaint(color5);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(1.9523809f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(2.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(2.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(3.0f) - decodeY(2.0f)); //height
+        return rect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((1.0f * w) + x, (0.0f * h) + y, (1.0f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.015f,0.03f,0.23354445f,0.7569444f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/MenuItemPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class MenuItemPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of MenuItemPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_MOUSEOVER = 3;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of MenuItemPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusSelection", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public MenuItemPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/MenuPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class MenuPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of MenuPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_ENABLED_SELECTED = 3;
+    static final int ARROWICON_DISABLED = 4;
+    static final int ARROWICON_ENABLED = 5;
+    static final int ARROWICON_ENABLED_SELECTED = 6;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of MenuPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusSelection", 0.0f, 0.0f, 0.0f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", 0.0f, -0.08983666f, -0.17647058f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.09663743f, -0.4627451f, 0);
+    private Color color4 = new Color(255, 255, 255, 255);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public MenuPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED_SELECTED: paintBackgroundEnabledAndSelected(g); break;
+            case ARROWICON_DISABLED: paintarrowIconDisabled(g); break;
+            case ARROWICON_ENABLED: paintarrowIconEnabled(g); break;
+            case ARROWICON_ENABLED_SELECTED: paintarrowIconEnabledAndSelected(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabledAndSelected(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintarrowIconDisabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color2);
+        g.fill(path);
+
+    }
+
+    private void paintarrowIconEnabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color3);
+        g.fill(path);
+
+    }
+
+    private void paintarrowIconEnabledAndSelected(Graphics2D g) {
+        path = decodePath2();
+        g.setPaint(color4);
+        g.fill(path);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.2f));
+        path.lineTo(decodeX(2.7512195f), decodeY(2.102439f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.2f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(1.0f));
+        path.lineTo(decodeX(1.9529617f), decodeY(1.5625f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/NimbusDefaults.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,1793 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import javax.swing.Painter;
+import java.awt.Graphics;
+import sun.font.FontManager;
+import sun.swing.plaf.synth.DefaultSynthStyle;
+import javax.swing.BorderFactory;
+import javax.swing.JComponent;
+import javax.swing.JInternalFrame;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+import javax.swing.plaf.BorderUIResource;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.DimensionUIResource;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.InsetsUIResource;
+import javax.swing.plaf.synth.Region;
+import javax.swing.plaf.synth.SynthStyle;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.Insets;
+import java.awt.image.BufferedImage;
+import static java.awt.image.BufferedImage.*;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.lang.ref.WeakReference;
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.WeakHashMap;
+import javax.swing.border.Border;
+import javax.swing.plaf.UIResource;
+
+/**
+ * This class contains all the implementation details related to
+ * Nimbus. It contains all the code for initializing the UIDefaults table,
+ * as well as for selecting
+ * a SynthStyle based on a JComponent/Region pair.
+ *
+ * @author Richard Bair
+ */
+final class NimbusDefaults {
+    /**
+     * The map of SynthStyles. This map is keyed by Region. Each Region maps
+     * to a List of LazyStyles. Each LazyStyle has a reference to the prefix
+     * that was registered with it. This reference can then be inspected to see
+     * if it is the proper lazy style.
+     * <p/>
+     * There can be more than one LazyStyle for a single Region if there is more
+     * than one prefix defined for a given region. For example, both Button and
+     * "MyButton" might be prefixes assigned to the Region.Button region.
+     */
+    private Map<Region, List<LazyStyle>> m;
+    /**
+     * A map of regions which have been registered.
+     * This mapping is maintained so that the Region can be found based on
+     * prefix in a very fast manner. This is used in the "matches" method of
+     * LazyStyle.
+     */
+    private Map<String, Region> registeredRegions =
+            new HashMap<String, Region>();
+    /**
+     * Our fallback style to avoid NPEs if the proper style cannot be found in
+     * this class. Not sure if relying on DefaultSynthStyle is the best choice.
+     */
+    private DefaultSynthStyle defaultStyle;
+    /**
+     * The default font that will be used. I store this value so that it can be
+     * set in the UIDefaults when requested.
+     */
+    private FontUIResource defaultFont;
+
+    /**
+     * Map of lists of derived colors keyed by the DerivedColorKeys
+     */
+    private Map<DerivedColorKey, DerivedColor> derivedColorsMap =
+            new HashMap<DerivedColorKey, DerivedColor>();
+
+    /** Tempory key used for fetching from the derivedColorsMap */
+    private final DerivedColorKey tmpDCKey = new DerivedColorKey();
+
+    /** Listener for changes to user defaults table */
+    private DefaultsListener defaultsListener = new DefaultsListener();
+
+    /** Called by UIManager when this look and feel is installed. */
+    void initialize() {
+        // add listener for derived colors
+        UIManager.addPropertyChangeListener(defaultsListener);
+        UIManager.getDefaults().addPropertyChangeListener(defaultsListener);
+    }
+
+    /** Called by UIManager when this look and feel is uninstalled. */
+    void uninitialize() {
+        // remove listener for derived colors
+        UIManager.getDefaults().removePropertyChangeListener(defaultsListener);
+        UIManager.removePropertyChangeListener(defaultsListener);
+    }
+
+    /**
+     * Create a new NimbusDefaults. This constructor is only called from
+     * within NimbusLookAndFeel.
+     */
+    NimbusDefaults() {
+        m = new HashMap<Region, List<LazyStyle>>();
+
+        //Create the default font and default style. Also register all of the
+        //regions and their states that this class will use for later lookup.
+        //Additional regions can be registered later by 3rd party components.
+        //These are simply the default registrations.
+        defaultFont = FontManager.getFontConfigFUIR("sans", Font.PLAIN, 12);
+        defaultStyle = new DefaultSynthStyle();
+        defaultStyle.setFont(defaultFont);
+
+        //initialize the map of styles
+        register(Region.ARROW_BUTTON, "ArrowButton");
+        register(Region.BUTTON, "Button");
+        register(Region.TOGGLE_BUTTON, "ToggleButton");
+        register(Region.RADIO_BUTTON, "RadioButton");
+        register(Region.CHECK_BOX, "CheckBox");
+        register(Region.COLOR_CHOOSER, "ColorChooser");
+        register(Region.PANEL, "ColorChooser:\"ColorChooser.previewPanelHolder\"");
+        register(Region.LABEL, "ColorChooser:\"ColorChooser.previewPanelHolder\":\"OptionPane.label\"");
+        register(Region.COMBO_BOX, "ComboBox");
+        register(Region.TEXT_FIELD, "ComboBox:\"ComboBox.textField\"");
+        register(Region.ARROW_BUTTON, "ComboBox:\"ComboBox.arrowButton\"");
+        register(Region.LABEL, "ComboBox:\"ComboBox.listRenderer\"");
+        register(Region.LABEL, "ComboBox:\"ComboBox.renderer\"");
+        register(Region.SCROLL_PANE, "\"ComboBox.scrollPane\"");
+        register(Region.FILE_CHOOSER, "FileChooser");
+        register(Region.INTERNAL_FRAME_TITLE_PANE, "InternalFrameTitlePane");
+        register(Region.INTERNAL_FRAME, "InternalFrame");
+        register(Region.INTERNAL_FRAME_TITLE_PANE, "InternalFrame:InternalFrameTitlePane");
+        register(Region.BUTTON, "InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\"");
+        register(Region.BUTTON, "InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.iconifyButton\"");
+        register(Region.BUTTON, "InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"");
+        register(Region.BUTTON, "InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.closeButton\"");
+        register(Region.DESKTOP_ICON, "DesktopIcon");
+        register(Region.DESKTOP_PANE, "DesktopPane");
+        register(Region.LABEL, "Label");
+        register(Region.LIST, "List");
+        register(Region.LABEL, "List:\"List.cellRenderer\"");
+        register(Region.MENU_BAR, "MenuBar");
+        register(Region.MENU, "MenuBar:Menu");
+        register(Region.MENU_ITEM_ACCELERATOR, "MenuBar:Menu:MenuItemAccelerator");
+        register(Region.MENU_ITEM, "MenuItem");
+        register(Region.MENU_ITEM_ACCELERATOR, "MenuItem:MenuItemAccelerator");
+        register(Region.RADIO_BUTTON_MENU_ITEM, "RadioButtonMenuItem");
+        register(Region.MENU_ITEM_ACCELERATOR, "RadioButtonMenuItem:MenuItemAccelerator");
+        register(Region.CHECK_BOX_MENU_ITEM, "CheckBoxMenuItem");
+        register(Region.MENU_ITEM_ACCELERATOR, "CheckBoxMenuItem:MenuItemAccelerator");
+        register(Region.MENU, "Menu");
+        register(Region.MENU_ITEM_ACCELERATOR, "Menu:MenuItemAccelerator");
+        register(Region.POPUP_MENU, "PopupMenu");
+        register(Region.POPUP_MENU_SEPARATOR, "PopupMenuSeparator");
+        register(Region.OPTION_PANE, "OptionPane");
+        register(Region.SEPARATOR, "OptionPane:\"OptionPane.separator\"");
+        register(Region.PANEL, "OptionPane:\"OptionPane.messageArea\"");
+        register(Region.LABEL, "OptionPane:\"OptionPane.messageArea\":\"OptionPane.label\"");
+        register(Region.PANEL, "Panel");
+        register(Region.PROGRESS_BAR, "ProgressBar");
+        register(Region.SEPARATOR, "Separator");
+        register(Region.SCROLL_BAR, "ScrollBar");
+        register(Region.ARROW_BUTTON, "ScrollBar:\"ScrollBar.button\"");
+        register(Region.SCROLL_BAR_THUMB, "ScrollBar:ScrollBarThumb");
+        register(Region.SCROLL_BAR_TRACK, "ScrollBar:ScrollBarTrack");
+        register(Region.SCROLL_PANE, "ScrollPane");
+        register(Region.VIEWPORT, "Viewport");
+        register(Region.SLIDER, "Slider");
+        register(Region.SLIDER_THUMB, "Slider:SliderThumb");
+        register(Region.SLIDER_TRACK, "Slider:SliderTrack");
+        register(Region.SPINNER, "Spinner");
+        register(Region.PANEL, "Spinner:\"Spinner.editor\"");
+        register(Region.FORMATTED_TEXT_FIELD, "Spinner:Panel:\"Spinner.formattedTextField\"");
+        register(Region.ARROW_BUTTON, "Spinner:\"Spinner.previousButton\"");
+        register(Region.ARROW_BUTTON, "Spinner:\"Spinner.nextButton\"");
+        register(Region.SPLIT_PANE, "SplitPane");
+        register(Region.SPLIT_PANE_DIVIDER, "SplitPane:SplitPaneDivider");
+        register(Region.TABBED_PANE, "TabbedPane");
+        register(Region.TABBED_PANE_TAB, "TabbedPane:TabbedPaneTab");
+        register(Region.TABBED_PANE_TAB_AREA, "TabbedPane:TabbedPaneTabArea");
+        register(Region.TABBED_PANE_CONTENT, "TabbedPane:TabbedPaneContent");
+        register(Region.TABLE, "Table");
+        register(Region.LABEL, "Table:\"Table.cellRenderer\"");
+        register(Region.TABLE_HEADER, "TableHeader");
+        register(Region.LABEL, "TableHeader:\"TableHeader.renderer\"");
+        register(Region.TEXT_FIELD, "\"Table.editor\"");
+        register(Region.TEXT_FIELD, "\"Tree.cellEditor\"");
+        register(Region.TEXT_FIELD, "TextField");
+        register(Region.FORMATTED_TEXT_FIELD, "FormattedTextField");
+        register(Region.PASSWORD_FIELD, "PasswordField");
+        register(Region.TEXT_AREA, "TextArea");
+        register(Region.TEXT_PANE, "TextPane");
+        register(Region.EDITOR_PANE, "EditorPane");
+        register(Region.TOOL_BAR, "ToolBar");
+        register(Region.BUTTON, "ToolBar:Button");
+        register(Region.TOGGLE_BUTTON, "ToolBar:ToggleButton");
+        register(Region.TOOL_BAR_SEPARATOR, "ToolBarSeparator");
+        register(Region.TOOL_TIP, "ToolTip");
+        register(Region.TREE, "Tree");
+        register(Region.TREE_CELL, "Tree:TreeCell");
+        register(Region.LABEL, "Tree:\"Tree.cellRenderer\"");
+        register(Region.ROOT_PANE, "RootPane");
+
+    }
+
+    //--------------- Methods called by NimbusLookAndFeel
+
+    /**
+     * Called from NimbusLookAndFeel to initialize the UIDefaults.
+     *
+     * @param d UIDefaults table to initialize. This will never be null.
+     *          If listeners are attached to <code>d</code>, then you will
+     *          only receive notification of LookAndFeel level defaults, not
+     *          all defaults on the UIManager.
+     */
+    void initializeDefaults(UIDefaults d) {
+        //Color palette
+        d.put("text",new ColorUIResource(new Color(0, 0, 0, 255)));
+        d.put("control",new ColorUIResource(new Color(214, 217, 223, 255)));
+        d.put("nimbusBase",new ColorUIResource(new Color(51, 98, 140, 255)));
+        d.put("nimbusBlueGrey",getDerivedColor("nimbusBase",0.032459438f,-0.52518797f,0.19607842f,0));
+        d.put("nimbusOrange",new ColorUIResource(new Color(191, 98, 4, 255)));
+        d.put("nimbusGreen",new ColorUIResource(new Color(176, 179, 50, 255)));
+        d.put("nimbusRed",new ColorUIResource(new Color(169, 46, 34, 255)));
+        d.put("nimbusBorder",getDerivedColor("nimbusBlueGrey",0.0f,-0.017358616f,-0.11372548f,0));
+        d.put("nimbusSelection",getDerivedColor("nimbusBase",-0.010750473f,-0.04875779f,-0.007843137f,0));
+        d.put("nimbusInfoBlue",new ColorUIResource(new Color(47, 92, 180, 255)));
+        d.put("nimbusAlertYellow",new ColorUIResource(new Color(255, 220, 35, 255)));
+        d.put("nimbusFocus",new ColorUIResource(new Color(115, 164, 209, 255)));
+        d.put("nimbusSelectedText",new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("nimbusSelectionBackground",new ColorUIResource(new Color(57, 105, 138, 255)));
+        d.put("nimbusDisabledText",new ColorUIResource(new Color(142, 143, 145, 255)));
+        d.put("nimbusLightBackground",new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("infoText",getDerivedColor("text",0.0f,0.0f,0.0f,0));
+        d.put("info",new ColorUIResource(new Color(242, 242, 189, 255)));
+        d.put("menuText",getDerivedColor("text",0.0f,0.0f,0.0f,0));
+        d.put("menu",getDerivedColor("nimbusBase",0.021348298f,-0.6150531f,0.39999998f,0));
+        d.put("scrollbar",getDerivedColor("nimbusBlueGrey",-0.006944418f,-0.07296763f,0.09019607f,0));
+        d.put("controlText",getDerivedColor("text",0.0f,0.0f,0.0f,0));
+        d.put("controlHighlight",getDerivedColor("nimbusBlueGrey",0.0f,-0.07333623f,0.20392156f,0));
+        d.put("controlLHighlight",getDerivedColor("nimbusBlueGrey",0.0f,-0.098526314f,0.2352941f,0));
+        d.put("controlShadow",getDerivedColor("nimbusBlueGrey",-0.0027777553f,-0.0212406f,0.13333333f,0));
+        d.put("controlDkShadow",getDerivedColor("nimbusBlueGrey",-0.0027777553f,-0.0018306673f,-0.02352941f,0));
+        d.put("textHighlight",getDerivedColor("nimbusSelectionBackground",0.0f,0.0f,0.0f,0));
+        d.put("textHighlightText",getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+        d.put("textInactiveText",getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("desktop",getDerivedColor("nimbusBase",-0.009207249f,-0.13984653f,-0.07450983f,0));
+        d.put("activeCaption",getDerivedColor("nimbusBlueGrey",0.0f,-0.049920253f,0.031372547f,0));
+        d.put("inactiveCaption",getDerivedColor("nimbusBlueGrey",-0.00505054f,-0.055526316f,0.039215684f,0));
+
+        //Font palette
+        d.put("defaultFont", new FontUIResource(defaultFont));
+        d.put("InternalFrame.titleFont", new DerivedFont("defaultFont", 1.0f, true, null));
+
+        //Border palette
+
+        //The global style definition
+        d.put("textForeground", getDerivedColor("text",0.0f,0.0f,0.0f,0));
+        d.put("textBackground", getDerivedColor("nimbusSelectionBackground",0.0f,0.0f,0.0f,0));
+        d.put("background", getDerivedColor("control",0.0f,0.0f,0.0f,0));
+        d.put("TitledBorder.position", "ABOVE_TOP");
+        d.put("FileView.fullRowSelection", Boolean.TRUE);
+
+        //Initialize ArrowButton
+        d.put("ArrowButton.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("ArrowButton.size", new Integer(16));
+        d.put("ArrowButton[Disabled].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ArrowButtonPainter", ArrowButtonPainter.FOREGROUND_DISABLED, new Insets(0, 0, 0, 0), new Dimension(10, 10), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("ArrowButton[Enabled].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ArrowButtonPainter", ArrowButtonPainter.FOREGROUND_ENABLED, new Insets(0, 0, 0, 0), new Dimension(10, 10), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+
+        //Initialize Button
+        d.put("Button.contentMargins", new InsetsUIResource(6, 14, 6, 14));
+        d.put("Button.defaultButtonFollowsFocus", Boolean.FALSE);
+        d.put("Button[Default].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ButtonPainter", ButtonPainter.BACKGROUND_DEFAULT, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("Button[Default+Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ButtonPainter", ButtonPainter.BACKGROUND_DEFAULT_FOCUSED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("Button[Default+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ButtonPainter", ButtonPainter.BACKGROUND_MOUSEOVER_DEFAULT, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("Button[Default+Focused+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ButtonPainter", ButtonPainter.BACKGROUND_MOUSEOVER_DEFAULT_FOCUSED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("Button[Default+Pressed].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+        d.put("Button[Default+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ButtonPainter", ButtonPainter.BACKGROUND_PRESSED_DEFAULT, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("Button[Default+Focused+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ButtonPainter", ButtonPainter.BACKGROUND_PRESSED_DEFAULT_FOCUSED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("Button[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("Button[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ButtonPainter", ButtonPainter.BACKGROUND_DISABLED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("Button[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ButtonPainter", ButtonPainter.BACKGROUND_ENABLED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("Button[Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ButtonPainter", ButtonPainter.BACKGROUND_FOCUSED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("Button[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ButtonPainter", ButtonPainter.BACKGROUND_MOUSEOVER, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("Button[Focused+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ButtonPainter", ButtonPainter.BACKGROUND_MOUSEOVER_FOCUSED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("Button[Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ButtonPainter", ButtonPainter.BACKGROUND_PRESSED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("Button[Focused+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ButtonPainter", ButtonPainter.BACKGROUND_PRESSED_FOCUSED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+
+        //Initialize ToggleButton
+        d.put("ToggleButton.contentMargins", new InsetsUIResource(6, 14, 6, 14));
+        d.put("ToggleButton[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("ToggleButton[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_DISABLED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ToggleButton[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_ENABLED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ToggleButton[Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_FOCUSED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ToggleButton[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_MOUSEOVER, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ToggleButton[Focused+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_MOUSEOVER_FOCUSED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ToggleButton[Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_PRESSED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ToggleButton[Focused+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_PRESSED_FOCUSED, new Insets(7, 7, 7, 7), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ToggleButton[Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_SELECTED, new Insets(7, 7, 7, 7), new Dimension(72, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ToggleButton[Focused+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_SELECTED_FOCUSED, new Insets(7, 7, 7, 7), new Dimension(72, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ToggleButton[Pressed+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_PRESSED_SELECTED, new Insets(7, 7, 7, 7), new Dimension(72, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ToggleButton[Focused+Pressed+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_PRESSED_SELECTED_FOCUSED, new Insets(7, 7, 7, 7), new Dimension(72, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ToggleButton[MouseOver+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_MOUSEOVER_SELECTED, new Insets(7, 7, 7, 7), new Dimension(72, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ToggleButton[Focused+MouseOver+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_MOUSEOVER_SELECTED_FOCUSED, new Insets(7, 7, 7, 7), new Dimension(72, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ToggleButton[Disabled+Selected].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("ToggleButton[Disabled+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToggleButtonPainter", ToggleButtonPainter.BACKGROUND_DISABLED_SELECTED, new Insets(7, 7, 7, 7), new Dimension(72, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+
+        //Initialize RadioButton
+        d.put("RadioButton.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("RadioButton[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("RadioButton[Disabled].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_DISABLED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton[Enabled].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton[Focused].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton[MouseOver].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_MOUSEOVER, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton[Focused+MouseOver].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_MOUSEOVER_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton[Pressed].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_PRESSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton[Focused+Pressed].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_PRESSED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton[Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_SELECTED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton[Focused+Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_SELECTED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton[Pressed+Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_PRESSED_SELECTED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton[Focused+Pressed+Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_PRESSED_SELECTED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton[MouseOver+Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_MOUSEOVER_SELECTED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton[Focused+MouseOver+Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_MOUSEOVER_SELECTED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton[Disabled+Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonPainter", RadioButtonPainter.ICON_DISABLED_SELECTED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButton.icon", new NimbusIcon("RadioButton", "iconPainter", 18, 18));
+
+        //Initialize CheckBox
+        d.put("CheckBox.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("CheckBox[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("CheckBox[Disabled].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_DISABLED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox[Enabled].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox[Focused].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox[MouseOver].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_MOUSEOVER, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox[Focused+MouseOver].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_MOUSEOVER_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox[Pressed].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_PRESSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox[Focused+Pressed].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_PRESSED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox[Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_SELECTED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox[Focused+Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_SELECTED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox[Pressed+Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_PRESSED_SELECTED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox[Focused+Pressed+Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_PRESSED_SELECTED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox[MouseOver+Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_MOUSEOVER_SELECTED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox[Focused+MouseOver+Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_MOUSEOVER_SELECTED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox[Disabled+Selected].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxPainter", CheckBoxPainter.ICON_DISABLED_SELECTED, new Insets(5, 5, 5, 5), new Dimension(18, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBox.icon", new NimbusIcon("CheckBox", "iconPainter", 18, 18));
+
+        //Initialize ColorChooser
+        d.put("ColorChooser.contentMargins", new InsetsUIResource(5, 0, 0, 0));
+        d.put("ColorChooser.swatchesDefaultRecentColor", new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("ColorChooser:\"ColorChooser.previewPanelHolder\".contentMargins", new InsetsUIResource(0, 5, 10, 5));
+        d.put("ColorChooser:\"ColorChooser.previewPanelHolder\":\"OptionPane.label\".contentMargins", new InsetsUIResource(0, 10, 10, 10));
+
+        //Initialize ComboBox
+        d.put("ComboBox.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("ComboBox.States", "Enabled,MouseOver,Pressed,Selected,Disabled,Focused,Editable");
+        d.put("ComboBox.Editable", new ComboBoxEditableState());
+        d.put("ComboBox.forceOpaque", Boolean.TRUE);
+        d.put("ComboBox.buttonWhenNotEditable", Boolean.TRUE);
+        d.put("ComboBox.rendererUseListColors", Boolean.FALSE);
+        d.put("ComboBox.pressedWhenPopupVisible", Boolean.TRUE);
+        d.put("ComboBox.squareButton", Boolean.FALSE);
+        d.put("ComboBox.popupInsets", new InsetsUIResource(-2, 2, 0, 2));
+        d.put("ComboBox.padding", new InsetsUIResource(3, 3, 3, 3));
+        d.put("ComboBox[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_DISABLED, new Insets(8, 9, 8, 19), new Dimension(83, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox[Disabled+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_DISABLED_PRESSED, new Insets(8, 9, 8, 19), new Dimension(83, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_ENABLED, new Insets(8, 9, 8, 19), new Dimension(83, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox[Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_FOCUSED, new Insets(8, 9, 8, 19), new Dimension(83, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox[Focused+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_MOUSEOVER_FOCUSED, new Insets(8, 9, 8, 19), new Dimension(83, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_MOUSEOVER, new Insets(8, 9, 8, 19), new Dimension(83, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox[Focused+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_PRESSED_FOCUSED, new Insets(8, 9, 8, 19), new Dimension(83, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox[Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_PRESSED, new Insets(8, 9, 8, 19), new Dimension(83, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox[Enabled+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_ENABLED_SELECTED, new Insets(8, 9, 8, 19), new Dimension(83, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox[Disabled+Editable].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_DISABLED_EDITABLE, new Insets(6, 5, 6, 17), new Dimension(79, 21), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox[Editable+Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_ENABLED_EDITABLE, new Insets(6, 5, 6, 17), new Dimension(79, 21), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox[Editable+Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_FOCUSED_EDITABLE, new Insets(5, 5, 5, 5), new Dimension(142, 27), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox[Editable+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_MOUSEOVER_EDITABLE, new Insets(4, 5, 5, 17), new Dimension(79, 21), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox[Editable+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxPainter", ComboBoxPainter.BACKGROUND_PRESSED_EDITABLE, new Insets(4, 5, 5, 17), new Dimension(79, 21), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.textField\".contentMargins", new InsetsUIResource(0, 6, 0, 3));
+        d.put("ComboBox:\"ComboBox.textField\"[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("ComboBox:\"ComboBox.textField\"[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxComboBoxTextFieldPainter", ComboBoxComboBoxTextFieldPainter.BACKGROUND_DISABLED, new Insets(5, 3, 3, 1), new Dimension(64, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.textField\"[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxComboBoxTextFieldPainter", ComboBoxComboBoxTextFieldPainter.BACKGROUND_ENABLED, new Insets(5, 3, 3, 1), new Dimension(64, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.textField\"[Selected].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+        d.put("ComboBox:\"ComboBox.textField\"[Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxComboBoxTextFieldPainter", ComboBoxComboBoxTextFieldPainter.BACKGROUND_SELECTED, new Insets(5, 3, 3, 1), new Dimension(64, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.arrowButton\".contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("ComboBox:\"ComboBox.arrowButton\".States", "Enabled,MouseOver,Pressed,Disabled,Editable");
+        d.put("ComboBox:\"ComboBox.arrowButton\".Editable", new ComboBoxComboBoxArrowButtonEditableState());
+        d.put("ComboBox:\"ComboBox.arrowButton\".size", new Integer(19));
+        d.put("ComboBox:\"ComboBox.arrowButton\"[Disabled+Editable].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxComboBoxArrowButtonPainter", ComboBoxComboBoxArrowButtonPainter.BACKGROUND_DISABLED_EDITABLE, new Insets(8, 1, 8, 8), new Dimension(20, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.arrowButton\"[Editable+Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxComboBoxArrowButtonPainter", ComboBoxComboBoxArrowButtonPainter.BACKGROUND_ENABLED_EDITABLE, new Insets(8, 1, 8, 8), new Dimension(20, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.arrowButton\"[Editable+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxComboBoxArrowButtonPainter", ComboBoxComboBoxArrowButtonPainter.BACKGROUND_MOUSEOVER_EDITABLE, new Insets(8, 1, 8, 8), new Dimension(20, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.arrowButton\"[Editable+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxComboBoxArrowButtonPainter", ComboBoxComboBoxArrowButtonPainter.BACKGROUND_PRESSED_EDITABLE, new Insets(8, 1, 8, 8), new Dimension(20, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.arrowButton\"[Editable+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxComboBoxArrowButtonPainter", ComboBoxComboBoxArrowButtonPainter.BACKGROUND_SELECTED_EDITABLE, new Insets(8, 1, 8, 8), new Dimension(20, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.arrowButton\"[Enabled].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxComboBoxArrowButtonPainter", ComboBoxComboBoxArrowButtonPainter.FOREGROUND_ENABLED, new Insets(6, 9, 6, 10), new Dimension(24, 19), true, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.arrowButton\"[MouseOver].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxComboBoxArrowButtonPainter", ComboBoxComboBoxArrowButtonPainter.FOREGROUND_MOUSEOVER, new Insets(6, 9, 6, 10), new Dimension(24, 19), true, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.arrowButton\"[Disabled].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxComboBoxArrowButtonPainter", ComboBoxComboBoxArrowButtonPainter.FOREGROUND_DISABLED, new Insets(6, 9, 6, 10), new Dimension(24, 19), true, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.arrowButton\"[Pressed].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxComboBoxArrowButtonPainter", ComboBoxComboBoxArrowButtonPainter.FOREGROUND_PRESSED, new Insets(6, 9, 6, 10), new Dimension(24, 19), true, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.arrowButton\"[Selected].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ComboBoxComboBoxArrowButtonPainter", ComboBoxComboBoxArrowButtonPainter.FOREGROUND_SELECTED, new Insets(6, 9, 6, 10), new Dimension(24, 19), true, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ComboBox:\"ComboBox.listRenderer\".contentMargins", new InsetsUIResource(2, 4, 2, 4));
+        d.put("ComboBox:\"ComboBox.listRenderer\".opaque", Boolean.TRUE);
+        d.put("ComboBox:\"ComboBox.listRenderer\".background", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0));
+        d.put("ComboBox:\"ComboBox.listRenderer\"[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("ComboBox:\"ComboBox.listRenderer\"[Selected].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+        d.put("ComboBox:\"ComboBox.listRenderer\"[Selected].background", getDerivedColor("nimbusSelectionBackground",0.0f,0.0f,0.0f,0));
+        d.put("ComboBox:\"ComboBox.renderer\".contentMargins", new InsetsUIResource(2, 4, 2, 4));
+        d.put("ComboBox:\"ComboBox.renderer\"[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("ComboBox:\"ComboBox.renderer\"[Selected].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+        d.put("ComboBox:\"ComboBox.renderer\"[Selected].background", getDerivedColor("nimbusSelectionBackground",0.0f,0.0f,0.0f,0));
+
+        //Initialize \"ComboBox.scrollPane\"
+        d.put("\"ComboBox.scrollPane\".contentMargins", new InsetsUIResource(0, 0, 0, 0));
+
+        //Initialize FileChooser
+        d.put("FileChooser.contentMargins", new InsetsUIResource(10, 10, 10, 10));
+        d.put("FileChooser.opaque", Boolean.TRUE);
+        d.put("FileChooser.usesSingleFilePane", Boolean.TRUE);
+        d.put("FileChooser[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.FileChooserPainter", FileChooserPainter.BACKGROUND_ENABLED, new Insets(0, 0, 0, 0), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("FileChooser[Enabled].fileIconPainter", new LazyPainter("javax.swing.plaf.nimbus.FileChooserPainter", FileChooserPainter.FILEICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(16, 16), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("FileChooser.fileIcon", new NimbusIcon("FileChooser", "fileIconPainter", 16, 16));
+        d.put("FileChooser[Enabled].directoryIconPainter", new LazyPainter("javax.swing.plaf.nimbus.FileChooserPainter", FileChooserPainter.DIRECTORYICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(16, 16), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("FileChooser.directoryIcon", new NimbusIcon("FileChooser", "directoryIconPainter", 16, 16));
+        d.put("FileChooser[Enabled].upFolderIconPainter", new LazyPainter("javax.swing.plaf.nimbus.FileChooserPainter", FileChooserPainter.UPFOLDERICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(16, 16), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("FileChooser.upFolderIcon", new NimbusIcon("FileChooser", "upFolderIconPainter", 16, 16));
+        d.put("FileChooser[Enabled].newFolderIconPainter", new LazyPainter("javax.swing.plaf.nimbus.FileChooserPainter", FileChooserPainter.NEWFOLDERICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(16, 16), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("FileChooser.newFolderIcon", new NimbusIcon("FileChooser", "newFolderIconPainter", 16, 16));
+        d.put("FileChooser[Enabled].hardDriveIconPainter", new LazyPainter("javax.swing.plaf.nimbus.FileChooserPainter", FileChooserPainter.HARDDRIVEICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(16, 16), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("FileChooser.hardDriveIcon", new NimbusIcon("FileChooser", "hardDriveIconPainter", 16, 16));
+        d.put("FileChooser[Enabled].floppyDriveIconPainter", new LazyPainter("javax.swing.plaf.nimbus.FileChooserPainter", FileChooserPainter.FLOPPYDRIVEICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(16, 16), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("FileChooser.floppyDriveIcon", new NimbusIcon("FileChooser", "floppyDriveIconPainter", 16, 16));
+        d.put("FileChooser[Enabled].homeFolderIconPainter", new LazyPainter("javax.swing.plaf.nimbus.FileChooserPainter", FileChooserPainter.HOMEFOLDERICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(16, 16), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("FileChooser.homeFolderIcon", new NimbusIcon("FileChooser", "homeFolderIconPainter", 16, 16));
+        d.put("FileChooser[Enabled].detailsViewIconPainter", new LazyPainter("javax.swing.plaf.nimbus.FileChooserPainter", FileChooserPainter.DETAILSVIEWICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(16, 16), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("FileChooser.detailsViewIcon", new NimbusIcon("FileChooser", "detailsViewIconPainter", 16, 16));
+        d.put("FileChooser[Enabled].listViewIconPainter", new LazyPainter("javax.swing.plaf.nimbus.FileChooserPainter", FileChooserPainter.LISTVIEWICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(16, 16), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("FileChooser.listViewIcon", new NimbusIcon("FileChooser", "listViewIconPainter", 16, 16));
+
+        //Initialize InternalFrameTitlePane
+        d.put("InternalFrameTitlePane.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("InternalFrameTitlePane.maxFrameIconSize", new DimensionUIResource(18, 18));
+
+        //Initialize InternalFrame
+        d.put("InternalFrame.contentMargins", new InsetsUIResource(1, 6, 6, 6));
+        d.put("InternalFrame.States", "Enabled,WindowFocused");
+        d.put("InternalFrame.WindowFocused", new InternalFrameWindowFocusedState());
+        d.put("InternalFrame[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFramePainter", InternalFramePainter.BACKGROUND_ENABLED, new Insets(25, 6, 6, 6), new Dimension(25, 36), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame[Enabled+WindowFocused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFramePainter", InternalFramePainter.BACKGROUND_ENABLED_WINDOWFOCUSED, new Insets(25, 6, 6, 6), new Dimension(25, 36), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane.contentMargins", new InsetsUIResource(3, 0, 3, 0));
+        d.put("InternalFrame:InternalFrameTitlePane.States", "Enabled,WindowFocused");
+        d.put("InternalFrame:InternalFrameTitlePane.WindowFocused", new InternalFrameInternalFrameTitlePaneWindowFocusedState());
+        d.put("InternalFrame:InternalFrameTitlePane.titleAlignment", "CENTER");
+        d.put("InternalFrame:InternalFrameTitlePane[Enabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\".contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\".States", "Enabled,MouseOver,Pressed,Disabled,Focused,Selected,WindowNotFocused");
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\".WindowNotFocused", new InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonWindowNotFocusedState());
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\".test", "am InternalFrameTitlePane.menuButton");
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\"[Enabled].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter.ICON_ENABLED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\"[Disabled].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter.ICON_DISABLED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\"[MouseOver].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter.ICON_MOUSEOVER, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\"[Pressed].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter.ICON_PRESSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\"[Enabled+WindowNotFocused].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter.ICON_ENABLED_WINDOWNOTFOCUSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\"[MouseOver+WindowNotFocused].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter.ICON_MOUSEOVER_WINDOWNOTFOCUSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\"[Pressed+WindowNotFocused].iconPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter.ICON_PRESSED_WINDOWNOTFOCUSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\".icon", new NimbusIcon("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.menuButton\"", "iconPainter", 19, 18));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.iconifyButton\".contentMargins", new InsetsUIResource(9, 9, 9, 9));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.iconifyButton\".States", "Enabled,MouseOver,Pressed,Disabled,Focused,Selected,WindowNotFocused");
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.iconifyButton\".WindowNotFocused", new InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonWindowNotFocusedState());
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.iconifyButton\"[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter.BACKGROUND_ENABLED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.iconifyButton\"[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter.BACKGROUND_DISABLED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.iconifyButton\"[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter.BACKGROUND_MOUSEOVER, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.iconifyButton\"[Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter.BACKGROUND_PRESSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.iconifyButton\"[Enabled+WindowNotFocused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter.BACKGROUND_ENABLED_WINDOWNOTFOCUSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.iconifyButton\"[MouseOver+WindowNotFocused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter.BACKGROUND_MOUSEOVER_WINDOWNOTFOCUSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.iconifyButton\"[Pressed+WindowNotFocused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter.BACKGROUND_PRESSED_WINDOWNOTFOCUSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\".contentMargins", new InsetsUIResource(9, 9, 9, 9));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\".States", "Enabled,MouseOver,Pressed,Disabled,Focused,Selected,WindowNotFocused,WindowMaximized");
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\".WindowNotFocused", new InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState());
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\".WindowMaximized", new InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowMaximizedState());
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[Disabled+WindowMaximized].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_DISABLED_WINDOWMAXIMIZED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[Enabled+WindowMaximized].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_ENABLED_WINDOWMAXIMIZED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[MouseOver+WindowMaximized].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_MOUSEOVER_WINDOWMAXIMIZED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[Pressed+WindowMaximized].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_PRESSED_WINDOWMAXIMIZED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[Enabled+WindowMaximized+WindowNotFocused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_ENABLED_WINDOWNOTFOCUSED_WINDOWMAXIMIZED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[MouseOver+WindowMaximized+WindowNotFocused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_MOUSEOVER_WINDOWNOTFOCUSED_WINDOWMAXIMIZED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[Pressed+WindowMaximized+WindowNotFocused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_PRESSED_WINDOWNOTFOCUSED_WINDOWMAXIMIZED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_DISABLED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_ENABLED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_MOUSEOVER, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_PRESSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[Enabled+WindowNotFocused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_ENABLED_WINDOWNOTFOCUSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[MouseOver+WindowNotFocused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_MOUSEOVER_WINDOWNOTFOCUSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.maximizeButton\"[Pressed+WindowNotFocused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.BACKGROUND_PRESSED_WINDOWNOTFOCUSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.closeButton\".contentMargins", new InsetsUIResource(9, 9, 9, 9));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.closeButton\".States", "Enabled,MouseOver,Pressed,Disabled,Focused,Selected,WindowNotFocused");
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.closeButton\".WindowNotFocused", new InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonWindowNotFocusedState());
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.closeButton\"[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter.BACKGROUND_DISABLED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.closeButton\"[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter.BACKGROUND_ENABLED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.closeButton\"[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter.BACKGROUND_MOUSEOVER, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.closeButton\"[Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter.BACKGROUND_PRESSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.closeButton\"[Enabled+WindowNotFocused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter.BACKGROUND_ENABLED_WINDOWNOTFOCUSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.closeButton\"[MouseOver+WindowNotFocused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter.BACKGROUND_MOUSEOVER_WINDOWNOTFOCUSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("InternalFrame:InternalFrameTitlePane:\"InternalFrameTitlePane.closeButton\"[Pressed+WindowNotFocused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter", InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter.BACKGROUND_PRESSED_WINDOWNOTFOCUSED, new Insets(0, 0, 0, 0), new Dimension(19, 18), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+
+        //Initialize DesktopIcon
+        d.put("DesktopIcon.contentMargins", new InsetsUIResource(4, 6, 5, 4));
+        d.put("DesktopIcon[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.DesktopIconPainter", DesktopIconPainter.BACKGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(28, 26), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+
+        //Initialize DesktopPane
+        d.put("DesktopPane.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("DesktopPane.opaque", Boolean.TRUE);
+        d.put("DesktopPane[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.DesktopPanePainter", DesktopPanePainter.BACKGROUND_ENABLED, new Insets(0, 0, 0, 0), new Dimension(300, 232), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+
+        //Initialize Label
+        d.put("Label.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Label[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+
+        //Initialize List
+        d.put("List.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("List.opaque", Boolean.TRUE);
+        d.put("List.background", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0));
+        d.put("List.rendererUseListColors", Boolean.TRUE);
+        d.put("List.rendererUseUIBorder", Boolean.TRUE);
+        d.put("List.cellNoFocusBorder", new BorderUIResource(BorderFactory.createEmptyBorder(2, 5, 2, 5)));
+        d.put("List.focusCellHighlightBorder", new BorderUIResource(new PainterBorder("Tree:TreeCell[Enabled+Focused].backgroundPainter", new Insets(2, 5, 2, 5))));
+        d.put("List.dropLineColor", getDerivedColor("nimbusFocus",0.0f,0.0f,0.0f,0));
+        d.put("List[Selected].textForeground", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0,false));
+        d.put("List[Selected].textBackground", getDerivedColor("nimbusSelectionBackground",0.0f,0.0f,0.0f,0,false));
+        d.put("List[Disabled+Selected].textBackground", getDerivedColor("nimbusSelectionBackground",0.0f,0.0f,0.0f,0,false));
+        d.put("List[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0,false));
+        d.put("List:\"List.cellRenderer\".contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("List:\"List.cellRenderer\".opaque", Boolean.TRUE);
+        d.put("List:\"List.cellRenderer\"[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("List:\"List.cellRenderer\"[Disabled].background", getDerivedColor("nimbusSelectionBackground",0.0f,0.0f,0.0f,0,false));
+
+        //Initialize MenuBar
+        d.put("MenuBar.contentMargins", new InsetsUIResource(2, 6, 2, 6));
+        d.put("MenuBar[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.MenuBarPainter", MenuBarPainter.BACKGROUND_ENABLED, new Insets(1, 0, 0, 0), new Dimension(18, 22), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("MenuBar[Enabled].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.MenuBarPainter", MenuBarPainter.BORDER_ENABLED, new Insets(0, 0, 1, 0), new Dimension(30, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("MenuBar:Menu.contentMargins", new InsetsUIResource(1, 4, 2, 4));
+        d.put("MenuBar:Menu[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("MenuBar:Menu[Enabled].textForeground", new ColorUIResource(new Color(35, 35, 36, 255)));
+        d.put("MenuBar:Menu[Selected].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("MenuBar:Menu[Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.MenuBarMenuPainter", MenuBarMenuPainter.BACKGROUND_SELECTED, new Insets(0, 0, 0, 0), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("MenuBar:Menu:MenuItemAccelerator.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+
+        //Initialize MenuItem
+        d.put("MenuItem.contentMargins", new InsetsUIResource(1, 12, 2, 13));
+        d.put("MenuItem.textIconGap", new Integer(5));
+        d.put("MenuItem[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("MenuItem[Enabled].textForeground", new ColorUIResource(new Color(35, 35, 36, 255)));
+        d.put("MenuItem[MouseOver].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("MenuItem[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.MenuItemPainter", MenuItemPainter.BACKGROUND_MOUSEOVER, new Insets(0, 0, 0, 0), new Dimension(100, 3), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("MenuItem:MenuItemAccelerator.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("MenuItem:MenuItemAccelerator[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("MenuItem:MenuItemAccelerator[MouseOver].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+
+        //Initialize RadioButtonMenuItem
+        d.put("RadioButtonMenuItem.contentMargins", new InsetsUIResource(1, 12, 2, 13));
+        d.put("RadioButtonMenuItem.textIconGap", new Integer(5));
+        d.put("RadioButtonMenuItem[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("RadioButtonMenuItem[Enabled].textForeground", new ColorUIResource(new Color(35, 35, 36, 255)));
+        d.put("RadioButtonMenuItem[MouseOver].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("RadioButtonMenuItem[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonMenuItemPainter", RadioButtonMenuItemPainter.BACKGROUND_MOUSEOVER, new Insets(0, 0, 0, 0), new Dimension(100, 3), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("RadioButtonMenuItem[MouseOver+Selected].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("RadioButtonMenuItem[MouseOver+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonMenuItemPainter", RadioButtonMenuItemPainter.BACKGROUND_SELECTED_MOUSEOVER, new Insets(0, 0, 0, 0), new Dimension(100, 3), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("RadioButtonMenuItem[Disabled+Selected].checkIconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonMenuItemPainter", RadioButtonMenuItemPainter.CHECKICON_DISABLED_SELECTED, new Insets(5, 5, 5, 5), new Dimension(9, 10), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButtonMenuItem[Enabled+Selected].checkIconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonMenuItemPainter", RadioButtonMenuItemPainter.CHECKICON_ENABLED_SELECTED, new Insets(5, 5, 5, 5), new Dimension(9, 10), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButtonMenuItem[MouseOver+Selected].checkIconPainter", new LazyPainter("javax.swing.plaf.nimbus.RadioButtonMenuItemPainter", RadioButtonMenuItemPainter.CHECKICON_SELECTED_MOUSEOVER, new Insets(5, 5, 5, 5), new Dimension(9, 10), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("RadioButtonMenuItem.checkIcon", new NimbusIcon("RadioButtonMenuItem", "checkIconPainter", 9, 10));
+        d.put("RadioButtonMenuItem:MenuItemAccelerator.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("RadioButtonMenuItem:MenuItemAccelerator[MouseOver].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+
+        //Initialize CheckBoxMenuItem
+        d.put("CheckBoxMenuItem.contentMargins", new InsetsUIResource(1, 12, 2, 13));
+        d.put("CheckBoxMenuItem.textIconGap", new Integer(5));
+        d.put("CheckBoxMenuItem[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("CheckBoxMenuItem[Enabled].textForeground", new ColorUIResource(new Color(35, 35, 36, 255)));
+        d.put("CheckBoxMenuItem[MouseOver].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("CheckBoxMenuItem[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxMenuItemPainter", CheckBoxMenuItemPainter.BACKGROUND_MOUSEOVER, new Insets(0, 0, 0, 0), new Dimension(100, 3), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("CheckBoxMenuItem[MouseOver+Selected].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("CheckBoxMenuItem[MouseOver+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxMenuItemPainter", CheckBoxMenuItemPainter.BACKGROUND_SELECTED_MOUSEOVER, new Insets(0, 0, 0, 0), new Dimension(100, 3), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("CheckBoxMenuItem[Disabled+Selected].checkIconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxMenuItemPainter", CheckBoxMenuItemPainter.CHECKICON_DISABLED_SELECTED, new Insets(5, 5, 5, 5), new Dimension(9, 10), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBoxMenuItem[Enabled+Selected].checkIconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxMenuItemPainter", CheckBoxMenuItemPainter.CHECKICON_ENABLED_SELECTED, new Insets(5, 5, 5, 5), new Dimension(9, 10), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBoxMenuItem[MouseOver+Selected].checkIconPainter", new LazyPainter("javax.swing.plaf.nimbus.CheckBoxMenuItemPainter", CheckBoxMenuItemPainter.CHECKICON_SELECTED_MOUSEOVER, new Insets(5, 5, 5, 5), new Dimension(9, 10), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("CheckBoxMenuItem.checkIcon", new NimbusIcon("CheckBoxMenuItem", "checkIconPainter", 9, 10));
+        d.put("CheckBoxMenuItem:MenuItemAccelerator.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("CheckBoxMenuItem:MenuItemAccelerator[MouseOver].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+
+        //Initialize Menu
+        d.put("Menu.contentMargins", new InsetsUIResource(1, 12, 2, 5));
+        d.put("Menu[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("Menu[Enabled].textForeground", new ColorUIResource(new Color(35, 35, 36, 255)));
+        d.put("Menu[Enabled+Selected].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("Menu[Enabled+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.MenuPainter", MenuPainter.BACKGROUND_ENABLED_SELECTED, new Insets(0, 0, 0, 0), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("Menu[Disabled].arrowIconPainter", new LazyPainter("javax.swing.plaf.nimbus.MenuPainter", MenuPainter.ARROWICON_DISABLED, new Insets(5, 5, 5, 5), new Dimension(9, 10), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Menu[Enabled].arrowIconPainter", new LazyPainter("javax.swing.plaf.nimbus.MenuPainter", MenuPainter.ARROWICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(9, 10), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Menu[Enabled+Selected].arrowIconPainter", new LazyPainter("javax.swing.plaf.nimbus.MenuPainter", MenuPainter.ARROWICON_ENABLED_SELECTED, new Insets(1, 1, 1, 1), new Dimension(9, 10), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Menu.arrowIcon", new NimbusIcon("Menu", "arrowIconPainter", 9, 10));
+        d.put("Menu:MenuItemAccelerator.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Menu:MenuItemAccelerator[MouseOver].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+
+        //Initialize PopupMenu
+        d.put("PopupMenu.contentMargins", new InsetsUIResource(6, 1, 6, 1));
+        d.put("PopupMenu.opaque", Boolean.TRUE);
+        d.put("PopupMenu.consumeEventOnClose", Boolean.TRUE);
+        d.put("PopupMenu[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.PopupMenuPainter", PopupMenuPainter.BACKGROUND_DISABLED, new Insets(9, 0, 11, 0), new Dimension(220, 313), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("PopupMenu[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.PopupMenuPainter", PopupMenuPainter.BACKGROUND_ENABLED, new Insets(11, 2, 11, 2), new Dimension(220, 313), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+
+        //Initialize PopupMenuSeparator
+        d.put("PopupMenuSeparator.contentMargins", new InsetsUIResource(1, 0, 2, 0));
+        d.put("PopupMenuSeparator[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.PopupMenuSeparatorPainter", PopupMenuSeparatorPainter.BACKGROUND_ENABLED, new Insets(1, 1, 1, 1), new Dimension(3, 3), true, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+
+        //Initialize OptionPane
+        d.put("OptionPane.contentMargins", new InsetsUIResource(15, 15, 15, 15));
+        d.put("OptionPane.opaque", Boolean.TRUE);
+        d.put("OptionPane.buttonOrientation", new Integer(4));
+        d.put("OptionPane.messageAnchor", new Integer(17));
+        d.put("OptionPane.separatorPadding", new Integer(0));
+        d.put("OptionPane.sameSizeButtons", Boolean.FALSE);
+        d.put("OptionPane:\"OptionPane.separator\".contentMargins", new InsetsUIResource(1, 0, 0, 0));
+        d.put("OptionPane:\"OptionPane.messageArea\".contentMargins", new InsetsUIResource(0, 0, 10, 0));
+        d.put("OptionPane:\"OptionPane.messageArea\":\"OptionPane.label\".contentMargins", new InsetsUIResource(0, 10, 10, 10));
+        d.put("OptionPane:\"OptionPane.messageArea\":\"OptionPane.label\"[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.OptionPaneOptionPaneMessageAreaOptionPaneLabelPainter", OptionPaneOptionPaneMessageAreaOptionPaneLabelPainter.BACKGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("OptionPane[Enabled].errorIconPainter", new LazyPainter("javax.swing.plaf.nimbus.OptionPanePainter", OptionPanePainter.ERRORICON_ENABLED, new Insets(0, 0, 0, 0), new Dimension(48, 48), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("OptionPane.errorIcon", new NimbusIcon("OptionPane", "errorIconPainter", 48, 48));
+        d.put("OptionPane[Enabled].informationIconPainter", new LazyPainter("javax.swing.plaf.nimbus.OptionPanePainter", OptionPanePainter.INFORMATIONICON_ENABLED, new Insets(0, 0, 0, 0), new Dimension(48, 48), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("OptionPane.informationIcon", new NimbusIcon("OptionPane", "informationIconPainter", 48, 48));
+        d.put("OptionPane[Enabled].questionIconPainter", new LazyPainter("javax.swing.plaf.nimbus.OptionPanePainter", OptionPanePainter.QUESTIONICON_ENABLED, new Insets(0, 0, 0, 0), new Dimension(48, 48), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("OptionPane.questionIcon", new NimbusIcon("OptionPane", "questionIconPainter", 48, 48));
+        d.put("OptionPane[Enabled].warningIconPainter", new LazyPainter("javax.swing.plaf.nimbus.OptionPanePainter", OptionPanePainter.WARNINGICON_ENABLED, new Insets(0, 0, 0, 0), new Dimension(48, 48), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("OptionPane.warningIcon", new NimbusIcon("OptionPane", "warningIconPainter", 48, 48));
+
+        //Initialize Panel
+        d.put("Panel.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Panel.opaque", Boolean.TRUE);
+
+        //Initialize ProgressBar
+        d.put("ProgressBar.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("ProgressBar.States", "Enabled,Disabled,Indeterminate,Finished");
+        d.put("ProgressBar.Indeterminate", new ProgressBarIndeterminateState());
+        d.put("ProgressBar.Finished", new ProgressBarFinishedState());
+        d.put("ProgressBar.tileWhenIndeterminate", Boolean.TRUE);
+        d.put("ProgressBar.tileWidth", new Integer(27));
+        d.put("ProgressBar.paintOutsideClip", Boolean.TRUE);
+        d.put("ProgressBar.rotateText", Boolean.TRUE);
+        d.put("ProgressBar.vertictalSize", new DimensionUIResource(19, 150));
+        d.put("ProgressBar.horizontalSize", new DimensionUIResource(150, 19));
+        d.put("ProgressBar.cycleTime", new Integer(250));
+        d.put("ProgressBar[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ProgressBarPainter", ProgressBarPainter.BACKGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(29, 19), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("ProgressBar[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("ProgressBar[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ProgressBarPainter", ProgressBarPainter.BACKGROUND_DISABLED, new Insets(5, 5, 5, 5), new Dimension(29, 19), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("ProgressBar[Enabled].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ProgressBarPainter", ProgressBarPainter.FOREGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(27, 19), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ProgressBar[Enabled+Finished].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ProgressBarPainter", ProgressBarPainter.FOREGROUND_ENABLED_FINISHED, new Insets(5, 5, 5, 5), new Dimension(27, 19), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ProgressBar[Enabled+Indeterminate].progressPadding", new Integer(3));
+        d.put("ProgressBar[Enabled+Indeterminate].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ProgressBarPainter", ProgressBarPainter.FOREGROUND_ENABLED_INDETERMINATE, new Insets(5, 5, 5, 5), new Dimension(30, 13), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ProgressBar[Disabled].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ProgressBarPainter", ProgressBarPainter.FOREGROUND_DISABLED, new Insets(5, 5, 5, 5), new Dimension(27, 19), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ProgressBar[Disabled+Finished].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ProgressBarPainter", ProgressBarPainter.FOREGROUND_DISABLED_FINISHED, new Insets(5, 5, 5, 5), new Dimension(27, 19), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ProgressBar[Disabled+Indeterminate].progressPadding", new Integer(3));
+        d.put("ProgressBar[Disabled+Indeterminate].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ProgressBarPainter", ProgressBarPainter.FOREGROUND_DISABLED_INDETERMINATE, new Insets(5, 5, 5, 5), new Dimension(30, 13), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+
+        //Initialize Separator
+        d.put("Separator.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Separator[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SeparatorPainter", SeparatorPainter.BACKGROUND_ENABLED, new Insets(0, 40, 0, 40), new Dimension(100, 3), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+
+        //Initialize ScrollBar
+        d.put("ScrollBar.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("ScrollBar.opaque", Boolean.TRUE);
+        d.put("ScrollBar.incrementButtonGap", new Integer(-8));
+        d.put("ScrollBar.decrementButtonGap", new Integer(-8));
+        d.put("ScrollBar.thumbHeight", new Integer(15));
+        d.put("ScrollBar.minimumThumbSize", new DimensionUIResource(29, 29));
+        d.put("ScrollBar.maximumThumbSize", new DimensionUIResource(1000, 1000));
+        d.put("ScrollBar:\"ScrollBar.button\".contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("ScrollBar:\"ScrollBar.button\".size", new Integer(25));
+        d.put("ScrollBar:\"ScrollBar.button\"[Enabled].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ScrollBarScrollBarButtonPainter", ScrollBarScrollBarButtonPainter.FOREGROUND_ENABLED, new Insets(1, 1, 1, 1), new Dimension(25, 15), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("ScrollBar:\"ScrollBar.button\"[Disabled].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ScrollBarScrollBarButtonPainter", ScrollBarScrollBarButtonPainter.FOREGROUND_DISABLED, new Insets(1, 1, 1, 1), new Dimension(25, 15), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("ScrollBar:\"ScrollBar.button\"[MouseOver].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ScrollBarScrollBarButtonPainter", ScrollBarScrollBarButtonPainter.FOREGROUND_MOUSEOVER, new Insets(1, 1, 1, 1), new Dimension(25, 15), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("ScrollBar:\"ScrollBar.button\"[Pressed].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ScrollBarScrollBarButtonPainter", ScrollBarScrollBarButtonPainter.FOREGROUND_PRESSED, new Insets(1, 1, 1, 1), new Dimension(25, 15), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("ScrollBar:ScrollBarThumb.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("ScrollBar:ScrollBarThumb[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ScrollBarScrollBarThumbPainter", ScrollBarScrollBarThumbPainter.BACKGROUND_ENABLED, new Insets(0, 15, 0, 15), new Dimension(38, 15), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ScrollBar:ScrollBarThumb[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ScrollBarScrollBarThumbPainter", ScrollBarScrollBarThumbPainter.BACKGROUND_MOUSEOVER, new Insets(0, 15, 0, 15), new Dimension(38, 15), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ScrollBar:ScrollBarThumb[Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ScrollBarScrollBarThumbPainter", ScrollBarScrollBarThumbPainter.BACKGROUND_PRESSED, new Insets(0, 15, 0, 15), new Dimension(38, 15), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ScrollBar:ScrollBarTrack.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("ScrollBar:ScrollBarTrack[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ScrollBarScrollBarTrackPainter", ScrollBarScrollBarTrackPainter.BACKGROUND_DISABLED, new Insets(5, 5, 5, 5), new Dimension(18, 15), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("ScrollBar:ScrollBarTrack[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ScrollBarScrollBarTrackPainter", ScrollBarScrollBarTrackPainter.BACKGROUND_ENABLED, new Insets(5, 10, 5, 9), new Dimension(34, 15), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+
+        //Initialize ScrollPane
+        d.put("ScrollPane.contentMargins", new InsetsUIResource(3, 3, 3, 3));
+        d.put("ScrollPane.useChildTextComponentFocus", Boolean.TRUE);
+        d.put("ScrollPane[Enabled+Focused].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.ScrollPanePainter", ScrollPanePainter.BORDER_ENABLED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("ScrollPane[Enabled].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.ScrollPanePainter", ScrollPanePainter.BORDER_ENABLED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+
+        //Initialize Viewport
+        d.put("Viewport.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Viewport.opaque", Boolean.TRUE);
+
+        //Initialize Slider
+        d.put("Slider.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Slider.States", "Enabled,MouseOver,Pressed,Disabled,Focused,Selected,ArrowShape");
+        d.put("Slider.ArrowShape", new SliderArrowShapeState());
+        d.put("Slider.thumbWidth", new Integer(17));
+        d.put("Slider.thumbHeight", new Integer(17));
+        d.put("Slider.trackBorder", new Integer(0));
+        d.put("Slider.paintValue", Boolean.FALSE);
+        d.put("Slider.tickColor", new ColorUIResource(new Color(35, 40, 48, 255)));
+        d.put("Slider:SliderThumb.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Slider:SliderThumb.States", "Enabled,MouseOver,Pressed,Disabled,Focused,Selected,ArrowShape");
+        d.put("Slider:SliderThumb.ArrowShape", new SliderSliderThumbArrowShapeState());
+        d.put("Slider:SliderThumb[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_DISABLED, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderThumb[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderThumb[Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderThumb[Focused+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_FOCUSED_MOUSEOVER, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderThumb[Focused+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_FOCUSED_PRESSED, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderThumb[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_MOUSEOVER, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderThumb[Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_PRESSED, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderThumb[ArrowShape+Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_ENABLED_ARROWSHAPE, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderThumb[ArrowShape+Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_DISABLED_ARROWSHAPE, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderThumb[ArrowShape+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_MOUSEOVER_ARROWSHAPE, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderThumb[ArrowShape+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_PRESSED_ARROWSHAPE, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderThumb[ArrowShape+Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_FOCUSED_ARROWSHAPE, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderThumb[ArrowShape+Focused+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_FOCUSED_MOUSEOVER_ARROWSHAPE, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderThumb[ArrowShape+Focused+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderThumbPainter", SliderSliderThumbPainter.BACKGROUND_FOCUSED_PRESSED_ARROWSHAPE, new Insets(5, 5, 5, 5), new Dimension(17, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Slider:SliderTrack.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Slider:SliderTrack.States", "Enabled,MouseOver,Pressed,Disabled,Focused,Selected,ArrowShape");
+        d.put("Slider:SliderTrack.ArrowShape", new SliderSliderTrackArrowShapeState());
+        d.put("Slider:SliderTrack[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderTrackPainter", SliderSliderTrackPainter.BACKGROUND_DISABLED, new Insets(6, 5, 6, 5), new Dimension(23, 17), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, 2.0));
+        d.put("Slider:SliderTrack[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SliderSliderTrackPainter", SliderSliderTrackPainter.BACKGROUND_ENABLED, new Insets(6, 5, 6, 5), new Dimension(23, 17), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+
+        //Initialize Spinner
+        d.put("Spinner.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Spinner:\"Spinner.editor\".contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Spinner:Panel:\"Spinner.formattedTextField\".contentMargins", new InsetsUIResource(6, 6, 5, 6));
+        d.put("Spinner:Panel:\"Spinner.formattedTextField\"[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("Spinner:Panel:\"Spinner.formattedTextField\"[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerPanelSpinnerFormattedTextFieldPainter", SpinnerPanelSpinnerFormattedTextFieldPainter.BACKGROUND_DISABLED, new Insets(5, 3, 3, 1), new Dimension(64, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("Spinner:Panel:\"Spinner.formattedTextField\"[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerPanelSpinnerFormattedTextFieldPainter", SpinnerPanelSpinnerFormattedTextFieldPainter.BACKGROUND_ENABLED, new Insets(5, 3, 3, 1), new Dimension(64, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("Spinner:Panel:\"Spinner.formattedTextField\"[Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerPanelSpinnerFormattedTextFieldPainter", SpinnerPanelSpinnerFormattedTextFieldPainter.BACKGROUND_FOCUSED, new Insets(5, 3, 3, 1), new Dimension(64, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("Spinner:Panel:\"Spinner.formattedTextField\"[Selected].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+        d.put("Spinner:Panel:\"Spinner.formattedTextField\"[Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerPanelSpinnerFormattedTextFieldPainter", SpinnerPanelSpinnerFormattedTextFieldPainter.BACKGROUND_SELECTED, new Insets(5, 3, 3, 1), new Dimension(64, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("Spinner:Panel:\"Spinner.formattedTextField\"[Focused+Selected].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+        d.put("Spinner:Panel:\"Spinner.formattedTextField\"[Focused+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerPanelSpinnerFormattedTextFieldPainter", SpinnerPanelSpinnerFormattedTextFieldPainter.BACKGROUND_SELECTED_FOCUSED, new Insets(5, 3, 3, 1), new Dimension(64, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("Spinner:\"Spinner.previousButton\".contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Spinner:\"Spinner.previousButton\".size", new Integer(20));
+        d.put("Spinner:\"Spinner.previousButton\"[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.BACKGROUND_DISABLED, new Insets(0, 1, 6, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.previousButton\"[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.BACKGROUND_ENABLED, new Insets(0, 1, 6, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.previousButton\"[Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.BACKGROUND_FOCUSED, new Insets(0, 1, 6, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.previousButton\"[Focused+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.BACKGROUND_MOUSEOVER_FOCUSED, new Insets(3, 1, 6, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.previousButton\"[Focused+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.BACKGROUND_PRESSED_FOCUSED, new Insets(0, 1, 6, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.previousButton\"[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.BACKGROUND_MOUSEOVER, new Insets(0, 1, 6, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.previousButton\"[Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.BACKGROUND_PRESSED, new Insets(0, 1, 6, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.previousButton\"[Disabled].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.FOREGROUND_DISABLED, new Insets(3, 6, 5, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.previousButton\"[Enabled].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.FOREGROUND_ENABLED, new Insets(3, 6, 5, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.previousButton\"[Focused].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.FOREGROUND_FOCUSED, new Insets(3, 6, 5, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.previousButton\"[Focused+MouseOver].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.FOREGROUND_MOUSEOVER_FOCUSED, new Insets(3, 6, 5, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.previousButton\"[Focused+Pressed].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.FOREGROUND_PRESSED_FOCUSED, new Insets(3, 6, 5, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.previousButton\"[MouseOver].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.FOREGROUND_MOUSEOVER, new Insets(3, 6, 5, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.previousButton\"[Pressed].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerPreviousButtonPainter", SpinnerSpinnerPreviousButtonPainter.FOREGROUND_PRESSED, new Insets(3, 6, 5, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\".contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Spinner:\"Spinner.nextButton\".size", new Integer(20));
+        d.put("Spinner:\"Spinner.nextButton\"[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.BACKGROUND_DISABLED, new Insets(7, 1, 1, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\"[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.BACKGROUND_ENABLED, new Insets(7, 1, 1, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\"[Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.BACKGROUND_FOCUSED, new Insets(7, 1, 1, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\"[Focused+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.BACKGROUND_MOUSEOVER_FOCUSED, new Insets(7, 1, 1, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\"[Focused+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.BACKGROUND_PRESSED_FOCUSED, new Insets(7, 1, 1, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\"[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.BACKGROUND_MOUSEOVER, new Insets(7, 1, 1, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\"[Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.BACKGROUND_PRESSED, new Insets(7, 1, 1, 7), new Dimension(20, 12), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\"[Disabled].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.FOREGROUND_DISABLED, new Insets(5, 6, 3, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\"[Enabled].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.FOREGROUND_ENABLED, new Insets(5, 6, 3, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\"[Focused].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.FOREGROUND_FOCUSED, new Insets(3, 6, 3, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\"[Focused+MouseOver].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.FOREGROUND_MOUSEOVER_FOCUSED, new Insets(3, 6, 3, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\"[Focused+Pressed].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.FOREGROUND_PRESSED_FOCUSED, new Insets(5, 6, 3, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\"[MouseOver].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.FOREGROUND_MOUSEOVER, new Insets(5, 6, 3, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Spinner:\"Spinner.nextButton\"[Pressed].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SpinnerSpinnerNextButtonPainter", SpinnerSpinnerNextButtonPainter.FOREGROUND_PRESSED, new Insets(5, 6, 3, 9), new Dimension(20, 12), true, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+
+        //Initialize SplitPane
+        d.put("SplitPane.contentMargins", new InsetsUIResource(1, 1, 1, 1));
+        d.put("SplitPane.States", "Enabled,MouseOver,Pressed,Disabled,Focused,Selected,Vertical");
+        d.put("SplitPane.Vertical", new SplitPaneVerticalState());
+        d.put("SplitPane.size", new Integer(10));
+        d.put("SplitPane.dividerSize", new Integer(10));
+        d.put("SplitPane.centerOneTouchButtons", Boolean.TRUE);
+        d.put("SplitPane.oneTouchButtonOffset", new Integer(30));
+        d.put("SplitPane.oneTouchExpandable", Boolean.FALSE);
+        d.put("SplitPane.continuousLayout", Boolean.TRUE);
+        d.put("SplitPane:SplitPaneDivider.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("SplitPane:SplitPaneDivider.States", "Enabled,MouseOver,Pressed,Disabled,Focused,Selected,Vertical");
+        d.put("SplitPane:SplitPaneDivider.Vertical", new SplitPaneSplitPaneDividerVerticalState());
+        d.put("SplitPane:SplitPaneDivider[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SplitPaneSplitPaneDividerPainter", SplitPaneSplitPaneDividerPainter.BACKGROUND_ENABLED, new Insets(3, 0, 3, 0), new Dimension(68, 10), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("SplitPane:SplitPaneDivider[Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SplitPaneSplitPaneDividerPainter", SplitPaneSplitPaneDividerPainter.BACKGROUND_FOCUSED, new Insets(3, 0, 3, 0), new Dimension(68, 10), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("SplitPane:SplitPaneDivider[Enabled].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SplitPaneSplitPaneDividerPainter", SplitPaneSplitPaneDividerPainter.FOREGROUND_ENABLED, new Insets(0, 24, 0, 24), new Dimension(68, 10), true, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("SplitPane:SplitPaneDivider[Enabled+Vertical].foregroundPainter", new LazyPainter("javax.swing.plaf.nimbus.SplitPaneSplitPaneDividerPainter", SplitPaneSplitPaneDividerPainter.FOREGROUND_ENABLED_VERTICAL, new Insets(5, 0, 5, 0), new Dimension(10, 38), true, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+
+        //Initialize TabbedPane
+        d.put("TabbedPane.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("TabbedPane.tabAreaStatesMatchSelectedTab", Boolean.TRUE);
+        d.put("TabbedPane.nudgeSelectedLabel", Boolean.FALSE);
+        d.put("TabbedPane.tabRunOverlay", new Integer(2));
+        d.put("TabbedPane.tabOverlap", new Integer(-1));
+        d.put("TabbedPane.extendTabsToBase", Boolean.TRUE);
+        d.put("TabbedPane.useBasicArrows", Boolean.TRUE);
+        d.put("TabbedPane.shadow", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("TabbedPane.darkShadow", getDerivedColor("text",0.0f,0.0f,0.0f,0));
+        d.put("TabbedPane.highlight", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0));
+        d.put("TabbedPane:TabbedPaneTab.contentMargins", new InsetsUIResource(2, 8, 3, 8));
+        d.put("TabbedPane:TabbedPaneTab[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabPainter", TabbedPaneTabbedPaneTabPainter.BACKGROUND_ENABLED, new Insets(7, 7, 1, 7), new Dimension(44, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTab[Enabled+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabPainter", TabbedPaneTabbedPaneTabPainter.BACKGROUND_ENABLED_MOUSEOVER, new Insets(7, 7, 1, 7), new Dimension(44, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTab[Enabled+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabPainter", TabbedPaneTabbedPaneTabPainter.BACKGROUND_ENABLED_PRESSED, new Insets(7, 6, 1, 7), new Dimension(44, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTab[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("TabbedPane:TabbedPaneTab[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabPainter", TabbedPaneTabbedPaneTabPainter.BACKGROUND_DISABLED, new Insets(6, 7, 1, 7), new Dimension(44, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTab[Disabled+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabPainter", TabbedPaneTabbedPaneTabPainter.BACKGROUND_SELECTED_DISABLED, new Insets(7, 7, 0, 7), new Dimension(44, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTab[Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabPainter", TabbedPaneTabbedPaneTabPainter.BACKGROUND_SELECTED, new Insets(7, 7, 0, 7), new Dimension(44, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTab[MouseOver+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabPainter", TabbedPaneTabbedPaneTabPainter.BACKGROUND_SELECTED_MOUSEOVER, new Insets(7, 9, 0, 9), new Dimension(44, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTab[Pressed+Selected].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("TabbedPane:TabbedPaneTab[Pressed+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabPainter", TabbedPaneTabbedPaneTabPainter.BACKGROUND_SELECTED_PRESSED, new Insets(7, 9, 0, 9), new Dimension(44, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTab[Focused+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabPainter", TabbedPaneTabbedPaneTabPainter.BACKGROUND_SELECTED_FOCUSED, new Insets(7, 7, 3, 7), new Dimension(44, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTab[Focused+MouseOver+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabPainter", TabbedPaneTabbedPaneTabPainter.BACKGROUND_SELECTED_MOUSEOVER_FOCUSED, new Insets(7, 9, 3, 9), new Dimension(44, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTab[Focused+Pressed+Selected].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("TabbedPane:TabbedPaneTab[Focused+Pressed+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabPainter", TabbedPaneTabbedPaneTabPainter.BACKGROUND_SELECTED_PRESSED_FOCUSED, new Insets(7, 9, 3, 9), new Dimension(44, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTabArea.contentMargins", new InsetsUIResource(3, 10, 4, 10));
+        d.put("TabbedPane:TabbedPaneTabArea[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabAreaPainter", TabbedPaneTabbedPaneTabAreaPainter.BACKGROUND_ENABLED, new Insets(0, 5, 6, 5), new Dimension(5, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTabArea[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabAreaPainter", TabbedPaneTabbedPaneTabAreaPainter.BACKGROUND_DISABLED, new Insets(0, 5, 6, 5), new Dimension(5, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTabArea[Enabled+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabAreaPainter", TabbedPaneTabbedPaneTabAreaPainter.BACKGROUND_ENABLED_MOUSEOVER, new Insets(0, 5, 6, 5), new Dimension(5, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneTabArea[Enabled+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TabbedPaneTabbedPaneTabAreaPainter", TabbedPaneTabbedPaneTabAreaPainter.BACKGROUND_ENABLED_PRESSED, new Insets(0, 5, 6, 5), new Dimension(5, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TabbedPane:TabbedPaneContent.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+
+        //Initialize Table
+        d.put("Table.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Table.opaque", Boolean.TRUE);
+        d.put("Table.textForeground", new ColorUIResource(new Color(35, 35, 36, 255)));
+        d.put("Table.background", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0));
+        d.put("Table.showGrid", Boolean.FALSE);
+        d.put("Table.intercellSpacing", new DimensionUIResource(0, 0));
+        d.put("Table.alternateRowColor", getDerivedColor("nimbusLightBackground",0.0f,0.0f,-0.05098039f,0,false));
+        d.put("Table.rendererUseTableColors", Boolean.TRUE);
+        d.put("Table.rendererUseUIBorder", Boolean.TRUE);
+        d.put("Table.cellNoFocusBorder", new BorderUIResource(BorderFactory.createEmptyBorder(2, 5, 2, 5)));
+        d.put("Table.focusCellHighlightBorder", new BorderUIResource(new PainterBorder("Tree:TreeCell[Enabled+Focused].backgroundPainter", new Insets(2, 5, 2, 5))));
+        d.put("Table.dropLineColor", getDerivedColor("nimbusFocus",0.0f,0.0f,0.0f,0));
+        d.put("Table.dropLineShortColor", getDerivedColor("nimbusOrange",0.0f,0.0f,0.0f,0));
+        d.put("Table[Enabled+Selected].textForeground", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0,false));
+        d.put("Table[Enabled+Selected].textBackground", getDerivedColor("nimbusSelectionBackground",0.0f,0.0f,0.0f,0,false));
+        d.put("Table[Disabled+Selected].textBackground", getDerivedColor("nimbusSelectionBackground",0.0f,0.0f,0.0f,0,false));
+        d.put("Table:\"Table.cellRenderer\".contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Table:\"Table.cellRenderer\".opaque", Boolean.TRUE);
+        d.put("Table:\"Table.cellRenderer\".background", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0,false));
+
+        //Initialize TableHeader
+        d.put("TableHeader.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("TableHeader.opaque", Boolean.TRUE);
+        d.put("TableHeader.rightAlignSortArrow", Boolean.TRUE);
+        d.put("TableHeader[Enabled].ascendingSortIconPainter", new LazyPainter("javax.swing.plaf.nimbus.TableHeaderPainter", TableHeaderPainter.ASCENDINGSORTICON_ENABLED, new Insets(0, 0, 0, 2), new Dimension(7, 7), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Table.ascendingSortIcon", new NimbusIcon("TableHeader", "ascendingSortIconPainter", 7, 7));
+        d.put("TableHeader[Enabled].descendingSortIconPainter", new LazyPainter("javax.swing.plaf.nimbus.TableHeaderPainter", TableHeaderPainter.DESCENDINGSORTICON_ENABLED, new Insets(0, 0, 0, 0), new Dimension(7, 7), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Table.descendingSortIcon", new NimbusIcon("TableHeader", "descendingSortIconPainter", 7, 7));
+        d.put("TableHeader:\"TableHeader.renderer\".contentMargins", new InsetsUIResource(2, 5, 4, 5));
+        d.put("TableHeader:\"TableHeader.renderer\".opaque", Boolean.TRUE);
+        d.put("TableHeader:\"TableHeader.renderer\".States", "Enabled,MouseOver,Pressed,Disabled,Focused,Selected,Sorted");
+        d.put("TableHeader:\"TableHeader.renderer\".Sorted", new TableHeaderTableHeaderRendererSortedState());
+        d.put("TableHeader:\"TableHeader.renderer\"[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TableHeaderTableHeaderRendererPainter", TableHeaderTableHeaderRendererPainter.BACKGROUND_DISABLED, new Insets(5, 5, 5, 5), new Dimension(22, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TableHeader:\"TableHeader.renderer\"[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TableHeaderTableHeaderRendererPainter", TableHeaderTableHeaderRendererPainter.BACKGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(22, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TableHeader:\"TableHeader.renderer\"[Enabled+Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TableHeaderTableHeaderRendererPainter", TableHeaderTableHeaderRendererPainter.BACKGROUND_ENABLED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(22, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TableHeader:\"TableHeader.renderer\"[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TableHeaderTableHeaderRendererPainter", TableHeaderTableHeaderRendererPainter.BACKGROUND_MOUSEOVER, new Insets(5, 5, 5, 5), new Dimension(22, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TableHeader:\"TableHeader.renderer\"[Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TableHeaderTableHeaderRendererPainter", TableHeaderTableHeaderRendererPainter.BACKGROUND_PRESSED, new Insets(5, 5, 5, 5), new Dimension(22, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TableHeader:\"TableHeader.renderer\"[Enabled+Sorted].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TableHeaderTableHeaderRendererPainter", TableHeaderTableHeaderRendererPainter.BACKGROUND_ENABLED_SORTED, new Insets(5, 5, 5, 5), new Dimension(22, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TableHeader:\"TableHeader.renderer\"[Enabled+Focused+Sorted].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TableHeaderTableHeaderRendererPainter", TableHeaderTableHeaderRendererPainter.BACKGROUND_ENABLED_FOCUSED_SORTED, new Insets(5, 5, 5, 5), new Dimension(22, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TableHeader:\"TableHeader.renderer\"[Disabled+Sorted].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TableHeaderTableHeaderRendererPainter", TableHeaderTableHeaderRendererPainter.BACKGROUND_DISABLED_SORTED, new Insets(5, 5, 5, 5), new Dimension(22, 20), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+
+        //Initialize \"Table.editor\"
+        d.put("\"Table.editor\".contentMargins", new InsetsUIResource(3, 5, 3, 5));
+        d.put("\"Table.editor\".opaque", Boolean.TRUE);
+        d.put("\"Table.editor\".background", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0));
+        d.put("\"Table.editor\"[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("\"Table.editor\"[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TableEditorPainter", TableEditorPainter.BACKGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("\"Table.editor\"[Enabled+Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TableEditorPainter", TableEditorPainter.BACKGROUND_ENABLED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("\"Table.editor\"[Selected].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+
+        //Initialize \"Tree.cellEditor\"
+        d.put("\"Tree.cellEditor\".contentMargins", new InsetsUIResource(2, 5, 2, 5));
+        d.put("\"Tree.cellEditor\".opaque", Boolean.TRUE);
+        d.put("\"Tree.cellEditor\".background", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0));
+        d.put("\"Tree.cellEditor\"[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("\"Tree.cellEditor\"[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TreeCellEditorPainter", TreeCellEditorPainter.BACKGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("\"Tree.cellEditor\"[Enabled+Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TreeCellEditorPainter", TreeCellEditorPainter.BACKGROUND_ENABLED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("\"Tree.cellEditor\"[Selected].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+
+        //Initialize TextField
+        d.put("TextField.contentMargins", new InsetsUIResource(6, 6, 6, 6));
+        d.put("TextField.background", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0));
+        d.put("TextField[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("TextField[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TextFieldPainter", TextFieldPainter.BACKGROUND_DISABLED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TextField[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TextFieldPainter", TextFieldPainter.BACKGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TextField[Selected].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+        d.put("TextField[Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TextFieldPainter", TextFieldPainter.BACKGROUND_SELECTED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TextField[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("TextField[Disabled].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.TextFieldPainter", TextFieldPainter.BORDER_DISABLED, new Insets(5, 3, 3, 3), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TextField[Focused].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.TextFieldPainter", TextFieldPainter.BORDER_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TextField[Enabled].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.TextFieldPainter", TextFieldPainter.BORDER_ENABLED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+
+        //Initialize FormattedTextField
+        d.put("FormattedTextField.contentMargins", new InsetsUIResource(6, 6, 6, 6));
+        d.put("FormattedTextField[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("FormattedTextField[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.FormattedTextFieldPainter", FormattedTextFieldPainter.BACKGROUND_DISABLED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("FormattedTextField[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.FormattedTextFieldPainter", FormattedTextFieldPainter.BACKGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("FormattedTextField[Selected].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+        d.put("FormattedTextField[Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.FormattedTextFieldPainter", FormattedTextFieldPainter.BACKGROUND_SELECTED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("FormattedTextField[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("FormattedTextField[Disabled].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.FormattedTextFieldPainter", FormattedTextFieldPainter.BORDER_DISABLED, new Insets(5, 3, 3, 3), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("FormattedTextField[Focused].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.FormattedTextFieldPainter", FormattedTextFieldPainter.BORDER_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("FormattedTextField[Enabled].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.FormattedTextFieldPainter", FormattedTextFieldPainter.BORDER_ENABLED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+
+        //Initialize PasswordField
+        d.put("PasswordField.contentMargins", new InsetsUIResource(6, 6, 6, 6));
+        d.put("PasswordField[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("PasswordField[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.PasswordFieldPainter", PasswordFieldPainter.BACKGROUND_DISABLED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("PasswordField[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.PasswordFieldPainter", PasswordFieldPainter.BACKGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("PasswordField[Selected].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+        d.put("PasswordField[Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.PasswordFieldPainter", PasswordFieldPainter.BACKGROUND_SELECTED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("PasswordField[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("PasswordField[Disabled].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.PasswordFieldPainter", PasswordFieldPainter.BORDER_DISABLED, new Insets(5, 3, 3, 3), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("PasswordField[Focused].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.PasswordFieldPainter", PasswordFieldPainter.BORDER_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("PasswordField[Enabled].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.PasswordFieldPainter", PasswordFieldPainter.BORDER_ENABLED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+
+        //Initialize TextArea
+        d.put("TextArea.contentMargins", new InsetsUIResource(6, 6, 6, 6));
+        d.put("TextArea.States", "Enabled,MouseOver,Pressed,Selected,Disabled,Focused,NotInScrollPane");
+        d.put("TextArea.NotInScrollPane", new TextAreaNotInScrollPaneState());
+        d.put("TextArea[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("TextArea[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TextAreaPainter", TextAreaPainter.BACKGROUND_DISABLED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("TextArea[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TextAreaPainter", TextAreaPainter.BACKGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("TextArea[Disabled+NotInScrollPane].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("TextArea[Disabled+NotInScrollPane].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TextAreaPainter", TextAreaPainter.BACKGROUND_DISABLED_NOTINSCROLLPANE, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("TextArea[Enabled+NotInScrollPane].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TextAreaPainter", TextAreaPainter.BACKGROUND_ENABLED_NOTINSCROLLPANE, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("TextArea[Selected].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+        d.put("TextArea[Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TextAreaPainter", TextAreaPainter.BACKGROUND_SELECTED, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("TextArea[Disabled+NotInScrollPane].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("TextArea[Disabled+NotInScrollPane].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.TextAreaPainter", TextAreaPainter.BORDER_DISABLED_NOTINSCROLLPANE, new Insets(5, 3, 3, 3), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TextArea[Focused+NotInScrollPane].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.TextAreaPainter", TextAreaPainter.BORDER_FOCUSED_NOTINSCROLLPANE, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+        d.put("TextArea[Enabled+NotInScrollPane].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.TextAreaPainter", TextAreaPainter.BORDER_ENABLED_NOTINSCROLLPANE, new Insets(5, 5, 5, 5), new Dimension(122, 24), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
+
+        //Initialize TextPane
+        d.put("TextPane.contentMargins", new InsetsUIResource(4, 6, 4, 6));
+        d.put("TextPane.opaque", Boolean.TRUE);
+        d.put("TextPane[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("TextPane[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TextPanePainter", TextPanePainter.BACKGROUND_DISABLED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("TextPane[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TextPanePainter", TextPanePainter.BACKGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("TextPane[Selected].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+        d.put("TextPane[Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TextPanePainter", TextPanePainter.BACKGROUND_SELECTED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+
+        //Initialize EditorPane
+        d.put("EditorPane.contentMargins", new InsetsUIResource(4, 6, 4, 6));
+        d.put("EditorPane.opaque", Boolean.TRUE);
+        d.put("EditorPane[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("EditorPane[Disabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.EditorPanePainter", EditorPanePainter.BACKGROUND_DISABLED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("EditorPane[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.EditorPanePainter", EditorPanePainter.BACKGROUND_ENABLED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("EditorPane[Selected].textForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0));
+        d.put("EditorPane[Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.EditorPanePainter", EditorPanePainter.BACKGROUND_SELECTED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+
+        //Initialize ToolBar
+        d.put("ToolBar.contentMargins", new InsetsUIResource(2, 2, 2, 2));
+        d.put("ToolBar.opaque", Boolean.TRUE);
+        d.put("ToolBar.States", "North,East,West,South");
+        d.put("ToolBar.North", new ToolBarNorthState());
+        d.put("ToolBar.East", new ToolBarEastState());
+        d.put("ToolBar.West", new ToolBarWestState());
+        d.put("ToolBar.South", new ToolBarSouthState());
+        d.put("ToolBar[North].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarPainter", ToolBarPainter.BORDER_NORTH, new Insets(0, 0, 1, 0), new Dimension(30, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("ToolBar[South].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarPainter", ToolBarPainter.BORDER_SOUTH, new Insets(1, 0, 0, 0), new Dimension(30, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("ToolBar[East].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarPainter", ToolBarPainter.BORDER_EAST, new Insets(1, 0, 0, 0), new Dimension(30, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("ToolBar[West].borderPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarPainter", ToolBarPainter.BORDER_WEST, new Insets(0, 0, 1, 0), new Dimension(30, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("ToolBar[Enabled].handleIconPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarPainter", ToolBarPainter.HANDLEICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(11, 38), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar.handleIcon", new NimbusIcon("ToolBar", "handleIconPainter", 11, 38));
+        d.put("ToolBar:Button.contentMargins", new InsetsUIResource(4, 4, 4, 4));
+        d.put("ToolBar:Button[Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarButtonPainter", ToolBarButtonPainter.BACKGROUND_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:Button[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarButtonPainter", ToolBarButtonPainter.BACKGROUND_MOUSEOVER, new Insets(5, 5, 5, 5), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:Button[Focused+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarButtonPainter", ToolBarButtonPainter.BACKGROUND_MOUSEOVER_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:Button[Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarButtonPainter", ToolBarButtonPainter.BACKGROUND_PRESSED, new Insets(5, 5, 5, 5), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:Button[Focused+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarButtonPainter", ToolBarButtonPainter.BACKGROUND_PRESSED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(104, 33), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:ToggleButton.contentMargins", new InsetsUIResource(4, 4, 4, 4));
+        d.put("ToolBar:ToggleButton[Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarToggleButtonPainter", ToolBarToggleButtonPainter.BACKGROUND_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(104, 34), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:ToggleButton[MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarToggleButtonPainter", ToolBarToggleButtonPainter.BACKGROUND_MOUSEOVER, new Insets(5, 5, 5, 5), new Dimension(104, 34), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:ToggleButton[Focused+MouseOver].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarToggleButtonPainter", ToolBarToggleButtonPainter.BACKGROUND_MOUSEOVER_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(104, 34), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:ToggleButton[Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarToggleButtonPainter", ToolBarToggleButtonPainter.BACKGROUND_PRESSED, new Insets(5, 5, 5, 5), new Dimension(72, 25), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:ToggleButton[Focused+Pressed].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarToggleButtonPainter", ToolBarToggleButtonPainter.BACKGROUND_PRESSED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(72, 25), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:ToggleButton[Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarToggleButtonPainter", ToolBarToggleButtonPainter.BACKGROUND_SELECTED, new Insets(5, 5, 5, 5), new Dimension(72, 25), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:ToggleButton[Focused+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarToggleButtonPainter", ToolBarToggleButtonPainter.BACKGROUND_SELECTED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(72, 25), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:ToggleButton[Pressed+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarToggleButtonPainter", ToolBarToggleButtonPainter.BACKGROUND_PRESSED_SELECTED, new Insets(5, 5, 5, 5), new Dimension(72, 25), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:ToggleButton[Focused+Pressed+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarToggleButtonPainter", ToolBarToggleButtonPainter.BACKGROUND_PRESSED_SELECTED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(72, 25), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:ToggleButton[MouseOver+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarToggleButtonPainter", ToolBarToggleButtonPainter.BACKGROUND_MOUSEOVER_SELECTED, new Insets(5, 5, 5, 5), new Dimension(72, 25), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:ToggleButton[Focused+MouseOver+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarToggleButtonPainter", ToolBarToggleButtonPainter.BACKGROUND_MOUSEOVER_SELECTED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(72, 25), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+        d.put("ToolBar:ToggleButton[Disabled+Selected].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("ToolBar:ToggleButton[Disabled+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolBarToggleButtonPainter", ToolBarToggleButtonPainter.BACKGROUND_DISABLED_SELECTED, new Insets(5, 5, 5, 5), new Dimension(72, 25), false, AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE, 2.0, Double.POSITIVE_INFINITY));
+
+        //Initialize ToolBarSeparator
+        d.put("ToolBarSeparator.contentMargins", new InsetsUIResource(2, 0, 3, 0));
+        d.put("ToolBarSeparator.textForeground", getDerivedColor("nimbusBorder",0.0f,0.0f,0.0f,0));
+
+        //Initialize ToolTip
+        d.put("ToolTip.contentMargins", new InsetsUIResource(4, 4, 4, 4));
+        d.put("ToolTip[Enabled].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.ToolTipPainter", ToolTipPainter.BACKGROUND_ENABLED, new Insets(1, 1, 1, 1), new Dimension(10, 10), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+
+        //Initialize Tree
+        d.put("Tree.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Tree.opaque", Boolean.TRUE);
+        d.put("Tree.textForeground", getDerivedColor("text",0.0f,0.0f,0.0f,0,false));
+        d.put("Tree.textBackground", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0,false));
+        d.put("Tree.background", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0));
+        d.put("Tree.rendererFillBackground", Boolean.FALSE);
+        d.put("Tree.leftChildIndent", new Integer(12));
+        d.put("Tree.rightChildIndent", new Integer(4));
+        d.put("Tree.drawHorizontalLines", Boolean.FALSE);
+        d.put("Tree.drawVerticalLines", Boolean.FALSE);
+        d.put("Tree.showRootHandles", Boolean.FALSE);
+        d.put("Tree.rendererUseTreeColors", Boolean.TRUE);
+        d.put("Tree.repaintWholeRow", Boolean.TRUE);
+        d.put("Tree.rowHeight", new Integer(0));
+        d.put("Tree.rendererMargins", new InsetsUIResource(2, 0, 1, 5));
+        d.put("Tree.selectionForeground", getDerivedColor("nimbusSelectedText",0.0f,0.0f,0.0f,0,false));
+        d.put("Tree.selectionBackground", getDerivedColor("nimbusSelectionBackground",0.0f,0.0f,0.0f,0,false));
+        d.put("Tree.dropLineColor", getDerivedColor("nimbusFocus",0.0f,0.0f,0.0f,0));
+        d.put("Tree:TreeCell.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Tree:TreeCell[Enabled].background", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0));
+        d.put("Tree:TreeCell[Enabled+Focused].background", getDerivedColor("nimbusLightBackground",0.0f,0.0f,0.0f,0));
+        d.put("Tree:TreeCell[Enabled+Focused].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TreeTreeCellPainter", TreeTreeCellPainter.BACKGROUND_ENABLED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("Tree:TreeCell[Enabled+Selected].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("Tree:TreeCell[Enabled+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TreeTreeCellPainter", TreeTreeCellPainter.BACKGROUND_ENABLED_SELECTED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("Tree:TreeCell[Focused+Selected].textForeground", new ColorUIResource(new Color(255, 255, 255, 255)));
+        d.put("Tree:TreeCell[Focused+Selected].backgroundPainter", new LazyPainter("javax.swing.plaf.nimbus.TreeTreeCellPainter", TreeTreeCellPainter.BACKGROUND_SELECTED_FOCUSED, new Insets(5, 5, 5, 5), new Dimension(100, 30), false, AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING, 1.0, 1.0));
+        d.put("Tree:\"Tree.cellRenderer\".contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("Tree:\"Tree.cellRenderer\"[Disabled].textForeground", getDerivedColor("nimbusDisabledText",0.0f,0.0f,0.0f,0));
+        d.put("Tree[Enabled].leafIconPainter", new LazyPainter("javax.swing.plaf.nimbus.TreePainter", TreePainter.LEAFICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(16, 16), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Tree.leafIcon", new NimbusIcon("Tree", "leafIconPainter", 16, 16));
+        d.put("Tree[Enabled].closedIconPainter", new LazyPainter("javax.swing.plaf.nimbus.TreePainter", TreePainter.CLOSEDICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(16, 16), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Tree.closedIcon", new NimbusIcon("Tree", "closedIconPainter", 16, 16));
+        d.put("Tree[Enabled].openIconPainter", new LazyPainter("javax.swing.plaf.nimbus.TreePainter", TreePainter.OPENICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(16, 16), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Tree.openIcon", new NimbusIcon("Tree", "openIconPainter", 16, 16));
+        d.put("Tree[Enabled].collapsedIconPainter", new LazyPainter("javax.swing.plaf.nimbus.TreePainter", TreePainter.COLLAPSEDICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(18, 7), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Tree[Enabled+Selected].collapsedIconPainter", new LazyPainter("javax.swing.plaf.nimbus.TreePainter", TreePainter.COLLAPSEDICON_ENABLED_SELECTED, new Insets(5, 5, 5, 5), new Dimension(18, 7), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Tree.collapsedIcon", new NimbusIcon("Tree", "collapsedIconPainter", 18, 7));
+        d.put("Tree[Enabled].expandedIconPainter", new LazyPainter("javax.swing.plaf.nimbus.TreePainter", TreePainter.EXPANDEDICON_ENABLED, new Insets(5, 5, 5, 5), new Dimension(18, 7), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Tree[Enabled+Selected].expandedIconPainter", new LazyPainter("javax.swing.plaf.nimbus.TreePainter", TreePainter.EXPANDEDICON_ENABLED_SELECTED, new Insets(5, 5, 5, 5), new Dimension(18, 7), false, AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES, 1.0, 1.0));
+        d.put("Tree.expandedIcon", new NimbusIcon("Tree", "expandedIconPainter", 18, 7));
+
+        //Initialize RootPane
+        d.put("RootPane.contentMargins", new InsetsUIResource(0, 0, 0, 0));
+        d.put("RootPane.opaque", Boolean.TRUE);
+        d.put("RootPane.background", getDerivedColor("control",0.0f,0.0f,0.0f,0));
+
+
+    }
+
+    /**
+     * <p>Registers the given region and prefix. The prefix, if it contains
+     * quoted sections, refers to certain named components. If there are not
+     * quoted sections, then the prefix refers to a generic component type.</p>
+     *
+     * <p>If the given region/prefix combo has already been registered, then
+     * it will not be registered twice. The second registration attempt will
+     * fail silently.</p>
+     *
+     * @param region The Synth Region that is being registered. Such as Button,
+     *        or ScrollBarThumb.
+     * @param prefix The UIDefault prefix. For example, could be ComboBox, or if
+     *        a named components, "MyComboBox", or even something like
+     *        ToolBar:"MyComboBox":"ComboBox.arrowButton"
+     */
+    void register(Region region, String prefix) {
+        //validate the method arguments
+        if (region == null || prefix == null) {
+            throw new IllegalArgumentException(
+                    "Neither Region nor Prefix may be null");
+        }
+
+        //Add a LazyStyle for this region/prefix to m.
+        List<LazyStyle> styles = m.get(region);
+        if (styles == null) {
+            styles = new LinkedList<LazyStyle>();
+            styles.add(new LazyStyle(prefix));
+            m.put(region, styles);
+        } else {
+            //iterate over all the current styles and see if this prefix has
+            //already been registered. If not, then register it.
+            for (LazyStyle s : styles) {
+                if (prefix.equals(s.prefix)) {
+                    return;
+                }
+            }
+            styles.add(new LazyStyle(prefix));
+        }
+
+        //add this region to the map of registered regions
+        registeredRegions.put(region.getName(), region);
+    }
+
+    /**
+     * <p>Locate the style associated with the given region, and component.
+     * This is called from NimbusLookAndFeel in the SynthStyleFactory
+     * implementation.</p>
+     *
+     * <p>Lookup occurs as follows:<br/>
+     * Check the map of styles <code>m</code>. If the map contains no styles at
+     * all, then simply return the defaultStyle. If the map contains styles,
+     * then iterate over all of the styles for the Region <code>r</code> looking
+     * for the best match, based on prefix. If a match was made, then return
+     * that SynthStyle. Otherwise, return the defaultStyle.</p>
+     *
+     * @param comp The component associated with this region. For example, if
+     *        the Region is Region.Button then the component will be a JButton.
+     *        If the Region is a subregion, such as ScrollBarThumb, then the
+     *        associated component will be the component that subregion belongs
+     *        to, such as JScrollBar. The JComponent may be named. It may not be
+     *        null.
+     * @param r The region we are looking for a style for. May not be null.
+     */
+    SynthStyle getStyle(JComponent comp, Region r) {
+        //validate method arguments
+        if (comp == null || r == null) {
+            throw new IllegalArgumentException(
+                    "Neither comp nor r may be null");
+        }
+
+        //if there are no lazy styles registered for the region r, then return
+        //the default style
+        List<LazyStyle> styles = m.get(r);
+        if (styles == null || styles.size() == 0) {
+            return defaultStyle;
+        }
+
+        //Look for the best SynthStyle for this component/region pair.
+        LazyStyle foundStyle = null;
+        for (LazyStyle s : styles) {
+            if (s.matches(comp)) {
+                //replace the foundStyle if foundStyle is null, or
+                //if the new style "s" is more specific (ie, its path was
+                //longer), or if the foundStyle was "simple" and the new style
+                //was not (ie: the foundStyle was for something like Button and
+                //the new style was for something like "MyButton", hence, being
+                //more specific.) In all cases, favor the most specific style
+                //found.
+                if (foundStyle == null ||
+                   (foundStyle.parts.length < s.parts.length) ||
+                   (foundStyle.parts.length == s.parts.length 
+                    && foundStyle.simple && !s.simple)) {
+                    foundStyle = s;
+                }
+            }
+        }
+
+        //return the style, if found, or the default style if not found
+        return foundStyle == null ? defaultStyle : foundStyle.getStyle(comp);
+    }
+
+    /*
+        Various public helper classes.
+        These may be used to register 3rd party values into UIDefaults
+    */
+
+    /**
+     * <p>Derives its font value based on a parent font and a set of offsets and
+     * attributes. This class is an ActiveValue, meaning that it will recompute
+     * its value each time it is requested from UIDefaults. It is therefore
+     * recommended to read this value once and cache it in the UI delegate class
+     * until asked to reinitialize.</p>
+     *
+     * <p>To use this class, create an instance with the key of the font in the
+     * UI defaults table from which to derive this font, along with a size
+     * offset (if any), and whether it is to be bold, italic, or left in its
+     * default form.</p>
+     */
+    public static final class DerivedFont implements UIDefaults.ActiveValue {
+        private float sizeOffset;
+        private Boolean bold;
+        private Boolean italic;
+        private String parentKey;
+
+        /**
+         * Create a new DerivedFont.
+         *
+         * @param key The UIDefault key associated with this derived font's
+         *            parent or source. If this key leads to a null value, or a
+         *            value that is not a font, then null will be returned as
+         *            the derived font. The key must not be null.
+         * @param sizeOffset The size offset, as a percentage, to use. For
+         *                   example, if the source font was a 12pt font and the
+         *                   sizeOffset were specified as .9, then the new font
+         *                   will be 90% of what the source font was, or, 10.8
+         *                   pts which is rounded to 11pts. This fractional
+         *                   based offset allows for proper font scaling in high
+         *                   DPI or large system font scenarios.
+         * @param bold Whether the new font should be bold. If null, then this
+         *             new font will inherit the bold setting of the source
+         *             font.
+         * @param italic Whether the new font should be italicized. If null,
+         *               then this new font will inherit the italic setting of
+         *               the source font.
+         */
+        public DerivedFont(String key, float sizeOffset, Boolean bold,
+                           Boolean italic) {
+            //validate the constructor arguments
+            if (key == null) {
+                throw new IllegalArgumentException("You must specify a key");
+            }
+
+            //set the values
+            this.parentKey = key;
+            this.sizeOffset = sizeOffset;
+            this.bold = bold;
+            this.italic = italic;
+        }
+
+        /**
+         * @inheritDoc
+         */
+        @Override
+        public Object createValue(UIDefaults defaults) {
+            Font f = defaults.getFont(parentKey);
+            if (f != null) {
+                // always round size for now so we have exact int font size
+                // (or we may have lame looking fonts)
+                float size = Math.round(f.getSize2D() * sizeOffset);
+                int style = f.getStyle();
+                if (bold != null) {
+                    if (bold.booleanValue()) {
+                        style = style | Font.BOLD;
+                    } else {
+                        style = style & ~Font.BOLD;
+                    }
+                }
+                if (italic != null) {
+                    if (italic.booleanValue()) {
+                        style = style | Font.ITALIC;
+                    } else {
+                        style = style & ~Font.ITALIC;
+                    }
+                }
+                return f.deriveFont(style, size);
+            } else {
+                return null;
+            }
+        }
+    }
+
+
+    /**
+     * This class is private because it relies on the constructor of the
+     * auto-generated AbstractRegionPainter subclasses. Hence, it is not
+     * generally useful, and is private.
+     * <p/>
+     * LazyPainter is a LazyValue class. It will create the
+     * AbstractRegionPainter lazily, when asked. It uses reflection to load the
+     * proper class and invoke its constructor.
+     */
+    private static final class LazyPainter implements UIDefaults.LazyValue {
+        private int which;
+        private AbstractRegionPainter.PaintContext ctx;
+        private String className;
+
+        LazyPainter(String className, int which, Insets insets,
+                    Dimension canvasSize, boolean inverted) {
+            if (className == null) {
+                throw new IllegalArgumentException(
+                        "The className must be specified");
+            }
+
+            this.className = className;
+            this.which = which;
+            this.ctx = new AbstractRegionPainter.PaintContext(
+                insets, canvasSize, inverted);
+        }
+
+        LazyPainter(String className, int which, Insets insets,
+                    Dimension canvasSize, boolean inverted,
+                    AbstractRegionPainter.PaintContext.CacheMode cacheMode,
+                    double maxH, double maxV) {
+            if (className == null) {
+                throw new IllegalArgumentException(
+                        "The className must be specified");
+            }
+
+            this.className = className;
+            this.which = which;
+            this.ctx = new AbstractRegionPainter.PaintContext(
+                    insets, canvasSize, inverted, cacheMode, maxH, maxV);
+        }
+
+        @Override
+        public Object createValue(UIDefaults table) {
+            try {
+                Class c;
+                Object cl;
+                // See if we should use a separate ClassLoader
+                if (table == null || !((cl = table.get("ClassLoader"))
+                                       instanceof ClassLoader)) {
+                    cl = Thread.currentThread().
+                                getContextClassLoader();
+                    if (cl == null) {
+                        // Fallback to the system class loader.
+                        cl = ClassLoader.getSystemClassLoader();
+                    }
+                }
+
+                c = Class.forName(className, true, (ClassLoader)cl);
+                Constructor constructor = c.getConstructor(
+                        AbstractRegionPainter.PaintContext.class, int.class);
+                if (constructor == null) {
+                    throw new NullPointerException(
+                            "Failed to find the constructor for the class: " +
+                            className);
+                }
+                return constructor.newInstance(ctx, which);
+            } catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    /**
+     * A class which creates the NimbusStyle associated with it lazily, but also
+     * manages a lot more information about the style. It is less of a LazyValue
+     * type of class, and more of an Entry or Item type of class, as it
+     * represents an entry in the list of LazyStyles in the map m.
+     *
+     * The primary responsibilities of this class include:
+     * <ul>
+     *   <li>Determining whether a given component/region pair matches this
+     *       style</li>
+     *   <li>Splitting the prefix specified in the constructor into its
+     *       constituent parts to facilitate quicker matching</li>
+     *   <li>Creating and vending a NimbusStyle lazily.</li>
+     * </ul>
+     */
+    private final class LazyStyle {
+        /**
+         * The prefix this LazyStyle was registered with. Something like
+         * Button or ComboBox:"ComboBox.arrowButton"
+         */
+        private String prefix;
+        /**
+         * Whether or not this LazyStyle represents an unnamed component
+         */
+        private boolean simple = true;
+        /**
+         * The various parts, or sections, of the prefix. For example,
+         * the prefix:
+         *     ComboBox:"ComboBox.arrowButton"
+         *
+         * will be broken into two parts,
+         *     ComboBox and "ComboBox.arrowButton"
+         */
+        private Part[] parts;
+        /**
+         * Cached shared style.
+         */
+        private NimbusStyle style;
+        /**
+         * A weakly referenced hash map such that if the reference JComponent
+         * key is garbage collected then the entry is removed from the map.
+         * This cache exists so that when a JComponent has nimbus overrides
+         * in its client map, a unique style will be created and returned
+         * for that JComponent instance, always. In such a situation each
+         * JComponent instance must have its own instance of NimbusStyle.
+         */
+        private WeakHashMap<JComponent, WeakReference<NimbusStyle>> overridesCache;
+
+        /**
+         * Create a new LazyStyle.
+         *
+         * @param prefix The prefix associated with this style. Cannot be null.
+         */
+        private LazyStyle(String prefix) {
+            if (prefix == null) {
+                throw new IllegalArgumentException(
+                        "The prefix must not be null");
+            }
+
+            this.prefix = prefix;
+
+            //there is one odd case that needs to be supported here: cell
+            //renderers. A cell renderer is defined as a named internal
+            //component, so for example:
+            // List."List.cellRenderer"
+            //The problem is that the component named List.cellRenderer is not a
+            //child of a JList. Rather, it is treated more as a direct component
+            //Thus, if the prefix ends with "cellRenderer", then remove all the
+            //previous dotted parts of the prefix name so that it becomes, for
+            //example: "List.cellRenderer"
+            //Likewise, we have a hacked work around for cellRenderer, renderer,
+            //and listRenderer.
+            String temp = prefix;
+            if (temp.endsWith("cellRenderer\"")
+                    || temp.endsWith("renderer\"")
+                    || temp.endsWith("listRenderer\"")) {
+                temp = temp.substring(temp.lastIndexOf(":\"") + 1);
+            }
+
+            //otherwise, normal code path
+            List<String> sparts = split(temp);
+            parts = new Part[sparts.size()];
+            for (int i = 0; i < parts.length; i++) {
+                parts[i] = new Part(sparts.get(i));
+                if (parts[i].named) {
+                    simple = false;
+                }
+            }
+        }
+
+        /**
+         * Gets the style. Creates it if necessary.
+         * @return the style
+         */
+        SynthStyle getStyle(JComponent c) {
+            // if the component has overrides, it gets its own unique style
+            // instead of the shared style.
+            if (c.getClientProperty("Nimbus.Overrides") != null) {
+                if (overridesCache == null)
+                    overridesCache = new WeakHashMap<JComponent, WeakReference<NimbusStyle>>();
+                WeakReference<NimbusStyle> ref = overridesCache.get(c);
+                NimbusStyle s = ref == null ? null : ref.get();
+                if (s == null) {
+                    s = new NimbusStyle(prefix, c);
+                    overridesCache.put(c, new WeakReference<NimbusStyle>(s));
+                }
+                return s;
+            }
+            
+            // lazily create the style if necessary
+            if (style == null)
+                style = new NimbusStyle(prefix, null);
+            
+            // return the style
+            return style;
+        }
+
+        /**
+         * This LazyStyle is a match for the given component if, and only if,
+         * for each part of the prefix the component hierarchy matches exactly.
+         * That is, if given "a":something:"b", then:
+         * c.getName() must equals "b"
+         * c.getParent() can be anything
+         * c.getParent().getParent().getName() must equal "a".
+         */
+        boolean matches(JComponent c) {
+            return matches(c, parts.length - 1);
+        }
+
+        private boolean matches(Component c, int partIndex) {
+            if (partIndex < 0) return true;
+            if (c == null) return false;
+            //only get here if partIndex > 0 and c == null
+
+            String name = c.getName();
+            if (parts[partIndex].named && parts[partIndex].s.equals(name)) {
+                //so far so good, recurse
+                return matches(c.getParent(), partIndex - 1);
+            } else if (!parts[partIndex].named) {
+                //if c is not named, and parts[partIndex] has an expected class
+                //type registered, then check to make sure c is of the
+                //right type;
+                Class clazz = parts[partIndex].c;
+                if (clazz != null && clazz.isAssignableFrom(c.getClass())) {
+                    //so far so good, recurse
+                    return matches(c.getParent(), partIndex - 1);
+                } else if (clazz == null &&
+                           registeredRegions.containsKey(parts[partIndex].s)) {
+                    Region r = registeredRegions.get(parts[partIndex].s);
+                    Component parent = r.isSubregion() ? c : c.getParent();
+                    //special case the JInternalFrameTitlePane, because it
+                    //doesn't fit the mold. very, very funky.
+                    if (r == Region.INTERNAL_FRAME_TITLE_PANE && parent != null
+                        && parent instanceof JInternalFrame.JDesktopIcon) {
+                        JInternalFrame.JDesktopIcon icon =
+                                (JInternalFrame.JDesktopIcon) parent;
+                        parent = icon.getInternalFrame();
+                    }
+                    //it was the name of a region. So far, so good. Recurse.
+                    return matches(parent, partIndex - 1);
+                }
+            }
+
+            return false;
+        }
+
+        /**
+         * Given some dot separated prefix, split on the colons that are
+         * not within quotes, and not within brackets.
+         *
+         * @param prefix
+         * @return
+         */
+        private List<String> split(String prefix) {
+            List<String> parts = new ArrayList<String>();
+            int bracketCount = 0;
+            boolean inquotes = false;
+            int lastIndex = 0;
+            for (int i = 0; i < prefix.length(); i++) {
+                char c = prefix.charAt(i);
+
+                if (c == '[') {
+                    bracketCount++;
+                    continue;
+                } else if (c == '"') {
+                    inquotes = !inquotes;
+                    continue;
+                } else if (c == ']') {
+                    bracketCount--;
+                    if (bracketCount < 0) {
+                        throw new RuntimeException(
+                                "Malformed prefix: " + prefix);
+                    }
+                    continue;
+                }
+
+                if (c == ':' && !inquotes && bracketCount == 0) {
+                    //found a character to split on.
+                    parts.add(prefix.substring(lastIndex, i));
+                    lastIndex = i + 1;
+                }
+            }
+            if (lastIndex < prefix.length() - 1 && !inquotes
+                    && bracketCount == 0) {
+                parts.add(prefix.substring(lastIndex));
+            }
+            return parts;
+
+        }
+
+        private final class Part {
+            private String s;
+            //true if this part represents a component name
+            private boolean named;
+            private Class c;
+
+            Part(String s) {
+                named = s.charAt(0) == '"' && s.charAt(s.length() - 1) == '"';
+                if (named) {
+                    this.s = s.substring(1, s.length() - 1);
+                } else {
+                    this.s = s;
+                    //TODO use a map of known regions for Synth and Swing, and
+                    //then use [classname] instead of org_class_name style
+                    try {
+                        c = Class.forName("javax.swing.J" + s);
+                    } catch (Exception e) {
+                    }
+                    try {
+                        c = Class.forName(s.replace("_", "."));
+                    } catch (Exception e) {
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Get a derived color, derived colors are shared instances and will be
+     * updated when its parent UIDefault color changes.
+     *
+     * @param uiDefaultParentName The parent UIDefault key
+     * @param hOffset The hue offset
+     * @param sOffset The saturation offset
+     * @param bOffset The brightness offset
+     * @param aOffset The alpha offset
+     * @return The stored derived color
+     */
+    public DerivedColor getDerivedColor(String uiDefaultParentName,
+                                        float hOffset, float sOffset,
+                                        float bOffset, int aOffset){
+        return getDerivedColor(uiDefaultParentName, hOffset, sOffset,
+                               bOffset, aOffset, true);
+    }
+
+    /**
+     * Get a derived color, derived colors are shared instances and will be
+     * updated when its parent UIDefault color changes.
+     *
+     * @param uiDefaultParentName The parent UIDefault key
+     * @param hOffset The hue offset
+     * @param sOffset The saturation offset
+     * @param bOffset The brightness offset
+     * @param aOffset The alpha offset
+     * @param uiResource True if the derived color should be a UIResource,
+     *        false if it should not be a UIResource
+     * @return The stored derived color
+     */
+    public DerivedColor getDerivedColor(String uiDefaultParentName,
+                                        float hOffset, float sOffset,
+                                        float bOffset, int aOffset,
+                                        boolean uiResource){
+        tmpDCKey.set(uiDefaultParentName, hOffset, sOffset, bOffset, aOffset,
+            uiResource);
+        DerivedColor color = derivedColorsMap.get(tmpDCKey);
+        if (color == null){
+            if (uiResource) {
+                color = new DerivedColor.UIResource(uiDefaultParentName,
+                        hOffset, sOffset, bOffset, aOffset);
+            } else {
+                color = new DerivedColor(uiDefaultParentName, hOffset, sOffset,
+                    bOffset, aOffset);
+            }
+            // calculate the initial value
+            color.rederiveColor();
+            // add the listener so that if the color changes we'll propogate it
+            color.addPropertyChangeListener(defaultsListener);
+            // add to the derived colors table
+            derivedColorsMap.put(new DerivedColorKey(uiDefaultParentName,
+                    hOffset, sOffset, bOffset, aOffset, uiResource),color);
+        }
+        return color;
+    }
+
+    /**
+     * Key class for derived colors
+     */
+    private class DerivedColorKey {
+        private String uiDefaultParentName;
+        private float hOffset, sOffset, bOffset;
+        private int aOffset;
+        private boolean uiResource;
+
+        DerivedColorKey(){}
+
+        DerivedColorKey(String uiDefaultParentName, float hOffset,
+                        float sOffset, float bOffset, int aOffset,
+                        boolean uiResource) {
+            set(uiDefaultParentName, hOffset, sOffset, bOffset, aOffset, uiResource);
+        }
+
+        void set (String uiDefaultParentName, float hOffset,
+                        float sOffset, float bOffset, int aOffset,
+                        boolean uiResource) {
+            this.uiDefaultParentName = uiDefaultParentName;
+            this.hOffset = hOffset;
+            this.sOffset = sOffset;
+            this.bOffset = bOffset;
+            this.aOffset = aOffset;
+            this.uiResource = uiResource;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) return true;
+            if (!(o instanceof DerivedColorKey)) return false;
+            DerivedColorKey that = (DerivedColorKey) o;
+            if (aOffset != that.aOffset) return false;
+            if (Float.compare(that.bOffset, bOffset) != 0) return false;
+            if (Float.compare(that.hOffset, hOffset) != 0) return false;
+            if (Float.compare(that.sOffset, sOffset) != 0) return false;
+            if (uiDefaultParentName != null ?
+                !uiDefaultParentName.equals(that.uiDefaultParentName) :
+                that.uiDefaultParentName != null) return false;
+            if (this.uiResource != that.uiResource) return false;
+            return true;
+        }
+
+        @Override
+        public int hashCode() {
+            int result = super.hashCode();
+            result = 31 * result + uiDefaultParentName.hashCode();
+            result = 31 * result + hOffset != +0.0f ?
+                    Float.floatToIntBits(hOffset) : 0;
+            result = 31 * result + sOffset != +0.0f ?
+                    Float.floatToIntBits(sOffset) : 0;
+            result = 31 * result + bOffset != +0.0f ?
+                    Float.floatToIntBits(bOffset) : 0;
+            result = 31 * result + aOffset;
+            result = 31 * result + (uiResource ? 1 : 0);
+            return result;
+        }
+    }
+
+    /**
+     * Listener to update derived colors on UIManager Defaults changes
+     */
+    private class DefaultsListener implements PropertyChangeListener {
+        @Override
+        public void propertyChange(PropertyChangeEvent evt) {
+            Object src = evt.getSource();
+            String key = evt.getPropertyName();
+            if (key.equals("lookAndFeel")){
+                // LAF has been installed, this is the first point at which we
+                // can access our defaults table via UIManager so before now
+                // all derived colors will be incorrect.
+                // First we need to update
+                for (DerivedColor color : derivedColorsMap.values()) {
+                    color.rederiveColor();
+                }
+            } else if (src instanceof DerivedColor && key.equals("rgb")) {
+                // derived color that is in UIManager defaults has changed
+                // update all its dependent colors. Don't worry about doing
+                // this recursively since calling rederiveColor will cause
+                // another PCE to be fired, ending up here and essentially
+                // recursing
+                DerivedColor parentColor = (DerivedColor)src;
+                String parentKey = null;
+                Set<Map.Entry<Object,Object>> entries =
+                        UIManager.getDefaults().entrySet();
+                
+                for (Map.Entry entry : entries) {
+                    Object value = entry.getValue();
+                    if (value == parentColor) {
+                        parentKey = entry.getKey().toString();
+                    }
+                }
+                
+                if (parentKey == null) {
+                    //couldn't find the DerivedColor in the UIDefaults map,
+                    //so we just bail.
+                    return;
+                }
+                
+                for (Map.Entry entry : entries) {
+                    Object value = entry.getValue();
+                    if (value instanceof DerivedColor) {
+                        DerivedColor color = (DerivedColor)entry.getValue();
+                        if (parentKey.equals(color.getUiDefaultParentName())) {
+                            color.rederiveColor();
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    private static final class PainterBorder implements Border, UIResource {
+        private Insets insets;
+        private Painter painter;
+        private String painterKey;
+        
+        PainterBorder(String painterKey, Insets insets) {
+            this.insets = insets;
+            this.painterKey = painterKey;
+        }
+        
+        @Override
+        public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) {
+            if (painter == null) {
+                painter = (Painter)UIManager.get(painterKey);
+                if (painter == null) return;
+            }
+            
+            g.translate(x, y);
+            if (g instanceof Graphics2D)
+                painter.paint((Graphics2D)g, c, w, h);
+            else {
+                BufferedImage img = new BufferedImage(w, h, TYPE_INT_ARGB);
+                Graphics2D gfx = img.createGraphics();
+                painter.paint(gfx, c, w, h);
+                gfx.dispose();
+                g.drawImage(img, x, y, null);
+                img = null;
+            }
+            g.translate(-x, -y);
+        }
+
+        @Override
+        public Insets getBorderInsets(Component c) {
+            return (Insets)insets.clone();
+        }
+
+        @Override
+        public boolean isBorderOpaque() {
+            return false;
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaOptionPaneLabelPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class OptionPaneOptionPaneMessageAreaOptionPaneLabelPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of OptionPaneOptionPaneMessageAreaOptionPaneLabelPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of OptionPaneOptionPaneMessageAreaOptionPaneLabelPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = new Color(0, 0, 255, 255);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public OptionPaneOptionPaneMessageAreaOptionPaneLabelPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class OptionPaneOptionPaneMessageAreaPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of OptionPaneOptionPaneMessageAreaPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of OptionPaneOptionPaneMessageAreaPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public OptionPaneOptionPaneMessageAreaPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/OptionPanePainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,583 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class OptionPanePainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of OptionPanePainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int ERRORICON_ENABLED = 2;
+    static final int INFORMATIONICON_ENABLED = 3;
+    static final int QUESTIONICON_ENABLED = 4;
+    static final int WARNINGICON_ENABLED = 5;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of OptionPanePainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusRed", -0.014814814f, 0.18384242f, 0.015686274f, 0);
+    private Color color2 = decodeColor("nimbusRed", -0.014814814f, -0.403261f, 0.21960783f, 0);
+    private Color color3 = decodeColor("nimbusRed", -0.014814814f, -0.07154381f, 0.11372548f, 0);
+    private Color color4 = decodeColor("nimbusRed", -0.014814814f, 0.110274374f, 0.07058823f, 0);
+    private Color color5 = decodeColor("nimbusRed", -0.014814814f, -0.05413574f, 0.2588235f, 0);
+    private Color color6 = new Color(250, 250, 250, 255);
+    private Color color7 = decodeColor("nimbusRed", 0.0f, -0.79881656f, 0.33725488f, -187);
+    private Color color8 = new Color(255, 200, 0, 255);
+    private Color color9 = decodeColor("nimbusInfoBlue", 0.0f, 0.06231594f, -0.054901958f, 0);
+    private Color color10 = decodeColor("nimbusInfoBlue", 3.1620264E-4f, 0.07790506f, -0.19215685f, 0);
+    private Color color11 = decodeColor("nimbusInfoBlue", -8.2296133E-4f, -0.44631243f, 0.19215685f, 0);
+    private Color color12 = decodeColor("nimbusInfoBlue", 0.0012729168f, -0.0739674f, 0.043137252f, 0);
+    private Color color13 = decodeColor("nimbusInfoBlue", 8.354187E-4f, -0.14148629f, 0.19999999f, 0);
+    private Color color14 = decodeColor("nimbusInfoBlue", -0.0014793873f, -0.41456455f, 0.16470587f, 0);
+    private Color color15 = decodeColor("nimbusInfoBlue", 3.437996E-4f, -0.14726585f, 0.043137252f, 0);
+    private Color color16 = decodeColor("nimbusInfoBlue", -4.271865E-4f, -0.0055555105f, 0.0f, 0);
+    private Color color17 = decodeColor("nimbusInfoBlue", 0.0f, 0.0f, 0.0f, 0);
+    private Color color18 = decodeColor("nimbusInfoBlue", -7.866621E-4f, -0.12728173f, 0.17254901f, 0);
+    private Color color19 = new Color(115, 120, 126, 255);
+    private Color color20 = new Color(26, 34, 43, 255);
+    private Color color21 = new Color(168, 173, 178, 255);
+    private Color color22 = new Color(101, 109, 118, 255);
+    private Color color23 = new Color(159, 163, 168, 255);
+    private Color color24 = new Color(116, 122, 130, 255);
+    private Color color25 = new Color(96, 104, 112, 255);
+    private Color color26 = new Color(118, 128, 138, 255);
+    private Color color27 = new Color(255, 255, 255, 255);
+    private Color color28 = decodeColor("nimbusAlertYellow", -4.9102306E-4f, 0.1372549f, -0.15294117f, 0);
+    private Color color29 = decodeColor("nimbusAlertYellow", -0.0015973002f, 0.1372549f, -0.3490196f, 0);
+    private Color color30 = decodeColor("nimbusAlertYellow", 6.530881E-4f, -0.40784314f, 0.0f, 0);
+    private Color color31 = decodeColor("nimbusAlertYellow", -3.9456785E-4f, -0.109803915f, 0.0f, 0);
+    private Color color32 = decodeColor("nimbusAlertYellow", 0.0f, 0.0f, 0.0f, 0);
+    private Color color33 = decodeColor("nimbusAlertYellow", 0.008085668f, -0.04705882f, 0.0f, 0);
+    private Color color34 = decodeColor("nimbusAlertYellow", 0.026515156f, -0.18431371f, 0.0f, 0);
+    private Color color35 = new Color(69, 69, 69, 255);
+    private Color color36 = new Color(0, 0, 0, 255);
+    private Color color37 = new Color(16, 16, 16, 255);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public OptionPanePainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case ERRORICON_ENABLED: painterrorIconEnabled(g); break;
+            case INFORMATIONICON_ENABLED: paintinformationIconEnabled(g); break;
+            case QUESTIONICON_ENABLED: paintquestionIconEnabled(g); break;
+            case WARNINGICON_ENABLED: paintwarningIconEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void painterrorIconEnabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(color6);
+        g.fill(path);
+        ellipse = decodeEllipse1();
+        g.setPaint(color6);
+        g.fill(ellipse);
+        path = decodePath4();
+        g.setPaint(color7);
+        g.fill(path);
+
+    }
+
+    private void paintinformationIconEnabled(Graphics2D g) {
+        ellipse = decodeEllipse2();
+        g.setPaint(color8);
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(color8);
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(color8);
+        g.fill(ellipse);
+        ellipse = decodeEllipse3();
+        g.setPaint(decodeGradient2(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse4();
+        g.setPaint(decodeGradient3(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse5();
+        g.setPaint(decodeGradient4(ellipse));
+        g.fill(ellipse);
+        path = decodePath5();
+        g.setPaint(color6);
+        g.fill(path);
+        ellipse = decodeEllipse6();
+        g.setPaint(color6);
+        g.fill(ellipse);
+
+    }
+
+    private void paintquestionIconEnabled(Graphics2D g) {
+        ellipse = decodeEllipse3();
+        g.setPaint(decodeGradient5(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse4();
+        g.setPaint(decodeGradient6(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse5();
+        g.setPaint(decodeGradient7(ellipse));
+        g.fill(ellipse);
+        path = decodePath6();
+        g.setPaint(color27);
+        g.fill(path);
+        ellipse = decodeEllipse1();
+        g.setPaint(color27);
+        g.fill(ellipse);
+
+    }
+
+    private void paintwarningIconEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color8);
+        g.fill(rect);
+        path = decodePath7();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+        path = decodePath8();
+        g.setPaint(decodeGradient9(path));
+        g.fill(path);
+        path = decodePath9();
+        g.setPaint(decodeGradient10(path));
+        g.fill(path);
+        ellipse = decodeEllipse7();
+        g.setPaint(color37);
+        g.fill(ellipse);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(1.2708334f));
+        path.lineTo(decodeX(1.2708334f), decodeY(1.0f));
+        path.lineTo(decodeX(1.6875f), decodeY(1.0f));
+        path.lineTo(decodeX(1.9583333f), decodeY(1.2708334f));
+        path.lineTo(decodeX(1.9583333f), decodeY(1.6875f));
+        path.lineTo(decodeX(1.6875f), decodeY(1.9583333f));
+        path.lineTo(decodeX(1.2708334f), decodeY(1.9583333f));
+        path.lineTo(decodeX(1.0f), decodeY(1.6875f));
+        path.lineTo(decodeX(1.0f), decodeY(1.2708334f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(1.0208334f), decodeY(1.2916666f));
+        path.lineTo(decodeX(1.2916666f), decodeY(1.0208334f));
+        path.lineTo(decodeX(1.6666667f), decodeY(1.0208334f));
+        path.lineTo(decodeX(1.9375f), decodeY(1.2916666f));
+        path.lineTo(decodeX(1.9375f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.6666667f), decodeY(1.9375f));
+        path.lineTo(decodeX(1.2916666f), decodeY(1.9375f));
+        path.lineTo(decodeX(1.0208334f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.0208334f), decodeY(1.2916666f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(1.4166666f), decodeY(1.2291666f));
+        path.curveTo(decodeAnchorX(1.4166666269302368f, 0.0f), decodeAnchorY(1.2291666269302368f, -2.0f), decodeAnchorX(1.4791666269302368f, -2.0f), decodeAnchorY(1.1666666269302368f, 0.0f), decodeX(1.4791666f), decodeY(1.1666666f));
+        path.curveTo(decodeAnchorX(1.4791666269302368f, 2.0f), decodeAnchorY(1.1666666269302368f, 0.0f), decodeAnchorX(1.5416667461395264f, 0.0f), decodeAnchorY(1.2291666269302368f, -2.0f), decodeX(1.5416667f), decodeY(1.2291666f));
+        path.curveTo(decodeAnchorX(1.5416667461395264f, 0.0f), decodeAnchorY(1.2291666269302368f, 2.0f), decodeAnchorX(1.5f, 0.0f), decodeAnchorY(1.6041667461395264f, 0.0f), decodeX(1.5f), decodeY(1.6041667f));
+        path.lineTo(decodeX(1.4583334f), decodeY(1.6041667f));
+        path.curveTo(decodeAnchorX(1.4583333730697632f, 0.0f), decodeAnchorY(1.6041667461395264f, 0.0f), decodeAnchorX(1.4166666269302368f, 0.0f), decodeAnchorY(1.2291666269302368f, 2.0f), decodeX(1.4166666f), decodeY(1.2291666f));
+        path.closePath();
+        return path;
+    }
+
+    private Ellipse2D decodeEllipse1() {
+        ellipse.setFrame(decodeX(1.4166666f), //x
+                         decodeY(1.6666667f), //y
+                         decodeX(1.5416667f) - decodeX(1.4166666f), //width
+                         decodeY(1.7916667f) - decodeY(1.6666667f)); //height
+        return ellipse;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(1.0208334f), decodeY(1.2851562f));
+        path.lineTo(decodeX(1.2799479f), decodeY(1.0208334f));
+        path.lineTo(decodeX(1.6783855f), decodeY(1.0208334f));
+        path.lineTo(decodeX(1.9375f), decodeY(1.28125f));
+        path.lineTo(decodeX(1.9375f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.6666667f), decodeY(1.9375f));
+        path.lineTo(decodeX(1.2851562f), decodeY(1.936198f));
+        path.lineTo(decodeX(1.0221354f), decodeY(1.673177f));
+        path.lineTo(decodeX(1.0208334f), decodeY(1.5f));
+        path.lineTo(decodeX(1.0416666f), decodeY(1.5f));
+        path.lineTo(decodeX(1.0416666f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.2916666f), decodeY(1.9166667f));
+        path.lineTo(decodeX(1.6666667f), decodeY(1.9166667f));
+        path.lineTo(decodeX(1.9166667f), decodeY(1.6666667f));
+        path.lineTo(decodeX(1.9166667f), decodeY(1.2916666f));
+        path.lineTo(decodeX(1.6666667f), decodeY(1.0416666f));
+        path.lineTo(decodeX(1.2916666f), decodeY(1.0416666f));
+        path.lineTo(decodeX(1.0416666f), decodeY(1.2916666f));
+        path.lineTo(decodeX(1.0416666f), decodeY(1.5f));
+        path.lineTo(decodeX(1.0208334f), decodeY(1.5f));
+        path.lineTo(decodeX(1.0208334f), decodeY(1.2851562f));
+        path.closePath();
+        return path;
+    }
+
+    private Ellipse2D decodeEllipse2() {
+        ellipse.setFrame(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(1.0f) - decodeX(1.0f), //width
+                         decodeY(1.0f) - decodeY(1.0f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse3() {
+        ellipse.setFrame(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(1.9583333f) - decodeX(1.0f), //width
+                         decodeY(1.9583333f) - decodeY(1.0f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse4() {
+        ellipse.setFrame(decodeX(1.0208334f), //x
+                         decodeY(1.0208334f), //y
+                         decodeX(1.9375f) - decodeX(1.0208334f), //width
+                         decodeY(1.9375f) - decodeY(1.0208334f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse5() {
+        ellipse.setFrame(decodeX(1.0416666f), //x
+                         decodeY(1.0416666f), //y
+                         decodeX(1.9166667f) - decodeX(1.0416666f), //width
+                         decodeY(1.9166667f) - decodeY(1.0416666f)); //height
+        return ellipse;
+    }
+
+    private Path2D decodePath5() {
+        path.reset();
+        path.moveTo(decodeX(1.375f), decodeY(1.375f));
+        path.curveTo(decodeAnchorX(1.375f, 2.5f), decodeAnchorY(1.375f, 0.0f), decodeAnchorX(1.5f, -1.1875f), decodeAnchorY(1.375f, 0.0f), decodeX(1.5f), decodeY(1.375f));
+        path.curveTo(decodeAnchorX(1.5f, 1.1875f), decodeAnchorY(1.375f, 0.0f), decodeAnchorX(1.5416667461395264f, 0.0f), decodeAnchorY(1.4375f, -2.0f), decodeX(1.5416667f), decodeY(1.4375f));
+        path.curveTo(decodeAnchorX(1.5416667461395264f, 0.0f), decodeAnchorY(1.4375f, 2.0f), decodeAnchorX(1.5416667461395264f, 0.0f), decodeAnchorY(1.6875f, 0.0f), decodeX(1.5416667f), decodeY(1.6875f));
+        path.curveTo(decodeAnchorX(1.5416667461395264f, 0.0f), decodeAnchorY(1.6875f, 0.0f), decodeAnchorX(1.6028645038604736f, -2.5625f), decodeAnchorY(1.6875f, 0.0625f), decodeX(1.6028645f), decodeY(1.6875f));
+        path.curveTo(decodeAnchorX(1.6028645038604736f, 2.5625f), decodeAnchorY(1.6875f, -0.0625f), decodeAnchorX(1.6041667461395264f, 2.5625f), decodeAnchorY(1.7708332538604736f, 0.0f), decodeX(1.6041667f), decodeY(1.7708333f));
+        path.curveTo(decodeAnchorX(1.6041667461395264f, -2.5625f), decodeAnchorY(1.7708332538604736f, 0.0f), decodeAnchorX(1.3567708730697632f, 2.5f), decodeAnchorY(1.7708332538604736f, 0.0625f), decodeX(1.3567709f), decodeY(1.7708333f));
+        path.curveTo(decodeAnchorX(1.3567708730697632f, -2.5f), decodeAnchorY(1.7708332538604736f, -0.0625f), decodeAnchorX(1.3541666269302368f, -2.4375f), decodeAnchorY(1.6875f, 0.0f), decodeX(1.3541666f), decodeY(1.6875f));
+        path.curveTo(decodeAnchorX(1.3541666269302368f, 2.4375f), decodeAnchorY(1.6875f, 0.0f), decodeAnchorX(1.4166666269302368f, 0.0f), decodeAnchorY(1.6875f, 0.0f), decodeX(1.4166666f), decodeY(1.6875f));
+        path.lineTo(decodeX(1.4166666f), decodeY(1.4583334f));
+        path.curveTo(decodeAnchorX(1.4166666269302368f, 0.0f), decodeAnchorY(1.4583333730697632f, 0.0f), decodeAnchorX(1.375f, 2.75f), decodeAnchorY(1.4583333730697632f, 0.0f), decodeX(1.375f), decodeY(1.4583334f));
+        path.curveTo(decodeAnchorX(1.375f, -2.75f), decodeAnchorY(1.4583333730697632f, 0.0f), decodeAnchorX(1.375f, -2.5f), decodeAnchorY(1.375f, 0.0f), decodeX(1.375f), decodeY(1.375f));
+        path.closePath();
+        return path;
+    }
+
+    private Ellipse2D decodeEllipse6() {
+        ellipse.setFrame(decodeX(1.4166666f), //x
+                         decodeY(1.1666666f), //y
+                         decodeX(1.5416667f) - decodeX(1.4166666f), //width
+                         decodeY(1.2916666f) - decodeY(1.1666666f)); //height
+        return ellipse;
+    }
+
+    private Path2D decodePath6() {
+        path.reset();
+        path.moveTo(decodeX(1.3125f), decodeY(1.3723959f));
+        path.curveTo(decodeAnchorX(1.3125f, 1.5f), decodeAnchorY(1.3723958730697632f, 1.375f), decodeAnchorX(1.3997396230697632f, -0.75f), decodeAnchorY(1.3580728769302368f, 1.1875f), decodeX(1.3997396f), decodeY(1.3580729f));
+        path.curveTo(decodeAnchorX(1.3997396230697632f, 0.75f), decodeAnchorY(1.3580728769302368f, -1.1875f), decodeAnchorX(1.46875f, -1.8125f), decodeAnchorY(1.2903646230697632f, 0.0f), decodeX(1.46875f), decodeY(1.2903646f));
+        path.curveTo(decodeAnchorX(1.46875f, 1.8125f), decodeAnchorY(1.2903646230697632f, 0.0f), decodeAnchorX(1.53515625f, 0.0f), decodeAnchorY(1.3502603769302368f, -1.5625f), decodeX(1.5351562f), decodeY(1.3502604f));
+        path.curveTo(decodeAnchorX(1.53515625f, 0.0f), decodeAnchorY(1.3502603769302368f, 1.5625f), decodeAnchorX(1.4700521230697632f, 1.25f), decodeAnchorY(1.4283853769302368f, -1.1875f), decodeX(1.4700521f), decodeY(1.4283854f));
+        path.curveTo(decodeAnchorX(1.4700521230697632f, -1.25f), decodeAnchorY(1.4283853769302368f, 1.1875f), decodeAnchorX(1.41796875f, -0.0625f), decodeAnchorY(1.5442707538604736f, -1.5f), decodeX(1.4179688f), decodeY(1.5442708f));
+        path.curveTo(decodeAnchorX(1.41796875f, 0.0625f), decodeAnchorY(1.5442707538604736f, 1.5f), decodeAnchorX(1.4765625f, -1.3125f), decodeAnchorY(1.6028645038604736f, 0.0f), decodeX(1.4765625f), decodeY(1.6028645f));
+        path.curveTo(decodeAnchorX(1.4765625f, 1.3125f), decodeAnchorY(1.6028645038604736f, 0.0f), decodeAnchorX(1.5403645038604736f, 0.0f), decodeAnchorY(1.546875f, 1.625f), decodeX(1.5403645f), decodeY(1.546875f));
+        path.curveTo(decodeAnchorX(1.5403645038604736f, 0.0f), decodeAnchorY(1.546875f, -1.625f), decodeAnchorX(1.61328125f, -1.1875f), decodeAnchorY(1.46484375f, 1.25f), decodeX(1.6132812f), decodeY(1.4648438f));
+        path.curveTo(decodeAnchorX(1.61328125f, 1.1875f), decodeAnchorY(1.46484375f, -1.25f), decodeAnchorX(1.6666667461395264f, 0.0625f), decodeAnchorY(1.3463541269302368f, 3.3125f), decodeX(1.6666667f), decodeY(1.3463541f));
+        path.curveTo(decodeAnchorX(1.6666667461395264f, -0.0625f), decodeAnchorY(1.3463541269302368f, -3.3125f), decodeAnchorX(1.4830728769302368f, 6.125f), decodeAnchorY(1.16796875f, -0.0625f), decodeX(1.4830729f), decodeY(1.1679688f));
+        path.curveTo(decodeAnchorX(1.4830728769302368f, -6.125f), decodeAnchorY(1.16796875f, 0.0625f), decodeAnchorX(1.3046875f, 0.4375f), decodeAnchorY(1.2890625f, -1.25f), decodeX(1.3046875f), decodeY(1.2890625f));
+        path.curveTo(decodeAnchorX(1.3046875f, -0.4375f), decodeAnchorY(1.2890625f, 1.25f), decodeAnchorX(1.3125f, -1.5f), decodeAnchorY(1.3723958730697632f, -1.375f), decodeX(1.3125f), decodeY(1.3723959f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(1.0f) - decodeX(1.0f), //width
+                         decodeY(1.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath7() {
+        path.reset();
+        path.moveTo(decodeX(1.5f), decodeY(1.0208334f));
+        path.curveTo(decodeAnchorX(1.5f, 2.0f), decodeAnchorY(1.0208333730697632f, 0.0f), decodeAnchorX(1.56640625f, 0.0f), decodeAnchorY(1.08203125f, 0.0f), decodeX(1.5664062f), decodeY(1.0820312f));
+        path.lineTo(decodeX(1.9427083f), decodeY(1.779948f));
+        path.curveTo(decodeAnchorX(1.9427082538604736f, 0.0f), decodeAnchorY(1.7799479961395264f, 0.0f), decodeAnchorX(1.9752604961395264f, 0.0f), decodeAnchorY(1.8802082538604736f, -2.375f), decodeX(1.9752605f), decodeY(1.8802083f));
+        path.curveTo(decodeAnchorX(1.9752604961395264f, 0.0f), decodeAnchorY(1.8802082538604736f, 2.375f), decodeAnchorX(1.9166667461395264f, 0.0f), decodeAnchorY(1.9375f, 0.0f), decodeX(1.9166667f), decodeY(1.9375f));
+        path.lineTo(decodeX(1.0833334f), decodeY(1.9375f));
+        path.curveTo(decodeAnchorX(1.0833333730697632f, 0.0f), decodeAnchorY(1.9375f, 0.0f), decodeAnchorX(1.0247396230697632f, 0.125f), decodeAnchorY(1.8815104961395264f, 2.25f), decodeX(1.0247396f), decodeY(1.8815105f));
+        path.curveTo(decodeAnchorX(1.0247396230697632f, -0.125f), decodeAnchorY(1.8815104961395264f, -2.25f), decodeAnchorX(1.0598958730697632f, 0.0f), decodeAnchorY(1.78125f, 0.0f), decodeX(1.0598959f), decodeY(1.78125f));
+        path.lineTo(decodeX(1.4375f), decodeY(1.0833334f));
+        path.curveTo(decodeAnchorX(1.4375f, 0.0f), decodeAnchorY(1.0833333730697632f, 0.0f), decodeAnchorX(1.5f, -2.0f), decodeAnchorY(1.0208333730697632f, 0.0f), decodeX(1.5f), decodeY(1.0208334f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath8() {
+        path.reset();
+        path.moveTo(decodeX(1.4986979f), decodeY(1.0429688f));
+        path.curveTo(decodeAnchorX(1.4986978769302368f, 1.75f), decodeAnchorY(1.04296875f, 0.0f), decodeAnchorX(1.5546875f, 0.0f), decodeAnchorY(1.0950521230697632f, 0.0f), decodeX(1.5546875f), decodeY(1.0950521f));
+        path.lineTo(decodeX(1.9322917f), decodeY(1.8007812f));
+        path.curveTo(decodeAnchorX(1.9322917461395264f, 0.0f), decodeAnchorY(1.80078125f, 0.0f), decodeAnchorX(1.95703125f, 0.0f), decodeAnchorY(1.875f, -1.4375f), decodeX(1.9570312f), decodeY(1.875f));
+        path.curveTo(decodeAnchorX(1.95703125f, 0.0f), decodeAnchorY(1.875f, 1.4375f), decodeAnchorX(1.8841145038604736f, 0.0f), decodeAnchorY(1.9166667461395264f, 0.0f), decodeX(1.8841145f), decodeY(1.9166667f));
+        path.lineTo(decodeX(1.1002604f), decodeY(1.9166667f));
+        path.curveTo(decodeAnchorX(1.1002603769302368f, 0.0f), decodeAnchorY(1.9166667461395264f, 0.0f), decodeAnchorX(1.0455728769302368f, 0.0625f), decodeAnchorY(1.8723957538604736f, 1.625f), decodeX(1.0455729f), decodeY(1.8723958f));
+        path.curveTo(decodeAnchorX(1.0455728769302368f, -0.0625f), decodeAnchorY(1.8723957538604736f, -1.625f), decodeAnchorX(1.0755208730697632f, 0.0f), decodeAnchorY(1.7903645038604736f, 0.0f), decodeX(1.0755209f), decodeY(1.7903645f));
+        path.lineTo(decodeX(1.4414062f), decodeY(1.1028646f));
+        path.curveTo(decodeAnchorX(1.44140625f, 0.0f), decodeAnchorY(1.1028646230697632f, 0.0f), decodeAnchorX(1.4986978769302368f, -1.75f), decodeAnchorY(1.04296875f, 0.0f), decodeX(1.4986979f), decodeY(1.0429688f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath9() {
+        path.reset();
+        path.moveTo(decodeX(1.5f), decodeY(1.2291666f));
+        path.curveTo(decodeAnchorX(1.5f, 2.0f), decodeAnchorY(1.2291666269302368f, 0.0f), decodeAnchorX(1.5625f, 0.0f), decodeAnchorY(1.3125f, -2.0f), decodeX(1.5625f), decodeY(1.3125f));
+        path.curveTo(decodeAnchorX(1.5625f, 0.0f), decodeAnchorY(1.3125f, 2.0f), decodeAnchorX(1.5f, 1.3125f), decodeAnchorY(1.6666667461395264f, 0.0f), decodeX(1.5f), decodeY(1.6666667f));
+        path.curveTo(decodeAnchorX(1.5f, -1.3125f), decodeAnchorY(1.6666667461395264f, 0.0f), decodeAnchorX(1.4375f, 0.0f), decodeAnchorY(1.3125f, 2.0f), decodeX(1.4375f), decodeY(1.3125f));
+        path.curveTo(decodeAnchorX(1.4375f, 0.0f), decodeAnchorY(1.3125f, -2.0f), decodeAnchorX(1.5f, -2.0f), decodeAnchorY(1.2291666269302368f, 0.0f), decodeX(1.5f), decodeY(1.2291666f));
+        path.closePath();
+        return path;
+    }
+
+    private Ellipse2D decodeEllipse7() {
+        ellipse.setFrame(decodeX(1.4375f), //x
+                         decodeY(1.7291667f), //y
+                         decodeX(1.5625f) - decodeX(1.4375f), //width
+                         decodeY(1.8541667f) - decodeY(1.7291667f)); //height
+        return ellipse;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.17258064f,0.3451613f,0.5145161f,0.683871f,0.9f,1.0f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.24143836f,0.48287672f,0.7414384f,1.0f },
+                new Color[] { color11,
+                            decodeColor(color11,color12,0.5f),
+                            color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.14212328f,0.28424656f,0.39212328f,0.5f,0.60958904f,0.7191781f,0.85958904f,1.0f },
+                new Color[] { color14,
+                            decodeColor(color14,color15,0.5f),
+                            color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color19,
+                            decodeColor(color19,color20,0.5f),
+                            color20});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.15239726f,0.30479452f,0.47945207f,0.6541096f,0.8270548f,1.0f },
+                new Color[] { color23,
+                            decodeColor(color23,color24,0.5f),
+                            color24,
+                            decodeColor(color24,color25,0.5f),
+                            color25,
+                            decodeColor(color25,color26,0.5f),
+                            color26});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color28,
+                            decodeColor(color28,color29,0.5f),
+                            color29});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.1729452f,0.3458904f,0.49315068f,0.64041096f,0.7328767f,0.8253425f,0.9126712f,1.0f },
+                new Color[] { color30,
+                            decodeColor(color30,color31,0.5f),
+                            color31,
+                            decodeColor(color31,color32,0.5f),
+                            color32,
+                            decodeColor(color32,color33,0.5f),
+                            color33,
+                            decodeColor(color33,color34,0.5f),
+                            color34});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color35,
+                            decodeColor(color35,color36,0.5f),
+                            color36});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/PasswordFieldPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,381 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class PasswordFieldPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of PasswordFieldPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_SELECTED = 3;
+    static final int BORDER_DISABLED = 4;
+    static final int BORDER_FOCUSED = 5;
+    static final int BORDER_ENABLED = 6;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of PasswordFieldPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.015872955f, -0.07995863f, 0.15294117f, 0);
+    private Color color2 = decodeColor("nimbusLightBackground", 0.0f, 0.0f, 0.0f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", -0.006944418f, -0.07187897f, 0.06666666f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07826825f, 0.10588235f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07856284f, 0.11372548f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07796818f, 0.09803921f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.0965403f, -0.18431371f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.1048766f, -0.05098039f, 0);
+    private Color color9 = decodeColor("nimbusLightBackground", 0.6666667f, 0.004901961f, -0.19999999f, 0);
+    private Color color10 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10512091f, -0.019607842f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.105344966f, 0.011764705f, 0);
+    private Color color12 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public PasswordFieldPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_SELECTED: paintBackgroundSelected(g); break;
+            case BORDER_DISABLED: paintBorderDisabled(g); break;
+            case BORDER_FOCUSED: paintBorderFocused(g); break;
+            case BORDER_ENABLED: paintBorderEnabled(g); break;
+
+        }
+    }
+        
+    protected Object[] getExtendedCacheKeys(JComponent c) {
+        Object[] extendedCacheKeys = null;
+        switch(state) {
+            case BACKGROUND_ENABLED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)};
+                break;
+            case BORDER_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color9, 0.004901961f, -0.19999999f, 0),
+                     getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)};
+                break;
+            case BORDER_ENABLED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color9, 0.004901961f, -0.19999999f, 0),
+                     getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)};
+                break;
+        }
+        return extendedCacheKeys;
+    }
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint((Color)componentColors[0]);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundSelected(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color2);
+        g.fill(rect);
+
+    }
+
+    private void paintBorderDisabled(Graphics2D g) {
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color6);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color4);
+        g.fill(rect);
+        rect = decodeRect6();
+        g.setPaint(color4);
+        g.fill(rect);
+
+    }
+
+    private void paintBorderFocused(Graphics2D g) {
+        rect = decodeRect7();
+        g.setPaint(decodeGradient3(rect));
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect9();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect11();
+        g.setPaint(color11);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color12);
+        g.fill(path);
+
+    }
+
+    private void paintBorderEnabled(Graphics2D g) {
+        rect = decodeRect7();
+        g.setPaint(decodeGradient5(rect));
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect9();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect11();
+        g.setPaint(color11);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.3333333f) - decodeX(0.6666667f), //width
+                         decodeY(1.0f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(1.0f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(1.0f), //y
+                         decodeX(1.0f) - decodeX(0.6666667f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect5() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(2.3333333f), //y
+                         decodeX(2.3333333f) - decodeX(0.6666667f), //width
+                         decodeY(2.0f) - decodeY(2.3333333f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect6() {
+            rect.setRect(decodeX(2.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.3333333f) - decodeX(2.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect7() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(1.0f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect8() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.4f) - decodeX(0.6f), //width
+                         decodeY(1.0f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect9() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(1.0f), //y
+                         decodeX(0.6f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect10() {
+            rect.setRect(decodeX(2.4f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.6f) - decodeX(2.4f), //width
+                         decodeY(2.6f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect11() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(2.4f), //y
+                         decodeX(2.4f) - decodeX(0.6f), //width
+                         decodeY(2.6f) - decodeY(2.4f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.4f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(0.4f));
+        path.curveTo(decodeAnchorX(2.5999999046325684f, 0.0f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeAnchorX(2.880000352859497f, 0.09999999999999432f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeX(2.8800004f), decodeY(0.4f));
+        path.curveTo(decodeAnchorX(2.880000352859497f, 0.09999999999999432f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeAnchorX(2.880000352859497f, 0.0f), decodeAnchorY(2.879999876022339f, 0.0f), decodeX(2.8800004f), decodeY(2.8799999f));
+        path.lineTo(decodeX(0.120000005f), decodeY(2.8799999f));
+        path.lineTo(decodeX(0.120000005f), decodeY(0.120000005f));
+        path.lineTo(decodeX(2.8800004f), decodeY(0.120000005f));
+        path.lineTo(decodeX(2.8800004f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(0.4f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color5,
+                            decodeColor(color5,color1,0.5f),
+                            color1});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (0.1625f * h) + y,
+                new float[] { 0.1f,0.49999997f,0.9f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.1f,0.49999997f,0.9f },
+                new Color[] { (Color)componentColors[0],
+                            decodeColor((Color)componentColors[0],(Color)componentColors[1],0.5f),
+                            (Color)componentColors[1]});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.1f,0.49999997f,0.9f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/PopupMenuPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,163 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class PopupMenuPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of PopupMenuPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of PopupMenuPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.6111111f, -0.110526316f, -0.39607844f, 0);
+    private Color color2 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, 0);
+    private Color color3 = decodeColor("nimbusBase", 0.021348298f, -0.6150531f, 0.39999998f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public PopupMenuPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect3();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(1.0045455f), //x
+                         decodeY(0.11111111f), //y
+                         decodeX(1.9954545f) - decodeX(1.0045455f), //width
+                         decodeY(2.909091f) - decodeY(0.11111111f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(0.5f), //x
+                         decodeY(0.09090909f), //y
+                         decodeX(2.5f) - decodeX(0.5f), //width
+                         decodeY(2.909091f) - decodeY(0.09090909f)); //height
+        return rect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.003f,0.02f,0.5f,0.98f,0.996f,1.0f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color2,0.5f),
+                            color2});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/PopupMenuSeparatorPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class PopupMenuSeparatorPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of PopupMenuSeparatorPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of PopupMenuSeparatorPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.008547008f, -0.03830409f, -0.039215684f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public PopupMenuSeparatorPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ProgressBarFinishedState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class ProgressBarFinishedState extends State {
+    ProgressBarFinishedState() {
+        super("Finished");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                        return ((JProgressBar)c).getPercentComplete() == 1.0;
+                
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ProgressBarIndeterminateState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class ProgressBarIndeterminateState extends State {
+    ProgressBarIndeterminateState() {
+        super("Indeterminate");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                        return ((JProgressBar)c).isIndeterminate();
+               
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ProgressBarPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,612 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ProgressBarPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ProgressBarPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int BACKGROUND_DISABLED = 2;
+    static final int FOREGROUND_ENABLED = 3;
+    static final int FOREGROUND_ENABLED_FINISHED = 4;
+    static final int FOREGROUND_ENABLED_INDETERMINATE = 5;
+    static final int FOREGROUND_DISABLED = 6;
+    static final int FOREGROUND_DISABLED_FINISHED = 7;
+    static final int FOREGROUND_DISABLED_INDETERMINATE = 8;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ProgressBarPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", 0.0f, -0.04845735f, -0.17647058f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", 0.0f, -0.061345987f, -0.027450979f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.0f, -0.097921275f, 0.18823528f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.0138888955f, -0.0925083f, 0.12549019f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.0f, -0.08222443f, 0.086274505f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", 0.0f, -0.08477524f, 0.16862744f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.0f, -0.086996906f, 0.25490195f, 0);
+    private Color color9 = decodeColor("nimbusBlueGrey", 0.0f, -0.061613273f, -0.02352941f, 0);
+    private Color color10 = decodeColor("nimbusBlueGrey", -0.01111114f, -0.061265234f, 0.05098039f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", 0.0138888955f, -0.09378991f, 0.19215685f, 0);
+    private Color color12 = decodeColor("nimbusBlueGrey", 0.0f, -0.08455229f, 0.1607843f, 0);
+    private Color color13 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.08362049f, 0.12941176f, 0);
+    private Color color14 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07826825f, 0.10588235f, 0);
+    private Color color15 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07982456f, 0.1490196f, 0);
+    private Color color16 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.08099045f, 0.18431371f, 0);
+    private Color color17 = decodeColor("nimbusOrange", 0.0f, 0.0f, 0.0f, -156);
+    private Color color18 = decodeColor("nimbusOrange", -0.015796512f, 0.02094239f, -0.15294117f, 0);
+    private Color color19 = decodeColor("nimbusOrange", -0.004321605f, 0.02094239f, -0.0745098f, 0);
+    private Color color20 = decodeColor("nimbusOrange", -0.008021399f, 0.02094239f, -0.10196078f, 0);
+    private Color color21 = decodeColor("nimbusOrange", -0.011706904f, -0.1790576f, -0.02352941f, 0);
+    private Color color22 = decodeColor("nimbusOrange", -0.048691254f, 0.02094239f, -0.3019608f, 0);
+    private Color color23 = decodeColor("nimbusOrange", 0.003940329f, -0.7375322f, 0.17647058f, 0);
+    private Color color24 = decodeColor("nimbusOrange", 0.005506739f, -0.46764207f, 0.109803915f, 0);
+    private Color color25 = decodeColor("nimbusOrange", 0.0042127445f, -0.18595415f, 0.04705882f, 0);
+    private Color color26 = decodeColor("nimbusOrange", 0.0047626942f, 0.02094239f, 0.0039215684f, 0);
+    private Color color27 = decodeColor("nimbusOrange", 0.0047626942f, -0.15147138f, 0.1607843f, 0);
+    private Color color28 = decodeColor("nimbusOrange", 0.010665476f, -0.27317524f, 0.25098038f, 0);
+    private Color color29 = decodeColor("nimbusBlueGrey", -0.54444444f, -0.08748484f, 0.10588235f, 0);
+    private Color color30 = decodeColor("nimbusOrange", 0.0047626942f, -0.21715283f, 0.23921567f, 0);
+    private Color color31 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -173);
+    private Color color32 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -170);
+    private Color color33 = decodeColor("nimbusOrange", 0.024554357f, -0.8873145f, 0.10588235f, -156);
+    private Color color34 = decodeColor("nimbusOrange", -0.023593787f, -0.7963165f, 0.02352941f, 0);
+    private Color color35 = decodeColor("nimbusOrange", -0.010608241f, -0.7760873f, 0.043137252f, 0);
+    private Color color36 = decodeColor("nimbusOrange", -0.015402906f, -0.7840576f, 0.035294116f, 0);
+    private Color color37 = decodeColor("nimbusOrange", -0.017112307f, -0.8091547f, 0.058823526f, 0);
+    private Color color38 = decodeColor("nimbusOrange", -0.07044564f, -0.844649f, -0.019607842f, 0);
+    private Color color39 = decodeColor("nimbusOrange", -0.009704903f, -0.9381485f, 0.11372548f, 0);
+    private Color color40 = decodeColor("nimbusOrange", -4.4563413E-4f, -0.86742973f, 0.09411764f, 0);
+    private Color color41 = decodeColor("nimbusOrange", -4.4563413E-4f, -0.79896283f, 0.07843137f, 0);
+    private Color color42 = decodeColor("nimbusOrange", 0.0013274103f, -0.7530961f, 0.06666666f, 0);
+    private Color color43 = decodeColor("nimbusOrange", 0.0013274103f, -0.7644457f, 0.109803915f, 0);
+    private Color color44 = decodeColor("nimbusOrange", 0.009244293f, -0.78794646f, 0.13333333f, 0);
+    private Color color45 = decodeColor("nimbusBlueGrey", -0.015872955f, -0.0803539f, 0.16470587f, 0);
+    private Color color46 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07968931f, 0.14509803f, 0);
+    private Color color47 = decodeColor("nimbusBlueGrey", 0.02222228f, -0.08779904f, 0.11764705f, 0);
+    private Color color48 = decodeColor("nimbusBlueGrey", 0.0138888955f, -0.075128086f, 0.14117646f, 0);
+    private Color color49 = decodeColor("nimbusBlueGrey", 0.0138888955f, -0.07604356f, 0.16470587f, 0);
+    private Color color50 = decodeColor("nimbusOrange", 0.0014062226f, -0.77816474f, 0.12941176f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ProgressBarPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case FOREGROUND_ENABLED: paintForegroundEnabled(g); break;
+            case FOREGROUND_ENABLED_FINISHED: paintForegroundEnabledAndFinished(g); break;
+            case FOREGROUND_ENABLED_INDETERMINATE: paintForegroundEnabledAndIndeterminate(g); break;
+            case FOREGROUND_DISABLED: paintForegroundDisabled(g); break;
+            case FOREGROUND_DISABLED_FINISHED: paintForegroundDisabledAndFinished(g); break;
+            case FOREGROUND_DISABLED_INDETERMINATE: paintForegroundDisabledAndIndeterminate(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(decodeGradient3(rect));
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintForegroundEnabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color17);
+        g.fill(path);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient5(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(decodeGradient6(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintForegroundEnabledAndFinished(Graphics2D g) {
+        path = decodePath2();
+        g.setPaint(color17);
+        g.fill(path);
+        rect = decodeRect1();
+        g.setPaint(decodeGradient5(rect));
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient6(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintForegroundEnabledAndIndeterminate(Graphics2D g) {
+        rect = decodeRect5();
+        g.setPaint(decodeGradient7(rect));
+        g.fill(rect);
+        path = decodePath3();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+        rect = decodeRect6();
+        g.setPaint(color31);
+        g.fill(rect);
+        rect = decodeRect7();
+        g.setPaint(color32);
+        g.fill(rect);
+
+    }
+
+    private void paintForegroundDisabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color33);
+        g.fill(path);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient9(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(decodeGradient10(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintForegroundDisabledAndFinished(Graphics2D g) {
+        path = decodePath4();
+        g.setPaint(color33);
+        g.fill(path);
+        rect = decodeRect1();
+        g.setPaint(decodeGradient9(rect));
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient10(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintForegroundDisabledAndIndeterminate(Graphics2D g) {
+        rect = decodeRect5();
+        g.setPaint(decodeGradient11(rect));
+        g.fill(rect);
+        path = decodePath5();
+        g.setPaint(decodeGradient12(path));
+        g.fill(path);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.4f) - decodeX(0.6f), //width
+                         decodeY(2.4f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.6f), decodeY(0.12666667f));
+        path.curveTo(decodeAnchorX(0.6000000238418579f, -2.0f), decodeAnchorY(0.12666666507720947f, 0.0f), decodeAnchorX(0.12666666507720947f, 0.0f), decodeAnchorY(0.6000000238418579f, -2.0f), decodeX(0.12666667f), decodeY(0.6f));
+        path.curveTo(decodeAnchorX(0.12666666507720947f, 0.0f), decodeAnchorY(0.6000000238418579f, 2.0f), decodeAnchorX(0.12666666507720947f, 0.0f), decodeAnchorY(2.4000000953674316f, -2.0f), decodeX(0.12666667f), decodeY(2.4f));
+        path.curveTo(decodeAnchorX(0.12666666507720947f, 0.0f), decodeAnchorY(2.4000000953674316f, 2.0f), decodeAnchorX(0.6000000238418579f, -2.0f), decodeAnchorY(2.8933334350585938f, 0.0f), decodeX(0.6f), decodeY(2.8933334f));
+        path.curveTo(decodeAnchorX(0.6000000238418579f, 2.0f), decodeAnchorY(2.8933334350585938f, 0.0f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(2.8933334350585938f, 0.0f), decodeX(3.0f), decodeY(2.8933334f));
+        path.lineTo(decodeX(3.0f), decodeY(2.6f));
+        path.lineTo(decodeX(0.4f), decodeY(2.6f));
+        path.lineTo(decodeX(0.4f), decodeY(0.4f));
+        path.lineTo(decodeX(3.0f), decodeY(0.4f));
+        path.lineTo(decodeX(3.0f), decodeY(0.120000005f));
+        path.curveTo(decodeAnchorX(3.0f, 0.0f), decodeAnchorY(0.12000000476837158f, 0.0f), decodeAnchorX(0.6000000238418579f, 2.0f), decodeAnchorY(0.12666666507720947f, 0.0f), decodeX(0.6f), decodeY(0.12666667f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(3.0f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.8f) - decodeX(0.6f), //width
+                         decodeY(2.4f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(0.5466667f), decodeY(0.12666667f));
+        path.curveTo(decodeAnchorX(0.54666668176651f, -2.000000000000001f), decodeAnchorY(0.12666666507720947f, 0.0f), decodeAnchorX(0.12000000476837158f, 0.0f), decodeAnchorY(0.6066666841506958f, -1.9999999999999998f), decodeX(0.120000005f), decodeY(0.6066667f));
+        path.lineTo(decodeX(0.120000005f), decodeY(2.4266667f));
+        path.curveTo(decodeAnchorX(0.12000000476837158f, 0.0f), decodeAnchorY(2.426666736602783f, 2.0f), decodeAnchorX(0.5800000429153442f, -2.0f), decodeAnchorY(2.879999876022339f, 0.0f), decodeX(0.58000004f), decodeY(2.8799999f));
+        path.lineTo(decodeX(2.4f), decodeY(2.8733335f));
+        path.curveTo(decodeAnchorX(2.4000000953674316f, 1.9709292441265305f), decodeAnchorY(2.87333345413208f, 0.019857039365145823f), decodeAnchorX(2.866666793823242f, -0.03333333333333499f), decodeAnchorY(2.433333158493042f, 1.9333333333333869f), decodeX(2.8666668f), decodeY(2.4333332f));
+        path.lineTo(decodeX(2.8733335f), decodeY(1.9407407f));
+        path.lineTo(decodeX(2.8666668f), decodeY(1.1814815f));
+        path.lineTo(decodeX(2.8666668f), decodeY(0.6066667f));
+        path.curveTo(decodeAnchorX(2.866666793823242f, 0.0042173304174148996f), decodeAnchorY(0.6066666841506958f, -1.9503377583381705f), decodeAnchorX(2.4599997997283936f, 1.9659460194139413f), decodeAnchorY(0.13333334028720856f, 0.017122267221350018f), decodeX(2.4599998f), decodeY(0.13333334f));
+        path.lineTo(decodeX(0.5466667f), decodeY(0.12666667f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect5() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(1.3333334f));
+        path.curveTo(decodeAnchorX(0.0f, 2.678571428571433f), decodeAnchorY(1.3333333730697632f, 8.881784197001252E-16f), decodeAnchorX(1.3678570985794067f, -6.214285714285715f), decodeAnchorY(0.20714285969734192f, -0.03571428571428292f), decodeX(1.3678571f), decodeY(0.20714286f));
+        path.lineTo(decodeX(1.5642858f), decodeY(0.20714286f));
+        path.curveTo(decodeAnchorX(1.5642857551574707f, 8.329670329670357f), decodeAnchorY(0.20714285969734192f, 0.002747252747249629f), decodeAnchorX(2.5999999046325684f, -5.2857142857142705f), decodeAnchorY(1.3333333730697632f, 0.03571428571428559f), decodeX(2.6f), decodeY(1.3333334f));
+        path.lineTo(decodeX(3.0f), decodeY(1.3333334f));
+        path.lineTo(decodeX(3.0f), decodeY(1.6666667f));
+        path.lineTo(decodeX(2.6f), decodeY(1.6666667f));
+        path.curveTo(decodeAnchorX(2.5999999046325684f, -5.321428571428569f), decodeAnchorY(1.6666667461395264f, 0.0357142857142847f), decodeAnchorX(1.5642857551574707f, 8.983516483516496f), decodeAnchorY(2.799999952316284f, 0.03846153846153122f), decodeX(1.5642858f), decodeY(2.8f));
+        path.lineTo(decodeX(1.3892857f), decodeY(2.8f));
+        path.curveTo(decodeAnchorX(1.389285683631897f, -6.714285714285704f), decodeAnchorY(2.799999952316284f, 0.0f), decodeAnchorX(0.0f, 2.6071428571428568f), decodeAnchorY(1.6666667461395264f, 0.03571428571428559f), decodeX(0.0f), decodeY(1.6666667f));
+        path.lineTo(decodeX(0.0f), decodeY(1.3333334f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect6() {
+            rect.setRect(decodeX(1.25f), //x
+                         decodeY(0.0f), //y
+                         decodeX(1.3f) - decodeX(1.25f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect7() {
+            rect.setRect(decodeX(1.75f), //x
+                         decodeY(0.0f), //y
+                         decodeX(1.8f) - decodeX(1.75f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(0.59333336f), decodeY(0.120000005f));
+        path.curveTo(decodeAnchorX(0.59333336353302f, -1.9999999999999993f), decodeAnchorY(0.12000000476837158f, 0.0f), decodeAnchorX(0.12000000476837158f, 0.0f), decodeAnchorY(0.59333336353302f, -2.000000000000001f), decodeX(0.120000005f), decodeY(0.59333336f));
+        path.curveTo(decodeAnchorX(0.12000000476837158f, 0.0f), decodeAnchorY(0.59333336353302f, 1.9999999999999991f), decodeAnchorX(0.12000000476837158f, 0.0f), decodeAnchorY(2.3933331966400146f, -2.0000000000000053f), decodeX(0.120000005f), decodeY(2.3933332f));
+        path.curveTo(decodeAnchorX(0.12000000476837158f, 0.0f), decodeAnchorY(2.3933331966400146f, 2.000000000000007f), decodeAnchorX(0.59333336353302f, -1.9999999999999993f), decodeAnchorY(2.8866665363311768f, 0.0f), decodeX(0.59333336f), decodeY(2.8866665f));
+        path.curveTo(decodeAnchorX(0.59333336353302f, 2.000000000000003f), decodeAnchorY(2.8866665363311768f, 0.0f), decodeAnchorX(2.700000047683716f, 0.0f), decodeAnchorY(2.879999876022339f, 0.0f), decodeX(2.7f), decodeY(2.8799999f));
+        path.lineTo(decodeX(2.8466668f), decodeY(2.6933334f));
+        path.lineTo(decodeX(2.8533332f), decodeY(1.6148149f));
+        path.lineTo(decodeX(2.86f), decodeY(1.4074074f));
+        path.lineTo(decodeX(2.86f), decodeY(0.37333333f));
+        path.lineTo(decodeX(2.7599998f), decodeY(0.13333334f));
+        path.curveTo(decodeAnchorX(2.7599997520446777f, 0.0f), decodeAnchorY(0.13333334028720856f, 0.0f), decodeAnchorX(0.59333336353302f, 2.000000000000003f), decodeAnchorY(0.12000000476837158f, 0.0f), decodeX(0.59333336f), decodeY(0.120000005f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath5() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(1.3333334f));
+        path.curveTo(decodeAnchorX(0.0f, 2.678571428571433f), decodeAnchorY(1.3333333730697632f, 8.881784197001252E-16f), decodeAnchorX(1.3678570985794067f, -6.357142857142872f), decodeAnchorY(0.20714285969734192f, -0.03571428571428337f), decodeX(1.3678571f), decodeY(0.20714286f));
+        path.lineTo(decodeX(1.5642858f), decodeY(0.20714286f));
+        path.curveTo(decodeAnchorX(1.5642857551574707f, 3.9999999999999964f), decodeAnchorY(0.20714285969734192f, 0.0f), decodeAnchorX(2.5999999046325684f, -5.2857142857142705f), decodeAnchorY(1.3333333730697632f, 0.03571428571428559f), decodeX(2.6f), decodeY(1.3333334f));
+        path.lineTo(decodeX(3.0f), decodeY(1.3333334f));
+        path.lineTo(decodeX(3.0f), decodeY(1.6666667f));
+        path.lineTo(decodeX(2.6f), decodeY(1.6666667f));
+        path.curveTo(decodeAnchorX(2.5999999046325684f, -5.321428571428569f), decodeAnchorY(1.6666667461395264f, 0.0357142857142847f), decodeAnchorX(1.5642857551574707f, 3.999999999999986f), decodeAnchorY(2.799999952316284f, 0.0f), decodeX(1.5642858f), decodeY(2.8f));
+        path.lineTo(decodeX(1.3892857f), decodeY(2.8f));
+        path.curveTo(decodeAnchorX(1.389285683631897f, -6.571428571428584f), decodeAnchorY(2.799999952316284f, -0.035714285714286476f), decodeAnchorX(0.0f, 2.6071428571428568f), decodeAnchorY(1.6666667461395264f, 0.03571428571428559f), decodeX(0.0f), decodeY(1.6666667f));
+        path.lineTo(decodeX(0.0f), decodeY(1.3333334f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.038709678f,0.05967742f,0.08064516f,0.23709677f,0.3935484f,0.41612905f,0.43870968f,0.67419356f,0.90967745f,0.91451615f,0.91935486f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5,
+                            decodeColor(color5,color6,0.5f),
+                            color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.05483871f,0.5032258f,0.9516129f },
+                new Color[] { color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.038709678f,0.05967742f,0.08064516f,0.23709677f,0.3935484f,0.41612905f,0.43870968f,0.67419356f,0.90967745f,0.91612905f,0.92258066f },
+                new Color[] { color11,
+                            decodeColor(color11,color12,0.5f),
+                            color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14,
+                            decodeColor(color14,color15,0.5f),
+                            color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.038709678f,0.05483871f,0.07096774f,0.28064516f,0.4903226f,0.6967742f,0.9032258f,0.9241935f,0.9451613f },
+                new Color[] { color18,
+                            decodeColor(color18,color19,0.5f),
+                            color19,
+                            decodeColor(color19,color20,0.5f),
+                            color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.038709678f,0.061290324f,0.08387097f,0.27258065f,0.46129033f,0.4903226f,0.5193548f,0.71774197f,0.91612905f,0.92419356f,0.93225807f },
+                new Color[] { color23,
+                            decodeColor(color23,color24,0.5f),
+                            color24,
+                            decodeColor(color24,color25,0.5f),
+                            color25,
+                            decodeColor(color25,color26,0.5f),
+                            color26,
+                            decodeColor(color26,color27,0.5f),
+                            color27,
+                            decodeColor(color27,color28,0.5f),
+                            color28});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.051612902f,0.06612903f,0.08064516f,0.2935484f,0.5064516f,0.6903226f,0.87419355f,0.88870966f,0.9032258f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color29,0.5f),
+                            color29,
+                            decodeColor(color29,color7,0.5f),
+                            color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.20645161f,0.41290322f,0.44193548f,0.47096774f,0.7354839f,1.0f },
+                new Color[] { color24,
+                            decodeColor(color24,color25,0.5f),
+                            color25,
+                            decodeColor(color25,color26,0.5f),
+                            color26,
+                            decodeColor(color26,color30,0.5f),
+                            color30});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.038709678f,0.05483871f,0.07096774f,0.28064516f,0.4903226f,0.6967742f,0.9032258f,0.9241935f,0.9451613f },
+                new Color[] { color34,
+                            decodeColor(color34,color35,0.5f),
+                            color35,
+                            decodeColor(color35,color36,0.5f),
+                            color36,
+                            decodeColor(color36,color37,0.5f),
+                            color37,
+                            decodeColor(color37,color38,0.5f),
+                            color38});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.038709678f,0.061290324f,0.08387097f,0.27258065f,0.46129033f,0.4903226f,0.5193548f,0.71774197f,0.91612905f,0.92419356f,0.93225807f },
+                new Color[] { color39,
+                            decodeColor(color39,color40,0.5f),
+                            color40,
+                            decodeColor(color40,color41,0.5f),
+                            color41,
+                            decodeColor(color41,color42,0.5f),
+                            color42,
+                            decodeColor(color42,color43,0.5f),
+                            color43,
+                            decodeColor(color43,color44,0.5f),
+                            color44});
+    }
+
+    private Paint decodeGradient11(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.051612902f,0.06612903f,0.08064516f,0.2935484f,0.5064516f,0.6903226f,0.87419355f,0.88870966f,0.9032258f },
+                new Color[] { color45,
+                            decodeColor(color45,color46,0.5f),
+                            color46,
+                            decodeColor(color46,color47,0.5f),
+                            color47,
+                            decodeColor(color47,color48,0.5f),
+                            color48,
+                            decodeColor(color48,color49,0.5f),
+                            color49});
+    }
+
+    private Paint decodeGradient12(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.20645161f,0.41290322f,0.44193548f,0.47096774f,0.7354839f,1.0f },
+                new Color[] { color40,
+                            decodeColor(color40,color41,0.5f),
+                            color41,
+                            decodeColor(color41,color42,0.5f),
+                            color42,
+                            decodeColor(color42,color50,0.5f),
+                            color50});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/RadioButtonMenuItemPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,171 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class RadioButtonMenuItemPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of RadioButtonMenuItemPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_MOUSEOVER = 3;
+    static final int BACKGROUND_SELECTED_MOUSEOVER = 4;
+    static final int CHECKICON_DISABLED_SELECTED = 5;
+    static final int CHECKICON_ENABLED_SELECTED = 6;
+    static final int CHECKICON_SELECTED_MOUSEOVER = 7;
+    static final int ICON_DISABLED = 8;
+    static final int ICON_ENABLED = 9;
+    static final int ICON_MOUSEOVER = 10;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of RadioButtonMenuItemPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusSelection", 0.0f, 0.0f, 0.0f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", 0.0f, -0.08983666f, -0.17647058f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.09663743f, -0.4627451f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public RadioButtonMenuItemPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_SELECTED_MOUSEOVER: paintBackgroundSelectedAndMouseOver(g); break;
+            case CHECKICON_DISABLED_SELECTED: paintcheckIconDisabledAndSelected(g); break;
+            case CHECKICON_ENABLED_SELECTED: paintcheckIconEnabledAndSelected(g); break;
+            case CHECKICON_SELECTED_MOUSEOVER: paintcheckIconSelectedAndMouseOver(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundSelectedAndMouseOver(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintcheckIconDisabledAndSelected(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color2);
+        g.fill(path);
+
+    }
+
+    private void paintcheckIconEnabledAndSelected(Graphics2D g) {
+        path = decodePath2();
+        g.setPaint(color3);
+        g.fill(path);
+
+    }
+
+    private void paintcheckIconSelectedAndMouseOver(Graphics2D g) {
+        path = decodePath2();
+        g.setPaint(color4);
+        g.fill(path);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(2.097561f));
+        path.lineTo(decodeX(0.90975606f), decodeY(0.20243903f));
+        path.lineTo(decodeX(3.0f), decodeY(2.102439f));
+        path.lineTo(decodeX(0.90731704f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(2.097561f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(0.0024390244f), decodeY(2.097561f));
+        path.lineTo(decodeX(0.90975606f), decodeY(0.20243903f));
+        path.lineTo(decodeX(3.0f), decodeY(2.102439f));
+        path.lineTo(decodeX(0.90731704f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0024390244f), decodeY(2.097561f));
+        path.closePath();
+        return path;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/RadioButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,704 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class RadioButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of RadioButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int ICON_DISABLED = 3;
+    static final int ICON_ENABLED = 4;
+    static final int ICON_FOCUSED = 5;
+    static final int ICON_MOUSEOVER = 6;
+    static final int ICON_MOUSEOVER_FOCUSED = 7;
+    static final int ICON_PRESSED = 8;
+    static final int ICON_PRESSED_FOCUSED = 9;
+    static final int ICON_SELECTED = 10;
+    static final int ICON_SELECTED_FOCUSED = 11;
+    static final int ICON_PRESSED_SELECTED = 12;
+    static final int ICON_PRESSED_SELECTED_FOCUSED = 13;
+    static final int ICON_MOUSEOVER_SELECTED = 14;
+    static final int ICON_MOUSEOVER_SELECTED_FOCUSED = 15;
+    static final int ICON_DISABLED_SELECTED = 16;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of RadioButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", 0.0f, -0.06766917f, 0.07843137f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", 0.0f, -0.06413457f, 0.015686274f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.0f, -0.08466425f, 0.16470587f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.0f, -0.07016757f, 0.12941176f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.0f, -0.070703305f, 0.14117646f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.0f, -0.07052632f, 0.1372549f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", 0.0f, 0.0f, 0.0f, -112);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.0f, -0.053201474f, -0.12941176f, 0);
+    private Color color9 = decodeColor("nimbusBlueGrey", 0.0f, 0.006356798f, -0.44313726f, 0);
+    private Color color10 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10654225f, 0.23921567f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", 0.0f, -0.07206477f, 0.17254901f, 0);
+    private Color color12 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color13 = decodeColor("nimbusBlueGrey", -0.00505054f, -0.027819552f, -0.2235294f, 0);
+    private Color color14 = decodeColor("nimbusBlueGrey", 0.0f, 0.24241486f, -0.6117647f, 0);
+    private Color color15 = decodeColor("nimbusBlueGrey", -0.111111104f, -0.10655806f, 0.24313724f, 0);
+    private Color color16 = decodeColor("nimbusBlueGrey", 0.0f, -0.07333623f, 0.20392156f, 0);
+    private Color color17 = decodeColor("nimbusBlueGrey", 0.08585858f, -0.067389056f, 0.25490195f, 0);
+    private Color color18 = decodeColor("nimbusBlueGrey", -0.111111104f, -0.10628903f, 0.18039215f, 0);
+    private Color color19 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color20 = decodeColor("nimbusBlueGrey", 0.055555582f, 0.23947367f, -0.6666667f, 0);
+    private Color color21 = decodeColor("nimbusBlueGrey", -0.0777778f, -0.06815343f, -0.28235295f, 0);
+    private Color color22 = decodeColor("nimbusBlueGrey", 0.0f, -0.06866585f, 0.09803921f, 0);
+    private Color color23 = decodeColor("nimbusBlueGrey", -0.0027777553f, -0.0018306673f, -0.02352941f, 0);
+    private Color color24 = decodeColor("nimbusBlueGrey", 0.002924025f, -0.02047892f, 0.082352936f, 0);
+    private Color color25 = decodeColor("nimbusBase", 2.9569864E-4f, -0.36035198f, -0.007843137f, 0);
+    private Color color26 = decodeColor("nimbusBase", 2.9569864E-4f, 0.019458115f, -0.32156867f, 0);
+    private Color color27 = decodeColor("nimbusBase", 0.004681647f, -0.6195853f, 0.4235294f, 0);
+    private Color color28 = decodeColor("nimbusBase", 0.004681647f, -0.56704473f, 0.36470586f, 0);
+    private Color color29 = decodeColor("nimbusBase", 5.1498413E-4f, -0.43866998f, 0.24705881f, 0);
+    private Color color30 = decodeColor("nimbusBase", 5.1498413E-4f, -0.44879842f, 0.29019606f, 0);
+    private Color color31 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.07243107f, -0.33333334f, 0);
+    private Color color32 = decodeColor("nimbusBlueGrey", -0.6111111f, -0.110526316f, -0.74509805f, 0);
+    private Color color33 = decodeColor("nimbusBlueGrey", -0.027777791f, 0.07129187f, -0.6156863f, 0);
+    private Color color34 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.49803925f, 0);
+    private Color color35 = decodeColor("nimbusBase", 0.0030477047f, -0.1257143f, -0.15686277f, 0);
+    private Color color36 = decodeColor("nimbusBase", -0.0017285943f, -0.4367347f, 0.21960783f, 0);
+    private Color color37 = decodeColor("nimbusBase", -0.0010654926f, -0.31349206f, 0.15686274f, 0);
+    private Color color38 = decodeColor("nimbusBase", 0.0f, 0.0f, 0.0f, 0);
+    private Color color39 = decodeColor("nimbusBase", 8.05676E-4f, -0.12380952f, 0.109803915f, 0);
+    private Color color40 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.080223285f, -0.4862745f, 0);
+    private Color color41 = decodeColor("nimbusBase", -6.374717E-4f, -0.20452163f, -0.12156865f, 0);
+    private Color color42 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.5058824f, 0);
+    private Color color43 = decodeColor("nimbusBase", -0.011985004f, -0.6157143f, 0.43137252f, 0);
+    private Color color44 = decodeColor("nimbusBase", 0.004681647f, -0.56932425f, 0.3960784f, 0);
+    private Color color45 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4555341f, 0.3215686f, 0);
+    private Color color46 = decodeColor("nimbusBase", 5.1498413E-4f, -0.46550155f, 0.372549f, 0);
+    private Color color47 = decodeColor("nimbusBase", 0.0024294257f, -0.47271872f, 0.34117645f, 0);
+    private Color color48 = decodeColor("nimbusBase", 0.010237217f, -0.56289876f, 0.2588235f, 0);
+    private Color color49 = decodeColor("nimbusBase", 0.016586483f, -0.5620301f, 0.19607842f, 0);
+    private Color color50 = decodeColor("nimbusBase", 0.027408898f, -0.5878882f, 0.35294116f, 0);
+    private Color color51 = decodeColor("nimbusBase", 0.021348298f, -0.56722116f, 0.3098039f, 0);
+    private Color color52 = decodeColor("nimbusBase", 0.021348298f, -0.567841f, 0.31764704f, 0);
+    private Color color53 = decodeColor("nimbusBlueGrey", -0.01111114f, -0.058170296f, 0.0039215684f, 0);
+    private Color color54 = decodeColor("nimbusBlueGrey", -0.013888836f, -0.04195489f, -0.058823526f, 0);
+    private Color color55 = decodeColor("nimbusBlueGrey", 0.009259284f, -0.0147816315f, -0.007843137f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public RadioButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case ICON_DISABLED: painticonDisabled(g); break;
+            case ICON_ENABLED: painticonEnabled(g); break;
+            case ICON_FOCUSED: painticonFocused(g); break;
+            case ICON_MOUSEOVER: painticonMouseOver(g); break;
+            case ICON_MOUSEOVER_FOCUSED: painticonMouseOverAndFocused(g); break;
+            case ICON_PRESSED: painticonPressed(g); break;
+            case ICON_PRESSED_FOCUSED: painticonPressedAndFocused(g); break;
+            case ICON_SELECTED: painticonSelected(g); break;
+            case ICON_SELECTED_FOCUSED: painticonSelectedAndFocused(g); break;
+            case ICON_PRESSED_SELECTED: painticonPressedAndSelected(g); break;
+            case ICON_PRESSED_SELECTED_FOCUSED: painticonPressedAndSelectedAndFocused(g); break;
+            case ICON_MOUSEOVER_SELECTED: painticonMouseOverAndSelected(g); break;
+            case ICON_MOUSEOVER_SELECTED_FOCUSED: painticonMouseOverAndSelectedAndFocused(g); break;
+            case ICON_DISABLED_SELECTED: painticonDisabledAndSelected(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void painticonDisabled(Graphics2D g) {
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient1(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient2(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void painticonEnabled(Graphics2D g) {
+        ellipse = decodeEllipse3();
+        g.setPaint(color7);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient3(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient4(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void painticonFocused(Graphics2D g) {
+        ellipse = decodeEllipse4();
+        g.setPaint(color12);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient3(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient4(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void painticonMouseOver(Graphics2D g) {
+        ellipse = decodeEllipse3();
+        g.setPaint(color7);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient5(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient6(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void painticonMouseOverAndFocused(Graphics2D g) {
+        ellipse = decodeEllipse4();
+        g.setPaint(color12);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient5(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient6(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void painticonPressed(Graphics2D g) {
+        ellipse = decodeEllipse3();
+        g.setPaint(color19);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient7(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient8(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void painticonPressedAndFocused(Graphics2D g) {
+        ellipse = decodeEllipse4();
+        g.setPaint(color12);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient7(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient8(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void painticonSelected(Graphics2D g) {
+        ellipse = decodeEllipse3();
+        g.setPaint(color7);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient9(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient10(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse5();
+        g.setPaint(decodeGradient11(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void painticonSelectedAndFocused(Graphics2D g) {
+        ellipse = decodeEllipse4();
+        g.setPaint(color12);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient9(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient10(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse5();
+        g.setPaint(decodeGradient11(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void painticonPressedAndSelected(Graphics2D g) {
+        ellipse = decodeEllipse3();
+        g.setPaint(color19);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient12(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient13(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse5();
+        g.setPaint(decodeGradient14(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void painticonPressedAndSelectedAndFocused(Graphics2D g) {
+        ellipse = decodeEllipse4();
+        g.setPaint(color12);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient12(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient13(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse5();
+        g.setPaint(decodeGradient14(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void painticonMouseOverAndSelected(Graphics2D g) {
+        ellipse = decodeEllipse3();
+        g.setPaint(color7);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient15(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient16(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse5();
+        g.setPaint(decodeGradient11(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void painticonMouseOverAndSelectedAndFocused(Graphics2D g) {
+        ellipse = decodeEllipse4();
+        g.setPaint(color12);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient15(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient16(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse5();
+        g.setPaint(decodeGradient11(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void painticonDisabledAndSelected(Graphics2D g) {
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient17(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient18(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse5();
+        g.setPaint(decodeGradient19(ellipse));
+        g.fill(ellipse);
+
+    }
+
+
+
+    private Ellipse2D decodeEllipse1() {
+        ellipse.setFrame(decodeX(0.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(0.4f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse2() {
+        ellipse.setFrame(decodeX(0.6f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.4f) - decodeX(0.6f), //width
+                         decodeY(2.4f) - decodeY(0.6f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse3() {
+        ellipse.setFrame(decodeX(0.4f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(2.8f) - decodeY(0.6f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse4() {
+        ellipse.setFrame(decodeX(0.120000005f), //x
+                         decodeY(0.120000005f), //y
+                         decodeX(2.8799999f) - decodeX(0.120000005f), //width
+                         decodeY(2.8799999f) - decodeY(0.120000005f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse5() {
+        ellipse.setFrame(decodeX(1.125f), //x
+                         decodeY(1.125f), //y
+                         decodeX(1.875f) - decodeX(1.125f), //width
+                         decodeY(1.875f) - decodeY(1.125f)); //height
+        return ellipse;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49789914f * w) + x, (-0.004201681f * h) + y, (0.5f * w) + x, (0.9978992f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49754903f * w) + x, (0.004901961f * h) + y, (0.50735295f * w) + x, (1.0f * h) + y,
+                new float[] { 0.06344411f,0.21601209f,0.36858007f,0.54833835f,0.72809666f,0.77492446f,0.82175225f,0.91087615f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5,
+                            decodeColor(color5,color6,0.5f),
+                            color6});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49789914f * w) + x, (-0.004201681f * h) + y, (0.5f * w) + x, (0.9978992f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color8,
+                            decodeColor(color8,color9,0.5f),
+                            color9});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49754903f * w) + x, (0.004901961f * h) + y, (0.50735295f * w) + x, (1.0f * h) + y,
+                new float[] { 0.06344411f,0.25009555f,0.43674698f,0.48042166f,0.52409637f,0.70481926f,0.88554215f },
+                new Color[] { color10,
+                            decodeColor(color10,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49789914f * w) + x, (-0.004201681f * h) + y, (0.5f * w) + x, (0.9978992f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49754903f * w) + x, (0.004901961f * h) + y, (0.50735295f * w) + x, (1.0f * h) + y,
+                new float[] { 0.06344411f,0.21601209f,0.36858007f,0.54833835f,0.72809666f,0.77492446f,0.82175225f,0.91087615f,1.0f },
+                new Color[] { color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16,
+                            decodeColor(color16,color16,0.5f),
+                            color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49789914f * w) + x, (-0.004201681f * h) + y, (0.5f * w) + x, (0.9978992f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49754903f * w) + x, (0.004901961f * h) + y, (0.50735295f * w) + x, (1.0f * h) + y,
+                new float[] { 0.06344411f,0.20792687f,0.35240963f,0.45030123f,0.5481928f,0.748494f,0.9487952f },
+                new Color[] { color22,
+                            decodeColor(color22,color23,0.5f),
+                            color23,
+                            decodeColor(color23,color23,0.5f),
+                            color23,
+                            decodeColor(color23,color24,0.5f),
+                            color24});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49789914f * w) + x, (-0.004201681f * h) + y, (0.5f * w) + x, (0.9978992f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color25,
+                            decodeColor(color25,color26,0.5f),
+                            color26});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49754903f * w) + x, (0.004901961f * h) + y, (0.50735295f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0813253f,0.100903615f,0.12048193f,0.28915662f,0.45783132f,0.6159638f,0.77409637f,0.82981926f,0.88554215f },
+                new Color[] { color27,
+                            decodeColor(color27,color28,0.5f),
+                            color28,
+                            decodeColor(color28,color29,0.5f),
+                            color29,
+                            decodeColor(color29,color29,0.5f),
+                            color29,
+                            decodeColor(color29,color30,0.5f),
+                            color30});
+    }
+
+    private Paint decodeGradient11(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.50490195f * w) + x, (0.0f * h) + y, (0.49509802f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.23192771f,0.46385542f,0.73192775f,1.0f },
+                new Color[] { color31,
+                            decodeColor(color31,color32,0.5f),
+                            color32,
+                            decodeColor(color32,color33,0.5f),
+                            color33});
+    }
+
+    private Paint decodeGradient12(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49789914f * w) + x, (-0.004201681f * h) + y, (0.5f * w) + x, (0.9978992f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color34,
+                            decodeColor(color34,color26,0.5f),
+                            color26});
+    }
+
+    private Paint decodeGradient13(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49754903f * w) + x, (0.004901961f * h) + y, (0.50735295f * w) + x, (1.0f * h) + y,
+                new float[] { 0.039156627f,0.07831325f,0.11746988f,0.2876506f,0.45783132f,0.56174695f,0.66566265f,0.7756024f,0.88554215f },
+                new Color[] { color36,
+                            decodeColor(color36,color37,0.5f),
+                            color37,
+                            decodeColor(color37,color38,0.5f),
+                            color38,
+                            decodeColor(color38,color38,0.5f),
+                            color38,
+                            decodeColor(color38,color39,0.5f),
+                            color39});
+    }
+
+    private Paint decodeGradient14(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.50490195f * w) + x, (0.0f * h) + y, (0.49509802f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.23192771f,0.46385542f,0.73192775f,1.0f },
+                new Color[] { color40,
+                            decodeColor(color40,color32,0.5f),
+                            color32,
+                            decodeColor(color32,color33,0.5f),
+                            color33});
+    }
+
+    private Paint decodeGradient15(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49789914f * w) + x, (-0.004201681f * h) + y, (0.5f * w) + x, (0.9978992f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color41,
+                            decodeColor(color41,color42,0.5f),
+                            color42});
+    }
+
+    private Paint decodeGradient16(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49754903f * w) + x, (0.004901961f * h) + y, (0.50735295f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0813253f,0.100903615f,0.12048193f,0.20180723f,0.28313252f,0.49246985f,0.7018072f,0.7560241f,0.810241f,0.84789157f,0.88554215f },
+                new Color[] { color43,
+                            decodeColor(color43,color44,0.5f),
+                            color44,
+                            decodeColor(color44,color45,0.5f),
+                            color45,
+                            decodeColor(color45,color45,0.5f),
+                            color45,
+                            decodeColor(color45,color46,0.5f),
+                            color46,
+                            decodeColor(color46,color47,0.5f),
+                            color47});
+    }
+
+    private Paint decodeGradient17(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49789914f * w) + x, (-0.004201681f * h) + y, (0.5f * w) + x, (0.9978992f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color48,
+                            decodeColor(color48,color49,0.5f),
+                            color49});
+    }
+
+    private Paint decodeGradient18(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.49754903f * w) + x, (0.004901961f * h) + y, (0.50735295f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0813253f,0.2695783f,0.45783132f,0.67168677f,0.88554215f },
+                new Color[] { color50,
+                            decodeColor(color50,color51,0.5f),
+                            color51,
+                            decodeColor(color51,color52,0.5f),
+                            color52});
+    }
+
+    private Paint decodeGradient19(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.50490195f * w) + x, (0.0f * h) + y, (0.49509802f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.23192771f,0.46385542f,0.73192775f,1.0f },
+                new Color[] { color53,
+                            decodeColor(color53,color54,0.5f),
+                            color54,
+                            decodeColor(color54,color55,0.5f),
+                            color55});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ScrollBarPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ScrollBarPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ScrollBarPainter to determine which region/state is being painted
+    //by that instance.
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ScrollBarPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ScrollBarPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ScrollBarScrollBarButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,380 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ScrollBarScrollBarButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ScrollBarScrollBarButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int FOREGROUND_ENABLED = 1;
+    static final int FOREGROUND_DISABLED = 2;
+    static final int FOREGROUND_MOUSEOVER = 3;
+    static final int FOREGROUND_PRESSED = 4;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ScrollBarScrollBarButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = new Color(255, 200, 0, 255);
+    private Color color2 = decodeColor("nimbusBlueGrey", -0.01111114f, -0.07763158f, -0.1490196f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", -0.111111104f, -0.10580933f, 0.086274505f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.102261856f, 0.20392156f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", -0.039682567f, -0.079276316f, 0.13333333f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.07382907f, 0.109803915f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", -0.039682567f, -0.08241387f, 0.23137254f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", -0.055555522f, -0.08443936f, -0.29411766f, -136);
+    private Color color9 = decodeColor("nimbusBlueGrey", -0.055555522f, -0.09876161f, 0.25490195f, -178);
+    private Color color10 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.08878718f, -0.5647059f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.080223285f, -0.4862745f, 0);
+    private Color color12 = decodeColor("nimbusBlueGrey", -0.111111104f, -0.09525914f, -0.23137254f, 0);
+    private Color color13 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -165);
+    private Color color14 = decodeColor("nimbusBlueGrey", -0.04444444f, -0.080223285f, -0.09803921f, 0);
+    private Color color15 = decodeColor("nimbusBlueGrey", -0.6111111f, -0.110526316f, 0.10588235f, 0);
+    private Color color16 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color17 = decodeColor("nimbusBlueGrey", -0.039682567f, -0.081719734f, 0.20784312f, 0);
+    private Color color18 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.07677104f, 0.18431371f, 0);
+    private Color color19 = decodeColor("nimbusBlueGrey", -0.04444444f, -0.080223285f, -0.09803921f, -69);
+    private Color color20 = decodeColor("nimbusBlueGrey", -0.055555522f, -0.09876161f, 0.25490195f, -39);
+    private Color color21 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.0951417f, -0.49019608f, 0);
+    private Color color22 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.086996906f, -0.4117647f, 0);
+    private Color color23 = decodeColor("nimbusBlueGrey", -0.111111104f, -0.09719298f, -0.15686274f, 0);
+    private Color color24 = decodeColor("nimbusBlueGrey", -0.037037015f, -0.043859646f, -0.21568626f, 0);
+    private Color color25 = decodeColor("nimbusBlueGrey", -0.06349206f, -0.07309316f, -0.011764705f, 0);
+    private Color color26 = decodeColor("nimbusBlueGrey", -0.048611104f, -0.07296763f, 0.09019607f, 0);
+    private Color color27 = decodeColor("nimbusBlueGrey", -0.03535354f, -0.05497076f, 0.031372547f, 0);
+    private Color color28 = decodeColor("nimbusBlueGrey", -0.034188032f, -0.043168806f, 0.011764705f, 0);
+    private Color color29 = decodeColor("nimbusBlueGrey", -0.03535354f, -0.0600676f, 0.109803915f, 0);
+    private Color color30 = decodeColor("nimbusBlueGrey", -0.037037015f, -0.043859646f, -0.21568626f, -44);
+    private Color color31 = decodeColor("nimbusBlueGrey", -0.6111111f, -0.110526316f, -0.74509805f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ScrollBarScrollBarButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case FOREGROUND_ENABLED: paintForegroundEnabled(g); break;
+            case FOREGROUND_DISABLED: paintForegroundDisabled(g); break;
+            case FOREGROUND_MOUSEOVER: paintForegroundMouseOver(g); break;
+            case FOREGROUND_PRESSED: paintForegroundPressed(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintForegroundEnabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient2(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(color13);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundDisabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundMouseOver(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(color13);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundPressed(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(color31);
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(color13);
+        g.fill(path);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(3.0f), decodeY(3.0f));
+        path.lineTo(decodeX(3.0f), decodeY(3.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.0f));
+        path.lineTo(decodeX(1.6956522f), decodeY(0.0f));
+        path.curveTo(decodeAnchorX(1.6956522464752197f, 0.0f), decodeAnchorY(0.0f, 0.0f), decodeAnchorX(1.6956522464752197f, -0.7058823529411633f), decodeAnchorY(1.307692289352417f, -3.0294117647058822f), decodeX(1.6956522f), decodeY(1.3076923f));
+        path.curveTo(decodeAnchorX(1.6956522464752197f, 0.7058823529411633f), decodeAnchorY(1.307692289352417f, 3.0294117647058822f), decodeAnchorX(1.8260869979858398f, -2.0f), decodeAnchorY(1.769230842590332f, -1.9411764705882355f), decodeX(1.826087f), decodeY(1.7692308f));
+        path.curveTo(decodeAnchorX(1.8260869979858398f, 2.0f), decodeAnchorY(1.769230842590332f, 1.9411764705882355f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeX(3.0f), decodeY(2.0f));
+        path.lineTo(decodeX(3.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(1.0022625f));
+        path.lineTo(decodeX(0.9705882f), decodeY(1.0384616f));
+        path.lineTo(decodeX(1.0409207f), decodeY(1.0791855f));
+        path.lineTo(decodeX(1.0409207f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(1.0022625f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(1.4782609f), decodeY(1.2307693f));
+        path.lineTo(decodeX(1.4782609f), decodeY(1.7692308f));
+        path.lineTo(decodeX(1.1713555f), decodeY(1.5f));
+        path.lineTo(decodeX(1.4782609f), decodeY(1.2307693f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath5() {
+        path.reset();
+        path.moveTo(decodeX(1.6713555f), decodeY(1.0769231f));
+        path.curveTo(decodeAnchorX(1.6713554859161377f, 0.7352941176470615f), decodeAnchorY(1.076923131942749f, 0.0f), decodeAnchorX(1.718670129776001f, -0.911764705882355f), decodeAnchorY(1.4095022678375244f, -2.2058823529411784f), decodeX(1.7186701f), decodeY(1.4095023f));
+        path.curveTo(decodeAnchorX(1.718670129776001f, 0.911764705882355f), decodeAnchorY(1.4095022678375244f, 2.2058823529411784f), decodeAnchorX(1.8439897298812866f, -2.3529411764705905f), decodeAnchorY(1.7941176891326904f, -1.852941176470587f), decodeX(1.8439897f), decodeY(1.7941177f));
+        path.curveTo(decodeAnchorX(1.8439897298812866f, 2.3529411764705905f), decodeAnchorY(1.7941176891326904f, 1.852941176470587f), decodeAnchorX(2.5f, 0.0f), decodeAnchorY(2.2352943420410156f, 0.0f), decodeX(2.5f), decodeY(2.2352943f));
+        path.lineTo(decodeX(2.3529415f), decodeY(2.8235292f));
+        path.curveTo(decodeAnchorX(2.3529415130615234f, 0.0f), decodeAnchorY(2.8235292434692383f, 0.0f), decodeAnchorX(1.818414330482483f, 1.5588235294117645f), decodeAnchorY(1.8438913822174072f, 1.3823529411764675f), decodeX(1.8184143f), decodeY(1.8438914f));
+        path.curveTo(decodeAnchorX(1.818414330482483f, -1.5588235294117645f), decodeAnchorY(1.8438913822174072f, -1.3823529411764675f), decodeAnchorX(1.694373369216919f, 0.7941176470588225f), decodeAnchorY(1.4841628074645996f, 1.9999999999999991f), decodeX(1.6943734f), decodeY(1.4841628f));
+        path.curveTo(decodeAnchorX(1.694373369216919f, -0.7941176470588225f), decodeAnchorY(1.4841628074645996f, -1.9999999999999991f), decodeAnchorX(1.6713554859161377f, -0.7352941176470598f), decodeAnchorY(1.076923131942749f, 0.0f), decodeX(1.6713555f), decodeY(1.0769231f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.032934133f,0.065868266f,0.089820355f,0.11377245f,0.23053892f,0.3473054f,0.494012f,0.6407186f,0.78443116f,0.92814374f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5,
+                            decodeColor(color5,color6,0.5f),
+                            color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.0f * w) + x, (0.5f * h) + y, (0.5735294f * w) + x, (0.5f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color8,
+                            decodeColor(color8,color9,0.5f),
+                            color9});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.925f * w) + x, (0.9285714f * h) + y, (0.925f * w) + x, (0.004201681f * h) + y,
+                new float[] { 0.0f,0.2964072f,0.5928144f,0.79341316f,0.994012f },
+                new Color[] { color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11,
+                            decodeColor(color11,color12,0.5f),
+                            color12});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.032934133f,0.065868266f,0.089820355f,0.11377245f,0.23053892f,0.3473054f,0.494012f,0.6407186f,0.78443116f,0.92814374f },
+                new Color[] { color14,
+                            decodeColor(color14,color15,0.5f),
+                            color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18,
+                            decodeColor(color18,color16,0.5f),
+                            color16});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.0f * w) + x, (0.5f * h) + y, (0.5735294f * w) + x, (0.5f * h) + y,
+                new float[] { 0.19518717f,0.5975936f,1.0f },
+                new Color[] { color19,
+                            decodeColor(color19,color20,0.5f),
+                            color20});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.925f * w) + x, (0.9285714f * h) + y, (0.925f * w) + x, (0.004201681f * h) + y,
+                new float[] { 0.0f,0.2964072f,0.5928144f,0.79341316f,0.994012f },
+                new Color[] { color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22,
+                            decodeColor(color22,color23,0.5f),
+                            color23});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.032934133f,0.065868266f,0.089820355f,0.11377245f,0.23053892f,0.3473054f,0.494012f,0.6407186f,0.78443116f,0.92814374f },
+                new Color[] { color24,
+                            decodeColor(color24,color25,0.5f),
+                            color25,
+                            decodeColor(color25,color26,0.5f),
+                            color26,
+                            decodeColor(color26,color27,0.5f),
+                            color27,
+                            decodeColor(color27,color28,0.5f),
+                            color28,
+                            decodeColor(color28,color29,0.5f),
+                            color29});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.0f * w) + x, (0.5f * h) + y, (0.5735294f * w) + x, (0.5f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color30,
+                            decodeColor(color30,color9,0.5f),
+                            color9});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ScrollBarScrollBarThumbPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,379 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ScrollBarScrollBarThumbPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ScrollBarScrollBarThumbPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_FOCUSED = 3;
+    static final int BACKGROUND_MOUSEOVER = 4;
+    static final int BACKGROUND_PRESSED = 5;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ScrollBarScrollBarThumbPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBase", 5.1498413E-4f, 0.18061227f, -0.35686278f, 0);
+    private Color color2 = decodeColor("nimbusBase", 5.1498413E-4f, -0.21018237f, -0.18039218f, 0);
+    private Color color3 = decodeColor("nimbusBase", 7.13408E-4f, -0.53277314f, 0.25098038f, 0);
+    private Color color4 = decodeColor("nimbusBase", -0.07865167f, -0.6317617f, 0.44313723f, 0);
+    private Color color5 = decodeColor("nimbusBase", 5.1498413E-4f, -0.44340658f, 0.26666665f, 0);
+    private Color color6 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4669379f, 0.38039213f, 0);
+    private Color color7 = decodeColor("nimbusBase", -0.07865167f, -0.56512606f, 0.45098037f, 0);
+    private Color color8 = decodeColor("nimbusBase", -0.0017285943f, -0.362987f, 0.011764705f, 0);
+    private Color color9 = decodeColor("nimbusBase", 5.2034855E-5f, -0.41753247f, 0.09803921f, -222);
+    private Color color10 = new Color(255, 200, 0, 255);
+    private Color color11 = decodeColor("nimbusBase", -0.0017285943f, -0.362987f, 0.011764705f, -255);
+    private Color color12 = decodeColor("nimbusBase", 0.010237217f, -0.5621849f, 0.25098038f, 0);
+    private Color color13 = decodeColor("nimbusBase", 0.08801502f, -0.6317773f, 0.4470588f, 0);
+    private Color color14 = decodeColor("nimbusBase", 5.1498413E-4f, -0.45950285f, 0.34117645f, 0);
+    private Color color15 = decodeColor("nimbusBase", -0.0017285943f, -0.48277313f, 0.45098037f, 0);
+    private Color color16 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, 0);
+    private Color color17 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.54901963f, 0);
+    private Color color18 = decodeColor("nimbusBase", 0.0013483167f, 0.29021162f, -0.33725494f, 0);
+    private Color color19 = decodeColor("nimbusBase", 0.002908647f, -0.29012606f, -0.015686274f, 0);
+    private Color color20 = decodeColor("nimbusBase", -8.738637E-4f, -0.40612245f, 0.21960783f, 0);
+    private Color color21 = decodeColor("nimbusBase", 0.0f, -0.01765871f, 0.015686274f, 0);
+    private Color color22 = decodeColor("nimbusBase", 0.0f, -0.12714285f, 0.1372549f, 0);
+    private Color color23 = decodeColor("nimbusBase", 0.0018727183f, -0.23116884f, 0.31372547f, 0);
+    private Color color24 = decodeColor("nimbusBase", -8.738637E-4f, -0.3579365f, -0.33725494f, 0);
+    private Color color25 = decodeColor("nimbusBase", 0.004681647f, -0.3857143f, -0.36078435f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ScrollBarScrollBarThumbPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_PRESSED: paintBackgroundPressed(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient2(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(color10);
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(color10);
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundPressed(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(color10);
+        g.fill(path);
+        path = decodePath6();
+        g.setPaint(decodeGradient9(path));
+        g.fill(path);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(1.0f));
+        path.lineTo(decodeX(0.0f), decodeY(1.0666667f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(1.0666667222976685f, 6.0f), decodeAnchorX(1.0f, -10.0f), decodeAnchorY(2.0f, 0.0f), decodeX(1.0f), decodeY(2.0f));
+        path.lineTo(decodeX(2.0f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(2.0f, 10.0f), decodeAnchorY(2.0f, 0.0f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(1.0666667222976685f, 6.0f), decodeX(3.0f), decodeY(1.0666667f));
+        path.lineTo(decodeX(3.0f), decodeY(1.0f));
+        path.lineTo(decodeX(0.0f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(0.06666667f), decodeY(1.0f));
+        path.lineTo(decodeX(0.06666667f), decodeY(1.0666667f));
+        path.curveTo(decodeAnchorX(0.06666667014360428f, -0.045454545454545414f), decodeAnchorY(1.0666667222976685f, 8.45454545454545f), decodeAnchorX(1.0f, -5.863636363636354f), decodeAnchorY(1.933333396911621f, 0.0f), decodeX(1.0f), decodeY(1.9333334f));
+        path.lineTo(decodeX(2.0f), decodeY(1.9333334f));
+        path.curveTo(decodeAnchorX(2.0f, 5.909090909090935f), decodeAnchorY(1.933333396911621f, -3.552713678800501E-15f), decodeAnchorX(2.933333396911621f, -0.045454545454546746f), decodeAnchorY(1.0666667222976685f, 8.36363636363636f), decodeX(2.9333334f), decodeY(1.0666667f));
+        path.lineTo(decodeX(2.9333334f), decodeY(1.0f));
+        path.lineTo(decodeX(0.06666667f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(0.4f), decodeY(1.0f));
+        path.lineTo(decodeX(0.06666667f), decodeY(1.0f));
+        path.lineTo(decodeX(0.16060607f), decodeY(1.5090909f));
+        path.curveTo(decodeAnchorX(0.16060607135295868f, 0.0f), decodeAnchorY(1.5090909004211426f, 0.0f), decodeAnchorX(0.20000000298023224f, -0.9545454545454564f), decodeAnchorY(1.1363636255264282f, 1.5454545454545472f), decodeX(0.2f), decodeY(1.1363636f));
+        path.curveTo(decodeAnchorX(0.20000000298023224f, 0.9545454545454564f), decodeAnchorY(1.1363636255264282f, -1.5454545454545472f), decodeAnchorX(0.4000000059604645f, 0.0f), decodeAnchorY(1.0f, 0.0f), decodeX(0.4f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(2.4242425f), decodeY(1.5121212f));
+        path.lineTo(decodeX(2.4242425f), decodeY(1.5121212f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath5() {
+        path.reset();
+        path.moveTo(decodeX(2.9363637f), decodeY(1.0f));
+        path.lineTo(decodeX(2.6030304f), decodeY(1.0f));
+        path.curveTo(decodeAnchorX(2.6030304431915283f, 0.0f), decodeAnchorY(1.0f, 0.0f), decodeAnchorX(2.7787880897521973f, -0.6818181818181728f), decodeAnchorY(1.1333333253860474f, -1.227272727272727f), decodeX(2.778788f), decodeY(1.1333333f));
+        path.curveTo(decodeAnchorX(2.7787880897521973f, 0.6818181818181728f), decodeAnchorY(1.1333333253860474f, 1.227272727272727f), decodeAnchorX(2.8393938541412354f, 0.0f), decodeAnchorY(1.5060606002807617f, 0.0f), decodeX(2.8393939f), decodeY(1.5060606f));
+        path.lineTo(decodeX(2.9363637f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath6() {
+        path.reset();
+        path.moveTo(decodeX(2.9363637f), decodeY(1.0f));
+        path.lineTo(decodeX(2.5563636f), decodeY(1.0f));
+        path.curveTo(decodeAnchorX(2.556363582611084f, 0.0f), decodeAnchorY(1.0f, 0.0f), decodeAnchorX(2.7587878704071045f, -0.6818181818181728f), decodeAnchorY(1.1399999856948853f, -1.2272727272727266f), decodeX(2.7587879f), decodeY(1.14f));
+        path.curveTo(decodeAnchorX(2.7587878704071045f, 0.6818181818181728f), decodeAnchorY(1.1399999856948853f, 1.227272727272727f), decodeAnchorX(2.8393938541412354f, 0.0f), decodeAnchorY(1.5060606002807617f, 0.0f), decodeX(2.8393939f), decodeY(1.5060606f));
+        path.lineTo(decodeX(2.9363637f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.038922157f,0.0508982f,0.06287425f,0.19610777f,0.32934132f,0.48952097f,0.6497006f,0.8248503f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5,
+                            decodeColor(color5,color6,0.5f),
+                            color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.06818182f * w) + x, (-0.005952381f * h) + y, (0.3689091f * w) + x, (0.23929171f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color8,
+                            decodeColor(color8,color9,0.5f),
+                            color9});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.9409091f * w) + x, (0.035928145f * h) + y, (0.5954546f * w) + x, (0.26347303f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color8,
+                            decodeColor(color8,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.038922157f,0.0508982f,0.06287425f,0.19610777f,0.32934132f,0.48952097f,0.6497006f,0.8248503f,1.0f },
+                new Color[] { color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14,
+                            decodeColor(color14,color15,0.5f),
+                            color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.038922157f,0.0508982f,0.06287425f,0.19610777f,0.32934132f,0.48952097f,0.6497006f,0.8248503f,1.0f },
+                new Color[] { color19,
+                            decodeColor(color19,color20,0.5f),
+                            color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22,
+                            decodeColor(color22,color23,0.5f),
+                            color23});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.06818182f * w) + x, (-0.005952381f * h) + y, (0.3689091f * w) + x, (0.23929171f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color24,
+                            decodeColor(color24,color9,0.5f),
+                            color9});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.9409091f * w) + x, (0.035928145f * h) + y, (0.37615633f * w) + x, (0.34910178f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color25,
+                            decodeColor(color25,color11,0.5f),
+                            color11});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ScrollBarScrollBarTrackPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,275 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ScrollBarScrollBarTrackPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ScrollBarScrollBarTrackPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ScrollBarScrollBarTrackPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.10016362f, 0.011764705f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.100476064f, 0.035294116f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10606203f, 0.13333333f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", -0.6111111f, -0.110526316f, 0.24705881f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.02222228f, -0.06465475f, -0.31764707f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.0f, -0.06766917f, -0.19607842f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", -0.006944418f, -0.0655825f, -0.04705882f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.0138888955f, -0.071117446f, 0.05098039f, 0);
+    private Color color9 = decodeColor("nimbusBlueGrey", 0.0f, -0.07016757f, 0.12941176f, 0);
+    private Color color10 = decodeColor("nimbusBlueGrey", 0.0f, -0.05967886f, -0.5137255f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", 0.0f, -0.05967886f, -0.5137255f, -255);
+    private Color color12 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.07826825f, -0.5019608f, -255);
+    private Color color13 = decodeColor("nimbusBlueGrey", -0.015872955f, -0.06731644f, -0.109803915f, 0);
+    private Color color14 = decodeColor("nimbusBlueGrey", 0.0f, -0.06924191f, 0.109803915f, 0);
+    private Color color15 = decodeColor("nimbusBlueGrey", -0.015872955f, -0.06861015f, -0.09019607f, 0);
+    private Color color16 = decodeColor("nimbusBlueGrey", 0.0f, -0.06766917f, 0.07843137f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ScrollBarScrollBarTrackPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.7f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(1.2f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(1.2000000476837158f, 0.0f), decodeAnchorX(0.30000001192092896f, -1.0f), decodeAnchorY(2.200000047683716f, -1.0f), decodeX(0.3f), decodeY(2.2f));
+        path.curveTo(decodeAnchorX(0.30000001192092896f, 1.0f), decodeAnchorY(2.200000047683716f, 1.0f), decodeAnchorX(0.6785714030265808f, 0.0f), decodeAnchorY(2.799999952316284f, 0.0f), decodeX(0.6785714f), decodeY(2.8f));
+        path.lineTo(decodeX(0.7f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(3.0f), decodeY(0.0f));
+        path.lineTo(decodeX(2.2222223f), decodeY(0.0f));
+        path.lineTo(decodeX(2.2222223f), decodeY(2.8f));
+        path.curveTo(decodeAnchorX(2.222222328186035f, 0.0f), decodeAnchorY(2.799999952316284f, 0.0f), decodeAnchorX(2.674603223800659f, -1.0f), decodeAnchorY(2.1857142448425293f, 1.0f), decodeX(2.6746032f), decodeY(2.1857142f));
+        path.curveTo(decodeAnchorX(2.674603223800659f, 1.0000000000000036f), decodeAnchorY(2.1857142448425293f, -1.0f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(1.2000000476837158f, 0.0f), decodeX(3.0f), decodeY(1.2f));
+        path.lineTo(decodeX(3.0f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(0.11428572f), decodeY(1.3714286f));
+        path.curveTo(decodeAnchorX(0.11428572237491608f, 0.7857142857142856f), decodeAnchorY(1.3714286088943481f, -0.571428571428573f), decodeAnchorX(0.4642857015132904f, -1.3571428571428572f), decodeAnchorY(2.0714285373687744f, -1.5714285714285694f), decodeX(0.4642857f), decodeY(2.0714285f));
+        path.curveTo(decodeAnchorX(0.4642857015132904f, 1.3571428571428577f), decodeAnchorY(2.0714285373687744f, 1.5714285714285694f), decodeAnchorX(0.8714286088943481f, 0.21428571428571352f), decodeAnchorY(2.7285714149475098f, -1.0f), decodeX(0.8714286f), decodeY(2.7285714f));
+        path.curveTo(decodeAnchorX(0.8714286088943481f, -0.21428571428571352f), decodeAnchorY(2.7285714149475098f, 1.0f), decodeAnchorX(0.3571428656578064f, 1.5000000000000004f), decodeAnchorY(2.3142857551574707f, 1.642857142857146f), decodeX(0.35714287f), decodeY(2.3142858f));
+        path.curveTo(decodeAnchorX(0.3571428656578064f, -1.5000000000000004f), decodeAnchorY(2.3142857551574707f, -1.642857142857146f), decodeAnchorX(0.11428572237491608f, -0.7857142857142856f), decodeAnchorY(1.3714286088943481f, 0.571428571428573f), decodeX(0.11428572f), decodeY(1.3714286f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(2.1111112f), decodeY(2.7f));
+        path.curveTo(decodeAnchorX(2.1111111640930176f, 0.4285714285714306f), decodeAnchorY(2.700000047683716f, 0.6428571428571388f), decodeAnchorX(2.626984119415283f, -1.571428571428573f), decodeAnchorY(2.200000047683716f, 1.6428571428571388f), decodeX(2.6269841f), decodeY(2.2f));
+        path.curveTo(decodeAnchorX(2.626984119415283f, 1.571428571428573f), decodeAnchorY(2.200000047683716f, -1.6428571428571388f), decodeAnchorX(2.8412699699401855f, 0.7142857142857224f), decodeAnchorY(1.3857142925262451f, 0.6428571428571459f), decodeX(2.84127f), decodeY(1.3857143f));
+        path.curveTo(decodeAnchorX(2.8412699699401855f, -0.7142857142857224f), decodeAnchorY(1.3857142925262451f, -0.6428571428571459f), decodeAnchorX(2.5238094329833984f, 0.7142857142857117f), decodeAnchorY(2.057142734527588f, -0.8571428571428541f), decodeX(2.5238094f), decodeY(2.0571427f));
+        path.curveTo(decodeAnchorX(2.5238094329833984f, -0.7142857142857117f), decodeAnchorY(2.057142734527588f, 0.8571428571428541f), decodeAnchorX(2.1111111640930176f, -0.4285714285714306f), decodeAnchorY(2.700000047683716f, -0.6428571428571388f), decodeX(2.1111112f), decodeY(2.7f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.016129032f,0.038709678f,0.061290324f,0.16091082f,0.26451612f,0.4378071f,0.88387096f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.030645162f,0.061290324f,0.09677419f,0.13225806f,0.22096774f,0.30967742f,0.47434634f,0.82258064f },
+                new Color[] { color5,
+                            decodeColor(color5,color6,0.5f),
+                            color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8,
+                            decodeColor(color8,color9,0.5f),
+                            color9});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.0f * w) + x, (0.0f * h) + y, (0.9285714f * w) + x, (0.12244898f * h) + y,
+                new float[] { 0.0f,0.1f,1.0f },
+                new Color[] { color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((-0.045918368f * w) + x, (0.18336426f * h) + y, (0.872449f * w) + x, (0.04050711f * h) + y,
+                new float[] { 0.0f,0.87096775f,1.0f },
+                new Color[] { color12,
+                            decodeColor(color12,color10,0.5f),
+                            color10});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.12719299f * w) + x, (0.13157894f * h) + y, (0.90789473f * w) + x, (0.877193f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.86458343f * w) + x, (0.20952381f * h) + y, (0.020833189f * w) + x, (0.95238096f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ScrollPanePainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,178 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ScrollPanePainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ScrollPanePainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int BORDER_ENABLED_FOCUSED = 2;
+    static final int BORDER_ENABLED = 3;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ScrollPanePainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBorder", 0.0f, 0.0f, 0.0f, 0);
+    private Color color2 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ScrollPanePainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BORDER_ENABLED_FOCUSED: paintBorderEnabledAndFocused(g); break;
+            case BORDER_ENABLED: paintBorderEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBorderEnabledAndFocused(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color1);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color2);
+        g.fill(path);
+
+    }
+
+    private void paintBorderEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.4f) - decodeX(0.6f), //width
+                         decodeY(0.6f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(0.6f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(2.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.6f) - decodeX(2.4f), //width
+                         decodeY(2.6f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(2.4f), //y
+                         decodeX(2.4f) - decodeX(0.6f), //width
+                         decodeY(2.6f) - decodeY(2.4f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.4f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(0.4f));
+        path.curveTo(decodeAnchorX(2.5999999046325684f, 0.0f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeAnchorX(2.880000352859497f, 0.09999999999999432f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeX(2.8800004f), decodeY(0.4f));
+        path.curveTo(decodeAnchorX(2.880000352859497f, 0.09999999999999432f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeAnchorX(2.880000352859497f, 0.0f), decodeAnchorY(2.879999876022339f, 0.0f), decodeX(2.8800004f), decodeY(2.8799999f));
+        path.lineTo(decodeX(0.120000005f), decodeY(2.8799999f));
+        path.lineTo(decodeX(0.120000005f), decodeY(0.120000005f));
+        path.lineTo(decodeX(2.8800004f), decodeY(0.120000005f));
+        path.lineTo(decodeX(2.8800004f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(0.4f));
+        path.closePath();
+        return path;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SeparatorPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class SeparatorPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of SeparatorPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of SeparatorPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.008547008f, -0.03830409f, -0.039215684f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public SeparatorPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(1.3333334f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(1.6666667f) - decodeY(1.3333334f)); //height
+        return rect;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SliderArrowShapeState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class SliderArrowShapeState extends State {
+    SliderArrowShapeState() {
+        super("ArrowShape");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+ return c.getClientProperty("Slider.paintThumbArrowShape") == Boolean.TRUE; 
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SliderPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class SliderPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of SliderPainter to determine which region/state is being painted
+    //by that instance.
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of SliderPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public SliderPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SliderSliderThumbArrowShapeState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class SliderSliderThumbArrowShapeState extends State {
+    SliderSliderThumbArrowShapeState() {
+        super("ArrowShape");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+ return c.getClientProperty("Slider.paintThumbArrowShape") == Boolean.TRUE; 
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SliderSliderThumbPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,654 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class SliderSliderThumbPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of SliderSliderThumbPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_FOCUSED = 3;
+    static final int BACKGROUND_FOCUSED_MOUSEOVER = 4;
+    static final int BACKGROUND_FOCUSED_PRESSED = 5;
+    static final int BACKGROUND_MOUSEOVER = 6;
+    static final int BACKGROUND_PRESSED = 7;
+    static final int BACKGROUND_ENABLED_ARROWSHAPE = 8;
+    static final int BACKGROUND_DISABLED_ARROWSHAPE = 9;
+    static final int BACKGROUND_MOUSEOVER_ARROWSHAPE = 10;
+    static final int BACKGROUND_PRESSED_ARROWSHAPE = 11;
+    static final int BACKGROUND_FOCUSED_ARROWSHAPE = 12;
+    static final int BACKGROUND_FOCUSED_MOUSEOVER_ARROWSHAPE = 13;
+    static final int BACKGROUND_FOCUSED_PRESSED_ARROWSHAPE = 14;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of SliderSliderThumbPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBase", 0.021348298f, -0.5625436f, 0.25490195f, 0);
+    private Color color2 = decodeColor("nimbusBase", 0.015098333f, -0.55105823f, 0.19215685f, 0);
+    private Color color3 = decodeColor("nimbusBase", 0.021348298f, -0.5924243f, 0.35686272f, 0);
+    private Color color4 = decodeColor("nimbusBase", 0.021348298f, -0.56722116f, 0.3098039f, 0);
+    private Color color5 = decodeColor("nimbusBase", 0.021348298f, -0.56844974f, 0.32549018f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", -0.003968239f, 0.0014736876f, -0.25490198f, -156);
+    private Color color7 = decodeColor("nimbusBase", 5.1498413E-4f, -0.34585923f, -0.007843137f, 0);
+    private Color color8 = decodeColor("nimbusBase", -0.0017285943f, -0.11571431f, -0.25490198f, 0);
+    private Color color9 = decodeColor("nimbusBase", -0.023096085f, -0.6238095f, 0.43921566f, 0);
+    private Color color10 = decodeColor("nimbusBase", 5.1498413E-4f, -0.43866998f, 0.24705881f, 0);
+    private Color color11 = decodeColor("nimbusBase", 5.1498413E-4f, -0.45714286f, 0.32941175f, 0);
+    private Color color12 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color13 = decodeColor("nimbusBase", -0.0038217902f, -0.15532213f, -0.14901963f, 0);
+    private Color color14 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.54509807f, 0);
+    private Color color15 = decodeColor("nimbusBase", 0.004681647f, -0.62780917f, 0.44313723f, 0);
+    private Color color16 = decodeColor("nimbusBase", 2.9569864E-4f, -0.4653107f, 0.32549018f, 0);
+    private Color color17 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4563421f, 0.32549018f, 0);
+    private Color color18 = decodeColor("nimbusBase", -0.0017285943f, -0.4732143f, 0.39215684f, 0);
+    private Color color19 = decodeColor("nimbusBase", 0.0015952587f, -0.04875779f, -0.18823531f, 0);
+    private Color color20 = decodeColor("nimbusBase", 2.9569864E-4f, -0.44943976f, 0.25098038f, 0);
+    private Color color21 = decodeColor("nimbusBase", 0.0f, 0.0f, 0.0f, 0);
+    private Color color22 = decodeColor("nimbusBase", 8.9377165E-4f, -0.121094406f, 0.12156862f, 0);
+    private Color color23 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -121);
+    private Color color24 = new Color(150, 156, 168, 146);
+    private Color color25 = decodeColor("nimbusBase", -0.0033828616f, -0.40608466f, -0.019607842f, 0);
+    private Color color26 = decodeColor("nimbusBase", 5.1498413E-4f, -0.17594418f, -0.20784315f, 0);
+    private Color color27 = decodeColor("nimbusBase", 0.0023007393f, -0.11332625f, -0.28627452f, 0);
+    private Color color28 = decodeColor("nimbusBase", -0.023096085f, -0.62376213f, 0.4352941f, 0);
+    private Color color29 = decodeColor("nimbusBase", 0.004681647f, -0.594392f, 0.39999998f, 0);
+    private Color color30 = decodeColor("nimbusBase", -0.0017285943f, -0.4454704f, 0.25490195f, 0);
+    private Color color31 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4625541f, 0.35686272f, 0);
+    private Color color32 = decodeColor("nimbusBase", 5.1498413E-4f, -0.47442397f, 0.4235294f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public SliderSliderThumbPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_FOCUSED: paintBackgroundFocused(g); break;
+            case BACKGROUND_FOCUSED_MOUSEOVER: paintBackgroundFocusedAndMouseOver(g); break;
+            case BACKGROUND_FOCUSED_PRESSED: paintBackgroundFocusedAndPressed(g); break;
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_PRESSED: paintBackgroundPressed(g); break;
+            case BACKGROUND_ENABLED_ARROWSHAPE: paintBackgroundEnabledAndArrowShape(g); break;
+            case BACKGROUND_DISABLED_ARROWSHAPE: paintBackgroundDisabledAndArrowShape(g); break;
+            case BACKGROUND_MOUSEOVER_ARROWSHAPE: paintBackgroundMouseOverAndArrowShape(g); break;
+            case BACKGROUND_PRESSED_ARROWSHAPE: paintBackgroundPressedAndArrowShape(g); break;
+            case BACKGROUND_FOCUSED_ARROWSHAPE: paintBackgroundFocusedAndArrowShape(g); break;
+            case BACKGROUND_FOCUSED_MOUSEOVER_ARROWSHAPE: paintBackgroundFocusedAndMouseOverAndArrowShape(g); break;
+            case BACKGROUND_FOCUSED_PRESSED_ARROWSHAPE: paintBackgroundFocusedAndPressedAndArrowShape(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient1(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient2(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        ellipse = decodeEllipse3();
+        g.setPaint(color6);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient3(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient4(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void paintBackgroundFocused(Graphics2D g) {
+        ellipse = decodeEllipse4();
+        g.setPaint(color12);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient3(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient4(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void paintBackgroundFocusedAndMouseOver(Graphics2D g) {
+        ellipse = decodeEllipse4();
+        g.setPaint(color12);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient5(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient6(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void paintBackgroundFocusedAndPressed(Graphics2D g) {
+        ellipse = decodeEllipse4();
+        g.setPaint(color12);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient7(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient8(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        ellipse = decodeEllipse3();
+        g.setPaint(color6);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient5(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient6(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void paintBackgroundPressed(Graphics2D g) {
+        ellipse = decodeEllipse3();
+        g.setPaint(color23);
+        g.fill(ellipse);
+        ellipse = decodeEllipse1();
+        g.setPaint(decodeGradient7(ellipse));
+        g.fill(ellipse);
+        ellipse = decodeEllipse2();
+        g.setPaint(decodeGradient8(ellipse));
+        g.fill(ellipse);
+
+    }
+
+    private void paintBackgroundEnabledAndArrowShape(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color24);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient9(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient10(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundDisabledAndArrowShape(Graphics2D g) {
+        path = decodePath2();
+        g.setPaint(decodeGradient11(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient12(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOverAndArrowShape(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color24);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient13(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient14(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundPressedAndArrowShape(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color24);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient15(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient16(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundFocusedAndArrowShape(Graphics2D g) {
+        path = decodePath4();
+        g.setPaint(color12);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient9(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient17(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundFocusedAndMouseOverAndArrowShape(Graphics2D g) {
+        path = decodePath4();
+        g.setPaint(color12);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient13(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient14(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundFocusedAndPressedAndArrowShape(Graphics2D g) {
+        path = decodePath4();
+        g.setPaint(color12);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient15(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient16(path));
+        g.fill(path);
+
+    }
+
+
+
+    private Ellipse2D decodeEllipse1() {
+        ellipse.setFrame(decodeX(0.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(0.4f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse2() {
+        ellipse.setFrame(decodeX(0.6f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.4f) - decodeX(0.6f), //width
+                         decodeY(2.4f) - decodeY(0.6f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse3() {
+        ellipse.setFrame(decodeX(0.4f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(2.8f) - decodeY(0.6f)); //height
+        return ellipse;
+    }
+
+    private Ellipse2D decodeEllipse4() {
+        ellipse.setFrame(decodeX(0.120000005f), //x
+                         decodeY(0.120000005f), //y
+                         decodeX(2.8799999f) - decodeX(0.120000005f), //width
+                         decodeY(2.8799999f) - decodeY(0.120000005f)); //height
+        return ellipse;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.8166667f), decodeY(0.5007576f));
+        path.curveTo(decodeAnchorX(0.8166667222976685f, 1.5643268796105616f), decodeAnchorY(0.5007575750350952f, -0.309751314021121f), decodeAnchorX(2.7925455570220947f, 0.058173584548962154f), decodeAnchorY(1.6116883754730225f, -0.46476349119779314f), decodeX(2.7925456f), decodeY(1.6116884f));
+        path.curveTo(decodeAnchorX(2.7925455570220947f, -0.34086855855797005f), decodeAnchorY(1.6116883754730225f, 2.723285191092547f), decodeAnchorX(0.7006363868713379f, 4.56812791706229f), decodeAnchorY(2.7693636417388916f, -0.006014915148298883f), decodeX(0.7006364f), decodeY(2.7693636f));
+        path.curveTo(decodeAnchorX(0.7006363868713379f, -3.523395559100149f), decodeAnchorY(2.7693636417388916f, 0.004639302074426865f), decodeAnchorX(0.8166667222976685f, -1.8635255186676325f), decodeAnchorY(0.5007575750350952f, 0.3689954354443423f), decodeX(0.8166667f), decodeY(0.5007576f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(0.6155303f), decodeY(2.5954547f));
+        path.curveTo(decodeAnchorX(0.6155303120613098f, 0.9098089454358838f), decodeAnchorY(2.595454692840576f, 1.3154241785830862f), decodeAnchorX(2.6151516437530518f, 0.014588808096503314f), decodeAnchorY(1.611201286315918f, 0.9295520709665155f), decodeX(2.6151516f), decodeY(1.6112013f));
+        path.curveTo(decodeAnchorX(2.6151516437530518f, -0.013655180248463239f), decodeAnchorY(1.611201286315918f, -0.8700642982905453f), decodeAnchorX(0.6092391610145569f, 0.9729934749047704f), decodeAnchorY(0.4071640372276306f, -1.424864396720248f), decodeX(0.60923916f), decodeY(0.40716404f));
+        path.curveTo(decodeAnchorX(0.6092391610145569f, -0.7485208875763871f), decodeAnchorY(0.4071640372276306f, 1.0961437978948614f), decodeAnchorX(0.6155303120613098f, -0.7499879392488253f), decodeAnchorY(2.595454692840576f, -1.0843510320300886f), decodeX(0.6155303f), decodeY(2.5954547f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(0.8055606f), decodeY(0.6009697f));
+        path.curveTo(decodeAnchorX(0.8055605888366699f, 0.508208945236218f), decodeAnchorY(0.600969672203064f, -0.8490880998025481f), decodeAnchorX(2.3692727088928223f, 0.0031846066137877216f), decodeAnchorY(1.613116979598999f, -0.6066882577419275f), decodeX(2.3692727f), decodeY(1.613117f));
+        path.curveTo(decodeAnchorX(2.3692727088928223f, -0.0038901961210928704f), decodeAnchorY(1.613116979598999f, 0.7411076447438294f), decodeAnchorX(0.7945454716682434f, 0.38709738141524763f), decodeAnchorY(2.393272876739502f, 1.240782009971129f), decodeX(0.7945455f), decodeY(2.3932729f));
+        path.curveTo(decodeAnchorX(0.7945454716682434f, -0.3863658307342148f), decodeAnchorY(2.393272876739502f, -1.2384371350947134f), decodeAnchorX(0.8055605888366699f, -0.9951540091537732f), decodeAnchorY(0.600969672203064f, 1.6626496533832493f), decodeX(0.8055606f), decodeY(0.6009697f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(0.60059524f), decodeY(0.11727543f));
+        path.curveTo(decodeAnchorX(0.600595235824585f, 1.5643268796105612f), decodeAnchorY(0.1172754317522049f, -0.3097513140211208f), decodeAnchorX(2.7925455570220947f, 0.004405844009975013f), decodeAnchorY(1.6116883754730225f, -1.1881161542467655f), decodeX(2.7925456f), decodeY(1.6116884f));
+        path.curveTo(decodeAnchorX(2.7925455570220947f, -0.007364540661274788f), decodeAnchorY(1.6116883754730225f, 1.9859826422490698f), decodeAnchorX(0.7006363868713379f, 2.7716863466452586f), decodeAnchorY(2.869363784790039f, -0.008974581987587271f), decodeX(0.7006364f), decodeY(2.8693638f));
+        path.curveTo(decodeAnchorX(0.7006363868713379f, -3.75489914400509f), decodeAnchorY(2.869363784790039f, 0.012158175929172899f), decodeAnchorX(0.600595235824585f, -1.8635255186676323f), decodeAnchorY(0.1172754317522049f, 0.3689954354443423f), decodeX(0.60059524f), decodeY(0.11727543f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5106101f * w) + x, (-4.553649E-18f * h) + y, (0.49933687f * w) + x, (1.0039787f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5023511f * w) + x, (0.0015673981f * h) + y, (0.5023511f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.21256684f,0.42513368f,0.71256685f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.51f * w) + x, (-4.553649E-18f * h) + y, (0.51f * w) + x, (1.0039787f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0015673981f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.21256684f,0.42513368f,0.56149733f,0.69786096f,0.8489305f,1.0f },
+                new Color[] { color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10,
+                            decodeColor(color10,color10,0.5f),
+                            color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5106101f * w) + x, (-4.553649E-18f * h) + y, (0.49933687f * w) + x, (1.0039787f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5023511f * w) + x, (0.0015673981f * h) + y, (0.5023511f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.21256684f,0.42513368f,0.56149733f,0.69786096f,0.8489305f,1.0f },
+                new Color[] { color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5106101f * w) + x, (-4.553649E-18f * h) + y, (0.49933687f * w) + x, (1.0039787f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color14,
+                            decodeColor(color14,color19,0.5f),
+                            color19});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5023511f * w) + x, (0.0015673981f * h) + y, (0.5023511f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.23796791f,0.47593582f,0.5360962f,0.5962567f,0.79812837f,1.0f },
+                new Color[] { color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21,
+                            decodeColor(color21,color21,0.5f),
+                            color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.24032257f,0.48064515f,0.7403226f,1.0f },
+                new Color[] { color25,
+                            decodeColor(color25,color26,0.5f),
+                            color26,
+                            decodeColor(color26,color27,0.5f),
+                            color27});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.061290324f,0.1016129f,0.14193548f,0.3016129f,0.46129033f,0.5983871f,0.7354839f,0.7935484f,0.8516129f },
+                new Color[] { color28,
+                            decodeColor(color28,color29,0.5f),
+                            color29,
+                            decodeColor(color29,color30,0.5f),
+                            color30,
+                            decodeColor(color30,color31,0.5f),
+                            color31,
+                            decodeColor(color31,color32,0.5f),
+                            color32});
+    }
+
+    private Paint decodeGradient11(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient12(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.21256684f,0.42513368f,0.71256685f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5});
+    }
+
+    private Paint decodeGradient13(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14});
+    }
+
+    private Paint decodeGradient14(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.21256684f,0.42513368f,0.56149733f,0.69786096f,0.8489305f,1.0f },
+                new Color[] { color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18});
+    }
+
+    private Paint decodeGradient15(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color14,
+                            decodeColor(color14,color19,0.5f),
+                            color19});
+    }
+
+    private Paint decodeGradient16(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.23796791f,0.47593582f,0.5360962f,0.5962567f,0.79812837f,1.0f },
+                new Color[] { color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21,
+                            decodeColor(color21,color21,0.5f),
+                            color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22});
+    }
+
+    private Paint decodeGradient17(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.4925773f * w) + x, (0.082019866f * h) + y, (0.4925773f * w) + x, (0.91798013f * h) + y,
+                new float[] { 0.061290324f,0.1016129f,0.14193548f,0.3016129f,0.46129033f,0.5983871f,0.7354839f,0.7935484f,0.8516129f },
+                new Color[] { color28,
+                            decodeColor(color28,color29,0.5f),
+                            color29,
+                            decodeColor(color29,color30,0.5f),
+                            color30,
+                            decodeColor(color30,color31,0.5f),
+                            color31,
+                            decodeColor(color31,color32,0.5f),
+                            color32});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SliderSliderTrackArrowShapeState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class SliderSliderTrackArrowShapeState extends State {
+    SliderSliderTrackArrowShapeState() {
+        super("ArrowShape");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+ return c.getClientProperty("Slider.paintThumbArrowShape") == Boolean.TRUE; 
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SliderSliderTrackPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,229 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class SliderSliderTrackPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of SliderSliderTrackPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of SliderSliderTrackPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -245);
+    private Color color2 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.061265234f, 0.05098039f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.01010108f, -0.059835073f, 0.10588235f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", -0.01111114f, -0.061982628f, 0.062745094f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", -0.00505054f, -0.058639523f, 0.086274505f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -111);
+    private Color color7 = decodeColor("nimbusBlueGrey", 0.0f, -0.034093194f, -0.12941176f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.01111114f, -0.023821115f, -0.06666666f, 0);
+    private Color color9 = decodeColor("nimbusBlueGrey", -0.008547008f, -0.03314536f, -0.086274505f, 0);
+    private Color color10 = decodeColor("nimbusBlueGrey", 0.004273474f, -0.040256046f, -0.019607842f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", 0.0f, -0.03626889f, 0.04705882f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public SliderSliderTrackPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color6);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect5();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+
+    }
+
+
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(0.2f), //x
+                               decodeY(1.6f), //y
+                               decodeX(2.8f) - decodeX(0.2f), //width
+                               decodeY(2.8333333f) - decodeY(1.6f), //height
+                               8.705882f, 8.705882f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect2() {
+        roundRect.setRoundRect(decodeX(0.0f), //x
+                               decodeY(1.0f), //y
+                               decodeX(3.0f) - decodeX(0.0f), //width
+                               decodeY(2.0f) - decodeY(1.0f), //height
+                               4.9411764f, 4.9411764f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect3() {
+        roundRect.setRoundRect(decodeX(0.29411763f), //x
+                               decodeY(1.2f), //y
+                               decodeX(2.7058823f) - decodeX(0.29411763f), //width
+                               decodeY(2.0f) - decodeY(1.2f), //height
+                               4.0f, 4.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect4() {
+        roundRect.setRoundRect(decodeX(0.2f), //x
+                               decodeY(1.6f), //y
+                               decodeX(2.8f) - decodeX(0.2f), //width
+                               decodeY(2.1666667f) - decodeY(1.6f), //height
+                               8.705882f, 8.705882f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect5() {
+        roundRect.setRoundRect(decodeX(0.28823528f), //x
+                               decodeY(1.2f), //y
+                               decodeX(2.7f) - decodeX(0.28823528f), //width
+                               decodeY(2.0f) - decodeY(1.2f), //height
+                               4.0f, 4.0f); //rounding
+        return roundRect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.07647059f * h) + y, (0.25f * w) + x, (0.9117647f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.13770053f,0.27540106f,0.63770056f,1.0f },
+                new Color[] { color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5,
+                            decodeColor(color5,color3,0.5f),
+                            color3});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.07647059f * h) + y, (0.25f * w) + x, (0.9117647f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.13770053f,0.27540106f,0.4906417f,0.7058824f },
+                new Color[] { color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SpinnerPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class SpinnerPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of SpinnerPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of SpinnerPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public SpinnerPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SpinnerPanelSpinnerFormattedTextFieldPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,320 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class SpinnerPanelSpinnerFormattedTextFieldPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of SpinnerPanelSpinnerFormattedTextFieldPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_FOCUSED = 3;
+    static final int BACKGROUND_SELECTED = 4;
+    static final int BACKGROUND_SELECTED_FOCUSED = 5;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of SpinnerPanelSpinnerFormattedTextFieldPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.6111111f, -0.110526316f, -0.74509805f, -237);
+    private Color color2 = decodeColor("nimbusBlueGrey", -0.006944418f, -0.07187897f, 0.06666666f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07703349f, 0.0745098f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07968931f, 0.14509803f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07856284f, 0.11372548f, 0);
+    private Color color6 = decodeColor("nimbusBase", 0.040395975f, -0.60315615f, 0.29411763f, 0);
+    private Color color7 = decodeColor("nimbusBase", 0.016586483f, -0.6051466f, 0.3490196f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.0965403f, -0.18431371f, 0);
+    private Color color9 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.1048766f, -0.08f, 0);
+    private Color color10 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.105624355f, 0.054901958f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color12 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.105344966f, 0.011764705f, 0);
+    private Color color13 = decodeColor("nimbusLightBackground", 0.0f, 0.0f, 0.0f, 0);
+    private Color color14 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color15 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.1048766f, -0.05098039f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public SpinnerPanelSpinnerFormattedTextFieldPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_FOCUSED: paintBackgroundFocused(g); break;
+            case BACKGROUND_SELECTED: paintBackgroundSelected(g); break;
+            case BACKGROUND_SELECTED_FOCUSED: paintBackgroundSelectedAndFocused(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color6);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color7);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient3(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color12);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color13);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundFocused(Graphics2D g) {
+        rect = decodeRect6();
+        g.setPaint(color14);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient5(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color12);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color13);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundSelected(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient3(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color12);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color13);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundSelectedAndFocused(Graphics2D g) {
+        rect = decodeRect6();
+        g.setPaint(color14);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient5(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color12);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color13);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(2.3333333f), //y
+                         decodeX(3.0f) - decodeX(0.6666667f), //width
+                         decodeY(2.6666667f) - decodeY(2.3333333f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(0.4f), //y
+                         decodeX(3.0f) - decodeX(0.6666667f), //width
+                         decodeY(1.0f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(0.6f), //y
+                         decodeX(3.0f) - decodeX(1.0f), //width
+                         decodeY(1.0f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(1.0f), //y
+                         decodeX(3.0f) - decodeX(0.6666667f), //width
+                         decodeY(2.3333333f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect5() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(3.0f) - decodeX(1.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect6() {
+            rect.setRect(decodeX(0.22222222f), //x
+                         decodeY(0.13333334f), //y
+                         decodeX(2.916668f) - decodeX(0.22222222f), //width
+                         decodeY(2.75f) - decodeY(0.13333334f)); //height
+        return rect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (1.0f * h) + y, (0.5f * w) + x, (0.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.49573863f,0.99147725f },
+                new Color[] { color8,
+                            decodeColor(color8,color9,0.5f),
+                            color9});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.1684492f,1.0f },
+                new Color[] { color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.49573863f,0.99147725f },
+                new Color[] { color8,
+                            decodeColor(color8,color15,0.5f),
+                            color15});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SpinnerSpinnerNextButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,582 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class SpinnerSpinnerNextButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of SpinnerSpinnerNextButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_FOCUSED = 3;
+    static final int BACKGROUND_MOUSEOVER_FOCUSED = 4;
+    static final int BACKGROUND_PRESSED_FOCUSED = 5;
+    static final int BACKGROUND_MOUSEOVER = 6;
+    static final int BACKGROUND_PRESSED = 7;
+    static final int FOREGROUND_DISABLED = 8;
+    static final int FOREGROUND_ENABLED = 9;
+    static final int FOREGROUND_FOCUSED = 10;
+    static final int FOREGROUND_MOUSEOVER_FOCUSED = 11;
+    static final int FOREGROUND_PRESSED_FOCUSED = 12;
+    static final int FOREGROUND_MOUSEOVER = 13;
+    static final int FOREGROUND_PRESSED = 14;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of SpinnerSpinnerNextButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBase", 0.021348298f, -0.56289876f, 0.2588235f, 0);
+    private Color color2 = decodeColor("nimbusBase", 0.010237217f, -0.5607143f, 0.2352941f, 0);
+    private Color color3 = decodeColor("nimbusBase", 0.021348298f, -0.59223604f, 0.35294116f, 0);
+    private Color color4 = decodeColor("nimbusBase", 0.016586483f, -0.5723659f, 0.31764704f, 0);
+    private Color color5 = decodeColor("nimbusBase", 0.021348298f, -0.56182265f, 0.24705881f, 0);
+    private Color color6 = decodeColor("nimbusBase", 5.1498413E-4f, -0.34585923f, -0.007843137f, 0);
+    private Color color7 = decodeColor("nimbusBase", 5.1498413E-4f, -0.27207792f, -0.11764708f, 0);
+    private Color color8 = decodeColor("nimbusBase", 0.004681647f, -0.6197143f, 0.43137252f, 0);
+    private Color color9 = decodeColor("nimbusBase", -0.0012707114f, -0.5078604f, 0.3098039f, 0);
+    private Color color10 = decodeColor("nimbusBase", -0.0028941035f, -0.4800539f, 0.28235292f, 0);
+    private Color color11 = decodeColor("nimbusBase", 0.0023007393f, -0.3622768f, -0.04705882f, 0);
+    private Color color12 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color13 = decodeColor("nimbusBase", 0.0013483167f, -0.1769987f, -0.12156865f, 0);
+    private Color color14 = decodeColor("nimbusBase", 0.0013483167f, 0.039961398f, -0.25882354f, 0);
+    private Color color15 = decodeColor("nimbusBase", 0.004681647f, -0.6198413f, 0.43921566f, 0);
+    private Color color16 = decodeColor("nimbusBase", -0.0012707114f, -0.51502466f, 0.3607843f, 0);
+    private Color color17 = decodeColor("nimbusBase", 0.0021564364f, -0.49097747f, 0.34509802f, 0);
+    private Color color18 = decodeColor("nimbusBase", 5.2034855E-5f, -0.38743842f, 0.019607842f, 0);
+    private Color color19 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.54901963f, 0);
+    private Color color20 = decodeColor("nimbusBase", 0.08801502f, 0.3642857f, -0.454902f, 0);
+    private Color color21 = decodeColor("nimbusBase", -4.2033195E-4f, -0.38050595f, 0.20392156f, 0);
+    private Color color22 = decodeColor("nimbusBase", 2.9569864E-4f, -0.15470162f, 0.07058823f, 0);
+    private Color color23 = decodeColor("nimbusBase", -4.6235323E-4f, -0.09571427f, 0.039215684f, 0);
+    private Color color24 = decodeColor("nimbusBase", 0.018363237f, 0.18135887f, -0.227451f, 0);
+    private Color color25 = new Color(255, 200, 0, 255);
+    private Color color26 = decodeColor("nimbusBase", 0.021348298f, -0.58106947f, 0.16862744f, 0);
+    private Color color27 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.043137252f, 0);
+    private Color color28 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.24313727f, 0);
+    private Color color29 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public SpinnerSpinnerNextButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_FOCUSED: paintBackgroundFocused(g); break;
+            case BACKGROUND_MOUSEOVER_FOCUSED: paintBackgroundMouseOverAndFocused(g); break;
+            case BACKGROUND_PRESSED_FOCUSED: paintBackgroundPressedAndFocused(g); break;
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_PRESSED: paintBackgroundPressed(g); break;
+            case FOREGROUND_DISABLED: paintForegroundDisabled(g); break;
+            case FOREGROUND_ENABLED: paintForegroundEnabled(g); break;
+            case FOREGROUND_FOCUSED: paintForegroundFocused(g); break;
+            case FOREGROUND_MOUSEOVER_FOCUSED: paintForegroundMouseOverAndFocused(g); break;
+            case FOREGROUND_PRESSED_FOCUSED: paintForegroundPressedAndFocused(g); break;
+            case FOREGROUND_MOUSEOVER: paintForegroundMouseOver(g); break;
+            case FOREGROUND_PRESSED: paintForegroundPressed(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient2(path));
+        g.fill(path);
+        rect = decodeRect1();
+        g.setPaint(color5);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        path = decodePath3();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+        rect = decodeRect1();
+        g.setPaint(color11);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundFocused(Graphics2D g) {
+        path = decodePath5();
+        g.setPaint(color12);
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        rect = decodeRect1();
+        g.setPaint(color11);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundMouseOverAndFocused(Graphics2D g) {
+        path = decodePath5();
+        g.setPaint(color12);
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        rect = decodeRect1();
+        g.setPaint(color18);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundPressedAndFocused(Graphics2D g) {
+        path = decodePath5();
+        g.setPaint(color12);
+        g.fill(path);
+        path = decodePath6();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient9(path));
+        g.fill(path);
+        rect = decodeRect1();
+        g.setPaint(color24);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        path = decodePath3();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient10(path));
+        g.fill(path);
+        rect = decodeRect1();
+        g.setPaint(color18);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundPressed(Graphics2D g) {
+        path = decodePath6();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient11(path));
+        g.fill(path);
+        rect = decodeRect1();
+        g.setPaint(color24);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color25);
+        g.fill(rect);
+
+    }
+
+    private void paintForegroundDisabled(Graphics2D g) {
+        path = decodePath7();
+        g.setPaint(color26);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundEnabled(Graphics2D g) {
+        path = decodePath7();
+        g.setPaint(decodeGradient12(path));
+        g.fill(path);
+
+    }
+
+    private void paintForegroundFocused(Graphics2D g) {
+        path = decodePath8();
+        g.setPaint(decodeGradient12(path));
+        g.fill(path);
+
+    }
+
+    private void paintForegroundMouseOverAndFocused(Graphics2D g) {
+        path = decodePath8();
+        g.setPaint(decodeGradient12(path));
+        g.fill(path);
+
+    }
+
+    private void paintForegroundPressedAndFocused(Graphics2D g) {
+        path = decodePath9();
+        g.setPaint(color29);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundMouseOver(Graphics2D g) {
+        path = decodePath7();
+        g.setPaint(decodeGradient12(path));
+        g.fill(path);
+
+    }
+
+    private void paintForegroundPressed(Graphics2D g) {
+        path = decodePath9();
+        g.setPaint(color29);
+        g.fill(path);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.2857143f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(0.2857142984867096f, 0.0f), decodeAnchorX(2.0f, -3.6363636363636402f), decodeAnchorY(0.2857142984867096f, 0.0f), decodeX(2.0f), decodeY(0.2857143f));
+        path.curveTo(decodeAnchorX(2.0f, 3.6363636363636402f), decodeAnchorY(0.2857142984867096f, 0.0f), decodeAnchorX(2.7142858505249023f, -0.022727272727273373f), decodeAnchorY(1.0f, -3.749999999999999f), decodeX(2.7142859f), decodeY(1.0f));
+        path.curveTo(decodeAnchorX(2.7142858505249023f, 0.022727272727273373f), decodeAnchorY(1.0f, 3.75f), decodeAnchorX(2.7142858505249023f, 0.0f), decodeAnchorY(3.0f, 0.0f), decodeX(2.7142859f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(2.0f));
+        path.lineTo(decodeX(1.0f), decodeY(0.42857143f));
+        path.curveTo(decodeAnchorX(1.0f, 0.0f), decodeAnchorY(0.4285714328289032f, 0.0f), decodeAnchorX(2.0f, -3.0f), decodeAnchorY(0.4285714328289032f, 0.0f), decodeX(2.0f), decodeY(0.42857143f));
+        path.curveTo(decodeAnchorX(2.0f, 3.0f), decodeAnchorY(0.4285714328289032f, 0.0f), decodeAnchorX(2.5714285373687744f, 0.0f), decodeAnchorY(1.0f, -2.0f), decodeX(2.5714285f), decodeY(1.0f));
+        path.curveTo(decodeAnchorX(2.5714285373687744f, 0.0f), decodeAnchorY(1.0f, 2.0f), decodeAnchorX(2.5714285373687744f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeX(2.5714285f), decodeY(2.0f));
+        path.lineTo(decodeX(1.0f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(2.0f), //y
+                         decodeX(2.5714285f) - decodeX(1.0f), //width
+                         decodeY(3.0f) - decodeY(2.0f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.2857143f));
+        path.lineTo(decodeX(2.0f), decodeY(0.2857143f));
+        path.curveTo(decodeAnchorX(2.0f, 3.6363636363636402f), decodeAnchorY(0.2857142984867096f, 0.0f), decodeAnchorX(2.7142858505249023f, -0.022727272727273373f), decodeAnchorY(1.0f, -3.749999999999999f), decodeX(2.7142859f), decodeY(1.0f));
+        path.lineTo(decodeX(2.7142859f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(2.0f));
+        path.lineTo(decodeX(1.0f), decodeY(0.42857143f));
+        path.lineTo(decodeX(2.0f), decodeY(0.42857143f));
+        path.curveTo(decodeAnchorX(2.0f, 3.0f), decodeAnchorY(0.4285714328289032f, 0.0f), decodeAnchorX(2.5714285373687744f, 0.0f), decodeAnchorY(1.0f, -2.0f), decodeX(2.5714285f), decodeY(1.0f));
+        path.lineTo(decodeX(2.5714285f), decodeY(2.0f));
+        path.lineTo(decodeX(1.0f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath5() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.08571429f));
+        path.lineTo(decodeX(2.142857f), decodeY(0.08571429f));
+        path.curveTo(decodeAnchorX(2.142857074737549f, 3.3999999999999986f), decodeAnchorY(0.08571428805589676f, 0.0f), decodeAnchorX(2.914285659790039f, 0.0f), decodeAnchorY(1.0f, -3.4f), decodeX(2.9142857f), decodeY(1.0f));
+        path.lineTo(decodeX(2.9142857f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath6() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.2857143f));
+        path.lineTo(decodeX(2.0f), decodeY(0.2857143f));
+        path.curveTo(decodeAnchorX(2.0f, 3.4545454545454533f), decodeAnchorY(0.2857142984867096f, 0.0f), decodeAnchorX(2.7142858505249023f, -0.022727272727273373f), decodeAnchorY(1.0f, -3.4772727272727266f), decodeX(2.7142859f), decodeY(1.0f));
+        path.lineTo(decodeX(2.7142859f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(0.0f) - decodeX(0.0f), //width
+                         decodeY(0.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath7() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(2.0f));
+        path.lineTo(decodeX(1.490909f), decodeY(1.0284091f));
+        path.lineTo(decodeX(2.0f), decodeY(2.0f));
+        path.lineTo(decodeX(1.0f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath8() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(2.0f));
+        path.lineTo(decodeX(1.490909f), decodeY(1.3522727f));
+        path.lineTo(decodeX(2.0f), decodeY(2.0f));
+        path.lineTo(decodeX(1.0f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath9() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(2.0f));
+        path.lineTo(decodeX(1.5045455f), decodeY(1.0795455f));
+        path.lineTo(decodeX(2.0f), decodeY(2.0f));
+        path.lineTo(decodeX(1.0f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.36497328f,0.72994655f,0.8649733f,1.0f },
+                new Color[] { color8,
+                            decodeColor(color8,color9,0.5f),
+                            color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.37566844f,0.7513369f,0.8756684f,1.0f },
+                new Color[] { color8,
+                            decodeColor(color8,color9,0.5f),
+                            color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.37967914f,0.7593583f,0.87967914f,1.0f },
+                new Color[] { color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color19,
+                            decodeColor(color19,color20,0.5f),
+                            color20});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.37165776f,0.7433155f,0.8716577f,1.0f },
+                new Color[] { color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22,
+                            decodeColor(color22,color23,0.5f),
+                            color23});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.3970588f,0.7941176f,0.89705884f,1.0f },
+                new Color[] { color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17});
+    }
+
+    private Paint decodeGradient11(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.4318182f,0.8636364f,0.9318182f,1.0f },
+                new Color[] { color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22,
+                            decodeColor(color22,color23,0.5f),
+                            color23});
+    }
+
+    private Paint decodeGradient12(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.48636365f * w) + x, (0.0116959065f * h) + y, (0.4909091f * w) + x, (0.8888889f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color27,
+                            decodeColor(color27,color28,0.5f),
+                            color28});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SpinnerSpinnerPreviousButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,504 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class SpinnerSpinnerPreviousButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of SpinnerSpinnerPreviousButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_FOCUSED = 3;
+    static final int BACKGROUND_MOUSEOVER_FOCUSED = 4;
+    static final int BACKGROUND_PRESSED_FOCUSED = 5;
+    static final int BACKGROUND_MOUSEOVER = 6;
+    static final int BACKGROUND_PRESSED = 7;
+    static final int FOREGROUND_DISABLED = 8;
+    static final int FOREGROUND_ENABLED = 9;
+    static final int FOREGROUND_FOCUSED = 10;
+    static final int FOREGROUND_MOUSEOVER_FOCUSED = 11;
+    static final int FOREGROUND_PRESSED_FOCUSED = 12;
+    static final int FOREGROUND_MOUSEOVER = 13;
+    static final int FOREGROUND_PRESSED = 14;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of SpinnerSpinnerPreviousButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBase", 0.015098333f, -0.5557143f, 0.2352941f, 0);
+    private Color color2 = decodeColor("nimbusBase", 0.010237217f, -0.55799407f, 0.20784312f, 0);
+    private Color color3 = decodeColor("nimbusBase", 0.018570602f, -0.5821429f, 0.32941175f, 0);
+    private Color color4 = decodeColor("nimbusBase", 0.021348298f, -0.56722116f, 0.3098039f, 0);
+    private Color color5 = decodeColor("nimbusBase", 0.021348298f, -0.567841f, 0.31764704f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.0f, -0.0033834577f, -0.30588236f, -148);
+    private Color color7 = decodeColor("nimbusBase", 5.1498413E-4f, -0.2583558f, -0.13333336f, 0);
+    private Color color8 = decodeColor("nimbusBase", 5.1498413E-4f, -0.095173776f, -0.25882354f, 0);
+    private Color color9 = decodeColor("nimbusBase", 0.004681647f, -0.5383692f, 0.33725488f, 0);
+    private Color color10 = decodeColor("nimbusBase", -0.0017285943f, -0.44453782f, 0.25098038f, 0);
+    private Color color11 = decodeColor("nimbusBase", 5.1498413E-4f, -0.43866998f, 0.24705881f, 0);
+    private Color color12 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4625541f, 0.35686272f, 0);
+    private Color color13 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color14 = decodeColor("nimbusBase", 0.0013483167f, 0.088923395f, -0.2784314f, 0);
+    private Color color15 = decodeColor("nimbusBase", 0.059279382f, 0.3642857f, -0.43529415f, 0);
+    private Color color16 = decodeColor("nimbusBase", 0.0010585189f, -0.541452f, 0.4078431f, 0);
+    private Color color17 = decodeColor("nimbusBase", 0.00254488f, -0.4608264f, 0.32549018f, 0);
+    private Color color18 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4555341f, 0.3215686f, 0);
+    private Color color19 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4757143f, 0.43137252f, 0);
+    private Color color20 = decodeColor("nimbusBase", 0.061133325f, 0.3642857f, -0.427451f, 0);
+    private Color color21 = decodeColor("nimbusBase", -3.528595E-5f, 0.018606722f, -0.23137257f, 0);
+    private Color color22 = decodeColor("nimbusBase", 8.354783E-4f, -0.2578073f, 0.12549019f, 0);
+    private Color color23 = decodeColor("nimbusBase", 8.9377165E-4f, -0.01599598f, 0.007843137f, 0);
+    private Color color24 = decodeColor("nimbusBase", 0.0f, -0.00895375f, 0.007843137f, 0);
+    private Color color25 = decodeColor("nimbusBase", 8.9377165E-4f, -0.13853917f, 0.14509803f, 0);
+    private Color color26 = decodeColor("nimbusBlueGrey", -0.6111111f, -0.110526316f, -0.63529414f, -179);
+    private Color color27 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -186);
+    private Color color28 = decodeColor("nimbusBase", 0.018570602f, -0.56714284f, 0.1372549f, 0);
+    private Color color29 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.54901963f, 0);
+    private Color color30 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public SpinnerSpinnerPreviousButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_FOCUSED: paintBackgroundFocused(g); break;
+            case BACKGROUND_MOUSEOVER_FOCUSED: paintBackgroundMouseOverAndFocused(g); break;
+            case BACKGROUND_PRESSED_FOCUSED: paintBackgroundPressedAndFocused(g); break;
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_PRESSED: paintBackgroundPressed(g); break;
+            case FOREGROUND_DISABLED: paintForegroundDisabled(g); break;
+            case FOREGROUND_ENABLED: paintForegroundEnabled(g); break;
+            case FOREGROUND_FOCUSED: paintForegroundFocused(g); break;
+            case FOREGROUND_MOUSEOVER_FOCUSED: paintForegroundMouseOverAndFocused(g); break;
+            case FOREGROUND_PRESSED_FOCUSED: paintForegroundPressedAndFocused(g); break;
+            case FOREGROUND_MOUSEOVER: paintForegroundMouseOver(g); break;
+            case FOREGROUND_PRESSED: paintForegroundPressed(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient2(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        path = decodePath3();
+        g.setPaint(color6);
+        g.fill(path);
+        path = decodePath1();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundFocused(Graphics2D g) {
+        path = decodePath4();
+        g.setPaint(color13);
+        g.fill(path);
+        path = decodePath1();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOverAndFocused(Graphics2D g) {
+        path = decodePath5();
+        g.setPaint(color13);
+        g.fill(path);
+        path = decodePath6();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath7();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundPressedAndFocused(Graphics2D g) {
+        path = decodePath4();
+        g.setPaint(color13);
+        g.fill(path);
+        path = decodePath1();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        path = decodePath3();
+        g.setPaint(color26);
+        g.fill(path);
+        path = decodePath1();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundPressed(Graphics2D g) {
+        path = decodePath8();
+        g.setPaint(color27);
+        g.fill(path);
+        path = decodePath1();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+
+    }
+
+    private void paintForegroundDisabled(Graphics2D g) {
+        path = decodePath9();
+        g.setPaint(color28);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundEnabled(Graphics2D g) {
+        path = decodePath9();
+        g.setPaint(color29);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundFocused(Graphics2D g) {
+        path = decodePath9();
+        g.setPaint(color29);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundMouseOverAndFocused(Graphics2D g) {
+        path = decodePath9();
+        g.setPaint(color29);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundPressedAndFocused(Graphics2D g) {
+        path = decodePath9();
+        g.setPaint(color30);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundMouseOver(Graphics2D g) {
+        path = decodePath9();
+        g.setPaint(color29);
+        g.fill(path);
+
+    }
+
+    private void paintForegroundPressed(Graphics2D g) {
+        path = decodePath9();
+        g.setPaint(color30);
+        g.fill(path);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(1.0f));
+        path.lineTo(decodeX(0.0f), decodeY(2.6666667f));
+        path.lineTo(decodeX(2.142857f), decodeY(2.6666667f));
+        path.curveTo(decodeAnchorX(2.142857074737549f, 3.0f), decodeAnchorY(2.6666667461395264f, 0.0f), decodeAnchorX(2.7142858505249023f, 0.0f), decodeAnchorY(2.0f, 2.0f), decodeX(2.7142859f), decodeY(2.0f));
+        path.lineTo(decodeX(2.7142859f), decodeY(1.0f));
+        path.lineTo(decodeX(0.0f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(1.0f));
+        path.lineTo(decodeX(1.0f), decodeY(2.5f));
+        path.lineTo(decodeX(2.142857f), decodeY(2.5f));
+        path.curveTo(decodeAnchorX(2.142857074737549f, 2.0f), decodeAnchorY(2.5f, 0.0f), decodeAnchorX(2.5714285373687744f, 0.0f), decodeAnchorY(2.0f, 1.0f), decodeX(2.5714285f), decodeY(2.0f));
+        path.lineTo(decodeX(2.5714285f), decodeY(1.0f));
+        path.lineTo(decodeX(1.0f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(2.6666667f));
+        path.lineTo(decodeX(0.0f), decodeY(2.8333333f));
+        path.lineTo(decodeX(2.0324676f), decodeY(2.8333333f));
+        path.curveTo(decodeAnchorX(2.0324676036834717f, 2.1136363636363793f), decodeAnchorY(2.8333332538604736f, 0.0f), decodeAnchorX(2.7142858505249023f, 0.0f), decodeAnchorY(2.0f, 3.0f), decodeX(2.7142859f), decodeY(2.0f));
+        path.lineTo(decodeX(0.0f), decodeY(2.6666667f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(1.0f));
+        path.lineTo(decodeX(0.0f), decodeY(2.8999999f));
+        path.lineTo(decodeX(2.2f), decodeY(2.8999999f));
+        path.curveTo(decodeAnchorX(2.200000047683716f, 2.9999999999999982f), decodeAnchorY(2.8999998569488525f, 0.0f), decodeAnchorX(2.914285659790039f, 0.0f), decodeAnchorY(2.2333333492279053f, 3.0f), decodeX(2.9142857f), decodeY(2.2333333f));
+        path.lineTo(decodeX(2.9142857f), decodeY(1.0f));
+        path.lineTo(decodeX(0.0f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath5() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(2.8999999f));
+        path.lineTo(decodeX(2.2f), decodeY(2.8999999f));
+        path.curveTo(decodeAnchorX(2.200000047683716f, 2.9999999999999982f), decodeAnchorY(2.8999998569488525f, 0.0f), decodeAnchorX(2.914285659790039f, 0.0f), decodeAnchorY(2.2333333492279053f, 3.0f), decodeX(2.9142857f), decodeY(2.2333333f));
+        path.lineTo(decodeX(2.9142857f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath6() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(2.6666667f));
+        path.lineTo(decodeX(2.142857f), decodeY(2.6666667f));
+        path.curveTo(decodeAnchorX(2.142857074737549f, 3.0f), decodeAnchorY(2.6666667461395264f, 0.0f), decodeAnchorX(2.7142858505249023f, 0.0f), decodeAnchorY(2.0f, 2.0f), decodeX(2.7142859f), decodeY(2.0f));
+        path.lineTo(decodeX(2.7142859f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath7() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(0.0f));
+        path.lineTo(decodeX(1.0f), decodeY(2.5f));
+        path.lineTo(decodeX(2.142857f), decodeY(2.5f));
+        path.curveTo(decodeAnchorX(2.142857074737549f, 2.0f), decodeAnchorY(2.5f, 0.0f), decodeAnchorX(2.5714285373687744f, 0.0f), decodeAnchorY(2.0f, 1.0f), decodeX(2.5714285f), decodeY(2.0f));
+        path.lineTo(decodeX(2.5714285f), decodeY(0.0f));
+        path.lineTo(decodeX(1.0f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath8() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(2.6666667f));
+        path.lineTo(decodeX(0.0f), decodeY(2.8333333f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(2.8333332538604736f, 0.0f), decodeAnchorX(2.0324676036834717f, -2.1136363636363793f), decodeAnchorY(2.8333332538604736f, 0.0f), decodeX(2.0324676f), decodeY(2.8333333f));
+        path.curveTo(decodeAnchorX(2.0324676036834717f, 2.1136363636363793f), decodeAnchorY(2.8333332538604736f, 0.0f), decodeAnchorX(2.7142858505249023f, 0.0f), decodeAnchorY(2.0f, 3.0f), decodeX(2.7142859f), decodeY(2.0f));
+        path.lineTo(decodeX(0.0f), decodeY(2.6666667f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath9() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(1.0f));
+        path.lineTo(decodeX(1.5045455f), decodeY(1.9943181f));
+        path.lineTo(decodeX(2.0f), decodeY(1.0f));
+        path.lineTo(decodeX(1.0f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.05748663f,0.11497326f,0.55748665f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.05748663f,0.11497326f,0.2419786f,0.36898395f,0.684492f,1.0f },
+                new Color[] { color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11,
+                            decodeColor(color11,color12,0.5f),
+                            color12});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color14,
+                            decodeColor(color14,color15,0.5f),
+                            color15});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.05748663f,0.11497326f,0.2419786f,0.36898395f,0.684492f,1.0f },
+                new Color[] { color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18,
+                            decodeColor(color18,color19,0.5f),
+                            color19});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.05748663f,0.11497326f,0.2419786f,0.36898395f,0.684492f,1.0f },
+                new Color[] { color22,
+                            decodeColor(color22,color23,0.5f),
+                            color23,
+                            decodeColor(color23,color24,0.5f),
+                            color24,
+                            decodeColor(color24,color25,0.5f),
+                            color25});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SplitPanePainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class SplitPanePainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of SplitPanePainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of SplitPanePainter would be created. For the moment at least,
+    //however, all are created for each instance.
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public SplitPanePainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,289 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class SplitPaneSplitPaneDividerPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of SplitPaneSplitPaneDividerPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int BACKGROUND_FOCUSED = 2;
+    static final int FOREGROUND_ENABLED = 3;
+    static final int FOREGROUND_ENABLED_VERTICAL = 4;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of SplitPaneSplitPaneDividerPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", 0.0f, -0.017358616f, -0.11372548f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.102396235f, 0.21960783f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.0f, -0.07016757f, 0.12941176f, 0);
+    private Color color4 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.0f, -0.048026316f, 0.007843137f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.06970999f, 0.21568626f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.0f, -0.06704806f, 0.06666666f, 0);
+    private Color color9 = decodeColor("nimbusBlueGrey", 0.0f, -0.019617222f, -0.09803921f, 0);
+    private Color color10 = decodeColor("nimbusBlueGrey", 0.004273474f, -0.03790062f, -0.043137252f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", -0.111111104f, -0.106573746f, 0.24705881f, 0);
+    private Color color12 = decodeColor("nimbusBlueGrey", 0.0f, -0.049301825f, 0.02352941f, 0);
+    private Color color13 = decodeColor("nimbusBlueGrey", -0.006944418f, -0.07399663f, 0.11372548f, 0);
+    private Color color14 = decodeColor("nimbusBlueGrey", -0.018518567f, -0.06998578f, 0.12549019f, 0);
+    private Color color15 = decodeColor("nimbusBlueGrey", 0.0f, -0.050526317f, 0.039215684f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public SplitPaneSplitPaneDividerPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_FOCUSED: paintBackgroundFocused(g); break;
+            case FOREGROUND_ENABLED: paintForegroundEnabled(g); break;
+            case FOREGROUND_ENABLED_VERTICAL: paintForegroundEnabledAndVertical(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundFocused(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintForegroundEnabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintForegroundEnabledAndVertical(Graphics2D g) {
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient6(rect));
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(1.05f), //x
+                               decodeY(1.3f), //y
+                               decodeX(1.95f) - decodeX(1.05f), //width
+                               decodeY(1.8f) - decodeY(1.3f), //height
+                               3.6666667f, 3.6666667f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect2() {
+        roundRect.setRoundRect(decodeX(1.1f), //x
+                               decodeY(1.4f), //y
+                               decodeX(1.9f) - decodeX(1.1f), //width
+                               decodeY(1.7f) - decodeY(1.4f), //height
+                               4.0f, 4.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect3() {
+        roundRect.setRoundRect(decodeX(1.3f), //x
+                               decodeY(1.1428572f), //y
+                               decodeX(1.7f) - decodeX(1.3f), //width
+                               decodeY(1.8214285f) - decodeY(1.1428572f), //height
+                               4.0f, 4.0f); //rounding
+        return roundRect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(1.4f), //x
+                         decodeY(1.1785715f), //y
+                         decodeX(1.6f) - decodeX(1.4f), //width
+                         decodeY(1.7678571f) - decodeY(1.1785715f)); //height
+        return rect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.058064517f,0.08064516f,0.103225805f,0.116129026f,0.12903225f,0.43387097f,0.7387097f,0.77903223f,0.81935483f,0.85806453f,0.8967742f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color2,0.5f),
+                            color2,
+                            decodeColor(color2,color1,0.5f),
+                            color1});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.058064517f,0.08064516f,0.103225805f,0.1166129f,0.13f,0.43f,0.73f,0.7746774f,0.81935483f,0.85806453f,0.8967742f },
+                new Color[] { color1,
+                            decodeColor(color1,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color1,0.5f),
+                            color1});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.20645161f,0.5f,0.7935484f },
+                new Color[] { color1,
+                            decodeColor(color1,color5,0.5f),
+                            color5});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.090322584f,0.2951613f,0.5f,0.5822581f,0.66451615f },
+                new Color[] { color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.75f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.42096773f,0.84193546f,0.8951613f,0.9483871f },
+                new Color[] { color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.08064516f,0.16129032f,0.5129032f,0.86451614f,0.88548386f,0.90645164f },
+                new Color[] { color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14,
+                            decodeColor(color14,color15,0.5f),
+                            color15});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerVerticalState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class SplitPaneSplitPaneDividerVerticalState extends State {
+    SplitPaneSplitPaneDividerVerticalState() {
+        super("Vertical");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                        return c instanceof JSplitPane && (((JSplitPane)c).getOrientation() == 1);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/SplitPaneVerticalState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class SplitPaneVerticalState extends State {
+    SplitPaneVerticalState() {
+        super("Vertical");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                        return c instanceof JSplitPane && (((JSplitPane)c).getOrientation() == 1);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TabbedPanePainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class TabbedPanePainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of TabbedPanePainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_FOCUSED = 3;
+    static final int BACKGROUND_MOUSEOVER = 4;
+    static final int BACKGROUND_PRESSED = 5;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of TabbedPanePainter would be created. For the moment at least,
+    //however, all are created for each instance.
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public TabbedPanePainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabAreaPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,220 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class TabbedPaneTabbedPaneTabAreaPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of TabbedPaneTabbedPaneTabAreaPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int BACKGROUND_DISABLED = 2;
+    static final int BACKGROUND_ENABLED_MOUSEOVER = 3;
+    static final int BACKGROUND_ENABLED_PRESSED = 4;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of TabbedPaneTabbedPaneTabAreaPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = new Color(255, 200, 0, 255);
+    private Color color2 = decodeColor("nimbusBase", 0.08801502f, 0.3642857f, -0.4784314f, 0);
+    private Color color3 = decodeColor("nimbusBase", 5.1498413E-4f, -0.45471883f, 0.31764704f, 0);
+    private Color color4 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4633005f, 0.3607843f, 0);
+    private Color color5 = decodeColor("nimbusBase", 0.05468172f, -0.58308274f, 0.19607842f, 0);
+    private Color color6 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.54901963f, 0);
+    private Color color7 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4690476f, 0.39215684f, 0);
+    private Color color8 = decodeColor("nimbusBase", 5.1498413E-4f, -0.47635174f, 0.4352941f, 0);
+    private Color color9 = decodeColor("nimbusBase", 0.0f, -0.05401492f, 0.05098039f, 0);
+    private Color color10 = decodeColor("nimbusBase", 0.0f, -0.09303135f, 0.09411764f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public TabbedPaneTabbedPaneTabAreaPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED_MOUSEOVER: paintBackgroundEnabledAndMouseOver(g); break;
+            case BACKGROUND_ENABLED_PRESSED: paintBackgroundEnabledAndPressed(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        rect = decodeRect2();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabledAndMouseOver(Graphics2D g) {
+        rect = decodeRect2();
+        g.setPaint(decodeGradient3(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabledAndPressed(Graphics2D g) {
+        rect = decodeRect2();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(0.0f) - decodeX(0.0f), //width
+                         decodeY(1.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(2.1666667f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(3.0f) - decodeY(2.1666667f)); //height
+        return rect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.08387097f,0.09677419f,0.10967742f,0.43709677f,0.7645161f,0.7758064f,0.7870968f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.08387097f,0.09677419f,0.10967742f,0.43709677f,0.7645161f,0.7758064f,0.7870968f },
+                new Color[] { color5,
+                            decodeColor(color5,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.08387097f,0.09677419f,0.10967742f,0.43709677f,0.7645161f,0.7758064f,0.7870968f },
+                new Color[] { color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8,
+                            decodeColor(color8,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.08387097f,0.09677419f,0.10967742f,0.43709677f,0.7645161f,0.7758064f,0.7870968f },
+                new Color[] { color2,
+                            decodeColor(color2,color9,0.5f),
+                            color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10,
+                            decodeColor(color10,color2,0.5f),
+                            color2});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,677 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class TabbedPaneTabbedPaneTabPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of TabbedPaneTabbedPaneTabPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int BACKGROUND_ENABLED_MOUSEOVER = 2;
+    static final int BACKGROUND_ENABLED_PRESSED = 3;
+    static final int BACKGROUND_DISABLED = 4;
+    static final int BACKGROUND_SELECTED_DISABLED = 5;
+    static final int BACKGROUND_SELECTED = 6;
+    static final int BACKGROUND_SELECTED_MOUSEOVER = 7;
+    static final int BACKGROUND_SELECTED_PRESSED = 8;
+    static final int BACKGROUND_SELECTED_FOCUSED = 9;
+    static final int BACKGROUND_SELECTED_MOUSEOVER_FOCUSED = 10;
+    static final int BACKGROUND_SELECTED_PRESSED_FOCUSED = 11;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of TabbedPaneTabbedPaneTabPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBase", 0.032459438f, -0.55535716f, -0.109803945f, 0);
+    private Color color2 = decodeColor("nimbusBase", 0.08801502f, 0.3642857f, -0.4784314f, 0);
+    private Color color3 = decodeColor("nimbusBase", 0.08801502f, -0.63174605f, 0.43921566f, 0);
+    private Color color4 = decodeColor("nimbusBase", 0.05468172f, -0.6145278f, 0.37647057f, 0);
+    private Color color5 = decodeColor("nimbusBase", 0.032459438f, -0.5953556f, 0.32549018f, 0);
+    private Color color6 = decodeColor("nimbusBase", 0.032459438f, -0.54616207f, -0.02352941f, 0);
+    private Color color7 = decodeColor("nimbusBase", 0.08801502f, -0.6317773f, 0.4470588f, 0);
+    private Color color8 = decodeColor("nimbusBase", 0.021348298f, -0.61547136f, 0.41960782f, 0);
+    private Color color9 = decodeColor("nimbusBase", 0.032459438f, -0.5985242f, 0.39999998f, 0);
+    private Color color10 = decodeColor("nimbusBase", 0.08801502f, 0.3642857f, -0.52156866f, 0);
+    private Color color11 = decodeColor("nimbusBase", 0.027408898f, -0.5847884f, 0.2980392f, 0);
+    private Color color12 = decodeColor("nimbusBase", 0.035931647f, -0.5553123f, 0.23137254f, 0);
+    private Color color13 = decodeColor("nimbusBase", 0.029681683f, -0.5281874f, 0.18039215f, 0);
+    private Color color14 = decodeColor("nimbusBase", 0.03801495f, -0.5456242f, 0.3215686f, 0);
+    private Color color15 = decodeColor("nimbusBase", 0.032459438f, -0.59181184f, 0.25490195f, 0);
+    private Color color16 = decodeColor("nimbusBase", 0.05468172f, -0.58308274f, 0.19607842f, 0);
+    private Color color17 = decodeColor("nimbusBase", 0.046348333f, -0.6006266f, 0.34509802f, 0);
+    private Color color18 = decodeColor("nimbusBase", 0.046348333f, -0.60015875f, 0.3333333f, 0);
+    private Color color19 = decodeColor("nimbusBase", 0.004681647f, -0.6197143f, 0.43137252f, 0);
+    private Color color20 = decodeColor("nimbusBase", 7.13408E-4f, -0.543609f, 0.34509802f, 0);
+    private Color color21 = decodeColor("nimbusBase", -0.0020751357f, -0.45610264f, 0.2588235f, 0);
+    private Color color22 = decodeColor("nimbusBase", 5.1498413E-4f, -0.43866998f, 0.24705881f, 0);
+    private Color color23 = decodeColor("nimbusBase", 5.1498413E-4f, -0.44879842f, 0.29019606f, 0);
+    private Color color24 = decodeColor("nimbusBase", 5.1498413E-4f, -0.08776909f, -0.2627451f, 0);
+    private Color color25 = decodeColor("nimbusBase", 0.06332368f, 0.3642857f, -0.4431373f, 0);
+    private Color color26 = decodeColor("nimbusBase", 0.004681647f, -0.6198413f, 0.43921566f, 0);
+    private Color color27 = decodeColor("nimbusBase", -0.0022627711f, -0.5335866f, 0.372549f, 0);
+    private Color color28 = decodeColor("nimbusBase", -0.0017285943f, -0.4608264f, 0.32549018f, 0);
+    private Color color29 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4555341f, 0.3215686f, 0);
+    private Color color30 = decodeColor("nimbusBase", 5.1498413E-4f, -0.46404046f, 0.36470586f, 0);
+    private Color color31 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.54901963f, 0);
+    private Color color32 = decodeColor("nimbusBase", -4.2033195E-4f, -0.38050595f, 0.20392156f, 0);
+    private Color color33 = decodeColor("nimbusBase", 0.0013483167f, -0.16401619f, 0.0745098f, 0);
+    private Color color34 = decodeColor("nimbusBase", -0.0010001659f, -0.01599598f, 0.007843137f, 0);
+    private Color color35 = decodeColor("nimbusBase", 0.0f, 0.0f, 0.0f, 0);
+    private Color color36 = decodeColor("nimbusBase", 0.0018727183f, -0.038398862f, 0.035294116f, 0);
+    private Color color37 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public TabbedPaneTabbedPaneTabPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_ENABLED_MOUSEOVER: paintBackgroundEnabledAndMouseOver(g); break;
+            case BACKGROUND_ENABLED_PRESSED: paintBackgroundEnabledAndPressed(g); break;
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_SELECTED_DISABLED: paintBackgroundSelectedAndDisabled(g); break;
+            case BACKGROUND_SELECTED: paintBackgroundSelected(g); break;
+            case BACKGROUND_SELECTED_MOUSEOVER: paintBackgroundSelectedAndMouseOver(g); break;
+            case BACKGROUND_SELECTED_PRESSED: paintBackgroundSelectedAndPressed(g); break;
+            case BACKGROUND_SELECTED_FOCUSED: paintBackgroundSelectedAndFocused(g); break;
+            case BACKGROUND_SELECTED_MOUSEOVER_FOCUSED: paintBackgroundSelectedAndMouseOverAndFocused(g); break;
+            case BACKGROUND_SELECTED_PRESSED_FOCUSED: paintBackgroundSelectedAndPressedAndFocused(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient2(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabledAndMouseOver(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabledAndPressed(Graphics2D g) {
+        path = decodePath3();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        path = decodePath5();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath6();
+        g.setPaint(decodeGradient8(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundSelectedAndDisabled(Graphics2D g) {
+        path = decodePath7();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient9(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundSelected(Graphics2D g) {
+        path = decodePath7();
+        g.setPaint(decodeGradient10(path));
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(decodeGradient9(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundSelectedAndMouseOver(Graphics2D g) {
+        path = decodePath8();
+        g.setPaint(decodeGradient11(path));
+        g.fill(path);
+        path = decodePath9();
+        g.setPaint(decodeGradient12(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundSelectedAndPressed(Graphics2D g) {
+        path = decodePath8();
+        g.setPaint(decodeGradient13(path));
+        g.fill(path);
+        path = decodePath9();
+        g.setPaint(decodeGradient14(path));
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundSelectedAndFocused(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(decodeGradient10(path));
+        g.fill(path);
+        path = decodePath10();
+        g.setPaint(decodeGradient9(path));
+        g.fill(path);
+        path = decodePath11();
+        g.setPaint(color37);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundSelectedAndMouseOverAndFocused(Graphics2D g) {
+        path = decodePath12();
+        g.setPaint(decodeGradient11(path));
+        g.fill(path);
+        path = decodePath13();
+        g.setPaint(decodeGradient12(path));
+        g.fill(path);
+        path = decodePath14();
+        g.setPaint(color37);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundSelectedAndPressedAndFocused(Graphics2D g) {
+        path = decodePath12();
+        g.setPaint(decodeGradient13(path));
+        g.fill(path);
+        path = decodePath13();
+        g.setPaint(decodeGradient14(path));
+        g.fill(path);
+        path = decodePath14();
+        g.setPaint(color37);
+        g.fill(path);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.71428573f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(0.7142857313156128f, -3.0f), decodeAnchorX(0.7142857313156128f, -3.0f), decodeAnchorY(0.0f, 0.0f), decodeX(0.71428573f), decodeY(0.0f));
+        path.curveTo(decodeAnchorX(0.7142857313156128f, 3.0f), decodeAnchorY(0.0f, 0.0f), decodeAnchorX(2.2857143878936768f, -3.0f), decodeAnchorY(0.0f, 0.0f), decodeX(2.2857144f), decodeY(0.0f));
+        path.curveTo(decodeAnchorX(2.2857143878936768f, 3.0f), decodeAnchorY(0.0f, 0.0f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(0.7142857313156128f, -3.0f), decodeX(3.0f), decodeY(0.71428573f));
+        path.curveTo(decodeAnchorX(3.0f, 0.0f), decodeAnchorY(0.7142857313156128f, 3.0f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(3.0f, 0.0f), decodeX(3.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(3.0f, 0.0f), decodeAnchorX(0.0f, 0.0f), decodeAnchorY(0.7142857313156128f, 3.0f), decodeX(0.0f), decodeY(0.71428573f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(0.14285715f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(0.1428571492433548f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeAnchorX(0.1428571492433548f, 0.0f), decodeAnchorY(0.8571428656578064f, 3.5555555555555536f), decodeX(0.14285715f), decodeY(0.85714287f));
+        path.curveTo(decodeAnchorX(0.1428571492433548f, 0.0f), decodeAnchorY(0.8571428656578064f, -3.5555555555555536f), decodeAnchorX(0.8571428656578064f, -3.444444444444443f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeX(0.85714287f), decodeY(0.14285715f));
+        path.curveTo(decodeAnchorX(0.8571428656578064f, 3.444444444444443f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeAnchorX(2.142857074737549f, -3.333333333333343f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeX(2.142857f), decodeY(0.14285715f));
+        path.curveTo(decodeAnchorX(2.142857074737549f, 3.333333333333343f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeAnchorX(2.857142925262451f, 0.0f), decodeAnchorY(0.8571428656578064f, -3.277777777777777f), decodeX(2.857143f), decodeY(0.85714287f));
+        path.curveTo(decodeAnchorX(2.857142925262451f, 0.0f), decodeAnchorY(0.8571428656578064f, 3.277777777777777f), decodeAnchorX(2.857142925262451f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeX(2.857143f), decodeY(2.0f));
+        path.lineTo(decodeX(0.14285715f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.71428573f));
+        path.curveTo(decodeAnchorX(0.0f, 0.05555555555555555f), decodeAnchorY(0.7142857313156128f, 2.6111111111111125f), decodeAnchorX(0.8333333134651184f, -2.5000000000000018f), decodeAnchorY(0.0f, 0.0f), decodeX(0.8333333f), decodeY(0.0f));
+        path.curveTo(decodeAnchorX(0.8333333134651184f, 2.5000000000000018f), decodeAnchorY(0.0f, 0.0f), decodeAnchorX(2.2857143878936768f, -2.7222222222222143f), decodeAnchorY(0.0f, 0.0f), decodeX(2.2857144f), decodeY(0.0f));
+        path.curveTo(decodeAnchorX(2.2857143878936768f, 2.7222222222222143f), decodeAnchorY(0.0f, 0.0f), decodeAnchorX(3.0f, -0.055555555555557135f), decodeAnchorY(0.7142857313156128f, -2.722222222222223f), decodeX(3.0f), decodeY(0.71428573f));
+        path.curveTo(decodeAnchorX(3.0f, 0.055555555555557135f), decodeAnchorY(0.7142857313156128f, 2.722222222222223f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(3.0f, 0.0f), decodeX(3.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(3.0f, 0.0f), decodeAnchorX(0.0f, -0.05555555555555555f), decodeAnchorY(0.7142857313156128f, -2.6111111111111125f), decodeX(0.0f), decodeY(0.71428573f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(0.16666667f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(0.8571428656578064f, 3.6666666666666643f), decodeX(0.16666667f), decodeY(0.85714287f));
+        path.curveTo(decodeAnchorX(0.1666666716337204f, 0.0f), decodeAnchorY(0.8571428656578064f, -3.6666666666666643f), decodeAnchorX(1.0f, -3.5555555555555536f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeX(1.0f), decodeY(0.14285715f));
+        path.curveTo(decodeAnchorX(1.0f, 3.5555555555555536f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeAnchorX(2.142857074737549f, -3.500000000000014f), decodeAnchorY(0.1428571492433548f, 0.05555555555555558f), decodeX(2.142857f), decodeY(0.14285715f));
+        path.curveTo(decodeAnchorX(2.142857074737549f, 3.500000000000014f), decodeAnchorY(0.1428571492433548f, -0.05555555555555558f), decodeAnchorX(2.857142925262451f, 0.055555555555557135f), decodeAnchorY(0.8571428656578064f, -3.6666666666666643f), decodeX(2.857143f), decodeY(0.85714287f));
+        path.curveTo(decodeAnchorX(2.857142925262451f, -0.055555555555557135f), decodeAnchorY(0.8571428656578064f, 3.6666666666666643f), decodeAnchorX(2.857142925262451f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeX(2.857143f), decodeY(2.0f));
+        path.lineTo(decodeX(0.16666667f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath5() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.8333333f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(0.8333333134651184f, -3.0f), decodeAnchorX(0.7142857313156128f, -3.0f), decodeAnchorY(0.0f, 0.0f), decodeX(0.71428573f), decodeY(0.0f));
+        path.curveTo(decodeAnchorX(0.7142857313156128f, 3.0f), decodeAnchorY(0.0f, 0.0f), decodeAnchorX(2.2857143878936768f, -3.0f), decodeAnchorY(0.0f, 0.0f), decodeX(2.2857144f), decodeY(0.0f));
+        path.curveTo(decodeAnchorX(2.2857143878936768f, 3.0f), decodeAnchorY(0.0f, 0.0f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(0.8333333134651184f, -3.0f), decodeX(3.0f), decodeY(0.8333333f));
+        path.curveTo(decodeAnchorX(3.0f, 0.0f), decodeAnchorY(0.8333333134651184f, 3.0f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(3.0f, 0.0f), decodeX(3.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(3.0f, 0.0f), decodeAnchorX(0.0f, 0.0f), decodeAnchorY(0.8333333134651184f, 3.0f), decodeX(0.0f), decodeY(0.8333333f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath6() {
+        path.reset();
+        path.moveTo(decodeX(0.14285715f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(0.1428571492433548f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeAnchorX(0.1428571492433548f, 0.0f), decodeAnchorY(1.0f, 3.5555555555555536f), decodeX(0.14285715f), decodeY(1.0f));
+        path.curveTo(decodeAnchorX(0.1428571492433548f, 0.0f), decodeAnchorY(1.0f, -3.5555555555555536f), decodeAnchorX(0.8571428656578064f, -3.444444444444443f), decodeAnchorY(0.1666666716337204f, 0.0f), decodeX(0.85714287f), decodeY(0.16666667f));
+        path.curveTo(decodeAnchorX(0.8571428656578064f, 3.444444444444443f), decodeAnchorY(0.1666666716337204f, 0.0f), decodeAnchorX(2.142857074737549f, -3.333333333333343f), decodeAnchorY(0.1666666716337204f, 0.0f), decodeX(2.142857f), decodeY(0.16666667f));
+        path.curveTo(decodeAnchorX(2.142857074737549f, 3.333333333333343f), decodeAnchorY(0.1666666716337204f, 0.0f), decodeAnchorX(2.857142925262451f, 0.0f), decodeAnchorY(1.0f, -3.277777777777777f), decodeX(2.857143f), decodeY(1.0f));
+        path.curveTo(decodeAnchorX(2.857142925262451f, 0.0f), decodeAnchorY(1.0f, 3.277777777777777f), decodeAnchorX(2.857142925262451f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeX(2.857143f), decodeY(2.0f));
+        path.lineTo(decodeX(0.14285715f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath7() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.71428573f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(0.7142857313156128f, -3.0f), decodeAnchorX(0.7142857313156128f, -3.0f), decodeAnchorY(0.0f, 0.0f), decodeX(0.71428573f), decodeY(0.0f));
+        path.curveTo(decodeAnchorX(0.7142857313156128f, 3.0f), decodeAnchorY(0.0f, 0.0f), decodeAnchorX(2.2857143878936768f, -3.0f), decodeAnchorY(0.0f, 0.0f), decodeX(2.2857144f), decodeY(0.0f));
+        path.curveTo(decodeAnchorX(2.2857143878936768f, 3.0f), decodeAnchorY(0.0f, 0.0f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(0.7142857313156128f, -3.0f), decodeX(3.0f), decodeY(0.71428573f));
+        path.curveTo(decodeAnchorX(3.0f, 0.0f), decodeAnchorY(0.7142857313156128f, 3.0f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeX(3.0f), decodeY(2.0f));
+        path.lineTo(decodeX(0.0f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeAnchorX(0.0f, 0.0f), decodeAnchorY(0.7142857313156128f, 3.0f), decodeX(0.0f), decodeY(0.71428573f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath8() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.71428573f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(0.7142857313156128f, -3.0f), decodeAnchorX(0.5555555820465088f, -3.0f), decodeAnchorY(0.0f, 0.0f), decodeX(0.5555556f), decodeY(0.0f));
+        path.curveTo(decodeAnchorX(0.5555555820465088f, 3.0f), decodeAnchorY(0.0f, 0.0f), decodeAnchorX(2.444444417953491f, -3.0f), decodeAnchorY(0.0f, 0.0f), decodeX(2.4444444f), decodeY(0.0f));
+        path.curveTo(decodeAnchorX(2.444444417953491f, 3.0f), decodeAnchorY(0.0f, 0.0f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(0.7142857313156128f, -3.0f), decodeX(3.0f), decodeY(0.71428573f));
+        path.curveTo(decodeAnchorX(3.0f, 0.0f), decodeAnchorY(0.7142857313156128f, 3.0f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeX(3.0f), decodeY(2.0f));
+        path.lineTo(decodeX(0.0f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeAnchorX(0.0f, 0.0f), decodeAnchorY(0.7142857313156128f, 3.0f), decodeX(0.0f), decodeY(0.71428573f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath9() {
+        path.reset();
+        path.moveTo(decodeX(0.11111111f), decodeY(2.0f));
+        path.curveTo(decodeAnchorX(0.1111111119389534f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeAnchorX(0.1111111119389534f, 0.0f), decodeAnchorY(0.8571428656578064f, 3.5555555555555536f), decodeX(0.11111111f), decodeY(0.85714287f));
+        path.curveTo(decodeAnchorX(0.1111111119389534f, 0.0f), decodeAnchorY(0.8571428656578064f, -3.5555555555555536f), decodeAnchorX(0.6666666865348816f, -3.444444444444443f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeX(0.6666667f), decodeY(0.14285715f));
+        path.curveTo(decodeAnchorX(0.6666666865348816f, 3.444444444444443f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeAnchorX(2.3333332538604736f, -3.333333333333343f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeX(2.3333333f), decodeY(0.14285715f));
+        path.curveTo(decodeAnchorX(2.3333332538604736f, 3.333333333333343f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeAnchorX(2.8888888359069824f, 0.0f), decodeAnchorY(0.8571428656578064f, -3.277777777777777f), decodeX(2.8888888f), decodeY(0.85714287f));
+        path.curveTo(decodeAnchorX(2.8888888359069824f, 0.0f), decodeAnchorY(0.8571428656578064f, 3.277777777777777f), decodeAnchorX(2.8888888359069824f, 0.0f), decodeAnchorY(2.0f, 0.0f), decodeX(2.8888888f), decodeY(2.0f));
+        path.lineTo(decodeX(0.11111111f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath10() {
+        path.reset();
+        path.moveTo(decodeX(0.14285715f), decodeY(3.0f));
+        path.curveTo(decodeAnchorX(0.1428571492433548f, 0.0f), decodeAnchorY(3.0f, 0.0f), decodeAnchorX(0.1428571492433548f, 0.0f), decodeAnchorY(0.8571428656578064f, 3.5555555555555536f), decodeX(0.14285715f), decodeY(0.85714287f));
+        path.curveTo(decodeAnchorX(0.1428571492433548f, 0.0f), decodeAnchorY(0.8571428656578064f, -3.5555555555555536f), decodeAnchorX(0.8571428656578064f, -3.444444444444443f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeX(0.85714287f), decodeY(0.14285715f));
+        path.curveTo(decodeAnchorX(0.8571428656578064f, 3.444444444444443f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeAnchorX(2.142857074737549f, -3.333333333333343f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeX(2.142857f), decodeY(0.14285715f));
+        path.curveTo(decodeAnchorX(2.142857074737549f, 3.333333333333343f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeAnchorX(2.857142925262451f, 0.0f), decodeAnchorY(0.8571428656578064f, -3.277777777777777f), decodeX(2.857143f), decodeY(0.85714287f));
+        path.curveTo(decodeAnchorX(2.857142925262451f, 0.0f), decodeAnchorY(0.8571428656578064f, 3.277777777777777f), decodeAnchorX(2.857142925262451f, 0.0f), decodeAnchorY(3.0f, 0.0f), decodeX(2.857143f), decodeY(3.0f));
+        path.lineTo(decodeX(0.14285715f), decodeY(3.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath11() {
+        path.reset();
+        path.moveTo(decodeX(1.4638889f), decodeY(2.25f));
+        path.lineTo(decodeX(1.4652778f), decodeY(2.777778f));
+        path.lineTo(decodeX(0.3809524f), decodeY(2.777778f));
+        path.lineTo(decodeX(0.375f), decodeY(0.88095236f));
+        path.curveTo(decodeAnchorX(0.375f, 0.0f), decodeAnchorY(0.8809523582458496f, -2.2500000000000004f), decodeAnchorX(0.8452380895614624f, -1.9166666666666647f), decodeAnchorY(0.380952388048172f, 0.0f), decodeX(0.8452381f), decodeY(0.3809524f));
+        path.lineTo(decodeX(2.1011903f), decodeY(0.3809524f));
+        path.curveTo(decodeAnchorX(2.1011903285980225f, 2.124999999999986f), decodeAnchorY(0.380952388048172f, 0.0f), decodeAnchorX(2.6309525966644287f, 0.0f), decodeAnchorY(0.863095223903656f, -2.5833333333333317f), decodeX(2.6309526f), decodeY(0.8630952f));
+        path.lineTo(decodeX(2.625f), decodeY(2.7638886f));
+        path.lineTo(decodeX(1.4666667f), decodeY(2.777778f));
+        path.lineTo(decodeX(1.4638889f), decodeY(2.2361114f));
+        path.lineTo(decodeX(2.3869045f), decodeY(2.222222f));
+        path.lineTo(decodeX(2.375f), decodeY(0.86904764f));
+        path.curveTo(decodeAnchorX(2.375f, -7.105427357601002E-15f), decodeAnchorY(0.8690476417541504f, -0.9166666666666679f), decodeAnchorX(2.095238208770752f, 1.0833333333333357f), decodeAnchorY(0.6071428656578064f, -1.7763568394002505E-15f), decodeX(2.0952382f), decodeY(0.60714287f));
+        path.lineTo(decodeX(0.8333334f), decodeY(0.6130952f));
+        path.curveTo(decodeAnchorX(0.8333333730697632f, -1.0f), decodeAnchorY(0.613095223903656f, 0.0f), decodeAnchorX(0.625f, 0.04166666666666696f), decodeAnchorY(0.8690476417541504f, -0.9583333333333339f), decodeX(0.625f), decodeY(0.86904764f));
+        path.lineTo(decodeX(0.6130952f), decodeY(2.2361114f));
+        path.lineTo(decodeX(1.4638889f), decodeY(2.25f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath12() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.71428573f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(0.7142857313156128f, -3.0f), decodeAnchorX(0.5555555820465088f, -3.0f), decodeAnchorY(0.0f, 0.0f), decodeX(0.5555556f), decodeY(0.0f));
+        path.curveTo(decodeAnchorX(0.5555555820465088f, 3.0f), decodeAnchorY(0.0f, 0.0f), decodeAnchorX(2.444444417953491f, -3.0f), decodeAnchorY(0.0f, 0.0f), decodeX(2.4444444f), decodeY(0.0f));
+        path.curveTo(decodeAnchorX(2.444444417953491f, 3.0f), decodeAnchorY(0.0f, 0.0f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(0.7142857313156128f, -3.0f), decodeX(3.0f), decodeY(0.71428573f));
+        path.curveTo(decodeAnchorX(3.0f, 0.0f), decodeAnchorY(0.7142857313156128f, 3.0f), decodeAnchorX(3.0f, 0.0f), decodeAnchorY(3.0f, 0.0f), decodeX(3.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.curveTo(decodeAnchorX(0.0f, 0.0f), decodeAnchorY(3.0f, 0.0f), decodeAnchorX(0.0f, 0.0f), decodeAnchorY(0.7142857313156128f, 3.0f), decodeX(0.0f), decodeY(0.71428573f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath13() {
+        path.reset();
+        path.moveTo(decodeX(0.11111111f), decodeY(3.0f));
+        path.curveTo(decodeAnchorX(0.1111111119389534f, 0.0f), decodeAnchorY(3.0f, 0.0f), decodeAnchorX(0.1111111119389534f, 0.0f), decodeAnchorY(0.8571428656578064f, 3.5555555555555536f), decodeX(0.11111111f), decodeY(0.85714287f));
+        path.curveTo(decodeAnchorX(0.1111111119389534f, 0.0f), decodeAnchorY(0.8571428656578064f, -3.5555555555555536f), decodeAnchorX(0.6666666865348816f, -3.444444444444443f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeX(0.6666667f), decodeY(0.14285715f));
+        path.curveTo(decodeAnchorX(0.6666666865348816f, 3.444444444444443f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeAnchorX(2.3333332538604736f, -3.333333333333343f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeX(2.3333333f), decodeY(0.14285715f));
+        path.curveTo(decodeAnchorX(2.3333332538604736f, 3.333333333333343f), decodeAnchorY(0.1428571492433548f, 0.0f), decodeAnchorX(2.8888888359069824f, 0.0f), decodeAnchorY(0.8571428656578064f, -3.277777777777777f), decodeX(2.8888888f), decodeY(0.85714287f));
+        path.curveTo(decodeAnchorX(2.8888888359069824f, 0.0f), decodeAnchorY(0.8571428656578064f, 3.277777777777777f), decodeAnchorX(2.8888888359069824f, 0.0f), decodeAnchorY(3.0f, 0.0f), decodeX(2.8888888f), decodeY(3.0f));
+        path.lineTo(decodeX(0.11111111f), decodeY(3.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath14() {
+        path.reset();
+        path.moveTo(decodeX(1.4583333f), decodeY(2.25f));
+        path.lineTo(decodeX(1.4599359f), decodeY(2.777778f));
+        path.lineTo(decodeX(0.2962963f), decodeY(2.777778f));
+        path.lineTo(decodeX(0.29166666f), decodeY(0.88095236f));
+        path.curveTo(decodeAnchorX(0.2916666567325592f, 0.0f), decodeAnchorY(0.8809523582458496f, -2.2500000000000004f), decodeAnchorX(0.6574074029922485f, -1.9166666666666647f), decodeAnchorY(0.380952388048172f, 0.0f), decodeX(0.6574074f), decodeY(0.3809524f));
+        path.lineTo(decodeX(2.3009257f), decodeY(0.3809524f));
+        path.curveTo(decodeAnchorX(2.3009257316589355f, 2.124999999999986f), decodeAnchorY(0.380952388048172f, 0.0f), decodeAnchorX(2.712963104248047f, 0.0f), decodeAnchorY(0.863095223903656f, -2.5833333333333317f), decodeX(2.712963f), decodeY(0.8630952f));
+        path.lineTo(decodeX(2.7083333f), decodeY(2.7638886f));
+        path.lineTo(decodeX(1.4615384f), decodeY(2.777778f));
+        path.lineTo(decodeX(1.4583333f), decodeY(2.2361114f));
+        path.lineTo(decodeX(2.523148f), decodeY(2.222222f));
+        path.lineTo(decodeX(2.5138888f), decodeY(0.86904764f));
+        path.curveTo(decodeAnchorX(2.5138888359069824f, -7.105427357601002E-15f), decodeAnchorY(0.8690476417541504f, -0.9166666666666679f), decodeAnchorX(2.2962963581085205f, 1.0833333333333357f), decodeAnchorY(0.6071428656578064f, -1.7763568394002505E-15f), decodeX(2.2962964f), decodeY(0.60714287f));
+        path.lineTo(decodeX(0.6481482f), decodeY(0.6130952f));
+        path.curveTo(decodeAnchorX(0.6481481790542603f, -1.0f), decodeAnchorY(0.613095223903656f, 0.0f), decodeAnchorX(0.4861111044883728f, 0.04166666666666696f), decodeAnchorY(0.8690476417541504f, -0.9583333333333339f), decodeX(0.4861111f), decodeY(0.86904764f));
+        path.lineTo(decodeX(0.47685182f), decodeY(2.2361114f));
+        path.lineTo(decodeX(1.4583333f), decodeY(2.25f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.1f,0.2f,0.6f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color6,
+                            decodeColor(color6,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.1f,0.2f,0.6f,1.0f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8,
+                            decodeColor(color8,color9,0.5f),
+                            color9});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color10,
+                            decodeColor(color10,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.1f,0.2f,0.42096776f,0.64193547f,0.82096773f,1.0f },
+                new Color[] { color11,
+                            decodeColor(color11,color12,0.5f),
+                            color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.1f,0.2f,0.6f,1.0f },
+                new Color[] { color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18,
+                            decodeColor(color18,color5,0.5f),
+                            color5});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.12419355f,0.2483871f,0.42580646f,0.6032258f,0.6854839f,0.7677419f,0.88387096f,1.0f },
+                new Color[] { color19,
+                            decodeColor(color19,color20,0.5f),
+                            color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22,
+                            decodeColor(color22,color23,0.5f),
+                            color23});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color24,
+                            decodeColor(color24,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient11(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color25,
+                            decodeColor(color25,color2,0.5f),
+                            color2});
+    }
+
+    private Paint decodeGradient12(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.12419355f,0.2483871f,0.42580646f,0.6032258f,0.6854839f,0.7677419f,0.86774194f,0.9677419f },
+                new Color[] { color26,
+                            decodeColor(color26,color27,0.5f),
+                            color27,
+                            decodeColor(color27,color28,0.5f),
+                            color28,
+                            decodeColor(color28,color29,0.5f),
+                            color29,
+                            decodeColor(color29,color30,0.5f),
+                            color30});
+    }
+
+    private Paint decodeGradient13(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color25,
+                            decodeColor(color25,color31,0.5f),
+                            color31});
+    }
+
+    private Paint decodeGradient14(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.12419355f,0.2483871f,0.42580646f,0.6032258f,0.6854839f,0.7677419f,0.8548387f,0.9419355f },
+                new Color[] { color32,
+                            decodeColor(color32,color33,0.5f),
+                            color33,
+                            decodeColor(color33,color34,0.5f),
+                            color34,
+                            decodeColor(color34,color35,0.5f),
+                            color35,
+                            decodeColor(color35,color36,0.5f),
+                            color36});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TableEditorPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class TableEditorPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of TableEditorPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_ENABLED_FOCUSED = 3;
+    static final int BACKGROUND_SELECTED = 4;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of TableEditorPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusLightBackground", 0.0f, 0.0f, 0.0f, 0);
+    private Color color2 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public TableEditorPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_ENABLED_FOCUSED: paintBackgroundEnabledAndFocused(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabledAndFocused(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color2);
+        g.fill(path);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(3.0f), decodeY(3.0f));
+        path.lineTo(decodeX(3.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.24000001f), decodeY(0.0f));
+        path.lineTo(decodeX(0.24000001f), decodeY(0.24000001f));
+        path.lineTo(decodeX(2.7600007f), decodeY(0.24000001f));
+        path.lineTo(decodeX(2.7600007f), decodeY(2.7599998f));
+        path.lineTo(decodeX(0.24000001f), decodeY(2.7599998f));
+        path.lineTo(decodeX(0.24000001f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TableHeaderPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class TableHeaderPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of TableHeaderPainter to determine which region/state is being painted
+    //by that instance.
+    static final int ASCENDINGSORTICON_ENABLED = 1;
+    static final int DESCENDINGSORTICON_ENABLED = 2;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of TableHeaderPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBase", 0.0057927966f, -0.21904764f, 0.15686274f, 0);
+    private Color color2 = decodeColor("nimbusBase", 0.0038565993f, 0.02012986f, 0.054901958f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public TableHeaderPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case ASCENDINGSORTICON_ENABLED: paintascendingSortIconEnabled(g); break;
+            case DESCENDINGSORTICON_ENABLED: paintdescendingSortIconEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintascendingSortIconEnabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+
+    }
+
+    private void paintdescendingSortIconEnabled(Graphics2D g) {
+        path = decodePath2();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(2.0f));
+        path.lineTo(decodeX(1.7070175f), decodeY(0.0f));
+        path.lineTo(decodeX(3.0f), decodeY(2.0f));
+        path.lineTo(decodeX(1.0f), decodeY(2.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(1.0f), decodeY(1.0f));
+        path.lineTo(decodeX(2.0f), decodeY(1.0f));
+        path.lineTo(decodeX(1.5025063f), decodeY(2.0f));
+        path.lineTo(decodeX(1.0f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color1,
+                            decodeColor(color1,color2,0.5f),
+                            color2});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,380 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class TableHeaderTableHeaderRendererPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of TableHeaderTableHeaderRendererPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_ENABLED_FOCUSED = 3;
+    static final int BACKGROUND_MOUSEOVER = 4;
+    static final int BACKGROUND_PRESSED = 5;
+    static final int BACKGROUND_ENABLED_SORTED = 6;
+    static final int BACKGROUND_ENABLED_FOCUSED_SORTED = 7;
+    static final int BACKGROUND_DISABLED_SORTED = 8;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of TableHeaderTableHeaderRendererPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBorder", -0.013888836f, 5.823001E-4f, -0.12941176f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", -0.01111114f, -0.08625447f, 0.062745094f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", -0.013888836f, -0.028334536f, -0.17254901f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", -0.013888836f, -0.029445238f, -0.16470587f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", -0.02020204f, -0.053531498f, 0.011764705f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10655806f, 0.24313724f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", 0.0f, -0.08455229f, 0.1607843f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.0f, -0.07016757f, 0.12941176f, 0);
+    private Color color9 = decodeColor("nimbusBlueGrey", 0.0f, -0.07466974f, 0.23921567f, 0);
+    private Color color10 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10658931f, 0.25098038f, 0);
+    private Color color12 = decodeColor("nimbusBlueGrey", 0.0f, -0.08613607f, 0.21960783f, 0);
+    private Color color13 = decodeColor("nimbusBlueGrey", 0.0f, -0.07333623f, 0.20392156f, 0);
+    private Color color14 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color15 = decodeColor("nimbusBlueGrey", -0.00505054f, -0.05960039f, 0.10196078f, 0);
+    private Color color16 = decodeColor("nimbusBlueGrey", 0.0f, -0.017742813f, 0.015686274f, 0);
+    private Color color17 = decodeColor("nimbusBlueGrey", -0.0027777553f, -0.0018306673f, -0.02352941f, 0);
+    private Color color18 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.020436227f, 0.12549019f, 0);
+    private Color color19 = decodeColor("nimbusBase", -0.023096085f, -0.62376213f, 0.4352941f, 0);
+    private Color color20 = decodeColor("nimbusBase", -0.0012707114f, -0.50901747f, 0.31764704f, 0);
+    private Color color21 = decodeColor("nimbusBase", -0.002461195f, -0.47139505f, 0.2862745f, 0);
+    private Color color22 = decodeColor("nimbusBase", -0.0051222444f, -0.49103343f, 0.372549f, 0);
+    private Color color23 = decodeColor("nimbusBase", -8.738637E-4f, -0.49872798f, 0.3098039f, 0);
+    private Color color24 = decodeColor("nimbusBase", -2.2029877E-4f, -0.4916465f, 0.37647057f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public TableHeaderTableHeaderRendererPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_ENABLED_FOCUSED: paintBackgroundEnabledAndFocused(g); break;
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_PRESSED: paintBackgroundPressed(g); break;
+            case BACKGROUND_ENABLED_SORTED: paintBackgroundEnabledAndSorted(g); break;
+            case BACKGROUND_ENABLED_FOCUSED_SORTED: paintBackgroundEnabledAndFocusedAndSorted(g); break;
+            case BACKGROUND_DISABLED_SORTED: paintBackgroundDisabledAndSorted(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabledAndFocused(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color10);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient3(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundPressed(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabledAndSorted(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient5(rect));
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabledAndFocusedAndSorted(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient6(rect));
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color10);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundDisabledAndSorted(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(2.8f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(3.0f) - decodeY(2.8f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(2.8f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(2.8f), //width
+                         decodeY(2.8f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(2.8f) - decodeX(0.0f), //width
+                         decodeY(2.8f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(3.0f), decodeY(3.0f));
+        path.lineTo(decodeX(3.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.24000001f), decodeY(0.0f));
+        path.lineTo(decodeX(0.24000001f), decodeY(0.24000001f));
+        path.lineTo(decodeX(2.7599998f), decodeY(0.24000001f));
+        path.lineTo(decodeX(2.7599998f), decodeY(2.7599998f));
+        path.lineTo(decodeX(0.24000001f), decodeY(2.7599998f));
+        path.lineTo(decodeX(0.24000001f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.14441223f,0.43703705f,0.59444445f,0.75185186f,0.8759259f,1.0f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.07147767f,0.2888889f,0.5490909f,0.7037037f,0.8518518f,1.0f },
+                new Color[] { color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8,
+                            decodeColor(color8,color9,0.5f),
+                            color9});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.07147767f,0.2888889f,0.5490909f,0.7037037f,0.7919203f,0.88013697f },
+                new Color[] { color11,
+                            decodeColor(color11,color12,0.5f),
+                            color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.07147767f,0.2888889f,0.5490909f,0.7037037f,0.8518518f,1.0f },
+                new Color[] { color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16,
+                            decodeColor(color16,color17,0.5f),
+                            color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.08049711f,0.32534248f,0.56267816f,0.7037037f,0.83986557f,0.97602737f },
+                new Color[] { color19,
+                            decodeColor(color19,color20,0.5f),
+                            color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.07147767f,0.2888889f,0.5490909f,0.7037037f,0.8518518f,1.0f },
+                new Color[] { color19,
+                            decodeColor(color19,color23,0.5f),
+                            color23,
+                            decodeColor(color23,color21,0.5f),
+                            color21,
+                            decodeColor(color21,color24,0.5f),
+                            color24});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererSortedState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class TableHeaderTableHeaderRendererSortedState extends State {
+    TableHeaderTableHeaderRendererSortedState() {
+        super("Sorted");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                    String sortOrder = (String)c.getClientProperty("Table.sortOrder");
+                    return  sortOrder != null && ("ASCENDING".equals(sortOrder) || "DESCENDING".equals(sortOrder)); 
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TextAreaNotInScrollPaneState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class TextAreaNotInScrollPaneState extends State {
+    TextAreaNotInScrollPaneState() {
+        super("NotInScrollPane");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+                          return !(c.getParent() instanceof javax.swing.JViewport);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TextAreaPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,411 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class TextAreaPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of TextAreaPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_DISABLED_NOTINSCROLLPANE = 3;
+    static final int BACKGROUND_ENABLED_NOTINSCROLLPANE = 4;
+    static final int BACKGROUND_SELECTED = 5;
+    static final int BORDER_DISABLED_NOTINSCROLLPANE = 6;
+    static final int BORDER_FOCUSED_NOTINSCROLLPANE = 7;
+    static final int BORDER_ENABLED_NOTINSCROLLPANE = 8;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of TextAreaPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.015872955f, -0.07995863f, 0.15294117f, 0);
+    private Color color2 = decodeColor("nimbusLightBackground", 0.0f, 0.0f, 0.0f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", -0.006944418f, -0.07187897f, 0.06666666f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07826825f, 0.10588235f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07856284f, 0.11372548f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07796818f, 0.09803921f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.0965403f, -0.18431371f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.1048766f, -0.05098039f, 0);
+    private Color color9 = decodeColor("nimbusLightBackground", 0.6666667f, 0.004901961f, -0.19999999f, 0);
+    private Color color10 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10512091f, -0.019607842f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.105344966f, 0.011764705f, 0);
+    private Color color12 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public TextAreaPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_DISABLED_NOTINSCROLLPANE: paintBackgroundDisabledAndNotInScrollPane(g); break;
+            case BACKGROUND_ENABLED_NOTINSCROLLPANE: paintBackgroundEnabledAndNotInScrollPane(g); break;
+            case BACKGROUND_SELECTED: paintBackgroundSelected(g); break;
+            case BORDER_DISABLED_NOTINSCROLLPANE: paintBorderDisabledAndNotInScrollPane(g); break;
+            case BORDER_FOCUSED_NOTINSCROLLPANE: paintBorderFocusedAndNotInScrollPane(g); break;
+            case BORDER_ENABLED_NOTINSCROLLPANE: paintBorderEnabledAndNotInScrollPane(g); break;
+
+        }
+    }
+        
+    protected Object[] getExtendedCacheKeys(JComponent c) {
+        Object[] extendedCacheKeys = null;
+        switch(state) {
+            case BACKGROUND_ENABLED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)};
+                break;
+            case BACKGROUND_ENABLED_NOTINSCROLLPANE:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)};
+                break;
+            case BORDER_FOCUSED_NOTINSCROLLPANE:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color9, 0.004901961f, -0.19999999f, 0),
+                     getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)};
+                break;
+            case BORDER_ENABLED_NOTINSCROLLPANE:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color9, 0.004901961f, -0.19999999f, 0),
+                     getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)};
+                break;
+        }
+        return extendedCacheKeys;
+    }
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint((Color)componentColors[0]);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundDisabledAndNotInScrollPane(Graphics2D g) {
+        rect = decodeRect2();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabledAndNotInScrollPane(Graphics2D g) {
+        rect = decodeRect2();
+        g.setPaint((Color)componentColors[0]);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundSelected(Graphics2D g) {
+        rect = decodeRect2();
+        g.setPaint(color2);
+        g.fill(rect);
+
+    }
+
+    private void paintBorderDisabledAndNotInScrollPane(Graphics2D g) {
+        rect = decodeRect3();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color6);
+        g.fill(rect);
+        rect = decodeRect6();
+        g.setPaint(color4);
+        g.fill(rect);
+        rect = decodeRect7();
+        g.setPaint(color4);
+        g.fill(rect);
+
+    }
+
+    private void paintBorderFocusedAndNotInScrollPane(Graphics2D g) {
+        rect = decodeRect8();
+        g.setPaint(decodeGradient3(rect));
+        g.fill(rect);
+        rect = decodeRect9();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect11();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect12();
+        g.setPaint(color11);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color12);
+        g.fill(path);
+
+    }
+
+    private void paintBorderEnabledAndNotInScrollPane(Graphics2D g) {
+        rect = decodeRect8();
+        g.setPaint(decodeGradient5(rect));
+        g.fill(rect);
+        rect = decodeRect9();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect11();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect12();
+        g.setPaint(color11);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.3333333f) - decodeX(0.6666667f), //width
+                         decodeY(1.0f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(1.0f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect5() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(1.0f), //y
+                         decodeX(1.0f) - decodeX(0.6666667f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect6() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(2.3333333f), //y
+                         decodeX(2.3333333f) - decodeX(0.6666667f), //width
+                         decodeY(2.0f) - decodeY(2.3333333f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect7() {
+            rect.setRect(decodeX(2.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.3333333f) - decodeX(2.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect8() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(1.0f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect9() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.4f) - decodeX(0.6f), //width
+                         decodeY(1.0f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect10() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(1.0f), //y
+                         decodeX(0.6f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect11() {
+            rect.setRect(decodeX(2.4f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.6f) - decodeX(2.4f), //width
+                         decodeY(2.6f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect12() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(2.4f), //y
+                         decodeX(2.4f) - decodeX(0.6f), //width
+                         decodeY(2.6f) - decodeY(2.4f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.4f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(0.4f));
+        path.curveTo(decodeAnchorX(2.5999999046325684f, 0.0f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeAnchorX(2.880000352859497f, 0.09999999999999432f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeX(2.8800004f), decodeY(0.4f));
+        path.curveTo(decodeAnchorX(2.880000352859497f, 0.09999999999999432f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeAnchorX(2.880000352859497f, 0.0f), decodeAnchorY(2.879999876022339f, 0.0f), decodeX(2.8800004f), decodeY(2.8799999f));
+        path.lineTo(decodeX(0.120000005f), decodeY(2.8799999f));
+        path.lineTo(decodeX(0.120000005f), decodeY(0.120000005f));
+        path.lineTo(decodeX(2.8800004f), decodeY(0.120000005f));
+        path.lineTo(decodeX(2.8800004f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(0.4f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color5,
+                            decodeColor(color5,color1,0.5f),
+                            color1});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (0.1625f * h) + y,
+                new float[] { 0.1f,0.49999997f,0.9f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.1f,0.49999997f,0.9f },
+                new Color[] { (Color)componentColors[0],
+                            decodeColor((Color)componentColors[0],(Color)componentColors[1],0.5f),
+                            (Color)componentColors[1]});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.1f,0.49999997f,0.9f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TextFieldPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,381 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class TextFieldPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of TextFieldPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_SELECTED = 3;
+    static final int BORDER_DISABLED = 4;
+    static final int BORDER_FOCUSED = 5;
+    static final int BORDER_ENABLED = 6;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of TextFieldPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.015872955f, -0.07995863f, 0.15294117f, 0);
+    private Color color2 = decodeColor("nimbusLightBackground", 0.0f, 0.0f, 0.0f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", -0.006944418f, -0.07187897f, 0.06666666f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07826825f, 0.10588235f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07856284f, 0.11372548f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07796818f, 0.09803921f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.0965403f, -0.18431371f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.1048766f, -0.05098039f, 0);
+    private Color color9 = decodeColor("nimbusLightBackground", 0.6666667f, 0.004901961f, -0.19999999f, 0);
+    private Color color10 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10512091f, -0.019607842f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.105344966f, 0.011764705f, 0);
+    private Color color12 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public TextFieldPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_SELECTED: paintBackgroundSelected(g); break;
+            case BORDER_DISABLED: paintBorderDisabled(g); break;
+            case BORDER_FOCUSED: paintBorderFocused(g); break;
+            case BORDER_ENABLED: paintBorderEnabled(g); break;
+
+        }
+    }
+        
+    protected Object[] getExtendedCacheKeys(JComponent c) {
+        Object[] extendedCacheKeys = null;
+        switch(state) {
+            case BACKGROUND_ENABLED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)};
+                break;
+            case BORDER_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color9, 0.004901961f, -0.19999999f, 0),
+                     getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)};
+                break;
+            case BORDER_ENABLED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color9, 0.004901961f, -0.19999999f, 0),
+                     getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)};
+                break;
+        }
+        return extendedCacheKeys;
+    }
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint((Color)componentColors[0]);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundSelected(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color2);
+        g.fill(rect);
+
+    }
+
+    private void paintBorderDisabled(Graphics2D g) {
+        rect = decodeRect2();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(decodeGradient2(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color6);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color4);
+        g.fill(rect);
+        rect = decodeRect6();
+        g.setPaint(color4);
+        g.fill(rect);
+
+    }
+
+    private void paintBorderFocused(Graphics2D g) {
+        rect = decodeRect7();
+        g.setPaint(decodeGradient3(rect));
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect9();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect11();
+        g.setPaint(color11);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color12);
+        g.fill(path);
+
+    }
+
+    private void paintBorderEnabled(Graphics2D g) {
+        rect = decodeRect7();
+        g.setPaint(decodeGradient5(rect));
+        g.fill(rect);
+        rect = decodeRect8();
+        g.setPaint(decodeGradient4(rect));
+        g.fill(rect);
+        rect = decodeRect9();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect10();
+        g.setPaint(color10);
+        g.fill(rect);
+        rect = decodeRect11();
+        g.setPaint(color11);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.3333333f) - decodeX(0.6666667f), //width
+                         decodeY(1.0f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(1.0f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(1.0f), //y
+                         decodeX(1.0f) - decodeX(0.6666667f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect5() {
+            rect.setRect(decodeX(0.6666667f), //x
+                         decodeY(2.3333333f), //y
+                         decodeX(2.3333333f) - decodeX(0.6666667f), //width
+                         decodeY(2.0f) - decodeY(2.3333333f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect6() {
+            rect.setRect(decodeX(2.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.3333333f) - decodeX(2.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect7() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(0.4f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(1.0f) - decodeY(0.4f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect8() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.4f) - decodeX(0.6f), //width
+                         decodeY(1.0f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect9() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(1.0f), //y
+                         decodeX(0.6f) - decodeX(0.4f), //width
+                         decodeY(2.6f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect10() {
+            rect.setRect(decodeX(2.4f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.6f) - decodeX(2.4f), //width
+                         decodeY(2.6f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect11() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(2.4f), //y
+                         decodeX(2.4f) - decodeX(0.6f), //width
+                         decodeY(2.6f) - decodeY(2.4f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.4f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(0.4f));
+        path.curveTo(decodeAnchorX(2.5999999046325684f, 0.0f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeAnchorX(2.880000352859497f, 0.09999999999999432f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeX(2.8800004f), decodeY(0.4f));
+        path.curveTo(decodeAnchorX(2.880000352859497f, 0.09999999999999432f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeAnchorX(2.880000352859497f, 0.0f), decodeAnchorY(2.879999876022339f, 0.0f), decodeX(2.8800004f), decodeY(2.8799999f));
+        path.lineTo(decodeX(0.120000005f), decodeY(2.8799999f));
+        path.lineTo(decodeX(0.120000005f), decodeY(0.120000005f));
+        path.lineTo(decodeX(2.8800004f), decodeY(0.120000005f));
+        path.lineTo(decodeX(2.8800004f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(0.4f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color5,
+                            decodeColor(color5,color1,0.5f),
+                            color1});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (0.1625f * h) + y,
+                new float[] { 0.1f,0.49999997f,0.9f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.1f,0.49999997f,0.9f },
+                new Color[] { (Color)componentColors[0],
+                            decodeColor((Color)componentColors[0],(Color)componentColors[1],0.5f),
+                            (Color)componentColors[1]});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.1f,0.49999997f,0.9f },
+                new Color[] { color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TextPanePainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class TextPanePainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of TextPanePainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_SELECTED = 3;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of TextPanePainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.015872955f, -0.07995863f, 0.15294117f, 0);
+    private Color color2 = decodeColor("nimbusLightBackground", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public TextPanePainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_SELECTED: paintBackgroundSelected(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color2);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundSelected(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color2);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ToggleButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,705 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ToggleButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ToggleButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_FOCUSED = 3;
+    static final int BACKGROUND_MOUSEOVER = 4;
+    static final int BACKGROUND_MOUSEOVER_FOCUSED = 5;
+    static final int BACKGROUND_PRESSED = 6;
+    static final int BACKGROUND_PRESSED_FOCUSED = 7;
+    static final int BACKGROUND_SELECTED = 8;
+    static final int BACKGROUND_SELECTED_FOCUSED = 9;
+    static final int BACKGROUND_PRESSED_SELECTED = 10;
+    static final int BACKGROUND_PRESSED_SELECTED_FOCUSED = 11;
+    static final int BACKGROUND_MOUSEOVER_SELECTED = 12;
+    static final int BACKGROUND_MOUSEOVER_SELECTED_FOCUSED = 13;
+    static final int BACKGROUND_DISABLED_SELECTED = 14;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ToggleButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.06885965f, -0.36862746f, -232);
+    private Color color2 = decodeColor("nimbusBlueGrey", 0.0f, -0.06766917f, 0.07843137f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.0f, -0.06484103f, 0.027450979f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.0f, -0.08477524f, 0.16862744f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", -0.015872955f, -0.080091536f, 0.15686274f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.0f, -0.07016757f, 0.12941176f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", 0.0f, -0.07052632f, 0.1372549f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.0f, -0.070878744f, 0.14509803f, 0);
+    private Color color9 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.06885965f, -0.36862746f, -190);
+    private Color color10 = decodeColor("nimbusBlueGrey", -0.055555522f, -0.05356429f, -0.12549019f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", 0.0f, -0.0147816315f, -0.3764706f, 0);
+    private Color color12 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10655806f, 0.24313724f, 0);
+    private Color color13 = decodeColor("nimbusBlueGrey", 0.0f, -0.09823123f, 0.2117647f, 0);
+    private Color color14 = decodeColor("nimbusBlueGrey", 0.0f, -0.0749532f, 0.24705881f, 0);
+    private Color color15 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color16 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color17 = decodeColor("nimbusBlueGrey", 0.0f, -0.020974077f, -0.21960783f, 0);
+    private Color color18 = decodeColor("nimbusBlueGrey", 0.0f, 0.11169591f, -0.53333336f, 0);
+    private Color color19 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10658931f, 0.25098038f, 0);
+    private Color color20 = decodeColor("nimbusBlueGrey", 0.0f, -0.098526314f, 0.2352941f, 0);
+    private Color color21 = decodeColor("nimbusBlueGrey", 0.0f, -0.07333623f, 0.20392156f, 0);
+    private Color color22 = new Color(245, 250, 255, 160);
+    private Color color23 = decodeColor("nimbusBlueGrey", 0.055555582f, 0.8894737f, -0.7176471f, 0);
+    private Color color24 = decodeColor("nimbusBlueGrey", 0.0f, 5.847961E-4f, -0.32156864f, 0);
+    private Color color25 = decodeColor("nimbusBlueGrey", -0.00505054f, -0.05960039f, 0.10196078f, 0);
+    private Color color26 = decodeColor("nimbusBlueGrey", -0.008547008f, -0.04772438f, 0.06666666f, 0);
+    private Color color27 = decodeColor("nimbusBlueGrey", -0.0027777553f, -0.0018306673f, -0.02352941f, 0);
+    private Color color28 = decodeColor("nimbusBlueGrey", -0.0027777553f, -0.0212406f, 0.13333333f, 0);
+    private Color color29 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.030845039f, 0.23921567f, 0);
+    private Color color30 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -86);
+    private Color color31 = decodeColor("nimbusBlueGrey", 0.0f, -0.06472479f, -0.23137254f, 0);
+    private Color color32 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.06959064f, -0.0745098f, 0);
+    private Color color33 = decodeColor("nimbusBlueGrey", 0.0138888955f, -0.06401469f, -0.07058823f, 0);
+    private Color color34 = decodeColor("nimbusBlueGrey", 0.0f, -0.06530018f, 0.035294116f, 0);
+    private Color color35 = decodeColor("nimbusBlueGrey", 0.0f, -0.06507177f, 0.031372547f, 0);
+    private Color color36 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.05338346f, -0.47058824f, 0);
+    private Color color37 = decodeColor("nimbusBlueGrey", 0.0f, -0.049301825f, -0.36078432f, 0);
+    private Color color38 = decodeColor("nimbusBlueGrey", -0.018518567f, -0.03909774f, -0.2509804f, 0);
+    private Color color39 = decodeColor("nimbusBlueGrey", -0.00505054f, -0.040013492f, -0.13333333f, 0);
+    private Color color40 = decodeColor("nimbusBlueGrey", 0.01010108f, -0.039558575f, -0.1372549f, 0);
+    private Color color41 = decodeColor("nimbusBlueGrey", -0.01111114f, -0.060526315f, -0.3529412f, 0);
+    private Color color42 = decodeColor("nimbusBlueGrey", 0.0f, -0.064372465f, -0.2352941f, 0);
+    private Color color43 = decodeColor("nimbusBlueGrey", -0.006944418f, -0.0595709f, -0.12941176f, 0);
+    private Color color44 = decodeColor("nimbusBlueGrey", 0.0f, -0.061075766f, -0.031372547f, 0);
+    private Color color45 = decodeColor("nimbusBlueGrey", 0.0f, -0.06080256f, -0.035294116f, 0);
+    private Color color46 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -220);
+    private Color color47 = decodeColor("nimbusBlueGrey", 0.0f, -0.066408664f, 0.054901958f, 0);
+    private Color color48 = decodeColor("nimbusBlueGrey", 0.0f, -0.06807348f, 0.086274505f, 0);
+    private Color color49 = decodeColor("nimbusBlueGrey", 0.0f, -0.06924191f, 0.109803915f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ToggleButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break;
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_FOCUSED: paintBackgroundFocused(g); break;
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_MOUSEOVER_FOCUSED: paintBackgroundMouseOverAndFocused(g); break;
+            case BACKGROUND_PRESSED: paintBackgroundPressed(g); break;
+            case BACKGROUND_PRESSED_FOCUSED: paintBackgroundPressedAndFocused(g); break;
+            case BACKGROUND_SELECTED: paintBackgroundSelected(g); break;
+            case BACKGROUND_SELECTED_FOCUSED: paintBackgroundSelectedAndFocused(g); break;
+            case BACKGROUND_PRESSED_SELECTED: paintBackgroundPressedAndSelected(g); break;
+            case BACKGROUND_PRESSED_SELECTED_FOCUSED: paintBackgroundPressedAndSelectedAndFocused(g); break;
+            case BACKGROUND_MOUSEOVER_SELECTED: paintBackgroundMouseOverAndSelected(g); break;
+            case BACKGROUND_MOUSEOVER_SELECTED_FOCUSED: paintBackgroundMouseOverAndSelectedAndFocused(g); break;
+            case BACKGROUND_DISABLED_SELECTED: paintBackgroundDisabledAndSelected(g); break;
+
+        }
+    }
+        
+    protected Object[] getExtendedCacheKeys(JComponent c) {
+        Object[] extendedCacheKeys = null;
+        switch(state) {
+            case BACKGROUND_ENABLED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color12, -0.10655806f, 0.24313724f, 0),
+                     getComponentColor(c, "background", color13, -0.09823123f, 0.2117647f, 0),
+                     getComponentColor(c, "background", color6, -0.07016757f, 0.12941176f, 0),
+                     getComponentColor(c, "background", color14, -0.0749532f, 0.24705881f, 0),
+                     getComponentColor(c, "background", color15, -0.110526316f, 0.25490195f, 0)};
+                break;
+            case BACKGROUND_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color12, -0.10655806f, 0.24313724f, 0),
+                     getComponentColor(c, "background", color13, -0.09823123f, 0.2117647f, 0),
+                     getComponentColor(c, "background", color6, -0.07016757f, 0.12941176f, 0),
+                     getComponentColor(c, "background", color14, -0.0749532f, 0.24705881f, 0),
+                     getComponentColor(c, "background", color15, -0.110526316f, 0.25490195f, 0)};
+                break;
+            case BACKGROUND_MOUSEOVER:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color19, -0.10658931f, 0.25098038f, 0),
+                     getComponentColor(c, "background", color20, -0.098526314f, 0.2352941f, 0),
+                     getComponentColor(c, "background", color21, -0.07333623f, 0.20392156f, 0),
+                     getComponentColor(c, "background", color15, -0.110526316f, 0.25490195f, 0)};
+                break;
+            case BACKGROUND_MOUSEOVER_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color19, -0.10658931f, 0.25098038f, 0),
+                     getComponentColor(c, "background", color20, -0.098526314f, 0.2352941f, 0),
+                     getComponentColor(c, "background", color21, -0.07333623f, 0.20392156f, 0),
+                     getComponentColor(c, "background", color15, -0.110526316f, 0.25490195f, 0)};
+                break;
+            case BACKGROUND_PRESSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color25, -0.05960039f, 0.10196078f, 0),
+                     getComponentColor(c, "background", color26, -0.04772438f, 0.06666666f, 0),
+                     getComponentColor(c, "background", color27, -0.0018306673f, -0.02352941f, 0),
+                     getComponentColor(c, "background", color28, -0.0212406f, 0.13333333f, 0),
+                     getComponentColor(c, "background", color29, -0.030845039f, 0.23921567f, 0)};
+                break;
+            case BACKGROUND_PRESSED_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color25, -0.05960039f, 0.10196078f, 0),
+                     getComponentColor(c, "background", color26, -0.04772438f, 0.06666666f, 0),
+                     getComponentColor(c, "background", color27, -0.0018306673f, -0.02352941f, 0),
+                     getComponentColor(c, "background", color28, -0.0212406f, 0.13333333f, 0),
+                     getComponentColor(c, "background", color29, -0.030845039f, 0.23921567f, 0)};
+                break;
+            case BACKGROUND_SELECTED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color33, -0.06401469f, -0.07058823f, 0),
+                     getComponentColor(c, "background", color34, -0.06530018f, 0.035294116f, 0),
+                     getComponentColor(c, "background", color35, -0.06507177f, 0.031372547f, 0)};
+                break;
+            case BACKGROUND_SELECTED_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color33, -0.06401469f, -0.07058823f, 0),
+                     getComponentColor(c, "background", color34, -0.06530018f, 0.035294116f, 0),
+                     getComponentColor(c, "background", color35, -0.06507177f, 0.031372547f, 0)};
+                break;
+            case BACKGROUND_PRESSED_SELECTED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color38, -0.03909774f, -0.2509804f, 0),
+                     getComponentColor(c, "background", color39, -0.040013492f, -0.13333333f, 0),
+                     getComponentColor(c, "background", color40, -0.039558575f, -0.1372549f, 0)};
+                break;
+            case BACKGROUND_PRESSED_SELECTED_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color38, -0.03909774f, -0.2509804f, 0),
+                     getComponentColor(c, "background", color39, -0.040013492f, -0.13333333f, 0),
+                     getComponentColor(c, "background", color40, -0.039558575f, -0.1372549f, 0)};
+                break;
+            case BACKGROUND_MOUSEOVER_SELECTED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color43, -0.0595709f, -0.12941176f, 0),
+                     getComponentColor(c, "background", color44, -0.061075766f, -0.031372547f, 0),
+                     getComponentColor(c, "background", color45, -0.06080256f, -0.035294116f, 0)};
+                break;
+            case BACKGROUND_MOUSEOVER_SELECTED_FOCUSED:
+                extendedCacheKeys = new Object[] {
+                     getComponentColor(c, "background", color43, -0.0595709f, -0.12941176f, 0),
+                     getComponentColor(c, "background", color44, -0.061075766f, -0.031372547f, 0),
+                     getComponentColor(c, "background", color45, -0.06080256f, -0.035294116f, 0)};
+                break;
+        }
+        return extendedCacheKeys;
+    }
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundDisabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color9);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color16);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color9);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundMouseOverAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color16);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressed(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color22);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color16);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundSelected(Graphics2D g) {
+        roundRect = decodeRoundRect5();
+        g.setPaint(color30);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient9(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundSelectedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect6();
+        g.setPaint(color16);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient9(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressedAndSelected(Graphics2D g) {
+        roundRect = decodeRoundRect5();
+        g.setPaint(color30);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient11(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressedAndSelectedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect6();
+        g.setPaint(color16);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient11(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundMouseOverAndSelected(Graphics2D g) {
+        roundRect = decodeRoundRect5();
+        g.setPaint(color30);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient12(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundMouseOverAndSelectedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect6();
+        g.setPaint(color16);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient12(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundDisabledAndSelected(Graphics2D g) {
+        roundRect = decodeRoundRect5();
+        g.setPaint(color46);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient13(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient14(roundRect));
+        g.fill(roundRect);
+
+    }
+
+
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(0.2857143f), //x
+                               decodeY(0.42857143f), //y
+                               decodeX(2.7142859f) - decodeX(0.2857143f), //width
+                               decodeY(2.857143f) - decodeY(0.42857143f), //height
+                               12.0f, 12.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect2() {
+        roundRect.setRoundRect(decodeX(0.2857143f), //x
+                               decodeY(0.2857143f), //y
+                               decodeX(2.7142859f) - decodeX(0.2857143f), //width
+                               decodeY(2.7142859f) - decodeY(0.2857143f), //height
+                               9.0f, 9.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect3() {
+        roundRect.setRoundRect(decodeX(0.42857143f), //x
+                               decodeY(0.42857143f), //y
+                               decodeX(2.5714285f) - decodeX(0.42857143f), //width
+                               decodeY(2.5714285f) - decodeY(0.42857143f), //height
+                               7.0f, 7.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect4() {
+        roundRect.setRoundRect(decodeX(0.08571429f), //x
+                               decodeY(0.08571429f), //y
+                               decodeX(2.914286f) - decodeX(0.08571429f), //width
+                               decodeY(2.914286f) - decodeY(0.08571429f), //height
+                               11.0f, 11.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect5() {
+        roundRect.setRoundRect(decodeX(0.2857143f), //x
+                               decodeY(0.42857143f), //y
+                               decodeX(2.7142859f) - decodeX(0.2857143f), //width
+                               decodeY(2.857143f) - decodeY(0.42857143f), //height
+                               9.0f, 9.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect6() {
+        roundRect.setRoundRect(decodeX(0.08571429f), //x
+                               decodeY(0.08571429f), //y
+                               decodeX(2.914286f) - decodeX(0.08571429f), //width
+                               decodeY(2.9142857f) - decodeY(0.08571429f), //height
+                               11.0f, 11.0f); //rounding
+        return roundRect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.09f,0.52f,0.95f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.03f,0.06f,0.33f,0.6f,0.65f,0.7f,0.825f,0.95f,0.975f,1.0f },
+                new Color[] { color4,
+                            decodeColor(color4,color5,0.5f),
+                            color5,
+                            decodeColor(color5,color6,0.5f),
+                            color6,
+                            decodeColor(color6,color6,0.5f),
+                            color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.09f,0.52f,0.95f },
+                new Color[] { color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.024f,0.06f,0.276f,0.6f,0.65f,0.7f,0.856f,0.96f,0.98399997f,1.0f },
+                new Color[] { (Color)componentColors[0],
+                            decodeColor((Color)componentColors[0],(Color)componentColors[1],0.5f),
+                            (Color)componentColors[1],
+                            decodeColor((Color)componentColors[1],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2],
+                            decodeColor((Color)componentColors[2],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2],
+                            decodeColor((Color)componentColors[2],(Color)componentColors[3],0.5f),
+                            (Color)componentColors[3],
+                            decodeColor((Color)componentColors[3],(Color)componentColors[4],0.5f),
+                            (Color)componentColors[4]});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.03f,0.06f,0.33f,0.6f,0.65f,0.7f,0.825f,0.95f,0.975f,1.0f },
+                new Color[] { (Color)componentColors[0],
+                            decodeColor((Color)componentColors[0],(Color)componentColors[1],0.5f),
+                            (Color)componentColors[1],
+                            decodeColor((Color)componentColors[1],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2],
+                            decodeColor((Color)componentColors[2],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2],
+                            decodeColor((Color)componentColors[2],(Color)componentColors[3],0.5f),
+                            (Color)componentColors[3],
+                            decodeColor((Color)componentColors[3],(Color)componentColors[4],0.5f),
+                            (Color)componentColors[4]});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.09f,0.52f,0.95f },
+                new Color[] { color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.024f,0.06f,0.276f,0.6f,0.65f,0.7f,0.856f,0.96f,0.98f,1.0f },
+                new Color[] { (Color)componentColors[0],
+                            decodeColor((Color)componentColors[0],(Color)componentColors[1],0.5f),
+                            (Color)componentColors[1],
+                            decodeColor((Color)componentColors[1],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2],
+                            decodeColor((Color)componentColors[2],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2],
+                            decodeColor((Color)componentColors[2],(Color)componentColors[3],0.5f),
+                            (Color)componentColors[3],
+                            decodeColor((Color)componentColors[3],(Color)componentColors[3],0.5f),
+                            (Color)componentColors[3]});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.05f,0.5f,0.95f },
+                new Color[] { color23,
+                            decodeColor(color23,color24,0.5f),
+                            color24});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color31,
+                            decodeColor(color31,color32,0.5f),
+                            color32});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.06684492f,0.13368984f,0.56684494f,1.0f },
+                new Color[] { (Color)componentColors[0],
+                            decodeColor((Color)componentColors[0],(Color)componentColors[1],0.5f),
+                            (Color)componentColors[1],
+                            decodeColor((Color)componentColors[1],(Color)componentColors[2],0.5f),
+                            (Color)componentColors[2]});
+    }
+
+    private Paint decodeGradient11(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color36,
+                            decodeColor(color36,color37,0.5f),
+                            color37});
+    }
+
+    private Paint decodeGradient12(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color41,
+                            decodeColor(color41,color42,0.5f),
+                            color42});
+    }
+
+    private Paint decodeGradient13(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color47,
+                            decodeColor(color47,color48,0.5f),
+                            color48});
+    }
+
+    private Paint decodeGradient14(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.06684492f,0.13368984f,0.56684494f,1.0f },
+                new Color[] { color48,
+                            decodeColor(color48,color49,0.5f),
+                            color49,
+                            decodeColor(color49,color49,0.5f),
+                            color49});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ToolBarButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,288 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ToolBarButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ToolBarButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int BACKGROUND_FOCUSED = 2;
+    static final int BACKGROUND_MOUSEOVER = 3;
+    static final int BACKGROUND_MOUSEOVER_FOCUSED = 4;
+    static final int BACKGROUND_PRESSED = 5;
+    static final int BACKGROUND_PRESSED_FOCUSED = 6;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ToolBarButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.06885965f, -0.36862746f, -153);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.0f, -0.020974077f, -0.21960783f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.0f, 0.11169591f, -0.53333336f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10658931f, 0.25098038f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.0f, -0.098526314f, 0.2352941f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", 0.0f, -0.07333623f, 0.20392156f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color9 = decodeColor("nimbusBlueGrey", -0.00505054f, -0.05960039f, 0.10196078f, 0);
+    private Color color10 = decodeColor("nimbusBlueGrey", -0.008547008f, -0.04772438f, 0.06666666f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", -0.0027777553f, -0.0018306673f, -0.02352941f, 0);
+    private Color color12 = decodeColor("nimbusBlueGrey", -0.0027777553f, -0.0212406f, 0.13333333f, 0);
+    private Color color13 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.030845039f, 0.23921567f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ToolBarButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_FOCUSED: paintBackgroundFocused(g); break;
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_MOUSEOVER_FOCUSED: paintBackgroundMouseOverAndFocused(g); break;
+            case BACKGROUND_PRESSED: paintBackgroundPressed(g); break;
+            case BACKGROUND_PRESSED_FOCUSED: paintBackgroundPressedAndFocused(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundFocused(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color2);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundMouseOverAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressed(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color2);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(1.4133738f), decodeY(0.120000005f));
+        path.lineTo(decodeX(1.9893618f), decodeY(0.120000005f));
+        path.curveTo(decodeAnchorX(1.9893617630004883f, 3.0f), decodeAnchorY(0.12000000476837158f, 0.0f), decodeAnchorX(2.8857147693634033f, 0.0f), decodeAnchorY(1.04347825050354f, -3.0f), decodeX(2.8857148f), decodeY(1.0434783f));
+        path.lineTo(decodeX(2.9f), decodeY(1.9565217f));
+        path.curveTo(decodeAnchorX(2.9000000953674316f, 0.0f), decodeAnchorY(1.95652174949646f, 3.0f), decodeAnchorX(1.9893617630004883f, 3.0f), decodeAnchorY(2.8714287281036377f, 0.0f), decodeX(1.9893618f), decodeY(2.8714287f));
+        path.lineTo(decodeX(1.0106384f), decodeY(2.8714287f));
+        path.curveTo(decodeAnchorX(1.0106383562088013f, -3.0f), decodeAnchorY(2.8714287281036377f, 0.0f), decodeAnchorX(0.12000000476837158f, 0.0f), decodeAnchorY(1.95652174949646f, 3.0f), decodeX(0.120000005f), decodeY(1.9565217f));
+        path.lineTo(decodeX(0.120000005f), decodeY(1.0465839f));
+        path.curveTo(decodeAnchorX(0.12000000476837158f, 0.0f), decodeAnchorY(1.046583890914917f, -3.000000000000001f), decodeAnchorX(1.0106383562088013f, -3.0f), decodeAnchorY(0.12000000476837158f, 0.0f), decodeX(1.0106384f), decodeY(0.120000005f));
+        path.lineTo(decodeX(1.4148936f), decodeY(0.120000005f));
+        path.lineTo(decodeX(1.4148936f), decodeY(0.4857143f));
+        path.lineTo(decodeX(1.0106384f), decodeY(0.4857143f));
+        path.curveTo(decodeAnchorX(1.0106383562088013f, -1.928571428571427f), decodeAnchorY(0.48571428656578064f, 0.0f), decodeAnchorX(0.4714285731315613f, -0.04427948362011014f), decodeAnchorY(1.040372610092163f, -2.429218094741624f), decodeX(0.47142857f), decodeY(1.0403726f));
+        path.lineTo(decodeX(0.47142857f), decodeY(1.9565217f));
+        path.curveTo(decodeAnchorX(0.4714285731315613f, 0.0f), decodeAnchorY(1.95652174949646f, 2.2142857142856975f), decodeAnchorX(1.0106383562088013f, -1.7857142857142847f), decodeAnchorY(2.5142855644226074f, 0.0f), decodeX(1.0106384f), decodeY(2.5142856f));
+        path.lineTo(decodeX(1.9893618f), decodeY(2.5142856f));
+        path.curveTo(decodeAnchorX(1.9893617630004883f, 2.071428571428598f), decodeAnchorY(2.5142855644226074f, 0.0f), decodeAnchorX(2.5f, 0.0f), decodeAnchorY(1.95652174949646f, 2.2142857142857046f), decodeX(2.5f), decodeY(1.9565217f));
+        path.lineTo(decodeX(2.5142853f), decodeY(1.0434783f));
+        path.curveTo(decodeAnchorX(2.5142853260040283f, 0.0f), decodeAnchorY(1.04347825050354f, -2.1428571428571406f), decodeAnchorX(1.990121603012085f, 2.142857142857167f), decodeAnchorY(0.4714285731315613f, 0.0f), decodeX(1.9901216f), decodeY(0.47142857f));
+        path.lineTo(decodeX(1.4148936f), decodeY(0.4857143f));
+        path.lineTo(decodeX(1.4133738f), decodeY(0.120000005f));
+        path.closePath();
+        return path;
+    }
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(0.4f), //x
+                               decodeY(0.6f), //y
+                               decodeX(2.6f) - decodeX(0.4f), //width
+                               decodeY(2.8f) - decodeY(0.6f), //height
+                               12.0f, 12.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect2() {
+        roundRect.setRoundRect(decodeX(0.4f), //x
+                               decodeY(0.4f), //y
+                               decodeX(2.6f) - decodeX(0.4f), //width
+                               decodeY(2.6f) - decodeY(0.4f), //height
+                               12.0f, 12.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect3() {
+        roundRect.setRoundRect(decodeX(0.6f), //x
+                               decodeY(0.6f), //y
+                               decodeX(2.4f) - decodeX(0.6f), //width
+                               decodeY(2.4f) - decodeY(0.6f), //height
+                               9.0f, 9.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect4() {
+        roundRect.setRoundRect(decodeX(0.120000005f), //x
+                               decodeY(0.120000005f), //y
+                               decodeX(2.8800004f) - decodeX(0.120000005f), //width
+                               decodeY(2.8800004f) - decodeY(0.120000005f), //height
+                               13.0f, 13.0f); //rounding
+        return roundRect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.09f,0.52f,0.95f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.03f,0.06f,0.33f,0.6f,0.65f,0.7f,0.825f,0.95f,0.975f,1.0f },
+                new Color[] { color5,
+                            decodeColor(color5,color6,0.5f),
+                            color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7,
+                            decodeColor(color7,color7,0.5f),
+                            color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8,
+                            decodeColor(color8,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.03f,0.06f,0.33f,0.6f,0.65f,0.7f,0.825f,0.95f,0.975f,1.0f },
+                new Color[] { color9,
+                            decodeColor(color9,color10,0.5f),
+                            color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11,
+                            decodeColor(color11,color11,0.5f),
+                            color11,
+                            decodeColor(color11,color12,0.5f),
+                            color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ToolBarEastState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class ToolBarEastState extends State {
+    ToolBarEastState() {
+        super("East");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+        JToolBar toolbar = (JToolBar)c;
+        return NimbusLookAndFeel.resolveToolbarConstraint(toolbar) == BorderLayout.EAST;
+               
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ToolBarNorthState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class ToolBarNorthState extends State {
+    ToolBarNorthState() {
+        super("North");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+        JToolBar toolbar = (JToolBar)c;
+        return NimbusLookAndFeel.resolveToolbarConstraint(toolbar) == BorderLayout.NORTH;
+               
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ToolBarPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,211 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ToolBarPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ToolBarPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BORDER_NORTH = 1;
+    static final int BORDER_SOUTH = 2;
+    static final int BORDER_EAST = 3;
+    static final int BORDER_WEST = 4;
+    static final int HANDLEICON_ENABLED = 5;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ToolBarPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBorder", 0.0f, 0.0f, 0.0f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color3 = decodeColor("nimbusBlueGrey", -0.006944418f, -0.07399663f, 0.11372548f, 0);
+    private Color color4 = decodeColor("nimbusBorder", 0.0f, -0.029675633f, 0.109803915f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", -0.008547008f, -0.03494492f, -0.07058823f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ToolBarPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BORDER_NORTH: paintBorderNorth(g); break;
+            case BORDER_SOUTH: paintBorderSouth(g); break;
+            case BORDER_EAST: paintBorderEast(g); break;
+            case BORDER_WEST: paintBorderWest(g); break;
+            case HANDLEICON_ENABLED: painthandleIconEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBorderNorth(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintBorderSouth(Graphics2D g) {
+        rect = decodeRect2();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintBorderEast(Graphics2D g) {
+        rect = decodeRect2();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void paintBorderWest(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+
+    }
+
+    private void painthandleIconEnabled(Graphics2D g) {
+        rect = decodeRect3();
+        g.setPaint(decodeGradient1(rect));
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color4);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color5);
+        g.fill(path);
+        path = decodePath2();
+        g.setPaint(color5);
+        g.fill(path);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(2.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(3.0f) - decodeY(2.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(1.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(2.8f) - decodeX(0.0f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(2.8f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(2.8f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(2.6f));
+        path.lineTo(decodeX(0.4f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.0f * w) + x, (0.5f * h) + y, (1.0f * w) + x, (0.5f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color2,
+                            decodeColor(color2,color3,0.5f),
+                            color3});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ToolBarSouthState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class ToolBarSouthState extends State {
+    ToolBarSouthState() {
+        super("South");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+        JToolBar toolbar = (JToolBar)c;
+        return NimbusLookAndFeel.resolveToolbarConstraint(toolbar) == BorderLayout.SOUTH;
+               
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ToolBarToggleButtonPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,535 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ToolBarToggleButtonPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ToolBarToggleButtonPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int BACKGROUND_FOCUSED = 2;
+    static final int BACKGROUND_MOUSEOVER = 3;
+    static final int BACKGROUND_MOUSEOVER_FOCUSED = 4;
+    static final int BACKGROUND_PRESSED = 5;
+    static final int BACKGROUND_PRESSED_FOCUSED = 6;
+    static final int BACKGROUND_SELECTED = 7;
+    static final int BACKGROUND_SELECTED_FOCUSED = 8;
+    static final int BACKGROUND_PRESSED_SELECTED = 9;
+    static final int BACKGROUND_PRESSED_SELECTED_FOCUSED = 10;
+    static final int BACKGROUND_MOUSEOVER_SELECTED = 11;
+    static final int BACKGROUND_MOUSEOVER_SELECTED_FOCUSED = 12;
+    static final int BACKGROUND_DISABLED_SELECTED = 13;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ToolBarToggleButtonPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color2 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.06885965f, -0.36862746f, -153);
+    private Color color3 = decodeColor("nimbusBlueGrey", 0.0f, -0.020974077f, -0.21960783f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.0f, 0.11169591f, -0.53333336f, 0);
+    private Color color5 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10658931f, 0.25098038f, 0);
+    private Color color6 = decodeColor("nimbusBlueGrey", 0.0f, -0.098526314f, 0.2352941f, 0);
+    private Color color7 = decodeColor("nimbusBlueGrey", 0.0f, -0.07333623f, 0.20392156f, 0);
+    private Color color8 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color9 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -86);
+    private Color color10 = decodeColor("nimbusBlueGrey", -0.01111114f, -0.060526315f, -0.3529412f, 0);
+    private Color color11 = decodeColor("nimbusBlueGrey", 0.0f, -0.064372465f, -0.2352941f, 0);
+    private Color color12 = decodeColor("nimbusBlueGrey", -0.006944418f, -0.0595709f, -0.12941176f, 0);
+    private Color color13 = decodeColor("nimbusBlueGrey", 0.0f, -0.061075766f, -0.031372547f, 0);
+    private Color color14 = decodeColor("nimbusBlueGrey", 0.0f, -0.06080256f, -0.035294116f, 0);
+    private Color color15 = decodeColor("nimbusBlueGrey", 0.0f, -0.06472479f, -0.23137254f, 0);
+    private Color color16 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.06959064f, -0.0745098f, 0);
+    private Color color17 = decodeColor("nimbusBlueGrey", 0.0138888955f, -0.06401469f, -0.07058823f, 0);
+    private Color color18 = decodeColor("nimbusBlueGrey", 0.0f, -0.06530018f, 0.035294116f, 0);
+    private Color color19 = decodeColor("nimbusBlueGrey", 0.0f, -0.06507177f, 0.031372547f, 0);
+    private Color color20 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.05338346f, -0.47058824f, 0);
+    private Color color21 = decodeColor("nimbusBlueGrey", 0.0f, -0.049301825f, -0.36078432f, 0);
+    private Color color22 = decodeColor("nimbusBlueGrey", -0.018518567f, -0.03909774f, -0.2509804f, 0);
+    private Color color23 = decodeColor("nimbusBlueGrey", -0.00505054f, -0.040013492f, -0.13333333f, 0);
+    private Color color24 = decodeColor("nimbusBlueGrey", 0.01010108f, -0.039558575f, -0.1372549f, 0);
+    private Color color25 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -220);
+    private Color color26 = decodeColor("nimbusBlueGrey", 0.0f, -0.066408664f, 0.054901958f, 0);
+    private Color color27 = decodeColor("nimbusBlueGrey", 0.0f, -0.06807348f, 0.086274505f, 0);
+    private Color color28 = decodeColor("nimbusBlueGrey", 0.0f, -0.06924191f, 0.109803915f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ToolBarToggleButtonPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_FOCUSED: paintBackgroundFocused(g); break;
+            case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break;
+            case BACKGROUND_MOUSEOVER_FOCUSED: paintBackgroundMouseOverAndFocused(g); break;
+            case BACKGROUND_PRESSED: paintBackgroundPressed(g); break;
+            case BACKGROUND_PRESSED_FOCUSED: paintBackgroundPressedAndFocused(g); break;
+            case BACKGROUND_SELECTED: paintBackgroundSelected(g); break;
+            case BACKGROUND_SELECTED_FOCUSED: paintBackgroundSelectedAndFocused(g); break;
+            case BACKGROUND_PRESSED_SELECTED: paintBackgroundPressedAndSelected(g); break;
+            case BACKGROUND_PRESSED_SELECTED_FOCUSED: paintBackgroundPressedAndSelectedAndFocused(g); break;
+            case BACKGROUND_MOUSEOVER_SELECTED: paintBackgroundMouseOverAndSelected(g); break;
+            case BACKGROUND_MOUSEOVER_SELECTED_FOCUSED: paintBackgroundMouseOverAndSelectedAndFocused(g); break;
+            case BACKGROUND_DISABLED_SELECTED: paintBackgroundDisabledAndSelected(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundFocused(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundMouseOver(Graphics2D g) {
+        roundRect = decodeRoundRect1();
+        g.setPaint(color2);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundMouseOverAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect4();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect2();
+        g.setPaint(decodeGradient1(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect3();
+        g.setPaint(decodeGradient2(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressed(Graphics2D g) {
+        roundRect = decodeRoundRect5();
+        g.setPaint(color9);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect6();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect7();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect8();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect6();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect7();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundSelected(Graphics2D g) {
+        roundRect = decodeRoundRect5();
+        g.setPaint(color9);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect6();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect7();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundSelectedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect8();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect6();
+        g.setPaint(decodeGradient5(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect7();
+        g.setPaint(decodeGradient6(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressedAndSelected(Graphics2D g) {
+        roundRect = decodeRoundRect5();
+        g.setPaint(color9);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect6();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect7();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundPressedAndSelectedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect8();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect6();
+        g.setPaint(decodeGradient7(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect7();
+        g.setPaint(decodeGradient8(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundMouseOverAndSelected(Graphics2D g) {
+        roundRect = decodeRoundRect5();
+        g.setPaint(color9);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect6();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect7();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundMouseOverAndSelectedAndFocused(Graphics2D g) {
+        roundRect = decodeRoundRect8();
+        g.setPaint(color1);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect6();
+        g.setPaint(decodeGradient3(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect7();
+        g.setPaint(decodeGradient4(roundRect));
+        g.fill(roundRect);
+
+    }
+
+    private void paintBackgroundDisabledAndSelected(Graphics2D g) {
+        roundRect = decodeRoundRect5();
+        g.setPaint(color25);
+        g.fill(roundRect);
+        roundRect = decodeRoundRect6();
+        g.setPaint(decodeGradient9(roundRect));
+        g.fill(roundRect);
+        roundRect = decodeRoundRect7();
+        g.setPaint(decodeGradient10(roundRect));
+        g.fill(roundRect);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(1.4133738f), decodeY(0.120000005f));
+        path.lineTo(decodeX(1.9893618f), decodeY(0.120000005f));
+        path.curveTo(decodeAnchorX(1.9893617630004883f, 3.0f), decodeAnchorY(0.12000000476837158f, 0.0f), decodeAnchorX(2.8857147693634033f, 0.0f), decodeAnchorY(1.0416666269302368f, -3.0f), decodeX(2.8857148f), decodeY(1.0416666f));
+        path.lineTo(decodeX(2.9f), decodeY(1.9166667f));
+        path.curveTo(decodeAnchorX(2.9000000953674316f, 0.0f), decodeAnchorY(1.9166667461395264f, 3.0f), decodeAnchorX(1.9893617630004883f, 3.0f), decodeAnchorY(2.671428680419922f, 0.0f), decodeX(1.9893618f), decodeY(2.6714287f));
+        path.lineTo(decodeX(1.0106384f), decodeY(2.6714287f));
+        path.curveTo(decodeAnchorX(1.0106383562088013f, -3.0f), decodeAnchorY(2.671428680419922f, 0.0f), decodeAnchorX(0.12000000476837158f, 0.0f), decodeAnchorY(1.9166667461395264f, 3.0f), decodeX(0.120000005f), decodeY(1.9166667f));
+        path.lineTo(decodeX(0.120000005f), decodeY(1.0446429f));
+        path.curveTo(decodeAnchorX(0.12000000476837158f, 0.0f), decodeAnchorY(1.0446429252624512f, -3.000000000000001f), decodeAnchorX(1.0106383562088013f, -3.0f), decodeAnchorY(0.12000000476837158f, 0.0f), decodeX(1.0106384f), decodeY(0.120000005f));
+        path.lineTo(decodeX(1.4148936f), decodeY(0.120000005f));
+        path.lineTo(decodeX(1.4148936f), decodeY(0.4857143f));
+        path.lineTo(decodeX(1.0106384f), decodeY(0.4857143f));
+        path.curveTo(decodeAnchorX(1.0106383562088013f, -1.928571428571427f), decodeAnchorY(0.48571428656578064f, 0.0f), decodeAnchorX(0.4714285731315613f, -0.04427948362011014f), decodeAnchorY(1.038690447807312f, -2.429218094741624f), decodeX(0.47142857f), decodeY(1.0386904f));
+        path.lineTo(decodeX(0.47142857f), decodeY(1.9166667f));
+        path.curveTo(decodeAnchorX(0.4714285731315613f, 0.0f), decodeAnchorY(1.9166667461395264f, 2.2142857142856975f), decodeAnchorX(1.0106383562088013f, -1.7857142857142847f), decodeAnchorY(2.3142857551574707f, 0.0f), decodeX(1.0106384f), decodeY(2.3142858f));
+        path.lineTo(decodeX(1.9893618f), decodeY(2.3142858f));
+        path.curveTo(decodeAnchorX(1.9893617630004883f, 2.071428571428598f), decodeAnchorY(2.3142857551574707f, 0.0f), decodeAnchorX(2.5f, 0.0f), decodeAnchorY(1.9166667461395264f, 2.2142857142857046f), decodeX(2.5f), decodeY(1.9166667f));
+        path.lineTo(decodeX(2.5142853f), decodeY(1.0416666f));
+        path.curveTo(decodeAnchorX(2.5142853260040283f, 0.0f), decodeAnchorY(1.0416666269302368f, -2.1428571428571406f), decodeAnchorX(1.990121603012085f, 2.142857142857167f), decodeAnchorY(0.4714285731315613f, 0.0f), decodeX(1.9901216f), decodeY(0.47142857f));
+        path.lineTo(decodeX(1.4148936f), decodeY(0.4857143f));
+        path.lineTo(decodeX(1.4133738f), decodeY(0.120000005f));
+        path.closePath();
+        return path;
+    }
+
+    private RoundRectangle2D decodeRoundRect1() {
+        roundRect.setRoundRect(decodeX(0.4f), //x
+                               decodeY(0.6f), //y
+                               decodeX(2.6f) - decodeX(0.4f), //width
+                               decodeY(2.6f) - decodeY(0.6f), //height
+                               12.0f, 12.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect2() {
+        roundRect.setRoundRect(decodeX(0.4f), //x
+                               decodeY(0.4f), //y
+                               decodeX(2.6f) - decodeX(0.4f), //width
+                               decodeY(2.4f) - decodeY(0.4f), //height
+                               12.0f, 12.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect3() {
+        roundRect.setRoundRect(decodeX(0.6f), //x
+                               decodeY(0.6f), //y
+                               decodeX(2.4f) - decodeX(0.6f), //width
+                               decodeY(2.2f) - decodeY(0.6f), //height
+                               9.0f, 9.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect4() {
+        roundRect.setRoundRect(decodeX(0.120000005f), //x
+                               decodeY(0.120000005f), //y
+                               decodeX(2.8800004f) - decodeX(0.120000005f), //width
+                               decodeY(2.6800003f) - decodeY(0.120000005f), //height
+                               13.0f, 13.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect5() {
+        roundRect.setRoundRect(decodeX(0.4f), //x
+                               decodeY(0.6f), //y
+                               decodeX(2.6f) - decodeX(0.4f), //width
+                               decodeY(2.6f) - decodeY(0.6f), //height
+                               10.0f, 10.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect6() {
+        roundRect.setRoundRect(decodeX(0.4f), //x
+                               decodeY(0.4f), //y
+                               decodeX(2.6f) - decodeX(0.4f), //width
+                               decodeY(2.4f) - decodeY(0.4f), //height
+                               10.0f, 10.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect7() {
+        roundRect.setRoundRect(decodeX(0.6f), //x
+                               decodeY(0.6f), //y
+                               decodeX(2.4f) - decodeX(0.6f), //width
+                               decodeY(2.2f) - decodeY(0.6f), //height
+                               8.0f, 8.0f); //rounding
+        return roundRect;
+    }
+
+    private RoundRectangle2D decodeRoundRect8() {
+        roundRect.setRoundRect(decodeX(0.120000005f), //x
+                               decodeY(0.120000005f), //y
+                               decodeX(2.8800004f) - decodeX(0.120000005f), //width
+                               decodeY(2.6799998f) - decodeY(0.120000005f), //height
+                               13.0f, 13.0f); //rounding
+        return roundRect;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.09f,0.52f,0.95f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.03f,0.06f,0.33f,0.6f,0.65f,0.7f,0.825f,0.95f,0.975f,1.0f },
+                new Color[] { color5,
+                            decodeColor(color5,color6,0.5f),
+                            color6,
+                            decodeColor(color6,color7,0.5f),
+                            color7,
+                            decodeColor(color7,color7,0.5f),
+                            color7,
+                            decodeColor(color7,color8,0.5f),
+                            color8,
+                            decodeColor(color8,color8,0.5f),
+                            color8});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (1.0041667f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25126263f * w) + x, (1.0092592f * h) + y,
+                new float[] { 0.0f,0.06684492f,0.13368984f,0.56684494f,1.0f },
+                new Color[] { color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13,
+                            decodeColor(color13,color14,0.5f),
+                            color14});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (1.0041667f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color15,
+                            decodeColor(color15,color16,0.5f),
+                            color16});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25126263f * w) + x, (1.0092592f * h) + y,
+                new float[] { 0.0f,0.06684492f,0.13368984f,0.56684494f,1.0f },
+                new Color[] { color17,
+                            decodeColor(color17,color18,0.5f),
+                            color18,
+                            decodeColor(color18,color19,0.5f),
+                            color19});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (1.0041667f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21});
+    }
+
+    private Paint decodeGradient8(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25126263f * w) + x, (1.0092592f * h) + y,
+                new float[] { 0.0f,0.06684492f,0.13368984f,0.56684494f,1.0f },
+                new Color[] { color22,
+                            decodeColor(color22,color23,0.5f),
+                            color23,
+                            decodeColor(color23,color24,0.5f),
+                            color24});
+    }
+
+    private Paint decodeGradient9(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (1.0041667f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color26,
+                            decodeColor(color26,color27,0.5f),
+                            color27});
+    }
+
+    private Paint decodeGradient10(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25126263f * w) + x, (1.0092592f * h) + y,
+                new float[] { 0.0f,0.06684492f,0.13368984f,0.56684494f,1.0f },
+                new Color[] { color27,
+                            decodeColor(color27,color28,0.5f),
+                            color28,
+                            decodeColor(color28,color28,0.5f),
+                            color28});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ToolBarWestState.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import javax.swing.*;
+
+
+class ToolBarWestState extends State {
+    ToolBarWestState() {
+        super("West");
+    }
+
+    @Override protected boolean isInState(JComponent c) {
+
+        JToolBar toolbar = (JToolBar)c;
+        return NimbusLookAndFeel.resolveToolbarConstraint(toolbar) == BorderLayout.WEST;
+               
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/ToolTipPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,150 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class ToolTipPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of ToolTipPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of ToolTipPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBorder", 0.0f, 0.0f, 0.0f, 0);
+    private Color color2 = decodeColor("info", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public ToolTipPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect2();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color1);
+        g.fill(rect);
+        rect = decodeRect5();
+        g.setPaint(color2);
+        g.fill(rect);
+
+    }
+
+
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(2.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(3.0f) - decodeX(2.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(1.0f) - decodeX(0.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(2.0f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(3.0f) - decodeY(2.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(1.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect5() {
+            rect.setRect(decodeX(1.0f), //x
+                         decodeY(1.0f), //y
+                         decodeX(2.0f) - decodeX(1.0f), //width
+                         decodeY(2.0f) - decodeY(1.0f)); //height
+        return rect;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TreeCellEditorPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,143 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class TreeCellEditorPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of TreeCellEditorPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_ENABLED_FOCUSED = 3;
+    static final int BACKGROUND_SELECTED = 4;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of TreeCellEditorPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", 0.0f, -0.017358616f, -0.11372548f, 0);
+    private Color color2 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public TreeCellEditorPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break;
+            case BACKGROUND_ENABLED_FOCUSED: paintBackgroundEnabledAndFocused(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabledAndFocused(Graphics2D g) {
+        path = decodePath2();
+        g.setPaint(color2);
+        g.fill(path);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(3.0f), decodeY(3.0f));
+        path.lineTo(decodeX(3.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.2f), decodeY(0.0f));
+        path.lineTo(decodeX(0.2f), decodeY(0.2f));
+        path.lineTo(decodeX(2.8f), decodeY(0.2f));
+        path.lineTo(decodeX(2.8f), decodeY(2.8f));
+        path.lineTo(decodeX(0.2f), decodeY(2.8f));
+        path.lineTo(decodeX(0.2f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(3.0f), decodeY(3.0f));
+        path.lineTo(decodeX(3.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.24000001f), decodeY(0.0f));
+        path.lineTo(decodeX(0.24000001f), decodeY(0.24000001f));
+        path.lineTo(decodeX(2.7600007f), decodeY(0.24000001f));
+        path.lineTo(decodeX(2.7600007f), decodeY(2.7599998f));
+        path.lineTo(decodeX(0.24000001f), decodeY(2.7599998f));
+        path.lineTo(decodeX(0.24000001f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TreePainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,652 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class TreePainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of TreePainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_DISABLED = 1;
+    static final int BACKGROUND_ENABLED = 2;
+    static final int BACKGROUND_ENABLED_SELECTED = 3;
+    static final int LEAFICON_ENABLED = 4;
+    static final int CLOSEDICON_ENABLED = 5;
+    static final int OPENICON_ENABLED = 6;
+    static final int COLLAPSEDICON_ENABLED = 7;
+    static final int COLLAPSEDICON_ENABLED_SELECTED = 8;
+    static final int EXPANDEDICON_ENABLED = 9;
+    static final int EXPANDEDICON_ENABLED_SELECTED = 10;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of TreePainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.065654516f, -0.13333333f, 0);
+    private Color color2 = new Color(97, 98, 102, 255);
+    private Color color3 = decodeColor("nimbusBlueGrey", -0.032679737f, -0.043332636f, 0.24705881f, 0);
+    private Color color4 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0);
+    private Color color5 = decodeColor("nimbusBase", 0.0077680945f, -0.51781034f, 0.3490196f, 0);
+    private Color color6 = decodeColor("nimbusBase", 0.013940871f, -0.599277f, 0.41960782f, 0);
+    private Color color7 = decodeColor("nimbusBase", 0.004681647f, -0.4198052f, 0.14117646f, 0);
+    private Color color8 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, -127);
+    private Color color9 = decodeColor("nimbusBlueGrey", 0.0f, 0.0f, -0.21f, -99);
+    private Color color10 = decodeColor("nimbusBase", 2.9569864E-4f, -0.45978838f, 0.2980392f, 0);
+    private Color color11 = decodeColor("nimbusBase", 0.0015952587f, -0.34848025f, 0.18823528f, 0);
+    private Color color12 = decodeColor("nimbusBase", 0.0015952587f, -0.30844158f, 0.09803921f, 0);
+    private Color color13 = decodeColor("nimbusBase", 0.0015952587f, -0.27329817f, 0.035294116f, 0);
+    private Color color14 = decodeColor("nimbusBase", 0.004681647f, -0.6198413f, 0.43921566f, 0);
+    private Color color15 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, -125);
+    private Color color16 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, -50);
+    private Color color17 = decodeColor("nimbusBase", 0.0f, -0.6357143f, 0.45098037f, -100);
+    private Color color18 = decodeColor("nimbusBase", 0.0012094378f, -0.23571429f, -0.0784314f, 0);
+    private Color color19 = decodeColor("nimbusBase", 2.9569864E-4f, -0.115166366f, -0.2627451f, 0);
+    private Color color20 = decodeColor("nimbusBase", 0.0027436614f, -0.335015f, 0.011764705f, 0);
+    private Color color21 = decodeColor("nimbusBase", 0.0024294257f, -0.3857143f, 0.031372547f, 0);
+    private Color color22 = decodeColor("nimbusBase", 0.0018081069f, -0.3595238f, -0.13725492f, 0);
+    private Color color23 = new Color(255, 200, 0, 255);
+    private Color color24 = decodeColor("nimbusBase", 0.004681647f, -0.33496243f, -0.027450979f, 0);
+    private Color color25 = decodeColor("nimbusBase", 0.0019934773f, -0.361378f, -0.10588238f, 0);
+    private Color color26 = decodeColor("nimbusBlueGrey", -0.6111111f, -0.110526316f, -0.34509805f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public TreePainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case LEAFICON_ENABLED: paintleafIconEnabled(g); break;
+            case CLOSEDICON_ENABLED: paintclosedIconEnabled(g); break;
+            case OPENICON_ENABLED: paintopenIconEnabled(g); break;
+            case COLLAPSEDICON_ENABLED: paintcollapsedIconEnabled(g); break;
+            case COLLAPSEDICON_ENABLED_SELECTED: paintcollapsedIconEnabledAndSelected(g); break;
+            case EXPANDEDICON_ENABLED: paintexpandedIconEnabled(g); break;
+            case EXPANDEDICON_ENABLED_SELECTED: paintexpandedIconEnabledAndSelected(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintleafIconEnabled(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+        rect = decodeRect1();
+        g.setPaint(color2);
+        g.fill(rect);
+        path = decodePath2();
+        g.setPaint(decodeGradient1(path));
+        g.fill(path);
+        path = decodePath3();
+        g.setPaint(decodeGradient2(path));
+        g.fill(path);
+        path = decodePath4();
+        g.setPaint(color7);
+        g.fill(path);
+        path = decodePath5();
+        g.setPaint(color8);
+        g.fill(path);
+
+    }
+
+    private void paintclosedIconEnabled(Graphics2D g) {
+        path = decodePath6();
+        g.setPaint(color9);
+        g.fill(path);
+        path = decodePath7();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath8();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+        rect = decodeRect2();
+        g.setPaint(color15);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color17);
+        g.fill(rect);
+        path = decodePath9();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath10();
+        g.setPaint(decodeGradient6(path));
+        g.fill(path);
+        path = decodePath11();
+        g.setPaint(color23);
+        g.fill(path);
+
+    }
+
+    private void paintopenIconEnabled(Graphics2D g) {
+        path = decodePath6();
+        g.setPaint(color9);
+        g.fill(path);
+        path = decodePath12();
+        g.setPaint(decodeGradient3(path));
+        g.fill(path);
+        path = decodePath13();
+        g.setPaint(decodeGradient4(path));
+        g.fill(path);
+        rect = decodeRect2();
+        g.setPaint(color15);
+        g.fill(rect);
+        rect = decodeRect3();
+        g.setPaint(color16);
+        g.fill(rect);
+        rect = decodeRect4();
+        g.setPaint(color17);
+        g.fill(rect);
+        path = decodePath14();
+        g.setPaint(decodeGradient5(path));
+        g.fill(path);
+        path = decodePath15();
+        g.setPaint(decodeGradient7(path));
+        g.fill(path);
+        path = decodePath11();
+        g.setPaint(color23);
+        g.fill(path);
+
+    }
+
+    private void paintcollapsedIconEnabled(Graphics2D g) {
+        path = decodePath16();
+        g.setPaint(color26);
+        g.fill(path);
+
+    }
+
+    private void paintcollapsedIconEnabledAndSelected(Graphics2D g) {
+        path = decodePath16();
+        g.setPaint(color4);
+        g.fill(path);
+
+    }
+
+    private void paintexpandedIconEnabled(Graphics2D g) {
+        path = decodePath17();
+        g.setPaint(color26);
+        g.fill(path);
+
+    }
+
+    private void paintexpandedIconEnabledAndSelected(Graphics2D g) {
+        path = decodePath17();
+        g.setPaint(color4);
+        g.fill(path);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.2f), decodeY(0.0f));
+        path.lineTo(decodeX(0.2f), decodeY(3.0f));
+        path.lineTo(decodeX(0.4f), decodeY(3.0f));
+        path.lineTo(decodeX(0.4f), decodeY(0.2f));
+        path.lineTo(decodeX(1.9197531f), decodeY(0.2f));
+        path.lineTo(decodeX(2.6f), decodeY(0.9f));
+        path.lineTo(decodeX(2.6f), decodeY(3.0f));
+        path.lineTo(decodeX(2.8f), decodeY(3.0f));
+        path.lineTo(decodeX(2.8f), decodeY(0.88888896f));
+        path.lineTo(decodeX(1.9537036f), decodeY(0.0f));
+        path.lineTo(decodeX(0.2f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.4f), //x
+                         decodeY(2.8f), //y
+                         decodeX(2.6f) - decodeX(0.4f), //width
+                         decodeY(3.0f) - decodeY(2.8f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath2() {
+        path.reset();
+        path.moveTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.lineTo(decodeX(1.8333333f), decodeY(1.0f));
+        path.lineTo(decodeX(2.6f), decodeY(1.0f));
+        path.lineTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath3() {
+        path.reset();
+        path.moveTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.lineTo(decodeX(0.4f), decodeY(0.2f));
+        path.lineTo(decodeX(0.4f), decodeY(2.8f));
+        path.lineTo(decodeX(2.6f), decodeY(2.8f));
+        path.lineTo(decodeX(2.6f), decodeY(1.0f));
+        path.lineTo(decodeX(1.8333333f), decodeY(1.0f));
+        path.lineTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath4() {
+        path.reset();
+        path.moveTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.lineTo(decodeX(1.6234567f), decodeY(0.2f));
+        path.lineTo(decodeX(1.6296296f), decodeY(1.2037038f));
+        path.lineTo(decodeX(2.6f), decodeY(1.2006173f));
+        path.lineTo(decodeX(2.6f), decodeY(1.0f));
+        path.lineTo(decodeX(1.8333333f), decodeY(1.0f));
+        path.lineTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath5() {
+        path.reset();
+        path.moveTo(decodeX(1.8333333f), decodeY(0.4f));
+        path.lineTo(decodeX(1.8333333f), decodeY(0.2f));
+        path.lineTo(decodeX(0.4f), decodeY(0.2f));
+        path.lineTo(decodeX(0.4f), decodeY(2.8f));
+        path.lineTo(decodeX(2.6f), decodeY(2.8f));
+        path.lineTo(decodeX(2.6f), decodeY(1.0f));
+        path.lineTo(decodeX(2.4f), decodeY(1.0f));
+        path.lineTo(decodeX(2.4f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6f), decodeY(0.4f));
+        path.lineTo(decodeX(1.8333333f), decodeY(0.4f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath6() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(2.4f));
+        path.lineTo(decodeX(0.0f), decodeY(2.6f));
+        path.lineTo(decodeX(0.2f), decodeY(3.0f));
+        path.lineTo(decodeX(2.6f), decodeY(3.0f));
+        path.lineTo(decodeX(2.8f), decodeY(2.6f));
+        path.lineTo(decodeX(2.8f), decodeY(2.4f));
+        path.lineTo(decodeX(0.0f), decodeY(2.4f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath7() {
+        path.reset();
+        path.moveTo(decodeX(0.6f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6037037f), decodeY(1.8425925f));
+        path.lineTo(decodeX(0.8f), decodeY(1.0f));
+        path.lineTo(decodeX(2.8f), decodeY(1.0f));
+        path.lineTo(decodeX(2.8f), decodeY(1.3333334f));
+        path.lineTo(decodeX(2.6f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6f), decodeY(2.6f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath8() {
+        path.reset();
+        path.moveTo(decodeX(0.2f), decodeY(2.6f));
+        path.lineTo(decodeX(0.4f), decodeY(2.6f));
+        path.lineTo(decodeX(0.40833336f), decodeY(1.8645833f));
+        path.lineTo(decodeX(0.79583335f), decodeY(0.8f));
+        path.lineTo(decodeX(2.4f), decodeY(0.8f));
+        path.lineTo(decodeX(2.4f), decodeY(0.6f));
+        path.lineTo(decodeX(1.5f), decodeY(0.6f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.4f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.2f));
+        path.lineTo(decodeX(0.6f), decodeY(0.2f));
+        path.lineTo(decodeX(0.6f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(0.6f));
+        path.lineTo(decodeX(0.2f), decodeY(0.6f));
+        path.lineTo(decodeX(0.2f), decodeY(2.6f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect2() {
+            rect.setRect(decodeX(0.2f), //x
+                         decodeY(0.6f), //y
+                         decodeX(0.4f) - decodeX(0.2f), //width
+                         decodeY(0.8f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect3() {
+            rect.setRect(decodeX(0.6f), //x
+                         decodeY(0.2f), //y
+                         decodeX(1.3333334f) - decodeX(0.6f), //width
+                         decodeY(0.4f) - decodeY(0.2f)); //height
+        return rect;
+    }
+
+    private Rectangle2D decodeRect4() {
+            rect.setRect(decodeX(1.5f), //x
+                         decodeY(0.6f), //y
+                         decodeX(2.4f) - decodeX(1.5f), //width
+                         decodeY(0.8f) - decodeY(0.6f)); //height
+        return rect;
+    }
+
+    private Path2D decodePath9() {
+        path.reset();
+        path.moveTo(decodeX(3.0f), decodeY(0.8f));
+        path.lineTo(decodeX(3.0f), decodeY(1.0f));
+        path.lineTo(decodeX(2.4f), decodeY(1.0f));
+        path.lineTo(decodeX(2.4f), decodeY(0.6f));
+        path.lineTo(decodeX(1.5f), decodeY(0.6f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.4f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.2f));
+        path.lineTo(decodeX(0.5888889f), decodeY(0.20370372f));
+        path.lineTo(decodeX(0.5962963f), decodeY(0.34814817f));
+        path.lineTo(decodeX(0.34814817f), decodeY(0.6f));
+        path.lineTo(decodeX(0.2f), decodeY(0.6f));
+        path.lineTo(decodeX(0.2f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(1.3333334f));
+        path.lineTo(decodeX(2.774074f), decodeY(1.1604939f));
+        path.lineTo(decodeX(2.8f), decodeY(1.0f));
+        path.lineTo(decodeX(3.0f), decodeY(1.0f));
+        path.lineTo(decodeX(2.8925927f), decodeY(1.1882716f));
+        path.lineTo(decodeX(2.8f), decodeY(1.3333334f));
+        path.lineTo(decodeX(2.8f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(2.8f));
+        path.lineTo(decodeX(0.2f), decodeY(2.8f));
+        path.lineTo(decodeX(0.0f), decodeY(2.6f));
+        path.lineTo(decodeX(0.0f), decodeY(0.65185183f));
+        path.lineTo(decodeX(0.63703704f), decodeY(0.0f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.0f));
+        path.lineTo(decodeX(1.5925925f), decodeY(0.4f));
+        path.lineTo(decodeX(2.4f), decodeY(0.4f));
+        path.lineTo(decodeX(2.6f), decodeY(0.6f));
+        path.lineTo(decodeX(2.6f), decodeY(0.8f));
+        path.lineTo(decodeX(3.0f), decodeY(0.8f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath10() {
+        path.reset();
+        path.moveTo(decodeX(2.4f), decodeY(1.0f));
+        path.lineTo(decodeX(2.4f), decodeY(0.8f));
+        path.lineTo(decodeX(0.74814814f), decodeY(0.8f));
+        path.lineTo(decodeX(0.4037037f), decodeY(1.8425925f));
+        path.lineTo(decodeX(0.4f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6f), decodeY(2.6f));
+        path.lineTo(decodeX(0.5925926f), decodeY(2.225926f));
+        path.lineTo(decodeX(0.916f), decodeY(0.996f));
+        path.lineTo(decodeX(2.4f), decodeY(1.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath11() {
+        path.reset();
+        path.moveTo(decodeX(2.2f), decodeY(2.2f));
+        path.lineTo(decodeX(2.2f), decodeY(2.2f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath12() {
+        path.reset();
+        path.moveTo(decodeX(0.6f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6f), decodeY(2.2f));
+        path.lineTo(decodeX(0.8f), decodeY(1.3333334f));
+        path.lineTo(decodeX(2.8f), decodeY(1.3333334f));
+        path.lineTo(decodeX(2.8f), decodeY(1.6666667f));
+        path.lineTo(decodeX(2.6f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6f), decodeY(2.6f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath13() {
+        path.reset();
+        path.moveTo(decodeX(0.2f), decodeY(2.6f));
+        path.lineTo(decodeX(0.4f), decodeY(2.6f));
+        path.lineTo(decodeX(0.4f), decodeY(2.0f));
+        path.lineTo(decodeX(0.8f), decodeY(1.1666666f));
+        path.lineTo(decodeX(2.4f), decodeY(1.1666666f));
+        path.lineTo(decodeX(2.4f), decodeY(0.6f));
+        path.lineTo(decodeX(1.5f), decodeY(0.6f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.4f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.2f));
+        path.lineTo(decodeX(0.6f), decodeY(0.2f));
+        path.lineTo(decodeX(0.6f), decodeY(0.4f));
+        path.lineTo(decodeX(0.4f), decodeY(0.6f));
+        path.lineTo(decodeX(0.2f), decodeY(0.6f));
+        path.lineTo(decodeX(0.2f), decodeY(2.6f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath14() {
+        path.reset();
+        path.moveTo(decodeX(3.0f), decodeY(1.1666666f));
+        path.lineTo(decodeX(3.0f), decodeY(1.3333334f));
+        path.lineTo(decodeX(2.4f), decodeY(1.3333334f));
+        path.lineTo(decodeX(2.4f), decodeY(0.6f));
+        path.lineTo(decodeX(1.5f), decodeY(0.6f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.4f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.2f));
+        path.lineTo(decodeX(0.5888889f), decodeY(0.20370372f));
+        path.lineTo(decodeX(0.5962963f), decodeY(0.34814817f));
+        path.lineTo(decodeX(0.34814817f), decodeY(0.6f));
+        path.lineTo(decodeX(0.2f), decodeY(0.6f));
+        path.lineTo(decodeX(0.2f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(2.0f));
+        path.lineTo(decodeX(2.6f), decodeY(1.8333333f));
+        path.lineTo(decodeX(2.916f), decodeY(1.3533334f));
+        path.lineTo(decodeX(2.98f), decodeY(1.3766667f));
+        path.lineTo(decodeX(2.8f), decodeY(1.8333333f));
+        path.lineTo(decodeX(2.8f), decodeY(2.0f));
+        path.lineTo(decodeX(2.8f), decodeY(2.6f));
+        path.lineTo(decodeX(2.6f), decodeY(2.8f));
+        path.lineTo(decodeX(0.2f), decodeY(2.8f));
+        path.lineTo(decodeX(0.0f), decodeY(2.6f));
+        path.lineTo(decodeX(0.0f), decodeY(0.65185183f));
+        path.lineTo(decodeX(0.63703704f), decodeY(0.0f));
+        path.lineTo(decodeX(1.3333334f), decodeY(0.0f));
+        path.lineTo(decodeX(1.5925925f), decodeY(0.4f));
+        path.lineTo(decodeX(2.4f), decodeY(0.4f));
+        path.lineTo(decodeX(2.6f), decodeY(0.6f));
+        path.lineTo(decodeX(2.6f), decodeY(1.1666666f));
+        path.lineTo(decodeX(3.0f), decodeY(1.1666666f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath15() {
+        path.reset();
+        path.moveTo(decodeX(2.4f), decodeY(1.3333334f));
+        path.lineTo(decodeX(2.4f), decodeY(1.1666666f));
+        path.lineTo(decodeX(0.74f), decodeY(1.1666666f));
+        path.lineTo(decodeX(0.4f), decodeY(2.0f));
+        path.lineTo(decodeX(0.4f), decodeY(2.6f));
+        path.lineTo(decodeX(0.6f), decodeY(2.6f));
+        path.lineTo(decodeX(0.5925926f), decodeY(2.225926f));
+        path.lineTo(decodeX(0.8f), decodeY(1.3333334f));
+        path.lineTo(decodeX(2.4f), decodeY(1.3333334f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath16() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.0f));
+        path.lineTo(decodeX(1.2397541f), decodeY(0.70163935f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Path2D decodePath17() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.0f));
+        path.lineTo(decodeX(1.25f), decodeY(0.0f));
+        path.lineTo(decodeX(0.70819676f), decodeY(2.9901638f));
+        path.lineTo(decodeX(0.0f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+
+
+    private Paint decodeGradient1(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.046296295f * w) + x, (0.9675926f * h) + y, (0.4861111f * w) + x, (0.5324074f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color3,
+                            decodeColor(color3,color4,0.5f),
+                            color4});
+    }
+
+    private Paint decodeGradient2(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color5,
+                            decodeColor(color5,color6,0.5f),
+                            color6});
+    }
+
+    private Paint decodeGradient3(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.04191617f,0.10329342f,0.16467066f,0.24550897f,0.3263473f,0.6631737f,1.0f },
+                new Color[] { color10,
+                            decodeColor(color10,color11,0.5f),
+                            color11,
+                            decodeColor(color11,color12,0.5f),
+                            color12,
+                            decodeColor(color12,color13,0.5f),
+                            color13});
+    }
+
+    private Paint decodeGradient4(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color5,
+                            decodeColor(color5,color14,0.5f),
+                            color14});
+    }
+
+    private Paint decodeGradient5(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color18,
+                            decodeColor(color18,color19,0.5f),
+                            color19});
+    }
+
+    private Paint decodeGradient6(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.12724552f,0.25449103f,0.62724555f,1.0f },
+                new Color[] { color20,
+                            decodeColor(color20,color21,0.5f),
+                            color21,
+                            decodeColor(color21,color22,0.5f),
+                            color22});
+    }
+
+    private Paint decodeGradient7(Shape s) {
+        Rectangle2D bounds = s.getBounds2D();
+        float x = (float)bounds.getX();
+        float y = (float)bounds.getY();
+        float w = (float)bounds.getWidth();
+        float h = (float)bounds.getHeight();
+        return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y,
+                new float[] { 0.0f,0.5f,1.0f },
+                new Color[] { color24,
+                            decodeColor(color24,color25,0.5f),
+                            color25});
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generated/javax/swing/plaf/nimbus/TreeTreeCellPainter.java	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+package javax.swing.plaf.nimbus;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+import javax.swing.*;
+import javax.swing.Painter;
+
+
+public final class TreeTreeCellPainter extends AbstractRegionPainter {
+    //package private integers representing the available states that
+    //this painter will paint. These are used when creating a new instance
+    //of TreeTreeCellPainter to determine which region/state is being painted
+    //by that instance.
+    static final int BACKGROUND_ENABLED = 1;
+    static final int BACKGROUND_ENABLED_FOCUSED = 2;
+    static final int BACKGROUND_ENABLED_SELECTED = 3;
+    static final int BACKGROUND_SELECTED_FOCUSED = 4;
+
+
+    private int state; //refers to one of the static final ints above
+    private PaintContext ctx;
+
+    //the following 4 variables are reused during the painting code of the layers
+    private Path2D path = new Path2D.Float();
+    private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
+    private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
+    private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
+
+    //All Colors used for painting are stored here. Ideally, only those colors being used
+    //by a particular instance of TreeTreeCellPainter would be created. For the moment at least,
+    //however, all are created for each instance.
+    private Color color1 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0);
+    private Color color2 = decodeColor("nimbusSelectionBackground", 0.0f, 0.0f, 0.0f, 0);
+
+
+    //Array of current component colors, updated in each paint call
+    private Object[] componentColors;
+
+    public TreeTreeCellPainter(PaintContext ctx, int state) {
+        super();
+        this.state = state;
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
+        //populate componentColors array with colors calculated in getExtendedCacheKeys call
+        componentColors = extendedCacheKeys;
+        //generate this entire method. Each state/bg/fg/border combo that has
+        //been painted gets its own KEY and paint method.
+        switch(state) {
+            case BACKGROUND_ENABLED_FOCUSED: paintBackgroundEnabledAndFocused(g); break;
+            case BACKGROUND_ENABLED_SELECTED: paintBackgroundEnabledAndSelected(g); break;
+            case BACKGROUND_SELECTED_FOCUSED: paintBackgroundSelectedAndFocused(g); break;
+
+        }
+    }
+        
+
+
+    @Override
+    protected final PaintContext getPaintContext() {
+        return ctx;
+    }
+
+    private void paintBackgroundEnabledAndFocused(Graphics2D g) {
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+
+    }
+
+    private void paintBackgroundEnabledAndSelected(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color2);
+        g.fill(rect);
+
+    }
+
+    private void paintBackgroundSelectedAndFocused(Graphics2D g) {
+        rect = decodeRect1();
+        g.setPaint(color2);
+        g.fill(rect);
+        path = decodePath1();
+        g.setPaint(color1);
+        g.fill(path);
+
+    }
+
+
+
+    private Path2D decodePath1() {
+        path.reset();
+        path.moveTo(decodeX(0.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(3.0f));
+        path.lineTo(decodeX(3.0f), decodeY(3.0f));
+        path.lineTo(decodeX(3.0f), decodeY(0.0f));
+        path.lineTo(decodeX(0.24000001f), decodeY(0.0f));
+        path.lineTo(decodeX(0.24000001f), decodeY(0.24000001f));
+        path.lineTo(decodeX(2.7600007f), decodeY(0.24000001f));
+        path.lineTo(decodeX(2.7600007f), decodeY(2.7599998f));
+        path.lineTo(decodeX(0.24000001f), decodeY(2.7599998f));
+        path.lineTo(decodeX(0.24000001f), decodeY(0.0f));
+        path.lineTo(decodeX(0.0f), decodeY(0.0f));
+        path.closePath();
+        return path;
+    }
+
+    private Rectangle2D decodeRect1() {
+            rect.setRect(decodeX(0.0f), //x
+                         decodeY(0.0f), //y
+                         decodeX(3.0f) - decodeX(0.0f), //width
+                         decodeY(3.0f) - decodeY(0.0f)); //height
+        return rect;
+    }
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/icedtea-stop-nimbus-generation.patch	Thu May 21 13:45:49 2009 +0100
@@ -0,0 +1,14 @@
+diff -Nru openjdk.orig/jdk/make/tools/Makefile openjdk/jdk/make/tools/Makefile
+--- openjdk.orig/jdk/make/tools/Makefile	2009-05-18 22:14:05.000000000 +0100
++++ openjdk/jdk/make/tools/Makefile	2009-05-21 12:35:38.000000000 +0100
+@@ -53,10 +53,6 @@
+   spp                       \
+   CharsetMapping
+ 
+-ifndef DISABLE_NIMBUS
+-  SUBDIRS += swing-nimbus
+-endif
+-
+ all build clean clobber::
+ 	$(SUBDIRS-loop)
+