From 07b78716af6a9d7c9fd1e94d9baf94a52c873947 Mon Sep 17 00:00:00 2001
From: Andrew Haley <aph@redhat.com>
Date: Fri, 30 Sep 2016 16:24:48 +0000
Subject: Makefile.def: Remove libjava.

2016-09-30  Andrew Haley  <aph@redhat.com>

	* Makefile.def: Remove libjava.
	* Makefile.tpl: Likewise.
	* Makefile.in: Regenerate.
	* configure.ac: Likewise.
	* configure: Likewise.
	* gcc/java: Remove.
	* libjava: Likewise.

From-SVN: r240662
---
 .../javax/swing/plaf/ActionMapUIResource.java      |   62 -
 .../javax/swing/plaf/BorderUIResource.java         |  930 -----
 libjava/classpath/javax/swing/plaf/ButtonUI.java   |   52 -
 .../classpath/javax/swing/plaf/ColorChooserUI.java |   58 -
 .../javax/swing/plaf/ColorUIResource.java          |  121 -
 libjava/classpath/javax/swing/plaf/ComboBoxUI.java |   92 -
 .../swing/plaf/ComponentInputMapUIResource.java    |   68 -
 .../classpath/javax/swing/plaf/ComponentUI.java    |  331 --
 .../classpath/javax/swing/plaf/DesktopIconUI.java  |   56 -
 .../classpath/javax/swing/plaf/DesktopPaneUI.java  |   58 -
 .../javax/swing/plaf/DimensionUIResource.java      |   66 -
 .../classpath/javax/swing/plaf/FileChooserUI.java  |  138 -
 .../classpath/javax/swing/plaf/FontUIResource.java |   99 -
 .../classpath/javax/swing/plaf/IconUIResource.java |  124 -
 .../javax/swing/plaf/InputMapUIResource.java       |   61 -
 .../javax/swing/plaf/InsetsUIResource.java         |   76 -
 .../javax/swing/plaf/InternalFrameUI.java          |   59 -
 libjava/classpath/javax/swing/plaf/LabelUI.java    |   59 -
 libjava/classpath/javax/swing/plaf/ListUI.java     |  114 -
 libjava/classpath/javax/swing/plaf/MenuBarUI.java  |   59 -
 libjava/classpath/javax/swing/plaf/MenuItemUI.java |   59 -
 .../classpath/javax/swing/plaf/OptionPaneUI.java   |   75 -
 libjava/classpath/javax/swing/plaf/PanelUI.java    |   58 -
 .../classpath/javax/swing/plaf/PopupMenuUI.java    |  117 -
 .../classpath/javax/swing/plaf/ProgressBarUI.java  |   59 -
 libjava/classpath/javax/swing/plaf/RootPaneUI.java |   58 -
 .../classpath/javax/swing/plaf/ScrollBarUI.java    |   58 -
 .../classpath/javax/swing/plaf/ScrollPaneUI.java   |   59 -
 .../classpath/javax/swing/plaf/SeparatorUI.java    |   59 -
 libjava/classpath/javax/swing/plaf/SliderUI.java   |   59 -
 libjava/classpath/javax/swing/plaf/SpinnerUI.java  |   59 -
 .../classpath/javax/swing/plaf/SplitPaneUI.java    |  133 -
 .../classpath/javax/swing/plaf/TabbedPaneUI.java   |  110 -
 .../classpath/javax/swing/plaf/TableHeaderUI.java  |   59 -
 libjava/classpath/javax/swing/plaf/TableUI.java    |   59 -
 libjava/classpath/javax/swing/plaf/TextUI.java     |  281 --
 libjava/classpath/javax/swing/plaf/ToolBarUI.java  |   59 -
 libjava/classpath/javax/swing/plaf/ToolTipUI.java  |   59 -
 libjava/classpath/javax/swing/plaf/TreeUI.java     |  211 --
 libjava/classpath/javax/swing/plaf/UIResource.java |   59 -
 libjava/classpath/javax/swing/plaf/ViewportUI.java |   60 -
 .../javax/swing/plaf/basic/BasicArrowButton.java   |  422 ---
 .../javax/swing/plaf/basic/BasicBorders.java       | 1768 ---------
 .../swing/plaf/basic/BasicButtonListener.java      |  370 --
 .../javax/swing/plaf/basic/BasicButtonUI.java      |  636 ----
 .../swing/plaf/basic/BasicCheckBoxMenuItemUI.java  |  102 -
 .../javax/swing/plaf/basic/BasicCheckBoxUI.java    |   75 -
 .../swing/plaf/basic/BasicColorChooserUI.java      |  344 --
 .../swing/plaf/basic/BasicComboBoxEditor.java      |  181 -
 .../swing/plaf/basic/BasicComboBoxRenderer.java    |  151 -
 .../javax/swing/plaf/basic/BasicComboBoxUI.java    | 1410 -------
 .../javax/swing/plaf/basic/BasicComboPopup.java    | 1104 ------
 .../javax/swing/plaf/basic/BasicDesktopIconUI.java |  592 ---
 .../javax/swing/plaf/basic/BasicDesktopPaneUI.java |  470 ---
 .../swing/plaf/basic/BasicDirectoryModel.java      |  586 ---
 .../javax/swing/plaf/basic/BasicEditorPaneUI.java  |   96 -
 .../javax/swing/plaf/basic/BasicFileChooserUI.java | 1437 -------
 .../plaf/basic/BasicFormattedTextFieldUI.java      |   69 -
 .../javax/swing/plaf/basic/BasicGraphicsUtils.java |  821 ----
 .../javax/swing/plaf/basic/BasicHTML.java          |  471 ---
 .../javax/swing/plaf/basic/BasicIconFactory.java   |  328 --
 .../plaf/basic/BasicInternalFrameTitlePane.java    | 1015 -----
 .../swing/plaf/basic/BasicInternalFrameUI.java     | 1786 ---------
 .../javax/swing/plaf/basic/BasicLabelUI.java       |  542 ---
 .../javax/swing/plaf/basic/BasicListUI.java        | 1421 -------
 .../javax/swing/plaf/basic/BasicLookAndFeel.java   | 1734 ---------
 .../javax/swing/plaf/basic/BasicMenuBarUI.java     |  481 ---
 .../javax/swing/plaf/basic/BasicMenuItemUI.java    | 1339 -------
 .../javax/swing/plaf/basic/BasicMenuUI.java        |  678 ----
 .../javax/swing/plaf/basic/BasicOptionPaneUI.java  | 1404 -------
 .../javax/swing/plaf/basic/BasicPanelUI.java       |  132 -
 .../swing/plaf/basic/BasicPasswordFieldUI.java     |   74 -
 .../plaf/basic/BasicPopupMenuSeparatorUI.java      |  114 -
 .../javax/swing/plaf/basic/BasicPopupMenuUI.java   | 1019 -----
 .../javax/swing/plaf/basic/BasicProgressBarUI.java |  962 -----
 .../plaf/basic/BasicRadioButtonMenuItemUI.java     |  101 -
 .../javax/swing/plaf/basic/BasicRadioButtonUI.java |  301 --
 .../javax/swing/plaf/basic/BasicRootPaneUI.java    |  292 --
 .../javax/swing/plaf/basic/BasicScrollBarUI.java   | 1513 --------
 .../javax/swing/plaf/basic/BasicScrollPaneUI.java  |  823 ----
 .../javax/swing/plaf/basic/BasicSeparatorUI.java   |  252 --
 .../javax/swing/plaf/basic/BasicSliderUI.java      | 2339 ------------
 .../javax/swing/plaf/basic/BasicSpinnerUI.java     |  561 ---
 .../swing/plaf/basic/BasicSplitPaneDivider.java    | 1077 ------
 .../javax/swing/plaf/basic/BasicSplitPaneUI.java   | 1623 --------
 .../javax/swing/plaf/basic/BasicTabbedPaneUI.java  | 4003 --------------------
 .../javax/swing/plaf/basic/BasicTableHeaderUI.java |  566 ---
 .../javax/swing/plaf/basic/BasicTableUI.java       | 1410 -------
 .../javax/swing/plaf/basic/BasicTextAreaUI.java    |  116 -
 .../javax/swing/plaf/basic/BasicTextFieldUI.java   |  118 -
 .../javax/swing/plaf/basic/BasicTextPaneUI.java    |   92 -
 .../javax/swing/plaf/basic/BasicTextUI.java        | 1538 --------
 .../swing/plaf/basic/BasicToggleButtonUI.java      |  134 -
 .../swing/plaf/basic/BasicToolBarSeparatorUI.java  |  124 -
 .../javax/swing/plaf/basic/BasicToolBarUI.java     | 1610 --------
 .../javax/swing/plaf/basic/BasicToolTipUI.java     |  292 --
 .../javax/swing/plaf/basic/BasicTreeUI.java        | 3939 -------------------
 .../javax/swing/plaf/basic/BasicViewportUI.java    |   75 -
 .../javax/swing/plaf/basic/ComboPopup.java         |  103 -
 .../javax/swing/plaf/basic/DefaultMenuLayout.java  |   78 -
 .../javax/swing/plaf/basic/SharedUIDefaults.java   |   91 -
 .../swing/plaf/basic/doc-files/BasicBorders-1.png  |  Bin 454 -> 0 bytes
 .../swing/plaf/basic/doc-files/BasicBorders-2.png  |  Bin 857 -> 0 bytes
 .../doc-files/BasicBorders.ButtonBorder-1.png      |  Bin 1787 -> 0 bytes
 .../basic/doc-files/BasicBorders.FieldBorder-1.png |  Bin 5267 -> 0 bytes
 .../doc-files/BasicBorders.MarginBorder-1.png      |  Bin 14735 -> 0 bytes
 .../doc-files/BasicBorders.MenuBarBorder-1.png     |  Bin 3180 -> 0 bytes
 .../doc-files/BasicBorders.RadioButtonBorder-1.png |  Bin 2667 -> 0 bytes
 .../doc-files/BasicBorders.SplitPaneBorder-1.png   |  Bin 8803 -> 0 bytes
 .../doc-files/BasicBorders.SplitPaneBorder-2.png   |  Bin 5976 -> 0 bytes
 .../BasicBorders.SplitPaneDividerBorder-1.png      |  Bin 7169 -> 0 bytes
 .../BasicBorders.ToggleButtonBorder-1.png          |  Bin 1874 -> 0 bytes
 .../plaf/basic/doc-files/BasicGraphicsUtils-1.png  |  Bin 4844 -> 0 bytes
 .../plaf/basic/doc-files/BasicGraphicsUtils-2.png  |  Bin 3771 -> 0 bytes
 .../plaf/basic/doc-files/BasicGraphicsUtils-3.png  |  Bin 13480 -> 0 bytes
 .../plaf/basic/doc-files/BasicGraphicsUtils-4.png  |  Bin 4832 -> 0 bytes
 .../plaf/basic/doc-files/BasicGraphicsUtils-5.png  |  Bin 6884 -> 0 bytes
 .../plaf/basic/doc-files/BasicGraphicsUtils-6.png  |  Bin 6816 -> 0 bytes
 .../plaf/basic/doc-files/BasicGraphicsUtils-7.png  |  Bin 3676 -> 0 bytes
 .../classpath/javax/swing/plaf/basic/package.html  |   46 -
 .../javax/swing/plaf/doc-files/ComponentUI-1.dia   |  Bin 3085 -> 0 bytes
 .../javax/swing/plaf/doc-files/ComponentUI-1.png   |  Bin 32683 -> 0 bytes
 .../javax/swing/plaf/doc-files/TreeUI-1.png        |  Bin 8660 -> 0 bytes
 .../javax/swing/plaf/metal/DefaultMetalTheme.java  |  305 --
 .../javax/swing/plaf/metal/MetalBorders.java       | 1626 --------
 .../swing/plaf/metal/MetalButtonListener.java      |   74 -
 .../javax/swing/plaf/metal/MetalButtonUI.java      |  298 --
 .../javax/swing/plaf/metal/MetalCheckBoxIcon.java  |  142 -
 .../javax/swing/plaf/metal/MetalCheckBoxUI.java    |   88 -
 .../swing/plaf/metal/MetalComboBoxButton.java      |  294 --
 .../swing/plaf/metal/MetalComboBoxEditor.java      |  190 -
 .../javax/swing/plaf/metal/MetalComboBoxIcon.java  |  102 -
 .../javax/swing/plaf/metal/MetalComboBoxUI.java    |  372 --
 .../javax/swing/plaf/metal/MetalDesktopIconUI.java |   72 -
 .../javax/swing/plaf/metal/MetalFileChooserUI.java | 2120 -----------
 .../javax/swing/plaf/metal/MetalIconFactory.java   | 2626 -------------
 .../plaf/metal/MetalInternalFrameTitlePane.java    |  457 ---
 .../swing/plaf/metal/MetalInternalFrameUI.java     |  183 -
 .../javax/swing/plaf/metal/MetalLabelUI.java       |  108 -
 .../javax/swing/plaf/metal/MetalLookAndFeel.java   | 1372 -------
 .../javax/swing/plaf/metal/MetalMenuBarUI.java     |   94 -
 .../plaf/metal/MetalPopupMenuSeparatorUI.java      |   77 -
 .../javax/swing/plaf/metal/MetalProgressBarUI.java |  147 -
 .../javax/swing/plaf/metal/MetalRadioButtonUI.java |  183 -
 .../javax/swing/plaf/metal/MetalRootPaneUI.java    | 1075 ------
 .../javax/swing/plaf/metal/MetalScrollBarUI.java   |  584 ---
 .../javax/swing/plaf/metal/MetalScrollButton.java  |  483 ---
 .../javax/swing/plaf/metal/MetalScrollPaneUI.java  |  159 -
 .../javax/swing/plaf/metal/MetalSeparatorUI.java   |  131 -
 .../javax/swing/plaf/metal/MetalSliderUI.java      |  475 ---
 .../swing/plaf/metal/MetalSplitPaneDivider.java    |  264 --
 .../javax/swing/plaf/metal/MetalSplitPaneUI.java   |   89 -
 .../javax/swing/plaf/metal/MetalTabbedPaneUI.java  | 1269 -------
 .../javax/swing/plaf/metal/MetalTextFieldUI.java   |   82 -
 .../javax/swing/plaf/metal/MetalTheme.java         |  576 ---
 .../swing/plaf/metal/MetalToggleButtonUI.java      |  230 --
 .../javax/swing/plaf/metal/MetalToolBarUI.java     |  298 --
 .../javax/swing/plaf/metal/MetalToolTipUI.java     |  276 --
 .../javax/swing/plaf/metal/MetalTreeUI.java        |  317 --
 .../javax/swing/plaf/metal/MetalUtils.java         |  597 ---
 .../javax/swing/plaf/metal/OceanTheme.java         |  318 --
 .../classpath/javax/swing/plaf/metal/package.html  |   55 -
 .../javax/swing/plaf/multi/MultiButtonUI.java      |  352 --
 .../swing/plaf/multi/MultiColorChooserUI.java      |  352 --
 .../javax/swing/plaf/multi/MultiComboBoxUI.java    |  430 ---
 .../javax/swing/plaf/multi/MultiDesktopIconUI.java |  352 --
 .../javax/swing/plaf/multi/MultiDesktopPaneUI.java |  352 --
 .../javax/swing/plaf/multi/MultiFileChooserUI.java |  511 ---
 .../swing/plaf/multi/MultiInternalFrameUI.java     |  353 --
 .../javax/swing/plaf/multi/MultiLabelUI.java       |  352 --
 .../javax/swing/plaf/multi/MultiListUI.java        |  449 ---
 .../javax/swing/plaf/multi/MultiLookAndFeel.java   |  243 --
 .../javax/swing/plaf/multi/MultiMenuBarUI.java     |  352 --
 .../javax/swing/plaf/multi/MultiMenuItemUI.java    |  352 --
 .../javax/swing/plaf/multi/MultiOptionPaneUI.java  |  398 --
 .../javax/swing/plaf/multi/MultiPanelUI.java       |  352 --
 .../javax/swing/plaf/multi/MultiPopupMenuUI.java   |  352 --
 .../javax/swing/plaf/multi/MultiProgressBarUI.java |  352 --
 .../javax/swing/plaf/multi/MultiRootPaneUI.java    |  352 --
 .../javax/swing/plaf/multi/MultiScrollBarUI.java   |  352 --
 .../javax/swing/plaf/multi/MultiScrollPaneUI.java  |  352 --
 .../javax/swing/plaf/multi/MultiSeparatorUI.java   |  352 --
 .../javax/swing/plaf/multi/MultiSliderUI.java      |  352 --
 .../javax/swing/plaf/multi/MultiSpinnerUI.java     |  352 --
 .../javax/swing/plaf/multi/MultiSplitPaneUI.java   |  494 ---
 .../javax/swing/plaf/multi/MultiTabbedPaneUI.java  |  447 ---
 .../javax/swing/plaf/multi/MultiTableHeaderUI.java |  352 --
 .../javax/swing/plaf/multi/MultiTableUI.java       |  352 --
 .../javax/swing/plaf/multi/MultiTextUI.java        |  617 ---
 .../javax/swing/plaf/multi/MultiToolBarUI.java     |  352 --
 .../javax/swing/plaf/multi/MultiToolTipUI.java     |  352 --
 .../javax/swing/plaf/multi/MultiTreeUI.java        |  628 ---
 .../javax/swing/plaf/multi/MultiViewportUI.java    |  352 --
 .../classpath/javax/swing/plaf/multi/package.html  |   46 -
 libjava/classpath/javax/swing/plaf/package.html    |   47 -
 .../javax/swing/plaf/synth/ColorType.java          |  135 -
 .../classpath/javax/swing/plaf/synth/Region.java   |  474 ---
 .../javax/swing/plaf/synth/SynthConstants.java     |   85 -
 .../javax/swing/plaf/synth/SynthContext.java       |  134 -
 .../javax/swing/plaf/synth/SynthGraphicsUtils.java |  289 --
 .../javax/swing/plaf/synth/SynthLookAndFeel.java   |  279 --
 .../javax/swing/plaf/synth/SynthPainter.java       | 1999 ----------
 .../javax/swing/plaf/synth/SynthStyle.java         |  203 -
 .../javax/swing/plaf/synth/SynthStyleFactory.java  |   64 -
 .../classpath/javax/swing/plaf/synth/package.html  |   47 -
 205 files changed, 85816 deletions(-)
 delete mode 100644 libjava/classpath/javax/swing/plaf/ActionMapUIResource.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/BorderUIResource.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/ButtonUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/ColorChooserUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/ColorUIResource.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/ComboBoxUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/ComponentInputMapUIResource.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/ComponentUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/DesktopIconUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/DesktopPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/DimensionUIResource.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/FileChooserUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/FontUIResource.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/IconUIResource.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/InputMapUIResource.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/InsetsUIResource.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/InternalFrameUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/LabelUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/ListUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/MenuBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/MenuItemUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/OptionPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/PanelUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/PopupMenuUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/ProgressBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/RootPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/ScrollBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/ScrollPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/SeparatorUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/SliderUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/SpinnerUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/SplitPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/TabbedPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/TableHeaderUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/TableUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/TextUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/ToolBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/ToolTipUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/TreeUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/UIResource.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/ViewportUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicArrowButton.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicBorders.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicButtonListener.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicButtonUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicCheckBoxUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicColorChooserUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicComboBoxEditor.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicComboBoxRenderer.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicComboBoxUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicComboPopup.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicDesktopIconUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicDesktopPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicDirectoryModel.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicEditorPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicFileChooserUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicFormattedTextFieldUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicGraphicsUtils.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicHTML.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicIconFactory.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicInternalFrameUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicLabelUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicListUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicLookAndFeel.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicMenuBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicMenuItemUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicMenuUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicOptionPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicPanelUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicPasswordFieldUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicPopupMenuUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicProgressBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicRootPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicScrollBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicScrollPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicSeparatorUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicSliderUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicSpinnerUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicSplitPaneDivider.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicSplitPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicTabbedPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicTableHeaderUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicTableUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicTextAreaUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicTextFieldUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicTextPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicTextUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicToggleButtonUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicToolBarSeparatorUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicToolBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicToolTipUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicTreeUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/BasicViewportUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/ComboPopup.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/DefaultMenuLayout.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/SharedUIDefaults.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders-1.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders-2.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.ButtonBorder-1.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.FieldBorder-1.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.MarginBorder-1.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.MenuBarBorder-1.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.RadioButtonBorder-1.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-1.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-2.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneDividerBorder-1.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.ToggleButtonBorder-1.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-1.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-2.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-3.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-4.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-5.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-6.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-7.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/basic/package.html
 delete mode 100644 libjava/classpath/javax/swing/plaf/doc-files/ComponentUI-1.dia
 delete mode 100644 libjava/classpath/javax/swing/plaf/doc-files/ComponentUI-1.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/doc-files/TreeUI-1.png
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/DefaultMetalTheme.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalBorders.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalButtonListener.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalButtonUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalCheckBoxIcon.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalCheckBoxUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalComboBoxButton.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalComboBoxEditor.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalComboBoxIcon.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalComboBoxUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalDesktopIconUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalFileChooserUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalIconFactory.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalInternalFrameUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalLabelUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalLookAndFeel.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalMenuBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalPopupMenuSeparatorUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalProgressBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalRadioButtonUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalRootPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalScrollBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalScrollButton.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalScrollPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalSeparatorUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalSliderUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalSplitPaneDivider.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalSplitPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalTabbedPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalTextFieldUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalTheme.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalToggleButtonUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalToolBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalToolTipUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalTreeUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/MetalUtils.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/OceanTheme.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/metal/package.html
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiButtonUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiColorChooserUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiComboBoxUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiDesktopIconUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiDesktopPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiFileChooserUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiInternalFrameUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiLabelUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiListUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiLookAndFeel.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiMenuBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiMenuItemUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiOptionPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiPanelUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiPopupMenuUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiProgressBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiRootPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiScrollBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiScrollPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiSeparatorUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiSliderUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiSpinnerUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiSplitPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiTabbedPaneUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiTableHeaderUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiTableUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiTextUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiToolBarUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiToolTipUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiTreeUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/MultiViewportUI.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/multi/package.html
 delete mode 100644 libjava/classpath/javax/swing/plaf/package.html
 delete mode 100644 libjava/classpath/javax/swing/plaf/synth/ColorType.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/synth/Region.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/synth/SynthConstants.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/synth/SynthContext.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/synth/SynthGraphicsUtils.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/synth/SynthLookAndFeel.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/synth/SynthPainter.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/synth/SynthStyle.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/synth/SynthStyleFactory.java
 delete mode 100644 libjava/classpath/javax/swing/plaf/synth/package.html

(limited to 'libjava/classpath/javax/swing/plaf')

diff --git a/libjava/classpath/javax/swing/plaf/ActionMapUIResource.java b/libjava/classpath/javax/swing/plaf/ActionMapUIResource.java
deleted file mode 100644
index 07292fe..0000000
--- a/libjava/classpath/javax/swing/plaf/ActionMapUIResource.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/* ActionMapUIResource.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-import javax.swing.ActionMap;
-
-
-/**
- * An <code>ActionMap</code> that implements the {@link UIResource}
- * interface to indicate that it belongs to a pluggable
- * LookAndFeel.
- *
- * @see javax.swing.ActionMap
- *
- * @author Andrew Selkirk
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public class ActionMapUIResource extends ActionMap implements UIResource
-{
-  /**
-   * Constructs a new ActionMapUIResource.
-   */
-  public ActionMapUIResource()
-  {
-    /* The constructor does nothing. */
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/BorderUIResource.java b/libjava/classpath/javax/swing/plaf/BorderUIResource.java
deleted file mode 100644
index 1742494..0000000
--- a/libjava/classpath/javax/swing/plaf/BorderUIResource.java
+++ /dev/null
@@ -1,930 +0,0 @@
-/* BorderUIResource.java
-   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Font;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.io.Serializable;
-
-import javax.swing.Icon;
-import javax.swing.border.BevelBorder;
-import javax.swing.border.Border;
-import javax.swing.border.CompoundBorder;
-import javax.swing.border.EmptyBorder;
-import javax.swing.border.EtchedBorder;
-import javax.swing.border.LineBorder;
-import javax.swing.border.MatteBorder;
-import javax.swing.border.TitledBorder;
-
-/**
- * A wrapper for {@link javax.swing.border.Border} that also
- * implements the {@link UIResource} marker interface.  This is useful
- * for implementing pluggable look-and-feels: When switching the
- * current LookAndFeel, only those borders are replaced that are
- * marked as {@link UIResource}.  For this reason, a look-and-feel
- * should always install borders that implement
- * <code>UIResource</code>, such as the borders provided by this
- * class.
- *
- * @serial
- * @serialField delegate Border the <code>Border</code> wrapped
- *
- * @author Brian Jones (cbj@gnu.org)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public class BorderUIResource implements Border, UIResource, Serializable
-{
-  /**
-   * Verified using the <code>serialver</code> tool
-   * of Apple/Sun JDK 1.3.1 on MacOS X 10.1.5.
-   */
-  static final long serialVersionUID = -3440553684010079691L;
-
-
-  /**
-   * A shared instance of an {@link EtchedBorderUIResource}, or
-   * <code>null</code> if the {@link #getEtchedBorderUIResource()}
-   * method has not yet been called.
-   */
-  private static Border etchedBorderUIResource;
-
-
-  /**
-   * A shared instance of a {@link BevelBorderUIResource} whose
-   * <code>bevelType</code> is {@link
-   * javax.swing.border.BevelBorder#LOWERED}, or <code>null</code> if
-   * the {@link #getLoweredBevelBorderUIResource()} has not yet been
-   * called.
-   */
-  private static Border loweredBevelBorderUIResource;
-
-
-  /**
-   * A shared instance of a {@link BevelBorderUIResource} whose
-   * <code>bevelType</code> is {@link
-   * javax.swing.border.BevelBorder#RAISED}, or <code>null</code> if
-   * the {@link #getRaisedBevelBorderUIResource()} has not yet been
-   * called.
-   */
-  private static Border raisedBevelBorderUIResource;
-
-
-  /**
-   * A shared instance of a {@link LineBorderUIResource} for
-   * a one-pixel thick black line, or <code>null</code> if
-   * the {@link #getBlackLineBorderUIResource()} has not yet been
-   * called.
-   */
-  private static Border blackLineBorderUIResource;
-
-
-  /**
-   * Returns a shared instance of an etched border which also
-   * is marked as an {@link UIResource}.
-   *
-   * @see javax.swing.border.EtchedBorder
-   */
-  public static Border getEtchedBorderUIResource()
-  {
-    /* Swing is not designed to be thread-safe, so there is no
-     * need to synchronize the access to the global variable.
-     */
-    if (etchedBorderUIResource == null)
-      etchedBorderUIResource = new EtchedBorderUIResource();
-    return etchedBorderUIResource;
-  }
-
-
-  /**
-   * Returns a shared instance of {@link BevelBorderUIResource} whose
-   * <code>bevelType</code> is {@link
-   * javax.swing.border.BevelBorder#LOWERED}.
-   *
-   * @see javax.swing.border.BevelBorder
-   */
-  public static Border getLoweredBevelBorderUIResource()
-  {
-    /* Swing is not designed to be thread-safe, so there is no
-     * need to synchronize the access to the global variable.
-     */
-    if (loweredBevelBorderUIResource == null)
-      loweredBevelBorderUIResource = new BevelBorderUIResource(
-        BevelBorder.LOWERED);
-    return loweredBevelBorderUIResource;
-  }
-
-
-  /**
-   * Returns a shared instance of {@link BevelBorderUIResource} whose
-   * <code>bevelType</code> is {@link
-   * javax.swing.border.BevelBorder#RAISED}.
-   *
-   * @see javax.swing.border.BevelBorder
-   */
-  public static Border getRaisedBevelBorderUIResource()
-  {
-    /* Swing is not designed to be thread-safe, so there is no
-     * need to synchronize the access to the global variable.
-     */
-    if (raisedBevelBorderUIResource == null)
-      raisedBevelBorderUIResource = new BevelBorderUIResource(
-        BevelBorder.RAISED);
-    return raisedBevelBorderUIResource;
-  }
-
-
-  /**
-   * Returns a shared instance of {@link LineBorderUIResource} for
-   * a black, one-pixel width border.
-   *
-   * @see javax.swing.border.LineBorder
-   */
-  public static Border getBlackLineBorderUIResource()
-  {
-    /* Swing is not designed to be thread-safe, so there is no
-     * need to synchronize the access to the global variable.
-     */
-    if (blackLineBorderUIResource == null)
-      blackLineBorderUIResource = new LineBorderUIResource(Color.black);
-    return blackLineBorderUIResource;
-  }
-
-
-  /**
-   * The wrapped border.
-   */
-  private Border delegate;
-
-
-  /**
-   * Constructs a <code>BorderUIResource</code> for wrapping
-   * a <code>Border</code> object.
-   *
-   * @param delegate the border to be wrapped.
-   */
-  public BorderUIResource(Border delegate)
-  {
-    if (delegate == null)
-      throw new IllegalArgumentException();
-
-    this.delegate = delegate;
-  }
-
-
-  /**
-   * Paints the border around an enclosed component by calling
-   * the <code>paintBorder</code> method of the wrapped delegate.
-   *
-   * @param c the component whose border is to be painted.
-   * @param g the graphics for painting.
-   * @param x the horizontal position for painting the border.
-   * @param y the vertical position for painting the border.
-   * @param width the width of the available area for painting the border.
-   * @param height the height of the available area for painting the border.
-   */
-  public void paintBorder(Component c, Graphics g,
-                          int x, int y, int width, int height)
-  {
-    delegate.paintBorder(c, g, x, y, width, height);
-  }
-
-
-  /**
-   * Measures the width of this border by calling the
-   * <code>getBorderInsets</code> method of the wrapped
-   * delegate.
-   *
-   * @param c the component whose border is to be measured.
-   *
-   * @return an Insets object whose <code>left</code>, <code>right</code>,
-   *         <code>top</code> and <code>bottom</code> fields indicate the
-   *         width of the border at the respective edge.
-   */
-  public Insets getBorderInsets(Component c)
-  {
-    return delegate.getBorderInsets(c);
-  }
-
-
-  /**
-   * Determines whether this border fills every pixel in its area
-   * when painting by calling the <code>isBorderOpaque</code>
-   * method of the wrapped delegate.
-   *
-   * @return <code>true</code> if the border is fully opaque, or
-   *         <code>false</code> if some pixels of the background
-   *         can shine through the border.
-   */
-  public boolean isBorderOpaque()
-  {
-    return delegate.isBorderOpaque();
-  }
-
-
-  /**
-   * A {@link javax.swing.border.BevelBorder} that also implements the
-   * {@link UIResource} marker interface.  This is useful for
-   * implementing pluggable look-and-feels: When switching the current
-   * LookAndFeel, only those borders are replaced that are marked as
-   * {@link UIResource}.  For this reason, a look-and-feel should
-   * always install borders that implement <code>UIResource</code>,
-   * such as the borders provided by this class.
-   *
-   * @author Brian Jones (cbj@gnu.org)
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class BevelBorderUIResource
-    extends BevelBorder
-    implements UIResource, Serializable
-  {
-    private static final long serialVersionUID = -1275542891108351642L;
-
-    /**
-     * Constructs a BevelBorderUIResource whose colors will be derived
-     * from the background of the enclosed component. The background
-     * color is retrieved each time the border is painted, so a border
-     * constructed by this method will automatically reflect a change
-     * to the component&#x2019;s background color.
-     *
-     * <p><img src="../border/doc-files/BevelBorder-1.png"
-     * width="500" height="150"
-     * alt="[An illustration showing raised and lowered BevelBorders]" /></p>
-     *
-     * @param bevelType the desired appearance of the border. The value
-     *        must be either {@link javax.swing.border.BevelBorder#RAISED}
-     *        or {@link javax.swing.border.BevelBorder#LOWERED}.
-     *
-     * @throws IllegalArgumentException if <code>bevelType</code> has
-     *         an unsupported value.
-     */
-    public BevelBorderUIResource(int bevelType)
-    {
-      super(bevelType);
-    }
-
-
-    /**
-     * Constructs a BevelBorderUIResource given its appearance type
-     * and two colors for its highlight and shadow.
-     *
-     * <p><img src="../border/doc-files/BevelBorder-2.png" width="500"
-     * height="150" alt="[An illustration showing BevelBorders that were
-     * constructed with this method]" /></p>
-     *
-     * @param bevelType the desired appearance of the border. The value
-     *        must be either {@link javax.swing.border.BevelBorder#RAISED}
-     *        or {@link javax.swing.border.BevelBorder#LOWERED}.
-     *
-     * @param highlight the color that will be used for the inner side
-     *        of the highlighted edges (top and left if if
-     *        <code>bevelType</code> is {@link
-     *        javax.swing.border.BevelBorder#RAISED}; bottom and right
-     *        otherwise). The color for the outer side is a brightened
-     *        version of this color.
-     *
-     * @param shadow the color that will be used for the outer side of
-     *        the shadowed edges (bottom and right if
-     *        <code>bevelType</code> is {@link
-     *        javax.swing.border.BevelBorder#RAISED}; top and left
-     *        otherwise). The color for the inner side is a brightened
-     *        version of this color.
-     *
-     * @throws IllegalArgumentException if <code>bevelType</code> has
-     *         an unsupported value.
-     *
-     * @throws NullPointerException if <code>highlight</code> or
-     *         <code>shadow</code> is <code>null</code>.
-     */
-    public BevelBorderUIResource(int bevelType,
-                                 Color highlight,
-                                 Color shadow)
-    {
-      super(bevelType, highlight, shadow);
-    }
-
-
-    /**
-     * Constructs a BevelBorderUIResource given its appearance type
-     * and all its colors.
-     *
-     * <p><img src="../border/doc-files/BevelBorder-3.png" width="500"
-     * height="150" alt="[An illustration showing BevelBorders that
-     * were constructed with this method]" /></p>
-     *
-     * @param bevelType the desired appearance of the border. The value
-     *        must be either {@link javax.swing.border.BevelBorder#RAISED}
-     *        or {@link javax.swing.border.BevelBorder#LOWERED}.
-     *
-     * @param highlightOuter the color that will be used for the outer
-     *        side of the highlighted edges (top and left if
-     *        <code>bevelType</code> is {@link
-     *        javax.swing.border.BevelBorder#RAISED}; bottom and right
-     *        otherwise).
-     *
-     * @param highlightInner the color that will be used for the inner
-     *        side of the highlighted edges.
-     *
-     * @param shadowOuter the color that will be used for the outer
-     *        side of the shadowed edges (bottom and right if
-     *        <code>bevelType</code> is {@link
-     *        javax.swing.border.BevelBorder#RAISED}; top and left
-     *        otherwise).
-     *
-     * @param shadowInner the color that will be used for the inner
-     *        side of the shadowed edges.
-     *
-     * @throws IllegalArgumentException if <code>bevelType</code> has
-     *         an unsupported value.
-     *
-     * @throws NullPointerException if one of the passed colors
-     *         is <code>null</code>.
-     */
-    public BevelBorderUIResource(int bevelType,
-                                 Color highlightOuter,
-                                 Color highlightInner,
-                                 Color shadowOuter,
-                                 Color shadowInner)
-    {
-      super(bevelType,
-            highlightOuter, highlightInner,
-            shadowOuter, shadowInner);
-    }
-  }
-
-
-  /**
-   * A {@link javax.swing.border.CompoundBorder} that also implements the
-   * {@link UIResource} marker interface.  This is useful for
-   * implementing pluggable look-and-feels: When switching the current
-   * LookAndFeel, only those borders are replaced that are marked as
-   * {@link UIResource}.  For this reason, a look-and-feel should
-   * always install borders that implement <code>UIResource</code>,
-   * such as the borders provided by this class.
-   *
-   * @author Brian Jones (cbj@gnu.org)
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class CompoundBorderUIResource
-    extends CompoundBorder
-    implements UIResource, Serializable
-  {
-    private static final long serialVersionUID = 7550017084975167341L;
-
-    /**
-     * Constructs a CompoundBorderUIResource with the specified inside
-     * and outside borders.
-     *
-     * @param outsideBorder the outside border, which is painted to the
-     *        outside of both <code>insideBorder</code> and the enclosed
-     *        component. It is acceptable to pass <code>null</code>, in
-     *        which case no outside border is painted.
-     *
-     * @param insideBorder the inside border, which is painted to
-     *        between <code>outsideBorder</code> and the enclosed
-     *        component. It is acceptable to pass <code>null</code>, in
-     *        which case no inside border is painted.
-     */
-    public CompoundBorderUIResource(Border outsideBorder,
-                                    Border insideBorder)
-    {
-      super(outsideBorder, insideBorder);
-    }
-  }
-
-
-  /**
-   * An {@link javax.swing.border.EmptyBorder} that also implements the
-   * {@link UIResource} marker interface.  This is useful for
-   * implementing pluggable look-and-feels: When switching the current
-   * LookAndFeel, only those borders are replaced that are marked as
-   * {@link UIResource}.  For this reason, a look-and-feel should
-   * always install borders that implement <code>UIResource</code>,
-   * such as the borders provided by this class.
-   *
-   * <p><img src="../border/doc-files/EmptyBorder-1.png"
-   * width="290" height="200"
-   * alt="[An illustration of EmptyBorder]" /></p>
-   *
-   * @author Brian Jones (cbj@gnu.org)
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class EmptyBorderUIResource
-    extends EmptyBorder
-    implements UIResource, Serializable
-  {
-    private static final long serialVersionUID = -4914187529340071708L;
-
-    /**
-     * Constructs an empty border given the number of pixels required
-     * on each side.
-     *
-     * @param top the number of pixels that the border will need
-     *        for its top edge.
-     *
-     * @param left the number of pixels that the border will need
-     *        for its left edge.
-     *
-     * @param bottom the number of pixels that the border will need
-     *        for its bottom edge.
-     *
-     * @param right the number of pixels that the border will need
-     *        for its right edge.
-     */
-    public EmptyBorderUIResource(int top, int left, int bottom, int right)
-    {
-      super(top, left, bottom, right);
-    }
-
-
-    /**
-     * Constructs an empty border given the number of pixels required
-     * on each side, passed in an Insets object.
-     *
-     * @param insets the Insets for the new border.
-     */
-    public EmptyBorderUIResource(Insets insets)
-    {
-      super(insets);
-    }
-  }
-
-
-  /**
-   * An {@link javax.swing.border.EtchedBorder} that also implements the
-   * {@link UIResource} marker interface.  This is useful for
-   * implementing pluggable look-and-feels: When switching the current
-   * LookAndFeel, only those borders are replaced that are marked as
-   * {@link UIResource}.  For this reason, a look-and-feel should
-   * always install borders that implement <code>UIResource</code>,
-   * such as the borders provided by this class.
-   *
-   * <p><img src="../border/doc-files/EtchedBorder-1.png" width="500"
-   * height="200" alt="[An illustration of the two EtchedBorder
-   * variants]" /></p>
-   *
-   * @author Brian Jones (cbj@gnu.org)
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class EtchedBorderUIResource
-    extends EtchedBorder
-    implements UIResource, Serializable
-  {
-    private static final long serialVersionUID = -8186391754165296656L;
-
-    /**
-     * Constructs an EtchedBorderUIResource that appears lowered into
-     * the surface. The colors will be derived from the background
-     * color of the enclosed Component when the border gets painted.
-     */
-    public EtchedBorderUIResource()
-    {
-      super();
-    }
-
-
-    /**
-     * Constructs an EtchedBorderUIResource with the specified
-     * appearance. The colors will be derived from the background
-     * color of the enclosed Component when the border gets painted.
-     *
-     * <p><img src="../border/doc-files/EtchedBorder-1.png"
-     * width="500" height="200" alt="[An illustration of the two
-     * EtchedBorder variants]" /></p>
-     *
-     * @param etchType the desired appearance of the border. The value
-     *        must be either {@link javax.swing.border.EtchedBorder#RAISED}
-     *        or {@link javax.swing.border.EtchedBorder#LOWERED}.
-     *
-     * @throws IllegalArgumentException if <code>etchType</code> has
-     *         an unsupported value.
-     */
-    public EtchedBorderUIResource(int etchType)
-    {
-      super(etchType);
-    }
-
-
-    /**
-     * Constructs a lowered EtchedBorderUIResource, explicitly
-     * selecting the colors that will be used for highlight and
-     * shadow.
-     *
-     * @param highlight the color that will be used for painting
-     *        the highlight part of the border.
-     *
-     * @param shadow the color that will be used for painting
-     *        the shadow part of the border.
-     *
-     * @see EtchedBorderUIResource#EtchedBorderUIResource(int, Color, Color)
-     */
-    public EtchedBorderUIResource(Color highlight, Color shadow)
-    {
-      super(highlight, shadow);
-    }
-
-
-    /**
-     * Constructs an EtchedBorderUIResource with the specified
-     * appearance, explicitly selecting the colors that will be used
-     * for highlight and shadow.
-     *
-     * <p><img src="../border/doc-files/EtchedBorder-2.png" width="500"
-     * height="200" alt="[An illustration that shows which pixels get
-     * painted in what color]" /></p>
-     *
-     * @param etchType the desired appearance of the border. The value
-     *        must be either {@link javax.swing.border.EtchedBorder#RAISED}
-     *        or {@link javax.swing.border.EtchedBorder#LOWERED}.
-     *
-     * @param highlight the color that will be used for painting
-     *        the highlight part of the border.
-     *
-     * @param shadow the color that will be used for painting
-     *        the shadow part of the border.
-     *
-     * @throws IllegalArgumentException if <code>etchType</code> has
-     *         an unsupported value.
-     */
-    public EtchedBorderUIResource(int etchType,
-                                  Color highlight, Color shadow)
-    {
-      super(etchType, highlight, shadow);
-    }
-  }
-
-
-  /**
-   * A {@link javax.swing.border.LineBorder} that also implements the
-   * {@link UIResource} marker interface.  This is useful for
-   * implementing pluggable look-and-feels: When switching the current
-   * LookAndFeel, only those borders are replaced that are marked as
-   * {@link UIResource}.  For this reason, a look-and-feel should
-   * always install borders that implement <code>UIResource</code>,
-   * such as the borders provided by this class.
-   *
-   * <p><img src="../border/doc-files/LineBorder-1.png" width="500"
-   * height="200" alt="[An illustration of two LineBorders]" /></p>
-   *
-   * @author Brian Jones (cbj@gnu.org)
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class LineBorderUIResource
-    extends LineBorder
-    implements UIResource, Serializable
-  {
-    private static final long serialVersionUID = -6171232338180172310L;
-
-    /**
-     * Constructs a LineBorderUIResource given its color.  The border
-     * will be one pixel thick and have plain corners.
-     *
-     * @param color the color for drawing the border.
-     */
-    public LineBorderUIResource(Color color)
-    {
-      super(color);
-    }
-
-
-    /**
-     * Constructs a LineBorder given its color and thickness.  The
-     * border will have plain corners.
-     *
-     * @param color the color for drawing the border.
-     * @param thickness the width of the line in pixels.
-     */
-    public LineBorderUIResource(Color color, int thickness)
-    {
-      super(color, thickness);
-    }
-
-
-    /* Note: Since JDK1.3, javax.swing.border.LineBorder also has a
-     * constructor which accepts a value for the roundedCorners
-     * property. However, as of JDK1.4.1, the LineBorderUIResource
-     * subclass does not have a corresponding constructor.
-     *
-     * A request for enhancing the Swing API has been filed with Sun:
-     * http://developer.java.sun.com/developer/bugParade/bugs/4879999.html
-     */
-  }
-
-
-  /**
-   * A {@link javax.swing.border.MatteBorder} that also implements the
-   * {@link UIResource} marker interface.  This is useful for
-   * implementing pluggable look-and-feels: When switching the current
-   * LookAndFeel, only those borders are replaced that are marked as
-   * {@link UIResource}.  For this reason, a look-and-feel should
-   * always install borders that implement <code>UIResource</code>,
-   * such as the borders provided by this class.
-   *
-   * <p><img src="../border/doc-files/MatteBorder-1.png" width="500"
-   * height="150" alt="[An illustration of two MatteBorders]" /></p>
-   *
-   * @author Brian Jones (cbj@gnu.org)
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class MatteBorderUIResource
-    extends MatteBorder
-    implements UIResource, Serializable
-  {
-    private static final long serialVersionUID = -8107923147541851122L;
-
-    /**
-     * Constructs a MatteBorderUIResource given the width on each side
-     * and a fill color.
-     *
-     * <p><img src="../border/doc-files/MatteBorder-2.png" width="500"
-     * height="150" alt="[A picture of a MatteBorder made by this
-     * constructor]" /></p>
-     *
-     * @param top the width of the border at its top edge.
-     * @param left the width of the border at its left edge.
-     * @param bottom the width of the border at its bottom edge.
-     * @param right the width of the border at its right edge.
-     * @param color the color for filling the border.
-     */
-    public MatteBorderUIResource(int top, int left,
-                                 int bottom, int right,
-                                 Color color)
-    {
-      super(top, left, bottom, right, color);
-    }
-
-
-    /**
-     * Constructs a MatteBorderUIResource given the width on each side
-     * and an icon for tiling the border area.
-     *
-     * <p><img src="../border/doc-files/MatteBorder-4.png" width="500"
-     * height="150" alt="[A picture of a MatteBorder made by this
-     * constructor]" /></p>
-     *
-     * @param top the width of the border at its top edge.
-     * @param left the width of the border at its left edge.
-     * @param bottom the width of the border at its bottom edge.
-     * @param right the width of the border at its right edge.
-     * @param tileIcon an icon for tiling the border area.
-     */
-    public MatteBorderUIResource(int top, int left,
-                                 int bottom, int right,
-                                 Icon tileIcon)
-    {
-      super(top, left, bottom, right, tileIcon);
-    }
-
-
-    /**
-     * Constructs a MatteBorderUIResource given an icon for tiling the
-     * border area. The icon width is used for the border insets at
-     * the left and right edge, the icon height for the top and bottom
-     * edge.
-     *
-     * <p><img src="../border/doc-files/MatteBorder-6.png" width="500"
-     * height="150" alt="[A picture of a MatteBorder made by this
-     * constructor]" /></p>
-     *
-     * @param tileIcon an icon for tiling the border area.
-     */
-    public MatteBorderUIResource(Icon tileIcon)
-    {
-      super(tileIcon);
-    }
-  }
-
-
-  /**
-   * A {@link javax.swing.border.TitledBorder} that also implements the
-   * {@link UIResource} marker interface.  This is useful for
-   * implementing pluggable look-and-feels: When switching the current
-   * LookAndFeel, only those borders are replaced that are marked as
-   * {@link UIResource}.  For this reason, a look-and-feel should
-   * always install borders that implement <code>UIResource</code>,
-   * such as the borders provided by this class.
-   *
-   * @author Brian Jones (cbj@gnu.org)
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class TitledBorderUIResource
-    extends TitledBorder
-    implements UIResource, Serializable
-  {
-    private static final long serialVersionUID = 7667113547406407427L;
-
-    /**
-     * Constructs a TitledBorderUIResource given the text of its title.
-     *
-     * @param title the title text, or <code>null</code> to use no
-     *        title text.
-     */
-    public TitledBorderUIResource(String title)
-    {
-      super(title);
-    }
-
-
-    /**
-     * Constructs an initially untitled TitledBorderUIResource
-     * given another border.
-     *
-     * @param border the border underneath the title, or
-     *        <code>null</code> to use a default from
-     *        the current look and feel.
-     */
-    public TitledBorderUIResource(Border border)
-    {
-      super(border);
-    }
-
-
-    /**
-     * Constructs a TitledBorder given its border and title text.
-     *
-     * @param border the border underneath the title, or
-     *        <code>null</code> to use a default from
-     *        the current look and feel.
-     *
-     * @param title the title text, or <code>null</code>
-     *        to use no title text.
-     */
-    public TitledBorderUIResource(Border border, String title)
-    {
-      super(border, title);
-    }
-
-
-    /**
-     * Constructs a TitledBorderUIResource given its border, title
-     * text, horizontal alignment, and vertical position.
-     *
-     * @param border the border underneath the title, or
-     *        <code>null</code> to use a default
-     *        from the current look and feel.
-     *
-     * @param title the title text, or <code>null</code>
-     *        to use no title text.
-     *
-     * @param titleJustification the horizontal alignment of the title
-     *        text in relation to the border. The value must be one of
-     *        {@link javax.swing.border.TitledBorder#LEFT},
-     *        {@link javax.swing.border.TitledBorder#CENTER},
-     *        {@link javax.swing.border.TitledBorder#RIGHT},
-     *        {@link javax.swing.border.TitledBorder#LEADING},
-     *        {@link javax.swing.border.TitledBorder#TRAILING}, or
-     *        {@link javax.swing.border.TitledBorder#DEFAULT_JUSTIFICATION}.
-     *
-     * @param titlePosition the vertical position of the title text
-     *        in relation to the border. The value must be one of
-     *        {@link javax.swing.border.TitledBorder#ABOVE_TOP},
-     *        {@link javax.swing.border.TitledBorder#TOP},
-     *        {@link javax.swing.border.TitledBorder#BELOW_TOP},
-     *        {@link javax.swing.border.TitledBorder#ABOVE_BOTTOM},
-     *        {@link javax.swing.border.TitledBorder#BOTTOM},
-     *        {@link javax.swing.border.TitledBorder#BELOW_BOTTOM},
-     *        or {@link javax.swing.border.TitledBorder#DEFAULT_POSITION}.
-     *
-     * @throws IllegalArgumentException if <code>titleJustification</code>
-     *         or <code>titlePosition</code> have an unsupported value.
-     */
-    public TitledBorderUIResource(Border border, String title,
-                                  int titleJustification,
-                                  int titlePosition)
-    {
-      super(border, title, titleJustification, titlePosition);
-    }
-
-
-    /**
-     * Constructs a TitledBorder given its border, title text,
-     * horizontal alignment, vertical position, and font.
-     *
-     * @param border the border underneath the title, or
-     *        <code>null</code> to use a default
-     *        from the current look and feel.
-     *
-     * @param title the title text, or <code>null</code>
-     *        to use no title text.
-     *
-     * @param titleJustification the horizontal alignment of the title
-     *        text in relation to the border. The value must be one of
-     *        {@link javax.swing.border.TitledBorder#LEFT},
-     *        {@link javax.swing.border.TitledBorder#CENTER},
-     *        {@link javax.swing.border.TitledBorder#RIGHT},
-     *        {@link javax.swing.border.TitledBorder#LEADING},
-     *        {@link javax.swing.border.TitledBorder#TRAILING}, or
-     *        {@link javax.swing.border.TitledBorder#DEFAULT_JUSTIFICATION}.
-     *
-     * @param titlePosition the vertical position of the title text
-     *        in relation to the border. The value must be one of
-     *        {@link javax.swing.border.TitledBorder#ABOVE_TOP},
-     *        {@link javax.swing.border.TitledBorder#TOP},
-     *        {@link javax.swing.border.TitledBorder#BELOW_TOP},
-     *        {@link javax.swing.border.TitledBorder#ABOVE_BOTTOM},
-     *        {@link javax.swing.border.TitledBorder#BOTTOM},
-     *        {@link javax.swing.border.TitledBorder#BELOW_BOTTOM},
-     *        or {@link javax.swing.border.TitledBorder#DEFAULT_POSITION}.
-     *
-     * @param titleFont the font for the title text, or <code>null</code>
-     *        to use a default from the current look and feel.
-     *
-     * @throws IllegalArgumentException if <code>titleJustification</code>
-     *         or <code>titlePosition</code> have an unsupported value.
-     */
-    public TitledBorderUIResource(Border border, String title,
-                                  int titleJustification,
-                                  int titlePosition,
-                                  Font titleFont)
-    {
-      super(border, title, titleJustification, titlePosition,
-            titleFont);
-    }
-
-
-    /**
-     * Constructs a TitledBorder given its border, title text,
-     * horizontal alignment, vertical position, font, and color.
-     *
-     * @param border the border underneath the title, or
-     *        <code>null</code> to use a default
-     *        from the current look and feel.
-     *
-     * @param title the title text, or <code>null</code>
-     *        to use no title text.
-     *
-     * @param titleJustification the horizontal alignment of the title
-     *        text in relation to the border. The value must be one of
-     *        {@link javax.swing.border.TitledBorder#LEFT},
-     *        {@link javax.swing.border.TitledBorder#CENTER},
-     *        {@link javax.swing.border.TitledBorder#RIGHT},
-     *        {@link javax.swing.border.TitledBorder#LEADING},
-     *        {@link javax.swing.border.TitledBorder#TRAILING}, or
-     *        {@link javax.swing.border.TitledBorder#DEFAULT_JUSTIFICATION}.
-     *
-     * @param titlePosition the vertical position of the title text
-     *        in relation to the border. The value must be one of
-     *        {@link javax.swing.border.TitledBorder#ABOVE_TOP},
-     *        {@link javax.swing.border.TitledBorder#TOP},
-     *        {@link javax.swing.border.TitledBorder#BELOW_TOP},
-     *        {@link javax.swing.border.TitledBorder#ABOVE_BOTTOM},
-     *        {@link javax.swing.border.TitledBorder#BOTTOM},
-     *        {@link javax.swing.border.TitledBorder#BELOW_BOTTOM},
-     *        or {@link javax.swing.border.TitledBorder#DEFAULT_POSITION}.
-     *
-     * @param titleFont the font for the title text, or <code>null</code>
-     *        to use a default from the current look and feel.
-     *
-     * @param titleColor the color for the title text, or <code>null</code>
-     *        to use a default from the current look and feel.
-     *
-     * @throws IllegalArgumentException if <code>titleJustification</code>
-     *         or <code>titlePosition</code> have an unsupported value.
-     */
-    public TitledBorderUIResource(Border border, String title,
-                                  int titleJustification, int titlePosition,
-                                  Font titleFont, Color titleColor)
-    {
-      super(border, title, titleJustification, titlePosition,
-            titleFont, titleColor);
-    }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/ButtonUI.java b/libjava/classpath/javax/swing/plaf/ButtonUI.java
deleted file mode 100644
index 6910e42..0000000
--- a/libjava/classpath/javax/swing/plaf/ButtonUI.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/* ButtonUI.java
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JButton</code>.
- *
- * @see javax.swing.JButton
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ButtonUI extends ComponentUI
-{
-  // This abstract class does not define any methods of its own.
-}
diff --git a/libjava/classpath/javax/swing/plaf/ColorChooserUI.java b/libjava/classpath/javax/swing/plaf/ColorChooserUI.java
deleted file mode 100644
index e9cb32c..0000000
--- a/libjava/classpath/javax/swing/plaf/ColorChooserUI.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/* ColorChooserUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JColorChooser</code>.
- *
- * @see javax.swing.JColorChooser
- *
- * @author Andrew Selkirk
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ColorChooserUI extends ComponentUI
-{
-  /**
-   * Constructs a ColorChooserUI.
-   */
-  public ColorChooserUI()
-  {
-    /* The constructor does not do anything. */
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/ColorUIResource.java b/libjava/classpath/javax/swing/plaf/ColorUIResource.java
deleted file mode 100644
index 3c9db2e..0000000
--- a/libjava/classpath/javax/swing/plaf/ColorUIResource.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/* ColorUIResource.java
-   Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.awt.Color;
-
-
-/**
- * A Color that is marked as <code>UIResource</code>, which indicates that
- * the color has been installed by a pluggable LookAndFeel. Such colors
- * are replaced when the LookAndFeel changes.
- *
- * @see java.awt.Color
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public class ColorUIResource extends Color implements UIResource
-{
-  /**
-   * Constructs a <code>ColorUIResource</code> using the specified
-   * red, green, and blue values, which must be given as integers in
-   * the range of 0-255. The alpha channel value will default to 255,
-   * meaning that the color is fully opaque.
-   *
-   * @param r the red intensity, which must be in the range [0 .. 255].
-   * @param g the green intensity, which must be in the range [0 .. 255].
-   * @param b the blue intensity, which must be in the range [0 .. 255].
-   *
-   * @throws IllegalArgumentException if any of the values is outside the
-   *         specified range.
-   */
-  public ColorUIResource(int r, int g, int b)
-  {
-    super(r, g, b);
-  }
-
-
-  /**
-   * Constructs a <code>ColorUIResource</code> using the specified
-   * RGB value. The blue value is in bits 0-7, green in bits 8-15, and
-   * red in bits 16-23. The other bits are ignored. The alpha value is set
-   * to 255, meaning that the color is fully opaque.
-   *
-   * @param rgb the rgb value, as discussed above.
-   */
-  public ColorUIResource(int rgb)
-  {
-    super(rgb);
-  }
-
-
-  /**
-   * Constructs a <code>ColorUIResource</code> using the specified
-   * red, green, and blue intensities, which must be given as floats in
-   * the range of 0-1. The alpha channel value will default to 1.0f,
-   * meaning that the color is fully opaque.
-   *
-   * @param r the red intensity, which must be in the range [0.0 .. 1.0].
-   * @param g the green intensity, which must be in the range [0.0 .. 1.0].
-   * @param b the blue intensity, which must be in the range [0.0 .. 1.0].
-   *
-   * @throws IllegalArgumentException if any of the values is outside the
-   *         specified range.
-   */
-  public ColorUIResource(float r, float g, float b)
-  {
-    super(r, g, b);
-  }
-
-
-  /**
-   * Constructs a <code>ColorUIResource</code>, using the intensities
-   * of another color.
-   *
-   * @param c the color whose intensities will be considered when
-   *        constructing this <code>ColorUIResource</code> (<code>null</code>
-   *        not permitted).
-   *
-   * @throws NullPointerException if <code>c</code> is <code>null</code>.
-   */
-  public ColorUIResource(Color c)
-  {
-    super(c.getRGB());
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/ComboBoxUI.java b/libjava/classpath/javax/swing/plaf/ComboBoxUI.java
deleted file mode 100644
index 0a06d26..0000000
--- a/libjava/classpath/javax/swing/plaf/ComboBoxUI.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/* ComboBoxUI.java --
-   Copyright (C) 2002, 2003, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-import javax.swing.JComboBox;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a {@link JComboBox}.
- *
- * @author Andrew Selkirk
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ComboBoxUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>ComboBoxUI</code>.
-   */
-  public ComboBoxUI()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Sets the visibility of the popup button.
-   *
-   * @param c the <code>JComboBox</code> whose popup
-   *        is shown or hidden.
-   *
-   * @param visible <code>true</code> to show the popup, <code>false</code>
-   *        to hide it.
-   */
-  public abstract void setPopupVisible(JComboBox c, boolean visible);
-
-  /**
-   * Determines whether the popup button is currently visible.
-   *
-   * @param c the <code>JComboBox</code> whose popup visibility
-   *        is retrieved.
-   *
-   * @return <code>true</code> if the popup button is currently
-   *         visible, <code>false</code> otherwise.
-   */
-  public abstract boolean isPopupVisible(JComboBox c);
-
-  /**
-   * Determines whether the combo box can receive input focus.
-   *
-   * @param c <code>JComboBox</code> whose focus traversability
-   *        is to be retrieved.
-   *
-   * @return <code>true</code> if <code>c</code> can receive
-   *          input focus, <code>false</code> otherwise.
-   */
-  public abstract boolean isFocusTraversable(JComboBox c);
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/ComponentInputMapUIResource.java b/libjava/classpath/javax/swing/plaf/ComponentInputMapUIResource.java
deleted file mode 100644
index 4553562..0000000
--- a/libjava/classpath/javax/swing/plaf/ComponentInputMapUIResource.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/* ComponentInputMapUIResource.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-import javax.swing.ComponentInputMap;
-import javax.swing.JComponent;
-
-
-/**
- * A <code>ComponentInputMap</code> that implements the {@link UIResource}
- * interface to indicate that it belongs to a pluggable
- * LookAndFeel.
- *
- * @see javax.swing.ComponentInputMap
- * @see javax.swing.InputMap
- *
- * @author Andrew Selkirk
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public class ComponentInputMapUIResource extends ComponentInputMap
-  implements UIResource
-{
-  /**
-   * Constructs a new <code>ComponentInputMapUIResource</code>.
-   *
-   * @param component the <code>JComponent</code> associated with
-   *        this <code>InputMap</code>.
-   */
-  public ComponentInputMapUIResource(JComponent component)
-  {
-    super(component);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/ComponentUI.java b/libjava/classpath/javax/swing/plaf/ComponentUI.java
deleted file mode 100644
index 35f2de3..0000000
--- a/libjava/classpath/javax/swing/plaf/ComponentUI.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/* ComponentUI.java --
-   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-
-/**
- * The abstract base class for all delegates that provide the
- * pluggable look and feel for Swing components. User applications
- * should not need to access this class; it is internal to Swing
- * and the look-and-feel implementations.
- *
- * <p><img src="doc-files/ComponentUI-1.png" width="700" height="550"
- * alt="[UML diagram illustrating the architecture for pluggable
- * look and feels]" /></p>
- *
- * <p>Components such as {@link javax.swing.JSlider} do not directly
- * implement operations related to the look and feel of the user
- * interface, such as painting or layout. Instead, they use a delegate
- * object for all such tasks. In the case of <code>JSlider</code>, the
- * user interface would be provided by some concrete subclass of
- * {@link javax.swing.plaf.SliderUI}.
- *
- * <p>Soon after its creation, a <code>ComponentUI</code> will be sent
- * an {@link #installUI} message. The <code>ComponentUI</code> will
- * react by setting properties such as the border or the background
- * color of the <code>JComponent</code> for which it provides its
- * services. Soon before the end of its lifecycle, the
- * <code>ComponentUI</code> will receive an {@link #uninstallUI}
- * message, at which time the <code>ComponentUI</code> is expected to
- * undo any changes.</p>
- *
- * <p>Note that the <code>ui</code> of a <code>JComponent</code>
- * changes whenever the user switches between look and feels.  For
- * example, the <code>ui</code> property of a <code>JSlider</code>
- * could change from an instance of <code>MetalSliderUI</code> to an
- * instance of <code>FooSliderUI</code>. This switch can happen at any
- * time, but it will always be performed from inside the Swing thread.</p>
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ComponentUI
-{
-  /**
-   * Constructs a new UI delegate.
-   */
-  public ComponentUI()
-  {
-    // Nothing to do here.
-  }
-
-
-  /**
-   * Sets up the specified component so it conforms the the design
-   * guidelines of the implemented look and feel. When the look and
-   * feel changes, a <code>ComponentUI</code> delegate is created.
-   * The delegate object then receives an <code>installUI</code>
-   * message.
-   *
-   * <p>This method should perform the following tasks:</p>
-   *
-   * <ul>
-   * <li>Set visual properties such as borders, fonts, colors, or
-   *     icons. However, no change should be performed for those
-   *     properties whose values have been directly set by the client
-   *     application. To allow the distinction, LookAndFeels are expected
-   *     to use values that implement the {@link UIResource} marker
-   *     interface, such as {@link BorderUIResource} or {@link
-   *     ColorUIResource}.</li>
-   * <li>If necessary, install a {@link java.awt.LayoutManager}.</li>
-   * <li>Embed custom sub-components. For instance, the UI delegate
-   *     for a {@link javax.swing.JSplitPane} might install a special
-   *     component for the divider.</li>
-   * <li>Register event listeners.</li>
-   * <li>Set up properties related to keyborad navigation, such as
-   *     mnemonics or focus traversal policies.</li>
-   * </ul>
-   *
-   * @param c the component for which this delegate will provide
-   *        services.
-   *
-   * @see #uninstallUI
-   * @see javax.swing.JComponent#setUI
-   * @see javax.swing.JComponent#updateUI
-   */
-  public void installUI(JComponent c)
-  {
-    // The default implementation does not change any properties.
-  }
-
-
-  /**
-   * Puts the specified component into the state it had before
-   * {@link #installUI} was called.
-   *
-   * @param c the component for which this delegate has provided
-   *        services.
-   *
-   * @see #installUI
-   * @see javax.swing.JComponent#setUI
-   * @see javax.swing.JComponent#updateUI
-   */
-  public void uninstallUI(JComponent c)
-  {
-    // The default implementation does not change any properties.
-  }
-
-
-  /**
-   * Paints the component according to the design guidelines
-   * of the look and feel. Most subclasses will want to override
-   * this method.
-   *
-   * @param g the graphics for painting.
-   *
-   * @param c the component for which this delegate performs
-   *          services.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    // Nothing is done here. This method is meant to be overridden by
-    // subclasses.
-  }
-
-
-  /**
-   * Fills the specified component with its background color
-   * (unless the <code>opaque</code> property is <code>false</code>)
-   * before calling {@link #paint}.
-   *
-   * <p>It is unlikely that a subclass needs to override this method.
-   * The actual rendering should be performed by the {@link #paint}
-   * method.
-   *
-   * @param g the graphics for painting.
-   *
-   * @param c the component for which this delegate performs
-   *          services.
-   *
-   * @see #paint
-   * @see javax.swing.JComponent#paintComponent
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    if (c.isOpaque())
-      {
-        Color oldColor = g.getColor();
-        g.setColor(c.getBackground());
-        g.fillRect(0, 0, c.getWidth(), c.getHeight());
-        g.setColor(oldColor);
-      }
-    paint(g, c);
-  }
-
-  /**
-   * Determines the preferred size of a component. The default
-   * implementation returns <code>null</code>, which means that
-   * <code>c</code>&#x2019;s layout manager should be asked to
-   * calculate the preferred size.
-   *
-   * @param c the component for which this delegate performs services.
-   *
-   * @return the preferred size, or <code>null</code> to indicate that
-   *         <code>c</code>&#x2019;s layout manager should be asked
-   *         for the preferred size.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    return null;
-  }
-
-
-  /**
-   * Determines the minimum size of a component. The default
-   * implementation calls {@link #getPreferredSize}, but subclasses
-   * might want to override this.
-   *
-   * @param c the component for which this delegate performs services.
-   *
-   * @return the minimum size, or <code>null</code> to indicate that
-   *         <code>c</code>&#x2019;s layout manager should be asked
-   *         to calculate the minimum size.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-
-  /**
-   * Determines the maximum size of a component. The default
-   * implementation calls {@link #getPreferredSize}, but subclasses
-   * might want to override this.
-   *
-   * @param c the component for which this delegate performs services.
-   *
-   * @return the maximum size, or <code>null</code> to indicate that
-   *         <code>c</code>&#x2019;s layout manager should be asked
-   *         to calculate the maximum size.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-
-  /**
-   * Determines whether a click into the component at a specified
-   * location is considered as having hit the component. The default
-   * implementation checks whether the point falls into the
-   * component&#x2019;s bounding rectangle. Some subclasses might want
-   * to override this, for example in the case of a rounded button.
-   *
-   * @param c the component for which this delegate performs services.
-   *
-   * @param x the x coordinate of the point, relative to the local
-   *        coordinate system of the component. Zero would be be
-   *        component&#x2019;s left edge, irrespective of the location
-   *        inside its parent.
-   *
-   * @param y the y coordinate of the point, relative to the local
-   *        coordinate system of the component. Zero would be be
-   *        component&#x2019;s top edge, irrespective of the location
-   *        inside its parent.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    /* JComponent.contains calls the ui delegate for hit
-     * testing. Therefore, endless mutual recursion would result if we
-     * called c.contains(x, y) here.
-     *
-     * The previous Classpath implementation called the deprecated
-     * method java.awt.Component.inside. In the Sun implementation, it
-     * can be observed that inside, other than contains, does not call
-     * the ui delegate.  But that inside() behaves different to
-     * contains() clearly is in violation of the method contract, and
-     * it is not something that a good implementation should rely upon
-     * -- even if Classpath ends up being forced to replicate this
-     * apparent bug of the Sun implementation.
-     */
-    return (x >= 0) && (x < c.getWidth())
-      && (y >= 0) && (y < c.getHeight());
-  }
-
-
-  /**
-   * Creates a delegate object for the specified component.  Users
-   * should use the <code>createUI</code> method of a suitable
-   * subclass. The implementation of <code>ComponentUI</code>
-   * always throws an error.
-   *
-   * @param c the component for which a UI delegate is requested.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    throw new Error(
-      "javax.swing.plaf.ComponentUI does not implement createUI; call "
-      + "createUI on a subclass.");
-  }
-
-
-  /**
-   * Counts the number of accessible children in the component.  The
-   * default implementation delegates the inquiry to the {@link
-   * javax.accessibility.AccessibleContext} of <code>c</code>.
-   *
-   * @param c the component whose accessible children
-   *        are to be counted.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    return c.getAccessibleContext().getAccessibleChildrenCount();
-  }
-
-
-  /**
-   * Returns the specified accessible child of the component. The
-   * default implementation delegates the inquiry to the {@link
-   * javax.accessibility.AccessibleContext} of <code>c</code>.
-   *
-   * @param i the index of the accessible child, starting at zero.
-   *
-   * @param c the component whose <code>i</code>-th accessible child
-   *        is requested.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    return c.getAccessibleContext().getAccessibleChild(i);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/DesktopIconUI.java b/libjava/classpath/javax/swing/plaf/DesktopIconUI.java
deleted file mode 100644
index 676233e..0000000
--- a/libjava/classpath/javax/swing/plaf/DesktopIconUI.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/* DesktopIconUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a desktop icon.
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class DesktopIconUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>DesktopIconUI</code>.
-   */
-  public DesktopIconUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/DesktopPaneUI.java b/libjava/classpath/javax/swing/plaf/DesktopPaneUI.java
deleted file mode 100644
index 3d4cfc8..0000000
--- a/libjava/classpath/javax/swing/plaf/DesktopPaneUI.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/* DesktopPaneUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JDesktopPane</code>.
- *
- * @see javax.swing.JDesktopPane
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class DesktopPaneUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>DesktopPaneUI</code>.
-   */
-  public DesktopPaneUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/DimensionUIResource.java b/libjava/classpath/javax/swing/plaf/DimensionUIResource.java
deleted file mode 100644
index 618c220..0000000
--- a/libjava/classpath/javax/swing/plaf/DimensionUIResource.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/* DimensionUIResource.java
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.awt.Dimension;
-
-/**
- * A Dimension that is marked as <code>UIResource</code>, which
- * indicates that it has been installed by a pluggable
- * LookAndFeel. Such dimensions are replaced when the LookAndFeel
- * changes.
- *
- * @see java.awt.Dimension
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public class DimensionUIResource extends Dimension implements UIResource
-{
-  /**
-   * Constructs a new DimensionUIResource, given its width and height.
-   *
-   * @param width the width in pixels.
-   * @param height the height in pixels.
-   */
-  public DimensionUIResource(int width, int height)
-  {
-    super(width, height);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/FileChooserUI.java b/libjava/classpath/javax/swing/plaf/FileChooserUI.java
deleted file mode 100644
index fafd21d2..0000000
--- a/libjava/classpath/javax/swing/plaf/FileChooserUI.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/* FileChooserUI.java --
-   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.io.File;
-
-import javax.swing.JFileChooser;
-import javax.swing.filechooser.FileFilter;
-import javax.swing.filechooser.FileView;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JFileChooser</code>.
- *
- * @see javax.swing.JFileChooser
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class FileChooserUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>FileChooserUI</code>.
-   */
-  public FileChooserUI()
-  {
-    // Nothing to do here.
-  }
-
-
-  /**
-   * Returns a <code>FileFilter</code> that accepts every file.  While
-   * the filtering itself is not specific to any look and feel, the
-   * text returned by <code>FileFilter.getDescription()</code> need
-   * not be the same across all look and feels.
-   *
-   * @param chooser the <code>JFileChooser</code> for which
-   *        a <code>FileFilter</code> is requested.
-   *
-   * @see javax.swing.JFileChooser#getAcceptAllFileFilter
-   * @see javax.swing.filechooser.FileFilter#getDescription
-   */
-  public abstract FileFilter getAcceptAllFileFilter(JFileChooser chooser);
-
-
-  /**
-   * Returns a view to a file, which is able to retrieve its name,
-   * icon, and other properties that are relevant for presenting
-   * the file to the user.
-   *
-   * @param chooser the <code>JFileChooser</code> for which
-   *        a <code>FileFilter</code> is requested.
-   */
-  public abstract FileView getFileView(JFileChooser chooser);
-
-
-  /**
-   * Determines which text is appropriate for the approve button
-   * according to the design guidelines of the implemented
-   * look and feel.
-   *
-   * @param chooser the <code>JFileChooser</code> whose
-   *        button text is requested.
-   *
-   * @see javax.swing.JFileChooser#getApproveButtonText
-   */
-  public abstract String getApproveButtonText(JFileChooser chooser);
-
-
-  /**
-   * Determines which text is appropriate for the title bar of a
-   * <code>JFileChooser</code> according to the design guidelines of
-   * the implemented look and feel.
-   *
-   * @param chooser the <code>JFileChooser</code> whose
-   *        dialog title is requested.
-   *
-   * @see javax.swing.JFileChooser#getDialogTitle
-   */
-  public abstract String getDialogTitle(JFileChooser chooser);
-
-
-  /**
-   * Refreshes the currently displayed directory.
-   *
-   * @param chooser the <code>JFileChooser</code> whose
-   *        dialog title needs re-scanning.
-   */
-  public abstract void rescanCurrentDirectory(JFileChooser chooser);
-
-
-  /**
-   * Ensures that a specified file is visible in the
-   * <code>JFileChooser</code>
-   *
-   * @param chooser the <code>JFileChooser</code> that
-   *        should display the file <code>file</code>.
-   *
-   * @param file the file that needs to be made visible.
-   */
-  public abstract void ensureFileIsVisible(JFileChooser chooser, File file);
-}
diff --git a/libjava/classpath/javax/swing/plaf/FontUIResource.java b/libjava/classpath/javax/swing/plaf/FontUIResource.java
deleted file mode 100644
index c54f987..0000000
--- a/libjava/classpath/javax/swing/plaf/FontUIResource.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/* FontUIResource.java
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.awt.Font;
-
-
-/**
- * A font that is marked as <code>UIResource</code>, which
- * indicates that it has been installed by a pluggable
- * LookAndFeel. Such dimensions are replaced when the LookAndFeel
- * changes.
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public class FontUIResource extends Font implements UIResource
-{
-  /**
-   * Constructs a new <code>FontUIResource</code> given
-   * the name, style and size of the font.
-   *
-   * @param name the name of the font. A number of
-   *        &#x201c;logical&#x201d; names are supported by any Java
-   *        implementation. These are
-   *        <code>&#x201c;Dialog&#x201d;</code>,
-   *        <code>&#x201c;DialogInput&#x201d;</code>,
-   *        <code>&#x201c;Monospaced&#x201d;</code>,
-   *        <code>&#x201c;Serif&#x201d;</code>, and
-   *        <code>&#x201c;SansSerif&#x201d;</code>.
-   *
-   * @param style the style of the font, for instance {@link
-   *        java.awt.Font#BOLD} or {@link java.awt.Font#PLAIN}.
-   *
-   * @param size the size of the font in typographic points, for
-   *        instance 10, 12 or 13. Designers of LookAndFeels should be
-   *        aware that some languages (like Japanese and Chinese) have
-   *        glyphs that are too complex to be legible at small point
-   *        sizes.
-   */
-  public FontUIResource(String name, int style, int size)
-  {
-    super(name, style, size);
-  }
-
-
-  /**
-   * Constructs a new <code>FontUIResource</code> given
-   * an existing font.
-   *
-   * @param f the font that serves as a template.
-   */
-  public FontUIResource(Font f)
-  {
-    /* This implementation will get rid of many font properties,
-     * such as skewing, values of multiple master design axes,
-     * etc.,  unless they get encoded into the name.  It probably
-     * is not a problem for LookAndFeels because user interfaces
-     * are usually not very advanced with respect to typography.
-     */
-    super(f.getName(), f.getStyle(), f.getSize());
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/IconUIResource.java b/libjava/classpath/javax/swing/plaf/IconUIResource.java
deleted file mode 100644
index 48503f8..0000000
--- a/libjava/classpath/javax/swing/plaf/IconUIResource.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/* IconUIResource.java --
-   Copyright (C) 2002, 2003, 2004, 2006,  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.awt.Component;
-import java.awt.Graphics;
-import java.io.Serializable;
-
-import javax.swing.Icon;
-
-/**
- * An icon that is marked as <code>UIResource</code>, which
- * indicates that it has been installed by a pluggable
- * LookAndFeel. Such icons are replaced when the LookAndFeel
- * changes.
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public class IconUIResource implements Icon, UIResource, Serializable
-{
-  /**
-   * Verified using the <code>serialver</code> tool of Sun JDK 1.4.1_01
-   * on GNU/Linux 2.4.18.
-   */
-  static final long serialVersionUID = 3327049506004830542L;
-
-
-  /**
-   * The icon that is wrapped by this <code>IconUIResource</code> (never
-   * <code>null</code>).
-   */
-  private Icon delegate;
-
-
-  /**
-   * Constructs a <code>IconUIResource</code> that wraps another
-   * icon. All messages are forwarded to the delegate icon.
-   *
-   * @param delegate the icon that is wrapped by this
-   *        <code>IconUIResource</code> (<code>null</code> not permitted).
-   */
-  public IconUIResource(Icon delegate)
-  {
-    if (delegate == null)
-      throw new IllegalArgumentException("Null 'delegate' argument.");
-    this.delegate = delegate;
-  }
-
-
-  /**
-   * Paints the icon by asking the delegate icon to paint itself.
-   *
-   * @param c the Component whose icon is being painted. Some icons
-   *        use this argument to retrieve properties like the
-   *        background color.
-   *
-   * @param g the graphics into which the icon will be painted.
-   *
-   * @param x the horizontal position of the icon.
-   *
-   * @param y the vertical position of the icon.
-   */
-  public void paintIcon(Component c, Graphics g, int x, int y)
-  {
-    delegate.paintIcon(c, g, x, y);
-  }
-
-
-  /**
-   * Returns the width of the icon in pixels. The implementation
-   * determines and returns the width of the delegate icon.
-   */
-  public int getIconWidth()
-  {
-    return delegate.getIconWidth();
-  }
-
-
-  /**
-   * Returns the height of the icon in pixels. The implementation
-   * determines and returns the height of the delegate icon.
-   */
-  public int getIconHeight()
-  {
-    return delegate.getIconHeight();
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/InputMapUIResource.java b/libjava/classpath/javax/swing/plaf/InputMapUIResource.java
deleted file mode 100644
index 0c5f6f9..0000000
--- a/libjava/classpath/javax/swing/plaf/InputMapUIResource.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/* InputMapUIResource.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-import javax.swing.InputMap;
-
-
-/**
- * An <code>InputMap</code> that is marked as <code>UIResource</code>,
- * which indicates that it has been installed by a pluggable
- * LookAndFeel. Such dimensions are replaced when the LookAndFeel
- * changes.
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public class InputMapUIResource extends InputMap implements UIResource
-{
-  /**
-   * Constructs a new <code>InputMapUIResource</code>.
-   */
-  public InputMapUIResource()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/InsetsUIResource.java b/libjava/classpath/javax/swing/plaf/InsetsUIResource.java
deleted file mode 100644
index d64feb4..0000000
--- a/libjava/classpath/javax/swing/plaf/InsetsUIResource.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/* InsetsUIResource.java
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.awt.Insets;
-import java.io.Serializable;
-
-
-/**
- * An <code>Insets</code> that is marked as <code>UIResource</code>,
- * which indicates that it has been installed by a pluggable
- * LookAndFeel. Such insets are replaced when the LookAndFeel changes.
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public class InsetsUIResource extends Insets
-  implements Cloneable, UIResource, Serializable
-{
-  /**
-   * Determined using the <code>serialver</code> tool
-   * of Apple/Sun JDK 1.3.1 on MacOS X 10.1.5.
-   */
-  static final long serialVersionUID = 5622110143266315421L;
-
-
-  /**
-   * Constructs a new <code>InsetsUIResource</code> given the
-   * inset at each edge.
-   *
-   * @param top the inset at the top, in pixels.
-   * @param left the inset at the left, in pixels.
-   * @param bottom the inset at the bottom, in pixels.
-   * @param right the inset at the right, in pixels.
-   */
-  public InsetsUIResource(int top, int left, int bottom, int right)
-  {
-    super(top, left, bottom, right);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/InternalFrameUI.java b/libjava/classpath/javax/swing/plaf/InternalFrameUI.java
deleted file mode 100644
index 0b2f77c..0000000
--- a/libjava/classpath/javax/swing/plaf/InternalFrameUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* InternalFrameUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JInternalFrame</code>.
- *
- * @see javax.swing.JInternalFrame
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class InternalFrameUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>InternalFrameUI</code>.
-   */
-  public InternalFrameUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/LabelUI.java b/libjava/classpath/javax/swing/plaf/LabelUI.java
deleted file mode 100644
index f4b74d5..0000000
--- a/libjava/classpath/javax/swing/plaf/LabelUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* LabelUI.java
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JLabel</code>.
- *
- * @see javax.swing.JLabel
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class LabelUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>LabelUI</code>.
-   */
-  public LabelUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/ListUI.java b/libjava/classpath/javax/swing/plaf/ListUI.java
deleted file mode 100644
index bdfe4b3..0000000
--- a/libjava/classpath/javax/swing/plaf/ListUI.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/* ListUI.java --
-   Copyright (C) 2002, 2003, 2004, 2005  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.awt.Point;
-import java.awt.Rectangle;
-
-import javax.swing.JList;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JList</code>.
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ListUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>ListUI</code>.
-   */
-  public ListUI()
-  {
-    // Nothing to do here.
-  }
-
-
-  /**
-   * Determines the cell index which is the closest to the specified
-   * location. The find out whether the returned cell actually
-   * contains the location, the caller should also use {@link
-   * #getCellBounds}.
-   *
-   * @param list the <code>JList</code> for which this delegate object
-   *        provides the pluggable user interface.
-   *
-   * @param location a point in the <code>JList</code> coordinate
-   *        system.
-   *
-   * @return the index of the closest cell, or -1 if the list model
-   *         is empty.
-   */
-  public abstract int locationToIndex(JList list, Point location);
-
-
-  /**
-   * Determines the location of the specified cell.
-   *
-   * @param list the <code>JList</code> for which this delegate object
-   *        provides the pluggable user interface.
-   *
-   * @param index the zero-based index of the cell whose location shall be
-   *        determined.
-   *
-   * @return the position of the top left corner of the cell in the
-   *         <code>JList</code> coordinate system, or <code>null</code>
-   *         if <code>cell</code> does not designate a valid cell.
-   */
-  public abstract Point indexToLocation(JList list, int index);
-
-
-  /**
-   * Determines the bounding box of the rectangle spanned by
-   * two list indices.
-   *
-   * @param list the <code>JList</code> for which this delegate object
-   *        provides the pluggable user interface.
-   *
-   * @param index1 the zero-based index of the first cell.
-   *
-   * @param index2 the zero-based index of the second cell.
-   *
-   * @return the spanned rectangle, or <code>null</code> if either
-   *         <code>index1</code> or <code>index2</code> does not
-   *         designate a valid cell.
-   */
-  public abstract Rectangle getCellBounds(JList list,
-                                          int index1, int index2);
-}
diff --git a/libjava/classpath/javax/swing/plaf/MenuBarUI.java b/libjava/classpath/javax/swing/plaf/MenuBarUI.java
deleted file mode 100644
index 2c82adf..0000000
--- a/libjava/classpath/javax/swing/plaf/MenuBarUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* MenuBarUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JMenuBar</code>.
- *
- * @see javax.swing.JMenuBar
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class MenuBarUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>MenuBarUI</code>.
-   */
-  public MenuBarUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/MenuItemUI.java b/libjava/classpath/javax/swing/plaf/MenuItemUI.java
deleted file mode 100644
index 83ad52f..0000000
--- a/libjava/classpath/javax/swing/plaf/MenuItemUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* MenuItemUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JMenuItem</code>.
- *
- * @see javax.swing.JMenuItem
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class MenuItemUI extends ButtonUI
-{
-  /**
-   * Constructs a new <code>MenuItemUI</code>.
-   */
-  public MenuItemUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/OptionPaneUI.java b/libjava/classpath/javax/swing/plaf/OptionPaneUI.java
deleted file mode 100644
index 13d1caa..0000000
--- a/libjava/classpath/javax/swing/plaf/OptionPaneUI.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/* OptionPaneUI.java
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-import javax.swing.JOptionPane;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JOptionPane</code>.
- *
- * @see javax.swing.JOptionPane
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class OptionPaneUI
-  extends ComponentUI
-{
-  /**
-   * Gives keyboard input focus to the component that represents
-   * the default value.
-   *
-   * @param pane the <code>JOptionPane</code> for which this delegate
-   *        object provides the pluggable user interface.
-   */
-  public abstract void selectInitialValue(JOptionPane pane);
-
-
-  /**
-   * Determines whether the user has provided custom components
-   * for the options or the message.
-   *
-   * @param pane the <code>JOptionPane</code> for which this delegate
-   *        object provides the pluggable user interface.
-   *
-   * @return <code>true</code> if the user has supplied any custom
-   *         components; <code>false</code> if all components are
-   *         provided by Swing or a LookAndFeel.
-   */
-  public abstract boolean containsCustomComponents(JOptionPane pane);
-}
diff --git a/libjava/classpath/javax/swing/plaf/PanelUI.java b/libjava/classpath/javax/swing/plaf/PanelUI.java
deleted file mode 100644
index 12a6f52..0000000
--- a/libjava/classpath/javax/swing/plaf/PanelUI.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/* PanelUI.java
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JPanel</code>.
- *
- * @see javax.swing.JPanel
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class PanelUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>PanelUI</code>.
-   */
-  public PanelUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/PopupMenuUI.java b/libjava/classpath/javax/swing/plaf/PopupMenuUI.java
deleted file mode 100644
index de351f2..0000000
--- a/libjava/classpath/javax/swing/plaf/PopupMenuUI.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/* PopupMenuUI.java --
-   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.awt.event.MouseEvent;
-
-import javax.swing.JPopupMenu;
-import javax.swing.Popup;
-import javax.swing.PopupFactory;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JPopupMenu</code>.
- *
- * @see javax.swing.JPopupMenu
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class PopupMenuUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>PopupMenuUI</code>.
-   */
-  public PopupMenuUI()
-  {
-    // Nothing to do here.
-  }
-
-
-  /**
-   * Tests whether or not a mouse event triggers a popup menu.
-   *
-   * <p>The default implementation calls
-   * <code>event.isPopupTrigger()</code>, which checks for the gesture
-   * that is common for the platform on which the application runs. If
-   * a look and feel wants to employ non-standard conventions for
-   * triggering a popup menu, it can override this method.
-   *
-   * @param event the event to check.
-   *
-   * @return <code>true</code> if the event triggers a popup menu;
-   *         <code>false</code> otherwise.
-   *
-   * @since 1.3
-   */
-  public boolean isPopupTrigger(MouseEvent event)
-  {
-    return event.isPopupTrigger();
-  }
-
-
-  /**
-   * Creates a <code>Popup</code> for displaying the popup menu.  The
-   * default implementation uses the {@link javax.swing.PopupFactory}
-   * for retrieving a suitable <code>Popup</code>, but subclasses
-   * might want to override this method if a LookAndFeel needs special
-   * Popups.
-   *
-   * @param popup the <code>JPopupMenu</code> for whose display
-   *        a <code>Popup</code> is needed.
-   *
-   * @param x the horizontal position where the popup will be
-   *        displayed.
-   *
-   * @param y the vertical position where the popup will be
-   *        displayed.
-   *
-   * @return a <code>Popup</code> for showing and hiding
-   *         the menu.
-   *
-   * @since 1.4
-   */
-  public Popup getPopup(JPopupMenu popup, int x, int y)
-  {
-    return PopupFactory.getSharedInstance().getPopup(
-      /* origin/owner of the popup */ popup.getInvoker(),
-      /* contents */                  popup,
-      x, y);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/ProgressBarUI.java b/libjava/classpath/javax/swing/plaf/ProgressBarUI.java
deleted file mode 100644
index 013b8c5..0000000
--- a/libjava/classpath/javax/swing/plaf/ProgressBarUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* ProgressBarUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JProgressBar</code>.
- *
- * @see javax.swing.JProgressBar
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ProgressBarUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>ProgressBarUI</code>.
-   */
-  public ProgressBarUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/RootPaneUI.java b/libjava/classpath/javax/swing/plaf/RootPaneUI.java
deleted file mode 100644
index 9637c9c..0000000
--- a/libjava/classpath/javax/swing/plaf/RootPaneUI.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/* RootPaneUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JRootPane</code>.
- *
- * @see javax.swing.JRootPane
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class RootPaneUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>RootPaneUI</code>.
-   */
-  public RootPaneUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/ScrollBarUI.java b/libjava/classpath/javax/swing/plaf/ScrollBarUI.java
deleted file mode 100644
index 51b4bf2..0000000
--- a/libjava/classpath/javax/swing/plaf/ScrollBarUI.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/* ScrollBarUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JScrollBar</code>.
- *
- * @see javax.swing.JScrollBar
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ScrollBarUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>ScrollBarUI</code>.
-   */
-  public ScrollBarUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/ScrollPaneUI.java b/libjava/classpath/javax/swing/plaf/ScrollPaneUI.java
deleted file mode 100644
index 8b37fed..0000000
--- a/libjava/classpath/javax/swing/plaf/ScrollPaneUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* ScrollPaneUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JScrollPane</code>.
- *
- * @see javax.swing.JScrollPane
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ScrollPaneUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>ScrollPaneUI</code>.
-   */
-  public ScrollPaneUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/SeparatorUI.java b/libjava/classpath/javax/swing/plaf/SeparatorUI.java
deleted file mode 100644
index 8a9f8cf..0000000
--- a/libjava/classpath/javax/swing/plaf/SeparatorUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* SeparatorUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JSeparator</code>.
- *
- * @see javax.swing.JSeparator
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class SeparatorUI
-  extends ComponentUI
-{
-  /**
-   * Constructs a new <code>SeparatorUI</code>.
-   */
-  public SeparatorUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/SliderUI.java b/libjava/classpath/javax/swing/plaf/SliderUI.java
deleted file mode 100644
index 570e962..0000000
--- a/libjava/classpath/javax/swing/plaf/SliderUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* SliderUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JSlider</code>.
- *
- * @see javax.swing.JSlider
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class SliderUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>SliderUI</code>.
-   */
-  public SliderUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/SpinnerUI.java b/libjava/classpath/javax/swing/plaf/SpinnerUI.java
deleted file mode 100644
index ca29ddb..0000000
--- a/libjava/classpath/javax/swing/plaf/SpinnerUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* SpinnerUI.java --
-   Copyright (C) 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JSpinner</code>.
- *
- * @since 1.4
- * @see javax.swing.JSpinner
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class SpinnerUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>SpinnerUI</code>.
-   */
-  public SpinnerUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/SplitPaneUI.java b/libjava/classpath/javax/swing/plaf/SplitPaneUI.java
deleted file mode 100644
index faf17cb..0000000
--- a/libjava/classpath/javax/swing/plaf/SplitPaneUI.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/* SplitPaneUI.java --
-   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.awt.Graphics;
-
-import javax.swing.JSplitPane;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JSplitPane</code>.
- *
- * @see javax.swing.JSplitPane
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class SplitPaneUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>SplitPaneUI</code>.
-   */
-  public SplitPaneUI()
-  {
-    // Nothing to do here.
-  }
-
-
-  /**
-   * Moves the divider to the location which best respects
-   * the preferred sizes of the children.
-   *
-   * @param pane the <code>JSplitPane</code> for thich this
-   *        delegate provides the look and feel.
-   */
-  public abstract void resetToPreferredSizes(JSplitPane pane);
-
-
-  /**
-   * Moves the divider to the specified location.
-   *
-   * @param pane the <code>JSplitPane</code> for thich this
-   *        delegate provides the look and feel.
-   *
-   * @param location the new location of the divider.
-   */
-  public abstract void setDividerLocation(JSplitPane pane,
-                                          int location);
-
-
-  /**
-   * Determines the current location of the divider.
-   *
-   * @param pane the <code>JSplitPane</code> for thich this
-   *        delegate provides the look and feel.
-   *
-   * @return the current location of the divider.
-   */
-  public abstract int getDividerLocation(JSplitPane pane);
-
-
-  /**
-   * Determines the minimum location of the divider.
-   *
-   * @param pane the <code>JSplitPane</code> for thich this
-   *        delegate provides the look and feel.
-   *
-   * @return the leftmost (or topmost) possible location
-   *         of the divider.
-   */
-  public abstract int getMinimumDividerLocation(JSplitPane pane);
-
-
-  /**
-   * Determines the maximum location of the divider.
-   *
-   * @param pane the <code>JSplitPane</code> for thich this
-   *        delegate provides the look and feel.
-   *
-   * @return the bottommost (or rightmost) possible location
-   *         of the divider.
-   */
-  public abstract int getMaximumDividerLocation(JSplitPane pane);
-
-
-  /**
-   * Called by the <code>JSplitPane</code> after it has finished
-   * painting its children.
-   *
-   * @param pane the <code>JSplitPane</code> for thich this
-   *        delegate provides the look and feel.
-   *
-   * @param g the Graphics used for painting.
-   */
-  public abstract void finishedPaintingChildren(JSplitPane pane,
-                                                Graphics g);
-}
diff --git a/libjava/classpath/javax/swing/plaf/TabbedPaneUI.java b/libjava/classpath/javax/swing/plaf/TabbedPaneUI.java
deleted file mode 100644
index 59136e0..0000000
--- a/libjava/classpath/javax/swing/plaf/TabbedPaneUI.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/* TabbedPaneUI.java --
-   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.awt.Rectangle;
-
-import javax.swing.JTabbedPane;
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JTabbedPane</code>.
- *
- * @see javax.swing.JTabbedPane
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class TabbedPaneUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>TabbedPaneUI</code>.
-   */
-  public TabbedPaneUI()
-  {
-    // Nothing to do here.
-  }
-
-
-  /**
-   * Determines which tab lies at a given position.
-   *
-   * @param pane the <code>JTabbedPane</code> for which this
-   *        delegate object provides the user interface.
-   *
-   * @param x the horizontal position, where zero is the left
-   *        edge of <code>pane</code>.
-   *
-   * @param y the vertical position, where zero is the top
-   *        edge of <code>pane</code>.
-   *
-   * @return the zero-based index of the tab, or -1 if no
-   *         tab is at the specified position.
-   */
-  public abstract int tabForCoordinate(JTabbedPane pane,
-                                       int x, int y);
-
-
-  /**
-   * Calculates the bounding box of a tab.
-   *
-   * @param pane the <code>JTabbedPane</code> for which this
-   *        delegate object provides the user interface.
-   *
-   * @param index the index of the tab, which must be an integer
-   *        in the range <code>[0 .. pane.getTabCount() - 1]</code>.
-   *
-   * @return the bounding box of the <code>index</code>-th tab,
-   *         in the coordinate system of <code>pane</code>.
-   */
-  public abstract Rectangle getTabBounds(JTabbedPane pane, int index);
-
-
-  /**
-   * Determines how many runs are used to display tabs.
-   *
-   * @param pane the <code>JTabbedPane</code> for which this
-   *        delegate object provides the user interface.
-   *
-   * @return the number of tab runs.
-   *
-   * @see javax.swing.JTabbedPane#getTabRunCount()
-   */
-  public abstract int getTabRunCount(JTabbedPane pane);
-}
diff --git a/libjava/classpath/javax/swing/plaf/TableHeaderUI.java b/libjava/classpath/javax/swing/plaf/TableHeaderUI.java
deleted file mode 100644
index 34ac0e0..0000000
--- a/libjava/classpath/javax/swing/plaf/TableHeaderUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* TableHeaderUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JTableHeader</code>.
- *
- * @see javax.swing.table.JTableHeader
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class TableHeaderUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>TableHeaderUI</code>.
-   */
-  public TableHeaderUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/TableUI.java b/libjava/classpath/javax/swing/plaf/TableUI.java
deleted file mode 100644
index a8c6bf9..0000000
--- a/libjava/classpath/javax/swing/plaf/TableUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* TableUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JTable</code>.
- *
- * @see javax.swing.JTable
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class TableUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>TableUI</code>.
-   */
-  public TableUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/TextUI.java b/libjava/classpath/javax/swing/plaf/TextUI.java
deleted file mode 100644
index 424cee9..0000000
--- a/libjava/classpath/javax/swing/plaf/TextUI.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/* TextUI.java --
-   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.Shape;
-
-import javax.swing.text.BadLocationException;
-import javax.swing.text.EditorKit;
-import javax.swing.text.JTextComponent;
-import javax.swing.text.Position;
-import javax.swing.text.View;
-
-/**
- * An abstract base class for delegates that provide the user
- * interface for text editors.
- *
- * @see javax.swing.text.JTextComponent
- *
- * @author Ronald Veldema (rveldema@cs.vu.nl)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class TextUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>TextUI</code>.
-   */
-  public TextUI()
-  {
-    // Nothing to do here.
-  }
-
-
-  /**
-   * Calculates the geometric extent of the character at the
-   * given offset.
-   *
-   * @param tc the <code>JTextComponent</code> for which this
-   *        delegate object provides the user interface.
-   *
-   * @param pos the zero-based index of the character into the
-   *        document model.
-   *
-   * @return the bounding box of the character at index
-   *         <code>pos</code>, in view coordinates.
-   *
-   * @throws BadLocationException if <code>pos</code> does not
-   *         designate a valid position in the document model.
-   *
-   * @see javax.swing.text.ComponentView#modelToView(int, Shape, Position.Bias)
-   */
-  public abstract Rectangle modelToView(JTextComponent tc, int pos)
-    throws BadLocationException;
-
-
-  /**
-   * Calculates the geometric extent of the character at the
-   * given offset.
-   *
-   * @param tc the <code>JTextComponent</code> for which this
-   *        delegate object provides the user interface.
-   *
-   * @param pos the zero-based index of the character into the
-   *        document model.
-   *
-   * @param bias whether to take the character before or after the
-   *        caret position indicated by <code>pos</code>.  The value
-   *        must be either {@link
-   *        javax.swing.text.Position.Bias#Backward} or {@link
-   *        javax.swing.text.Position.Bias#Forward}.
-   *
-   * @return the bounding box of the character at index
-   *         <code>pos</code>, in view coordinates.
-   *
-   * @throws BadLocationException if <code>pos</code> does not
-   *         designate a valid position in the document model.
-   *
-   * @see javax.swing.text.ComponentView#modelToView(int, Shape, Position.Bias)
-   */
-  public abstract Rectangle modelToView(JTextComponent tc, int pos,
-                                        Position.Bias bias)
-    throws BadLocationException;
-
-
-  /**
-   * Finds the caret position which is closest to the specified visual
-   * location.
-   *
-   * @param t the <code>JTextComponent</code> for which this
-   *        delegate object provides the user interface.
-   *
-   * @param pt the position in view coordinates.
-   *
-   * @return the caret position which is closest to <code>loc</code>.
-   *
-   * @see #viewToModel(JTextComponent, Point, Position.Bias[])
-   */
-  public abstract int viewToModel(JTextComponent t, Point pt);
-
-
-  /**
-   * Finds the caret position which is closest to the specified visual
-   * location.
-   *
-   * @param tc the <code>JTextComponent</code> for which this
-   *        delegate object provides the user interface.
-   *
-   * @param loc the position in view coordinates.
-   *
-   * @param outBias an array whose size must be at least one.
-   *        After the call, <code>outBias[0]</code> will indicate
-   *        whether <code>loc</code> is in the glyph before
-   *        (<code>Position.Bias.Backward</code>) or after
-   *        (<code>Position.Bias.Forward</code>) the returned
-   *        caret position.
-   *
-   * @return the caret position which is closest to <code>loc</code>.
-   */
-  public abstract int viewToModel(JTextComponent tc, Point loc,
-                                  Position.Bias[] outBias);
-
-
-
-  /**
-   * Calculates the caret position that is visually next to the given
-   * position. This is useful to determine where to move the caret
-   * after the user has pressed an arrow key.
-   *
-   * @param tc the <code>JTextComponent</code> for which this
-   *        delegate object provides the user interface.
-   *
-   * @param pos the current caret position, a zero-based index
-   *        into the document model.
-   *
-   * @param bias whether to take the character before or after the
-   *        caret position indicated by <code>pos</code>.  The value
-   *        must be either {@link
-   *        javax.swing.text.Position.Bias#Backward} or {@link
-   *        javax.swing.text.Position.Bias#Forward}.
-   *
-   * @param direction the visual direction. Pass
-   *        {@link javax.swing.SwingConstants#WEST} for the left
-   *        arrow key, {@link javax.swing.SwingConstants#EAST}
-   *        for the right arrow key, {@link
-   *        javax.swing.SwingConstants#NORTH} for the up arrow
-   *        key, or {@link javax.swing.SwingConstants#SOUTH}
-   *        for the down arrow key.
-   *
-   * @throws BadLocationException if <code>pos</code> does not
-   *         designate a valid position in the document model.
-   *
-   * @throws IllegalArgumentException if <code>direction</code>
-   *         is not one of <code>Position.Bias.Forward</code>
-   *         or <code>Position.Bias.Backward</code>.
-   */
-  public abstract int getNextVisualPositionFrom(JTextComponent tc,
-                                                int pos,
-                                                Position.Bias bias,
-                                                int direction,
-                                                Position.Bias[] outBias)
-    throws BadLocationException;
-
-
-  /**
-   * Repaints a range of characters.
-   *
-   * @param tc the <code>JTextComponent</code> for which this
-   *        delegate object provides the user interface.
-   *
-   * @param start the first character in the range that needs
-   *        painting, indicated as an index into the document model.
-   *
-   * @param end the last character in the range that needs
-   *        painting, indicated as an index into the document model.
-   *        <code>end</code> must be greater than or equal to
-   *        <code>start</code>.
-   */
-  public abstract void damageRange(JTextComponent tc, int start, int end);
-
-
-  /**
-   * Repaints a range of characters, also specifying the bias for the
-   * start and end of the range.
-   *
-   * @param tc the <code>JTextComponent</code> for which this
-   *        delegate object provides the user interface.
-   *
-   * @param start the first character in the range that needs
-   *        painting, indicated as an index into the document model.
-   *
-   * @param end the last character in the range that needs
-   *        painting, indicated as an index into the document model.
-   *        <code>end</code> must be greater than or equal to
-   *        <code>start</code>.
-   */
-  public abstract void damageRange(JTextComponent tc,
-                                   int start, int end,
-                                   Position.Bias startBias,
-                                   Position.Bias endBias);
-
-
-  /**
-   * Retrieves the <code>EditorKit</code> managing policies and
-   * persistent state.
-   *
-   * @param tc the <code>JTextComponent</code> for which this
-   *        delegate object provides the user interface.
-   *
-   * @return the <code>EditorKit</code> used by <code>tc</code>.
-   */
-  public abstract EditorKit getEditorKit(JTextComponent tc);
-
-
-  /**
-   * Retrieves the root of the view tree that visually presents
-   * the text.
-   *
-   * @param tc the <code>JTextComponent</code> for which this
-   *        delegate object provides the user interface.
-   *
-   * @return the root <code>View</code> used by <code>tc</code>.
-   */
-  public abstract View getRootView(JTextComponent tc);
-
-
-  /**
-   * Returns a String for presenting a tool tip at the specified
-   * location.
-   *
-   * @param tc the <code>JTextComponent</code> for which this
-   *        delegate object provides the user interface.
-   *
-   * @param loc the location for which the tool tip is requested.
-   *
-   * @return the text for the tool tip, or <code>null</code> to
-   *         display no tool tip.
-   *
-   * @since 1.4
-   */
-  public String getToolTipText(JTextComponent tc, Point loc)
-  {
-    return null;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/ToolBarUI.java b/libjava/classpath/javax/swing/plaf/ToolBarUI.java
deleted file mode 100644
index 9a26e7b..0000000
--- a/libjava/classpath/javax/swing/plaf/ToolBarUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* ToolBarUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JToolBar</code>.
- *
- * @see javax.swing.JToolBar
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ToolBarUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>ToolBarUI</code>.
-   */
-  public ToolBarUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/ToolTipUI.java b/libjava/classpath/javax/swing/plaf/ToolTipUI.java
deleted file mode 100644
index ae2d465..0000000
--- a/libjava/classpath/javax/swing/plaf/ToolTipUI.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* ToolTipUI.java --
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf;
-
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JToolTip</code>.
- *
- * @see javax.swing.JToolTip
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ToolTipUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>ToolTipUI</code>.
-   */
-  public ToolTipUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/TreeUI.java b/libjava/classpath/javax/swing/plaf/TreeUI.java
deleted file mode 100644
index 308ec63..0000000
--- a/libjava/classpath/javax/swing/plaf/TreeUI.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/* TreeUI.java --
-   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-import java.awt.Rectangle;
-
-import javax.swing.JTree;
-import javax.swing.tree.TreePath;
-
-/**
- * An abstract base class for delegates that provide the user
- * interface for <code>JTree</code>.
- *
- * @see javax.swing.JTree
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class TreeUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>TreeUI</code>.
-   */
-  public TreeUI()
-  {
-    // Nothing to do here.
-  }
-
-
-  /**
-   * Determines the geometric extent of the label that is
-   * drawn for a path.
-   *
-   * @param tree the <code>JTree</code> for which this delegate
-   *        object provides the user interface.
-   *
-   * @param path the path whose label extent is requested.
-   *
-   * @return a rectangle enclosing the label, or <code>null</code>
-   *         if <code>path</code> contains invalid nodes.
-   */
-  public abstract Rectangle getPathBounds(JTree tree, TreePath path);
-
-
-  /**
-   * Creates a <code>TreePath</code> for the specified row.
-   *
-   * @param tree the <code>JTree</code> for which this delegate
-   *        object provides the user interface.
-   *
-   * @param row the index of the row, which should be a number
-   *        in the range <code>[0, getRowCount(tree) - 1]</code>.
-   *
-   * @return a <code>TreePath</code> for the specified row, or
-   *         <code>null</code> if <code>row</code> is outside
-   *         the valid range.
-   */
-  public abstract TreePath getPathForRow(JTree tree, int row);
-
-
-  /**
-   * Determines in which row a <code>TreePath</code> is currently
-   * being displayed.
-   *
-   * @param tree the <code>JTree</code> for which this delegate
-   *        object provides the user interface.
-   *
-   * @param path the path for which the caller wants to know
-   *        in which row it is being displayed.
-   *
-   * @return a number in the range <code>[0, getRowCount(tree)
-   *         - 1]</code> if the path is currently on display;
-   *         <code>-1</code> if the path is not shown to the
-   *        user.
-   */
-  public abstract int getRowForPath(JTree tree, TreePath path);
-
-
-  /**
-   * Counts how many rows are currently displayed.
-   *
-   * @param tree the <code>JTree</code> for which this delegate
-   *        object provides the user interface.
-   *
-   * @return the number of visible rows.
-   */
-  public abstract int getRowCount(JTree tree);
-
-
-  /**
-   * Finds the path that is closest to the specified position.
-   *
-   * <p><img src="doc-files/TreeUI-1.png" width="300" height="250"
-   * alt="[A screen shot of a JTree]" />
-   *
-   * <p>As shown by the above illustration, the bounds of the
-   * closest path do not necessarily need to contain the passed
-   * location.
-   *
-   * @param tree the <code>JTree</code> for which this delegate
-   *        object provides the user interface.
-   *
-   * @param x the horizontal location, relative to the origin
-   *        of <code>tree</code>.
-   *
-   * @param y the vertical location, relative to the origin
-   *        of <code>tree</code>.
-   *
-   * @return the closest path, or <code>null</code> if the
-   *         tree is currenlty not displaying any paths at all.
-   */
-  public abstract TreePath getClosestPathForLocation(JTree tree,
-                                                     int x, int y);
-
-
-  /**
-   * Determines whether the user is currently editing a tree cell.
-   *
-   * @param tree the <code>JTree</code> for which this delegate
-   *        object provides the user interface.
-   *
-   * @see #getEditingPath
-   */
-  public abstract boolean isEditing(JTree tree);
-
-
-  /**
-   * Stops editing a tree cell, committing the entered value into the
-   * tree&#x2019;s model. If no editing session is active, or if the
-   * active editor does not agree to stopping, nothing happens.  In
-   * some look and feels, this action happens when the user has
-   * pressed the enter key.
-   *
-   * @param tree the <code>JTree</code> for which this delegate
-   *        object provides the user interface.
-   *
-   * @return <code>false</code> if the editing still goes on because
-   *         the cell editor has objected to stopping the session;
-   *         <code>true</code> if editing has been stopped.
-   */
-  public abstract boolean stopEditing(JTree tree);
-
-
-  /**
-   * Cancels editing a tree cell, discarding any entered value.
-   * If no editing session is active, nothing happens. The cell
-   * editor is not given an opportunity to veto the canceling.
-   * In some look and feels, this action happens when the user has
-   * pressed the escape key.
-   *
-   * @param tree the <code>JTree</code> for which this delegate
-   *        object provides the user interface.
-   */
-  public abstract void cancelEditing(JTree tree);
-
-
-  /**
-   * Starts a session to edit a tree cell. If the cell editor
-   * rejects editing the cell, it will just be selected.
-   *
-   * @param tree the <code>JTree</code> for which this delegate
-   *        object provides the user interface.
-   *
-   * @param path the cell to edit.
-   */
-  public abstract void startEditingAtPath(JTree tree, TreePath path);
-
-
-  /**
-   * Retrieves the tree cell that is currently being edited.
-   *
-   * @return the currently edited path, or <code>null</code>
-   *         if no editing session is currently active.
-   */
-  public abstract TreePath getEditingPath(JTree tree);
-}
diff --git a/libjava/classpath/javax/swing/plaf/UIResource.java b/libjava/classpath/javax/swing/plaf/UIResource.java
deleted file mode 100644
index 511aaa7..0000000
--- a/libjava/classpath/javax/swing/plaf/UIResource.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* UIResource.java
-   Copyright (C) 1999 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-/**
- * This public interface is used to designate which objects were created by
- * {@link ComponentUI} delegates.  When uninstalling the user public interface
- * renderer with <code>ComponentUI.uninstallUI()</code> the renderer
- * property is set to <code>null</code>.
- * <br>
- * A comparison against null can be used with all properties except for
- * the <code>java.awt.Component</code> properties font, foreground, and
- * background.  The container can provide the value of the properties if
- * they are initialized or set to <code>null</code>.
- *
- * @author Brian Jones
- *
- * @see ComponentUI
- */
-public interface UIResource
-{
-  // This is a marker interface and declares no methods.
-}
diff --git a/libjava/classpath/javax/swing/plaf/ViewportUI.java b/libjava/classpath/javax/swing/plaf/ViewportUI.java
deleted file mode 100644
index db514de..0000000
--- a/libjava/classpath/javax/swing/plaf/ViewportUI.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/* ViewportUI.java
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf;
-
-
-/**
- * An abstract base class for delegates that implement the pluggable
- * look and feel for a <code>JViewport</code>.
- *
- * @see javax.swing.JViewport
- *
- * @author Andrew Selkirk (aselkirk@sympatico.ca)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ViewportUI extends ComponentUI
-{
-  /**
-   * Constructs a new <code>ViewportUI</code>.
-   */
-  public ViewportUI()
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicArrowButton.java b/libjava/classpath/javax/swing/plaf/basic/BasicArrowButton.java
deleted file mode 100644
index 1d6e887..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicArrowButton.java
+++ /dev/null
@@ -1,422 +0,0 @@
-/* BasicArrowButton.java --
-   Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Polygon;
-
-import javax.swing.ButtonModel;
-import javax.swing.JButton;
-import javax.swing.SwingConstants;
-
-/**
- * A button that displays an arrow (triangle) that points {@link #NORTH},
- * {@link #SOUTH}, {@link #EAST} or {@link #WEST}.  This button is used by
- * the {@link BasicComboBoxUI} class.
- *
- * @see BasicComboBoxUI#createArrowButton
- */
-public class BasicArrowButton extends JButton implements SwingConstants
-{
-
-  /**
-   * The direction that the arrow points.
-   *
-   * @see #getDirection()
-   */
-  protected int direction;
-
-  /**
-   * The color the arrow is painted in if disabled and the bottom and right
-   * edges of the button.
-   * This is package-private to avoid an accessor method.
-   */
-  transient Color shadow = Color.GRAY;
-
-  /**
-   * The color the arrow is painted in if enabled and the bottom and right
-   * edges of the button.
-   * This is package-private to avoid an accessor method.
-   */
-  transient Color darkShadow = new Color(102, 102, 102);
-
-  /**
-   * The top and left edges of the button.
-   * This is package-private to avoid an accessor method.
-   */
-  transient Color highlight = Color.WHITE;
-
-  /**
-   * Creates a new <code>BasicArrowButton</code> object with an arrow pointing
-   * in the specified direction.  If the <code>direction</code> is not one of
-   * the specified constants, no arrow is drawn.
-   *
-   * @param direction The direction the arrow points in (one of:
-   * {@link #NORTH}, {@link #SOUTH}, {@link #EAST} and {@link #WEST}).
-   */
-  public BasicArrowButton(int direction)
-  {
-    super();
-    setDirection(direction);
-    setFocusable(false);
-  }
-
-  /**
-   * Creates a new BasicArrowButton object with the given colors and
-   * direction.
-   *
-   * @param direction The direction to point in (one of:
-   * {@link #NORTH}, {@link #SOUTH}, {@link #EAST} and {@link #WEST}).
-   * @param background The background color.
-   * @param shadow The shadow color.
-   * @param darkShadow The dark shadow color.
-   * @param highlight The highlight color.
-   */
-  public BasicArrowButton(int direction, Color background, Color shadow,
-                          Color darkShadow, Color highlight)
-  {
-    this(direction);
-    setBackground(background);
-    this.shadow = shadow;
-    this.darkShadow = darkShadow;
-    this.highlight = highlight;
-    setFocusable(false);
-  }
-
-  /**
-   * Returns whether the focus can traverse to this component.  This method
-   * always returns <code>false</code>.
-   *
-   * @return <code>false</code>.
-   */
-  public boolean isFocusTraversable()
-  {
-    return false;
-  }
-
-  /**
-   * Returns the direction of the arrow (one of: {@link #NORTH},
-   * {@link #SOUTH}, {@link #EAST} and {@link #WEST}).
-   *
-   * @return The direction of the arrow.
-   */
-  public int getDirection()
-  {
-    return direction;
-  }
-
-  /**
-   * Sets the direction of the arrow.
-   *
-   * @param dir The new direction of the arrow (one of: {@link #NORTH},
-   *            {@link #SOUTH}, {@link #EAST} and {@link #WEST}).
-   */
-  public void setDirection(int dir)
-  {
-    this.direction = dir;
-  }
-
-  /**
-   * Paints the arrow button. The painting is delegated to the
-   * paintTriangle method.
-   *
-   * @param g The Graphics object to paint with.
-   */
-  public void paint(Graphics g)
-  {
-    super.paint(g);
-
-    int height = getHeight();
-    int size = height / 4;
-
-    int x = (getWidth() - size) / 2;
-    int y = (height - size) / 2;
-
-    ButtonModel m = getModel();
-    if (m.isArmed())
-      {
-        x++;
-        y++;
-      }
-
-    paintTriangle(g, x, y, size, direction, isEnabled());
-  }
-
-  /**
-   * Returns the preferred size of the arrow button.
-   *
-   * @return The preferred size (always 16 x 16).
-   */
-  public Dimension getPreferredSize()
-  {
-    // since Dimension is NOT immutable, we must return a new instance
-    // every time (if we return a cached value, the caller might modify it)
-    // - tests show that the reference implementation does the same.
-    return new Dimension(16, 16);
-  }
-
-  /**
-   * Returns the minimum size of the arrow button.
-   *
-   * @return The minimum size (always 5 x 5).
-   */
-  public Dimension getMinimumSize()
-  {
-    // since Dimension is NOT immutable, we must return a new instance
-    // every time (if we return a cached value, the caller might modify it)
-    // - tests show that the reference implementation does the same.
-    return new Dimension(5, 5);
-  }
-
-  /**
-   * Returns the maximum size of the arrow button.
-   *
-   * @return The maximum size (always Integer.MAX_VALUE x Integer.MAX_VALUE).
-   */
-  public Dimension getMaximumSize()
-  {
-    // since Dimension is NOT immutable, we must return a new instance
-    // every time (if we return a cached value, the caller might modify it)
-    // - tests show that the reference implementation does the same.
-    return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
-  }
-
-  /**
-   * Paints a triangle with the given size, location and direction.  It is
-   * difficult to explain the rationale behind the positioning of the triangle
-   * relative to the given (x, y) position - by trial and error we seem to
-   * match the behaviour of the reference implementation (which is missing a
-   * specification for this method).
-   *
-   * @param g  the graphics device.
-   * @param x  the x-coordinate for the triangle's location.
-   * @param y  the y-coordinate for the triangle's location.
-   * @param size  the arrow size (depth).
-   * @param direction  the direction of the arrow (one of: {@link #NORTH},
-   *            {@link #SOUTH}, {@link #EAST} and {@link #WEST}).
-   * @param isEnabled  if <code>true</code> the arrow is drawn in the enabled
-   *                   state, otherwise it is drawn in the disabled state.
-   */
-  public void paintTriangle(Graphics g, int x, int y, int size, int direction,
-                            boolean isEnabled)
-  {
-    Color savedColor = g.getColor();
-    switch (direction)
-      {
-      case NORTH:
-        paintTriangleNorth(g, x, y, size, isEnabled);
-        break;
-      case SOUTH:
-        paintTriangleSouth(g, x, y, size, isEnabled);
-        break;
-      case LEFT:
-      case WEST:
-        paintTriangleWest(g, x, y, size, isEnabled);
-        break;
-      case RIGHT:
-      case EAST:
-        paintTriangleEast(g, x, y, size, isEnabled);
-        break;
-      }
-    g.setColor(savedColor);
-  }
-
-  /**
-   * Paints an upward-pointing triangle.  This method is called by the
-   * {@link #paintTriangle(Graphics, int, int, int, int, boolean)} method.
-   *
-   * @param g  the graphics device.
-   * @param x  the x-coordinate for the anchor point.
-   * @param y  the y-coordinate for the anchor point.
-   * @param size  the arrow size (depth).
-   * @param isEnabled  if <code>true</code> the arrow is drawn in the enabled
-   *                   state, otherwise it is drawn in the disabled state.
-   */
-  private void paintTriangleNorth(Graphics g, int x, int y, int size,
-          boolean isEnabled)
-  {
-    int tipX = x + (size - 2) / 2;
-    int tipY = y;
-    int baseX1 = tipX - (size - 1);
-    int baseX2 = tipX + (size - 1);
-    int baseY = y + (size - 1);
-    Polygon triangle = new Polygon();
-    triangle.addPoint(tipX, tipY);
-    triangle.addPoint(baseX1, baseY);
-    triangle.addPoint(baseX2, baseY);
-    if (isEnabled)
-     {
-       g.setColor(Color.DARK_GRAY);
-       g.fillPolygon(triangle);
-       g.drawPolygon(triangle);
-     }
-    else
-     {
-       g.setColor(Color.GRAY);
-       g.fillPolygon(triangle);
-       g.drawPolygon(triangle);
-       g.setColor(Color.WHITE);
-       g.drawLine(baseX1 + 1, baseY + 1, baseX2 + 1, baseY + 1);
-     }
-  }
-
-  /**
-   * Paints an downward-pointing triangle.  This method is called by the
-   * {@link #paintTriangle(Graphics, int, int, int, int, boolean)} method.
-   *
-   * @param g  the graphics device.
-   * @param x  the x-coordinate for the anchor point.
-   * @param y  the y-coordinate for the anchor point.
-   * @param size  the arrow size (depth).
-   * @param isEnabled  if <code>true</code> the arrow is drawn in the enabled
-   *                   state, otherwise it is drawn in the disabled state.
-   */
-  private void paintTriangleSouth(Graphics g, int x, int y, int size,
-          boolean isEnabled)
-  {
-    int tipX = x + (size - 2) / 2;
-    int tipY = y + (size - 1);
-    int baseX1 = tipX - (size - 1);
-    int baseX2 = tipX + (size - 1);
-    int baseY = y;
-    Polygon triangle = new Polygon();
-    triangle.addPoint(tipX, tipY);
-    triangle.addPoint(baseX1, baseY);
-    triangle.addPoint(baseX2, baseY);
-    if (isEnabled)
-     {
-       g.setColor(Color.DARK_GRAY);
-       g.fillPolygon(triangle);
-       g.drawPolygon(triangle);
-     }
-    else
-     {
-       g.setColor(Color.GRAY);
-       g.fillPolygon(triangle);
-       g.drawPolygon(triangle);
-       g.setColor(Color.WHITE);
-       g.drawLine(tipX + 1, tipY, baseX2, baseY + 1);
-       g.drawLine(tipX + 1, tipY + 1, baseX2 + 1, baseY + 1);
-     }
-  }
-
-  /**
-   * Paints a right-pointing triangle.  This method is called by the
-   * {@link #paintTriangle(Graphics, int, int, int, int, boolean)} method.
-   *
-   * @param g  the graphics device.
-   * @param x  the x-coordinate for the anchor point.
-   * @param y  the y-coordinate for the anchor point.
-   * @param size  the arrow size (depth).
-   * @param isEnabled  if <code>true</code> the arrow is drawn in the enabled
-   *                   state, otherwise it is drawn in the disabled state.
-   */
-  private void paintTriangleEast(Graphics g, int x, int y, int size,
-          boolean isEnabled)
-  {
-    int tipX = x + (size - 1);
-    int tipY = y + (size - 2) / 2;
-    int baseX = x;
-    int baseY1 = tipY - (size - 1);
-    int baseY2 = tipY + (size - 1);
-
-    Polygon triangle = new Polygon();
-    triangle.addPoint(tipX, tipY);
-    triangle.addPoint(baseX, baseY1);
-    triangle.addPoint(baseX, baseY2);
-    if (isEnabled)
-     {
-       g.setColor(Color.DARK_GRAY);
-       g.fillPolygon(triangle);
-       g.drawPolygon(triangle);
-     }
-    else
-     {
-       g.setColor(Color.GRAY);
-       g.fillPolygon(triangle);
-       g.drawPolygon(triangle);
-       g.setColor(Color.WHITE);
-       g.drawLine(baseX + 1, baseY2, tipX, tipY + 1);
-       g.drawLine(baseX + 1, baseY2 + 1, tipX + 1, tipY + 1);
-     }
-  }
-
-  /**
-   * Paints a left-pointing triangle.  This method is called by the
-   * {@link #paintTriangle(Graphics, int, int, int, int, boolean)} method.
-   *
-   * @param g  the graphics device.
-   * @param x  the x-coordinate for the anchor point.
-   * @param y  the y-coordinate for the anchor point.
-   * @param size  the arrow size (depth).
-   * @param isEnabled  if <code>true</code> the arrow is drawn in the enabled
-   *                   state, otherwise it is drawn in the disabled state.
-   */
-  private void paintTriangleWest(Graphics g, int x, int y, int size,
-          boolean isEnabled)
-  {
-    int tipX = x;
-    int tipY = y + (size - 2) / 2;
-    int baseX = x + (size - 1);
-    int baseY1 = tipY - (size - 1);
-    int baseY2 = tipY + (size - 1);
-
-    Polygon triangle = new Polygon();
-    triangle.addPoint(tipX, tipY);
-    triangle.addPoint(baseX, baseY1);
-    triangle.addPoint(baseX, baseY2);
-    if (isEnabled)
-     {
-       g.setColor(Color.DARK_GRAY);
-       g.fillPolygon(triangle);
-       g.drawPolygon(triangle);
-     }
-    else
-     {
-       g.setColor(Color.GRAY);
-       g.fillPolygon(triangle);
-       g.drawPolygon(triangle);
-       g.setColor(Color.WHITE);
-       g.drawLine(baseX + 1, baseY1 + 1, baseX + 1, baseY2 + 1);
-     }
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicBorders.java b/libjava/classpath/javax/swing/plaf/basic/BasicBorders.java
deleted file mode 100644
index 83afc33..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicBorders.java
+++ /dev/null
@@ -1,1768 +0,0 @@
-/* BasicBorders.java --
-   Copyright (C) 2003, 2004, 2005  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Rectangle;
-import java.io.Serializable;
-
-import javax.swing.AbstractButton;
-import javax.swing.ButtonModel;
-import javax.swing.JButton;
-import javax.swing.JPopupMenu;
-import javax.swing.JSplitPane;
-import javax.swing.JToolBar;
-import javax.swing.UIManager;
-import javax.swing.border.AbstractBorder;
-import javax.swing.border.BevelBorder;
-import javax.swing.border.Border;
-import javax.swing.plaf.BorderUIResource;
-import javax.swing.plaf.UIResource;
-import javax.swing.text.JTextComponent;
-
-/**
- * Provides various borders for the Basic look and feel.
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public class BasicBorders
-{
-  /**
-   * A MarginBorder that gets shared by multiple components.
-   * Created on demand by the private helper function {@link
-   * #getMarginBorder()}.
-   */
-  private static MarginBorder sharedMarginBorder;
-
-
-  /**
-   * Returns a border for drawing push buttons.
-   *
-   * <p>The colors of the border are retrieved from the
-   * <code>UIDefaults</code> of the currently active look and feel
-   * using the keys <code>&#x201c;Button.shadow&#x201d;</code>,
-   * <code>&#x201c;Button.darkShadow&#x201d;</code>,
-   * <code>&#x201c;Button.light&#x201d;</code>, and
-   * <code>&#x201c;Button.highlight&#x201d;</code>.
-   *
-   * <p><img src="doc-files/BasicBorders.ButtonBorder-1.png" width="300"
-   * height="170" alt="[A screen shot of the returned border]" />
-   *
-   * @return a {@link
-   *         javax.swing.plaf.BorderUIResource.CompoundBorderUIResource}
-   *         whose outer border is a {@link ButtonBorder} and whose
-   *         inner border is a {@link MarginBorder}.
-   */
-  public static Border getButtonBorder()
-  {
-    Border outer;
-
-    /* The keys for UIDefaults have been determined by writing a
-     * test program that dumps the UIDefaults to stdout; that program
-     * was run on a JDK 1.4.1_01 for GNU/Linux. Note that in the API,
-     * the key "light" is usually called "highlight", and "highlight"
-     * is usually called "lightHighlight".
-     */
-    outer = new ButtonBorder(UIManager.getColor("Button.shadow"),
-                             UIManager.getColor("Button.darkShadow"),
-                             UIManager.getColor("Button.light"),
-                             UIManager.getColor("Button.highlight"));
-
-    /* While the inner border is shared between multiple buttons,
-     * we do not share the outer border because ButtonBorders store
-     * their border colors. We cannot guarantee that the colors
-     * (which come from UIDefaults) are unchanged between invocations
-     * of getButtonBorder. We could store the last colors, and share
-     * the button border if the colors are the same as in the last
-     * invocation, but it probably is not worth the effort.
-     */
-    return new BorderUIResource.CompoundBorderUIResource(
-      outer,
-      /* inner */ getMarginBorder());
-  }
-
-
-  /**
-   * Returns a border for drawing radio buttons.
-   *
-   * <p>The colors of the border are retrieved from the
-   * <code>UIDefaults</code> of the currently active look and feel
-   * using the keys <code>&#x201c;RadioButton.shadow&#x201d;</code>,
-   * <code>&#x201c;RadioButton.darkShadow&#x201d;</code>,
-   * <code>&#x201c;RadioButton.light&#x201d;</code>, and
-   * <code>&#x201c;RadioButton.highlight&#x201d;</code>.
-   *
-   * <p><img src="doc-files/BasicBorders.RadioButtonBorder-1.png" width="300"
-   * height="135" alt="[A screen shot of the returned border]" />
-   *
-   * @return a {@link
-   *         javax.swing.plaf.BorderUIResource.CompoundBorderUIResource}
-   *         whose outer border is a {@link RadioButtonBorder} and whose
-   *         inner border is a {@link MarginBorder}.
-   */
-  public static Border getRadioButtonBorder()
-  {
-    Border outer;
-
-    /* The keys for UIDefaults have been determined by writing a
-     * test program that dumps the UIDefaults to stdout; that program
-     * was run on a JDK 1.4.1_01 for GNU/Linux. Note that in the API,
-     * the key "light" is usually called "highlight", and "highlight"
-     * is usually called "lightHighlight".
-     */
-    outer = new RadioButtonBorder(
-      UIManager.getColor("RadioButton.shadow"),
-      UIManager.getColor("RadioButton.darkShadow"),
-      UIManager.getColor("RadioButton.light"),
-      UIManager.getColor("RadioButton.highlight"));
-
-    /* While the inner border is shared between multiple buttons, we
-     * do not share the outer border because RadioButtonBorders, being
-     * ButtonBorders, store their border colors. We cannot guarantee
-     * that the colors (which come from UIDefaults) are unchanged
-     * between invocations of getButtonBorder. We could store the last
-     * colors, and share the button border if the colors are the same
-     * as in the last invocation, but it probably is not worth the
-     * effort.
-     */
-    return new BorderUIResource.CompoundBorderUIResource(
-      outer,
-      /* inner */ getMarginBorder());
-  }
-
-
-  /**
-   * Returns a border for drawing toggle buttons.
-   *
-   * <p>The colors of the border are retrieved from the
-   * <code>UIDefaults</code> of the currently active look and feel
-   * using the keys <code>&#x201c;ToggleButton.shadow&#x201d;</code>,
-   * <code>&#x201c;ToggleButton.darkShadow&#x201d;</code>,
-   * <code>&#x201c;ToggleButton.light&#x201d;</code>, and
-   * <code>&#x201c;ToggleButton.highlight&#x201d;</code>.
-   *
-   * <p><img src="doc-files/BasicBorders.ToggleButtonBorder-1.png" width="270"
-   * height="135" alt="[A screen shot of the returned border]" />
-   *
-   * @return a {@link
-   *         javax.swing.plaf.BorderUIResource.CompoundBorderUIResource}
-   *         whose outer border is a {@link ToggleButtonBorder} and whose
-   *         inner border is a {@link MarginBorder}.
-   */
-  public static Border getToggleButtonBorder()
-  {
-    Border outer;
-
-    /* The keys for UIDefaults have been determined by writing a
-     * test program that dumps the UIDefaults to stdout; that program
-     * was run on a JDK 1.4.1_01 for GNU/Linux. Note that in the API,
-     * the key "light" is usually called "highlight", and "highlight"
-     * is usually called "lightHighlight".
-     */
-    outer = new ToggleButtonBorder(
-      UIManager.getColor("ToggleButton.shadow"),
-      UIManager.getColor("ToggleButton.darkShadow"),
-      UIManager.getColor("ToggleButton.light"),
-      UIManager.getColor("ToggleButton.highlight"));
-
-    /* While the inner border is shared between multiple buttons, we
-     * do not share the outer border because ToggleButtonBorders, being
-     * ButtonBorders, store their border colors. We cannot guarantee
-     * that the colors (which come from UIDefaults) are unchanged
-     * between invocations of getButtonBorder. We could store the last
-     * colors, and share the button border if the colors are the same
-     * as in the last invocation, but it probably is not worth the
-     * effort.
-     */
-    return new BorderUIResource.CompoundBorderUIResource(
-      outer,
-      /* inner */ getMarginBorder());
-  }
-
-
-  /**
-   * Returns a border for drawing a two-pixel thick separator line
-   * below menu bars.
-   *
-   * <p>The colors of the border are retrieved from the
-   * <code>UIDefaults</code> of the currently active look and feel
-   * using the keys <code>&#x201c;MenuBar.shadow&#x201d;</code> and
-   * <code>&#x201c;MenuBar.highlight&#x201d;</code>.
-   *
-   * <p><img src="doc-files/BasicBorders.MenuBarBorder-1.png" width="500"
-   * height="140" alt="[A screen shot of a JMenuBar with this border]" />
-   *
-   * @return a {@link MenuBarBorder}.
-   *
-   * @see javax.swing.JMenuBar
-   */
-  public static Border getMenuBarBorder()
-  {
-    /* See comment in methods above for why this border is not shared. */
-    return new MenuBarBorder(UIManager.getColor("MenuBar.shadow"),
-                             UIManager.getColor("MenuBar.highlight"));
-  }
-
-
-  /**
-   * Returns a border for drawing a one-pixel thick border around
-   * split panes that are interrupted where the divider joins the
-   * border.
-   *
-   * <p>The colors of the border are retrieved from the
-   * <code>UIDefaults</code> of the currently active look and feel
-   * using the keys <code>&#x201c;SplitPane.darkShadow&#x201d;</code> and
-   * <code>&#x201c;SplitPane.highlight&#x201d;</code>.
-   *
-   * <p><img src="doc-files/BasicBorders.SplitPaneBorder-1.png" width="520"
-   * height="200" alt="[A screen shot for JSplitPane.HORIZONTAL_SPLIT]" />
-   *
-   * <p><img src="doc-files/BasicBorders.SplitPaneBorder-2.png" width="520"
-   * height="200" alt="[A screen shot for JSplitPane.VERTICAL_SPLIT]" />
-   *
-   * @return a {@link SplitPaneBorder}.
-   *
-   * @see javax.swing.JSplitPane
-   * @see #getSplitPaneDividerBorder()
-   */
-  public static Border getSplitPaneBorder()
-  {
-    /* See comment in methods above for why this border is not shared. */
-    return new SplitPaneBorder(UIManager.getColor("SplitPane.highlight"),
-                               UIManager.getColor("SplitPane.darkShadow"));
-  }
-
-
-  /**
-   * Returns a border for drawing a one-pixel thick border around
-   * the divider of split panes.
-   *
-   * <p>The colors of the edges that are adjacent to the child components
-   * of the <code>JSplitPane</code> are retrieved from the
-   * <code>UIDefaults</code> of the currently active look and feel
-   * using the keys <code>&#x201c;SplitPane.darkShadow&#x201d;</code> and
-   * <code>&#x201c;SplitPane.highlight&#x201d;</code>. The color of the
-   * other two edges is the background color of the divider.
-   *
-   * <p><img src="doc-files/BasicBorders.SplitPaneDividerBorder-1.png"
-   * width="520" height="200" alt=
-   * "[A screen shot for JSplitPane.HORIZONTAL_SPLIT]" />
-   *
-   * @return an instance of <code>SplitPaneDividerBorder</code>, which is
-   *         not a public API class of this package.
-   *
-   * @see javax.swing.JSplitPane
-   * @see javax.swing.plaf.basic.BasicSplitPaneDivider
-   * @see #getSplitPaneBorder()
-   *
-   * @since 1.3
-   */
-  public static Border getSplitPaneDividerBorder()
-  {
-    /* See comment in methods above for why this border is not shared. */
-    return new SplitPaneDividerBorder();
-  }
-
-
-  /**
-   * Returns a border for drawing a border around a text field
-   * that makes the field appear as etched into the surface.
-   *
-   * <p>The colors of the border are retrieved from the
-   * <code>UIDefaults</code> of the currently active look and feel
-   * using the keys <code>&#x201c;TextField.shadow&#x201d;</code>,
-   * <code>&#x201c;TextField.darkShadow&#x201d;</code>,
-   * <code>&#x201c;TextField.light&#x201d;</code>, and
-   * <code>&#x201c;TextField.highlight&#x201d;</code>.
-   *
-   * <p><img src="doc-files/BasicBorders.FieldBorder-1.png" width="500"
-   * height="200" alt="[A screen shot of a border returned by
-   * this method]" />
-   *
-   * @return an instance of {@link FieldBorder}.
-   *
-   * @see javax.swing.JTextField
-   * @see javax.swing.text.JTextComponent
-   */
-  public static Border getTextFieldBorder()
-  {
-    /* See comment in methods above for why this border is not shared. */
-    return new FieldBorder(
-      UIManager.getColor("TextField.shadow"),
-      UIManager.getColor("TextField.darkShadow"),
-      UIManager.getColor("TextField.light"),
-      UIManager.getColor("TextField.highlight"));
-  }
-
-
-  /**
-   * Returns a two-pixel thick, green
-   * <code>LineBorderUIResource</code>.  This is so ugly that look and
-   * feels better use different borders for their progress bars, or
-   * they will look really terrible.
-   *
-   * <p><img src="doc-files/BasicBorders-1.png" width="120" height="80"
-   * alt="[A screen shot of a border returned by this method]" />
-   */
-  public static Border getProgressBarBorder()
-  {
-    /* There does not seem to exist a way to parametrize the color
-     * or thickness of the border through UIDefaults.
-     */
-    return new BorderUIResource.LineBorderUIResource(Color.green, 2);
-  }
-
-
-  /**
-   * Returns a border that is composed of a raised bevel border and a
-   * one-pixel thick line border.
-   *
-   * <p><img src="doc-files/BasicBorders-2.png" width="300" height="200"
-   * alt="[A screen shot of a border returned by this method]" />
-   *
-   * <p>The colors of the border are retrieved from the
-   * <code>UIDefaults</code> of the currently active look and feel
-   * using the keys <code>&#x201c;InternalFrame.borderShadow&#x201d;</code>,
-   * <code>&#x201c;InternalFrame.borderDarkShadow&#x201d;</code>,
-   * <code>&#x201c;InternalFrame.borderLight&#x201d;</code>,
-   * <code>&#x201c;InternalFrame.borderHighlight&#x201d;</code>, and
-   * (for the inner one-pixel thick line)
-   * <code>&#x201c;InternalFrame.borderColor&#x201d;</code>.
-   */
-  public static Border getInternalFrameBorder()
-  {
-    Color shadow, darkShadow, highlight, lightHighlight, line;
-
-    /* See comment in methods above for why this border is not shared. */
-    shadow = UIManager.getColor("InternalFrame.borderShadow");
-    darkShadow = UIManager.getColor("InternalFrame.borderDarkShadow");
-    highlight = UIManager.getColor("InternalFrame.borderLight");
-    lightHighlight = UIManager.getColor("InternalFrame.borderHighlight");
-    line = UIManager.getColor("InternalFrame.borderColor");
-
-    return new BorderUIResource.CompoundBorderUIResource(
-      /* outer border */
-      new BorderUIResource.BevelBorderUIResource(
-        BevelBorder.RAISED,
-        (highlight != null) ? highlight : Color.lightGray,
-        (lightHighlight != null) ? lightHighlight : Color.white,
-        (darkShadow != null) ? darkShadow : Color.black,
-        (shadow != null) ? shadow : Color.gray),
-
-      /* inner border */
-      new BorderUIResource.LineBorderUIResource(
-        (line != null) ? line : Color.lightGray));
-  }
-
-
-  /**
-   * Returns a shared MarginBorder.
-   */
-  static Border getMarginBorder()  // intentionally not public
-  {
-    /* Swing is not designed to be thread-safe, so there is no
-     * need to synchronize the access to the global variable.
-     */
-    if (sharedMarginBorder == null)
-      sharedMarginBorder = new MarginBorder();
-
-    return sharedMarginBorder;
-  }
-
-
-  /**
-   * A border whose appearance depends on the state of
-   * the enclosed button.
-   *
-   * <p><img src="doc-files/BasicBorders.ButtonBorder-1.png" width="300"
-   * height="170" alt="[A screen shot of this border]" />
-   *
-   * @see javax.swing.plaf.basic.BasicGraphicsUtils#drawBezel
-   *
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class ButtonBorder
-    extends AbstractBorder
-    implements Serializable, UIResource
-  {
-    /**
-     * Determined using the <code>serialver</code> tool
-     * of Apple/Sun JDK 1.3.1 on MacOS X 10.1.5.
-     */
-    static final long serialVersionUID = -157053874580739687L;
-
-
-    /**
-     * The color for drawing the shaded parts of the border.
-     * @see javax.swing.plaf.basic.BasicGraphicsUtils#drawBezel
-     */
-    protected Color shadow;
-
-
-    /**
-     * The color for drawing the dark shaded parts of the border.
-     * @see javax.swing.plaf.basic.BasicGraphicsUtils#drawBezel
-     */
-    protected Color darkShadow;
-
-
-    /**
-     * The color for drawing the highlighted parts of the border.
-     * @see javax.swing.plaf.basic.BasicGraphicsUtils#drawBezel
-     */
-    protected Color highlight;
-
-
-    /**
-     * The color for drawing the bright highlighted parts of the border.
-     * @see javax.swing.plaf.basic.BasicGraphicsUtils#drawBezel
-     */
-    protected Color lightHighlight;
-
-
-    /**
-     * Constructs a new border for drawing a button in the Basic
-     * look and feel.
-     *
-     * @param shadow the shadow color.
-     * @param darkShadow a darker variant of the shadow color.
-     * @param highlight the highlight color.
-     * @param lightHighlight a brighter variant of the highlight  color.
-     */
-    public ButtonBorder(Color shadow, Color darkShadow,
-                        Color highlight, Color lightHighlight)
-    {
-      /* These colors usually come from the UIDefaults of the current
-       * look and feel. Use fallback values if the colors are not
-       * supplied.  The API specification is silent about what
-       * behavior is expected for null colors, so users should not
-       * rely on this fallback (which is why it is not documented in
-       * the above Javadoc).
-       */
-      this.shadow = (shadow != null) ? shadow : Color.gray;
-      this.darkShadow = (darkShadow != null) ? darkShadow : Color.black;
-      this.highlight = (highlight != null) ? highlight : Color.lightGray;
-      this.lightHighlight = (lightHighlight != null)
-        ? lightHighlight
-        : Color.white;
-    }
-
-
-    /**
-     * Paints the ButtonBorder around a given component.
-     *
-     * @param c the component whose border is to be painted.
-     * @param g the graphics for painting.
-     * @param x the horizontal position for painting the border.
-     * @param y the vertical position for painting the border.
-     * @param width the width of the available area for painting the border.
-     * @param height the height of the available area for painting the border.
-     *
-     * @see javax.swing.plaf.basic.BasicGraphicsUtils#drawBezel
-     */
-    public void paintBorder(Component c, Graphics  g,
-                            int x, int y, int width, int height)
-    {
-      ButtonModel bmodel = null;
-
-      if (c instanceof AbstractButton)
-        bmodel = ((AbstractButton) c).getModel();
-
-      BasicGraphicsUtils.drawBezel(
-        g, x, y, width, height,
-        /* pressed */ (bmodel != null)
-                        && /* mouse button pressed */ bmodel.isPressed()
-                        && /* mouse inside */ bmodel.isArmed(),
-        /* default */ (c instanceof JButton)
-                        && ((JButton) c).isDefaultButton(),
-        shadow, darkShadow, highlight, lightHighlight);
-    }
-
-
-    /**
-     * Measures the width of this border.
-     *
-     * <p>Although the thickness of the actually painted border
-     * depends on the state of the enclosed component, this
-     * measurement always returns the same amount of pixels.  Indeed,
-     * it would be rather confusing if a button was appearing to
-     * change its size depending on whether it is pressed or not.
-     *
-     * @param c the component whose border is to be measured.
-     *
-     * @return an Insets object whose <code>left</code>,
-     *         <code>right</code>, <code>top</code> and
-     *         <code>bottom</code> fields indicate the width of the
-     *         border at the respective edge.
-     *
-     * @see #getBorderInsets(java.awt.Component, java.awt.Insets)
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      /* There is no obvious reason for overriding this method, but we
-       * try to have exactly the same API as the Sun reference
-       * implementation.
-       */
-      return getBorderInsets(c, null);
-    }
-
-
-    /**
-     * Measures the width of this border, storing the results into a
-     * pre-existing Insets object.
-     *
-     * <p>Although the thickness of the actually painted border
-     * depends on the state of the enclosed component, this
-     * measurement always returns the same amount of pixels.  Indeed,
-     * it would be rather confusing if a button was appearing to
-     * change its size depending on whether it is pressed or not.
-     *
-     * @param insets an Insets object for holding the result values.
-     *        After invoking this method, the <code>left</code>,
-     *        <code>right</code>, <code>top</code> and
-     *        <code>bottom</code> fields indicate the width of the
-     *        border at the respective edge.
-     *
-     * @return the same object that was passed for <code>insets</code>.
-     *
-     * @see #getBorderInsets(Component)
-     */
-    public Insets getBorderInsets(Component c, Insets insets)
-    {
-      /* The exact amount has been determined using a test program
-       * that was run on the Sun reference implementation. With
-       * Apple/Sun JDK 1.3.1 on MacOS X 10.1.5, the result is
-       * [3, 3, 3, 3]. With Sun JDK 1.4.1_01 on Linux/x86, the
-       * result is [2, 3, 3, 3]. We use the values from the 1.4.1_01
-       * release.
-       */
-      if (insets == null)
-        return new Insets(2, 3, 3, 3);
-
-      insets.top = 2;
-      insets.bottom = insets.left = insets.right = 3;
-      return insets;
-    }
-  }
-
-
-  /**
-   * A border that makes its enclosed component appear as lowered
-   * into the surface. Typically used for text fields.
-   *
-   * <p><img src="doc-files/BasicBorders.FieldBorder-1.png" width="500"
-   * height="200" alt="[A screen shot of this border]" />
-   *
-   * @see javax.swing.plaf.basic.BasicGraphicsUtils#drawEtchedRect
-   *
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class FieldBorder
-    extends AbstractBorder
-    implements UIResource
-  {
-    /**
-     * Determined using the <code>serialver</code> tool
-     * of Apple/Sun JDK 1.3.1 on MacOS X 10.1.5.
-     */
-    static final long serialVersionUID = 949220756998454908L;
-
-
-    /**
-     * The color for drawing the outer half of the top and left
-     * edges.
-     */
-    protected Color shadow;
-
-
-    /**
-     * The color for drawing the inner half of the top and left
-     * edges.
-     */
-    protected Color darkShadow;
-
-
-    /**
-     * The color for drawing the inner half of the bottom and right
-     * edges.
-     */
-    protected Color highlight;
-
-
-    /**
-     * The color for drawing the outer half of the bottom and right
-     * edges.
-     */
-    protected Color lightHighlight;
-
-
-    /**
-     * Constructs a new border for drawing a text field in the Basic
-     * look and feel.
-     *
-     * @param shadow the color for drawing the outer half
-     *        of the top and left edges.
-     *
-     * @param darkShadow the color for drawing the inner half
-     *        of the top and left edges.
-     *
-     * @param highlight the color for drawing the inner half
-     *        of the bottom and right edges.
-     *
-     * @param lightHighlight the color for drawing the outer half
-     *        of the bottom and right edges.
-     */
-    public FieldBorder(Color shadow, Color darkShadow,
-                       Color highlight, Color lightHighlight)
-    {
-      /* These colors usually come from the UIDefaults of the current
-       * look and feel. Use fallback values if the colors are not
-       * supplied.  The API specification is silent about what
-       * behavior is expected for null colors, so users should not
-       * rely on this fallback (which is why it is not documented in
-       * the above Javadoc).
-       */
-      this.shadow = (shadow != null) ? shadow : Color.gray;
-      this.darkShadow = (darkShadow != null) ? darkShadow : Color.black;
-      this.highlight = (highlight != null) ? highlight : Color.lightGray;
-      this.lightHighlight = (lightHighlight != null)
-        ? lightHighlight : Color.white;
-    }
-
-
-    /**
-     * Paints the FieldBorder around a given component.
-     *
-     * @param c the component whose border is to be painted.
-     * @param g the graphics for painting.
-     * @param x the horizontal position for painting the border.
-     * @param y the vertical position for painting the border.
-     * @param width the width of the available area for painting the border.
-     * @param height the height of the available area for painting the border.
-     *
-     * @see javax.swing.plaf.basic.BasicGraphicsUtils#drawEtchedRect
-     */
-    public void paintBorder(Component c, Graphics  g,
-                            int x, int y, int width, int height)
-    {
-      BasicGraphicsUtils.drawEtchedRect(g, x, y, width, height,
-                                        shadow, darkShadow,
-                                        highlight, lightHighlight);
-    }
-
-
-    /**
-     * Measures the width of this border.
-     *
-     * @param c the component whose border is to be measured.
-     *        If <code>c</code> is an instance of {@link
-     *        javax.swing.text.JTextComponent}, its margin is
-     *        added to the border size.
-     *
-     * @return an Insets object whose <code>left</code>,
-     *         <code>right</code>, <code>top</code> and
-     *         <code>bottom</code> fields indicate the width of the
-     *         border at the respective edge.
-     *
-     * @see #getBorderInsets(java.awt.Component, java.awt.Insets)
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return getBorderInsets(c, null);
-    }
-
-
-    /**
-     * Measures the width of this border, storing the results into a
-     * pre-existing Insets object.
-     *
-     * @param c the component whose border is to be measured.
-     *        If <code>c</code> is an instance of {@link
-     *        javax.swing.text.JTextComponent}, its margin is
-     *        added to the border size.
-     *
-     * @param insets an Insets object for holding the result values.
-     *        After invoking this method, the <code>left</code>,
-     *        <code>right</code>, <code>top</code> and
-     *        <code>bottom</code> fields indicate the width of the
-     *        border at the respective edge.
-     *
-     * @return the same object that was passed for <code>insets</code>.
-     *
-     * @see #getBorderInsets(Component)
-     */
-    public Insets getBorderInsets(Component c, Insets insets)
-    {
-      if (insets == null)
-        insets = new Insets(2, 2, 2, 2);
-      else
-        insets.top = insets.left = insets.bottom = insets.right = 2;
-
-      if (c instanceof JTextComponent)
-      {
-        Insets margin = ((JTextComponent) c).getMargin();
-        insets.top += margin.top;
-        insets.left += margin.left;
-        insets.bottom += margin.bottom;
-        insets.right += margin.right;
-      }
-
-      return insets;
-    }
-  }
-
-
-  /**
-   * An invisible, but spacing border whose margin is determined
-   * by calling the <code>getMargin()</code> method of the enclosed
-   * component.  If the enclosed component has no such method,
-   * this border will not occupy any space.
-   *
-   * <p><img src="doc-files/BasicBorders.MarginBorder-1.png" width="325"
-   * height="200" alt="[An illustration that shows how MarginBorder
-   * determines its borders]" />
-   *
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class MarginBorder
-    extends AbstractBorder
-    implements Serializable, UIResource
-  {
-    /**
-     * Determined using the <code>serialver</code> tool
-     * of Apple/Sun JDK 1.3.1 on MacOS X 10.1.5.
-     */
-    static final long serialVersionUID = -3035848353448896090L;
-
-
-    /**
-     * Constructs a new MarginBorder.
-     */
-    public MarginBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Measures the width of this border.
-     *
-     * @param c the component whose border is to be measured.
-     *
-     * @return an Insets object whose <code>left</code>, <code>right</code>,
-     *         <code>top</code> and <code>bottom</code> fields indicate the
-     *         width of the border at the respective edge.
-     *
-     * @see #getBorderInsets(java.awt.Component, java.awt.Insets)
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return getBorderInsets(c, new Insets(0, 0, 0, 0));
-    }
-
-
-    /**
-     * Determines the insets of this border by calling the
-     * <code>getMargin()</code> method of the enclosed component.  The
-     * resulting margin will be stored into the the <code>left</code>,
-     * <code>right</code>, <code>top</code> and <code>bottom</code>
-     * fields of the passed <code>insets</code> parameter.
-     *
-     * <p>Unfortunately, <code>getMargin()</code> is not a method of
-     * {@link javax.swing.JComponent} or some other common superclass
-     * of things with margins. While reflection could be used to
-     * determine the existence of this method, this would be slow on
-     * many virtual machines. Therefore, the current implementation
-     * knows about {@link javax.swing.AbstractButton#getMargin()},
-     * {@link javax.swing.JPopupMenu#getMargin()}, {@link
-     * javax.swing.JToolBar#getMargin()}, and {@link
-     * javax.swing.text.JTextComponent}. If <code>c</code> is an
-     * instance of a known class, the respective
-     * <code>getMargin()</code> method is called to determine the
-     * correct margin. Otherwise, a zero-width margin is returned.
-     *
-     * @param c the component whose border is to be measured.
-     *
-     * @return the same object that was passed for <code>insets</code>,
-     *         but with changed fields.
-     */
-    public Insets getBorderInsets(Component c, Insets insets)
-    {
-      Insets margin = null;
-
-      /* This is terrible object-oriented design. See the above Javadoc
-       * for an excuse.
-       */
-      if (c instanceof AbstractButton)
-        margin = ((AbstractButton) c).getMargin();
-      else if (c instanceof JPopupMenu)
-        margin = ((JPopupMenu) c).getMargin();
-      else if (c instanceof JToolBar)
-        margin = ((JToolBar) c).getMargin();
-      else if (c instanceof JTextComponent)
-        margin = ((JTextComponent) c).getMargin();
-
-      if (margin == null)
-        insets.top = insets.left = insets.bottom = insets.right = 0;
-      else
-      {
-        insets.top = margin.top;
-        insets.left = margin.left;
-        insets.bottom = margin.bottom;
-        insets.right = margin.right;
-      }
-
-      return insets;
-    }
-  }
-
-
-  /**
-   * A border for drawing a separator line below JMenuBar.
-   *
-   * <p><img src="doc-files/BasicBorders.MenuBarBorder-1.png" width="500"
-   * height="140" alt="[A screen shot of a JMenuBar with this border]" />
-   *
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class MenuBarBorder
-    extends AbstractBorder
-    implements UIResource
-  {
-    /**
-     * Determined using the <code>serialver</code> tool
-     * of Apple/Sun JDK 1.3.1 on MacOS X 10.1.5.
-     */
-    static final long serialVersionUID = -6909056571935227506L;
-
-
-    /**
-     * The shadow color, which is used for the upper line of the
-     * two-pixel thick bottom edge.
-     */
-    private Color shadow;
-
-
-    /**
-     * The highlight color, which is used for the lower line of the
-     * two-pixel thick bottom edge.
-     */
-    private Color highlight;
-
-
-    /**
-     * Constructs a new MenuBarBorder for drawing a JMenuBar in
-     * the Basic look and feel.
-     *
-     * <p><img src="doc-files/BasicBorders.MenuBarBorder-1.png" width="500"
-     * height="140" alt="[A screen shot of a JMenuBar with this
-     * border]" />
-     *
-     * @param shadow the shadow color, which is used for the upper
-     *        line of the two-pixel thick bottom edge.
-     *
-     * @param highlight the shadow color, which is used for the lower
-     *        line of the two-pixel thick bottom edge.
-     */
-    public MenuBarBorder(Color shadow, Color highlight)
-    {
-      /* These colors usually come from the UIDefaults of the current
-       * look and feel. Use fallback values if the colors are not
-       * supplied.  The API specification is silent about what
-       * behavior is expected for null colors, so users should not
-       * rely on this fallback (which is why it is not documented in
-       * the above Javadoc).
-       */
-      this.shadow = (shadow != null) ? shadow : Color.gray;
-      this.highlight = (highlight != null) ? highlight : Color.white;
-    }
-
-
-    /**
-     * Paints the MenuBarBorder around a given component.
-     *
-     * @param c the component whose border is to be painted, usually
-     *        an instance of {@link javax.swing.JMenuBar}.
-     *
-     * @param g the graphics for painting.
-     * @param x the horizontal position for painting the border.
-     * @param y the vertical position for painting the border.
-     * @param width the width of the available area for painting the border.
-     * @param height the height of the available area for painting the border.
-     */
-    public void paintBorder(Component c, Graphics  g,
-                            int x, int y, int width, int height)
-    {
-      Color oldColor;
-
-      /* To understand this code, it might be helpful to look at the
-       * image "BasicBorders.MenuBarBorder-1.png" that is included
-       * with the JavaDoc. It is located in the "doc-files"
-       * subdirectory.
-       */
-      oldColor = g.getColor();
-      y = y + height - 2;
-      try
-      {
-        g.setColor(shadow);
-        g.drawLine(x, y, x + width - 2, y);
-        g.drawLine(x, y + 1, x, y + 1);
-        g.drawLine(x + width - 2, y + 1, x + width - 2, y + 1);
-
-        g.setColor(highlight);
-        g.drawLine(x + 1, y + 1, x + width - 3, y + 1);
-        g.drawLine(x + width - 1, y, x + width - 1, y + 1);
-      }
-      finally
-      {
-        g.setColor(oldColor);
-      }
-    }
-
-
-    /**
-     * Measures the width of this border.
-     *
-     * @param c the component whose border is to be measured.
-     *
-     * @return an Insets object whose <code>left</code>,
-     *         <code>right</code>, <code>top</code> and
-     *         <code>bottom</code> fields indicate the width of the
-     *         border at the respective edge.
-     *
-     * @see #getBorderInsets(java.awt.Component, java.awt.Insets)
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      /* There is no obvious reason for overriding this method, but we
-       * try to have exactly the same API as the Sun reference
-       * implementation.
-       */
-      return getBorderInsets(c, null);
-    }
-
-
-    /**
-     * Measures the width of this border, storing the results into a
-     * pre-existing Insets object.
-     *
-     * @param insets an Insets object for holding the result values.
-     *        After invoking this method, the <code>left</code>,
-     *        <code>right</code>, <code>top</code> and
-     *        <code>bottom</code> fields indicate the width of the
-     *        border at the respective edge.
-     *
-     * @return the same object that was passed for <code>insets</code>.
-     *
-     * @see #getBorderInsets(Component)
-     */
-    public Insets getBorderInsets(Component c, Insets insets)
-    {
-      /* The exact amount has been determined using a test program
-       * that was run on the Apple/Sun JDK 1.3.1 on MacOS X, and the
-       * Sun JDK 1.4.1_01 on GNU/Linux for x86. Both gave [0,0,2,0],
-       * which was expected from looking at the screen shot.
-       */
-      if (insets == null)
-        return new Insets(0, 0, 2, 0);
-
-      insets.left = insets.right = insets.top = 0;
-      insets.bottom = 2;
-      return insets;
-    }
-  }
-
-
-  /**
-   * A border for drawing radio buttons in the Basic look and feel.
-   *
-   * <p><img src="doc-files/BasicBorders.RadioButtonBorder-1.png" width="300"
-   * height="135" alt="[A screen shot of this border]" />
-   *
-   * <p>Note about the screen shot: Normally, the
-   * <code>borderPainted</code> property is <code>false</code> for
-   * JRadioButtons. For this screen shot, it has been set to
-   * <code>true</code> so the borders get drawn. Also, a
-   * concretization of the Basic look and would typically provide
-   * icons for the various states of radio buttons.
-   *
-   * <p>Note that the focus rectangle is invisible If the radio button
-   * is currently selected. While it might be debatable whether this
-   * makes a lot of sense, this behavior can be observed in the Sun
-   * reference implementation (in JDK 1.3.1 and 1.4.1). The Classpath
-   * implementation tries to exactly replicate the JDK appearance.
-   *
-   * @see javax.swing.plaf.basic.BasicGraphicsUtils#drawBezel
-   *
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class RadioButtonBorder
-    extends ButtonBorder
-  {
-    /**
-     * Determined using the <code>serialver</code> tool
-     * of Apple/Sun JDK 1.3.1 on MacOS X 10.1.5.
-     */
-    static final long serialVersionUID = 1596945751743747369L;
-
-
-    /**
-     * Constructs a new border for drawing a JRadioButton in
-     * the Basic look and feel.
-     *
-     * @param shadow the shadow color.
-     * @param darkShadow a darker variant of the shadow color.
-     * @param highlight the highlight color.
-     * @param lightHighlight a brighter variant of the highlight  color.
-     */
-    public RadioButtonBorder(Color shadow, Color darkShadow,
-                             Color highlight, Color lightHighlight)
-    {
-      /* The superclass ButtonBorder substitutes null arguments
-       * with fallback colors.
-       */
-      super(shadow, darkShadow, highlight, lightHighlight);
-    }
-
-
-    /**
-     * Paints the RadioButtonBorder around a given component.
-     *
-     * <p>The Sun implementation always seems to draw exactly
-     * the same border, irrespective of the state of the button.
-     * This is rather surprising, but GNU Classpath emulates the
-     * observable behavior.
-     *
-     * @param c the component whose border is to be painted.
-     * @param g the graphics for painting.
-     * @param x the horizontal position for painting the border.
-     * @param y the vertical position for painting the border.
-     * @param width the width of the available area for painting the border.
-     * @param height the height of the available area for painting the border.
-     *
-     * @see javax.swing.plaf.basic.BasicGraphicsUtils#drawBezel
-     */
-    public void paintBorder(Component c, Graphics  g,
-                            int x, int y, int width, int height)
-    {
-      AbstractButton button = null;
-      ButtonModel bmodel = null;
-      boolean lowered = false;
-      boolean focused = false;
-
-      if (c instanceof AbstractButton)
-      {
-        button = (AbstractButton) c;
-        bmodel = button.getModel();
-      }
-
-      if (bmodel != null)
-      {
-        lowered = button.isSelected()
-          || (/* mouse inside */ bmodel.isArmed() && bmodel.isPressed());
-        focused = button.hasFocus() && button.isFocusPainted();
-      }
-
-      if (lowered)
-        BasicGraphicsUtils.drawLoweredBezel(g, x, y, width, height,
-                                            shadow, darkShadow,
-                                            highlight, lightHighlight);
-      else
-        BasicGraphicsUtils.drawBezel(g, x, y, width, height,
-                                     /* isPressed */ false,
-                                     /* isPefault */ focused,
-                                     shadow, darkShadow,
-                                     highlight, lightHighlight);
-    }
-
-
-    /**
-     * Measures the width of this border.
-     *
-     * @param c the component whose border is to be measured.
-     *
-     * @return an Insets object whose <code>left</code>,
-     *         <code>right</code>, <code>top</code> and
-     *         <code>bottom</code> fields indicate the width of the
-     *         border at the respective edge.
-     *
-     * @see #getBorderInsets(java.awt.Component, java.awt.Insets)
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      /* There is no obvious reason for overriding this method, but we
-       * try to have exactly the same API as the Sun reference
-       * implementation.
-       */
-      return getBorderInsets(c, null);
-    }
-
-
-    /**
-     * Measures the width of this border, storing the results into a
-     * pre-existing Insets object.
-     *
-     * @param insets an Insets object for holding the result values.
-     *        After invoking this method, the <code>left</code>,
-     *        <code>right</code>, <code>top</code> and
-     *        <code>bottom</code> fields indicate the width of the
-     *        border at the respective edge.
-     *
-     * @return the same object that was passed for <code>insets</code>.
-     *
-     * @see #getBorderInsets(Component)
-     */
-    public Insets getBorderInsets(Component c, Insets insets)
-    {
-      /* The exact amount has been determined using a test program
-       * that was run on the Apple/Sun JDK 1.3.1 on MacOS X, and the
-       * Sun JDK 1.4.1_01 on GNU/Linux for x86. Both gave [2,2,2,2].
-       */
-      if (insets == null)
-        return new Insets(2, 2, 2, 2);
-
-      insets.left = insets.right = insets.top = insets.bottom = 2;
-      return insets;
-    }
-  }
-
-
-  /**
-   * A one-pixel thick border for rollover buttons, for example in
-   * tool bars.
-   *
-   * @since 1.4
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class RolloverButtonBorder
-    extends ButtonBorder
-  {
-    /**
-     * Determined using the <code>serialver</code> tool
-     * of Sun JDK 1.4.1_01 on GNU/Linux 2.4.20 for x86.
-     */
-    static final long serialVersionUID = 1976364864896996846L;
-
-
-    /**
-     * Constructs a new border for drawing a roll-over button
-     * in the Basic look and feel.
-     *
-     * @param shadow the shadow color.
-     * @param darkShadow a darker variant of the shadow color.
-     * @param highlight the highlight color.
-     * @param lightHighlight a brighter variant of the highlight  color.
-     */
-    public RolloverButtonBorder(Color shadow, Color darkShadow,
-                                Color highlight, Color lightHighlight)
-    {
-      super(shadow, darkShadow, highlight, lightHighlight);
-    }
-
-
-    /**
-     * Paints the border around a rollover button.  If <code>c</code>
-     * is not an {@link javax.swing.AbstractButton} whose model
-     * returns <code>true</code> for {@link
-     * javax.swing.ButtonModel#isRollover}, nothing gets painted at
-     * all.
-     *
-     * @param c the button whose border is to be painted.
-     * @param g the graphics for painting.
-     * @param x the horizontal position for painting the border.
-     * @param y the vertical position for painting the border.
-     * @param width the width of the available area for painting the border.
-     * @param height the height of the available area for painting the border.
-     */
-    public void paintBorder(Component c, Graphics  g,
-                            int x, int y, int width, int height)
-    {
-      ButtonModel bmodel = null;
-      boolean drawPressed;
-      Color oldColor = g.getColor();
-      int x2, y2;
-
-      if (c instanceof AbstractButton)
-        bmodel = ((AbstractButton) c).getModel();
-
-      /* Draw nothing if c is not a rollover button. */
-      if ((bmodel == null) || !bmodel.isRollover())
-        return;
-
-      /* Draw nothing if the mouse is pressed, but outside the button. */
-      if (bmodel.isPressed() && !bmodel.isArmed())
-        return;
-
-      drawPressed = bmodel.isSelected() || bmodel.isPressed();
-      x2 = x + width - 1;
-      y2 = y + height - 1;
-
-      try
-      {
-        g.setColor(drawPressed ? shadow : lightHighlight);
-        g.drawLine(x, y, x2 - 1, y);     // top edge
-        g.drawLine(x, y + 1, x, y2 - 1); // left edge
-
-        g.setColor(drawPressed ? lightHighlight : shadow);
-        g.drawLine(x, y2, x2, y2);       // bottom edge
-        g.drawLine(x2, y, x2, y2 - 1);   // right edge
-      }
-      finally
-      {
-        g.setColor(oldColor);
-      }
-    }
-  }
-
-
-  /**
-   * A border for JSplitPanes in the Basic look and feel. The divider
-   * in the middle of the JSplitPane has its own border class, of which
-   * an instance can be obtained with {@link #getSplitPaneDividerBorder()}.
-   *
-   * <p><img src="doc-files/BasicBorders.SplitPaneBorder-1.png" width="520"
-   * height="200" alt="[A screen shot for JSplitPane.HORIZONTAL_SPLIT]" />
-   *
-   * <p><img src="doc-files/BasicBorders.SplitPaneBorder-2.png" width="520"
-   * height="200" alt="[A screen shot for JSplitPane.VERTICAL_SPLIT]" />
-   *
-   * <p>In contrast to the other borders of the Basic look and feel,
-   * this class is not serializable. While this might be unintended,
-   * GNU Classpath follows the specification in order to be fully
-   * compatible with the Sun reference implementation.
-   *
-   * <p>In the Sun JDK, the bottom edge of the divider also gets
-   * painted if the orientation of the enclosed JSplitPane is
-   * <code>JSplitPane.VERTICAL_SPLIT</code> (at least in versions
-   * 1.3.1 and 1.4.1).  GNU Classpath does not replicate this bug. A
-   * report has been filed with Sun (bug ID 4885629).
-   *
-   * <p>Note that the bottom left pixel of the border has a different
-   * color depending on the orientation of the enclosed JSplitPane.
-   * Although this is visually inconsistent, Classpath replicates the
-   * appearance of the Sun reference implementation. A bug report has
-   * been filed with Sun (review ID 188774).
-   *
-   * @see #getSplitPaneBorder()
-   * @see #getSplitPaneDividerBorder()
-   *
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class SplitPaneBorder implements Border, UIResource
-  {
-    /**
-     * Indicates that the top edge shall be not be painted
-     * by {@link #paintRect}.
-     */
-    private static final int SUPPRESS_TOP = 1;
-
-
-    /**
-     * Indicates that the left edge shall be not be painted
-     * by {@link #paintRect}.
-     */
-    private static final int SUPPRESS_LEFT = 2;
-
-
-    /**
-     * Indicates that the bottom edge shall be not be painted
-     * by {@link #paintRect}.
-     */
-    private static final int SUPPRESS_BOTTOM = 4;
-
-
-    /**
-     * Indicates that the right edge shall be not be painted
-     * by {@link #paintRect}.
-     */
-    private static final int SUPPRESS_RIGHT = 8;
-
-
-    /**
-     * The color for drawing the bottom and right edges of the border.
-     */
-    protected Color highlight;
-
-
-    /**
-     * The color for drawing the top and left edges of the border.
-     */
-    protected Color shadow;
-
-
-    /**
-     * Constructs a new border for drawing a JSplitPane in the Basic
-     * look and feel.  The divider in the middle of the JSplitPane has
-     * its own border class, <code>SplitPaneDividerBorder</code>.
-     *
-     * @param shadow the shadow color.
-     * @param highlight the highlight color.
-     */
-    public SplitPaneBorder(Color highlight, Color shadow)
-    {
-      /* These colors usually come from the UIDefaults of the current
-       * look and feel. Use fallback values if the colors are not
-       * supplied.  The API specification is silent about what
-       * behavior is expected for null colors, so users should not
-       * rely on this fallback (which is why it is not documented in
-       * the above Javadoc).
-       */
-      this.shadow = (shadow != null) ? shadow : Color.black;
-      this.highlight = (highlight != null) ? highlight : Color.white;
-    }
-
-
-    /**
-     * Paints the border around a <code>JSplitPane</code>.
-     *
-     * <p><img src="doc-files/BasicBorders.SplitPaneBorder-1.png" width="520"
-     * height="200" alt="[A screen shot for JSplitPane.HORIZONTAL_SPLIT]" />
-     *
-     * <p><img src="doc-files/BasicBorders.SplitPaneBorder-2.png" width="520"
-     * height="200" alt="[A screen shot for JSplitPane.VERTICAL_SPLIT]" />
-     *
-     * @param c the <code>JSplitPane</code> whose border is to be painted.
-     * @param g the graphics for painting.
-     * @param x the horizontal position for painting the border.
-     * @param y the vertical position for painting the border.
-     * @param width the width of the available area for painting the border.
-     * @param height the height of the available area for painting the border.
-     */
-    public void paintBorder(Component c, Graphics  g,
-                            int x, int y, int width, int height)
-    {
-      JSplitPane splitPane;
-      Component content;
-
-      if (!(c instanceof JSplitPane))
-        return;
-
-      splitPane = (JSplitPane) c;
-      switch (splitPane.getOrientation())
-      {
-      case JSplitPane.HORIZONTAL_SPLIT:
-        if ((content = splitPane.getLeftComponent()) != null)
-          paintRect(g, SUPPRESS_RIGHT, true, x, y, content.getBounds());
-        if ((content = splitPane.getRightComponent()) != null)
-          paintRect(g, SUPPRESS_LEFT, true, x, y, content.getBounds());
-        break;
-
-      case JSplitPane.VERTICAL_SPLIT:
-        if ((content = splitPane.getTopComponent()) != null)
-          paintRect(g, SUPPRESS_BOTTOM, false, x, y, content.getBounds());
-        if ((content = splitPane.getBottomComponent()) != null)
-          paintRect(g, SUPPRESS_TOP, false, x, y, content.getBounds());
-        break;
-      }
-    }
-
-
-    /**
-     * Paints a border around a child of a <code>JSplitPane</code>,
-     * omitting some of the edges.
-     *
-     * @param g the graphics for painting.
-     *
-     * @param suppress a bit mask indicating the set of suppressed
-     *        edges, for example <code>SUPPRESS_TOP | SUPPRESS_RIGHT</code>.
-     *
-     * @param x the x coordinate of the SplitPaneBorder.
-     *
-     * @param y the y coordinate of the SplitPaneBorder.
-     *
-     * @param shadeBottomLeftPixel <code>true</code> to paint the
-     *        bottom left pixel in the shadow color,
-     *        <code>false</code> for the highlight color. The Basic
-     *        look and feel uses the highlight color for the bottom
-     *        left pixel of the border of a JSplitPane whose
-     *        orientation is VERTICAL_SPLIT, and the shadow color
-     *        otherwise. While this might be a strange distinction,
-     *        Classpath tries to look identical to the reference
-     *        implementation. A bug report has been filed with Sun;
-     *        its review ID is 188774. We currently replicate the
-     *        Sun behavior.
-     *
-     * @param rect the bounds of the child of JSplitPane whose
-     *        border is to be painted.
-     */
-    private void paintRect(Graphics g, int suppress,
-                           boolean shadeBottomLeftPixel,
-                           int x, int y,
-                           Rectangle rect)
-    {
-      if (rect == null)
-        return;
-
-      /* On each edge, the border exceeds the enclosed child by one
-       * pixel. See the image "BasicBorders.SplitPaneBorder-1.png" in
-       * the directory "doc-files".
-       */
-      x += rect.x - 1;
-      y += rect.y - 1;
-      int right = x + rect.width + 1;
-      int bottom = y + rect.height + 1;
-
-      Color oldColor = g.getColor();
-      try
-      {
-        g.setColor(shadow);
-        if ((suppress & SUPPRESS_TOP) == 0)
-          g.drawLine(x, y, right, y);
-        if ((suppress & SUPPRESS_LEFT) == 0)
-          g.drawLine(x, y, x, bottom);
-        else
-          g.drawLine(x, bottom, x, bottom); // one pixel
-
-        g.setColor(highlight);
-        if ((suppress & SUPPRESS_BOTTOM) == 0)
-          g.drawLine(x + (shadeBottomLeftPixel ? 1 : 0), bottom, right, bottom);
-        else if (!shadeBottomLeftPixel)
-          g.drawLine(x, bottom, x, bottom); // one pixel
-
-        if ((suppress & SUPPRESS_RIGHT) == 0)
-          g.drawLine(right, y, right, bottom);
-      }
-      finally
-      {
-        g.setColor(oldColor);
-      }
-    }
-
-
-    /**
-     * Measures the width of this border.
-     *
-     * @param c the component whose border is to be measured, usually
-     *        an instance of {@link javax.swing.JSplitPane}.
-     *
-     * @return an Insets object whose <code>left</code>,
-     *         <code>right</code>, <code>top</code> and
-     *         <code>bottom</code> fields indicate the width of the
-     *         border at the respective edge.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return new Insets(1, 1, 1, 1);
-    }
-
-
-    /**
-     * Determines whether this border fills every pixel in its area
-     * when painting.
-     *
-     * @return <code>false</code> because this border does not
-     *         paint over the pixels where the divider joins
-     *         the border.
-     */
-    public boolean isBorderOpaque()
-    {
-      /* Strangely, the Sun implementation (tested with JDK 1.3.1 and
-       * 1.4.1_01) seems to always return true. It could be a bug,
-       * but without knowing the details of their implementation, it is
-       * hard to decide.
-       */
-      return false;
-    }
-  }
-
-
-  /**
-   * A border for the divider inside a JSplitPane.
-   *
-   * <p><img src="doc-files/BasicBorders.SplitPaneDividerBorder-1.png"
-   * width="520" height="200" alt="[A screen shot of this border]" />
-   *
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  private static class SplitPaneDividerBorder
-    implements Border, UIResource, Serializable
-  {
-    /**
-     * Constructs a new border for drawing the divider of a JSplitPane
-     * in the Basic look and feel.  The outer parts of the JSplitPane have
-     * their own border class, <code>SplitPaneBorder</code>.
-     */
-    public SplitPaneDividerBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Paints the border around the divider of a <code>JSplitPane</code>.
-     *
-     * <p><img src="doc-files/BasicBorders.SplitPaneDividerBorder-1.png"
-     * width="520" height="200" alt="[A picture that shows which pixels
-     * get painted in what color]" />
-     *
-     * @param c the <code>JSplitPane</code> whose divider&#x2019;s border
-     *        is to be painted.
-     * @param g the graphics for painting.
-     * @param x the horizontal position for painting the border.
-     * @param y the vertical position for painting the border.
-     * @param width the width of the available area for painting the border.
-     * @param height the height of the available area for painting the border.
-     */
-    public void paintBorder(Component c, Graphics  g,
-                            int x, int y, int width, int height)
-    {
-      Color highlight = UIManager.getColor("SplitPane.highlight");
-      Color shadow = UIManager.getColor("SplitPane.shadow");
-      Color oldColor, dcol;
-      int x2, y2;
-      JSplitPane sp;
-
-      sp = getSplitPane(c);
-      if (sp == null)
-        return;
-
-      x2 = x + width - 1;
-      y2 = y + height - 1;
-      oldColor = g.getColor();
-      dcol = c.getBackground();
-      try
-      {
-        switch (sp.getOrientation())
-        {
-        case JSplitPane.HORIZONTAL_SPLIT:
-          g.setColor(dcol);
-          g.drawLine(x + 1, y, x2 - 1, y);
-          g.drawLine(x + 1, y2, x2 - 1, y2);
-          g.setColor(sp.getLeftComponent() != null ? highlight : dcol);
-          g.drawLine(x, y, x, y2);
-          g.setColor(sp.getRightComponent() != null ? shadow : dcol);
-          g.drawLine(x2, y, x2, y2);
-          break;
-
-        case JSplitPane.VERTICAL_SPLIT:
-          g.setColor(dcol);
-          g.drawLine(x, y + 1, x, y2 - 1);
-          g.drawLine(x2, y + 1, x2, y2 - 1);
-          g.setColor(sp.getTopComponent() != null ? highlight : dcol);
-          g.drawLine(x, y, x2, y);
-          g.setColor(sp.getBottomComponent() != null ? shadow : dcol);
-          g.drawLine(x, y2, x2, y2);
-          break;
-        }
-      }
-      finally
-      {
-        g.setColor(oldColor);
-      }
-    }
-
-
-    /**
-     * Measures the width of this border.
-     *
-     * @param c the component whose border is to be measured, usually
-     *        an instance of {@link javax.swing.JSplitPane}.
-     *
-     * @return an Insets object whose <code>left</code>,
-     *         <code>right</code>, <code>top</code> and
-     *         <code>bottom</code> fields indicate the width of the
-     *         border at the respective edge.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return new Insets(1, 1, 1, 1);
-    }
-
-    /**
-     * Determines whether this border fills every pixel in its area
-     * when painting.
-     *
-     * @return <code>true</code>
-     */
-    public boolean isBorderOpaque()
-    {
-      return true;
-    }
-
-
-    /**
-     * Determines the JSplitPane whose divider is being painted.
-     *
-     * @param c an instance of BasicSplitPaneDivider.
-     *
-     * @return a <code>JSplitPane</code>, or <code>null</code> if
-     *         <code>c</code> is not an instance of {@link
-     *         javax.swing.plaf.basic.BasicSplitPaneDivider}.
-     */
-    private JSplitPane getSplitPane(Component c)
-    {
-      if (c instanceof BasicSplitPaneDivider)
-        return (((BasicSplitPaneDivider) c).getBasicSplitPaneUI())
-          .getSplitPane();
-      else
-        return null;
-    }
-  }
-
-
-  /**
-   * A border for toggle buttons in the Basic look and feel.
-   *
-   * <p><img src="doc-files/BasicBorders.ToggleButtonBorder-1.png"
-   * width="270" height="135" alt="[A screen shot of this border]" />
-   *
-   * <p>The Sun implementation always seems to draw exactly
-   * the same border, irrespective of the state of the button.
-   * This is rather surprising, but GNU Classpath emulates the
-   * observable behavior.
-   *
-   * @see javax.swing.plaf.basic.BasicGraphicsUtils#drawBezel
-   *
-   * @author Sascha Brawer (brawer@dandelis.ch)
-   */
-  public static class ToggleButtonBorder
-    extends ButtonBorder
-  {
-    /**
-     * Determined using the <code>serialver</code> tool
-     * of Apple/Sun JDK 1.3.1 on MacOS X 10.1.5.
-     */
-    static final long serialVersionUID = -3528666548001058394L;
-
-
-    /**
-     * Constructs a new border for drawing a JToggleButton in
-     * the Basic look and feel.
-     *
-     * @param shadow the shadow color.
-     * @param darkShadow a darker variant of the shadow color.
-     * @param highlight the highlight color.
-     * @param lightHighlight a brighter variant of the highlight  color.
-     */
-    public ToggleButtonBorder(Color shadow, Color darkShadow,
-                              Color highlight, Color lightHighlight)
-    {
-      /* The superclass ButtonBorder substitutes null arguments
-       * with fallback colors.
-       */
-      super(shadow, darkShadow, highlight, lightHighlight);
-    }
-
-
-    /**
-     * Paints the ToggleButtonBorder around a given component.
-     *
-     * <p>The Sun implementation always seems to draw exactly
-     * the same border, irrespective of the state of the button.
-     * This is rather surprising, but GNU Classpath emulates the
-     * observable behavior.
-     *
-     * @param c the component whose border is to be painted.
-     * @param g the graphics for painting.
-     * @param x the horizontal position for painting the border.
-     * @param y the vertical position for painting the border.
-     * @param width the width of the available area for painting the border.
-     * @param height the height of the available area for painting the border.
-     *
-     * @see javax.swing.plaf.basic.BasicGraphicsUtils#drawBezel
-     */
-    public void paintBorder(Component c, Graphics  g,
-                            int x, int y, int width, int height)
-    {
-      /* The author of this code tried various variants for setting
-       * the state of the enclosed JToggleButton, but it seems that
-       * the drawn border is always identical. Weird, because this
-       * means that the user does not see whether the JToggleButton
-       * is selected or not.
-       */
-      BasicGraphicsUtils.drawBezel(g, x, y, width, height,
-                                   /* pressed */ false,
-                                   /* default */ false,
-                                   shadow, darkShadow,
-                                   highlight, lightHighlight);
-    }
-
-
-    /**
-     * Measures the width of this border.
-     *
-     * @param c the component whose border is to be measured.
-     *
-     * @return an Insets object whose <code>left</code>,
-     *         <code>right</code>, <code>top</code> and
-     *         <code>bottom</code> fields indicate the width of the
-     *         border at the respective edge.
-     *
-     * @see #getBorderInsets(java.awt.Component, java.awt.Insets)
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      /* There is no obvious reason for overriding this method, but we
-       * try to have exactly the same API as the Sun reference
-       * implementation.
-       */
-      return getBorderInsets(c, null);
-    }
-
-
-    /**
-     * Measures the width of this border, storing the results into a
-     * pre-existing Insets object.
-     *
-     * @param insets an Insets object for holding the result values.
-     *        After invoking this method, the <code>left</code>,
-     *        <code>right</code>, <code>top</code> and
-     *        <code>bottom</code> fields indicate the width of the
-     *        border at the respective edge.
-     *
-     * @return the same object that was passed for <code>insets</code>.
-     *
-     * @see #getBorderInsets(Component)
-     */
-    public Insets getBorderInsets(Component c, Insets insets)
-    {
-      /* The exact amount has been determined using a test program
-       * that was run on the Apple/Sun JDK 1.3.1 on MacOS X, and the
-       * Sun JDK 1.4.1_01 on GNU/Linux for x86. Both gave [2,2,2,2].
-       */
-      if (insets == null)
-        return new Insets(2, 2, 2, 2);
-
-      insets.left = insets.right = insets.top = insets.bottom = 2;
-      return insets;
-    }
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicButtonListener.java b/libjava/classpath/javax/swing/plaf/basic/BasicButtonListener.java
deleted file mode 100644
index 22033b6..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicButtonListener.java
+++ /dev/null
@@ -1,370 +0,0 @@
-/* BasicButtonListener.java --
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import gnu.classpath.SystemProperties;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionListener;
-import java.awt.font.FontRenderContext;
-import java.awt.font.TextLayout;
-import java.awt.geom.AffineTransform;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.AbstractAction;
-import javax.swing.AbstractButton;
-import javax.swing.Action;
-import javax.swing.ActionMap;
-import javax.swing.ButtonModel;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ButtonUI;
-
-public class BasicButtonListener
-  implements MouseListener, MouseMotionListener, FocusListener, ChangeListener,
-             PropertyChangeListener
-{
-  /**
-   * Implements the keyboard action for Swing buttons.
-   */
-  private class ButtonAction
-    extends AbstractAction
-  {
-    /**
-     * The key for pressed action.
-     */
-    static final String PRESSED = "pressed";
-
-    /**
-     * The key for released action.
-     */
-    static final String RELEASED = "released";
-
-    /**
-     * Performs the action.
-     */
-    public void actionPerformed(ActionEvent event)
-    {
-      Object cmd = getValue("__command__");
-      AbstractButton b = (AbstractButton) event.getSource();
-      ButtonModel m = b.getModel();
-      if (PRESSED.equals(cmd))
-        {
-          m.setArmed(true);
-          m.setPressed(true);
-          if (! b.isFocusOwner())
-            b.requestFocus();
-        }
-      else if (RELEASED.equals(cmd))
-        {
-          m.setPressed(false);
-          m.setArmed(false);
-        }
-    }
-
-    /**
-     * Indicates if this action is enabled.
-     *
-     * @param source the source of the action
-     *
-     * @return <code>true</code> when enabled, <code>false</code> otherwise
-     */
-    public boolean isEnabled(Object source)
-    {
-      boolean enabled = true;
-      if (source instanceof AbstractButton)
-        {
-          AbstractButton b = (AbstractButton) source;
-          enabled = b.isEnabled();
-        }
-      return enabled;
-    }
-  }
-
-  public BasicButtonListener(AbstractButton b)
-  {
-    // Do nothing here.
-  }
-
-  public void propertyChange(PropertyChangeEvent e)
-  {
-    // Store the TextLayout for this in a client property for speed-up
-    // painting of the label.
-    String property = e.getPropertyName();
-    AbstractButton b = (AbstractButton) e.getSource();
-    if ((property.equals(AbstractButton.TEXT_CHANGED_PROPERTY)
-         || property.equals("font"))
-        && SystemProperties.getProperty("gnu.javax.swing.noGraphics2D")
-        == null)
-      {
-        String text = b.getText();
-        if (text == null)
-          text = "";
-        FontRenderContext frc = new FontRenderContext(new AffineTransform(),
-                                                      false, false);
-        TextLayout layout = new TextLayout(text, b.getFont(), frc);
-        b.putClientProperty(BasicGraphicsUtils.CACHED_TEXT_LAYOUT, layout);
-
-        // Update HTML renderer.
-        BasicHTML.updateRenderer(b, b.getText());
-      }
-    else if (property.equals(AbstractButton.CONTENT_AREA_FILLED_CHANGED_PROPERTY))
-      {
-        checkOpacity(b);
-      }
-  }
-
-  /**
-   * Checks the <code>contentAreaFilled</code> property and updates the
-   * opaque property of the button.
-   *
-   * @param b the button to check
-   */
-  protected void checkOpacity(AbstractButton b)
-  {
-    b.setOpaque(b.isContentAreaFilled());
-  }
-
-  public void focusGained(FocusEvent e)
-  {
-    if (e.getSource() instanceof AbstractButton)
-      {
-        AbstractButton button = (AbstractButton) e.getSource();
-        if (button.isFocusPainted())
-          button.repaint();
-      }
-  }
-
-  public void focusLost(FocusEvent e)
-  {
-    if (e.getSource() instanceof AbstractButton)
-      {
-        AbstractButton button = (AbstractButton) e.getSource();
-        if (button.isFocusPainted())
-          button.repaint();
-      }
-  }
-
-  public void installKeyboardActions(JComponent c)
-  {
-    ButtonUI ui = ((AbstractButton) c).getUI();
-    if (ui instanceof BasicButtonUI)
-      {
-        // Install InputMap.
-        BasicButtonUI basicUI = (BasicButtonUI) ui;
-        String prefix = basicUI.getPropertyPrefix();
-        InputMap focusInputMap =
-          (InputMap) UIManager.get(prefix + "focusInputMap");
-        SwingUtilities.replaceUIInputMap(c, JComponent.WHEN_FOCUSED,
-                                         focusInputMap);
-
-        ActionMap am = (ActionMap) UIManager.get(prefix + "actionMap");
-        if (am == null)
-          {
-            am = createDefaultActionMap();
-            UIManager.put(prefix + "actionMap", am);
-          }
-        SwingUtilities.replaceUIActionMap(c, am);
-      }
-
-    c.getActionMap().put("pressed",
-                         new AbstractAction()
-                         {
-                           public void actionPerformed(ActionEvent e)
-                           {
-                             AbstractButton button = (AbstractButton) e.getSource();
-                             ButtonModel model = button.getModel();
-                             // It is important that these transitions happen in this order.
-                             model.setArmed(true);
-                             model.setPressed(true);
-                           }
-                         });
-
-    c.getActionMap().put("released",
-                         new AbstractAction()
-                         {
-                           public void actionPerformed(ActionEvent e)
-                           {
-                             AbstractButton button = (AbstractButton) e.getSource();
-                             ButtonModel model = button.getModel();
-                             // It is important that these transitions happen in this order.
-                             model.setPressed(false);
-                             model.setArmed(false);
-                           }
-                       });
-  }
-
-  /**
-   * Creates and returns the default action map for Swing buttons.
-   *
-   * @return the default action map for Swing buttons
-   */
-  private ActionMap createDefaultActionMap()
-  {
-    Action action = new ButtonAction();
-    ActionMapUIResource am = new ActionMapUIResource();
-    am.put(ButtonAction.PRESSED, action);
-    am.put(ButtonAction.RELEASED, action);
-    return am;
-  }
-
-  public void uninstallKeyboardActions(JComponent c)
-  {
-    SwingUtilities.replaceUIActionMap(c, null);
-    SwingUtilities.replaceUIInputMap(c, JComponent.WHEN_FOCUSED, null);
-  }
-
-  public void stateChanged(ChangeEvent e)
-  {
-    // Need to repaint when the button state changes.
-    ((AbstractButton) e.getSource()).repaint();
-  }
-
-  public void mouseMoved(MouseEvent e)
-  {
-    // Nothing to do here.
-  }
-
-  public void mouseDragged(MouseEvent e)
-  {
-    // Nothing to do here.
-  }
-
-  public void mouseClicked(MouseEvent e)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Accept a mouse press event and arm the button.
-   *
-   * @param e The mouse press event to accept
-   */
-  public void mousePressed(MouseEvent e)
-  {
-    if (e.getSource() instanceof AbstractButton)
-      {
-        AbstractButton button = (AbstractButton) e.getSource();
-        ButtonModel model = button.getModel();
-        if (SwingUtilities.isLeftMouseButton(e))
-          {
-            // It is important that these transitions happen in this order.
-            model.setArmed(true);
-            model.setPressed(true);
-
-            if (! button.isFocusOwner() && button.isRequestFocusEnabled())
-              button.requestFocus();
-          }
-      }
-  }
-
-  /**
-   * Accept a mouse release event and set the button's
-   * "pressed" property to <code>true</code>, if the model
-   * is armed. If the model is not armed, ignore the event.
-   *
-   * @param e The mouse release event to accept
-   */
-  public void mouseReleased(MouseEvent e)
-  {
-    if (e.getSource() instanceof AbstractButton)
-      {
-        AbstractButton button = (AbstractButton) e.getSource();
-        ButtonModel model = button.getModel();
-        if (e.getButton() == MouseEvent.BUTTON1)
-          {
-            // It is important that these transitions happen in this order.
-            model.setPressed(false);
-            model.setArmed(false);
-          }
-      }
-  }
-
-  /**
-   * Accept a mouse enter event and set the button's "rollover" property to
-   * <code>true</code>, if the button's "rolloverEnabled" property is
-   * <code>true</code>. If the button is currently armed and the mouse
-   * button is not held down, this enter event will also disarm the model.
-   *
-   * @param e The mouse enter event to accept
-   */
-  public void mouseEntered(MouseEvent e)
-  {
-    if (e.getSource() instanceof AbstractButton)
-      {
-        AbstractButton button = (AbstractButton) e.getSource();
-        ButtonModel model = button.getModel();
-        if (button.isRolloverEnabled()
-            && ! SwingUtilities.isLeftMouseButton(e))
-          model.setRollover(true);
-
-        if (model.isPressed())
-          model.setArmed(true);
-      }
-  }
-
-  /**
-   * Accept a mouse exit event and set the button's model's "rollover"
-   * property to <code>false</code>, if it's "rolloverEnabled" property is
-   * <code>true</code>. Also disarm the button.
-   *
-   * @param e The mouse exit event to accept
-   */
-  public void mouseExited(MouseEvent e)
-  {
-    if (e.getSource() instanceof AbstractButton)
-      {
-        AbstractButton button = (AbstractButton) e.getSource();
-        ButtonModel model = button.getModel();
-        if (button.isRolloverEnabled())
-          model.setRollover(false);
-        model.setArmed(false);
-      }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicButtonUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicButtonUI.java
deleted file mode 100644
index 1697c24..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicButtonUI.java
+++ /dev/null
@@ -1,636 +0,0 @@
-/* BasicButtonUI.java --
-   Copyright (C) 2002, 2004, 2005  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Rectangle;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.AbstractButton;
-import javax.swing.ButtonModel;
-import javax.swing.Icon;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.plaf.ButtonUI;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.UIResource;
-import javax.swing.text.View;
-
-/**
- * A UI delegate for the {@link JButton} component.
- */
-public class BasicButtonUI extends ButtonUI
-{
-  /**
-   * Cached rectangle for layouting the label. Used in paint() and
-   * BasicGraphicsUtils.getPreferredButtonSize().
-   */
-  static Rectangle viewR = new Rectangle();
-
-  /**
-   * Cached rectangle for layouting the label. Used in paint() and
-   * BasicGraphicsUtils.getPreferredButtonSize().
-   */
-  static Rectangle iconR = new Rectangle();
-
-  /**
-   * Cached rectangle for layouting the label. Used in paint() and
-   * BasicGraphicsUtils.getPreferredButtonSize().
-   */
-  static Rectangle textR = new Rectangle();
-
-  /**
-   * Cached Insets instance, used in paint().
-   */
-  static Insets cachedInsets;
-
-  /**
-   * The shared button UI.
-   */
-  private static BasicButtonUI sharedUI;
-
-  /**
-   * The shared BasicButtonListener.
-   */
-  private static BasicButtonListener sharedListener;
-
-  /**
-   * A constant used to pad out elements in the button's layout and
-   * preferred size calculations.
-   */
-  protected int defaultTextIconGap = 4;
-
-  /**
-   * A constant added to the defaultTextIconGap to adjust the text
-   * within this particular button.
-   */
-  protected int defaultTextShiftOffset;
-
-  private int textShiftOffset;
-
-  /**
-   * Factory method to create an instance of BasicButtonUI for a given
-   * {@link JComponent}, which should be an {@link AbstractButton}.
-   *
-   * @param c The component.
-   *
-   * @return A new UI capable of drawing the component
-   */
-  public static ComponentUI createUI(final JComponent c)
-  {
-    if (sharedUI == null)
-      sharedUI = new BasicButtonUI();
-    return sharedUI;
-  }
-
-  /**
-   * Returns the default gap between the button's text and icon (in pixels).
-   *
-   * @param b  the button (ignored).
-   *
-   * @return The gap.
-   */
-  public int getDefaultTextIconGap(AbstractButton b)
-  {
-    return defaultTextIconGap;
-  }
-
-  /**
-   * Sets the text shift offset to zero.
-   *
-   * @see #setTextShiftOffset()
-   */
-  protected void clearTextShiftOffset()
-  {
-    textShiftOffset = 0;
-  }
-
-  /**
-   * Returns the text shift offset.
-   *
-   * @return The text shift offset.
-   *
-   * @see #clearTextShiftOffset()
-   * @see #setTextShiftOffset()
-   */
-  protected int getTextShiftOffset()
-  {
-    return textShiftOffset;
-  }
-
-  /**
-   * Sets the text shift offset to the value in {@link #defaultTextShiftOffset}.
-   *
-   * @see #clearTextShiftOffset()
-   */
-  protected void setTextShiftOffset()
-  {
-    textShiftOffset = defaultTextShiftOffset;
-  }
-
-  /**
-   * Returns the prefix for the UI defaults property for this UI class.
-   * This is &apos;Button&apos; for this class.
-   *
-   * @return the prefix for the UI defaults property
-   */
-  protected String getPropertyPrefix()
-  {
-    return "Button.";
-  }
-
-  /**
-   * Installs the default settings.
-   *
-   * @param b  the button (<code>null</code> not permitted).
-   */
-  protected void installDefaults(AbstractButton b)
-  {
-    String prefix = getPropertyPrefix();
-    // Install colors and font.
-    LookAndFeel.installColorsAndFont(b, prefix + "background",
-                                     prefix + "foreground", prefix + "font");
-    // Install border.
-    LookAndFeel.installBorder(b, prefix + "border");
-
-    // Install margin property.
-    if (b.getMargin() == null || b.getMargin() instanceof UIResource)
-      b.setMargin(UIManager.getInsets(prefix + "margin"));
-
-    // Install rollover property.
-    Object rollover = UIManager.get(prefix + "rollover");
-    if (rollover != null)
-      LookAndFeel.installProperty(b, "rolloverEnabled", rollover);
-
-    // Fetch default textShiftOffset.
-    defaultTextShiftOffset = UIManager.getInt(prefix + "textShiftOffset");
-
-    // Make button opaque if needed.
-    if (b.isContentAreaFilled())
-      LookAndFeel.installProperty(b, "opaque", Boolean.TRUE);
-    else
-      LookAndFeel.installProperty(b, "opaque", Boolean.FALSE);
-  }
-
-  /**
-   * Removes the defaults added by {@link #installDefaults(AbstractButton)}.
-   *
-   * @param b  the button (<code>null</code> not permitted).
-   */
-  protected void uninstallDefaults(AbstractButton b)
-  {
-    // The other properties aren't uninstallable.
-    LookAndFeel.uninstallBorder(b);
-  }
-
-  /**
-   * Creates and returns a new instance of {@link BasicButtonListener}.  This
-   * method provides a hook to make it easy for subclasses to install a
-   * different listener.
-   *
-   * @param b  the button.
-   *
-   * @return A new listener.
-   */
-  protected BasicButtonListener createButtonListener(AbstractButton b)
-  {
-    // Note: The RI always returns a new instance here. However,
-    // the BasicButtonListener class is perfectly suitable to be shared
-    // between multiple buttons, so we return a shared instance here
-    // for efficiency.
-    if (sharedListener == null)
-      sharedListener = new BasicButtonListener(b);
-    return sharedListener;
-  }
-
-  /**
-   * Installs listeners for the button.
-   *
-   * @param b  the button (<code>null</code> not permitted).
-   */
-  protected void installListeners(AbstractButton b)
-  {
-    BasicButtonListener listener = createButtonListener(b);
-    if (listener != null)
-      {
-        b.addChangeListener(listener);
-        b.addPropertyChangeListener(listener);
-        b.addFocusListener(listener);
-        b.addMouseListener(listener);
-        b.addMouseMotionListener(listener);
-      }
-    // Fire synthetic property change event to let the listener update
-    // the TextLayout cache.
-    listener.propertyChange(new PropertyChangeEvent(b, "font", null,
-                                                    b.getFont()));
-  }
-
-  /**
-   * Uninstalls listeners for the button.
-   *
-   * @param b  the button (<code>null</code> not permitted).
-   */
-  protected void uninstallListeners(AbstractButton b)
-  {
-    BasicButtonListener listener = getButtonListener(b);
-    if (listener != null)
-      {
-        b.removeChangeListener(listener);
-        b.removePropertyChangeListener(listener);
-        b.removeFocusListener(listener);
-        b.removeMouseListener(listener);
-        b.removeMouseMotionListener(listener);
-      }
-  }
-
-  protected void installKeyboardActions(AbstractButton b)
-  {
-    BasicButtonListener listener = getButtonListener(b);
-    if (listener != null)
-      listener.installKeyboardActions(b);
-  }
-
-  protected void uninstallKeyboardActions(AbstractButton b)
-  {
-    BasicButtonListener listener = getButtonListener(b);
-    if (listener != null)
-      listener.uninstallKeyboardActions(b);
-  }
-
-  /**
-   * Install the BasicButtonUI as the UI for a particular component.
-   * This means registering all the UI's listeners with the component,
-   * and setting any properties of the button which are particular to
-   * this look and feel.
-   *
-   * @param c The component to install the UI into
-   */
-  public void installUI(final JComponent c)
-  {
-    super.installUI(c);
-    if (c instanceof AbstractButton)
-      {
-        AbstractButton b = (AbstractButton) c;
-        installDefaults(b);
-        // It is important to install the listeners before installing
-        // the keyboard actions, because the keyboard actions
-        // are actually installed on the listener instance.
-        installListeners(b);
-        installKeyboardActions(b);
-        BasicHTML.updateRenderer(b, b.getText());
-      }
-  }
-
-  /**
-   * Uninstalls the UI from the component.
-   *
-   * @param c the component from which to uninstall the UI
-   */
-  public void uninstallUI(JComponent c)
-  {
-    if (c instanceof AbstractButton)
-      {
-        AbstractButton b = (AbstractButton) c;
-        uninstallKeyboardActions(b);
-        uninstallListeners(b);
-        uninstallDefaults(b);
-        BasicHTML.updateRenderer(b, "");
-        b.putClientProperty(BasicGraphicsUtils.CACHED_TEXT_LAYOUT, null);
-      }
-  }
-
-  /**
-   * Calculates the minimum size for the specified component.
-   *
-   * @param c the component for which to compute the minimum size
-   *
-   * @return the minimum size for the specified component
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension size = getPreferredSize(c);
-    // When the HTML view has a minimum width different from the preferred
-    // width, then substract this here accordingly. The height is not
-    // affected by that.
-    View html = (View) c.getClientProperty(BasicHTML.propertyKey);
-    if (html != null)
-      {
-        size.width -= html.getPreferredSpan(View.X_AXIS)
-                      - html.getPreferredSpan(View.X_AXIS);
-      }
-    return size;
-  }
-
-  /**
-   * Calculates the maximum size for the specified component.
-   *
-   * @param c the component for which to compute the maximum size
-   *
-   * @return the maximum size for the specified component
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension size = getPreferredSize(c);
-    // When the HTML view has a maximum width different from the preferred
-    // width, then add this here accordingly. The height is not
-    // affected by that.
-    View html = (View) c.getClientProperty(BasicHTML.propertyKey);
-    if (html != null)
-      {
-        size.width += html.getMaximumSpan(View.X_AXIS)
-                      - html.getPreferredSpan(View.X_AXIS);
-      }
-    return size;
-  }
-
-  /**
-   * Calculate the preferred size of this component, by delegating to
-   * {@link BasicGraphicsUtils#getPreferredButtonSize}.
-   *
-   * @param c The component to measure
-   *
-   * @return The preferred dimensions of the component
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    AbstractButton b = (AbstractButton) c;
-    Dimension d = BasicGraphicsUtils.getPreferredButtonSize(b,
-                                                           b.getIconTextGap());
-    return d;
-  }
-
-  static Icon currentIcon(AbstractButton b)
-  {
-    Icon i = b.getIcon();
-    ButtonModel model = b.getModel();
-
-    if (model.isPressed() && b.getPressedIcon() != null && b.isEnabled())
-      i = b.getPressedIcon();
-
-    else if (model.isRollover())
-      {
-        if (b.isSelected() && b.getRolloverSelectedIcon() != null)
-          i = b.getRolloverSelectedIcon();
-        else if (b.getRolloverIcon() != null)
-          i = b.getRolloverIcon();
-      }
-
-    else if (b.isSelected() && b.isEnabled())
-      {
-        if (b.isEnabled() && b.getSelectedIcon() != null)
-          i = b.getSelectedIcon();
-        else if (b.getDisabledSelectedIcon() != null)
-          i = b.getDisabledSelectedIcon();
-      }
-
-    else if (! b.isEnabled() && b.getDisabledIcon() != null)
-      i = b.getDisabledIcon();
-
-    return i;
-  }
-
-  /**
-   * Paint the component, which is an {@link AbstractButton}, according to
-   * its current state.
-   *
-   * @param g The graphics context to paint with
-   * @param c The component to paint the state of
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    AbstractButton b = (AbstractButton) c;
-
-    Insets i = c.getInsets(cachedInsets);
-    viewR.x = i.left;
-    viewR.y = i.top;
-    viewR.width = c.getWidth() - i.left - i.right;
-    viewR.height = c.getHeight() - i.top - i.bottom;
-    textR.x = 0;
-    textR.y = 0;
-    textR.width = 0;
-    textR.height = 0;
-    iconR.x = 0;
-    iconR.y = 0;
-    iconR.width = 0;
-    iconR.height = 0;
-
-    Font f = c.getFont();
-    g.setFont(f);
-    Icon icon = b.getIcon();
-    String text = b.getText();
-    text = SwingUtilities.layoutCompoundLabel(c, g.getFontMetrics(f),
-                                              text, icon,
-                                              b.getVerticalAlignment(),
-                                              b.getHorizontalAlignment(),
-                                              b.getVerticalTextPosition(),
-                                              b.getHorizontalTextPosition(),
-                                              viewR, iconR, textR,
-                                              text == null ? 0
-                                                         : b.getIconTextGap());
-
-    ButtonModel model = b.getModel();
-    if (model.isArmed() && model.isPressed())
-      paintButtonPressed(g, b);
-
-    if (icon != null)
-      paintIcon(g, c, iconR);
-    if (text != null)
-      {
-        View html = (View) b.getClientProperty(BasicHTML.propertyKey);
-        if (html != null)
-          html.paint(g, textR);
-        else
-          paintText(g, b, textR, text);
-      }
-    if (b.isFocusOwner() && b.isFocusPainted())
-      paintFocus(g, b, viewR, textR, iconR);
-  }
-
-  /**
-   * Paint any focus decoration this {@link JComponent} might have.  The
-   * component, which in this case will be an {@link AbstractButton},
-   * should only have focus decoration painted if it has the focus, and its
-   * "focusPainted" property is <code>true</code>.
-   *
-   * @param g Graphics context to paint with
-   * @param b Button to paint the focus of
-   * @param vr Visible rectangle, the area in which to paint
-   * @param tr Text rectangle, contained in visible rectangle
-   * @param ir Icon rectangle, contained in visible rectangle
-   *
-   * @see AbstractButton#isFocusPainted()
-   * @see JComponent#hasFocus()
-   */
-  protected void paintFocus(Graphics g, AbstractButton b, Rectangle vr,
-                            Rectangle tr, Rectangle ir)
-  {
-    // In the BasicLookAndFeel no focus border is drawn. This can be
-    // overridden in subclasses to implement such behaviour.
-  }
-
-  /**
-   * Paint the icon for this component. Depending on the state of the
-   * component and the availability of the button's various icon
-   * properties, this might mean painting one of several different icons.
-   *
-   * @param g Graphics context to paint with
-   * @param c Component to paint the icon of
-   * @param iconRect Rectangle in which the icon should be painted
-   */
-  protected void paintIcon(Graphics g, JComponent c, Rectangle iconRect)
-  {
-    AbstractButton b = (AbstractButton) c;
-    Icon i = currentIcon(b);
-
-    if (i != null)
-      {
-        ButtonModel m = b.getModel();
-        if (m.isPressed() && m.isArmed())
-          {
-            int offs = getTextShiftOffset();
-            i.paintIcon(c, g, iconRect.x + offs, iconRect.y + offs);
-          }
-        else
-          i.paintIcon(c, g, iconRect.x, iconRect.y);
-      }
-  }
-
-  /**
-   * Paints the background area of an {@link AbstractButton} in the pressed
-   * state.  This means filling the supplied area with a darker than normal
-   * background.
-   *
-   * @param g The graphics context to paint with
-   * @param b The button to paint the state of
-   */
-  protected void paintButtonPressed(Graphics g, AbstractButton b)
-  {
-    if (b.isContentAreaFilled() && b.isOpaque())
-      {
-        Rectangle area = new Rectangle();
-        SwingUtilities.calculateInnerArea(b, area);
-        g.setColor(UIManager.getColor(getPropertyPrefix() + "shadow"));
-        g.fillRect(area.x, area.y, area.width, area.height);
-      }
-  }
-
-  /**
-   * Paints the "text" property of an {@link AbstractButton}.
-   *
-   * @param g The graphics context to paint with
-   * @param c The component to paint the state of
-   * @param textRect The area in which to paint the text
-   * @param text The text to paint
-   */
-  protected void paintText(Graphics g, JComponent c, Rectangle textRect,
-                           String text)
-  {
-    AbstractButton b = (AbstractButton) c;
-    Font f = b.getFont();
-    g.setFont(f);
-    FontMetrics fm = g.getFontMetrics(f);
-
-    if (b.isEnabled())
-      {
-        g.setColor(b.getForeground());
-        // FIXME: Underline mnemonic.
-        BasicGraphicsUtils.drawString(b, g, text, -1, textRect.x,
-                                      textRect.y + fm.getAscent());
-      }
-    else
-      {
-        String prefix = getPropertyPrefix();
-        g.setColor(UIManager.getColor(prefix + "disabledText"));
-        // FIXME: Underline mnemonic.
-        BasicGraphicsUtils.drawString(b, g, text, -1, textRect.x,
-                                      textRect.y + fm.getAscent());
-      }
-  }
-
-  /**
-   * Paints the "text" property of an {@link AbstractButton}.
-   *
-   * @param g The graphics context to paint with
-   * @param b The button to paint the state of
-   * @param textRect The area in which to paint the text
-   * @param text The text to paint
-   *
-   * @since 1.4
-   */
-  protected void paintText(Graphics g, AbstractButton b, Rectangle textRect,
-                           String text)
-  {
-    paintText(g, (JComponent) b, textRect, text);
-  }
-
-  /**
-   * A helper method that finds the BasicButtonListener for the specified
-   * button. This is there because this UI class is stateless and
-   * shared for all buttons, and thus can't store the listener
-   * as instance field. (We store our shared instance in sharedListener,
-   * however, subclasses may override createButtonListener() and we would
-   * be lost in this case).
-   *
-   * @param b the button
-   *
-   * @return the UI event listener
-   */
-  private BasicButtonListener getButtonListener(AbstractButton b)
-  {
-    // The listener gets installed as PropertyChangeListener,
-    // so look for it in the list of property change listeners.
-    PropertyChangeListener[] listeners = b.getPropertyChangeListeners();
-    BasicButtonListener l = null;
-    for (int i = 0; listeners != null && l == null && i < listeners.length;
-           i++)
-      {
-        if (listeners[i] instanceof BasicButtonListener)
-          l = (BasicButtonListener) listeners[i];
-      }
-    return l;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java
deleted file mode 100644
index 79ce7b8..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/* BasicCheckBoxMenuItemUI.java --
-   Copyright (C) 2002, 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.event.MouseEvent;
-
-import javax.swing.JComponent;
-import javax.swing.JMenuItem;
-import javax.swing.MenuElement;
-import javax.swing.MenuSelectionManager;
-import javax.swing.UIDefaults;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * DOCUMENT ME!
- */
-public class BasicCheckBoxMenuItemUI extends BasicMenuItemUI
-{
-
-  /**
-   * Creates a new BasicCheckBoxMenuItemUI object.
-   */
-  public BasicCheckBoxMenuItemUI()
-  {
-    super();
-  }
-
-  /**
-   * Factory method to create a BasicCheckBoxMenuItemUI for the given {@link
-   * JComponent}, which should be a JCheckBoxMenuItem
-   *
-   * @param c The {@link JComponent} a UI is being created for.
-   *
-   * @return A BasicCheckBoxMenuItemUI for the {@link JComponent}.
-   */
-  public static ComponentUI createUI(final JComponent c)
-  {
-    return new BasicCheckBoxMenuItemUI();
-  }
-
-  /**
-   * Returns the prefix for entries in the {@link UIDefaults} table.
-   *
-   * @return "CheckBoxMenuItem"
-   */
-  protected String getPropertyPrefix()
-  {
-    return "CheckBoxMenuItem";
-  }
-
-  /**
-   * DOCUMENT ME!
-   *
-   * @param item DOCUMENT ME!
-   * @param e DOCUMENT ME!
-   * @param path DOCUMENT ME!
-   * @param manager DOCUMENT ME!
-   */
-  public void processMouseEvent(JMenuItem item, MouseEvent e,
-                                MenuElement[] path,
-                                MenuSelectionManager manager)
-  {
-    // TODO: May not be implemented properly.
-    item.processMouseEvent(e, path, manager);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicCheckBoxUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicCheckBoxUI.java
deleted file mode 100644
index 0a4da00..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicCheckBoxUI.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/* BasicCheckBoxUI.java
-   Copyright (C) 2002, 2004, 2005, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import javax.swing.JCheckBox;
-import javax.swing.JComponent;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * A UI delegate for the {@link JCheckBox} component.
- */
-public class BasicCheckBoxUI extends BasicRadioButtonUI
-{
-
-  /**
-   * Returns a UI delegate (that is, an instance of this class) for the
-   * specified component.
-   *
-   * @param c  the component (this should be a {@link JCheckBox}).
-   *
-   * @return A new instance of <code>BasicCheckBoxUI</code>.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicCheckBoxUI();
-  }
-
-  /**
-   * Returns the prefix for entries in the {@link UIManager} defaults table
-   * (<code>"CheckBox."</code> in this case).
-   *
-   * @return "CheckBox."
-   */
-  public String getPropertyPrefix()
-  {
-    return "CheckBox.";
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicColorChooserUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicColorChooserUI.java
deleted file mode 100644
index 10b5643..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicColorChooserUI.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/* BasicColorChooserUI.java --
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.BorderLayout;
-import java.awt.Container;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.JColorChooser;
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-import javax.swing.JTabbedPane;
-import javax.swing.LookAndFeel;
-import javax.swing.colorchooser.AbstractColorChooserPanel;
-import javax.swing.colorchooser.ColorChooserComponentFactory;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.plaf.ColorChooserUI;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * This is the UI Class for the JColorChooser in the Basic Look and Feel.
- */
-public class BasicColorChooserUI extends ColorChooserUI
-{
-  /**
-   * This helper class handles property changes from the JColorChooser.
-   */
-  public class PropertyHandler implements PropertyChangeListener
-  {
-    /**
-     * This method is called when any of the properties of the JColorChooser
-     * change.
-     *
-     * @param e The PropertyChangeEvent.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      if (e.getPropertyName() == JColorChooser.CHOOSER_PANELS_PROPERTY)
-        makeTabs(chooser.getChooserPanels());
-      else if (e.getPropertyName() == JColorChooser.PREVIEW_PANEL_PROPERTY)
-        updatePreviewPanel(chooser.getPreviewPanel());
-      else if (e.getPropertyName() == JColorChooser.SELECTION_MODEL_PROPERTY)
-        ((AbstractColorChooserPanel) pane.getSelectedComponent())
-        .updateChooser();
-
-      chooser.repaint();
-    }
-  }
-
-  /**
-   * This is a helper class that listens to the Model of the JColorChooser for
-   * color change events so it can update the preview panel.
-   */
-  private class PreviewListener implements ChangeListener
-  {
-    /**
-     * This method is called whenever the JColorChooser's color changes.
-     *
-     * @param e The ChangeEvent.
-     */
-    public void stateChanged(ChangeEvent e)
-    {
-      if (pane != null)
-        {
-          AbstractColorChooserPanel panel = (AbstractColorChooserPanel) pane
-                                            .getSelectedComponent();
-          if (panel != null)
-            panel.updateChooser();
-        }
-      chooser.repaint();
-    }
-  }
-
-  /**
-   * This helper class listens to the JTabbedPane that is used for tab
-   * changes.
-   */
-  private class TabPaneListener implements ChangeListener
-  {
-    /**
-     * This method is called whenever a different tab is selected in the
-     * JTabbedPane.
-     *
-     * @param e The ChangeEvent.
-     */
-    public void stateChanged(ChangeEvent e)
-    {
-      // Need to do this because we don't update all the tabs when they're not
-      // visible, so they are not informed of new colors when they're hidden.
-      AbstractColorChooserPanel comp = (AbstractColorChooserPanel) pane
-                                       .getSelectedComponent();
-      comp.updateChooser();
-    }
-  }
-
-  /** An array of default choosers to use in the JColorChooser. */
-  protected AbstractColorChooserPanel[] defaultChoosers;
-
-  /** The listener for the preview panel. */
-  protected ChangeListener previewListener;
-
-  /** The PropertyChangeListener for the JColorChooser. */
-  protected PropertyChangeListener propertyChangeListener;
-
-  /**
-   * The JColorChooser this is installed on.
-   */
-  protected JColorChooser chooser;
-
-  /** The JTabbedPane that is used. */
-  JTabbedPane pane;
-
-  /** The Container that holds the preview panel. */
-  private Container prevContainer;
-
-  /**
-   * Creates a new BasicColorChooserUI object.
-   */
-  public BasicColorChooserUI()
-  {
-    super();
-  }
-
-  /**
-   * This method creates a new UI Component for the given JComponent.
-   *
-   * @param c The JComponent to create an UI for.
-   *
-   * @return A new BasicColorChooserUI.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicColorChooserUI();
-  }
-
-  /**
-   * This method creates the default chooser panels for the JColorChooser.
-   *
-   * @return The default chooser panels.
-   */
-  protected AbstractColorChooserPanel[] createDefaultChoosers()
-  {
-    return ColorChooserComponentFactory.getDefaultChooserPanels();
-  }
-
-  /**
-   * This method installs the UI Component for the given JComponent.
-   *
-   * @param c The JComponent to install this UI for.
-   */
-  public void installUI(JComponent c)
-  {
-    if (c instanceof JColorChooser)
-      {
-        chooser = (JColorChooser) c;
-        chooser.setLayout(new BorderLayout());
-
-        // Do this first, so we avoid doing work for property change events.
-        defaultChoosers = createDefaultChoosers();
-        chooser.setChooserPanels(defaultChoosers);
-        pane = new JTabbedPane();
-
-        pane.addChangeListener(new ChangeListener()
-            {
-              public void stateChanged(ChangeEvent e)
-              {
-                pane.repaint();
-              }
-            });
-
-        makeTabs(defaultChoosers);
-
-        chooser.add(pane, BorderLayout.NORTH);
-
-        installPreviewPanel();
-
-        installDefaults();
-        installListeners();
-      }
-  }
-
-  /**
-   * This method adds tabs to the JTabbedPane for the chooserPanels defined in
-   * the JColorChooser.
-   * This is package-private to avoid an accessor method.
-   *
-   * @param panels The Panels that need tabs to be made for them.
-   */
-  void makeTabs(AbstractColorChooserPanel[] panels)
-  {
-    pane.removeAll();
-    for (int i = 0; i < panels.length; i++)
-      pane.addTab(panels[i].getDisplayName(), panels[i].getSmallDisplayIcon(),
-                  panels[i]);
-  }
-
-  /**
-   * This method uninstalls this UI for the given JComponent.
-   *
-   * @param c The JComponent that will have this UI removed.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    uninstallListeners();
-    uninstallDefaults();
-    uninstallDefaultChoosers();
-
-    pane = null;
-    chooser = null;
-  }
-
-  /**
-   * Uninstalls the default color choosers that have been installed by this UI.
-   */
-  protected void uninstallDefaultChoosers()
-  {
-    defaultChoosers = null;
-  }
-
-  /**
-   * This method installs the preview panel for the JColorChooser.
-   */
-  protected void installPreviewPanel()
-  {
-    updatePreviewPanel(ColorChooserComponentFactory.getPreviewPanel());
-  }
-
-  /**
-   * This is a helper method that swaps the existing preview panel with the
-   * given panel.
-   * This is package-private to avoid an accessor method.
-   *
-   * @param preview The new preview panel.
-   */
-  void updatePreviewPanel(JComponent preview)
-  {
-    if (prevContainer == null)
-      {
-        prevContainer = new JPanel();
-        prevContainer.setLayout(new BorderLayout());
-        chooser.add(prevContainer, BorderLayout.CENTER);
-      }
-    prevContainer.removeAll();
-    prevContainer.add(preview, BorderLayout.CENTER);
-  }
-
-  /**
-   * This method installs the default properties given by the Basic Look and
-   * Feel.
-   */
-  protected void installDefaults()
-  {
-    LookAndFeel.installColorsAndFont(chooser, "ColorChooser.background",
-                                     "ColorChooser.foreground",
-                                     "ColorChooser.font");
-  }
-
-  /**
-   * This method uninstalls the default properties given by the Basic Look and
-   * Feel.
-   */
-  protected void uninstallDefaults()
-  {
-    chooser.setBackground(null);
-    chooser.setForeground(null);
-    chooser.setFont(null);
-  }
-
-  /**
-   * This method installs any listeners required for this UI to function.
-   */
-  protected void installListeners()
-  {
-    propertyChangeListener = createPropertyChangeListener();
-    previewListener = new PreviewListener();
-
-    chooser.addPropertyChangeListener(propertyChangeListener);
-    chooser.getSelectionModel().addChangeListener(previewListener);
-
-    pane.addChangeListener(new TabPaneListener());
-  }
-
-  /**
-   * This method creates the PropertyChangeListener used for listening to the
-   * JColorChooser.
-   *
-   * @return A PropertyChangeListener.
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new PropertyHandler();
-  }
-
-  /**
-   * This method uninstalls any listeners that were previously installed by
-   * the UI.
-   */
-  protected void uninstallListeners()
-  {
-    chooser.removePropertyChangeListener(propertyChangeListener);
-    chooser.getSelectionModel().removeChangeListener(previewListener);
-
-    previewListener = null;
-    propertyChangeListener = null;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicComboBoxEditor.java b/libjava/classpath/javax/swing/plaf/basic/BasicComboBoxEditor.java
deleted file mode 100644
index b04f3fa..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicComboBoxEditor.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/* BasicComboBoxEditor.java --
-   Copyright (C) 2004, 2005, 2006  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Component;
-import java.awt.event.ActionListener;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-
-import javax.swing.ComboBoxEditor;
-import javax.swing.JTextField;
-
-/**
- * An editor used by the {@link BasicComboBoxUI} class.  This editor uses a
- * {@link JTextField} as the editor component.
- *
- * @author Olga Rodimina
- */
-public class BasicComboBoxEditor extends Object implements ComboBoxEditor,
-                                                           FocusListener
-{
-  /** The editor component. */
-  protected JTextField editor;
-
-  /**
-   * Creates a new <code>BasicComboBoxEditor</code> instance.
-   */
-  public BasicComboBoxEditor()
-  {
-    editor = new JTextField();
-    editor.setBorder(null);
-    editor.setColumns(9);
-  }
-
-  /**
-   * Returns the component that will be used by the combo box to display and
-   * edit the currently selected item in the combo box.
-   *
-   * @return The editor component, which is a {@link JTextField} in this case.
-   */
-  public Component getEditorComponent()
-  {
-    return editor;
-  }
-
-  /**
-   * Sets item that should be edited when any editing operation is performed
-   * by the user. The value is always equal to the currently selected value
-   * in the combo box. Thus whenever a different value is selected from the
-   * combo box list then this method should be  called to change editing
-   * item to the new selected item.
-   *
-   * @param item item that is currently selected in the combo box
-   */
-  public void setItem(Object item)
-  {
-     if (item == null)
-        editor.setText("");
-     else
-        editor.setText(item.toString());
-  }
-
-  /**
-   * Returns the text from the editor component.
-   *
-   * @return The text from the editor component.
-   */
-  public Object getItem()
-  {
-    return editor.getText();
-  }
-
-  /**
-   * Selects all the text in the editor component.
-   */
-  public void selectAll()
-  {
-    editor.selectAll();
-  }
-
-  /**
-   * This method is called when textfield gains focus. This will enable
-   * editing of the selected item.
-   *
-   * @param e the FocusEvent describing change in focus.
-   */
-  public void focusGained(FocusEvent e)
-  {
-    // FIXME: Need to implement
-  }
-
-  /**
-   * This method is called when textfield loses focus. If during this time any
-   * editting operation was performed by the user, then it will be cancelled
-   * and selected item will not be changed.
-   *
-   * @param e the FocusEvent describing change in focus
-   */
-  public void focusLost(FocusEvent e)
-  {
-    // FIXME: Need to implement
-  }
-
-  /**
-   * Adds an {@link ActionListener} to the editor component.  If the user will
-   * edit currently selected item in the textfield and pressEnter, then action
-   * will be performed. The actionPerformed of this ActionListener should
-   * change the selected item of the comboBox to the newly editted  selected
-   * item.
-   *
-   * @param l the ActionListener responsible for changing selected item of the
-   *        combo box when it is editted by the user.
-   */
-  public void addActionListener(ActionListener l)
-  {
-    editor.addActionListener(l);
-  }
-
-  /**
-   * Removes the {@link ActionListener} from the editor component.
-   *
-   * @param l the listener to remove.
-   */
-  public void removeActionListener(ActionListener l)
-  {
-    editor.removeActionListener(l);
-  }
-
-  /**
-   * A subclass of {@link BasicComboBoxEditor} that implements the
-   * {@link UIResource} interface.
-   */
-  public static class UIResource extends BasicComboBoxEditor
-    implements javax.swing.plaf.UIResource
-  {
-    /**
-     * Creates a new <code>BasicComboBoxEditor.UIResource</code> instance.
-     */
-    public UIResource()
-    {
-      // Nothing to do here.
-    }
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicComboBoxRenderer.java b/libjava/classpath/javax/swing/plaf/basic/BasicComboBoxRenderer.java
deleted file mode 100644
index 761d7d1..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicComboBoxRenderer.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/* BasicComboBoxRenderer.java --
-   Copyright (C) 2004, 2005  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Component;
-import java.awt.Dimension;
-import java.io.Serializable;
-
-import javax.swing.Icon;
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.ListCellRenderer;
-import javax.swing.border.Border;
-import javax.swing.border.EmptyBorder;
-
-/**
- * A renderer for a {@link JComboBox}.
- *
- * @author Olga Rodimina
- */
-public class BasicComboBoxRenderer
-  extends JLabel
-  implements ListCellRenderer, Serializable
-{
-  /**
-   * A shared border instance for all renderers.
-   */
-  protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
-
-  /**
-   * Creates a new <code>BasicComboBoxRenderer</code> object.
-   */
-  public BasicComboBoxRenderer()
-  {
-    setOpaque(true);
-    setBorder(noFocusBorder);
-  }
-
-  /**
-   * Returns preferredSize of the renderer
-   *
-   * @return preferredSize of the renderer
-   */
-  public Dimension getPreferredSize()
-  {
-    if (this.getText() != null && ! this.getText().equals(""))
-      return super.getPreferredSize();
-    else
-      {
-        // If the combo box option's text is empty or null, it won't size
-        // properly (ie, it'll be way too short)... so we throw in a dummy
-        // space to trick the superclass's sizing methods.
-        String oldText = this.getText();
-        this.setText(" ");
-        Dimension d = super.getPreferredSize();
-        this.setText(oldText);
-        return d;
-      }
-  }
-
-  /**
-   * Returns a component that has been configured to display the given
-   * <code>value</code>.
-   *
-   * @param list List of items for which to the background and foreground
-   *        colors
-   * @param value object that should be rendered in the cell
-   * @param index index of the cell in the list of items.
-   * @param isSelected draw cell highlighted if isSelected is true
-   * @param cellHasFocus draw focus rectangle around cell if the cell has
-   *        focus
-   *
-   * @return Component that will be used to draw the desired cell.
-   */
-  public Component getListCellRendererComponent(JList list, Object value,
-                                                int index, boolean isSelected,
-                                                boolean cellHasFocus)
-  {
-    if (isSelected)
-      {
-        setBackground(list.getSelectionBackground());
-        setForeground(list.getSelectionForeground());
-      }
-    else
-      {
-        setBackground(list.getBackground());
-        setForeground(list.getForeground());
-      }
-    setFont(list.getFont());
-
-    if (value instanceof Icon)
-      setIcon((Icon) value);
-    else
-      setText(value == null ? "" : value.toString());
-
-    return this;
-  }
-
-  /**
-   * A subclass of {@link BasicComboBoxRenderer} that implements the
-   * {@link javax.swing.plaf.UIResource} interface.
-   */
-  public static class UIResource extends BasicComboBoxRenderer
-    implements javax.swing.plaf.UIResource
-  {
-    /**
-     * Creates a new <code>UIResource</code> object.
-     */
-    public UIResource()
-    {
-      // Nothing to do here.
-    }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicComboBoxUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicComboBoxUI.java
deleted file mode 100644
index 07d4f42..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicComboBoxUI.java
+++ /dev/null
@@ -1,1410 +0,0 @@
-/* BasicComboBoxUI.java --
-   Copyright (C) 2004, 2005, 2006,  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.LayoutManager;
-import java.awt.Rectangle;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.awt.event.KeyAdapter;
-import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.accessibility.Accessible;
-import javax.accessibility.AccessibleContext;
-import javax.swing.CellRendererPane;
-import javax.swing.ComboBoxEditor;
-import javax.swing.ComboBoxModel;
-import javax.swing.DefaultListCellRenderer;
-import javax.swing.InputMap;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JList;
-import javax.swing.ListCellRenderer;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.event.ListDataEvent;
-import javax.swing.event.ListDataListener;
-import javax.swing.plaf.ComboBoxUI;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.UIResource;
-
-/**
- * A UI delegate for the {@link JComboBox} component.
- *
- * @author Olga Rodimina
- * @author Robert Schuster
- */
-public class BasicComboBoxUI extends ComboBoxUI
-{
-  /**
-   * The arrow button that is displayed in the right side of JComboBox. This
-   * button is used to hide and show combo box's list of items.
-   */
-  protected JButton arrowButton;
-
-  /**
-   * The combo box represented by this UI delegate.
-   */
-  protected JComboBox comboBox;
-
-  /**
-   * The component that is responsible for displaying/editing the selected
-   * item of the combo box.
-   *
-   * @see BasicComboBoxEditor#getEditorComponent()
-   */
-  protected Component editor;
-
-  /**
-   * A listener listening to focus events occurring in the {@link JComboBox}.
-   */
-  protected FocusListener focusListener;
-
-  /**
-   * A flag indicating whether JComboBox currently has the focus.
-   */
-  protected boolean hasFocus;
-
-  /**
-   * A listener listening to item events fired by the {@link JComboBox}.
-   */
-  protected ItemListener itemListener;
-
-  /**
-   * A listener listening to key events that occur while {@link JComboBox} has
-   * the focus.
-   */
-  protected KeyListener keyListener;
-
-  /**
-   * List used when rendering selected item of the combo box. The selection
-   * and foreground colors for combo box renderer are configured from this
-   * list.
-   */
-  protected JList listBox;
-
-  /**
-   * ListDataListener listening to JComboBox model
-   */
-  protected ListDataListener listDataListener;
-
-  /**
-   * Popup list containing the combo box's menu items.
-   */
-  protected ComboPopup popup;
-
-  protected KeyListener popupKeyListener;
-
-  protected MouseListener popupMouseListener;
-
-  protected MouseMotionListener popupMouseMotionListener;
-
-  /**
-   * Listener listening to changes in the bound properties of JComboBox
-   */
-  protected PropertyChangeListener propertyChangeListener;
-
-  /* Size of the largest item in the comboBox
-   * This is package-private to avoid an accessor method.
-   */
-  Dimension displaySize = new Dimension();
-
-  /**
-   * Used to render the combo box values.
-   */
-  protected CellRendererPane currentValuePane;
-
-  /**
-   * The current minimum size if isMinimumSizeDirty is false.
-   * Setup by getMinimumSize() and invalidated by the various listeners.
-   */
-  protected Dimension cachedMinimumSize;
-
-  /**
-   * Indicates whether or not the cachedMinimumSize field is valid or not.
-   */
-  protected boolean isMinimumSizeDirty = true;
-
-  /**
-   * Creates a new <code>BasicComboBoxUI</code> object.
-   */
-  public BasicComboBoxUI()
-  {
-    currentValuePane = new CellRendererPane();
-    cachedMinimumSize = new Dimension();
-  }
-
-  /**
-   * A factory method to create a UI delegate for the given
-   * {@link JComponent}, which should be a {@link JComboBox}.
-   *
-   * @param c The {@link JComponent} a UI is being created for.
-   *
-   * @return A UI delegate for the {@link JComponent}.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicComboBoxUI();
-  }
-
-  /**
-   * Installs the UI for the given {@link JComponent}.
-   *
-   * @param c  the JComponent to install a UI for.
-   *
-   * @see #uninstallUI(JComponent)
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-
-    if (c instanceof JComboBox)
-      {
-        isMinimumSizeDirty = true;
-        comboBox = (JComboBox) c;
-        installDefaults();
-        popup = createPopup();
-        listBox = popup.getList();
-
-        // Set editor and renderer for the combo box. Editor is used
-        // only if combo box becomes editable, otherwise renderer is used
-        // to paint the selected item; combobox is not editable by default.
-        ListCellRenderer renderer = comboBox.getRenderer();
-        if (renderer == null || renderer instanceof UIResource)
-          comboBox.setRenderer(createRenderer());
-
-        ComboBoxEditor currentEditor = comboBox.getEditor();
-        if (currentEditor == null || currentEditor instanceof UIResource)
-          {
-            currentEditor = createEditor();
-            comboBox.setEditor(currentEditor);
-          }
-
-        installComponents();
-        installListeners();
-        comboBox.setLayout(createLayoutManager());
-        comboBox.setFocusable(true);
-        installKeyboardActions();
-        comboBox.putClientProperty(BasicLookAndFeel.DONT_CANCEL_POPUP,
-                                   Boolean.TRUE);
-      }
-  }
-
-  /**
-   * Uninstalls the UI for the given {@link JComponent}.
-   *
-   * @param c The JComponent that is having this UI removed.
-   *
-   * @see #installUI(JComponent)
-   */
-  public void uninstallUI(JComponent c)
-  {
-    setPopupVisible(comboBox, false);
-    popup.uninstallingUI();
-    uninstallKeyboardActions();
-    comboBox.setLayout(null);
-    uninstallComponents();
-    uninstallListeners();
-    uninstallDefaults();
-    comboBox = null;
-  }
-
-  /**
-   * Installs the defaults that are defined in the {@link BasicLookAndFeel}
-   * for this {@link JComboBox}.
-   *
-   * @see #uninstallDefaults()
-   */
-  protected void installDefaults()
-  {
-    LookAndFeel.installColorsAndFont(comboBox, "ComboBox.background",
-                                     "ComboBox.foreground", "ComboBox.font");
-    LookAndFeel.installBorder(comboBox, "ComboBox.border");
-  }
-
-  /**
-   * Creates and installs the listeners for this UI.
-   *
-   * @see #uninstallListeners()
-   */
-  protected void installListeners()
-  {
-    // install combo box's listeners
-    propertyChangeListener = createPropertyChangeListener();
-    comboBox.addPropertyChangeListener(propertyChangeListener);
-
-    focusListener = createFocusListener();
-    comboBox.addFocusListener(focusListener);
-
-    itemListener = createItemListener();
-    comboBox.addItemListener(itemListener);
-
-    keyListener = createKeyListener();
-    comboBox.addKeyListener(keyListener);
-
-    // install listeners that listen to combo box model
-    listDataListener = createListDataListener();
-    comboBox.getModel().addListDataListener(listDataListener);
-
-    // Install mouse and key listeners from the popup.
-    popupMouseListener = popup.getMouseListener();
-    comboBox.addMouseListener(popupMouseListener);
-
-    popupMouseMotionListener = popup.getMouseMotionListener();
-    comboBox.addMouseMotionListener(popupMouseMotionListener);
-
-    popupKeyListener = popup.getKeyListener();
-    comboBox.addKeyListener(popupKeyListener);
-  }
-
-  /**
-   * Uninstalls the defaults and sets any objects created during
-   * install to <code>null</code>.
-   *
-   * @see #installDefaults()
-   */
-  protected void uninstallDefaults()
-  {
-    if (comboBox.getFont() instanceof UIResource)
-      comboBox.setFont(null);
-
-    if (comboBox.getForeground() instanceof UIResource)
-      comboBox.setForeground(null);
-
-    if (comboBox.getBackground() instanceof UIResource)
-      comboBox.setBackground(null);
-
-    LookAndFeel.uninstallBorder(comboBox);
-  }
-
-  /**
-   * Detaches all the listeners we attached in {@link #installListeners}.
-   *
-   * @see #installListeners()
-   */
-  protected void uninstallListeners()
-  {
-    comboBox.removePropertyChangeListener(propertyChangeListener);
-    propertyChangeListener = null;
-
-    comboBox.removeFocusListener(focusListener);
-    listBox.removeFocusListener(focusListener);
-    focusListener = null;
-
-    comboBox.removeItemListener(itemListener);
-    itemListener = null;
-
-    comboBox.removeKeyListener(keyListener);
-    keyListener = null;
-
-    comboBox.getModel().removeListDataListener(listDataListener);
-    listDataListener = null;
-
-    if (popupMouseListener != null)
-      comboBox.removeMouseListener(popupMouseListener);
-    popupMouseListener = null;
-
-    if (popupMouseMotionListener != null)
-      comboBox.removeMouseMotionListener(popupMouseMotionListener);
-    popupMouseMotionListener = null;
-
-    if (popupKeyListener != null)
-      comboBox.removeKeyListener(popupKeyListener);
-    popupKeyListener = null;
-  }
-
-  /**
-   * Creates the popup that will contain list of combo box's items.
-   *
-   * @return popup containing list of combo box's items
-   */
-  protected ComboPopup createPopup()
-  {
-    return new BasicComboPopup(comboBox);
-  }
-
-  /**
-   * Creates a {@link KeyListener} to listen to key events.
-   *
-   * @return KeyListener that listens to key events.
-   */
-  protected KeyListener createKeyListener()
-  {
-    return new KeyHandler();
-  }
-
-  /**
-   * Creates the {@link FocusListener} that will listen to changes in this
-   * JComboBox's focus.
-   *
-   * @return the FocusListener.
-   */
-  protected FocusListener createFocusListener()
-  {
-    return new FocusHandler();
-  }
-
-  /**
-   * Creates a {@link ListDataListener} to listen to the combo box's data model.
-   *
-   * @return The new listener.
-   */
-  protected ListDataListener createListDataListener()
-  {
-    return new ListDataHandler();
-  }
-
-  /**
-   * Creates an {@link ItemListener} that will listen to the changes in
-   * the JComboBox's selection.
-   *
-   * @return The ItemListener
-   */
-  protected ItemListener createItemListener()
-  {
-    return new ItemHandler();
-  }
-
-  /**
-   * Creates a {@link PropertyChangeListener} to listen to the changes in
-   * the JComboBox's bound properties.
-   *
-   * @return The PropertyChangeListener
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new PropertyChangeHandler();
-  }
-
-  /**
-   * Creates and returns a layout manager for the combo box.  Subclasses can
-   * override this method to provide a different layout.
-   *
-   * @return a layout manager for the combo box.
-   */
-  protected LayoutManager createLayoutManager()
-  {
-    return new ComboBoxLayoutManager();
-  }
-
-  /**
-   * Creates a component that will be responsible for rendering the
-   * selected component in the combo box.
-   *
-   * @return A renderer for the combo box.
-   */
-  protected ListCellRenderer createRenderer()
-  {
-    return new BasicComboBoxRenderer.UIResource();
-  }
-
-  /**
-   * Creates the component that will be responsible for displaying/editing
-   * the selected item in the combo box. This editor is used only when combo
-   * box is editable.
-   *
-   * @return A new component that will be responsible for displaying/editing
-   *         the selected item in the combo box.
-   */
-  protected ComboBoxEditor createEditor()
-  {
-    return new BasicComboBoxEditor.UIResource();
-  }
-
-  /**
-   * Installs the components for this JComboBox. ArrowButton, main
-   * part of combo box (upper part) and popup list of items are created and
-   * configured here.
-   */
-  protected void installComponents()
-  {
-    // create and install arrow button
-    arrowButton = createArrowButton();
-    comboBox.add(arrowButton);
-    if (arrowButton != null)
-      configureArrowButton();
-
-    if (comboBox.isEditable())
-      addEditor();
-
-    comboBox.add(currentValuePane);
-  }
-
-  /**
-   * Uninstalls components from this {@link JComboBox}.
-   *
-   * @see #installComponents()
-   */
-  protected void uninstallComponents()
-  {
-    // Unconfigure arrow button.
-    if (arrowButton != null)
-      {
-        unconfigureArrowButton();
-      }
-
-    // Unconfigure editor.
-    if (editor != null)
-      {
-        unconfigureEditor();
-      }
-
-    comboBox.removeAll();
-    arrowButton = null;
-  }
-
-  /**
-   * Adds the current editor to the combo box.
-   */
-  public void addEditor()
-  {
-    removeEditor();
-    editor = comboBox.getEditor().getEditorComponent();
-    if (editor != null)
-      {
-        configureEditor();
-        comboBox.add(editor);
-      }
-  }
-
-  /**
-   * Removes the current editor from the combo box.
-   */
-  public void removeEditor()
-  {
-    if (editor != null)
-      {
-        unconfigureEditor();
-        comboBox.remove(editor);
-      }
-  }
-
-  /**
-   * Configures the editor for this combo box.
-   */
-  protected void configureEditor()
-  {
-    editor.setFont(comboBox.getFont());
-    if (popupKeyListener != null)
-      editor.addKeyListener(popupKeyListener);
-    if (keyListener != null)
-      editor.addKeyListener(keyListener);
-    comboBox.configureEditor(comboBox.getEditor(),
-                             comboBox.getSelectedItem());
-  }
-
-  /**
-   * Unconfigures the editor for this combo box.
-   */
-  protected void unconfigureEditor()
-  {
-    if (popupKeyListener != null)
-      editor.removeKeyListener(popupKeyListener);
-    if (keyListener != null)
-      editor.removeKeyListener(keyListener);
-  }
-
-  /**
-   * Configures the arrow button.
-   *
-   * @see #configureArrowButton()
-   */
-  public void configureArrowButton()
-  {
-    if (arrowButton != null)
-      {
-        arrowButton.setEnabled(comboBox.isEnabled());
-        arrowButton.setFocusable(false);
-        arrowButton.addMouseListener(popup.getMouseListener());
-        arrowButton.addMouseMotionListener(popup.getMouseMotionListener());
-
-        // Mark the button as not closing the popup, we handle this ourselves.
-        arrowButton.putClientProperty(BasicLookAndFeel.DONT_CANCEL_POPUP,
-                                      Boolean.TRUE);
-      }
-  }
-
-  /**
-   * Unconfigures the arrow button.
-   *
-   * @see #configureArrowButton()
-   *
-   * @specnote The specification says this method is implementation specific
-   *           and should not be used or overridden.
-   */
-  public void unconfigureArrowButton()
-  {
-    if (arrowButton != null)
-      {
-        if (popupMouseListener != null)
-          arrowButton.removeMouseListener(popupMouseListener);
-        if (popupMouseMotionListener != null)
-          arrowButton.removeMouseMotionListener(popupMouseMotionListener);
-      }
-  }
-
-  /**
-   * Creates an arrow button for this {@link JComboBox}.  The arrow button is
-   * displayed at the right end of the combo box and is used to display/hide
-   * the drop down list of items.
-   *
-   * @return A new button.
-   */
-  protected JButton createArrowButton()
-  {
-    return new BasicArrowButton(BasicArrowButton.SOUTH);
-  }
-
-  /**
-   * Returns <code>true</code> if the popup is visible, and <code>false</code>
-   * otherwise.
-   *
-   * @param c The JComboBox to check
-   *
-   * @return <code>true</code> if popup part of the JComboBox is visible and
-   *         <code>false</code> otherwise.
-   */
-  public boolean isPopupVisible(JComboBox c)
-  {
-    return popup.isVisible();
-  }
-
-  /**
-   * Displays/hides the {@link JComboBox}'s list of items on the screen.
-   *
-   * @param c The combo box, for which list of items should be
-   *        displayed/hidden
-   * @param v true if show popup part of the jcomboBox and false to hide.
-   */
-  public void setPopupVisible(JComboBox c, boolean v)
-  {
-    if (v)
-      popup.show();
-    else
-      popup.hide();
-  }
-
-  /**
-   * JComboBox is focus traversable if it is editable and not otherwise.
-   *
-   * @param c combo box for which to check whether it is focus traversable
-   *
-   * @return true if focus tranversable and false otherwise
-   */
-  public boolean isFocusTraversable(JComboBox c)
-  {
-    if (!comboBox.isEditable())
-      return true;
-
-    return false;
-  }
-
-  /**
-   * Paints given menu item using specified graphics context
-   *
-   * @param g The graphics context used to paint this combo box
-   * @param c comboBox which needs to be painted.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    hasFocus = comboBox.hasFocus();
-    if (! comboBox.isEditable())
-      {
-        Rectangle rect = rectangleForCurrentValue();
-        paintCurrentValueBackground(g, rect, hasFocus);
-        paintCurrentValue(g, rect, hasFocus);
-      }
-  }
-
-  /**
-   * Returns preferred size for the combo box.
-   *
-   * @param c comboBox for which to get preferred size
-   *
-   * @return The preferred size for the given combo box
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    return getMinimumSize(c);
-  }
-
-  /**
-   * Returns the minimum size for this {@link JComboBox} for this
-   * look and feel. Also makes sure cachedMinimimSize is setup correctly.
-   *
-   * @param c The {@link JComponent} to find the minimum size for.
-   *
-   * @return The dimensions of the minimum size.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    if (isMinimumSizeDirty)
-      {
-        Insets i = getInsets();
-        Dimension d = getDisplaySize();
-        d.width += i.left + i.right + d.height;
-        cachedMinimumSize = new Dimension(d.width, d.height + i.top + i.bottom);
-        isMinimumSizeDirty = false;
-      }
-    return new Dimension(cachedMinimumSize);
-  }
-
-  /**
-   * Returns the maximum size for this {@link JComboBox} for this
-   * look and feel.
-   *
-   * @param c The {@link JComponent} to find the maximum size for
-   *
-   * @return The maximum size (<code>Dimension(32767, 32767)</code>).
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return new Dimension(32767, 32767);
-  }
-
-  /**
-   * Returns the number of accessible children of the combobox.
-   *
-   * @param c the component (combobox) to check, ignored
-   *
-   * @return the number of accessible children of the combobox
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int count = 1;
-    if (comboBox.isEditable())
-      count = 2;
-    return count;
-  }
-
-  /**
-   * Returns the accessible child with the specified index.
-   *
-   * @param c the component, this is ignored
-   * @param i the index of the accessible child to return
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible child = null;
-    switch (i)
-    {
-      case 0: // The popup.
-        if (popup instanceof Accessible)
-          {
-            AccessibleContext ctx = ((Accessible) popup).getAccessibleContext();
-            ctx.setAccessibleParent(comboBox);
-            child = (Accessible) popup;
-          }
-        break;
-      case 1: // The editor, if any.
-        if (comboBox.isEditable() && editor instanceof Accessible)
-          {
-            AccessibleContext ctx =
-              ((Accessible) editor).getAccessibleContext();
-            ctx.setAccessibleParent(comboBox);
-            child = (Accessible) editor;
-          }
-        break;
-    }
-    return child;
-  }
-
-  /**
-   * Returns true if the specified key is a navigation key and false otherwise
-   *
-   * @param keyCode a key for which to check whether it is navigation key or
-   *        not.
-   *
-   * @return true if the specified key is a navigation key and false otherwis
-   */
-  protected boolean isNavigationKey(int keyCode)
-  {
-    return keyCode == KeyEvent.VK_UP || keyCode == KeyEvent.VK_DOWN
-           || keyCode == KeyEvent.VK_LEFT || keyCode == KeyEvent.VK_RIGHT
-           || keyCode == KeyEvent.VK_ENTER || keyCode == KeyEvent.VK_ESCAPE
-           || keyCode == KeyEvent.VK_TAB;
-  }
-
-  /**
-   * Selects next possible item relative to the current selection
-   * to be next selected item in the combo box.
-   */
-  protected void selectNextPossibleValue()
-  {
-    int index = comboBox.getSelectedIndex();
-    if (index != comboBox.getItemCount() - 1)
-      comboBox.setSelectedIndex(index + 1);
-  }
-
-  /**
-   * Selects previous item relative to current selection to be
-   * next selected item.
-   */
-  protected void selectPreviousPossibleValue()
-  {
-    int index = comboBox.getSelectedIndex();
-    if (index > 0)
-      comboBox.setSelectedIndex(index - 1);
-  }
-
-  /**
-   * Displays combo box popup if the popup is not currently shown
-   * on the screen and hides it if it is currently shown
-   */
-  protected void toggleOpenClose()
-  {
-    setPopupVisible(comboBox, ! isPopupVisible(comboBox));
-  }
-
-  /**
-   * Returns the bounds in which comboBox's selected item will be
-   * displayed.
-   *
-   * @return rectangle bounds in which comboBox's selected Item will be
-   *         displayed
-   */
-  protected Rectangle rectangleForCurrentValue()
-  {
-    int w = comboBox.getWidth();
-    int h = comboBox.getHeight();
-    Insets i = comboBox.getInsets();
-    int arrowSize = h - (i.top + i.bottom);
-    if (arrowButton != null)
-      arrowSize = arrowButton.getWidth();
-    return new Rectangle(i.left, i.top, w - (i.left + i.right + arrowSize),
-                         h - (i.top + i.left));
-  }
-
-  /**
-   * Returns the insets of the current border.
-   *
-   * @return Insets representing space between combo box and its border
-   */
-  protected Insets getInsets()
-  {
-    return comboBox.getInsets();
-  }
-
-  /**
-   * Paints currently selected value in the main part of the combo
-   * box (part without popup).
-   *
-   * @param g graphics context
-   * @param bounds Rectangle representing the size of the area in which
-   *        selected item should be drawn
-   * @param hasFocus true if combo box has focus and false otherwise
-   */
-  public void paintCurrentValue(Graphics g, Rectangle bounds, boolean hasFocus)
-  {
-    /* Gets the component to be drawn for the current value.
-     * If there is currently no selected item we will take an empty
-     * String as replacement.
-     */
-    ListCellRenderer renderer = comboBox.getRenderer();
-    if (comboBox.getSelectedIndex() != -1)
-      {
-        Component comp;
-        if (hasFocus && ! isPopupVisible(comboBox))
-          {
-            comp = renderer.getListCellRendererComponent(listBox,
-                comboBox.getSelectedItem(), -1, true, false);
-          }
-        else
-          {
-            comp = renderer.getListCellRendererComponent(listBox,
-                comboBox.getSelectedItem(), -1, false, false);
-            Color bg = UIManager.getColor("ComboBox.disabledForeground");
-            comp.setBackground(bg);
-          }
-        comp.setFont(comboBox.getFont());
-        if (hasFocus && ! isPopupVisible(comboBox))
-          {
-            comp.setForeground(listBox.getSelectionForeground());
-            comp.setBackground(listBox.getSelectionBackground());
-          }
-        else if (comboBox.isEnabled())
-          {
-            comp.setForeground(comboBox.getForeground());
-            comp.setBackground(comboBox.getBackground());
-          }
-        else
-          {
-            Color fg = UIManager.getColor("ComboBox.disabledForeground");
-            comp.setForeground(fg);
-            Color bg = UIManager.getColor("ComboBox.disabledBackground");
-            comp.setBackground(bg);
-          }
-        currentValuePane.paintComponent(g, comp, comboBox, bounds.x, bounds.y,
-                                        bounds.width, bounds.height);
-      }
-  }
-
-  /**
-   * Paints the background of part of the combo box, where currently
-   * selected value is displayed. If the combo box has focus this method
-   * should also paint focus rectangle around the combo box.
-   *
-   * @param g graphics context
-   * @param bounds Rectangle representing the size of the largest item  in the
-   *        comboBox
-   * @param hasFocus true if combo box has fox and false otherwise
-   */
-  public void paintCurrentValueBackground(Graphics g, Rectangle bounds,
-                                          boolean hasFocus)
-  {
-    Color saved = g.getColor();
-    if (comboBox.isEnabled())
-      g.setColor(UIManager.getColor("UIManager.background"));
-    else
-      g.setColor(UIManager.getColor("UIManager.disabledBackground"));
-    g.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);
-    g.setColor(saved);
-  }
-
-  private static final ListCellRenderer DEFAULT_RENDERER
-    = new DefaultListCellRenderer();
-
-  /**
-   * Returns the default size for the display area of a combo box that does
-   * not contain any elements.  This method returns the width and height of
-   * a single space in the current font, plus a margin of 1 pixel.
-   *
-   * @return The default display size.
-   *
-   * @see #getDisplaySize()
-   */
-  protected Dimension getDefaultSize()
-  {
-    Component comp = DEFAULT_RENDERER.getListCellRendererComponent(listBox,
-        " ", -1, false, false);
-    currentValuePane.add(comp);
-    comp.setFont(comboBox.getFont());
-    Dimension d = comp.getPreferredSize();
-    currentValuePane.remove(comp);
-    return d;
-  }
-
-  /**
-   * Returns the size of the display area for the combo box. This size will be
-   * the size of the combo box, not including the arrowButton.
-   *
-   * @return The size of the display area for the combo box.
-   */
-  protected Dimension getDisplaySize()
-  {
-    Dimension dim = new Dimension();
-    ListCellRenderer renderer = comboBox.getRenderer();
-    if (renderer == null)
-      {
-        renderer = DEFAULT_RENDERER;
-      }
-
-    Object prototype = comboBox.getPrototypeDisplayValue();
-    if (prototype != null)
-      {
-        Component comp = renderer.getListCellRendererComponent(listBox,
-            prototype, -1, false, false);
-        currentValuePane.add(comp);
-        comp.setFont(comboBox.getFont());
-        Dimension renderSize = comp.getPreferredSize();
-        currentValuePane.remove(comp);
-        dim.height = renderSize.height;
-        dim.width = renderSize.width;
-      }
-    else
-      {
-        ComboBoxModel model = comboBox.getModel();
-        int size = model.getSize();
-        if (size > 0)
-          {
-            for (int i = 0; i < size; ++i)
-              {
-                Component comp = renderer.getListCellRendererComponent(listBox,
-                    model.getElementAt(i), -1, false, false);
-                currentValuePane.add(comp);
-                comp.setFont(comboBox.getFont());
-                Dimension renderSize = comp.getPreferredSize();
-                currentValuePane.remove(comp);
-                dim.width = Math.max(dim.width, renderSize.width);
-                dim.height = Math.max(dim.height, renderSize.height);
-              }
-          }
-        else
-          {
-            dim = getDefaultSize();
-            if (comboBox.isEditable())
-              dim.width = 100;
-          }
-      }
-    if (comboBox.isEditable())
-      {
-        Dimension editSize = editor.getPreferredSize();
-        dim.width = Math.max(dim.width, editSize.width);
-        dim.height = Math.max(dim.height, editSize.height);
-      }
-    displaySize.setSize(dim.width, dim.height);
-    return dim;
-  }
-
-  /**
-   * Installs the keyboard actions for the {@link JComboBox} as specified
-   * by the look and feel.
-   */
-  protected void installKeyboardActions()
-  {
-    SwingUtilities.replaceUIInputMap(comboBox,
-        JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT,
-        (InputMap) UIManager.get("ComboBox.ancestorInputMap"));
-    // Install any action maps here.
-  }
-
-  /**
-   * Uninstalls the keyboard actions for the {@link JComboBox} there were
-   * installed by in {@link #installListeners}.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    SwingUtilities.replaceUIInputMap(comboBox,
-        JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, null);
-    // Uninstall any action maps here.
-  }
-
-  /**
-   * A {@link LayoutManager} used to position the sub-components of the
-   * {@link JComboBox}.
-   *
-   * @see BasicComboBoxUI#createLayoutManager()
-   */
-  public class ComboBoxLayoutManager implements LayoutManager
-  {
-    /**
-     * Creates a new ComboBoxLayoutManager object.
-     */
-    public ComboBoxLayoutManager()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Adds a component to the layout.  This method does nothing, since the
-     * layout manager doesn't need to track the components.
-     *
-     * @param name  the name to associate the component with (ignored).
-     * @param comp  the component (ignored).
-     */
-    public void addLayoutComponent(String name, Component comp)
-    {
-      // Do nothing
-    }
-
-    /**
-     * Removes a component from the layout.  This method does nothing, since
-     * the layout manager doesn't need to track the components.
-     *
-     * @param comp  the component.
-     */
-    public void removeLayoutComponent(Component comp)
-    {
-      // Do nothing
-    }
-
-    /**
-     * Returns preferred layout size of the JComboBox.
-     *
-     * @param parent  the Container for which the preferred size should be
-     *                calculated.
-     *
-     * @return The preferred size for the given container
-     */
-    public Dimension preferredLayoutSize(Container parent)
-    {
-      return parent.getPreferredSize();
-    }
-
-    /**
-     * Returns the minimum layout size.
-     *
-     * @param parent  the container.
-     *
-     * @return The minimum size.
-     */
-    public Dimension minimumLayoutSize(Container parent)
-    {
-      return parent.getMinimumSize();
-    }
-
-    /**
-     * Arranges the components in the container.  It puts arrow
-     * button right end part of the comboBox. If the comboBox is editable
-     * then editor is placed to the left of arrow  button, starting from the
-     * beginning.
-     *
-     * @param parent Container that should be layed out.
-     */
-    public void layoutContainer(Container parent)
-    {
-      // Position editor component to the left of arrow button if combo box is
-      // editable
-      Insets i = getInsets();
-      int arrowSize = comboBox.getHeight() - (i.top + i.bottom);
-
-      if (arrowButton != null)
-        arrowButton.setBounds(comboBox.getWidth() - (i.right + arrowSize),
-                              i.top, arrowSize, arrowSize);
-      if (editor != null)
-        editor.setBounds(rectangleForCurrentValue());
-    }
-  }
-
-  /**
-   * Handles focus changes occuring in the combo box. This class is
-   * responsible for repainting combo box whenever focus is gained or lost
-   * and also for hiding popup list of items whenever combo box loses its
-   * focus.
-   */
-  public class FocusHandler extends Object implements FocusListener
-  {
-    /**
-     * Creates a new FocusHandler object.
-     */
-    public FocusHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked when combo box gains focus. It repaints main
-     * part of combo box accordingly.
-     *
-     * @param e the FocusEvent
-     */
-    public void focusGained(FocusEvent e)
-    {
-      hasFocus = true;
-      comboBox.repaint();
-    }
-
-    /**
-     * Invoked when the combo box loses focus.  It repaints the main part
-     * of the combo box accordingly and hides the popup list of items.
-     *
-     * @param e the FocusEvent
-     */
-    public void focusLost(FocusEvent e)
-    {
-      hasFocus = false;
-      if (! e.isTemporary() && comboBox.isLightWeightPopupEnabled())
-        setPopupVisible(comboBox, false);
-      comboBox.repaint();
-    }
-  }
-
-  /**
-   * Handles {@link ItemEvent}s fired by the {@link JComboBox} when its
-   * selected item changes.
-   */
-  public class ItemHandler extends Object implements ItemListener
-  {
-    /**
-     * Creates a new ItemHandler object.
-     */
-    public ItemHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked when selected item becomes deselected or when
-     * new item becomes selected.
-     *
-     * @param e the ItemEvent representing item's state change.
-     */
-    public void itemStateChanged(ItemEvent e)
-    {
-      ComboBoxModel model = comboBox.getModel();
-      Object v = model.getSelectedItem();
-      if (editor != null)
-        comboBox.configureEditor(comboBox.getEditor(), v);
-      comboBox.repaint();
-    }
-  }
-
-  /**
-   * KeyHandler handles key events occuring while JComboBox has focus.
-   */
-  public class KeyHandler extends KeyAdapter
-  {
-    public KeyHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked whenever key is pressed while JComboBox is in focus.
-     */
-    public void keyPressed(KeyEvent e)
-    {
-      if (comboBox.getModel().getSize() != 0 && comboBox.isEnabled())
-        {
-          if (! isNavigationKey(e.getKeyCode()))
-            {
-              if (! comboBox.isEditable())
-                if (comboBox.selectWithKeyChar(e.getKeyChar()))
-                  e.consume();
-            }
-          else
-            {
-              if (e.getKeyCode() == KeyEvent.VK_UP && comboBox.isPopupVisible())
-                selectPreviousPossibleValue();
-              else if (e.getKeyCode() == KeyEvent.VK_DOWN)
-                {
-                  if (comboBox.isPopupVisible())
-                    selectNextPossibleValue();
-                  else
-                    comboBox.showPopup();
-                }
-              else if (e.getKeyCode() == KeyEvent.VK_ENTER
-                       || e.getKeyCode() == KeyEvent.VK_ESCAPE)
-                popup.hide();
-            }
-        }
-    }
-  }
-
-  /**
-   * Handles the changes occurring in the JComboBox's data model.
-   */
-  public class ListDataHandler extends Object implements ListDataListener
-  {
-    /**
-     * Creates a new ListDataHandler object.
-     */
-    public ListDataHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked if the content's of JComboBox's data model are changed.
-     *
-     * @param e ListDataEvent describing the change.
-     */
-    public void contentsChanged(ListDataEvent e)
-    {
-      if (e.getIndex0() != -1 || e.getIndex1() != -1)
-        {
-          isMinimumSizeDirty = true;
-          comboBox.revalidate();
-        }
-      if (editor != null)
-        comboBox.configureEditor(comboBox.getEditor(),
-            comboBox.getSelectedItem());
-      comboBox.repaint();
-    }
-
-    /**
-     * Invoked when items are added to the JComboBox's data model.
-     *
-     * @param e ListDataEvent describing the change.
-     */
-    public void intervalAdded(ListDataEvent e)
-    {
-      int start = e.getIndex0();
-      int end = e.getIndex1();
-      if (start == 0 && comboBox.getItemCount() - (end - start + 1) == 0)
-        contentsChanged(e);
-      else if (start != -1  || end != -1)
-        {
-          ListCellRenderer renderer = comboBox.getRenderer();
-          ComboBoxModel model = comboBox.getModel();
-          int w = displaySize.width;
-          int h = displaySize.height;
-          // TODO: Optimize using prototype here.
-          for (int i = start; i <= end; ++i)
-            {
-              Component comp = renderer.getListCellRendererComponent(listBox,
-                  model.getElementAt(i), -1, false, false);
-              currentValuePane.add(comp);
-              comp.setFont(comboBox.getFont());
-              Dimension dim = comp.getPreferredSize();
-              w = Math.max(w, dim.width);
-              h = Math.max(h, dim.height);
-              currentValuePane.remove(comp);
-            }
-          if (displaySize.width < w || displaySize.height < h)
-            {
-              if (displaySize.width < w)
-                displaySize.width = w;
-              if (displaySize.height < h)
-                displaySize.height = h;
-              comboBox.revalidate();
-              if (editor != null)
-                {
-                  comboBox.configureEditor(comboBox.getEditor(),
-                                           comboBox.getSelectedItem());
-                }
-            }
-        }
-
-    }
-
-    /**
-     * Invoked when items are removed from the JComboBox's
-     * data model.
-     *
-     * @param e ListDataEvent describing the change.
-     */
-    public void intervalRemoved(ListDataEvent e)
-    {
-      contentsChanged(e);
-    }
-  }
-
-  /**
-   * Handles {@link PropertyChangeEvent}s fired by the {@link JComboBox}.
-   */
-  public class PropertyChangeHandler extends Object
-    implements PropertyChangeListener
-  {
-    /**
-     * Creates a new instance.
-     */
-    public PropertyChangeHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked whenever bound property of JComboBox changes.
-     *
-     * @param e  the event.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      // Lets assume every change invalidates the minimumsize.
-      String propName = e.getPropertyName();
-      if (propName.equals("enabled"))
-        {
-          boolean enabled = comboBox.isEnabled();
-          if (editor != null)
-            editor.setEnabled(enabled);
-          if (arrowButton != null)
-            arrowButton.setEnabled(enabled);
-
-          comboBox.repaint();
-        }
-      else if (propName.equals("editor") && comboBox.isEditable())
-        {
-          addEditor();
-          comboBox.revalidate();
-        }
-      else if (e.getPropertyName().equals("editable"))
-        {
-          if (comboBox.isEditable())
-            {
-              addEditor();
-            }
-          else
-            {
-              removeEditor();
-            }
-
-          comboBox.revalidate();
-        }
-      else if (propName.equals("model"))
-        {
-          // remove ListDataListener from old model and add it to new model
-          ComboBoxModel oldModel = (ComboBoxModel) e.getOldValue();
-          if (oldModel != null && listDataListener != null)
-            oldModel.removeListDataListener(listDataListener);
-
-          ComboBoxModel newModel = (ComboBoxModel) e.getNewValue();
-          if (newModel != null && listDataListener != null)
-            comboBox.getModel().addListDataListener(listDataListener);
-
-          if (editor != null)
-            {
-              comboBox.configureEditor(comboBox.getEditor(),
-                                       comboBox.getSelectedItem());
-            }
-          isMinimumSizeDirty = true;
-          comboBox.revalidate();
-          comboBox.repaint();
-        }
-      else if (propName.equals("font"))
-        {
-          Font font = (Font) e.getNewValue();
-          if (editor != null)
-            {
-              editor.setFont(font);
-            }
-          listBox.setFont(font);
-          isMinimumSizeDirty = true;
-          comboBox.revalidate();
-        }
-      else if (propName.equals("prototypeDisplayValue"))
-        {
-          isMinimumSizeDirty = true;
-          comboBox.revalidate();
-        }
-      else if (propName.equals("renderer"))
-        {
-          isMinimumSizeDirty = true;
-          comboBox.revalidate();
-        }
-      // FIXME: Need to handle changes in other bound properties.
-    }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicComboPopup.java b/libjava/classpath/javax/swing/plaf/basic/BasicComboPopup.java
deleted file mode 100644
index 3e54ca7..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicComboPopup.java
+++ /dev/null
@@ -1,1104 +0,0 @@
-/* BasicComboPopup.java --
-   Copyright (C) 2004, 2005  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Insets;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.awt.event.KeyAdapter;
-import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionAdapter;
-import java.awt.event.MouseMotionListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.BorderFactory;
-import javax.swing.ComboBoxModel;
-import javax.swing.JComboBox;
-import javax.swing.JList;
-import javax.swing.JPopupMenu;
-import javax.swing.JScrollBar;
-import javax.swing.JScrollPane;
-import javax.swing.ListCellRenderer;
-import javax.swing.ListSelectionModel;
-import javax.swing.MenuSelectionManager;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.Timer;
-import javax.swing.UIManager;
-import javax.swing.event.ListDataEvent;
-import javax.swing.event.ListDataListener;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.event.PopupMenuEvent;
-import javax.swing.event.PopupMenuListener;
-
-/**
- * UI Delegate for ComboPopup
- *
- * @author Olga Rodimina
- */
-public class BasicComboPopup extends JPopupMenu implements ComboPopup
-{
-  /* Timer for autoscrolling */
-  protected Timer autoscrollTimer;
-
-  /** ComboBox associated with this popup */
-  protected JComboBox comboBox;
-
-  /** FIXME: Need to document */
-  protected boolean hasEntered;
-
-  /**
-   * Indicates whether the scroll bar located in popup menu with comboBox's
-   * list of items is currently autoscrolling. This happens when mouse event
-   * originated in the combo box and is dragged outside of its bounds
-   */
-  protected boolean isAutoScrolling;
-
-  /** ItemListener listening to the selection changes in the combo box */
-  protected ItemListener itemListener;
-
-  /** This listener is not used */
-  protected KeyListener keyListener;
-
-  /** JList which is used to display item is the combo box */
-  protected JList list;
-
-  /** This listener is not used */
-  protected ListDataListener listDataListener;
-
-  /**
-   * MouseListener listening to mouse events occuring in the  combo box's
-   * list.
-   */
-  protected MouseListener listMouseListener;
-
-  /**
-   * MouseMotionListener listening to mouse motion events occuring  in the
-   * combo box's list
-   */
-  protected MouseMotionListener listMouseMotionListener;
-
-  /** This listener is not used */
-  protected ListSelectionListener listSelectionListener;
-
-  /** MouseListener listening to mouse events occuring in the combo box */
-  protected MouseListener mouseListener;
-
-  /**
-   * MouseMotionListener listening to mouse motion events occuring in the
-   * combo box
-   */
-  protected MouseMotionListener mouseMotionListener;
-
-  /**
-   * PropertyChangeListener listening to changes occuring in the bound
-   * properties of the combo box
-   */
-  protected PropertyChangeListener propertyChangeListener;
-
-  /** direction for scrolling down list of combo box's items */
-  protected static final int SCROLL_DOWN = 1;
-
-  /** direction for scrolling up list of combo box's items */
-  protected static final int SCROLL_UP = 0;
-
-  /** Indicates auto scrolling direction */
-  protected int scrollDirection;
-
-  /** JScrollPane that contains list portion of the combo box */
-  protected JScrollPane scroller;
-
-  /** This field is not used */
-  protected boolean valueIsAdjusting;
-
-  /**
-   * Creates a new BasicComboPopup object.
-   *
-   * @param comboBox the combo box with which this popup should be associated
-   */
-  public BasicComboPopup(JComboBox comboBox)
-  {
-    this.comboBox = comboBox;
-    mouseListener = createMouseListener();
-    mouseMotionListener = createMouseMotionListener();
-    keyListener = createKeyListener();
-
-    list = createList();
-    configureList();
-    scroller = createScroller();
-    configureScroller();
-    configurePopup();
-    installComboBoxListeners();
-    installKeyboardActions();
-  }
-
-  /**
-   * This method displays drow down list of combo box items on the screen.
-   */
-  public void show()
-  {
-    Dimension size = comboBox.getSize();
-    size.height = getPopupHeightForRowCount(comboBox.getMaximumRowCount());
-    Insets i = getInsets();
-    size.width -= i.left + i.right;
-    Rectangle bounds = computePopupBounds(0, comboBox.getBounds().height,
-                                          size.width, size.height);
-
-    scroller.setMaximumSize(bounds.getSize());
-    scroller.setPreferredSize(bounds.getSize());
-    scroller.setMinimumSize(bounds.getSize());
-    list.invalidate();
-
-    syncListSelection();
-
-    list.ensureIndexIsVisible(list.getSelectedIndex());
-    setLightWeightPopupEnabled(comboBox.isLightWeightPopupEnabled());
-    show(comboBox, bounds.x, bounds.y);
-  }
-
-  /**
-   * This method hides drop down list of items
-   */
-  public void hide()
-  {
-    MenuSelectionManager menuSelectionManager =
-      MenuSelectionManager.defaultManager();
-    javax.swing.MenuElement[] menuElements =
-      menuSelectionManager.getSelectedPath();
-    for (int i = 0; i < menuElements.length; i++)
-      {
-        if (menuElements[i] == this)
-          {
-            menuSelectionManager.clearSelectedPath();
-            break;
-          }
-      }
-    comboBox.repaint();
-  }
-
-  /**
-   * Return list cointaining JComboBox's items
-   *
-   * @return list cointaining JComboBox's items
-   */
-  public JList getList()
-  {
-    return list;
-  }
-
-  /**
-   * Returns MouseListener that is listening to mouse events occuring in the
-   * combo box.
-   *
-   * @return MouseListener
-   */
-  public MouseListener getMouseListener()
-  {
-    return mouseListener;
-  }
-
-  /**
-   * Returns MouseMotionListener that is listening to mouse  motion events
-   * occuring in the combo box.
-   *
-   * @return MouseMotionListener
-   */
-  public MouseMotionListener getMouseMotionListener()
-  {
-    return mouseMotionListener;
-  }
-
-  /**
-   * Returns KeyListener listening to key events occuring in the combo box.
-   * This method returns null because KeyHandler is not longer used.
-   *
-   * @return KeyListener
-   */
-  public KeyListener getKeyListener()
-  {
-    return keyListener;
-  }
-
-  /**
-   * This method uninstalls the UI for the  given JComponent.
-   */
-  public void uninstallingUI()
-  {
-    if (propertyChangeListener != null)
-      {
-        comboBox.removePropertyChangeListener(propertyChangeListener);
-      }
-    if (itemListener != null)
-      {
-        comboBox.removeItemListener(itemListener);
-      }
-    uninstallComboBoxModelListeners(comboBox.getModel());
-    uninstallKeyboardActions();
-    uninstallListListeners();
-  }
-
-  /**
-   * This method uninstalls listeners that were listening to changes occuring
-   * in the comb box's data model
-   *
-   * @param model data model for the combo box from which to uninstall
-   *        listeners
-   */
-  protected void uninstallComboBoxModelListeners(ComboBoxModel model)
-  {
-    model.removeListDataListener(listDataListener);
-  }
-
-  /**
-   * This method uninstalls keyboard actions installed by the UI.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * This method fires PopupMenuEvent indicating that combo box's popup list
-   * of items will become visible
-   */
-  protected void firePopupMenuWillBecomeVisible()
-  {
-    PopupMenuListener[] ll = comboBox.getPopupMenuListeners();
-
-    for (int i = 0; i < ll.length; i++)
-      ll[i].popupMenuWillBecomeVisible(new PopupMenuEvent(comboBox));
-  }
-
-  /**
-   * This method fires PopupMenuEvent indicating that combo box's popup list
-   * of items will become invisible.
-   */
-  protected void firePopupMenuWillBecomeInvisible()
-  {
-    PopupMenuListener[] ll = comboBox.getPopupMenuListeners();
-
-    for (int i = 0; i < ll.length; i++)
-      ll[i].popupMenuWillBecomeInvisible(new PopupMenuEvent(comboBox));
-  }
-
-  /**
-   * This method fires PopupMenuEvent indicating that combo box's popup list
-   * of items was closed without selection.
-   */
-  protected void firePopupMenuCanceled()
-  {
-    PopupMenuListener[] ll = comboBox.getPopupMenuListeners();
-
-    for (int i = 0; i < ll.length; i++)
-      ll[i].popupMenuCanceled(new PopupMenuEvent(comboBox));
-  }
-
-  /**
-   * Creates MouseListener to listen to mouse events occuring in the combo
-   * box. Note that this listener doesn't listen to mouse events occuring in
-   * the popup portion of the combo box, it only listens to main combo box
-   * part.
-   *
-   * @return new MouseMotionListener that listens to mouse events occuring in
-   *         the combo box
-   */
-  protected MouseListener createMouseListener()
-  {
-    return new InvocationMouseHandler();
-  }
-
-  /**
-   * Create Mouse listener that listens to mouse dragging events occuring in
-   * the combo box. This listener is responsible for changing the selection
-   * in the combo box list to the component over which mouse is being
-   * currently dragged
-   *
-   * @return new MouseMotionListener that listens to mouse dragging events
-   *         occuring in the combo box
-   */
-  protected MouseMotionListener createMouseMotionListener()
-  {
-    return new InvocationMouseMotionHandler();
-  }
-
-  /**
-   * KeyListener created in this method is not used anymore.
-   *
-   * @return KeyListener that does nothing
-   */
-  protected KeyListener createKeyListener()
-  {
-    return new InvocationKeyHandler();
-  }
-
-  /**
-   * ListSelectionListener created in this method is not used anymore
-   *
-   * @return ListSelectionListener that does nothing
-   */
-  protected ListSelectionListener createListSelectionListener()
-  {
-    return new ListSelectionHandler();
-  }
-
-  /**
-   * Creates ListDataListener. This method returns null, because
-   * ListDataHandler class is obsolete and is no longer used.
-   *
-   * @return null
-   */
-  protected ListDataListener createListDataListener()
-  {
-    return null;
-  }
-
-  /**
-   * This method creates ListMouseListener to listen to mouse events occuring
-   * in the combo box's item list.
-   *
-   * @return MouseListener to listen to mouse events occuring in the combo
-   *         box's items list.
-   */
-  protected MouseListener createListMouseListener()
-  {
-    return new ListMouseHandler();
-  }
-
-  /**
-   * Creates ListMouseMotionlistener to listen to mouse motion events occuring
-   * in the combo box's list. This listener is responsible for highlighting
-   * items in the list when mouse is moved over them.
-   *
-   * @return MouseMotionListener that handles mouse motion events occuring in
-   *         the list of the combo box.
-   */
-  protected MouseMotionListener createListMouseMotionListener()
-  {
-    return new ListMouseMotionHandler();
-  }
-
-  /**
-   * Creates PropertyChangeListener to handle changes in the JComboBox's bound
-   * properties.
-   *
-   * @return PropertyChangeListener to handle changes in the JComboBox's bound
-   *         properties.
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new PropertyChangeHandler();
-  }
-
-  /**
-   * Creates new ItemListener that will listen to ItemEvents occuring in the
-   * combo box.
-   *
-   * @return ItemListener to listen to ItemEvents occuring in the combo box.
-   */
-  protected ItemListener createItemListener()
-  {
-    return new ItemHandler();
-  }
-
-  /**
-   * Creates JList that will be used to display items in the combo box.
-   *
-   * @return JList that will be used to display items in the combo box.
-   */
-  protected JList createList()
-  {
-    JList l = new JList(comboBox.getModel());
-    return l;
-  }
-
-  /**
-   * This method configures the list of comboBox's items by setting  default
-   * properties and installing listeners.
-   */
-  protected void configureList()
-  {
-    list.setFont(comboBox.getFont());
-    list.setForeground(comboBox.getForeground());
-    list.setBackground(comboBox.getBackground());
-    Color sfg = UIManager.getColor("ComboBox.selectionForeground");
-    list.setSelectionForeground(sfg);
-    Color sbg = UIManager.getColor("ComboBox.selectionBackground");
-    list.setSelectionBackground(sbg);
-    list.setBorder(null);
-    list.setCellRenderer(comboBox.getRenderer());
-    list.setFocusable(false);
-    list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
-    installListListeners();
-  }
-
-  /**
-   * This method installs list listeners.
-   */
-  protected void installListListeners()
-  {
-    // mouse listener listening to mouse events occuring in the
-    // combo box's list of items.
-    listMouseListener = createListMouseListener();
-    list.addMouseListener(listMouseListener);
-
-    // mouse listener listening to mouse motion events occuring in the
-    // combo box's list of items
-    listMouseMotionListener = createListMouseMotionListener();
-    list.addMouseMotionListener(listMouseMotionListener);
-
-    listSelectionListener = createListSelectionListener();
-    list.addListSelectionListener(listSelectionListener);
-  }
-
-  /**
-   * This method creates scroll pane that will contain the list of comboBox's
-   * items inside of it.
-   *
-   * @return JScrollPane
-   */
-  protected JScrollPane createScroller()
-  {
-    return new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
-                           JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
-  }
-
-  /**
-   * This method configures scroll pane to contain list of comboBox's  items
-   */
-  protected void configureScroller()
-  {
-    scroller.setBorder(null);
-    scroller.setFocusable(false);
-    scroller.getVerticalScrollBar().setFocusable(false);
-  }
-
-  /**
-   * This method configures popup menu that will be used to display Scrollpane
-   * with list of items inside of it.
-   */
-  protected void configurePopup()
-  {
-    setBorderPainted(true);
-    setBorder(BorderFactory.createLineBorder(Color.BLACK));
-    setOpaque(false);
-    add(scroller);
-    setFocusable(false);
-  }
-
-  /*
-   * This method installs listeners that will listen to changes occuring
-   * in the combo box.
-   */
-  protected void installComboBoxListeners()
-  {
-    // item listener listenening to selection events in the combo box
-    itemListener = createItemListener();
-    comboBox.addItemListener(itemListener);
-
-    propertyChangeListener = createPropertyChangeListener();
-    comboBox.addPropertyChangeListener(propertyChangeListener);
-
-    installComboBoxModelListeners(comboBox.getModel());
-  }
-
-  /**
-   * This method installs listeners that will listen to changes occuring in
-   * the comb box's data model
-   *
-   * @param model data model for the combo box for which to install listeners
-   */
-  protected void installComboBoxModelListeners(ComboBoxModel model)
-  {
-    // list data listener to listen for ListDataEvents in combo box.
-    // This listener is now obsolete and nothing is done here
-    listDataListener = createListDataListener();
-    comboBox.getModel().addListDataListener(listDataListener);
-  }
-
-  /**
-   * Installs the keyboard actions.
-   */
-  protected void installKeyboardActions()
-  {
-    // Nothing to do here
-  }
-
-  /**
-   * This method always returns false to indicate that  items in the combo box
-   * list are not focus traversable.
-   *
-   * @return false
-   */
-  public boolean isFocusTraversable()
-  {
-    return false;
-  }
-
-  /**
-   * This method start scrolling combo box's list of items  either up or down
-   * depending on the specified 'direction'
-   *
-   * @param direction of the scrolling.
-   */
-  protected void startAutoScrolling(int direction)
-  {
-    // FIXME: add timer
-    isAutoScrolling = true;
-
-    if (direction == SCROLL_UP)
-      autoScrollUp();
-    else
-      autoScrollDown();
-  }
-
-  /**
-   * This method stops scrolling the combo box's list of items
-   */
-  protected void stopAutoScrolling()
-  {
-    // FIXME: add timer
-    isAutoScrolling = false;
-  }
-
-  /**
-   * This method scrolls up list of combo box's items up and highlights that
-   * just became visible.
-   */
-  protected void autoScrollUp()
-  {
-    // scroll up the scroll bar to make the item above visible
-    JScrollBar scrollbar = scroller.getVerticalScrollBar();
-    int scrollToNext = list.getScrollableUnitIncrement(super.getBounds(),
-                                                       SwingConstants.VERTICAL,
-                                                       SCROLL_UP);
-
-    scrollbar.setValue(scrollbar.getValue() - scrollToNext);
-
-    // If we haven't reached the begging of the combo box's list of items,
-    // then highlight next element above currently highlighted element
-    if (list.getSelectedIndex() != 0)
-      list.setSelectedIndex(list.getSelectedIndex() - 1);
-  }
-
-  /**
-   * This method scrolls down list of combo box's and highlights item in the
-   * list that just became visible.
-   */
-  protected void autoScrollDown()
-  {
-    // scroll scrollbar down to make next item visible
-    JScrollBar scrollbar = scroller.getVerticalScrollBar();
-    int scrollToNext = list.getScrollableUnitIncrement(super.getBounds(),
-                                                       SwingConstants.VERTICAL,
-                                                       SCROLL_DOWN);
-    scrollbar.setValue(scrollbar.getValue() + scrollToNext);
-
-    // If we haven't reached the end of the combo box's list of items
-    // then highlight next element below currently highlighted element
-    if (list.getSelectedIndex() + 1 != comboBox.getItemCount())
-      list.setSelectedIndex(list.getSelectedIndex() + 1);
-  }
-
-  /**
-   * This method helps to delegate focus to the right component in the
-   * JComboBox. If the comboBox is editable then focus is sent to
-   * ComboBoxEditor, otherwise it is delegated to JComboBox.
-   *
-   * @param e MouseEvent
-   */
-  protected void delegateFocus(MouseEvent e)
-  {
-    if (comboBox.isEditable())
-      comboBox.getEditor().getEditorComponent().requestFocus();
-    else
-      comboBox.requestFocus();
-  }
-
-  /**
-   * This method displays combo box popup if the popup is  not currently shown
-   * on the screen and hides it if it is  currently visible
-   */
-  protected void togglePopup()
-  {
-    if (isVisible())
-      hide();
-    else
-      show();
-  }
-
-  /**
-   * DOCUMENT ME!
-   *
-   * @param e DOCUMENT ME!
-   *
-   * @return DOCUMENT ME!
-   */
-  protected MouseEvent convertMouseEvent(MouseEvent e)
-  {
-    Point point = SwingUtilities.convertPoint((Component) e.getSource(),
-                                              e.getPoint(), list);
-    MouseEvent newEvent = new MouseEvent((Component) e.getSource(),
-                                        e.getID(), e.getWhen(),
-                                        e.getModifiers(), point.x, point.y,
-                                        e.getModifiers(),
-                                        e.isPopupTrigger());
-    return newEvent;
-  }
-
-  /**
-   * Returns required height of the popup such that number of items visible in
-   * it are equal to the maximum row count.  By default
-   * comboBox.maximumRowCount=8
-   *
-   * @param maxRowCount number of maximum visible rows in the  combo box's
-   *        popup list of items
-   *
-   * @return height of the popup required to fit number of items  equal to
-   *         JComboBox.maximumRowCount.
-   */
-  protected int getPopupHeightForRowCount(int maxRowCount)
-  {
-    int totalHeight = 0;
-    ListCellRenderer rend = list.getCellRenderer();
-
-    if (comboBox.getItemCount() < maxRowCount)
-      maxRowCount = comboBox.getItemCount();
-
-    for (int i = 0; i < maxRowCount; i++)
-      {
-        Component comp = rend.getListCellRendererComponent(list,
-                                                           comboBox.getModel()
-                                                                   .getElementAt(i),
-                                                           -1, false, false);
-        Dimension dim = comp.getPreferredSize();
-        totalHeight += dim.height;
-      }
-
-    return totalHeight == 0 ? 100 : totalHeight;
-  }
-
-  /**
-   * DOCUMENT ME!
-   *
-   * @param px DOCUMENT ME!
-   * @param py DOCUMENT ME!
-   * @param pw DOCUMENT ME!
-   * @param ph DOCUMENT ME!
-   *
-   * @return DOCUMENT ME!
-   */
-  protected Rectangle computePopupBounds(int px, int py, int pw, int ph)
-  {
-    return new Rectangle(px, py, pw, ph);
-  }
-
-  /**
-   * This method changes the selection in the list to the item over which  the
-   * mouse is currently located.
-   *
-   * @param anEvent MouseEvent
-   * @param shouldScroll DOCUMENT ME!
-   */
-  protected void updateListBoxSelectionForEvent(MouseEvent anEvent,
-                                                boolean shouldScroll)
-  {
-    Point point = anEvent.getPoint();
-    if (list != null)
-      {
-        int index = list.locationToIndex(point);
-        if (index == -1)
-          {
-            if (point.y < 0)
-              index = 0;
-            else
-              index = comboBox.getModel().getSize() - 1;
-          }
-        if (list.getSelectedIndex() != index)
-          {
-            list.setSelectedIndex(index);
-            if (shouldScroll)
-              list.ensureIndexIsVisible(index);
-          }
-      }
-  }
-
-  /**
-   * InvocationMouseHandler is a listener that listens to mouse events
-   * occuring in the combo box. Note that this listener doesn't listen to
-   * mouse events occuring in the popup portion of the combo box, it only
-   * listens to main combo box part(area that displays selected item).  This
-   * listener is responsible for showing and hiding popup portion  of the
-   * combo box.
-   */
-  protected class InvocationMouseHandler extends MouseAdapter
-  {
-    /**
-     * Creates a new InvocationMouseHandler object.
-     */
-    protected InvocationMouseHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method is invoked whenever mouse is being pressed over the main
-     * part of the combo box. This method will show popup if  the popup is
-     * not shown on the screen right now, and it will hide popup otherwise.
-     *
-     * @param e MouseEvent that should be handled
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      if (SwingUtilities.isLeftMouseButton(e) && comboBox.isEnabled())
-        {
-          delegateFocus(e);
-          togglePopup();
-        }
-    }
-
-    /**
-     * This method is invoked whenever mouse event was originated in the combo
-     * box and released either in the combBox list of items or in the combo
-     * box itself.
-     *
-     * @param e MouseEvent that should be handled
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      Component component = (Component) e.getSource();
-      Dimension size = component.getSize();
-      Rectangle bounds = new Rectangle(0, 0, size.width - 1, size.height - 1);
-      // If mouse was released inside the bounds of combo box then do nothing,
-      // Otherwise if mouse was released inside the list of combo box items
-      // then change selection and close popup
-      if (! bounds.contains(e.getPoint()))
-        {
-          MouseEvent convEvent = convertMouseEvent(e);
-          Point point = convEvent.getPoint();
-          Rectangle visRect = new Rectangle();
-          list.computeVisibleRect(visRect);
-          if (visRect.contains(point))
-            {
-              updateListBoxSelectionForEvent(convEvent, false);
-              comboBox.setSelectedIndex(list.getSelectedIndex());
-            }
-          hide();
-        }
-      hasEntered = false;
-      stopAutoScrolling();
-    }
-  }
-
-  /**
-   * InvocationMouseMotionListener is a mouse listener that listens to mouse
-   * dragging events occuring in the combo box.
-   */
-  protected class InvocationMouseMotionHandler extends MouseMotionAdapter
-  {
-    /**
-     * Creates a new InvocationMouseMotionHandler object.
-     */
-    protected InvocationMouseMotionHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method is responsible for highlighting item in the drop down list
-     * over which the mouse is currently being dragged.
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      if (isVisible())
-        {
-          MouseEvent convEvent = convertMouseEvent(e);
-          Rectangle visRect = new Rectangle();
-          list.computeVisibleRect(visRect);
-          if (convEvent.getPoint().y >= visRect.y
-              && (convEvent.getPoint().y <= visRect.y + visRect.height - 1))
-            {
-              hasEntered = true;
-              if (isAutoScrolling)
-                stopAutoScrolling();
-              Point point = convEvent.getPoint();
-              if (visRect.contains(point))
-                {
-                  valueIsAdjusting = true;
-                  updateListBoxSelectionForEvent(convEvent, false);
-                  valueIsAdjusting = false;
-                }
-            }
-          else if (hasEntered)
-            {
-              int dir = convEvent.getPoint().y < visRect.y ? SCROLL_UP
-                                                           : SCROLL_DOWN;
-              if (isAutoScrolling && scrollDirection != dir)
-                {
-                  stopAutoScrolling();
-                  startAutoScrolling(dir);
-                }
-              else if (!isAutoScrolling)
-                startAutoScrolling(dir);
-            }
-          else if (e.getPoint().y < 0)
-            {
-              hasEntered = true;
-              startAutoScrolling(SCROLL_UP);
-            }
-        }
-    }
-  }
-
-  /**
-   * ItemHandler is an item listener that listens to selection events occuring
-   * in the combo box. FIXME: should specify here what it does when item is
-   * selected or deselected in the combo box list.
-   */
-  protected class ItemHandler extends Object implements ItemListener
-  {
-    /**
-     * Creates a new ItemHandler object.
-     */
-    protected ItemHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method responds to the selection events occuring in the combo box.
-     *
-     * @param e ItemEvent specifying the combo box's selection
-     */
-    public void itemStateChanged(ItemEvent e)
-    {
-      if (e.getStateChange() == ItemEvent.SELECTED && ! valueIsAdjusting)
-        {
-          valueIsAdjusting = true;
-          syncListSelection();
-          valueIsAdjusting = false;
-          list.ensureIndexIsVisible(comboBox.getSelectedIndex());
-        }
-    }
-  }
-
-  /**
-   * ListMouseHandler is a listener that listens to mouse events occuring in
-   * the combo box's list of items. This class is responsible for hiding
-   * popup portion of the combo box if the mouse is released inside the combo
-   * box's list.
-   */
-  protected class ListMouseHandler extends MouseAdapter
-  {
-    protected ListMouseHandler()
-    {
-      // Nothing to do here.
-    }
-
-    public void mousePressed(MouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    public void mouseReleased(MouseEvent anEvent)
-    {
-      comboBox.setSelectedIndex(list.getSelectedIndex());
-      hide();
-    }
-  }
-
-  /**
-   * ListMouseMotionHandler listens to mouse motion events occuring in the
-   * combo box's list. This class is responsible for highlighting items in
-   * the list when mouse is moved over them
-   */
-  protected class ListMouseMotionHandler extends MouseMotionAdapter
-  {
-    protected ListMouseMotionHandler()
-    {
-      // Nothing to do here.
-    }
-
-    public void mouseMoved(MouseEvent anEvent)
-    {
-      Point point = anEvent.getPoint();
-      Rectangle visRect = new Rectangle();
-      list.computeVisibleRect(visRect);
-      if (visRect.contains(point))
-        {
-          valueIsAdjusting = true;
-          updateListBoxSelectionForEvent(anEvent, false);
-          valueIsAdjusting = false;
-        }
-    }
-  }
-
-  /**
-   * This class listens to changes occuring in the bound properties of the
-   * combo box
-   */
-  protected class PropertyChangeHandler extends Object
-    implements PropertyChangeListener
-  {
-    protected PropertyChangeHandler()
-    {
-      // Nothing to do here.
-    }
-
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      if (e.getPropertyName().equals("renderer"))
-        {
-          list.setCellRenderer(comboBox.getRenderer());
-          if (isVisible())
-            hide();
-        }
-      if (e.getPropertyName().equals("model"))
-        {
-          ComboBoxModel oldModel = (ComboBoxModel) e.getOldValue();
-          uninstallComboBoxModelListeners(oldModel);
-          ComboBoxModel newModel = (ComboBoxModel) e.getNewValue();
-          list.setModel(newModel);
-          installComboBoxModelListeners(newModel);
-          if (comboBox.getItemCount() > 0)
-            comboBox.setSelectedIndex(0);
-          if (isVisible())
-            hide();
-        }
-    }
-  }
-
-  // ------ private helper methods --------------------
-
-  /**
-   * This method uninstalls Listeners registered with combo boxes list of
-   * items
-   */
-  private void uninstallListListeners()
-  {
-    list.removeMouseListener(listMouseListener);
-    listMouseListener = null;
-
-    list.removeMouseMotionListener(listMouseMotionListener);
-    listMouseMotionListener = null;
-  }
-
-  void syncListSelection()
-  {
-    int index = comboBox.getSelectedIndex();
-    if (index == -1)
-      list.clearSelection();
-    else
-      list.setSelectedIndex(index);
-  }
-
-  // --------------------------------------------------------------------
-  //  The following classes are here only for backwards API compatibility
-  //  They aren't used.
-  // --------------------------------------------------------------------
-
-  /**
-   * This class is not used any more.
-   */
-  public class ListDataHandler extends Object implements ListDataListener
-  {
-    public ListDataHandler()
-    {
-      // Nothing to do here.
-    }
-
-    public void contentsChanged(ListDataEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    public void intervalAdded(ListDataEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    public void intervalRemoved(ListDataEvent e)
-    {
-      // Nothing to do here.
-    }
-  }
-
-  /**
-   * This class is not used anymore
-   */
-  protected class ListSelectionHandler extends Object
-    implements ListSelectionListener
-  {
-    protected ListSelectionHandler()
-    {
-      // Nothing to do here.
-    }
-
-    public void valueChanged(ListSelectionEvent e)
-    {
-      // Nothing to do here.
-    }
-  }
-
-  /**
-   * This class is not used anymore
-   */
-  public class InvocationKeyHandler extends KeyAdapter
-  {
-    public InvocationKeyHandler()
-    {
-      // Nothing to do here.
-    }
-
-    public void keyReleased(KeyEvent e)
-    {
-      // Nothing to do here.
-    }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicDesktopIconUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicDesktopIconUI.java
deleted file mode 100644
index e522938..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicDesktopIconUI.java
+++ /dev/null
@@ -1,592 +0,0 @@
-/* BasicDesktopIconUI.java --
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyVetoException;
-
-import javax.swing.Icon;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JDesktopPane;
-import javax.swing.JInternalFrame;
-import javax.swing.JInternalFrame.JDesktopIcon;
-import javax.swing.SwingConstants;
-import javax.swing.border.Border;
-import javax.swing.event.MouseInputAdapter;
-import javax.swing.event.MouseInputListener;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.DesktopIconUI;
-
-/**
- * This class acts as the UI delegate for JDesktopIcons for the Basic look and feel.
- */
-public class BasicDesktopIconUI extends DesktopIconUI
-{
-  /**
-   * This helper class handles mouse events that occur on the JDesktopIcon.
-   */
-  public class MouseInputHandler extends MouseInputAdapter
-  {
-    /** The x offset from the MouseEvent coordinates to the top left corner. */
-    private transient int xOffset;
-
-    /** The y offset fromt he MouseEvent coordinates to the top left corner. */
-    private transient int yOffset;
-
-    /** A cached value of the JDesktopPane that parents this JDesktopIcon. */
-    private transient JDesktopPane pane;
-
-    /**
-     * This method is called when the mouse is dragged in the JDesktopIcon.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      Rectangle b = desktopIcon.getBounds();
-
-      moveAndRepaint(desktopIcon, b.x + e.getX() - xOffset,
-                     b.y + e.getY() - yOffset, b.width, b.height);
-    }
-
-    /**
-     * This method is called when the mouse is moved in the JDesktopIcon.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseMoved(MouseEvent e)
-    {
-      // Nothing to do.
-    }
-
-    /**
-     * This method is called when the mouse is pressed in the JDesktopIcon.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      xOffset = e.getX();
-      yOffset = e.getY();
-      pane = frame.getDesktopPane();
-      if (pane != null)
-        pane.getDesktopManager().beginDraggingFrame(desktopIcon);
-    }
-
-    /**
-     * This method is called when the mouse is released in the JDesktopIcon.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      if (pane != null)
-        pane.getDesktopManager().endDraggingFrame(desktopIcon);
-      xOffset = 0;
-      yOffset = 0;
-    }
-
-    /**
-     * This method moves and repaints the JDesktopIcon to the given bounds.
-     *
-     * @param f The JComponent to move and repaint.
-     * @param newX The new x coordinate.
-     * @param newY The new y coordinate.
-     * @param newWidth The new width.
-     * @param newHeight The new height.
-     */
-    public void moveAndRepaint(JComponent f, int newX, int newY, int newWidth,
-                               int newHeight)
-    {
-      if (pane != null)
-        pane.getDesktopManager().dragFrame(f, newX, newY);
-      else
-        desktopIcon.setBounds(newX, newY, newWidth, newHeight);
-    }
-  }
-
-  /**
-   * This class acts as the border for the JDesktopIcon.
-   */
-  private class DesktopIconBorder implements Border
-  {
-    /** The left inset value. */
-    int left = 10;
-
-    /** The top inset value. */
-    int top = 4;
-
-    /** The right inset value. */
-    int right = top;
-
-    /** The bottom inset value. */
-    int bottom = top;
-
-    /**
-     * This method returns the insets of the border.
-     *
-     * @param c The Component to find border insets for.
-     *
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return new Insets(top, left, bottom, right);
-    }
-
-    /**
-     * This method returns whether the border is opaque.
-     *
-     * @return Whether the border is opaque.
-     */
-    public boolean isBorderOpaque()
-    {
-      return true;
-    }
-
-    /**
-     * This method paints the border.
-     *
-     * @param c The Component the border is in.
-     * @param g The Graphics object to paint with.
-     * @param x The x coordinate of the Component.
-     * @param y The y coordinate of the Component.
-     * @param width The width of the Component.
-     * @param height The height of the Component.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int width,
-                            int height)
-    {
-      g.translate(x, y);
-      Color saved = g.getColor();
-
-      g.setColor(Color.LIGHT_GRAY);
-
-      g.fillRect(0, 0, left, height);
-      g.fillRect(0, 0, width, top);
-      g.fillRect(0, height - bottom, width, bottom);
-      g.fillRect(width - right, 0, right, height);
-
-      g.setColor(Color.BLACK);
-      g.drawRect(0, 0, width - 1, height - 1);
-
-      int fHeight = height / 4;
-      int hLeft = left / 2;
-
-      g.setColor(Color.BLACK);
-      g.fillRect(hLeft, fHeight, 2, 2);
-      g.fillRect(hLeft, fHeight * 2, 2, 2);
-      g.fillRect(hLeft, fHeight * 3, 2, 2);
-
-      g.setColor(saved);
-      g.translate(-x, -y);
-    }
-  }
-
-  /** The static width and height of the iconSize. */
-  private static final int iconSize = 16;
-
-  /**
-   * This class represents the default frame icon when none
-   * is supplied by the JInternalFrame.
-   */
-  static class InternalFrameDefaultMenuIcon implements Icon
-  {
-    /**
-     * This returns the icon height.
-     *
-     * @return The icon height.
-     */
-    public int getIconHeight()
-    {
-      return iconSize;
-    }
-
-    /**
-     * This returns the icon width.
-     *
-     * @return The icon width.
-     */
-    public int getIconWidth()
-    {
-      return iconSize;
-    }
-
-    /**
-     * This method paints the icon.
-     *
-     * @param c The Component this icon belongs to.
-     * @param g The Graphics object to paint with.
-     * @param x The x coordinate to paint at.
-     * @param y The y coordinate to paint at.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      g.translate(x, y);
-      Color saved = g.getColor();
-
-      g.setColor(Color.BLUE);
-      g.fillRect(0, 0, iconSize, (int) ((double) iconSize / 3) + 1);
-
-      g.setColor(Color.WHITE);
-      g.fillRect(0, (int) ((double) iconSize / 3), iconSize, iconSize * 5 / 6);
-
-      g.setColor(Color.GRAY);
-      g.drawRect(0, 0, iconSize, iconSize);
-
-      g.setColor(saved);
-      g.translate(-x, -y);
-    }
-  }
-
-  /** The default JDesktopIcon width. */
-  private static final int iconWidth = 160;
-
-  /** The default JDesktopIcon height */
-  private static final int iconHeight = 35;
-
-  /** The JDesktopIcon this UI delegate represents. */
-  protected JDesktopIcon desktopIcon;
-
-  /** The JInternalFrame associated with the JDesktopIcon. */
-  protected JInternalFrame frame;
-
-  /** The MouseListener responsible for reacting to MouseEvents on the JDesktopIcon. */
-  private transient MouseInputListener mouseHandler;
-
-  /** The Button in the JDesktopIcon responsible for deiconifying it.
-   * This is package-private to avoid an accessor method. */
-  transient BoundButton button;
-
-  /** The PropertyChangeListener listening to the JDesktopIcon. */
-  private transient PropertyChangeListener propertyHandler;
-
-  /** The default icon used when no frame icon is given by the JInternalFrame. */
-  static Icon defaultIcon = new InternalFrameDefaultMenuIcon();
-
-  /**
-   * This is a helper class that is used in JDesktopIcon and gives the Button a predetermined size.
-   */
-  private class BoundButton extends JButton
-  {
-    /**
-     * Creates a new BoundButton object.
-     *
-     * @param title The title of the button.
-     */
-    public BoundButton(String title)
-    {
-      super(title);
-    }
-
-    /**
-     * This method returns a standard size (based on the defaults of the JDesktopIcon) and the insets.
-     *
-     * @return The preferred size of the JDesktopIcon.
-     */
-    public Dimension getPreferredSize()
-    {
-      Insets insets = desktopIcon.getInsets();
-      return new Dimension(iconWidth - insets.left - insets.right,
-                           iconHeight - insets.top - insets.bottom);
-    }
-
-    /**
-     * This method returns the minimum size of the button.
-     *
-     * @return The minimum size of the button.
-     */
-    public Dimension getMinimumSize()
-    {
-      return getPreferredSize();
-    }
-
-    /**
-     * This method returns the maximum size of the button.
-     *
-     * @return The maximum size of the button.
-     */
-    public Dimension getMaximumSize()
-    {
-      return getPreferredSize();
-    }
-  }
-
-  /**
-   * Creates a new BasicDesktopIconUI object.
-   */
-  public BasicDesktopIconUI()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * This method creates a new BasicDesktopIconUI for the given JComponent.
-   *
-   * @param c The JComponent to create a UI for.
-   *
-   * @return A new BasicDesktopIconUI.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicDesktopIconUI();
-  }
-
-  /**
-   * This method installs the UI for the given JComponent.
-   *
-   * @param c The JComponent to install this UI for.
-   */
-  public void installUI(JComponent c)
-  {
-    if (c instanceof JDesktopIcon)
-      {
-        desktopIcon = (JDesktopIcon) c;
-        desktopIcon.setLayout(new BorderLayout());
-        frame = desktopIcon.getInternalFrame();
-
-        installDefaults();
-        installComponents();
-        installListeners();
-
-        desktopIcon.setOpaque(true);
-      }
-  }
-
-  /**
-   * This method uninstalls the UI for the given JComponent.
-   *
-   * @param c The JComponent to uninstall this UI for.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    desktopIcon.setOpaque(false);
-
-    uninstallListeners();
-    uninstallComponents();
-    uninstallDefaults();
-
-    frame = null;
-    desktopIcon.setLayout(null);
-    desktopIcon = null;
-  }
-
-  /**
-   * This method installs the necessary sub components for the JDesktopIcon.
-   */
-  protected void installComponents()
-  {
-    // Try to create a button based on what the frame's
-    // state is currently
-    button = new BoundButton(frame.getTitle());
-    button.setHorizontalAlignment(SwingConstants.LEFT);
-    button.setHorizontalTextPosition(SwingConstants.TRAILING);
-
-    Icon use = frame.getFrameIcon();
-    if (use == null)
-      use = defaultIcon;
-    button.setIcon(use);
-
-    desktopIcon.add(button, SwingConstants.CENTER);
-  }
-
-  /**
-   * This method uninstalls the sub components for the JDesktopIcon.
-   */
-  protected void uninstallComponents()
-  {
-    desktopIcon.remove(button);
-
-    button = null;
-  }
-
-  /**
-   * This method installs the listeners needed by this UI.
-   */
-  protected void installListeners()
-  {
-    mouseHandler = createMouseInputListener();
-
-    desktopIcon.addMouseMotionListener(mouseHandler);
-    desktopIcon.addMouseListener(mouseHandler);
-
-    propertyHandler = new PropertyChangeListener()
-        {
-          public void propertyChange(PropertyChangeEvent e)
-          {
-            if (e.getPropertyName().equals(JInternalFrame.TITLE_PROPERTY))
-              button.setText(desktopIcon.getInternalFrame().getTitle());
-            else if (e.getPropertyName().equals(JInternalFrame.FRAME_ICON_PROPERTY))
-              {
-                Icon use = desktopIcon.getInternalFrame().getFrameIcon();
-                if (use == null)
-                  use = defaultIcon;
-                button.setIcon(use);
-              }
-            desktopIcon.revalidate();
-            desktopIcon.repaint();
-          }
-        };
-    frame.addPropertyChangeListener(propertyHandler);
-
-    button.addActionListener(new ActionListener()
-        {
-          public void actionPerformed(ActionEvent e)
-          {
-            deiconize();
-          }
-        });
-  }
-
-  /**
-   * This method uninstalls the listeners needed by the UI.
-   */
-  protected void uninstallListeners()
-  {
-    // button is nulled so no need to remove it.
-
-    frame.removePropertyChangeListener(propertyHandler);
-    propertyHandler = null;
-
-    desktopIcon.removeMouseMotionListener(mouseHandler);
-    desktopIcon.removeMouseListener(mouseHandler);
-  }
-
-  /**
-   * This method installs the defaults for the JDesktopIcon.
-   */
-  protected void installDefaults()
-  {
-    // FIXME: Move border to defaults.
-    desktopIcon.setBorder(new DesktopIconBorder());
-  }
-
-  /**
-   * This method uninstalls the defaults for the JDesktopIcon.
-   */
-  protected void uninstallDefaults()
-  {
-    desktopIcon.setBorder(null);
-  }
-
-  /**
-   * This method creates a new MouseInputListener for the JDesktopIcon.
-   *
-   * @return A new MouseInputListener.
-   */
-  protected MouseInputListener createMouseInputListener()
-  {
-    return new MouseInputHandler();
-  }
-
-  /**
-   * This method returns the preferred size for the given JComponent.
-   *
-   * @param c The JComponent to find a preferred size for.
-   *
-   * @return The preferred size.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    return new Dimension(iconWidth, iconHeight);
-  }
-
-  /**
-   * This method returns the minimum size for the given JComponent.
-   *
-   * @param c The JComponent to find a minimum size for.
-   *
-   * @return The minimum size.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-  /**
-   * This method returns the maximum size for the given JComponent.
-   *
-   * @param c The JComponent to find a maximum size for.
-   *
-   * @return The maximum size.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-  /**
-   * This method returns the insets of the given JComponent.
-   *
-   * @param c The JComponent to find insets for.
-   *
-   * @return The insets of the given JComponent.
-   */
-  public Insets getInsets(JComponent c)
-  {
-    return c.getInsets();
-  }
-
-  /**
-   * This method deiconizes the JInternalFrame associated with the JDesktopIcon.
-   */
-  public void deiconize()
-  {
-    try
-    {
-      frame.setIcon(false);
-    }
-    catch (PropertyVetoException pve)
-    {
-      // We do nothing if the attempt has been vetoed.
-    }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicDesktopPaneUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicDesktopPaneUI.java
deleted file mode 100644
index cbc3f9f..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicDesktopPaneUI.java
+++ /dev/null
@@ -1,470 +0,0 @@
-/* BasicDesktopPaneUI.java --
-   Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.event.ActionEvent;
-import java.beans.PropertyVetoException;
-
-import javax.swing.AbstractAction;
-import javax.swing.DefaultDesktopManager;
-import javax.swing.DesktopManager;
-import javax.swing.JComponent;
-import javax.swing.JDesktopPane;
-import javax.swing.JInternalFrame;
-import javax.swing.KeyStroke;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.DesktopPaneUI;
-import javax.swing.plaf.UIResource;
-
-/**
- * This class is the UI delegate for JDesktopPane for the Basic look and feel.
- */
-public class BasicDesktopPaneUI extends DesktopPaneUI
-{
-  /**
-   * This helper class is used to handle key events that cause JInternalFrames
-   * to be closed.
-   */
-  protected class CloseAction extends AbstractAction
-  {
-    /**
-     * This method is called when the action is performed.
-     *
-     * @param e The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      if (desktop.getSelectedFrame() != null)
-        {
-          try
-            {
-              desktop.getSelectedFrame().setClosed(true);
-            }
-          catch (PropertyVetoException pve)
-            {
-              // We do nothing if the attempts has been vetoed.
-            }
-        }
-    }
-
-    /**
-     * This method returns whether the action is enabled.
-     *
-     * @return Whether the action is enabled.
-     */
-    public boolean isEnabled()
-    {
-      if (desktop.getSelectedFrame() != null)
-        return desktop.getSelectedFrame().isClosable();
-      return false;
-    }
-  }
-
-  /**
-   * This helper class is used to handle key events that cause JInternalFrames
-   * to be maximized.
-   */
-  protected class MaximizeAction extends AbstractAction
-  {
-    /**
-     * This method is called when the action is performed.
-     *
-     * @param e The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      if (desktop.getSelectedFrame() != null)
-        {
-          try
-            {
-              desktop.getSelectedFrame().setMaximum(true);
-            }
-          catch (PropertyVetoException pve)
-            {
-              // We do nothing if the attempts has been vetoed.
-            }
-        }
-    }
-
-    /**
-     * This method returns whether the action is enabled.
-     *
-     * @return Whether the action is enabled.
-     */
-    public boolean isEnabled()
-    {
-      if (desktop.getSelectedFrame() != null)
-        return desktop.getSelectedFrame().isMaximizable();
-      return false;
-    }
-  }
-
-  /**
-   * This helper class is used to handle key events that cause JInternalFrames
-   * to be minimized.
-   */
-  protected class MinimizeAction extends AbstractAction
-  {
-    /**
-     * This method is called when the action is performed.
-     *
-     * @param e The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      if (desktop.getSelectedFrame() != null)
-        {
-          try
-            {
-              desktop.getSelectedFrame().setIcon(true);
-            }
-          catch (PropertyVetoException pve)
-            {
-              // We do nothing if the attempt has been vetoed.
-            }
-        }
-    }
-
-    /**
-     * This method returns whether the action is enabled.
-     *
-     * @return Whether the action is enabled.
-     */
-    public boolean isEnabled()
-    {
-      if (desktop.getSelectedFrame() != null)
-        return desktop.getSelectedFrame().isIconifiable();
-      return false;
-    }
-  }
-
-  /**
-   * This helper class is used to handle key events that pass the SELECTED
-   * property to the next JInternalFrame in the JDesktopPane's list of
-   * children.
-   */
-  protected class NavigateAction extends AbstractAction
-  {
-    /**
-     * This method is called when the action is performed.
-     *
-     * @param e The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      // This is supposed to set the next selected frame.
-      JInternalFrame[] frames = desktop.getAllFrames();
-      if (frames.length == 0)
-        return;
-
-      JInternalFrame sFrame = frames[0];
-      if (desktop.getSelectedFrame() != null)
-        sFrame = desktop.getSelectedFrame();
-
-      int i = 0;
-      for (; i < frames.length; i++)
-        if (frames[i] == sFrame)
-          break;
-
-      // FIXME: Navigate actions go reverse too.
-      if (i == frames.length)
-        i = 0;
-
-      desktop.setSelectedFrame(frames[i]);
-    }
-
-    /**
-     * This method returns whether the action is enabled.
-     *
-     * @return Whether this action is enabled.
-     */
-    public boolean isEnabled()
-    {
-      // Always true.
-      return true;
-    }
-  }
-
-  /**
-   * This helper class is used to restore the JInternalFrame to its original
-   * size before maximizing or iconifying.
-   */
-  protected class OpenAction extends AbstractAction
-  {
-    /**
-     * This method is called when the action is performed.
-     *
-     * @param e The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      JInternalFrame frame = desktop.getSelectedFrame();
-      if (frame != null)
-        {
-          try
-            {
-              if (frame.isIcon())
-                frame.setIcon(false);
-              else if (frame.isMaximum())
-                frame.setMaximum(false);
-            }
-          catch (PropertyVetoException pve)
-            {
-              // We do nothing if the attempt has been vetoed.
-            }
-        }
-    }
-
-    /**
-     * This method returns whether the action is enabled.
-     *
-     * @return Whether this action is enabled.
-     */
-    public boolean isEnabled()
-    {
-      // JInternalFrames are always restorable.
-      return true;
-    }
-  }
-
-  /**
-   * The KeyStroke associated with closing JInternalFrames.
-   * @deprecated
-   */
-  protected KeyStroke closeKey;
-
-  /**
-   * The KeyStroke associated with maximizing JInternalFrames.
-   * @deprecated
-   */
-  protected KeyStroke maximizeKey;
-
-  /**
-   * The KeyStroke associated with minimizing JInternalFrames.
-   * @deprecated
-   */
-  protected KeyStroke minimizeKey;
-
-  /**
-   * The KeyStroke associated with navigating (forward?) through
-   * JInternalFrames.
-   * @deprecated
-   */
-  protected KeyStroke navigateKey;
-
-  /**
-   * The KeyStroke associated with navigating (backward?) through
-   * JInternalFrames.
-   * @deprecated
-   */
-  protected KeyStroke navigateKey2;
-
-  /** The default desktop manager used with JDesktopPane. */
-  protected DesktopManager desktopManager;
-
-  /** The JDesktopPane this UI is used with. */
-  protected JDesktopPane desktop;
-
-  /**
-   * Creates a new BasicDesktopPaneUI object.
-   */
-  public BasicDesktopPaneUI()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * This method creates a BasicDesktopPaneUI for the given JComponent.
-   *
-   * @param c The JComponent to create a UI for.
-   *
-   * @return A new BasicDesktopPaneUI.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicDesktopPaneUI();
-  }
-
-  /**
-   * This method returns the maximum size for the given JComponent.
-   *
-   * @param c The JComponent to find a maximum size for.
-   *
-   * @return The maximum size for the given JComponent.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-  /**
-   * This method returns the minimum size for the given JComponent.
-   *
-   * @param c The JComponent to find a minimum size for.
-   *
-   * @return The minimum size for the given JComponent.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-  /**
-   * This method returns the preferred size for the given JComponent.
-   *
-   * @param c The JComponent to find a preferred size for.
-   *
-   * @return The preferred size for the given JComponent.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    // return null because JDesktopPanes don't have preferred sizes.
-    return null;
-  }
-
-  /**
-   * This method installs the defaults for the JDesktopPane provided by the
-   * current look and feel.
-   */
-  protected void installDefaults()
-  {
-    Color bg = desktop.getBackground();
-    if (bg == null || bg instanceof UIResource)
-      desktop.setBackground(UIManager.getColor("desktop"));
-  }
-
-  /**
-   * This method installs the desktop manager for the JDesktopPane.
-   */
-  protected void installDesktopManager()
-  {
-    desktopManager = new DefaultDesktopManager();
-    desktop.setDesktopManager(desktopManager);
-  }
-
-  /**
-   * This method installs the keyboard actions for the JDesktopPane.
-   */
-  protected void installKeyboardActions()
-  {
-    // FIXME: create actions and keystrokes.
-    registerKeyboardActions();
-  }
-
-  /**
-   * This method installs the UI for the given JComponent.
-   *
-   * @param c The JComponent to install this UI for.
-   */
-  public void installUI(JComponent c)
-  {
-    if (c instanceof JDesktopPane)
-      {
-        desktop = (JDesktopPane) c;
-
-        installDefaults();
-        installDesktopManager();
-        installKeyboardActions();
-      }
-  }
-
-  /**
-   * This method registers the actions to the appropriate Action and Input
-   * maps.
-   */
-  protected void registerKeyboardActions()
-  {
-    // FIXME: Do the binding.
-    // XXX: the gtk windows tend to intercept a lot of the
-    // key events for themselves. must figure a way past that
-    // before binding
-  }
-
-  /**
-   * This method reverses the work done by the installDefaults method.
-   */
-  protected void uninstallDefaults()
-  {
-    desktop.setBackground(null);
-  }
-
-  /**
-   * This method reverses the work done by the installDesktopManager method.
-   */
-  protected void uninstallDesktopManager()
-  {
-    desktopManager = null;
-    desktop.setDesktopManager(null);
-  }
-
-  /**
-   * This method reverses the work done by the installKeyboardActions method.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    unregisterKeyboardActions();
-    // FIXME: null the actions and keystrokes.
-  }
-
-  /**
-   * This method reverses the work done by the registerKeyboardActions method.
-   */
-  protected void unregisterKeyboardActions()
-  {
-    // FIXME: unmap the keystrokes
-  }
-
-  /**
-   * This method uninstalls the UI for the given JComponent. It should reverse
-   * all the work done by the installUI method.
-   *
-   * @param c The JComponent to uninstall this UI for.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    uninstallKeyboardActions();
-    uninstallDesktopManager();
-    uninstallDefaults();
-
-    desktop = null;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicDirectoryModel.java b/libjava/classpath/javax/swing/plaf/basic/BasicDirectoryModel.java
deleted file mode 100644
index 62657ad..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicDirectoryModel.java
+++ /dev/null
@@ -1,586 +0,0 @@
-/* BasicDirectoryModel.java --
-   Copyright (C) 2005, 2006  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.basic;
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.io.File;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-import javax.swing.AbstractListModel;
-import javax.swing.JFileChooser;
-import javax.swing.SwingUtilities;
-import javax.swing.event.ListDataEvent;
-import javax.swing.filechooser.FileSystemView;
-
-
-/**
- * Implements an AbstractListModel for directories where the source
- * of the files is a JFileChooser object.
- *
- * This class is used for sorting and ordering the file list in
- * a JFileChooser L&F object.
- */
-public class BasicDirectoryModel extends AbstractListModel
-  implements PropertyChangeListener
-{
-  /** The list of files itself */
-  private Vector contents;
-
-  /**
-   * The directories in the list.
-   */
-  private Vector directories;
-
-  /**
-   * The files in the list.
-   */
-  private Vector files;
-
-  /** The listing mode of the associated JFileChooser,
-      either FILES_ONLY, DIRECTORIES_ONLY or FILES_AND_DIRECTORIES */
-  private int listingMode;
-
-  /** The JFileCooser associated with this model */
-  private JFileChooser filechooser;
-
-  /**
-   * The thread that loads the file view.
-   */
-  private DirectoryLoadThread loadThread;
-
-  /**
-   * This thread is responsible for loading file lists from the
-   * current directory and updating the model.
-   */
-  private class DirectoryLoadThread extends Thread
-  {
-
-    /**
-     * Updates the Swing list model.
-     */
-    private class UpdateSwingRequest
-      implements Runnable
-    {
-
-      private List added;
-      private int addIndex;
-      private List removed;
-      private int removeIndex;
-      private boolean cancel;
-
-      UpdateSwingRequest(List add, int ai, List rem, int ri)
-      {
-        added = add;
-        addIndex = ai;
-        removed = rem;
-        removeIndex = ri;
-        cancel = false;
-      }
-
-      public void run()
-      {
-        if (! cancel)
-          {
-            int numRemoved = removed == null ? 0 : removed.size();
-            int numAdded = added == null ? 0 : added.size();
-            synchronized (contents)
-              {
-                if (numRemoved > 0)
-                  contents.removeAll(removed);
-                if (numAdded > 0)
-                  contents.addAll(added);
-
-                files = null;
-                directories = null;
-              }
-            if (numRemoved > 0 && numAdded == 0)
-              fireIntervalRemoved(BasicDirectoryModel.this, removeIndex,
-                                  removeIndex + numRemoved - 1);
-            else if (numRemoved == 0 && numAdded > 0)
-              fireIntervalAdded(BasicDirectoryModel.this, addIndex,
-                                addIndex + numAdded - 1);
-            else
-              fireContentsChanged();
-          }
-      }
-
-      void cancel()
-      {
-        cancel = true;
-      }
-    }
-
-    /**
-     * The directory beeing loaded.
-     */
-    File directory;
-
-    /**
-     * Stores all UpdateSwingRequests that are sent to the event queue.
-     */
-    private UpdateSwingRequest pending;
-
-    /**
-     * Creates a new DirectoryLoadThread that loads the specified
-     * directory.
-     *
-     * @param dir the directory to load
-     */
-    DirectoryLoadThread(File dir)
-    {
-      super("Basic L&F directory loader");
-      directory = dir;
-    }
-
-    public void run()
-    {
-      FileSystemView fsv = filechooser.getFileSystemView();
-      File[] files = fsv.getFiles(directory,
-                                  filechooser.isFileHidingEnabled());
-
-      // Occasional check if we have been interrupted.
-      if (isInterrupted())
-        return;
-
-      // Check list for accepted files.
-      Vector accepted = new Vector();
-      for (int i = 0; i < files.length; i++)
-        {
-          if (filechooser.accept(files[i]))
-            accepted.add(files[i]);
-        }
-
-      // Occasional check if we have been interrupted.
-      if (isInterrupted())
-        return;
-
-      // Sort list.
-      sort(accepted);
-
-      // Now split up directories from files so that we get the directories
-      // listed before the files.
-      Vector newFiles = new Vector();
-      Vector newDirectories = new Vector();
-      for (Iterator i = accepted.iterator(); i.hasNext();)
-        {
-          File f = (File) i.next();
-          boolean traversable = filechooser.isTraversable(f);
-          if (traversable)
-            newDirectories.add(f);
-          else if (! traversable && filechooser.isFileSelectionEnabled())
-            newFiles.add(f);
-
-          // Occasional check if we have been interrupted.
-          if (isInterrupted())
-            return;
-
-        }
-
-      // Build up new file cache. Try to update only the changed elements.
-      // This will be important for actions like adding new files or
-      // directories inside a large file list.
-      Vector newCache = new Vector(newDirectories);
-      newCache.addAll(newFiles);
-
-      int newSize = newCache.size();
-      int oldSize = contents.size();
-      if (newSize < oldSize)
-        {
-          // Check for removed interval.
-          int start = -1;
-          int end = -1;
-          boolean found = false;
-          for (int i = 0; i < newSize && !found; i++)
-            {
-              if (! newCache.get(i).equals(contents.get(i)))
-                {
-                  start = i;
-                  end = i + oldSize - newSize;
-                  found = true;
-                }
-            }
-          if (start >= 0 && end > start
-              && contents.subList(end, oldSize)
-                                    .equals(newCache.subList(start, newSize)))
-            {
-              // Occasional check if we have been interrupted.
-              if (isInterrupted())
-                return;
-
-              Vector removed = new Vector(contents.subList(start, end));
-              UpdateSwingRequest r = new UpdateSwingRequest(null, 0,
-                                                            removed, start);
-              invokeLater(r);
-              newCache = null;
-            }
-        }
-      else if (newSize > oldSize)
-        {
-          // Check for inserted interval.
-          int start = oldSize;
-          int end = newSize;
-          boolean found = false;
-          for (int i = 0; i < oldSize && ! found; i++)
-            {
-              if (! newCache.get(i).equals(contents.get(i)))
-                {
-                  start = i;
-                  boolean foundEnd = false;
-                  for (int j = i; j < newSize && ! foundEnd; j++)
-                    {
-                      if (newCache.get(j).equals(contents.get(i)))
-                        {
-                          end = j;
-                          foundEnd = true;
-                        }
-                    }
-                  end = i + oldSize - newSize;
-                }
-            }
-          if (start >= 0 && end > start
-              && newCache.subList(end, newSize)
-                                    .equals(contents.subList(start, oldSize)))
-            {
-              // Occasional check if we have been interrupted.
-              if (isInterrupted())
-                return;
-
-              List added = newCache.subList(start, end);
-              UpdateSwingRequest r = new UpdateSwingRequest(added, start,
-                                                            null, 0);
-              invokeLater(r);
-              newCache = null;
-            }
-        }
-
-      // Handle complete list changes (newCache != null).
-      if (newCache != null && ! contents.equals(newCache))
-        {
-          // Occasional check if we have been interrupted.
-          if (isInterrupted())
-            return;
-          UpdateSwingRequest r = new UpdateSwingRequest(newCache, 0,
-                                                        contents, 0);
-          invokeLater(r);
-        }
-    }
-
-    /**
-     * Wraps SwingUtilities.invokeLater() and stores the request in
-     * a Vector so that we can still cancel it later.
-     *
-     * @param update the request to invoke
-     */
-    private void invokeLater(UpdateSwingRequest update)
-    {
-      pending = update;
-      SwingUtilities.invokeLater(update);
-    }
-
-    /**
-     * Cancels all pending update requests that might be in the AWT
-     * event queue.
-     */
-    void cancelPending()
-    {
-      if (pending != null)
-        pending.cancel();
-    }
-  }
-
-  /** A Comparator class/object for sorting the file list. */
-  private Comparator comparator = new Comparator()
-    {
-      public int compare(Object o1, Object o2)
-      {
-        if (lt((File) o1, (File) o2))
-          return -1;
-        else
-          return 1;
-      }
-    };
-
-  /**
-   * Creates a new BasicDirectoryModel object.
-   *
-   * @param filechooser DOCUMENT ME!
-   */
-  public BasicDirectoryModel(JFileChooser filechooser)
-  {
-    this.filechooser = filechooser;
-    filechooser.addPropertyChangeListener(this);
-    listingMode = filechooser.getFileSelectionMode();
-    contents = new Vector();
-    validateFileCache();
-  }
-
-  /**
-   * Returns whether a given (File) object is included in the list.
-   *
-   * @param o - The file object to test.
-   *
-   * @return <code>true</code> if the list contains the given object.
-   */
-  public boolean contains(Object o)
-  {
-    return contents.contains(o);
-  }
-
-  /**
-   * Fires a content change event.
-   */
-  public void fireContentsChanged()
-  {
-    fireContentsChanged(this, 0, getSize() - 1);
-  }
-
-  /**
-   * Returns a Vector of (java.io.File) objects containing
-   * the directories in this list.
-   *
-   * @return a Vector
-   */
-  public Vector<File> getDirectories()
-  {
-    // Synchronize this with the UpdateSwingRequest for the case when
-    // contents is modified.
-    synchronized (contents)
-      {
-        Vector dirs = directories;
-        if (dirs == null)
-          {
-            // Initializes this in getFiles().
-            getFiles();
-            dirs = directories;
-          }
-        return dirs;
-      }
-  }
-
-  /**
-   * Returns the (java.io.File) object at
-   * an index in the list.
-   *
-   * @param index The list index
-   * @return a File object
-   */
-  public Object getElementAt(int index)
-  {
-    if (index > getSize() - 1)
-      return null;
-    return contents.elementAt(index);
-  }
-
-  /**
-   * Returns a Vector of (java.io.File) objects containing
-   * the files in this list.
-   *
-   * @return a Vector
-   */
-  public Vector<File>  getFiles()
-  {
-    synchronized (contents)
-      {
-        Vector f = files;
-        if (f == null)
-          {
-            f = new Vector();
-            Vector d = new Vector(); // Directories;
-            for (Iterator i = contents.iterator(); i.hasNext();)
-              {
-                File file = (File) i.next();
-                if (filechooser.isTraversable(file))
-                  d.add(file);
-                else
-                  f.add(file);
-              }
-            files = f;
-            directories = d;
-          }
-        return f;
-      }
-  }
-
-  /**
-   * Returns the size of the list, which only includes directories
-   * if the JFileChooser is set to DIRECTORIES_ONLY.
-   *
-   * Otherwise, both directories and files are included in the count.
-   *
-   * @return The size of the list.
-   */
-  public int getSize()
-  {
-    return contents.size();
-  }
-
-  /**
-   * Returns the index of an (java.io.File) object in the list.
-   *
-   * @param o The object - normally a File.
-   *
-   * @return the index of that object, or -1 if it is not in the list.
-   */
-  public int indexOf(Object o)
-  {
-    return contents.indexOf(o);
-  }
-
-  /**
-   * Obsoleted method which does nothing.
-   */
-  public void intervalAdded(ListDataEvent e)
-  {
-    // obsoleted
-  }
-
-  /**
-   * Obsoleted method which does nothing.
-   */
-  public void intervalRemoved(ListDataEvent e)
-  {
-    // obsoleted
-  }
-
-  /**
-   * Obsoleted method which does nothing.
-   */
-  public void invalidateFileCache()
-  {
-    // obsoleted
-  }
-
-  /**
-   * Less than, determine the relative order in the list of two files
-   * for sorting purposes.
-   *
-   * The order is: directories < files, and thereafter alphabetically,
-   * using the default locale collation.
-   *
-   * @param a the first file
-   * @param b the second file
-   *
-   * @return <code>true</code> if a > b, <code>false</code> if a < b.
-   */
-  protected boolean lt(File a, File b)
-  {
-    boolean aTrav = filechooser.isTraversable(a);
-    boolean bTrav = filechooser.isTraversable(b);
-
-    if (aTrav == bTrav)
-      {
-        String aname = a.getName().toLowerCase();
-        String bname = b.getName().toLowerCase();
-        return (aname.compareTo(bname) < 0) ? true : false;
-      }
-    else
-      {
-        if (aTrav)
-          return true;
-        else
-          return false;
-      }
-  }
-
-  /**
-   * Listens for a property change; the change in file selection mode of the
-   * associated JFileChooser. Reloads the file cache on that event.
-   *
-   * @param e - A PropertyChangeEvent.
-   */
-  public void propertyChange(PropertyChangeEvent e)
-  {
-    String property = e.getPropertyName();
-    if (property.equals(JFileChooser.DIRECTORY_CHANGED_PROPERTY)
-        || property.equals(JFileChooser.FILE_FILTER_CHANGED_PROPERTY)
-        || property.equals(JFileChooser.FILE_HIDING_CHANGED_PROPERTY)
-        || property.equals(JFileChooser.FILE_SELECTION_MODE_CHANGED_PROPERTY)
-        || property.equals(JFileChooser.FILE_VIEW_CHANGED_PROPERTY)
-        )
-      {
-        validateFileCache();
-      }
-  }
-
-  /**
-   * Renames a file - However, does <I>not</I> re-sort the list
-   * or replace the old file with the new one in the list.
-   *
-   * @param oldFile The old file
-   * @param newFile The new file name
-   *
-   * @return <code>true</code> if the rename succeeded
-   */
-  public boolean renameFile(File oldFile, File newFile)
-  {
-    return oldFile.renameTo( newFile );
-  }
-
-  /**
-   * Sorts a Vector of File objects.
-   *
-   * @param v The Vector to sort.
-   */
-  protected void sort(Vector<? extends File> v)
-  {
-    Collections.sort(v, comparator);
-  }
-
-  /**
-   * Re-loads the list of files
-   */
-  public void validateFileCache()
-  {
-    File dir = filechooser.getCurrentDirectory();
-    if (dir != null)
-      {
-        // Cancel all pending requests.
-        if (loadThread != null)
-          {
-            loadThread.interrupt();
-            loadThread.cancelPending();
-          }
-        loadThread = new DirectoryLoadThread(dir);
-        loadThread.start();
-      }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicEditorPaneUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicEditorPaneUI.java
deleted file mode 100644
index 6ddd251..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicEditorPaneUI.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/* BasicEditorPaneUI.java --
-   Copyright (C) 2004  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import javax.swing.JComponent;
-import javax.swing.JEditorPane;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.text.EditorKit;
-import javax.swing.text.JTextComponent;
-
-/**
- * The UI class for  {@link JEditorPane}s.
- *
- * @author original author unknown
- * @author Roman Kennke (roman@kennke.org)
- */
-public class BasicEditorPaneUI extends BasicTextUI
-{
-  /**
-   * Creates an instance of <code>BasicEditorPaneUI</code> for the text
-   * component <code>comp</code>.
-   *
-   * @param comp the component for which to create an UI
-   *
-   * @return the UI for <code>comp</code>
-   */
-  public static ComponentUI createUI(JComponent comp)
-  {
-    return new BasicEditorPaneUI();
-  }
-
-  /**
-   * Creates a new <code>BasicEditorPaneUI</code>
-   */
-  public BasicEditorPaneUI()
-  {
-    // Do nothing here.
-  }
-
-  /**
-   * Returns the property prefix to be used by this UI class. This is
-   * <code>EditorPane</code> in this case.
-   *
-   * @return <code>EditorPane</code>
-   */
-  protected String getPropertyPrefix()
-  {
-    return "EditorPane";
-  }
-
-  /**
-   * Gets the EditorKit for the text component.
-   *
-   * @param textComponent the text component for which to fetch the editor kit
-   */
-  public EditorKit getEditorKit(JTextComponent textComponent)
-  {
-    return ((JEditorPane) textComponent).getEditorKit();
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicFileChooserUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicFileChooserUI.java
deleted file mode 100644
index 347686d..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicFileChooserUI.java
+++ /dev/null
@@ -1,1437 +0,0 @@
-/* BasicFileChooserUI.java --
-   Copyright (C) 2005  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.basic;
-
-import java.awt.Window;
-import java.awt.event.ActionEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.beans.PropertyChangeListener;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Hashtable;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.Icon;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JDialog;
-import javax.swing.JFileChooser;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import javax.swing.SwingUtilities;
-import javax.swing.UIDefaults;
-import javax.swing.UIManager;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.filechooser.FileFilter;
-import javax.swing.filechooser.FileSystemView;
-import javax.swing.filechooser.FileView;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.FileChooserUI;
-import javax.swing.plaf.metal.MetalIconFactory;
-
-
-/**
- * A UI delegate for the {@link JFileChooser} component under the
- * {@link BasicLookAndFeel}.
- */
-public class BasicFileChooserUI extends FileChooserUI
-{
-  /**
-   * A file filter that accepts all files.
-   */
-  protected class AcceptAllFileFilter extends FileFilter
-  {
-    /**
-     * Creates a new instance.
-     */
-    public AcceptAllFileFilter()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns <code>true</code> always, as all files are accepted by this
-     * filter.
-     *
-     * @param f  the file.
-     *
-     * @return Always <code>true</code>.
-     */
-    public boolean accept(File f)
-    {
-      return true;
-    }
-
-    /**
-     * Returns a description for this filter.
-     *
-     * @return A description for the file filter.
-     */
-    public String getDescription()
-    {
-      return acceptAllFileFilterText;
-    }
-  }
-
-  /**
-   * Handles a user action to approve the dialog selection.
-   *
-   * @see BasicFileChooserUI#getApproveSelectionAction()
-   */
-  protected class ApproveSelectionAction extends AbstractAction
-  {
-    /**
-     * Creates a new ApproveSelectionAction object.
-     */
-    protected ApproveSelectionAction()
-    {
-      super("approveSelection");
-    }
-
-    /**
-     * Sets the current selection and closes the dialog.
-     *
-     * @param e  the action event.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      Object obj = null;
-      if (parentPath != null)
-        obj = new String(parentPath + getFileName());
-      else
-        obj = filechooser.getSelectedFile();
-      if (obj != null)
-        {
-          File f = filechooser.getFileSystemView().createFileObject(obj.toString());
-          File currSelected = filechooser.getSelectedFile();
-          if (filechooser.isTraversable(f))
-            {
-              filechooser.setCurrentDirectory(currSelected);
-              filechooser.rescanCurrentDirectory();
-            }
-          else
-            {
-              filechooser.approveSelection();
-              closeDialog();
-            }
-        }
-      else
-        {
-          File f = new File(filechooser.getCurrentDirectory(), getFileName());
-          if ( selectedDir != null )
-            f = selectedDir;
-          if (filechooser.isTraversable(f))
-            {
-              filechooser.setCurrentDirectory(f);
-              filechooser.rescanCurrentDirectory();
-            }
-          else
-            {
-              filechooser.setSelectedFile(f);
-              filechooser.approveSelection();
-              closeDialog();
-            }
-        }
-    }
-  }
-
-  /**
-   * Provides presentation information about files and directories.
-   */
-  protected class BasicFileView extends FileView
-  {
-    /** Storage for cached icons. */
-    protected Hashtable<File, Icon> iconCache = new Hashtable<File, Icon>();
-
-    /**
-     * Creates a new instance.
-     */
-    public BasicFileView()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Adds an icon to the cache, associating it with the given file/directory.
-     *
-     * @param f  the file/directory.
-     * @param i  the icon.
-     */
-    public void cacheIcon(File f, Icon i)
-    {
-      iconCache.put(f, i);
-    }
-
-    /**
-     * Clears the icon cache.
-     */
-    public void clearIconCache()
-    {
-      iconCache.clear();
-    }
-
-    /**
-     * Retrieves the icon associated with the specified file/directory, if
-     * there is one.
-     *
-     * @param f  the file/directory.
-     *
-     * @return The cached icon (or <code>null</code>).
-     */
-    public Icon getCachedIcon(File f)
-    {
-      return (Icon) iconCache.get(f);
-    }
-
-    /**
-     * Returns a description of the given file/directory.  In this
-     * implementation, the description is the same as the name returned by
-     * {@link #getName(File)}.
-     *
-     * @param f  the file/directory.
-     *
-     * @return A description of the given file/directory.
-     */
-    public String getDescription(File f)
-    {
-      return getName(f);
-    }
-
-    /**
-     * Returns an icon appropriate for the given file or directory.
-     *
-     * @param f  the file/directory.
-     *
-     * @return An icon.
-     */
-    public Icon getIcon(File f)
-    {
-      Icon val = getCachedIcon(f);
-      if (val != null)
-        return val;
-      if (filechooser.isTraversable(f))
-        val = directoryIcon;
-      else
-        val = fileIcon;
-      cacheIcon(f, val);
-      return val;
-    }
-
-    /**
-     * Returns the name for the given file/directory.
-     *
-     * @param f  the file/directory.
-     *
-     * @return The name of the file/directory.
-     */
-    public String getName(File f)
-    {
-      String name = null;
-      if (f != null)
-        {
-          JFileChooser c = getFileChooser();
-          FileSystemView v = c.getFileSystemView();
-          name = v.getSystemDisplayName(f);
-        }
-      return name;
-    }
-
-    /**
-     * Returns a localised description for the type of file/directory.
-     *
-     * @param f  the file/directory.
-     *
-     * @return A type description for the given file/directory.
-     */
-    public String getTypeDescription(File f)
-    {
-      if (filechooser.isTraversable(f))
-        return dirDescText;
-      else
-        return fileDescText;
-    }
-
-    /**
-     * Returns {@link Boolean#TRUE} if the given file/directory is hidden,
-     * and {@link Boolean#FALSE} otherwise.
-     *
-     * @param f  the file/directory.
-     *
-     * @return {@link Boolean#TRUE} or {@link Boolean#FALSE}.
-     */
-    public Boolean isHidden(File f)
-    {
-      return Boolean.valueOf(filechooser.getFileSystemView().isHiddenFile(f));
-    }
-  }
-
-  /**
-   * Handles an action to cancel the file chooser.
-   *
-   * @see BasicFileChooserUI#getCancelSelectionAction()
-   */
-  protected class CancelSelectionAction extends AbstractAction
-  {
-    /**
-     * Creates a new <code>CancelSelectionAction</code> object.
-     */
-    protected CancelSelectionAction()
-    {
-      super(null);
-    }
-
-    /**
-     * Cancels the selection and closes the dialog.
-     *
-     * @param e  the action event (ignored).
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      filechooser.setSelectedFile(null);
-      filechooser.setSelectedFiles(null);
-      filechooser.cancelSelection();
-      closeDialog();
-    }
-  }
-
-  /**
-   * An action to handle changes to the parent directory (for example, via
-   * a click on the "up folder" button).
-   *
-   * @see BasicFileChooserUI#getChangeToParentDirectoryAction()
-   */
-  protected class ChangeToParentDirectoryAction extends AbstractAction
-  {
-    /**
-     * Creates a new <code>ChangeToParentDirectoryAction</code> object.
-     */
-    protected ChangeToParentDirectoryAction()
-    {
-      super("Go Up");
-    }
-
-    /**
-     * Handles the action event.
-     *
-     * @param e  the action event.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      filechooser.changeToParentDirectory();
-      filechooser.revalidate();
-      filechooser.repaint();
-    }
-  }
-
-  /**
-   * A mouse listener that handles double-click events.
-   *
-   * @see BasicFileChooserUI#createDoubleClickListener(JFileChooser, JList)
-   */
-  protected class DoubleClickListener extends MouseAdapter
-  {
-
-    /** DOCUMENT ME! */
-    private Object lastSelected;
-
-    /** DOCUMENT ME! */
-    private JList list;
-
-    /**
-     * Creates a new DoubleClickListener object.
-     *
-     * @param list DOCUMENT ME!
-     */
-    public DoubleClickListener(JList list)
-    {
-      this.list = list;
-      lastSelected = list.getSelectedValue();
-      setDirectorySelected(false);
-    }
-
-    /**
-     * Handles a mouse click event.
-     *
-     * @param e  the event.
-     */
-    public void mouseClicked(MouseEvent e)
-    {
-      Object p = list.getSelectedValue();
-      if (p == null)
-        return;
-      FileSystemView fsv = filechooser.getFileSystemView();
-      if (e.getClickCount() >= 2 && lastSelected != null &&
-          p.toString().equals(lastSelected.toString()))
-        {
-          File f = fsv.createFileObject(lastSelected.toString());
-          if (filechooser.isTraversable(f))
-            {
-              filechooser.setCurrentDirectory(f);
-              filechooser.rescanCurrentDirectory();
-            }
-          else
-            {
-              filechooser.setSelectedFile(f);
-              filechooser.approveSelection();
-              closeDialog();
-            }
-        }
-      else // single click
-        {
-          String path = p.toString();
-          File f = fsv.createFileObject(path);
-          filechooser.setSelectedFile(f);
-
-          if (filechooser.isMultiSelectionEnabled())
-            {
-              int[] inds = list.getSelectedIndices();
-              File[] allFiles = new File[inds.length];
-              for (int i = 0; i < inds.length; i++)
-                allFiles[i] = (File) list.getModel().getElementAt(inds[i]);
-              filechooser.setSelectedFiles(allFiles);
-            }
-
-          if (filechooser.isTraversable(f))
-            {
-              setDirectorySelected(true);
-              setDirectory(f);
-            }
-          else
-            {
-              setDirectorySelected(false);
-              setDirectory(null);
-            }
-          lastSelected = path;
-          parentPath = f.getParent();
-
-          if (f.isFile())
-            setFileName(f.getName());
-          else if (filechooser.getFileSelectionMode() !=
-                   JFileChooser.FILES_ONLY)
-            setFileName(path);
-        }
-    }
-
-    /**
-     * Handles a mouse entered event (NOT IMPLEMENTED).
-     *
-     * @param e  the mouse event.
-     */
-    public void mouseEntered(MouseEvent e)
-    {
-      // FIXME: Implement
-    }
-  }
-
-  /**
-   * An action that changes the file chooser to display the user's home
-   * directory.
-   *
-   * @see BasicFileChooserUI#getGoHomeAction()
-   */
-  protected class GoHomeAction extends AbstractAction
-  {
-    /**
-     * Creates a new <code>GoHomeAction</code> object.
-     */
-    protected GoHomeAction()
-    {
-      super("Go Home");
-    }
-
-    /**
-     * Sets the directory to the user's home directory, and repaints the
-     * file chooser component.
-     *
-     * @param e  the action event (ignored).
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      filechooser.setCurrentDirectory(filechooser.getFileSystemView()
-                                                 .getHomeDirectory());
-      filechooser.revalidate();
-      filechooser.repaint();
-    }
-  }
-
-  /**
-   * An action that handles the creation of a new folder/directory.
-   *
-   * @see BasicFileChooserUI#getNewFolderAction()
-   */
-  protected class NewFolderAction extends AbstractAction
-  {
-    /**
-     * Creates a new <code>NewFolderAction</code> object.
-     */
-    protected NewFolderAction()
-    {
-      super("New Folder");
-    }
-
-    /**
-     * Handles the event by creating a new folder.
-     *
-     * @param e  the action event (ignored).
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      try
-        {
-          filechooser.getFileSystemView().createNewFolder(filechooser
-                                                          .getCurrentDirectory());
-        }
-      catch (IOException ioe)
-        {
-          return;
-        }
-      filechooser.rescanCurrentDirectory();
-      filechooser.repaint();
-    }
-  }
-
-  /**
-   * A listener for selection events in the file list.
-   *
-   * @see BasicFileChooserUI#createListSelectionListener(JFileChooser)
-   */
-  protected class SelectionListener implements ListSelectionListener
-  {
-    /**
-     * Creates a new <code>SelectionListener</code> object.
-     */
-    protected SelectionListener()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Sets the JFileChooser to the selected file on an update
-     *
-     * @param e DOCUMENT ME!
-     */
-    public void valueChanged(ListSelectionEvent e)
-    {
-      JList list = (JList) e.getSource();
-      Object f = list.getSelectedValue();
-      if (f == null)
-        return;
-      File file = filechooser.getFileSystemView().createFileObject(f.toString());
-      if (! filechooser.isTraversable(file))
-        {
-          selectedDir = null;
-          filechooser.setSelectedFile(file);
-        }
-      else
-        {
-          selectedDir = file;
-          filechooser.setSelectedFile(null);
-        }
-    }
-  }
-
-  /**
-   * DOCUMENT ME!
-   *
-   * @see BasicFileChooserUI#getUpdateAction()
-   */
-  protected class UpdateAction extends AbstractAction
-  {
-    /**
-     * Creates a new UpdateAction object.
-     */
-    protected UpdateAction()
-    {
-      super(null);
-    }
-
-    /**
-     * NOT YET IMPLEMENTED.
-     *
-     * @param e  the action event.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      // FIXME: implement this
-    }
-  }
-
-  /** The localised mnemonic for the cancel button. */
-  protected int cancelButtonMnemonic;
-
-  /** The localised text for the cancel button. */
-  protected String cancelButtonText;
-
-  /** The localised tool tip text for the cancel button. */
-  protected String cancelButtonToolTipText;
-
-  /** An icon representing a computer. */
-  protected Icon computerIcon;
-
-  /** An icon for the "details view" button. */
-  protected Icon detailsViewIcon;
-
-  /** An icon representing a directory. */
-  protected Icon directoryIcon;
-
-  /** The localised Mnemonic for the open button. */
-  protected int directoryOpenButtonMnemonic;
-
-  /** The localised text for the open button. */
-  protected String directoryOpenButtonText;
-
-  /** The localised tool tip text for the open button. */
-  protected String directoryOpenButtonToolTipText;
-
-  /** An icon representing a file. */
-  protected Icon fileIcon;
-
-  /** An icon representing a floppy drive. */
-  protected Icon floppyDriveIcon;
-
-  /** An icon representing a hard drive. */
-  protected Icon hardDriveIcon;
-
-  /** The localised mnemonic for the "help" button. */
-  protected int helpButtonMnemonic;
-
-  /** The localised text for the "help" button. */
-  protected String helpButtonText;
-
-  /** The localised tool tip text for the help button. */
-  protected String helpButtonToolTipText;
-
-  /** An icon representing the user's home folder. */
-  protected Icon homeFolderIcon;
-
-  /** An icon for the "list view" button. */
-  protected Icon listViewIcon;
-
-  /** An icon for the "new folder" button. */
-  protected Icon newFolderIcon = directoryIcon;
-
-  /** The localised mnemonic for the "open" button. */
-  protected int openButtonMnemonic;
-
-  /** The localised text for the "open" button. */
-  protected String openButtonText;
-
-  /** The localised tool tip text for the "open" button. */
-  protected String openButtonToolTipText;
-
-  /** The localised mnemonic for the "save" button. */
-  protected int saveButtonMnemonic;
-
-  /** The localised text for the "save" button. */
-  protected String saveButtonText;
-
-  /** The localised tool tip text for the save button. */
-  protected String saveButtonToolTipText;
-
-  /** The localised mnemonic for the "update" button. */
-  protected int updateButtonMnemonic;
-
-  /** The localised text for the "update" button. */
-  protected String updateButtonText;
-
-  /** The localised tool tip text for the "update" button. */
-  protected String updateButtonToolTipText;
-
-  /** An icon for the "up folder" button. */
-  protected Icon upFolderIcon;
-
-  // -- begin private, but package local since used in inner classes --
-
-  /** The file chooser component represented by this UI delegate. */
-  JFileChooser filechooser;
-
-  /** The model for the directory list. */
-  BasicDirectoryModel model;
-
-  /** The file filter for all files. */
-  FileFilter acceptAll = new AcceptAllFileFilter();
-
-  /** The default file view. */
-  FileView fv = new BasicFileView();
-
-  /** The accept (open/save) button. */
-  JButton accept;
-
-  /** An optional accessory panel. */
-  JPanel accessoryPanel = new JPanel();
-
-  /** A property change listener. */
-  PropertyChangeListener propertyChangeListener;
-
-  /** The text describing the filter for "all files". */
-  String acceptAllFileFilterText;
-
-  /** The text describing a directory type. */
-  String dirDescText;
-
-  /** The text describing a file type. */
-  String fileDescText;
-
-  /** Is a directory selected? */
-  boolean dirSelected;
-
-  /** The current directory. */
-  File currDir;
-
-  // FIXME: describe what is contained in the bottom panel
-  /** The bottom panel. */
-  JPanel bottomPanel;
-
-  /** The close panel. */
-  JPanel closePanel;
-
-  /** Text box that displays file name */
-  JTextField entry;
-
-  /** Current parent path */
-  String parentPath;
-
-  /**
-   * The action for the 'approve' button.
-   * @see #getApproveSelectionAction()
-   */
-  private ApproveSelectionAction approveSelectionAction;
-
-  /**
-   * The action for the 'cancel' button.
-   * @see #getCancelSelectionAction()
-   */
-  private CancelSelectionAction cancelSelectionAction;
-
-  /**
-   * The action for the 'go home' control button.
-   * @see #getGoHomeAction()
-   */
-  private GoHomeAction goHomeAction;
-
-  /**
-   * The action for the 'up folder' control button.
-   * @see #getChangeToParentDirectoryAction()
-   */
-  private ChangeToParentDirectoryAction changeToParentDirectoryAction;
-
-  /**
-   * The action for the 'new folder' control button.
-   * @see #getNewFolderAction()
-   */
-  private NewFolderAction newFolderAction;
-
-  /**
-   * The action for ???.  // FIXME: what is this?
-   * @see #getUpdateAction()
-   */
-  private UpdateAction updateAction;
-
-  /**
-   * When in FILES_ONLY, mode a directory cannot be selected, so
-   * we save a reference to any it here. This is used to enter
-   * the directory on "Open" when in that mode.
-   */
-  private File selectedDir;
-
-  // -- end private --
-
-  /**
-   * Closes the dialog.
-   */
-  void closeDialog()
-  {
-    Window owner = SwingUtilities.windowForComponent(filechooser);
-    if (owner instanceof JDialog)
-      ((JDialog) owner).dispose();
-  }
-
-  /**
-   * Creates a new <code>BasicFileChooserUI</code> object.
-   *
-   * @param b  the file chooser component.
-   */
-  public BasicFileChooserUI(JFileChooser b)
-  {
-  }
-
-  /**
-   * Returns a UI delegate for the given component.
-   *
-   * @param c  the component (should be a {@link JFileChooser}).
-   *
-   * @return A new UI delegate.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicFileChooserUI((JFileChooser) c);
-  }
-
-  /**
-   * Installs the UI for the specified component.
-   *
-   * @param c  the component (should be a {@link JFileChooser}).
-   */
-  public void installUI(JComponent c)
-  {
-    if (c instanceof JFileChooser)
-      {
-        JFileChooser fc = (JFileChooser) c;
-        this.filechooser = fc;
-        fc.resetChoosableFileFilters();
-        createModel();
-        clearIconCache();
-        installDefaults(fc);
-        installComponents(fc);
-        installListeners(fc);
-
-        File path = filechooser.getCurrentDirectory();
-        if (path != null)
-          parentPath = path.getParent();
-      }
-  }
-
-  /**
-   * Uninstalls this UI from the given component.
-   *
-   * @param c  the component (should be a {@link JFileChooser}).
-   */
-  public void uninstallUI(JComponent c)
-  {
-    model = null;
-    uninstallListeners(filechooser);
-    uninstallComponents(filechooser);
-    uninstallDefaults(filechooser);
-    filechooser = null;
-  }
-
-  // FIXME: Indent the entries in the combobox
-  // Made this method package private to access it from within inner classes
-  // with better performance
-  void boxEntries()
-  {
-    ArrayList parentFiles = new ArrayList();
-    File parent = filechooser.getCurrentDirectory();
-    if (parent == null)
-      parent = filechooser.getFileSystemView().getDefaultDirectory();
-    while (parent != null)
-      {
-        String name = parent.getName();
-        if (name.equals(""))
-          name = parent.getAbsolutePath();
-
-        parentFiles.add(parentFiles.size(), name);
-        parent = parent.getParentFile();
-      }
-
-    if (parentFiles.size() == 0)
-      return;
-
-  }
-
-  /**
-   * Creates and install the subcomponents for the file chooser.
-   *
-   * @param fc  the file chooser.
-   */
-  public void installComponents(JFileChooser fc)
-  {
-  }
-
-  /**
-   * Uninstalls the components from the file chooser.
-   *
-   * @param fc  the file chooser.
-   */
-  public void uninstallComponents(JFileChooser fc)
-  {
-  }
-
-  /**
-   * Installs the listeners required by this UI delegate.
-   *
-   * @param fc  the file chooser.
-   */
-  protected void installListeners(JFileChooser fc)
-  {
-    propertyChangeListener = createPropertyChangeListener(filechooser);
-    if (propertyChangeListener != null)
-      filechooser.addPropertyChangeListener(propertyChangeListener);
-    fc.addPropertyChangeListener(getModel());
-  }
-
-  /**
-   * Uninstalls the listeners previously installed by this UI delegate.
-   *
-   * @param fc  the file chooser.
-   */
-  protected void uninstallListeners(JFileChooser fc)
-  {
-    if (propertyChangeListener != null)
-      {
-        filechooser.removePropertyChangeListener(propertyChangeListener);
-        propertyChangeListener = null;
-      }
-    fc.removePropertyChangeListener(getModel());
-  }
-
-  /**
-   * Installs the defaults for this UI delegate.
-   *
-   * @param fc  the file chooser.
-   */
-  protected void installDefaults(JFileChooser fc)
-  {
-    installIcons(fc);
-    installStrings(fc);
-  }
-
-  /**
-   * Uninstalls the defaults previously added by this UI delegate.
-   *
-   * @param fc  the file chooser.
-   */
-  protected void uninstallDefaults(JFileChooser fc)
-  {
-    uninstallStrings(fc);
-    uninstallIcons(fc);
-  }
-
-  /**
-   * Installs the icons for this UI delegate.
-   *
-   * @param fc  the file chooser (ignored).
-   */
-  protected void installIcons(JFileChooser fc)
-  {
-    UIDefaults defaults = UIManager.getLookAndFeelDefaults();
-    computerIcon = MetalIconFactory.getTreeComputerIcon();
-    detailsViewIcon = defaults.getIcon("FileChooser.detailsViewIcon");
-    directoryIcon = new MetalIconFactory.TreeFolderIcon();
-    fileIcon = new MetalIconFactory.TreeLeafIcon();
-    floppyDriveIcon = MetalIconFactory.getTreeFloppyDriveIcon();
-    hardDriveIcon = MetalIconFactory.getTreeHardDriveIcon();
-    homeFolderIcon = defaults.getIcon("FileChooser.homeFolderIcon");
-    listViewIcon = defaults.getIcon("FileChooser.listViewIcon");
-    newFolderIcon = defaults.getIcon("FileChooser.newFolderIcon");
-    upFolderIcon = defaults.getIcon("FileChooser.upFolderIcon");
-  }
-
-  /**
-   * Uninstalls the icons previously added by this UI delegate.
-   *
-   * @param fc  the file chooser.
-   */
-  protected void uninstallIcons(JFileChooser fc)
-  {
-    computerIcon = null;
-    detailsViewIcon = null;
-    directoryIcon = null;
-    fileIcon = null;
-    floppyDriveIcon = null;
-    hardDriveIcon = null;
-    homeFolderIcon = null;
-    listViewIcon = null;
-    newFolderIcon = null;
-    upFolderIcon = null;
-  }
-
-  /**
-   * Installs the strings used by this UI delegate.
-   *
-   * @param fc  the file chooser.
-   */
-  protected void installStrings(JFileChooser fc)
-  {
-    UIDefaults defaults = UIManager.getLookAndFeelDefaults();
-
-    dirDescText = defaults.getString("FileChooser.directoryDescriptionText");
-    fileDescText = defaults.getString("FileChooser.fileDescriptionText");
-
-    acceptAllFileFilterText = defaults.getString("FileChooser.acceptAllFileFilterText");
-    cancelButtonText = "Cancel";
-    cancelButtonToolTipText = "Abort file chooser dialog";
-    cancelButtonMnemonic = new Integer((String) UIManager.get("FileChooser.cancelButtonMnemonic")).intValue();
-
-    directoryOpenButtonText = "Open";
-    directoryOpenButtonToolTipText = "Open selected directory";
-    directoryOpenButtonMnemonic
-        = new Integer((String) UIManager.get("FileChooser.directoryOpenButtonMnemonic")).intValue();
-
-    helpButtonText = "Help";
-    helpButtonToolTipText = "FileChooser help";
-    helpButtonMnemonic = new Integer((String) UIManager.get("FileChooser.helpButtonMnemonic")).intValue();
-
-    openButtonText = "Open";
-    openButtonToolTipText = "Open selected file";
-    openButtonMnemonic = new Integer((String) UIManager.get("FileChooser.openButtonMnemonic")).intValue();
-
-    saveButtonText = "Save";
-    saveButtonToolTipText = "Save selected file";
-    saveButtonMnemonic = new Integer((String) UIManager.get("FileChooser.saveButtonMnemonic")).intValue();
-
-    updateButtonText = "Update";
-    updateButtonToolTipText = "Update directory listing";
-    updateButtonMnemonic = new Integer((String) UIManager.get("FileChooser.updateButtonMnemonic")).intValue();
-  }
-
-  /**
-   * Uninstalls the strings previously added by this UI delegate.
-   *
-   * @param fc  the file chooser.
-   */
-  protected void uninstallStrings(JFileChooser fc)
-  {
-    acceptAllFileFilterText = null;
-    dirDescText = null;
-    fileDescText = null;
-
-    cancelButtonText = null;
-    cancelButtonToolTipText = null;
-
-    directoryOpenButtonText = null;
-    directoryOpenButtonToolTipText = null;
-
-    helpButtonText = null;
-    helpButtonToolTipText = null;
-
-    openButtonText = null;
-    openButtonToolTipText = null;
-
-    saveButtonText = null;
-    saveButtonToolTipText = null;
-
-    updateButtonText = null;
-    updateButtonToolTipText = null;
-  }
-
-  /**
-   * Creates a new directory model.
-   */
-  protected void createModel()
-  {
-    model = new BasicDirectoryModel(filechooser);
-  }
-
-  /**
-   * Returns the directory model.
-   *
-   * @return The directory model.
-   */
-  public BasicDirectoryModel getModel()
-  {
-    return model;
-  }
-
-  /**
-   * Creates a listener to handle changes to the properties of the given
-   * file chooser component.
-   *
-   * @param fc  the file chooser component.
-   *
-   * @return A new listener.
-   */
-  public PropertyChangeListener createPropertyChangeListener(JFileChooser fc)
-  {
-    // The RI returns null here, so do we.
-    return null;
-  }
-
-  /**
-   * Returns the current file name.
-   *
-   * @return The current file name.
-   */
-  public String getFileName()
-  {
-    return entry.getText();
-  }
-
-  /**
-   * Returns the current directory name.
-   *
-   * @return The directory name.
-   *
-   * @see #setDirectoryName(String)
-   */
-  public String getDirectoryName()
-  {
-    // XXX: I don't see a case where the thing returns something non-null..
-    return null;
-  }
-
-  /**
-   * Sets the file name.
-   *
-   * @param filename  the file name.
-   *
-   * @see #getFileName()
-   */
-  public void setFileName(String filename)
-  {
-    // FIXME:  it might be the case that this method provides an access
-    // point for the JTextField (or whatever) a subclass is using...
-    //this.filename = filename;
-  }
-
-  /**
-   * Sets the directory name (NOT IMPLEMENTED).
-   *
-   * @param dirname  the directory name.
-   *
-   * @see #getDirectoryName()
-   */
-  public void setDirectoryName(String dirname)
-  {
-    // FIXME: Implement
-  }
-
-  /**
-   * Rescans the current directory.
-   *
-   * @param fc  the file chooser.
-   */
-  public void rescanCurrentDirectory(JFileChooser fc)
-  {
-    getModel().validateFileCache();
-  }
-
-  /**
-   * NOT YET IMPLEMENTED.
-   *
-   * @param fc  the file chooser.
-   * @param f  the file.
-   */
-  public void ensureFileIsVisible(JFileChooser fc, File f)
-  {
-    // XXX: Not sure what this does.
-  }
-
-  /**
-   * Returns the {@link JFileChooser} component that this UI delegate
-   * represents.
-   *
-   * @return The component represented by this UI delegate.
-   */
-  public JFileChooser getFileChooser()
-  {
-    return filechooser;
-  }
-
-  /**
-   * Returns the optional accessory panel.
-   *
-   * @return The optional accessory panel.
-   */
-  public JPanel getAccessoryPanel()
-  {
-    return accessoryPanel;
-  }
-
-  /**
-   * Returns the approve (open or save) button for the dialog.
-   *
-   * @param fc  the file chooser.
-   *
-   * @return The button.
-   */
-  protected JButton getApproveButton(JFileChooser fc)
-  {
-    return accept;
-  }
-
-  /**
-   * Returns the tool tip text for the approve (open/save) button.  This first
-   * checks the file chooser to see if a value has been explicitly set - if
-   * not, a default value appropriate for the type of file chooser is
-   * returned.
-   *
-   * @param fc  the file chooser.
-   *
-   * @return The tool tip text.
-   */
-  public String getApproveButtonToolTipText(JFileChooser fc)
-  {
-    if (fc.getApproveButtonToolTipText() != null)
-      return fc.getApproveButtonToolTipText();
-    else if (fc.getDialogType() == JFileChooser.SAVE_DIALOG)
-      return saveButtonToolTipText;
-    else
-      return openButtonToolTipText;
-  }
-
-  /**
-   * Clears the icon cache.
-   */
-  public void clearIconCache()
-  {
-    if (fv instanceof BasicFileView)
-      ((BasicFileView) fv).clearIconCache();
-  }
-
-  /**
-   * Creates a new listener to handle selections in the file list.
-   *
-   * @param fc  the file chooser component.
-   *
-   * @return A new instance of {@link SelectionListener}.
-   */
-  public ListSelectionListener createListSelectionListener(JFileChooser fc)
-  {
-    return new SelectionListener();
-  }
-
-  /**
-   * Creates a new listener to handle double-click events.
-   *
-   * @param fc  the file chooser component.
-   * @param list  the list.
-   *
-   * @return A new instance of {@link DoubleClickListener}.
-   */
-  protected MouseListener createDoubleClickListener(JFileChooser fc, JList list)
-  {
-    return new DoubleClickListener(list);
-  }
-
-  /**
-   * Returns <code>true</code> if a directory is selected, and
-   * <code>false</code> otherwise.
-   *
-   * @return A boolean.
-   */
-  protected boolean isDirectorySelected()
-  {
-    return dirSelected;
-  }
-
-  /**
-   * Sets the flag that indicates whether the current directory is selected.
-   *
-   * @param selected  the new flag value.
-   */
-  protected void setDirectorySelected(boolean selected)
-  {
-    dirSelected = selected;
-  }
-
-  /**
-   * Returns the current directory.
-   *
-   * @return The current directory.
-   */
-  protected File getDirectory()
-  {
-    return currDir;
-  }
-
-  /**
-   * Sets the current directory.
-   *
-   * @param f  the directory.
-   */
-  protected void setDirectory(File f)
-  {
-    currDir = f;
-  }
-
-  /**
-   * Returns the "accept all" file filter.
-   *
-   * @param fc  the file chooser component.
-   *
-   * @return The "accept all" file filter.
-   */
-  public FileFilter getAcceptAllFileFilter(JFileChooser fc)
-  {
-    return acceptAll;
-  }
-
-  /**
-   * Returns the default file view (NOT the file view from the file chooser,
-   * if there is one).
-   *
-   * @param fc  the file chooser component.
-   *
-   * @return The file view.
-   *
-   * @see JFileChooser#getFileView()
-   */
-  public FileView getFileView(JFileChooser fc)
-  {
-    return fv;
-  }
-
-  /**
-   * Returns the dialog title.
-   *
-   * @param fc  the file chooser (<code>null</code> not permitted).
-   *
-   * @return The dialog title.
-   *
-   * @see JFileChooser#getDialogTitle()
-   */
-  public String getDialogTitle(JFileChooser fc)
-  {
-    String result = fc.getDialogTitle();
-    if (result == null)
-      result = getApproveButtonText(fc);
-    return result;
-  }
-
-  /**
-   * Returns the approve button mnemonic.
-   *
-   * @param fc  the file chooser (<code>null</code> not permitted).
-   *
-   * @return The approve button mnemonic.
-   *
-   * @see JFileChooser#getApproveButtonMnemonic()
-   */
-  public int getApproveButtonMnemonic(JFileChooser fc)
-  {
-    if (fc.getApproveButtonMnemonic() != 0)
-      return fc.getApproveButtonMnemonic();
-    else if (fc.getDialogType() == JFileChooser.SAVE_DIALOG)
-      return saveButtonMnemonic;
-    else
-      return openButtonMnemonic;
-  }
-
-  /**
-   * Returns the approve button text.
-   *
-   * @param fc  the file chooser (<code>null</code> not permitted).
-   *
-   * @return The approve button text.
-   *
-   * @see JFileChooser#getApproveButtonText()
-   */
-  public String getApproveButtonText(JFileChooser fc)
-  {
-    String result = fc.getApproveButtonText();
-    if (result == null)
-      {
-        if (fc.getDialogType() == JFileChooser.SAVE_DIALOG)
-          result = saveButtonText;
-        else
-          result = openButtonText;
-      }
-    return result;
-  }
-
-  /**
-   * Creates and returns a new action that will be used with the "new folder"
-   * button.
-   *
-   * @return A new instance of {@link NewFolderAction}.
-   */
-  public Action getNewFolderAction()
-  {
-    if (newFolderAction == null)
-      newFolderAction = new NewFolderAction();
-    return newFolderAction;
-  }
-
-  /**
-   * Creates and returns a new action that will be used with the "home folder"
-   * button.
-   *
-   * @return A new instance of {@link GoHomeAction}.
-   */
-  public Action getGoHomeAction()
-  {
-    if (goHomeAction == null)
-      goHomeAction = new GoHomeAction();
-    return goHomeAction;
-  }
-
-  /**
-   * Returns the action that handles events for the "up folder" control button.
-   *
-   * @return An instance of {@link ChangeToParentDirectoryAction}.
-   */
-  public Action getChangeToParentDirectoryAction()
-  {
-    if (changeToParentDirectoryAction == null)
-      changeToParentDirectoryAction = new ChangeToParentDirectoryAction();
-    return changeToParentDirectoryAction;
-  }
-
-  /**
-   * Returns the action that handles events for the "approve" button.
-   *
-   * @return An instance of {@link ApproveSelectionAction}.
-   */
-  public Action getApproveSelectionAction()
-  {
-    if (approveSelectionAction == null)
-      approveSelectionAction = new ApproveSelectionAction();
-    return approveSelectionAction;
-  }
-
-  /**
-   * Returns the action that handles events for the "cancel" button.
-   *
-   * @return An instance of {@link CancelSelectionAction}.
-   */
-  public Action getCancelSelectionAction()
-  {
-    if (cancelSelectionAction == null)
-      cancelSelectionAction = new CancelSelectionAction();
-    return cancelSelectionAction;
-  }
-
-  /**
-   * Returns the update action (an instance of {@link UpdateAction}).
-   *
-   * @return An action.
-   */
-  public Action getUpdateAction()
-  {
-    if (updateAction == null)
-      updateAction = new UpdateAction();
-    return updateAction;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicFormattedTextFieldUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicFormattedTextFieldUI.java
deleted file mode 100644
index 5559214..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicFormattedTextFieldUI.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/* BasicFormattedTextFieldUI.java
-   Copyright (C) 2004, 2005  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import javax.swing.JComponent;
-import javax.swing.UIDefaults;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * @since 1.4
- */
-public class BasicFormattedTextFieldUI extends BasicTextFieldUI
-{
-  public BasicFormattedTextFieldUI()
-  {
-    // Nothing to do here.
-  }
-
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicFormattedTextFieldUI();
-  }
-
-  /**
-   * Returns the prefix for entries in the {@link UIDefaults} table.
-   *
-   * @return "FormattedTextField"
-   */
-  protected String getPropertyPrefix()
-  {
-    return "FormattedTextField";
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicGraphicsUtils.java b/libjava/classpath/javax/swing/plaf/basic/BasicGraphicsUtils.java
deleted file mode 100644
index f270d33..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicGraphicsUtils.java
+++ /dev/null
@@ -1,821 +0,0 @@
-/* BasicGraphicsUtils.java
-   Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.basic;
-
-import gnu.classpath.SystemProperties;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.Insets;
-import java.awt.Rectangle;
-import java.awt.font.FontRenderContext;
-import java.awt.font.LineMetrics;
-import java.awt.font.TextLayout;
-import java.awt.geom.Rectangle2D;
-
-import javax.swing.AbstractButton;
-import javax.swing.Icon;
-import javax.swing.JComponent;
-import javax.swing.SwingUtilities;
-
-
-/**
- * A utility class providing commonly used drawing and measurement
- * routines.
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public class BasicGraphicsUtils
-{
-  /**
-   * Used as a key for a client property to store cached TextLayouts in. This
-   * is used for speed-up drawing of text in
-   * {@link #drawString(Graphics, String, int, int, int)}.
-   */
-  static final String CACHED_TEXT_LAYOUT =
-    "BasicGraphicsUtils.cachedTextLayout";
-
-  /**
-   * Constructor. It is utterly unclear why this class should
-   * be constructable, but this is what the API specification
-   * says.
-   */
-  public BasicGraphicsUtils()
-  {
-    // Nothing to do here.
-  }
-
-
-  /**
-   * Draws a rectangle that appears etched into the surface, given
-   * four colors that are used for drawing.
-   *
-   * <p><img src="doc-files/BasicGraphicsUtils-1.png" width="360"
-   * height="200" alt="[An illustration that shows which pixels
-   * get painted in what color]" />
-   *
-   * @param g the graphics into which the rectangle is drawn.
-   * @param x the x coordinate of the rectangle.
-   * @param y the y coordinate of the rectangle.
-   * @param width the width of the rectangle in pixels.
-   * @param height the height of the rectangle in pixels.
-   *
-   * @param shadow the color that will be used for painting
-   *        the outer side of the top and left edges.
-   *
-   * @param darkShadow the color that will be used for painting
-   *        the inner side of the top and left edges.
-   *
-   * @param highlight the color that will be used for painting
-   *        the inner side of the bottom and right edges.
-   *
-   * @param lightHighlight the color that will be used for painting
-   *        the outer side of the bottom and right edges.
-   *
-   * @see #getEtchedInsets()
-   * @see javax.swing.border.EtchedBorder
-   */
-  public static void drawEtchedRect(Graphics g,
-                                    int x, int y, int width, int height,
-                                    Color shadow, Color darkShadow,
-                                    Color highlight, Color lightHighlight)
-  {
-    Color oldColor;
-    int x2, y2;
-
-    oldColor = g.getColor();
-    x2 = x + width - 1;
-    y2 = y + height - 1;
-
-    try
-    {
-      /* To understand this code, it might be helpful to look at the
-       * image "BasicGraphicsUtils-1.png" that is included with the
-       * JavaDoc. The file is located in the "doc-files" subdirectory.
-       *
-       * (x2, y2) is the coordinate of the most right and bottom pixel
-       * to be painted.
-       */
-      g.setColor(shadow);
-      g.drawLine(x, y, x2 - 1, y);                     // top, outer
-      g.drawLine(x, y + 1, x, y2 - 1);                 // left, outer
-
-      g.setColor(darkShadow);
-      g.drawLine(x + 1, y + 1, x2 - 2, y + 1);         // top, inner
-      g.drawLine(x + 1, y + 2, x + 1, y2 - 2);         // left, inner
-
-      g.setColor(highlight);
-      g.drawLine(x + 1, y2 - 1, x2 - 1, y2 - 1);       // bottom, inner
-      g.drawLine(x2 - 1, y + 1, x2 - 1, y2 - 2);       // right, inner
-
-      g.setColor(lightHighlight);
-      g.drawLine(x, y2, x2, y2);                       // bottom, outer
-      g.drawLine(x2, y, x2, y2 - 1);                   // right, outer
-    }
-    finally
-    {
-      g.setColor(oldColor);
-    }
-  }
-
-
-  /**
-   * Determines the width of the border that gets painted by
-   * {@link #drawEtchedRect}.
-   *
-   * @return an <code>Insets</code> object whose <code>top</code>,
-   *         <code>left</code>, <code>bottom</code> and
-   *         <code>right</code> field contain the border width at the
-   *         respective edge in pixels.
-   */
-  public static Insets getEtchedInsets()
-  {
-    return new Insets(2, 2, 2, 2);
-  }
-
-
-  /**
-   * Draws a rectangle that appears etched into the surface, given
-   * two colors that are used for drawing.
-   *
-   * <p><img src="doc-files/BasicGraphicsUtils-2.png" width="360"
-   * height="200" alt="[An illustration that shows which pixels
-   * get painted in what color]" />
-   *
-   * @param g the graphics into which the rectangle is drawn.
-   * @param x the x coordinate of the rectangle.
-   * @param y the y coordinate of the rectangle.
-   * @param width the width of the rectangle in pixels.
-   * @param height the height of the rectangle in pixels.
-   *
-   * @param shadow the color that will be used for painting the outer
-   *        side of the top and left edges, and for the inner side of
-   *        the bottom and right ones.
-   *
-   * @param highlight the color that will be used for painting the
-   *        inner side of the top and left edges, and for the outer
-   *        side of the bottom and right ones.
-   *
-   * @see #getGrooveInsets()
-   * @see javax.swing.border.EtchedBorder
-   */
-  public static void drawGroove(Graphics g,
-                                int x, int y, int width, int height,
-                                Color shadow, Color highlight)
-  {
-    /* To understand this, it might be helpful to look at the image
-     * "BasicGraphicsUtils-2.png" that is included with the JavaDoc,
-     * and to compare it with "BasicGraphicsUtils-1.png" which shows
-     * the pixels painted by drawEtchedRect.  These image files are
-     * located in the "doc-files" subdirectory.
-     */
-    drawEtchedRect(g, x, y, width, height,
-                   /* outer topLeft */     shadow,
-                   /* inner topLeft */     highlight,
-                   /* inner bottomRight */ shadow,
-                   /* outer bottomRight */ highlight);
-  }
-
-
-  /**
-   * Determines the width of the border that gets painted by
-   * {@link #drawGroove}.
-   *
-   * @return an <code>Insets</code> object whose <code>top</code>,
-   *         <code>left</code>, <code>bottom</code> and
-   *         <code>right</code> field contain the border width at the
-   *         respective edge in pixels.
-   */
-  public static Insets getGrooveInsets()
-  {
-    return new Insets(2, 2, 2, 2);
-  }
-
-
-  /**
-   * Draws a border that is suitable for buttons of the Basic look and
-   * feel.
-   *
-   * <p><img src="doc-files/BasicGraphicsUtils-3.png" width="500"
-   * height="300" alt="[An illustration that shows which pixels
-   * get painted in what color]" />
-   *
-   * @param g the graphics into which the rectangle is drawn.
-   * @param x the x coordinate of the rectangle.
-   * @param y the y coordinate of the rectangle.
-   * @param width the width of the rectangle in pixels.
-   * @param height the height of the rectangle in pixels.
-   *
-   * @param isPressed <code>true</code> to draw the button border
-   *        with a pressed-in appearance; <code>false</code> for
-   *        normal (unpressed) appearance.
-   *
-   * @param isDefault <code>true</code> to draw the border with
-   *        the appearance it has when hitting the enter key in a
-   *        dialog will simulate a click to this button;
-   *        <code>false</code> for normal appearance.
-   *
-   * @param shadow the shadow color.
-   * @param darkShadow a darker variant of the shadow color.
-   * @param highlight the highlight color.
-   * @param lightHighlight a brighter variant of the highlight  color.
-   */
-  public static void drawBezel(Graphics g,
-                               int x, int y, int width, int height,
-                               boolean isPressed, boolean isDefault,
-                               Color shadow, Color darkShadow,
-                               Color highlight, Color lightHighlight)
-  {
-    Color oldColor = g.getColor();
-
-    /* To understand this, it might be helpful to look at the image
-     * "BasicGraphicsUtils-3.png" that is included with the JavaDoc,
-     * and to compare it with "BasicGraphicsUtils-1.png" which shows
-     * the pixels painted by drawEtchedRect.  These image files are
-     * located in the "doc-files" subdirectory.
-     */
-    try
-    {
-      if ((isPressed == false) && (isDefault == false))
-      {
-        drawEtchedRect(g, x, y, width, height,
-                       lightHighlight, highlight,
-                       shadow, darkShadow);
-      }
-
-      if ((isPressed == true) && (isDefault == false))
-      {
-        g.setColor(shadow);
-        g.drawRect(x + 1, y + 1, width - 2, height - 2);
-      }
-
-      if ((isPressed == false) && (isDefault == true))
-      {
-        g.setColor(darkShadow);
-        g.drawRect(x, y, width - 1, height - 1);
-        drawEtchedRect(g, x + 1, y + 1, width - 2, height - 2,
-                       lightHighlight, highlight,
-                       shadow, darkShadow);
-      }
-
-      if ((isPressed == true) && (isDefault == true))
-      {
-        g.setColor(darkShadow);
-        g.drawRect(x, y, width - 1, height - 1);
-        g.setColor(shadow);
-        g.drawRect(x + 1, y + 1, width - 3, height - 3);
-      }
-    }
-    finally
-    {
-      g.setColor(oldColor);
-    }
-  }
-
-
-  /**
-   * Draws a rectangle that appears lowered into the surface, given
-   * four colors that are used for drawing.
-   *
-   * <p><img src="doc-files/BasicGraphicsUtils-4.png" width="360"
-   * height="200" alt="[An illustration that shows which pixels
-   * get painted in what color]" />
-   *
-   * <p><strong>Compatibility with the Sun reference
-   * implementation:</strong> The Sun reference implementation seems
-   * to ignore the <code>x</code> and <code>y</code> arguments, at
-   * least in JDK 1.3.1 and 1.4.1_01.  The method always draws the
-   * rectangular area at location (0, 0). A bug report has been filed
-   * with Sun; its &#x201c;bug ID&#x201d; is 4880003.  The GNU Classpath
-   * implementation behaves correctly, thus not replicating this bug.
-   *
-   * @param g the graphics into which the rectangle is drawn.
-   * @param x the x coordinate of the rectangle.
-   * @param y the y coordinate of the rectangle.
-   * @param width the width of the rectangle in pixels.
-   * @param height the height of the rectangle in pixels.
-   *
-   * @param shadow the color that will be used for painting
-   *        the inner side of the top and left edges.
-   *
-   * @param darkShadow the color that will be used for painting
-   *        the outer side of the top and left edges.
-   *
-   * @param highlight the color that will be used for painting
-   *        the inner side of the bottom and right edges.
-   *
-   * @param lightHighlight the color that will be used for painting
-   *        the outer side of the bottom and right edges.
-   */
-  public static void drawLoweredBezel(Graphics g,
-                                      int x, int y, int width, int height,
-                                      Color shadow, Color darkShadow,
-                                      Color highlight, Color lightHighlight)
-  {
-    /* Like drawEtchedRect, but swapping darkShadow and shadow.
-     *
-     * To understand this, it might be helpful to look at the image
-     * "BasicGraphicsUtils-4.png" that is included with the JavaDoc,
-     * and to compare it with "BasicGraphicsUtils-1.png" which shows
-     * the pixels painted by drawEtchedRect.  These image files are
-     * located in the "doc-files" subdirectory.
-     */
-    drawEtchedRect(g, x, y, width, height,
-                   darkShadow, shadow,
-                   highlight, lightHighlight);
-  }
-
-
-  /**
-   * Draws a String at the given location, underlining the first
-   * occurence of a specified character. The algorithm for determining
-   * the underlined position is not sensitive to case. If the
-   * character is not part of <code>text</code>, the text will be
-   * drawn without underlining. Drawing is performed in the current
-   * color and font of <code>g</code>.
-   *
-   * <p><img src="doc-files/BasicGraphicsUtils-5.png" width="500"
-   * height="100" alt="[An illustration showing how to use the
-   * method]" />
-   *
-   * @param g the graphics into which the String is drawn.
-   *
-   * @param text the String to draw.
-   *
-   * @param underlinedChar the character whose first occurence in
-   *        <code>text</code> will be underlined. It is not clear
-   *        why the API specification declares this argument to be
-   *        of type <code>int</code> instead of <code>char</code>.
-   *        While this would allow to pass Unicode characters outside
-   *        Basic Multilingual Plane 0 (U+0000 .. U+FFFE), at least
-   *        the GNU Classpath implementation does not underline
-   *        anything if <code>underlinedChar</code> is outside
-   *        the range of <code>char</code>.
-   *
-   * @param x the x coordinate of the text, as it would be passed to
-   *        {@link java.awt.Graphics#drawString(java.lang.String,
-   *        int, int)}.
-   *
-   * @param y the y coordinate of the text, as it would be passed to
-   *        {@link java.awt.Graphics#drawString(java.lang.String,
-   *        int, int)}.
-   */
-  public static void drawString(Graphics g, String text,
-                                int underlinedChar, int x, int y)
-  {
-    int index = -1;
-
-    /* It is intentional that lower case is used. In some languages,
-     * the set of lowercase characters is larger than the set of
-     * uppercase ones. Therefore, it is good practice to use lowercase
-     * for such comparisons (which really means that the author of this
-     * code can vaguely remember having read some Unicode techreport
-     * with this recommendation, but is too lazy to look for the URL).
-     */
-    if ((underlinedChar >= 0) || (underlinedChar <= 0xffff))
-      index = text.toLowerCase().indexOf(
-        Character.toLowerCase((char) underlinedChar));
-
-    drawStringUnderlineCharAt(g, text, index, x, y);
-  }
-
-
-  /**
-   * Draws a String at the given location, underlining the character
-   * at the specified index. Drawing is performed in the current color
-   * and font of <code>g</code>.
-   *
-   * <p><img src="doc-files/BasicGraphicsUtils-5.png" width="500"
-   * height="100" alt="[An illustration showing how to use the
-   * method]" />
-   *
-   * @param g the graphics into which the String is drawn.
-   *
-   * @param text the String to draw.
-   *
-   * @param underlinedIndex the index of the underlined character in
-   *        <code>text</code>.  If <code>underlinedIndex</code> falls
-   *        outside the range <code>[0, text.length() - 1]</code>, the
-   *        text will be drawn without underlining anything.
-   *
-   * @param x the x coordinate of the text, as it would be passed to
-   *        {@link java.awt.Graphics#drawString(java.lang.String,
-   *        int, int)}.
-   *
-   * @param y the y coordinate of the text, as it would be passed to
-   *        {@link java.awt.Graphics#drawString(java.lang.String,
-   *        int, int)}.
-   *
-   * @since 1.4
-   */
-  public static void drawStringUnderlineCharAt(Graphics g, String text,
-                                               int underlinedIndex,
-                                               int x, int y)
-  {
-    Graphics2D g2;
-    Rectangle2D.Double underline;
-    FontRenderContext frc;
-    FontMetrics fmet;
-    LineMetrics lineMetrics;
-    Font font;
-    TextLayout layout;
-    double underlineX1, underlineX2;
-    boolean drawUnderline;
-    int textLength;
-
-    textLength = text.length();
-    if (textLength == 0)
-      return;
-
-    drawUnderline = (underlinedIndex >= 0) && (underlinedIndex < textLength);
-
-    // FIXME: unfortunately pango and cairo can't agree on metrics
-    // so for the time being we continue to *not* use TextLayouts.
-    if (true || !(g instanceof Graphics2D))
-    {
-      /* Fall-back. This is likely to produce garbage for any text
-       * containing right-to-left (Hebrew or Arabic) characters, even
-       * if the underlined character is left-to-right.
-       */
-      g.drawString(text, x, y);
-      if (drawUnderline)
-      {
-        fmet = g.getFontMetrics();
-        g.fillRect(
-          /* x */ x + fmet.stringWidth(text.substring(0, underlinedIndex)),
-          /* y */ y + fmet.getDescent() - 1,
-          /* width */ fmet.charWidth(text.charAt(underlinedIndex)),
-          /* height */ 1);
-      }
-
-      return;
-    }
-
-    g2 = (Graphics2D) g;
-    font = g2.getFont();
-    frc = g2.getFontRenderContext();
-    lineMetrics = font.getLineMetrics(text, frc);
-    layout = new TextLayout(text, font, frc);
-
-    /* Draw the text. */
-    layout.draw(g2, x, y);
-    if (!drawUnderline)
-      return;
-
-    underlineX1 = x + layout.getLogicalHighlightShape(
-     underlinedIndex, underlinedIndex).getBounds2D().getX();
-    underlineX2 = x + layout.getLogicalHighlightShape(
-     underlinedIndex + 1, underlinedIndex + 1).getBounds2D().getX();
-
-    underline = new Rectangle2D.Double();
-    if (underlineX1 < underlineX2)
-    {
-      underline.x = underlineX1;
-      underline.width = underlineX2 - underlineX1;
-    }
-    else
-    {
-      underline.x = underlineX2;
-      underline.width = underlineX1 - underlineX2;
-    }
-
-
-    underline.height = lineMetrics.getUnderlineThickness();
-    underline.y = lineMetrics.getUnderlineOffset();
-    if (underline.y == 0)
-    {
-      /* Some fonts do not specify an underline offset, although they
-       * actually should do so. In that case, the result of calling
-       * lineMetrics.getUnderlineOffset() will be zero. Since it would
-       * look very ugly if the underline was be positioned immediately
-       * below the baseline, we check for this and move the underline
-       * below the descent, as shown in the following ASCII picture:
-       *
-       *   #####       ##### #
-       *  #     #     #     #
-       *  #     #     #     #
-       *  #     #     #     #
-       *   #####       ######        ---- baseline (0)
-       *                    #
-       *                    #
-       * ------------------###----------- lineMetrics.getDescent()
-       */
-      underline.y = lineMetrics.getDescent();
-    }
-
-    underline.y += y;
-    g2.fill(underline);
-  }
-
-  /**
-   * Draws a string on the specified component.
-   *
-   * @param c the component
-   * @param g the Graphics context
-   * @param text the string
-   * @param underlinedChar the character to be underlined
-   * @param x the X location
-   * @param y the Y location
-   */
-  static void drawString(JComponent c, Graphics g, String text,
-                                int underlinedChar, int x, int y)
-  {
-    int index = -1;
-
-    /* It is intentional that lower case is used. In some languages,
-     * the set of lowercase characters is larger than the set of
-     * uppercase ones. Therefore, it is good practice to use lowercase
-     * for such comparisons (which really means that the author of this
-     * code can vaguely remember having read some Unicode techreport
-     * with this recommendation, but is too lazy to look for the URL).
-     */
-    if ((underlinedChar >= 0) || (underlinedChar <= 0xffff))
-      index = text.toLowerCase().indexOf(
-        Character.toLowerCase((char) underlinedChar));
-
-    drawStringUnderlineCharAt(c, g, text, index, x, y);
-  }
-
-
-  /**
-   * Draws a String at the given location, underlining the character
-   * at the specified index. Drawing is performed in the current color
-   * and font of <code>g</code>.
-   *
-   * <p><img src="doc-files/BasicGraphicsUtils-5.png" width="500"
-   * height="100" alt="[An illustration showing how to use the
-   * method]" />
-   *
-   * This is an accelerated version of the method with the same name. It
-   * uses a pre-laid out TextLayout stored in a client property.
-   *
-   * @param c the component that is drawn
-   * @param g the graphics into which the String is drawn.
-   *
-   * @param text the String to draw.
-   *
-   * @param underlinedIndex the index of the underlined character in
-   *        <code>text</code>.  If <code>underlinedIndex</code> falls
-   *        outside the range <code>[0, text.length() - 1]</code>, the
-   *        text will be drawn without underlining anything.
-   *
-   * @param x the x coordinate of the text, as it would be passed to
-   *        {@link java.awt.Graphics#drawString(java.lang.String,
-   *        int, int)}.
-   *
-   * @param y the y coordinate of the text, as it would be passed to
-   *        {@link java.awt.Graphics#drawString(java.lang.String,
-   *        int, int)}.
-   */
-  static void drawStringUnderlineCharAt(JComponent c, Graphics g, String text,
-                                        int underlinedIndex,
-                                        int x, int y)
-  {
-    Graphics2D g2;
-    Rectangle2D.Double underline;
-    FontRenderContext frc;
-    FontMetrics fmet;
-    LineMetrics lineMetrics;
-    Font font;
-    TextLayout layout;
-    double underlineX1, underlineX2;
-    boolean drawUnderline;
-    int textLength;
-
-    textLength = text.length();
-    if (textLength == 0)
-      return;
-
-    drawUnderline = (underlinedIndex >= 0) && (underlinedIndex < textLength);
-
-    // FIXME: unfortunately pango and cairo can't agree on metrics
-    // so for the time being we continue to *not* use TextLayouts.
-    if (!(g instanceof Graphics2D)
-       || SystemProperties.getProperty("gnu.javax.swing.noGraphics2D") != null)
-    {
-      /* Fall-back. This is likely to produce garbage for any text
-       * containing right-to-left (Hebrew or Arabic) characters, even
-       * if the underlined character is left-to-right.
-       */
-      g.drawString(text, x, y);
-      if (drawUnderline)
-      {
-        fmet = g.getFontMetrics();
-        g.fillRect(
-          /* x */ x + fmet.stringWidth(text.substring(0, underlinedIndex)),
-          /* y */ y + 1,
-          /* width */ fmet.charWidth(text.charAt(underlinedIndex)),
-          /* height */ 1);
-      }
-
-      return;
-    }
-
-    g2 = (Graphics2D) g;
-    font = g2.getFont();
-    frc = g2.getFontRenderContext();
-    lineMetrics = font.getLineMetrics(text, frc);
-    layout = (TextLayout) c.getClientProperty(CACHED_TEXT_LAYOUT);
-    if (layout == null)
-      {
-        layout = new TextLayout(text, font, frc);
-        System.err.println("Unable to use cached TextLayout for: " + text);
-      }
-
-    /* Draw the text. */
-    layout.draw(g2, x, y);
-    if (!drawUnderline)
-      return;
-
-    underlineX1 = x + layout.getLogicalHighlightShape(
-     underlinedIndex, underlinedIndex).getBounds2D().getX();
-    underlineX2 = x + layout.getLogicalHighlightShape(
-     underlinedIndex + 1, underlinedIndex + 1).getBounds2D().getX();
-
-    underline = new Rectangle2D.Double();
-    if (underlineX1 < underlineX2)
-    {
-      underline.x = underlineX1;
-      underline.width = underlineX2 - underlineX1;
-    }
-    else
-    {
-      underline.x = underlineX2;
-      underline.width = underlineX1 - underlineX2;
-    }
-
-
-    underline.height = lineMetrics.getUnderlineThickness();
-    underline.y = lineMetrics.getUnderlineOffset();
-    if (underline.y == 0)
-    {
-      /* Some fonts do not specify an underline offset, although they
-       * actually should do so. In that case, the result of calling
-       * lineMetrics.getUnderlineOffset() will be zero. Since it would
-       * look very ugly if the underline was be positioned immediately
-       * below the baseline, we check for this and move the underline
-       * below the descent, as shown in the following ASCII picture:
-       *
-       *   #####       ##### #
-       *  #     #     #     #
-       *  #     #     #     #
-       *  #     #     #     #
-       *   #####       ######        ---- baseline (0)
-       *                    #
-       *                    #
-       * ------------------###----------- lineMetrics.getDescent()
-       */
-      underline.y = lineMetrics.getDescent();
-    }
-
-    underline.y += y;
-    g2.fill(underline);
-  }
-
-  /**
-   * Draws a rectangle, simulating a dotted stroke by painting only
-   * every second pixel along the one-pixel thick edge. The color of
-   * those pixels is the current color of the Graphics <code>g</code>.
-   * Any other pixels are left unchanged.
-   *
-   * <p><img src="doc-files/BasicGraphicsUtils-7.png" width="360"
-   * height="200" alt="[An illustration that shows which pixels
-   * get painted]" />
-   *
-   * @param g the graphics into which the rectangle is drawn.
-   * @param x the x coordinate of the rectangle.
-   * @param y the y coordinate of the rectangle.
-   * @param width the width of the rectangle in pixels.
-   * @param height the height of the rectangle in pixels.
-   */
-  public static void drawDashedRect(Graphics g,
-                                    int x, int y, int width, int height)
-  {
-    int right = x + width - 1;
-    int bottom = y + height - 1;
-
-    /* Draw the top and bottom edge of the dotted rectangle. */
-    for (int i = x; i <= right; i += 2)
-    {
-      g.drawLine(i, y, i, y);
-      g.drawLine(i, bottom, i, bottom);
-    }
-
-    /* Draw the left and right edge of the dotted rectangle. */
-    for (int i = y; i <= bottom; i += 2)
-    {
-      g.drawLine(x, i, x, i);
-      g.drawLine(right, i, right, i);
-    }
-  }
-
-  /**
-   * Determines the preferred width and height of an AbstractButton,
-   * given the gap between the button&#x2019;s text and icon.
-   *
-   * @param b the button whose preferred size is determined.
-   *
-   * @param textIconGap the gap between the button&#x2019;s text and
-   *        icon.
-   *
-   * @return a <code>Dimension</code> object whose <code>width</code>
-   *         and <code>height</code> fields indicate the preferred
-   *         extent in pixels.
-   *
-   * @see javax.swing.SwingUtilities#layoutCompoundLabel(JComponent,
-   *      FontMetrics, String, Icon, int, int, int, int, Rectangle, Rectangle,
-   *      Rectangle, int)
-   */
-  public static Dimension getPreferredButtonSize(AbstractButton b,
-                                                 int textIconGap)
-  {
-    // These cached rectangles are use here and in BasicButtonUI.paint(),
-    // so these two methods must never be executed concurrently. Maybe
-    // we must use other Rectangle instances here. OTOH, Swing is
-    // designed to be not thread safe, and every layout and paint operation
-    // should be performed from the EventDispatchThread, so it _should_ be
-    // OK to do this optimization.
-    Rectangle viewRect = BasicButtonUI.viewR;
-    viewRect.x = 0;
-    viewRect.y = 0;
-    viewRect.width = Short.MAX_VALUE;
-    viewRect.height = Short.MAX_VALUE;
-    Rectangle iconRect = BasicButtonUI.iconR;
-    iconRect.x = 0;
-    iconRect.y = 0;
-    iconRect.width = 0;
-    iconRect.height = 0;
-    Rectangle textRect = BasicButtonUI.textR;
-    textRect.x = 0;
-    textRect.y = 0;
-    textRect.width = 0;
-    textRect.height = 0;
-
-   SwingUtilities.layoutCompoundLabel(
-      b, // for the component orientation
-      b.getFontMetrics(b.getFont()), // see comment above
-      b.getText(),
-      b.getIcon(),
-      b.getVerticalAlignment(),
-      b.getHorizontalAlignment(),
-      b.getVerticalTextPosition(),
-      b.getHorizontalTextPosition(),
-      viewRect, iconRect, textRect,
-      textIconGap);
-
-    /*  +------------------------+       +------------------------+
-     *  |                        |       |                        |
-     *  | ICON                   |       | CONTENTCONTENTCONTENT  |
-     *  |          TEXTTEXTTEXT  |  -->  | CONTENTCONTENTCONTENT  |
-     *  |          TEXTTEXTTEXT  |       | CONTENTCONTENTCONTENT  |
-     *  +------------------------+       +------------------------+
-     */
-
-    Rectangle contentRect =
-      SwingUtilities.computeUnion(textRect.x, textRect.y, textRect.width,
-                                  textRect.height, iconRect);
-
-    Insets insets = b.getInsets();
-    return new Dimension(insets.left + contentRect.width + insets.right,
-                         insets.top + contentRect.height + insets.bottom);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicHTML.java b/libjava/classpath/javax/swing/plaf/basic/BasicHTML.java
deleted file mode 100644
index a7ce8b1..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicHTML.java
+++ /dev/null
@@ -1,471 +0,0 @@
-/* BasicHTML.java -- Provides HTML support to ComponentUI implementations
-   Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Container;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-import java.awt.Shape;
-import java.io.IOException;
-import java.io.StringReader;
-
-import javax.swing.JComponent;
-import javax.swing.SwingConstants;
-import javax.swing.event.DocumentEvent;
-import javax.swing.text.AttributeSet;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.Document;
-import javax.swing.text.EditorKit;
-import javax.swing.text.Element;
-import javax.swing.text.Position;
-import javax.swing.text.View;
-import javax.swing.text.ViewFactory;
-import javax.swing.text.html.HTMLDocument;
-import javax.swing.text.html.HTMLEditorKit;
-
-/**
- * Provides support for HTML rendering to {@link javax.swing.plaf.ComponentUI}
- * implementations.
- *
- * @author Roman Kennke (kennke@aicas.com)
- */
-public class BasicHTML
-{
-
-  /**
-   * This class serves as the root view for HTML rendering components.
-   * Its purpose and implementation is similar to the BasicTextUI.RootView
-   * class, only that is implements some stuff differently due to the nature
-   * of not beeing inside a JTextComponent.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  private static class HTMLRootView extends View
-  {
-    /**
-     * The real root view.
-     */
-    private View view;
-
-    /**
-     * The component on which to render the view.
-     */
-    private JComponent component;
-
-    /**
-     * The EditorKit.
-     */
-    private EditorKit editorKit;
-
-    /**
-     * The document to use.
-     */
-    private Document document;
-
-    /**
-     * Creates a new RootView.
-     */
-    public HTMLRootView(JComponent c, View view, EditorKit kit, Document doc)
-    {
-      super(null);
-      component = c;
-      editorKit = kit;
-      document = doc;
-      setView(view);
-      setSize(view.getPreferredSpan(X_AXIS), view.getPreferredSpan(Y_AXIS));
-    }
-
-    /**
-     * Returns the ViewFactory for this RootView. If the current EditorKit
-     * provides a ViewFactory, this is used. Otherwise the TextUI itself
-     * is returned as a ViewFactory.
-     *
-     * @return the ViewFactory for this RootView
-     */
-    public ViewFactory getViewFactory()
-    {
-      return editorKit.getViewFactory();
-    }
-
-    /**
-     * Indicates that the preferences of one of the child view has changed.
-     * This calls revalidate on the text component.
-     *
-     * @param v the child view which's preference has changed
-     * @param width <code>true</code> if the width preference has changed
-     * @param height <code>true</code> if the height preference has changed
-     */
-    public void preferenceChanged(View v, boolean width, boolean height)
-    {
-      component.revalidate();
-    }
-
-    /**
-     * Sets the real root view.
-     *
-     * @param v the root view to set
-     */
-    public void setView(View v)
-    {
-      if (view != null)
-        view.setParent(null);
-
-      if (v != null)
-        v.setParent(this);
-
-      view = v;
-    }
-
-    /**
-     * Overridden to forward to real view.
-     */
-    public void setSize(float w, float h)
-    {
-      view.setSize(w, h);
-    }
-
-    /**
-     * Returns the real root view, regardless of the index.
-     *
-     * @param index not used here
-     *
-     * @return the real root view, regardless of the index.
-     */
-    public View getView(int index)
-    {
-      return view;
-    }
-
-    /**
-     * Returns <code>1</code> since the RootView always contains one
-     * child, that is the real root of the View hierarchy.
-     *
-     * @return <code>1</code> since the RootView always contains one
-     *         child, that is the real root of the View hierarchy
-     */
-    public int getViewCount()
-    {
-      int count = 0;
-      if (view != null)
-        count = 1;
-      return count;
-    }
-
-    /**
-     * Returns the <code>Container</code> that contains this view. This
-     * normally will be the text component that is managed by this TextUI.
-     *
-     * @return the <code>Container</code> that contains this view
-     */
-    public Container getContainer()
-    {
-      return component;
-    }
-
-    /**
-     * Returns the preferred span along the specified <code>axis</code>.
-     * This is delegated to the real root view.
-     *
-     * @param axis the axis for which the preferred span is queried
-     *
-     * @return the preferred span along the axis
-     */
-    public float getPreferredSpan(int axis)
-    {
-      if (view != null)
-        return view.getPreferredSpan(axis);
-
-      return Integer.MAX_VALUE;
-    }
-
-    /**
-     * Paints the view. This is delegated to the real root view.
-     *
-     * @param g the <code>Graphics</code> context to paint to
-     * @param s the allocation for the View
-     */
-    public void paint(Graphics g, Shape s)
-    {
-      if (view != null)
-        {
-          Rectangle b = s.getBounds();
-          view.setSize(b.width, b.height);
-          view.paint(g, s);
-        }
-    }
-
-
-    /**
-     * Maps a position in the document into the coordinate space of the View.
-     * The output rectangle usually reflects the font height but has a width
-     * of zero.
-     *
-     * This is delegated to the real root view.
-     *
-     * @param position the position of the character in the model
-     * @param a the area that is occupied by the view
-     * @param bias either {@link Position.Bias#Forward} or
-     *        {@link Position.Bias#Backward} depending on the preferred
-     *        direction bias. If <code>null</code> this defaults to
-     *        <code>Position.Bias.Forward</code>
-     *
-     * @return a rectangle that gives the location of the document position
-     *         inside the view coordinate space
-     *
-     * @throws BadLocationException if <code>pos</code> is invalid
-     * @throws IllegalArgumentException if b is not one of the above listed
-     *         valid values
-     */
-    public Shape modelToView(int position, Shape a, Position.Bias bias)
-      throws BadLocationException
-    {
-      return view.modelToView(position, a, bias);
-    }
-
-    /**
-     * Maps coordinates from the <code>View</code>'s space into a position
-     * in the document model.
-     *
-     * @param x the x coordinate in the view space
-     * @param y the y coordinate in the view space
-     * @param a the allocation of this <code>View</code>
-     * @param b the bias to use
-     *
-     * @return the position in the document that corresponds to the screen
-     *         coordinates <code>x, y</code>
-     */
-    public int viewToModel(float x, float y, Shape a, Position.Bias[] b)
-    {
-      return view.viewToModel(x, y, a, b);
-    }
-
-    /**
-     * Notification about text insertions. These are forwarded to the
-     * real root view.
-     *
-     * @param ev the DocumentEvent describing the change
-     * @param shape the current allocation of the view's display
-     * @param vf the ViewFactory to use for creating new Views
-     */
-    public void insertUpdate(DocumentEvent ev, Shape shape, ViewFactory vf)
-    {
-      view.insertUpdate(ev, shape, vf);
-    }
-
-    /**
-     * Notification about text removals. These are forwarded to the
-     * real root view.
-     *
-     * @param ev the DocumentEvent describing the change
-     * @param shape the current allocation of the view's display
-     * @param vf the ViewFactory to use for creating new Views
-     */
-    public void removeUpdate(DocumentEvent ev, Shape shape, ViewFactory vf)
-    {
-      view.removeUpdate(ev, shape, vf);
-    }
-
-    /**
-     * Notification about text changes. These are forwarded to the
-     * real root view.
-     *
-     * @param ev the DocumentEvent describing the change
-     * @param shape the current allocation of the view's display
-     * @param vf the ViewFactory to use for creating new Views
-     */
-    public void changedUpdate(DocumentEvent ev, Shape shape, ViewFactory vf)
-    {
-      view.changedUpdate(ev, shape, vf);
-    }
-
-    /**
-     * Returns the document position that is (visually) nearest to the given
-     * document position <code>pos</code> in the given direction <code>d</code>.
-     *
-     * @param pos the document position
-     * @param b the bias for <code>pos</code>
-     * @param a the allocation for the view
-     * @param d the direction, must be either {@link SwingConstants#NORTH},
-     *        {@link SwingConstants#SOUTH}, {@link SwingConstants#WEST} or
-     *        {@link SwingConstants#EAST}
-     * @param biasRet an array of {@link Position.Bias} that can hold at least
-     *        one element, which is filled with the bias of the return position
-     *        on method exit
-     *
-     * @return the document position that is (visually) nearest to the given
-     *         document position <code>pos</code> in the given direction
-     *         <code>d</code>
-     *
-     * @throws BadLocationException if <code>pos</code> is not a valid offset in
-     *         the document model
-     */
-    public int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a,
-                                         int d, Position.Bias[] biasRet)
-      throws BadLocationException
-    {
-      return view.getNextVisualPositionFrom(pos, b, a, d, biasRet);
-    }
-
-    public int getStartOffset()
-    {
-      return 0;
-    }
-
-    public int getEndOffset()
-    {
-      return getDocument().getLength();
-    }
-
-    public Document getDocument()
-    {
-      return document;
-    }
-
-    /**
-     * Overridden to return null, as a RootView has no attributes on its own.
-     */
-    public AttributeSet getAttributes()
-    {
-      return null;
-    }
-
-    /**
-     * Overridden to provide an element for the view.
-     */
-    public Element getElement()
-    {
-      return view.getElement();
-    }
-  }
-
-  /**
-   * The key that is used to store a HTML view in a JComponent's client
-   * properties.
-   */
-  public static final String propertyKey = "html";
-
-  /**
-   * The key that is used to store the document base in a JComponent's client
-   * properties. The document base is used to resolve relative references
-   * in HTML.
-   */
-  public static final String documentBaseKey = "html.base";
-
-  /**
-   * Creates a new instance of BasicHTML. This should not be necessary since
-   * all methods in this class are static.
-   */
-  public BasicHTML()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Creates a {@link View} instance that can be used by the component
-   * <code>c</code> to render the HTML string <code>html</code>.
-   *
-   * @param c the component that needs to render the HTML string
-   * @param html the HTML string to be rendered
-   *
-   * @return a view that can render the HTML string
-   */
-  public static View createHTMLView(JComponent c, String html)
-  {
-    // TODO: This might be wrong. Lets see if it turns out good when
-    // the javax.swing.text.html package is in a good shape.
-    HTMLDocument doc = new HTMLDocument();
-    HTMLEditorKit kit = new HTMLEditorKit();
-    StringReader reader = new StringReader(html);
-    try
-      {
-        kit.read(reader, doc, 0);
-      }
-    catch (IOException ex)
-      {
-        AssertionError err = new AssertionError("unexpected IOException");
-        err.initCause(ex);
-        throw err;
-      }
-    catch (BadLocationException ex)
-      {
-        AssertionError err =
-          new AssertionError("unexpected BadLocationException");
-        err.initCause(ex);
-        throw err;
-      }
-    ViewFactory vf = kit.getViewFactory();
-    Element root = doc.getDefaultRootElement();
-    View view = vf.create(root);
-    HTMLRootView rootView = new HTMLRootView(c, view, kit, doc);
-    return rootView;
-  }
-
-  /**
-   * Returns <code>true</code> if <code>s</code> is HTML, <code>false</code>
-   * otherwise.
-   *
-   * @param s the string to test
-   *
-   * @return <code>true</code> if <code>s</code> is HTML, <code>false</code>
-   *         otherwise
-   */
-  public static boolean isHTMLString(String s)
-  {
-    // We consider a string to be HTML if it contains both the '<' and '>'
-    // character at least once.
-    return (s != null) && s.contains("<") && s.contains(">");
-  }
-
-  /**
-   * Stores a HTML renderer in <code>c</code>'s client property if
-   * <code>text</code> is HTML, otherwise it clears the corresponding client
-   * property. This is useful for {@link javax.swing.plaf.ComponentUI}
-   * implementations that are shared between it's components.
-   *
-   * @param c the component to update the renderer for
-   * @param text the string to be rendered
-   */
-  public static void updateRenderer(JComponent c, String text)
-  {
-    if (isHTMLString(text))
-      c.putClientProperty(propertyKey, createHTMLView(c, text));
-    else
-      c.putClientProperty(propertyKey, null);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicIconFactory.java b/libjava/classpath/javax/swing/plaf/basic/BasicIconFactory.java
deleted file mode 100644
index 1b5afa7..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicIconFactory.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/* BasicIconFactory.java --
-   Copyright (C) 2002, 2004, 2005  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Graphics;
-import java.io.Serializable;
-
-import javax.swing.Icon;
-import javax.swing.JCheckBoxMenuItem;
-
-/**
- * Creates icons for the {@link BasicLookAndFeel}.
- */
-public class BasicIconFactory implements Serializable
-{
-  static final long serialVersionUID = 5605588811185324383L;
-
-  private static class DummyIcon
-    implements Icon
-  {
-    public int getIconHeight()
-    {
-      return 10;
-    }
-    public int getIconWidth()
-    {
-      return 10;
-    }
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color save = g.getColor();
-      g.setColor(c.getForeground());
-      g.drawRect(x, y, 10, 10);
-      g.setColor(save);
-    }
-  }
-
-  /**
-   * The icon used for CheckBoxes in the BasicLookAndFeel. This is an empty
-   * icon with a size of 13x13 pixels.
-   */
-  static class CheckBoxIcon
-    implements Icon
-  {
-    /**
-     * Returns the height of the icon. The BasicLookAndFeel CheckBox icon
-     * has a height of 13 pixels.
-     *
-     * @return the height of the icon
-     */
-    public int getIconHeight()
-    {
-      return 13;
-    }
-
-    /**
-     * Returns the width of the icon. The BasicLookAndFeel CheckBox icon
-     * has a width of 13 pixels.
-     *
-     * @return the height of the icon
-     */
-    public int getIconWidth()
-    {
-      return 13;
-    }
-
-    /**
-     * Paints the icon. The BasicLookAndFeel CheckBox icon is empty and does
-     * not need to be painted.
-     *
-     * @param c the component to be painted
-     * @param g the Graphics context to be painted with
-     * @param x the x position of the icon
-     * @param y the y position of the icon
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      // The icon is empty and needs no painting.
-    }
-  }
-
-  /**
-   * The icon used for {@link JCheckBoxMenuItem}s in the
-   * {@link BasicLookAndFeel}. This icon has a size of 9x9 pixels.
-   */
-  static class CheckBoxMenuItemIcon
-    implements Icon
-  {
-    /**
-     * Returns the height of the icon in pixels.
-     *
-     * @return the height of the icon
-     */
-    public int getIconHeight()
-    {
-      return 9;
-    }
-
-    /**
-     * Returns the width of the icon in pixels.
-     *
-     * @return the height of the icon
-     */
-    public int getIconWidth()
-    {
-      return 9;
-    }
-
-    /**
-     * Paints the icon.
-     *
-     * @param c the component to be painted
-     * @param g the Graphics context to be painted with
-     * @param x the x position of the icon
-     * @param y the y position of the icon
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      JCheckBoxMenuItem item = (JCheckBoxMenuItem) c;
-      if (item.isSelected())
-        {
-          // paint the check...
-          g.setColor(Color.black);
-          g.drawLine(x + 1, y + 3, x + 1, y + 4);
-          g.drawLine(x + 2, y + 4, x + 2, y + 5);
-          for (int i = 0; i < 5; i++)
-            g.drawLine(x + 3 + i, y + 5 - i, x + 3 + i, y + 6 - i);
-        }
-    }
-  }
-
-  /**
-   * The icon used for RadioButtons in the BasicLookAndFeel. This is an empty
-   * icon with a size of 13x13 pixels.
-   */
-  static class RadioButtonIcon
-    implements Icon
-  {
-    /**
-     * Returns the height of the icon. The BasicLookAndFeel RadioButton icon
-     * has a height of 13 pixels.
-     *
-     * @return the height of the icon
-     */
-    public int getIconHeight()
-    {
-      return 13;
-    }
-
-    /**
-     * Returns the width of the icon. The BasicLookAndFeel RadioButton icon
-     * has a width of 13 pixels.
-     *
-     * @return the height of the icon
-     */
-    public int getIconWidth()
-    {
-      return 13;
-    }
-
-    /**
-     * Paints the icon. The BasicLookAndFeel RadioButton icon is empty and does
-     * not need to be painted.
-     *
-     * @param c the component to be painted
-     * @param g the Graphics context to be painted with
-     * @param x the x position of the icon
-     * @param y the y position of the icon
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      // The icon is empty and needs no painting.
-    }
-  }
-  /** The cached CheckBoxIcon instance. */
-  private static CheckBoxIcon checkBoxIcon;
-
-  /** The cached RadioButtonIcon instance. */
-  private static RadioButtonIcon radioButtonIcon;
-
-  public static Icon getMenuItemCheckIcon()
-  {
-    return new Icon()
-    {
-      public int getIconHeight()
-      {
-        return 13;
-      }
-
-      public int getIconWidth()
-      {
-        return 13;
-      }
-
-      public void paintIcon(Component c, Graphics g, int x, int y)
-      {
-        Color saved = g.getColor();
-        g.setColor(Color.BLACK);
-        g.drawLine(3 + x, 5 + y, 3 + x, 9 + y);
-        g.drawLine(4 + x, 5 + y, 4 + x, 9 + y);
-        g.drawLine(5 + x, 7 + y, 9 + x, 3 + y);
-        g.drawLine(5 + x, 8 + y, 9 + x, 4 + y);
-        g.setColor(saved);
-      }
-    };
-  }
-  public static Icon getMenuItemArrowIcon()
-  {
-    return new DummyIcon();
-  }
-
-  /**
-   * Returns a new instance of a 4 x 8 icon showing a small black triangle that
-   * points to the right.  This is displayed in menu items that have a
-   * sub menu.
-   *
-   * @return The icon.
-   */
-  public static Icon getMenuArrowIcon()
-  {
-    return new Icon()
-      {
-        public int getIconHeight()
-        {
-          return 8;
-        }
-        public int getIconWidth()
-        {
-          return 4;
-        }
-        public void paintIcon(Component c, Graphics g, int x, int y)
-        {
-          Color saved = g.getColor();
-          g.setColor(Color.BLACK);
-          for (int i = 0; i < 4; i++)
-            g.drawLine(x + i, y + i, x + i, y + 7 - i);
-          g.setColor(saved);
-        }
-      };
-  }
-
-  /**
-   * Returns an icon for CheckBoxes in the BasicLookAndFeel. CheckBox icons
-   * in the Basic L&amp;F are empty and have a size of 13x13 pixels.
-   * This method returns a shared single instance of this icon.
-   *
-   * @return an icon for CheckBoxes in the BasicLookAndFeel
-   */
-  public static Icon getCheckBoxIcon()
-  {
-    if (checkBoxIcon == null)
-      checkBoxIcon = new CheckBoxIcon();
-    return checkBoxIcon;
-  }
-
-  /**
-   * Returns an icon for RadioButtons in the BasicLookAndFeel. RadioButton
-   * icons in the Basic L&amp;F are empty and have a size of 13x13 pixels.
-   * This method returns a shared single instance of this icon.
-   *
-   * @return an icon for RadioButtons in the BasicLookAndFeel
-   */
-  public static Icon getRadioButtonIcon()
-  {
-    if (radioButtonIcon == null)
-      radioButtonIcon = new RadioButtonIcon();
-    return radioButtonIcon;
-  }
-
-  /**
-   * Creates and returns an icon used when rendering {@link JCheckBoxMenuItem}
-   * components.
-   *
-   * @return An icon.
-   */
-  public static Icon getCheckBoxMenuItemIcon()
-  {
-    return new CheckBoxMenuItemIcon();
-  }
-
-  public static Icon getRadioButtonMenuItemIcon()
-  {
-    return getRadioButtonIcon();
-  }
-
-  public static Icon createEmptyFrameIcon()
-  {
-    return new DummyIcon();
-  }
-} // class BasicIconFactory
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java b/libjava/classpath/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java
deleted file mode 100644
index 4846605..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java
+++ /dev/null
@@ -1,1015 +0,0 @@
-/* BasicInternalFrameTitlePane.java --
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.LayoutManager;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.KeyEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyVetoException;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.Icon;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JInternalFrame;
-import javax.swing.JLabel;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.JMenuItem;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-
-/**
- * This class acts as a titlebar for JInternalFrames.
- */
-public class BasicInternalFrameTitlePane extends JComponent
-{
-  /**
-   * The Action responsible for closing the JInternalFrame.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class CloseAction extends AbstractAction
-  {
-    /**
-     * Creates a new action.
-     */
-    public CloseAction()
-    {
-      super("Close");
-    }
-
-    /**
-     * This method is called when something closes the JInternalFrame.
-     *
-     * @param e The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      if (frame.isClosable())
-        {
-          try
-            {
-              frame.setClosed(true);
-            }
-          catch (PropertyVetoException pve)
-            {
-              // We do nothing if the attempt has been vetoed.
-            }
-        }
-    }
-  }
-
-  /**
-   * This Action is responsible for iconifying the JInternalFrame.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class IconifyAction extends AbstractAction
-  {
-    /**
-     * Creates a new action.
-     */
-    public IconifyAction()
-    {
-      super("Minimize");
-    }
-
-    /**
-     * This method is called when the user wants to iconify the
-     * JInternalFrame.
-     *
-     * @param e The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      if (frame.isIconifiable() && ! frame.isIcon())
-        {
-          try
-            {
-              frame.setIcon(true);
-            }
-          catch (PropertyVetoException pve)
-            {
-              // We do nothing if the attempt has been vetoed.
-            }
-        }
-    }
-  }
-
-  /**
-   * This Action is responsible for maximizing the JInternalFrame.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class MaximizeAction extends AbstractAction
-  {
-    /**
-     * Creates a new action.
-     */
-    public MaximizeAction()
-    {
-      super("Maximize");
-    }
-    /**
-     * This method is called when the user wants to maximize the
-     * JInternalFrame.
-     *
-     * @param e The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      try
-        {
-          if (frame.isMaximizable() && ! frame.isMaximum())
-            {
-              frame.setMaximum(true);
-              maxButton.setIcon(minIcon);
-            }
-          else if (frame.isMaximum())
-            {
-              frame.setMaximum(false);
-              maxButton.setIcon(maxIcon);
-            }
-        }
-      catch (PropertyVetoException pve)
-        {
-          // We do nothing if the attempt has been vetoed.
-        }
-    }
-  }
-
-  /**
-   * This Action is responsible for dragging the JInternalFrame.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class MoveAction extends AbstractAction
-  {
-    /**
-     * Creates a new action.
-     */
-    public MoveAction()
-    {
-      super("Move");
-    }
-    /**
-     * This method is called when the user wants to drag the JInternalFrame.
-     *
-     * @param e The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      // FIXME: Implement keyboard driven? move actions.
-    }
-  }
-
-  /**
-   * This Action is responsible for restoring the JInternalFrame. Restoring
-   * the JInternalFrame is the same as setting the maximum property to false.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class RestoreAction extends AbstractAction
-  {
-    /**
-     * Creates a new action.
-     */
-    public RestoreAction()
-    {
-      super("Restore");
-    }
-    /**
-     * This method is called when the user wants to restore the
-     * JInternalFrame.
-     *
-     * @param e The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      if (frame.isMaximum())
-        {
-          try
-            {
-              frame.setMaximum(false);
-            }
-          catch (PropertyVetoException pve)
-            {
-              // We do nothing if the attempt has been vetoed.
-            }
-        }
-    }
-  }
-
-  /**
-   * This action is responsible for sizing the JInternalFrame.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class SizeAction extends AbstractAction
-  {
-    /**
-     * Creates a new action.
-     */
-    public SizeAction()
-    {
-      super("Size");
-    }
-    /**
-     * This method is called when the user wants to resize the JInternalFrame.
-     *
-     * @param e The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      // FIXME: Not sure how size actions should be handled.
-    }
-  }
-
-  /**
-   * This class is responsible for handling property change events from the
-   * JInternalFrame and adjusting the Title Pane as necessary.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class PropertyChangeHandler implements PropertyChangeListener
-  {
-    /**
-     * This method is called when a PropertyChangeEvent is received by the
-     * Title Pane.
-     *
-     * @param evt The PropertyChangeEvent.
-     */
-    public void propertyChange(PropertyChangeEvent evt)
-    {
-      String propName = evt.getPropertyName();
-      if (propName.equals("closable"))
-        {
-          if (evt.getNewValue().equals(Boolean.TRUE))
-            closeButton.setVisible(true);
-          else
-            closeButton.setVisible(false);
-        }
-      else if (propName.equals("iconable"))
-        {
-          if (evt.getNewValue().equals(Boolean.TRUE))
-            iconButton.setVisible(true);
-          else
-            iconButton.setVisible(false);
-        }
-      else if (propName.equals("maximizable"))
-        {
-          if (evt.getNewValue().equals(Boolean.TRUE))
-            maxButton.setVisible(true);
-          else
-            maxButton.setVisible(false);
-        }
-      enableActions();
-    }
-  }
-
-  /**
-   * This class acts as the MenuBar for the TitlePane. Clicking on the Frame
-   * Icon in the top left corner will activate it.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class SystemMenuBar extends JMenuBar
-  {
-    /**
-     * This method returns true if it can receive focus.
-     *
-     * @return True if this Component can receive focus.
-     */
-    public boolean isFocusTraversable()
-    {
-      return true;
-    }
-
-    /**
-     * This method returns true if this Component is expected to paint all of
-     * itself.
-     *
-     * @return True if this Component is expect to paint all of itself.
-     */
-    public boolean isOpaque()
-    {
-      return true;
-    }
-
-    /**
-     * This method paints this Component.
-     *
-     * @param g The Graphics object to paint with.
-     */
-    public void paint(Graphics g)
-    {
-      Icon frameIcon = frame.getFrameIcon();
-      if (frameIcon == null)
-        frameIcon = BasicDesktopIconUI.defaultIcon;
-      frameIcon.paintIcon(this, g, 0, 0);
-    }
-
-    /**
-     * This method requests that focus be given to this Component.
-     */
-    public void requestFocus()
-    {
-      super.requestFocus();
-    }
-  }
-
-  /**
-   * This class acts as the Layout Manager for the TitlePane.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class TitlePaneLayout implements LayoutManager
-  {
-    /**
-     * Creates a new <code>TitlePaneLayout</code> object.
-     */
-    public TitlePaneLayout()
-    {
-      // Do nothing.
-    }
-
-    /**
-     * This method is called when adding a Component to the Container.
-     *
-     * @param name The name to reference the added Component by.
-     * @param c The Component to add.
-     */
-    public void addLayoutComponent(String name, Component c)
-    {
-      // Do nothing.
-    }
-
-    /**
-     * This method is called to lay out the children of the Title Pane.
-     *
-     * @param c The Container to lay out.
-     */
-    public void layoutContainer(Container c)
-    {
-      Dimension size = c.getSize();
-      Insets insets = c.getInsets();
-      int width = size.width - insets.left - insets.right;
-      int height = size.height - insets.top - insets.bottom;
-
-      // MenuBar is always present and located at the top left corner.
-      Dimension menupref = menuBar.getPreferredSize();
-      menuBar.setBounds(insets.left, insets.top, menupref.width, height);
-
-      int loc = width + insets.left - 1;
-      int top = insets.top + 1;
-      int buttonHeight = height - 4;
-      if (closeButton.isVisible())
-        {
-          int buttonWidth = closeIcon.getIconWidth();
-          loc -= buttonWidth + 2;
-          closeButton.setBounds(loc, top, buttonWidth, buttonHeight);
-        }
-
-      if (maxButton.isVisible())
-        {
-          int buttonWidth = maxIcon.getIconWidth();
-          loc -= buttonWidth + 2;
-          maxButton.setBounds(loc, top, buttonWidth, buttonHeight);
-        }
-
-      if (iconButton.isVisible())
-        {
-          int buttonWidth = iconIcon.getIconWidth();
-          loc -= buttonWidth + 2;
-          iconButton.setBounds(loc, top, buttonWidth, buttonHeight);
-        }
-
-      if (title != null)
-        title.setBounds(insets.left + menupref.width, insets.top,
-                        loc - menupref.width - insets.left, height);
-    }
-
-    /**
-     * This method returns the minimum size of the given Container given the
-     * children that it has.
-     *
-     * @param c The Container to get a minimum size for.
-     *
-     * @return The minimum size of the Container.
-     */
-    public Dimension minimumLayoutSize(Container c)
-    {
-      return preferredLayoutSize(c);
-    }
-
-    /**
-     * This method returns the preferred size of the given Container taking
-     * into account the children that it has.
-     *
-     * @param c The Container to lay out.
-     *
-     * @return The preferred size of the Container.
-     */
-    public Dimension preferredLayoutSize(Container c)
-    {
-      return new Dimension(22, 18);
-    }
-
-    /**
-     * This method is called when removing a Component from the Container.
-     *
-     * @param c The Component to remove.
-     */
-    public void removeLayoutComponent(Component c)
-    {
-      // Nothing to do here.
-    }
-  }
-
-  /**
-   * This helper class is used to create the minimize, maximize and close
-   * buttons in the top right corner of the Title Pane. These buttons are
-   * special since they cannot be given focus and have no border.
-   */
-  private class PaneButton extends JButton
-  {
-    /**
-     * Creates a new PaneButton object with the given Action.
-     *
-     * @param a The Action that the button uses.
-     */
-    public PaneButton(Action a)
-    {
-      super(a);
-      setMargin(new Insets(0, 0, 0, 0));
-    }
-
-    /**
-     * This method returns true if the Component can be focused.
-     *
-     * @return false.
-     */
-    public boolean isFocusable()
-    {
-      // These buttons cannot be given focus.
-      return false;
-    }
-
-  }
-
-  /** The action command for the Close action. */
-  protected static final String CLOSE_CMD;
-
-  /** The action command for the Minimize action. */
-  protected static final String ICONIFY_CMD;
-
-  /** The action command for the Maximize action. */
-  protected static final String MAXIMIZE_CMD;
-
-  /** The action command for the Move action. */
-  protected static final String MOVE_CMD;
-
-  /** The action command for the Restore action. */
-  protected static final String RESTORE_CMD;
-
-  /** The action command for the Size action. */
-  protected static final String SIZE_CMD;
-
-  /** The action associated with closing the JInternalFrame. */
-  protected Action closeAction;
-
-  /** The action associated with iconifying the JInternalFrame. */
-  protected Action iconifyAction;
-
-  /** The action associated with maximizing the JInternalFrame. */
-  protected Action maximizeAction;
-
-  /** The action associated with moving the JInternalFrame. */
-  protected Action moveAction;
-
-  /** The action associated with restoring the JInternalFrame. */
-  protected Action restoreAction;
-
-  /** The action associated with resizing the JInternalFrame. */
-  protected Action sizeAction;
-
-  /** The button that closes the JInternalFrame. */
-  protected JButton closeButton;
-
-  /** The button that iconifies the JInternalFrame. */
-  protected JButton iconButton;
-
-  /** The button that maximizes the JInternalFrame. */
-  protected JButton maxButton;
-
-  /** The icon displayed in the restore button. */
-  protected Icon minIcon = BasicIconFactory.createEmptyFrameIcon();
-
-  /** The icon displayed in the maximize button. */
-  protected Icon maxIcon = BasicIconFactory.createEmptyFrameIcon();
-
-  /** The icon displayed in the iconify button. */
-  protected Icon iconIcon = BasicIconFactory.createEmptyFrameIcon();
-
-  /** The icon displayed in the close button. */
-  protected Icon closeIcon;
-
-  /** The JInternalFrame that this TitlePane is used in. */
-  protected JInternalFrame frame;
-
-  /** The JMenuBar that is located at the top left of the Title Pane. */
-  protected JMenuBar menuBar;
-
-  /** The JMenu inside the menuBar. */
-  protected JMenu windowMenu;
-
-  /**
-   * The text color of the TitlePane when the JInternalFrame is not selected.
-   */
-  protected Color notSelectedTextColor;
-
-  /**
-   * The background color of the TitlePane when the JInternalFrame is not
-   * selected.
-   */
-  protected Color notSelectedTitleColor;
-
-  /** The text color of the titlePane when the JInternalFrame is selected. */
-  protected Color selectedTextColor;
-
-  /**
-   * The background color of the TitlePane when the JInternalFrame is
-   * selected.
-   */
-  protected Color selectedTitleColor;
-
-  /** The Property Change listener that listens to the JInternalFrame. */
-  protected PropertyChangeListener propertyChangeListener;
-
-  /**
-   * The label used to display the title. This label is not added to the
-   * TitlePane.
-   * This is package-private to avoid an accessor method.
-   */
-  transient JLabel title;
-
-  static
-    {
-      // not constants in JDK
-      CLOSE_CMD = "Close";
-      ICONIFY_CMD = "Minimize";
-      MAXIMIZE_CMD = "Maximize";
-      MOVE_CMD = "Move";
-      RESTORE_CMD = "Restore";
-      SIZE_CMD = "Size";
-    }
-
-  /**
-   * Creates a new BasicInternalFrameTitlePane object that is used in the
-   * given JInternalFrame.
-   *
-   * @param f The JInternalFrame this BasicInternalFrameTitlePane will be used
-   *        in.
-   */
-  public BasicInternalFrameTitlePane(JInternalFrame f)
-  {
-    frame = f;
-    setLayout(createLayout());
-    title = new JLabel();
-    title.setHorizontalAlignment(SwingConstants.LEFT);
-    title.setHorizontalTextPosition(SwingConstants.LEFT);
-    title.setOpaque(false);
-    setOpaque(true);
-
-    setBackground(Color.LIGHT_GRAY);
-    setOpaque(true);
-
-    installTitlePane();
-  }
-
-  /**
-   * This method installs the TitlePane onto the JInternalFrameTitlePane. It
-   * also creates any children components that need to be created and adds
-   * listeners to the appropriate components.
-   */
-  protected void installTitlePane()
-  {
-    installDefaults();
-    installListeners();
-    createActions();
-
-    assembleSystemMenu();
-
-    createButtons();
-    setButtonIcons();
-    addSubComponents();
-    enableActions();
-  }
-
-  /**
-   * This method adds the sub components to the TitlePane.
-   */
-  protected void addSubComponents()
-  {
-    add(menuBar);
-
-    add(closeButton);
-    add(iconButton);
-    add(maxButton);
-  }
-
-  /**
-   * This method creates the actions that are used to manipulate the
-   * JInternalFrame.
-   */
-  protected void createActions()
-  {
-    closeAction = new CloseAction();
-    closeAction.putValue(AbstractAction.ACTION_COMMAND_KEY, CLOSE_CMD);
-
-    iconifyAction = new IconifyAction();
-    iconifyAction.putValue(AbstractAction.ACTION_COMMAND_KEY, ICONIFY_CMD);
-
-    maximizeAction = new MaximizeAction();
-    maximizeAction.putValue(AbstractAction.ACTION_COMMAND_KEY, MAXIMIZE_CMD);
-
-    sizeAction = new SizeAction();
-    sizeAction.putValue(AbstractAction.ACTION_COMMAND_KEY, SIZE_CMD);
-
-    restoreAction = new RestoreAction();
-    restoreAction.putValue(AbstractAction.ACTION_COMMAND_KEY, RESTORE_CMD);
-
-    moveAction = new MoveAction();
-    moveAction.putValue(AbstractAction.ACTION_COMMAND_KEY, MOVE_CMD);
-  }
-
-  /**
-   * This method is used to install the listeners.
-   */
-  protected void installListeners()
-  {
-    propertyChangeListener = createPropertyChangeListener();
-    frame.addPropertyChangeListener(propertyChangeListener);
-  }
-
-  /**
-   * This method is used to uninstall the listeners.
-   */
-  protected void uninstallListeners()
-  {
-    frame.removePropertyChangeListener(propertyChangeListener);
-    propertyChangeListener = null;
-  }
-
-  /**
-   * This method installs the defaults determined by the look and feel.
-   */
-  protected void installDefaults()
-  {
-    title.setFont(UIManager.getFont("InternalFrame.titleFont"));
-    selectedTextColor = UIManager.getColor("InternalFrame.activeTitleForeground");
-    selectedTitleColor = UIManager.getColor("InternalFrame.activeTitleBackground");
-    notSelectedTextColor = UIManager.getColor("InternalFrame.inactiveTitleForeground");
-    notSelectedTitleColor = UIManager.getColor("InternalFrame.inactiveTitleBackground");
-
-    closeIcon = UIManager.getIcon("InternalFrame.closeIcon");
-    iconIcon = UIManager.getIcon("InternalFrame.iconifyIcon");
-    maxIcon = UIManager.getIcon("InternalFrame.maximizeIcon");
-  }
-
-  /**
-   * This method uninstalls the defaults.
-   */
-  protected void uninstallDefaults()
-  {
-    setFont(null);
-    selectedTextColor = null;
-    selectedTitleColor = null;
-    notSelectedTextColor = null;
-    notSelectedTitleColor = null;
-
-    closeIcon = null;
-    iconIcon = null;
-    maxIcon = null;
-  }
-
-  /**
-   * This method creates the buttons used in the TitlePane.
-   */
-  protected void createButtons()
-  {
-    closeButton = new PaneButton(closeAction);
-    closeButton.setText(null);
-    if (!frame.isClosable())
-      closeButton.setVisible(false);
-    iconButton = new PaneButton(iconifyAction);
-    iconButton.setText(null);
-    if (!frame.isIconifiable())
-      iconButton.setVisible(false);
-    maxButton = new PaneButton(maximizeAction);
-    maxButton.setText(null);
-    if (!frame.isMaximizable())
-      maxButton.setVisible(false);
-  }
-
-  /**
-   * Set icons for the minimize-, maximize- and close-buttons.
-   */
-  protected void setButtonIcons()
-  {
-    if (closeIcon != null && closeButton != null)
-      closeButton.setIcon(closeIcon);
-    if (iconIcon != null && iconButton != null)
-      iconButton.setIcon(iconIcon);
-    if (maxIcon != null && maxButton != null)
-      maxButton.setIcon(maxIcon);
-  }
-
-  /**
-   * This method creates the MenuBar used in the TitlePane.
-   */
-  protected void assembleSystemMenu()
-  {
-    menuBar = createSystemMenuBar();
-    windowMenu = createSystemMenu();
-
-    menuBar.add(windowMenu);
-
-    addSystemMenuItems(windowMenu);
-    enableActions();
-  }
-
-  /**
-   * This method adds the MenuItems to the given JMenu.
-   *
-   * @param systemMenu The JMenu to add MenuItems to.
-   */
-  protected void addSystemMenuItems(JMenu systemMenu)
-  {
-    JMenuItem tmp;
-
-    tmp = new JMenuItem(RESTORE_CMD);
-    tmp.addActionListener(restoreAction);
-    tmp.setMnemonic(KeyEvent.VK_R);
-    systemMenu.add(tmp);
-
-    tmp = new JMenuItem(MOVE_CMD);
-    tmp.addActionListener(moveAction);
-    tmp.setMnemonic(KeyEvent.VK_M);
-    systemMenu.add(tmp);
-
-    tmp = new JMenuItem(SIZE_CMD);
-    tmp.addActionListener(sizeAction);
-    tmp.setMnemonic(KeyEvent.VK_S);
-    systemMenu.add(tmp);
-
-    tmp = new JMenuItem(ICONIFY_CMD);
-    tmp.addActionListener(iconifyAction);
-    tmp.setMnemonic(KeyEvent.VK_N);
-    systemMenu.add(tmp);
-
-    tmp = new JMenuItem(MAXIMIZE_CMD);
-    tmp.addActionListener(maximizeAction);
-    tmp.setMnemonic(KeyEvent.VK_X);
-    systemMenu.add(tmp);
-
-    systemMenu.addSeparator();
-
-    tmp = new JMenuItem(CLOSE_CMD);
-    tmp.addActionListener(closeAction);
-    tmp.setMnemonic(KeyEvent.VK_C);
-    systemMenu.add(tmp);
-  }
-
-  /**
-   * This method creates a new JMenubar.
-   *
-   * @return A new JMenuBar.
-   */
-  protected JMenuBar createSystemMenuBar()
-  {
-    if (menuBar == null)
-      menuBar = new SystemMenuBar();
-    menuBar.removeAll();
-    return menuBar;
-  }
-
-  /**
-   * This method creates a new JMenu.
-   *
-   * @return A new JMenu.
-   */
-  protected JMenu createSystemMenu()
-  {
-    if (windowMenu == null)
-      windowMenu = new JMenu();
-    windowMenu.removeAll();
-    return windowMenu;
-  }
-
-  /**
-   * This method programmatically shows the JMenu.
-   */
-  protected void showSystemMenu()
-  {
-    // FIXME: Untested as KeyEvents are not hooked up.
-    menuBar.getMenu(1).getPopupMenu().show();
-  }
-
-  /**
-   * This method paints the TitlePane.
-   *
-   * @param g The Graphics object to paint with.
-   */
-  public void paintComponent(Graphics g)
-  {
-    paintTitleBackground(g);
-    if (frame.getTitle() != null && title != null)
-      {
-        Color saved = g.getColor();
-        Font f = title.getFont();
-        g.setFont(f);
-        FontMetrics fm = g.getFontMetrics(f);
-        if (frame.isSelected())
-          g.setColor(selectedTextColor);
-        else
-          g.setColor(notSelectedTextColor);
-        title.setText(getTitle(frame.getTitle(), fm, title.getBounds().width));
-        SwingUtilities.paintComponent(g, title, null, title.getBounds());
-        g.setColor(saved);
-      }
-  }
-
-  /**
-   * This method paints the TitlePane's background.
-   *
-   * @param g The Graphics object to paint with.
-   */
-  protected void paintTitleBackground(Graphics g)
-  {
-    if (!isOpaque())
-      return;
-
-    Color saved = g.getColor();
-    Dimension dims = getSize();
-
-    Color bg = getBackground();
-    if (frame.isSelected())
-      bg = selectedTitleColor;
-    else
-      bg = notSelectedTitleColor;
-    g.setColor(bg);
-    g.fillRect(0, 0, dims.width, dims.height);
-    g.setColor(saved);
-  }
-
-  /**
-   * This method returns the title string based on the available width and the
-   * font metrics.
-   *
-   * @param text The desired title.
-   * @param fm The FontMetrics of the font used.
-   * @param availableWidth The available width.
-   *
-   * @return The allowable string.
-   */
-  protected String getTitle(String text, FontMetrics fm, int availableWidth)
-  {
-    Rectangle vr = new Rectangle(0, 0, availableWidth, fm.getHeight());
-    Rectangle ir = new Rectangle();
-    Rectangle tr = new Rectangle();
-    String value = SwingUtilities.layoutCompoundLabel(this, fm, text, null,
-                                                      SwingConstants.CENTER,
-                                                      SwingConstants.LEFT,
-                                                      SwingConstants.CENTER,
-                                                      SwingConstants.LEFT, vr,
-                                                      ir, tr, 0);
-    return value;
-  }
-
-  /**
-   * This method fires something similar to a WINDOW_CLOSING event.
-   *
-   * @param frame The JInternalFrame that is being closed.
-   */
-  protected void postClosingEvent(JInternalFrame frame)
-  {
-    // FIXME: Implement postClosingEvent when I figure out what
-    // it's supposed to do.
-    // It says that this fires an WINDOW_CLOSING like event.
-    // So the closest thing is some kind of InternalFrameEvent.
-    // But none is fired.
-    // Can't see it called or anything.
-  }
-
-  /**
-   * This method enables the actions for the TitlePane given the frame's
-   * properties.
-   */
-  protected void enableActions()
-  {
-    closeAction.setEnabled(frame.isClosable());
-
-    iconifyAction.setEnabled(frame.isIconifiable());
-    // The maximize action is responsible for restoring it
-    // as well, if clicked from the button
-    maximizeAction.setEnabled(frame.isMaximizable());
-
-    // The restoring action is only active when selected
-    // from the menu.
-    restoreAction.setEnabled(frame.isMaximum());
-
-    sizeAction.setEnabled(frame.isResizable());
-
-    // FIXME: Tie MoveAction enabled status to a variable.
-    moveAction.setEnabled(false);
-  }
-
-  /**
-   * This method creates a new PropertyChangeListener.
-   *
-   * @return A new PropertyChangeListener.
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new PropertyChangeHandler();
-  }
-
-  /**
-   * This method creates a new LayoutManager for the TitlePane.
-   *
-   * @return A new LayoutManager.
-   */
-  protected LayoutManager createLayout()
-  {
-    return new TitlePaneLayout();
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicInternalFrameUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicInternalFrameUI.java
deleted file mode 100644
index da37e2b..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicInternalFrameUI.java
+++ /dev/null
@@ -1,1786 +0,0 @@
-/* BasicInternalFrameUI.java --
-   Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Cursor;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.LayoutManager;
-import java.awt.LayoutManager2;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ComponentEvent;
-import java.awt.event.ComponentListener;
-import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyVetoException;
-
-import javax.swing.AbstractAction;
-import javax.swing.ActionMap;
-import javax.swing.DefaultDesktopManager;
-import javax.swing.DesktopManager;
-import javax.swing.JComponent;
-import javax.swing.JDesktopPane;
-import javax.swing.JInternalFrame;
-import javax.swing.KeyStroke;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.border.AbstractBorder;
-import javax.swing.event.InternalFrameEvent;
-import javax.swing.event.InternalFrameListener;
-import javax.swing.event.MouseInputAdapter;
-import javax.swing.event.MouseInputListener;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.InternalFrameUI;
-import javax.swing.plaf.UIResource;
-
-/**
- * This is the UI delegate for the Basic look and feel for JInternalFrames.
- */
-public class BasicInternalFrameUI extends InternalFrameUI
-{
-  /**
-   * This is a helper class that listens to the JInternalFrame for
-   * InternalFrameEvents.
-   */
-  protected class BasicInternalFrameListener implements InternalFrameListener
-  {
-    /**
-     * This method is called when the JInternalFrame is activated.
-     *
-     * @param e The InternalFrameEvent.
-     */
-    public void internalFrameActivated(InternalFrameEvent e)
-    {
-      frame.getGlassPane().setVisible(false);
-    }
-
-    /**
-     * This method is called when the JInternalFrame is closed.
-     *
-     * @param e The InternalFrameEvent.
-     */
-    public void internalFrameClosed(InternalFrameEvent e)
-    {
-      // FIXME: Implement.
-    }
-
-    /**
-     * This method is called when the JInternalFrame is closing.
-     *
-     * @param e The InternalFrameEvent.
-     */
-    public void internalFrameClosing(InternalFrameEvent e)
-    {
-      // FIXME: Implement.
-    }
-
-    /**
-     * This method is called when the JInternalFrame is deactivated.
-     *
-     * @param e The InternalFrameEvent.
-     */
-    public void internalFrameDeactivated(InternalFrameEvent e)
-    {
-      frame.getGlassPane().setVisible(true);
-    }
-
-    /**
-     * This method is called when the JInternalFrame is  deiconified.
-     *
-     * @param e The InternalFrameEvent.
-     */
-    public void internalFrameDeiconified(InternalFrameEvent e)
-    {
-      // FIXME: Implement.
-    }
-
-    /**
-     * This method is called when the JInternalFrame is  iconified.
-     *
-     * @param e The InternalFrameEvent.
-     */
-    public void internalFrameIconified(InternalFrameEvent e)
-    {
-      // FIXME: Implement.
-    }
-
-    /**
-     * This method is called when the JInternalFrame is opened.
-     *
-     * @param e The InternalFrameEvent.
-     */
-    public void internalFrameOpened(InternalFrameEvent e)
-    {
-      // FIXME: Implement.
-    }
-  }
-
-  /**
-   * This helper class listens to the edges of the JInternalFrame and the
-   * TitlePane for mouse events. It is responsible for dragging  and resizing
-   * the JInternalFrame in response to the MouseEvents.
-   */
-  protected class BorderListener extends MouseInputAdapter
-    implements SwingConstants
-  {
-    /**
-     * The current shape of the cursor.
-     */
-    transient int showingCursor;
-
-    /** FIXME: Use for something. */
-    protected final int RESIZE_NONE = 0;
-
-    /** The x offset from the top left corner of the JInternalFrame. */
-    private transient int xOffset;
-
-    /** The y offset from the top left corner of the JInternalFrame. */
-    private transient int yOffset;
-
-    /** The direction that the resize is occuring in. */
-    private transient int direction = -1;
-
-    /** Cache rectangle that can be reused. */
-    private transient Rectangle cacheRect = new Rectangle();
-
-    /**
-     * This method is called when the mouse is clicked.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseClicked(MouseEvent e)
-    {
-      // Do minimization/maximization when double-clicking in the title pane.
-      if (e.getSource() == titlePane && e.getClickCount() == 2)
-        try
-          {
-            if (frame.isMaximizable() && ! frame.isMaximum())
-              frame.setMaximum(true);
-            else if (frame.isMaximum())
-              frame.setMaximum(false);
-          }
-        catch (PropertyVetoException pve)
-          {
-            // We do nothing if the attempt has been vetoed.
-          }
-
-      // There is nothing to do when the mouse is clicked
-      // on the border.
-    }
-
-    /**
-     * This method is called when the mouse is dragged. This method is
-     * responsible for resizing or dragging the JInternalFrame.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      // If the frame is maximized, there is nothing that
-      // can be dragged around.
-      if (frame.isMaximum())
-        return;
-      DesktopManager dm = getDesktopManager();
-      Rectangle b = frame.getBounds();
-      Dimension min = frame.getMinimumSize();
-      if (min == null)
-        min = new Dimension(0, 0);
-      Insets insets = frame.getInsets();
-      int x = e.getX();
-      int y = e.getY();
-      if (e.getSource() == frame && frame.isResizable())
-        {
-          switch (direction)
-            {
-            case Cursor.N_RESIZE_CURSOR:
-              cacheRect.setBounds(b.x, Math.min(b.y + y, b.y + b.height
-                                                         - min.height),
-                                  b.width, b.height - y);
-              break;
-            case Cursor.NE_RESIZE_CURSOR:
-              cacheRect.setBounds(b.x, Math.min(b.y + y, b.y + b.height
-                                                         - min.height), x + 1,
-                                  b.height - y);
-              break;
-            case Cursor.E_RESIZE_CURSOR:
-              cacheRect.setBounds(b.x, b.y, x + 1, b.height);
-              break;
-            case Cursor.SE_RESIZE_CURSOR:
-              cacheRect.setBounds(b.x, b.y, x + 1, y + 1);
-              break;
-            case Cursor.S_RESIZE_CURSOR:
-              cacheRect.setBounds(b.x, b.y, b.width, y + 1);
-              break;
-            case Cursor.SW_RESIZE_CURSOR:
-              cacheRect.setBounds(Math.min(b.x + x, b.x + b.width - min.width),
-                                  b.y, b.width - x, y + 1);
-              break;
-            case Cursor.W_RESIZE_CURSOR:
-              cacheRect.setBounds(Math.min(b.x + x, b.x + b.width - min.width),
-                                  b.y, b.width - x, b.height);
-              break;
-            case Cursor.NW_RESIZE_CURSOR:
-              cacheRect.setBounds(
-                                  Math.min(b.x + x, b.x + b.width - min.width),
-                                  Math.min(b.y + y, b.y + b.height - min.height),
-                                  b.width - x, b.height - y);
-              break;
-            }
-          dm.resizeFrame(frame, cacheRect.x, cacheRect.y,
-                         Math.max(min.width, cacheRect.width),
-                         Math.max(min.height, cacheRect.height));
-          setCursor(e);
-        }
-      else if (e.getSource() == titlePane)
-        {
-          Rectangle fBounds = frame.getBounds();
-          frame.putClientProperty("bufferedDragging", Boolean.TRUE);
-          dm.dragFrame(frame, e.getX() - xOffset + b.x, e.getY() - yOffset
-                                                        + b.y);
-        }
-    }
-
-    /**
-     * This method is called when the mouse exits the JInternalFrame.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseExited(MouseEvent e)
-    {
-      if (showingCursor != Cursor.DEFAULT_CURSOR)
-        {
-          frame.setCursor(Cursor.getDefaultCursor());
-          showingCursor = Cursor.DEFAULT_CURSOR;
-        }
-    }
-
-    /**
-     * This method is called when the mouse is moved inside the JInternalFrame.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseMoved(MouseEvent e)
-    {
-      // Turn off the resize cursor if we are in the frame header.
-      if (showingCursor != Cursor.DEFAULT_CURSOR && e.getSource() != frame)
-        {
-          frame.setCursor(Cursor.getDefaultCursor());
-          showingCursor = Cursor.DEFAULT_CURSOR;
-        }
-      else if (e.getSource() == frame && frame.isResizable())
-        {
-          setCursor(e);
-        }
-    }
-
-    /**
-     * Set the mouse cursor, how applicable.
-     *
-     * @param e the current mouse event.
-     */
-    void setCursor(MouseEvent e)
-    {
-      int cursor = sectionOfClick(e.getX(), e.getY());
-      if (cursor != showingCursor)
-        {
-          Cursor resize = Cursor.getPredefinedCursor(cursor);
-          frame.setCursor(resize);
-          showingCursor = cursor;
-        }
-    }
-
-    /**
-     * This method is called when the mouse is pressed.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      activateFrame(frame);
-      DesktopManager dm = getDesktopManager();
-      int x = e.getX();
-      int y = e.getY();
-      Insets insets = frame.getInsets();
-
-      if (e.getSource() == frame && frame.isResizable())
-        {
-          direction = sectionOfClick(x, y);
-          dm.beginResizingFrame(frame, direction);
-        }
-      else if (e.getSource() == titlePane)
-        {
-          Rectangle tBounds = titlePane.getBounds();
-
-          xOffset = e.getX() - tBounds.x + insets.left;
-          yOffset = e.getY() - tBounds.y + insets.top;
-
-          dm.beginDraggingFrame(frame);
-        }
-    }
-
-    /**
-     * This method is called when the mouse is released.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      DesktopManager dm = getDesktopManager();
-      xOffset = 0;
-      yOffset = 0;
-      if (e.getSource() == frame && frame.isResizable())
-        dm.endResizingFrame(frame);
-      else if (e.getSource() == titlePane)
-        {
-          dm.endDraggingFrame(frame);
-          frame.putClientProperty("bufferedDragging", null);
-        }
-
-      setCursor(e);
-    }
-
-    /**
-     * This method determines the direction of the resize based on the
-     * coordinates and the size of the JInternalFrame.
-     *
-     * @param x The x coordinate of the MouseEvent.
-     * @param y The y coordinate of the MouseEvent.
-     *
-     * @return The cursor constant, determining the resizing direction.
-     */
-    private int sectionOfClick(int x, int y)
-    {
-      Rectangle b = frame.getBounds();
-      int corner = InternalFrameBorder.cornerSize;
-
-      if (x < corner && y < corner)
-        return Cursor.NW_RESIZE_CURSOR;
-      else if (x > b.width - corner && y < corner)
-        return Cursor.NE_RESIZE_CURSOR;
-      else if (x > b.width - corner && y > b.height - corner)
-        return Cursor.SE_RESIZE_CURSOR;
-      else if (x < corner && y > b.height - corner)
-        return Cursor.SW_RESIZE_CURSOR;
-      else if (y < corner)
-        return Cursor.N_RESIZE_CURSOR;
-      else if (x < corner)
-        return Cursor.W_RESIZE_CURSOR;
-      else if (y > b.height - corner)
-        return Cursor.S_RESIZE_CURSOR;
-      else if (x > b.width - corner)
-        return Cursor.E_RESIZE_CURSOR;
-
-      return Cursor.DEFAULT_CURSOR;
-    }
-  }
-
-  /**
-   * This helper class listens to the JDesktopPane that parents this
-   * JInternalFrame and listens for resize events and resizes the
-   * JInternalFrame appropriately.
-   */
-  protected class ComponentHandler implements ComponentListener
-  {
-    /**
-     * This method is called when the JDesktopPane is hidden.
-     *
-     * @param e
-     *          The ComponentEvent fired.
-     */
-    public void componentHidden(ComponentEvent e)
-    {
-      // Do nothing.
-    }
-
-    /**
-     * This method is called when the JDesktopPane is moved.
-     *
-     * @param e
-     *          The ComponentEvent fired.
-     */
-    public void componentMoved(ComponentEvent e)
-    {
-      // Do nothing.
-    }
-
-    /**
-     * This method is called when the JDesktopPane is resized.
-     *
-     * @param e
-     *          The ComponentEvent fired.
-     */
-    public void componentResized(ComponentEvent e)
-    {
-      if (frame.isMaximum())
-        {
-          Container parent = frame.getParent();
-          Insets i = parent.getInsets();
-          int width = parent.getWidth() - i.left - i.right;
-          int height = parent.getHeight() - i.top - i.bottom;
-          frame.setBounds(0, 0, width, height);
-        }
-    }
-
-    /**
-     * This method is called when the JDesktopPane is shown.
-     *
-     * @param e
-     *          The ComponentEvent fired.
-     */
-    public void componentShown(ComponentEvent e)
-    {
-      // Do nothing.
-    }
-  }
-
-  /**
-   * This helper class acts as the LayoutManager for JInternalFrames.
-   */
-  public class InternalFrameLayout implements LayoutManager
-  {
-    /**
-     * This method is called when the given Component is added to the
-     * JInternalFrame.
-     *
-     * @param name
-     *          The name of the Component.
-     * @param c
-     *          The Component added.
-     */
-    public void addLayoutComponent(String name, Component c)
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method is used to set the bounds of the children of the
-     * JInternalFrame.
-     *
-     * @param c
-     *          The Container to lay out.
-     */
-    public void layoutContainer(Container c)
-    {
-      Dimension dims = frame.getSize();
-      Insets insets = frame.getInsets();
-
-      dims.width -= insets.left + insets.right;
-      dims.height -= insets.top + insets.bottom;
-
-      int nh = 0;
-      int sh = 0;
-      int ew = 0;
-      int ww = 0;
-
-      if (northPane != null)
-        {
-          Dimension nDims = northPane.getPreferredSize();
-          nh = Math.min(nDims.height, dims.height);
-
-          northPane.setBounds(insets.left, insets.top, dims.width, nh);
-        }
-
-      if (southPane != null)
-        {
-          Dimension sDims = southPane.getPreferredSize();
-          sh = Math.min(sDims.height, dims.height - nh);
-
-          southPane.setBounds(insets.left, insets.top + dims.height - sh,
-                              dims.width, sh);
-        }
-
-      int remHeight = dims.height - sh - nh;
-
-      if (westPane != null)
-        {
-          Dimension wDims = westPane.getPreferredSize();
-          ww = Math.min(dims.width, wDims.width);
-
-          westPane.setBounds(insets.left, insets.top + nh, ww, remHeight);
-        }
-
-      if (eastPane != null)
-        {
-          Dimension eDims = eastPane.getPreferredSize();
-          ew = Math.min(eDims.width, dims.width - ww);
-
-          eastPane.setBounds(insets.left + dims.width - ew, insets.top + nh,
-                             ew, remHeight);
-        }
-
-      int remWidth = dims.width - ww - ew;
-
-      frame.getRootPane().setBounds(insets.left + ww, insets.top + nh,
-                                    remWidth, remHeight);
-    }
-
-    /**
-     * This method returns the minimum layout size.
-     *
-     * @param c
-     *          The Container to find a minimum layout size for.
-     * @return The minimum dimensions for the JInternalFrame.
-     */
-    public Dimension minimumLayoutSize(Container c)
-    {
-      return getSize(c, true);
-    }
-
-    /**
-     * Th8is method returns the preferred layout size.
-     *
-     * @param c
-     *          The Container to find a preferred layout size for.
-     * @return The preferred dimensions for the JInternalFrame.
-     */
-    public Dimension preferredLayoutSize(Container c)
-    {
-      return getSize(c, false);
-    }
-
-    /**
-     * DOCUMENT ME!
-     *
-     * @param c
-     *          DOCUMENT ME!
-     * @param min
-     *          DOCUMENT ME!
-     * @return DOCUMENT ME!
-     */
-    private Dimension getSize(Container c, boolean min)
-    {
-      Insets insets = frame.getInsets();
-
-      Dimension contentDims = frame.getContentPane().getPreferredSize();
-      if (min)
-        contentDims.width = contentDims.height = 0;
-      int nWidth = 0;
-      int nHeight = 0;
-      int sWidth = 0;
-      int sHeight = 0;
-      int eWidth = 0;
-      int eHeight = 0;
-      int wWidth = 0;
-      int wHeight = 0;
-      Dimension dims;
-
-      if (northPane != null)
-        {
-          dims = northPane.getPreferredSize();
-          if (dims != null)
-            {
-              nWidth = dims.width;
-              nHeight = dims.height;
-            }
-        }
-
-      if (southPane != null)
-        {
-          dims = southPane.getPreferredSize();
-          if (dims != null)
-            {
-              sWidth = dims.width;
-              sHeight = dims.height;
-            }
-        }
-
-      if (eastPane != null)
-        {
-          dims = eastPane.getPreferredSize();
-          if (dims != null)
-            {
-              sWidth = dims.width;
-              sHeight = dims.height;
-            }
-        }
-
-      if (westPane != null)
-        {
-          dims = westPane.getPreferredSize();
-          if (dims != null)
-            {
-              wWidth = dims.width;
-              wHeight = dims.height;
-            }
-        }
-
-      int width = Math.max(sWidth, nWidth);
-      width = Math.max(width, contentDims.width + eWidth + wWidth);
-
-      int height = Math.max(eHeight, wHeight);
-      height = Math.max(height, contentDims.height);
-      height += nHeight + sHeight;
-
-      width += insets.left + insets.right;
-      height += insets.top + insets.bottom;
-
-      return new Dimension(width, height);
-    }
-
-    /**
-     * This method is called when a Component is removed from the
-     * JInternalFrame.
-     *
-     * @param c The Component that was removed.
-     */
-    public void removeLayoutComponent(Component c)
-    {
-      // Nothing to do here.
-    }
-  }
-
-  /**
-   * This helper class is used to listen to the JDesktopPane's glassPane for
-   * MouseEvents. The JInternalFrame can then be selected if a click is
-   * detected on its children.
-   */
-  protected class GlassPaneDispatcher implements MouseInputListener
-  {
-    /** The MouseEvent target. */
-    private transient Component mouseEventTarget;
-
-    private Component dragTarget;
-
-    /**
-     * Indicates if we are currently in a dragging operation or not.
-     */
-    private boolean isDragging;
-
-    /**
-     * This method is called when the mouse enters the glass pane.
-     *
-     * @param e
-     *          The MouseEvent.
-     */
-    public void mouseEntered(MouseEvent e)
-    {
-      handleEvent(e);
-    }
-
-    /**
-     * This method is called when the mouse is clicked on the glass pane.
-     *
-     * @param e
-     *          The MouseEvent.
-     */
-    public void mouseClicked(MouseEvent e)
-    {
-      handleEvent(e);
-    }
-
-    /**
-     * This method is called when the mouse is dragged in the glass pane.
-     *
-     * @param e
-     *          The MouseEvent.
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      handleEvent(e);
-    }
-
-    /**
-     * This method is called when the mouse exits the glass pane.
-     *
-     * @param e
-     *          The MouseEvent.
-     */
-    public void mouseExited(MouseEvent e)
-    {
-      handleEvent(e);
-    }
-
-    /**
-     * This method is called when the mouse is moved in the glass pane.
-     *
-     * @param e
-     *          The MouseEvent.
-     */
-    public void mouseMoved(MouseEvent e)
-    {
-      handleEvent(e);
-    }
-
-    /**
-     * This method is called when the mouse is pressed in the glass pane.
-     *
-     * @param e
-     *          The MouseEvent.
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      // Experiments show that this seems to call the
-      // borderListener.mousePressed() method to activate the frame.
-      if (borderListener != null)
-        borderListener.mousePressed(e);
-      handleEvent(e);
-    }
-
-    /**
-     * This method is called when the mouse is released in the glass pane.
-     *
-     * @param e
-     *          The MouseEvent.
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      handleEvent(e);
-    }
-
-    /**
-     * This is a helper method that dispatches the GlassPane MouseEvents to the
-     * proper component.
-     *
-     * @param e the mouse event to be dispatched
-     */
-    private void handleEvent(MouseEvent e)
-    {
-      // Find candidate component inside the JInternalFrame.
-      Component target = frame.getLayeredPane().findComponentAt(e.getX(),
-                                                                e.getY());
-
-      // Now search upwards to find a component that actually has
-      // a MouseListener attached.
-      while (target != null
-             && target.getMouseListeners().length == 0
-             && target.getMouseMotionListeners().length == 0
-             && target.getMouseWheelListeners().length == 0)
-        {
-          target = target.getParent();
-        }
-
-      if (target != null)
-        {
-          int id = e.getID();
-          switch (id)
-          {
-            case MouseEvent.MOUSE_ENTERED:
-              // Now redispatch the thing.
-              if (! isDragging || frame.isSelected())
-                {
-                  mouseEventTarget = target;
-                  redispatch(id, e, mouseEventTarget);
-                }
-              break;
-            case MouseEvent.MOUSE_EXITED:
-              if (! isDragging || frame.isSelected())
-                {
-                  redispatch(id, e, mouseEventTarget);
-                }
-              break;
-            case MouseEvent.MOUSE_PRESSED:
-              mouseEventTarget = target;
-              redispatch(id, e, mouseEventTarget);
-              // Start dragging.
-              dragTarget = target;
-              break;
-            case MouseEvent.MOUSE_RELEASED:
-              if (isDragging)
-                {
-                  redispatch(id, e, dragTarget);
-                  isDragging = false;
-                }
-              else
-                redispatch(id, e, mouseEventTarget);
-              break;
-            case MouseEvent.MOUSE_CLICKED:
-              redispatch(id, e, mouseEventTarget);
-              break;
-            case MouseEvent.MOUSE_MOVED:
-              if (target != mouseEventTarget)
-                {
-                  // Create additional MOUSE_EXITED/MOUSE_ENTERED pairs.
-                  redispatch(MouseEvent.MOUSE_EXITED, e, mouseEventTarget);
-                  mouseEventTarget = target;
-                  redispatch(MouseEvent.MOUSE_ENTERED, e, mouseEventTarget);
-                }
-              redispatch(id, e, mouseEventTarget);
-              break;
-            case MouseEvent.MOUSE_DRAGGED:
-              if (! isDragging)
-                isDragging = true;
-              redispatch(id, e, mouseEventTarget);
-              break;
-            case MouseEvent.MOUSE_WHEEL:
-              redispatch(id, e, mouseEventTarget);
-              break;
-            default:
-              assert false : "Must not reach here";
-          }
-        }
-    }
-
-    /**
-     * Redispatches the event to the real target with the specified id.
-     *
-     * @param id the new event ID
-     * @param e the original event
-     * @param target the real event target
-     */
-    private void redispatch(int id, MouseEvent e, Component target)
-    {
-      Point p = SwingUtilities.convertPoint(frame.getLayeredPane(), e.getX(),
-                                            e.getY(), target);
-      MouseEvent ev = new MouseEvent(target, id, e.getWhen(),
-                                     e.getModifiers() | e.getModifiersEx(),
-                                     p.x, p.y, e.getClickCount(),
-                                     e.isPopupTrigger());
-      target.dispatchEvent(ev);
-    }
-  }
-
-  /**
-   * This helper class listens for PropertyChangeEvents from the
-   * JInternalFrame.
-   */
-  public class InternalFramePropertyChangeListener
-    implements PropertyChangeListener
-  {
-
-    /**
-     * This method is called when one of the JInternalFrame's properties change.
-     *
-     * @param evt
-     *          The PropertyChangeEvent.
-     */
-    public void propertyChange(PropertyChangeEvent evt)
-    {
-      String property = evt.getPropertyName();
-      if (property.equals(JInternalFrame.IS_MAXIMUM_PROPERTY))
-        {
-          if (frame.isMaximum())
-            maximizeFrame(frame);
-          else
-            minimizeFrame(frame);
-        }
-      else if (property.equals(JInternalFrame.IS_ICON_PROPERTY))
-        {
-          if (frame.isIcon())
-            iconifyFrame(frame);
-          else
-            deiconifyFrame(frame);
-        }
-      else if (property.equals(JInternalFrame.IS_SELECTED_PROPERTY))
-        {
-          Component glassPane = frame.getGlassPane();
-          if (frame.isSelected())
-            {
-              activateFrame(frame);
-              glassPane.setVisible(false);
-            }
-          else
-            {
-              deactivateFrame(frame);
-              glassPane.setVisible(true);
-            }
-        }
-      else if (property.equals(JInternalFrame.ROOT_PANE_PROPERTY)
-               || property.equals(JInternalFrame.GLASS_PANE_PROPERTY))
-        {
-          Component old = (Component) evt.getOldValue();
-          if (old != null)
-            {
-              old.removeMouseListener(glassPaneDispatcher);
-              old.removeMouseMotionListener(glassPaneDispatcher);
-            }
-
-          Component newPane = (Component) evt.getNewValue();
-          if (newPane != null)
-            {
-              newPane.addMouseListener(glassPaneDispatcher);
-              newPane.addMouseMotionListener(glassPaneDispatcher);
-            }
-
-          frame.revalidate();
-        }
-      else if (property.equals(JInternalFrame.IS_CLOSED_PROPERTY))
-        {
-          if (evt.getNewValue() == Boolean.TRUE)
-            {
-              Container parent = frame.getParent();
-              if (parent != null)
-                parent.removeComponentListener(componentListener);
-              closeFrame(frame);
-            }
-        }
-      else if (property.equals("ancestor"))
-        {
-          Container newParent = (Container) evt.getNewValue();
-          Container oldParent = (Container) evt.getOldValue();
-          if (newParent != null)
-            {
-              newParent.addComponentListener(componentListener);
-            }
-          else if (oldParent != null)
-            {
-              oldParent.removeComponentListener(componentListener);
-            }
-        }
-    }
-  }
-
-  /**
-   * This helper class is the border for the JInternalFrame.
-   */
-  class InternalFrameBorder extends AbstractBorder implements
-      UIResource
-  {
-    /**
-     * The width of the border.
-     */
-    static final int bSize = 5;
-
-    /**
-     * The size of the corners (also used by the mouse listener).
-     */
-    static final int cornerSize = 10;
-
-    /**
-     * This method returns whether the border is opaque.
-     *
-     * @return Whether the border is opaque.
-     */
-    public boolean isBorderOpaque()
-    {
-      return true;
-    }
-
-    /**
-     * This method returns the insets of the border.
-     *
-     * @param c
-     *          The Component to find border insets for.
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return new Insets(bSize, bSize, bSize, bSize);
-    }
-
-    /**
-     * This method paints the border.
-     *
-     * @param c
-     *          The Component that owns the border.
-     * @param g
-     *          The Graphics object to paint with.
-     * @param x
-     *          The x coordinate to paint at.
-     * @param y
-     *          The y coordinate to paint at.
-     * @param width
-     *          The width of the Component.
-     * @param height
-     *          The height of the Component.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int width,
-                            int height)
-    {
-      g.translate(x, y);
-      Color saved = g.getColor();
-      Rectangle b = frame.getBounds();
-
-      Color d = c.getBackground();
-      g.setColor(d);
-      g.fillRect(0, 0, bSize, b.height);
-      g.fillRect(0, 0, b.width, bSize);
-      g.fillRect(0, b.height - bSize, b.width, bSize);
-      g.fillRect(b.width - bSize, 0, bSize, b.height);
-
-      int x1 = 0;
-      int x2 = bSize;
-      int x3 = b.width - bSize;
-      int x4 = b.width;
-
-      int y1 = 0;
-      int y2 = bSize;
-      int y3 = b.height - bSize;
-      int y4 = b.height;
-
-      g.setColor(Color.GRAY);
-      g.fillRect(0, 0, bSize, y4);
-      g.fillRect(0, 0, x4, bSize);
-      g.fillRect(0, y3, b.width, bSize);
-      g.fillRect(x3, 0, bSize, b.height);
-
-      g.fill3DRect(0, cornerSize, bSize, b.height - 2 * cornerSize, false);
-      g.fill3DRect(cornerSize, 0, b.width - 2 * cornerSize, bSize, false);
-      g.fill3DRect(cornerSize, b.height - bSize, b.width - 2 * cornerSize,
-                   bSize, false);
-      g.fill3DRect(b.width - bSize, cornerSize, bSize,
-                   b.height - 2 * cornerSize, false);
-
-      g.translate(-x, -y);
-      g.setColor(saved);
-    }
-  }
-
-  /**
-   * This action triggers the system menu.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  private class ShowSystemMenuAction
-    extends AbstractAction
-  {
-    public void actionPerformed(ActionEvent e)
-    {
-      if (titlePane != null)
-        {
-          titlePane.showSystemMenu();
-        }
-    }
-  }
-
-  /**
-   * The MouseListener that is responsible for dragging and resizing the
-   * JInternalFrame in response to MouseEvents.
-   */
-  protected MouseInputAdapter borderListener;
-
-  /**
-   * The ComponentListener that is responsible for resizing the JInternalFrame
-   * in response to ComponentEvents from the JDesktopPane.
-   */
-  protected ComponentListener componentListener;
-
-  /**
-   * The MouseListener that is responsible for activating the JInternalFrame
-   * when the mouse press activates one of its descendents.
-   */
-  protected MouseInputListener glassPaneDispatcher;
-
-  /**
-   * The PropertyChangeListener that is responsible for listening to
-   * PropertyChangeEvents from the JInternalFrame.
-   */
-  protected PropertyChangeListener propertyChangeListener;
-
-  /** The InternalFrameListener that listens to the JInternalFrame. */
-  private transient BasicInternalFrameListener internalFrameListener;
-
-  /** The JComponent placed at the east region of the JInternalFrame. */
-  protected JComponent eastPane;
-
-  /** The JComponent placed at the north region of the JInternalFrame. */
-  protected JComponent northPane;
-
-  /** The JComponent placed at the south region of the JInternalFrame. */
-  protected JComponent southPane;
-
-  /** The JComponent placed at the west region of the JInternalFrame. */
-  protected JComponent westPane;
-
-  /**
-   * The Keystroke bound to open the menu.
-   * @deprecated
-   */
-  protected KeyStroke openMenuKey;
-
-  /** The TitlePane displayed at the top of the JInternalFrame. */
-  protected BasicInternalFrameTitlePane titlePane;
-
-  /** The JInternalFrame this UI is responsible for. */
-  protected JInternalFrame frame;
-
-  /** The LayoutManager used in the JInternalFrame. */
-  protected LayoutManager internalFrameLayout;
-
-  /** The JDesktopPane that is the parent of the JInternalFrame. */
-  private transient JDesktopPane desktopPane;
-
-  /**
-   * Creates a new BasicInternalFrameUI object.
-   *
-   * @param b The JInternalFrame this UI will represent.
-   */
-  public BasicInternalFrameUI(JInternalFrame b)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * This method will create a new BasicInternalFrameUI for the given
-   * JComponent.
-   *
-   * @param b The JComponent to create a BasicInternalFrameUI for.
-   *
-   * @return A new BasicInternalFrameUI.
-   */
-  public static ComponentUI createUI(JComponent b)
-  {
-    return new BasicInternalFrameUI((JInternalFrame) b);
-  }
-
-  /**
-   * This method installs a UI for the JInternalFrame.
-   *
-   * @param c The JComponent to install this UI on.
-   */
-  public void installUI(JComponent c)
-  {
-    if (c instanceof JInternalFrame)
-      {
-        frame = (JInternalFrame) c;
-
-        installDefaults();
-        installListeners();
-        installComponents();
-        installKeyboardActions();
-
-        if (! frame.isSelected())
-          frame.getGlassPane().setVisible(true);
-      }
-  }
-
-  /**
-   * This method reverses the work done by installUI.
-   *
-   * @param c The JComponent to uninstall this UI for.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    uninstallKeyboardActions();
-    uninstallComponents();
-    uninstallListeners();
-    uninstallDefaults();
-
-    frame.getRootPane().getGlassPane().setVisible(false);
-    frame = null;
-  }
-
-  /**
-   * This method installs the defaults specified by the look and feel.
-   */
-  protected void installDefaults()
-    {
-      internalFrameLayout = createLayoutManager();
-      frame.setLayout(internalFrameLayout);
-      LookAndFeel.installBorder(frame, "InternalFrame.border");
-      frame.setFrameIcon(UIManager.getIcon("InternalFrame.icon"));
-
-      // Let the content pane inherit the background color from its
-      // frame by setting the background to null.
-      Component contentPane = frame.getContentPane();
-      if (contentPane != null
-          && contentPane.getBackground() instanceof UIResource)
-        {
-          contentPane.setBackground(null);
-        }
-  }
-
-  /**
-   * This method installs the keyboard actions for the JInternalFrame.
-   */
-  protected void installKeyboardActions()
-  {
-    ActionMapUIResource am = new ActionMapUIResource();
-    am.put("showSystemMenu", new ShowSystemMenuAction());
-
-    // The RI impl installs the audio actions as parent of the UI action map,
-    // so do we.
-    BasicLookAndFeel blaf = (BasicLookAndFeel) UIManager.getLookAndFeel();
-    ActionMap audioActionMap = blaf.getAudioActionMap();
-    am.setParent(audioActionMap);
-
-    SwingUtilities.replaceUIActionMap(frame, am);
-  }
-
-  /**
-   * This method installs the Components for the JInternalFrame.
-   */
-  protected void installComponents()
-  {
-    setNorthPane(createNorthPane(frame));
-    setSouthPane(createSouthPane(frame));
-    setEastPane(createEastPane(frame));
-    setWestPane(createWestPane(frame));
-  }
-
-  /**
-   * This method installs the listeners for the JInternalFrame.
-   */
-  protected void installListeners()
-  {
-    glassPaneDispatcher = createGlassPaneDispatcher();
-    createInternalFrameListener();
-    borderListener = createBorderListener(frame);
-    componentListener = createComponentListener();
-    propertyChangeListener = createPropertyChangeListener();
-
-    frame.addMouseListener(borderListener);
-    frame.addMouseMotionListener(borderListener);
-    frame.addInternalFrameListener(internalFrameListener);
-    frame.addPropertyChangeListener(propertyChangeListener);
-    frame.getRootPane().getGlassPane().addMouseListener(glassPaneDispatcher);
-    frame.getRootPane().getGlassPane().addMouseMotionListener(glassPaneDispatcher);
-
-    Container parent = frame.getParent();
-    if (parent != null)
-      {
-        parent.addComponentListener(componentListener);
-      }
-  }
-
-  /**
-   * This method uninstalls the defaults for the JInternalFrame.
-   */
-  protected void uninstallDefaults()
-  {
-    frame.setBorder(null);
-    frame.setLayout(null);
-    internalFrameLayout = null;
-  }
-
-  /**
-   * This method uninstalls the Components for the JInternalFrame.
-   */
-  protected void uninstallComponents()
-  {
-    setNorthPane(null);
-    setSouthPane(null);
-    setEastPane(null);
-    setWestPane(null);
-  }
-
-  /**
-   * This method uninstalls the listeners for the JInternalFrame.
-   */
-  protected void uninstallListeners()
-  {
-
-    Container parent = frame.getParent();
-    if (parent != null)
-      {
-        parent.removeComponentListener(componentListener);
-      }
-    componentListener = null;
-
-    frame.getRootPane().getGlassPane().removeMouseMotionListener(glassPaneDispatcher);
-    frame.getRootPane().getGlassPane().removeMouseListener(glassPaneDispatcher);
-
-    frame.removePropertyChangeListener(propertyChangeListener);
-    frame.removeInternalFrameListener(internalFrameListener);
-    frame.removeMouseMotionListener(borderListener);
-    frame.removeMouseListener(borderListener);
-
-    propertyChangeListener = null;
-
-    borderListener = null;
-    internalFrameListener = null;
-    glassPaneDispatcher = null;
-  }
-
-  /**
-   * This method uninstalls the keyboard actions for the JInternalFrame.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    SwingUtilities.replaceUIActionMap(frame, null);
-    SwingUtilities.replaceUIInputMap(frame, JComponent.WHEN_IN_FOCUSED_WINDOW,
-                                     null);
-  }
-
-  /**
-   * This method creates a new LayoutManager for the JInternalFrame.
-   *
-   * @return A new LayoutManager for the JInternalFrame.
-   */
-  protected LayoutManager createLayoutManager()
-  {
-    return new InternalFrameLayout();
-  }
-
-  /**
-   * This method creates a new PropertyChangeListener for the JInternalFrame.
-   *
-   * @return A new PropertyChangeListener for the JInternalFrame.
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new InternalFramePropertyChangeListener();
-  }
-
-  /**
-   * This method returns the preferred size of the given JComponent.
-   *
-   * @param x The JComponent to find a preferred size for.
-   *
-   * @return The preferred size.
-   */
-  public Dimension getPreferredSize(JComponent x)
-  {
-    Dimension pref = null;
-    LayoutManager layout = frame.getLayout();
-    if (frame == x && layout != null)
-      pref = layout.preferredLayoutSize(frame);
-    else
-      pref = new Dimension(100, 100);
-    return pref;
-  }
-
-  /**
-   * This method returns the minimum size of the given JComponent.
-   *
-   * @param x The JComponent to find a minimum size for.
-   *
-   * @return The minimum size.
-   */
-  public Dimension getMinimumSize(JComponent x)
-  {
-    Dimension min = null;
-    LayoutManager layout = frame.getLayout();
-    if (frame == x && layout != null)
-      min = layout.minimumLayoutSize(frame);
-    else
-      min = new Dimension(0, 0);
-    return min;
-  }
-
-  /**
-   * This method returns the maximum size of the given JComponent.
-   *
-   * @param x The JComponent to find a maximum size for.
-   *
-   * @return The maximum size.
-   */
-  public Dimension getMaximumSize(JComponent x)
-  {
-    Dimension max = null;
-    LayoutManager layout = frame.getLayout();
-    if (frame == x && layout != null && layout instanceof LayoutManager2)
-      max = ((LayoutManager2) layout).maximumLayoutSize(frame);
-    else
-      max = new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
-    return max;
-  }
-
-  /**
-   * This method replaces the currentPane with the newPane. When replacing it
-   * also removes the MouseHandlers for the old pane and installs  them on
-   * the new pane.
-   *
-   * @param currentPane The old pane to remove.
-   * @param newPane The new pane to install.
-   */
-  protected void replacePane(JComponent currentPane, JComponent newPane)
-  {
-    if (currentPane != null)
-      {
-        deinstallMouseHandlers(currentPane);
-        frame.remove(currentPane);
-      }
-
-    if (newPane != null)
-      {
-        installMouseHandlers(newPane);
-        frame.add(newPane);
-      }
-  }
-
-  /**
-   * This method removes the necessary MouseListeners from the given
-   * JComponent.
-   *
-   * @param c The JComponent to remove MouseListeners from.
-   */
-  protected void deinstallMouseHandlers(JComponent c)
-  {
-    c.removeMouseListener(borderListener);
-    c.removeMouseMotionListener(borderListener);
-  }
-
-  /**
-   * This method installs the necessary MouseListeners from the given
-   * JComponent.
-   *
-   * @param c The JComponent to install MouseListeners on.
-   */
-  protected void installMouseHandlers(JComponent c)
-  {
-    c.addMouseListener(borderListener);
-    c.addMouseMotionListener(borderListener);
-  }
-
-  /**
-   * This method creates the north pane used in the JInternalFrame.
-   *
-   * @param w The JInternalFrame to create a north pane for.
-   *
-   * @return The north pane.
-   */
-  protected JComponent createNorthPane(JInternalFrame w)
-  {
-    titlePane = new BasicInternalFrameTitlePane(w);
-    return titlePane;
-  }
-
-  /**
-   * This method creates the west pane used in the JInternalFrame.
-   *
-   * @param w The JInternalFrame to create a west pane for.
-   *
-   * @return The west pane.
-   */
-  protected JComponent createWestPane(JInternalFrame w)
-  {
-    return null;
-  }
-
-  /**
-   * This method creates the south pane used in the JInternalFrame.
-   *
-   * @param w The JInternalFrame to create a south pane for.
-   *
-   * @return The south pane.
-   */
-  protected JComponent createSouthPane(JInternalFrame w)
-  {
-    return null;
-  }
-
-  /**
-   * This method creates the east pane used in the JInternalFrame.
-   *
-   * @param w The JInternalFrame to create an east pane for.
-   *
-   * @return The east pane.
-   */
-  protected JComponent createEastPane(JInternalFrame w)
-  {
-    return null;
-  }
-
-  /**
-   * This method returns a new BorderListener for the given JInternalFrame.
-   *
-   * @param w The JIntenalFrame to create a BorderListener for.
-   *
-   * @return A new BorderListener.
-   */
-  protected MouseInputAdapter createBorderListener(JInternalFrame w)
-  {
-    return new BorderListener();
-  }
-
-  /**
-   * This method creates a new InternalFrameListener for the JInternalFrame.
-   */
-  protected void createInternalFrameListener()
-  {
-    internalFrameListener = new BasicInternalFrameListener();
-  }
-
-  /**
-   * DOCUMENT ME!
-   *
-   * @return DOCUMENT ME!
-   */
-  protected final boolean isKeyBindingRegistered()
-  {
-    // FIXME: Implement.
-    return false;
-  }
-
-  /**
-   * DOCUMENT ME!
-   *
-   * @param b DOCUMENT ME!
-   */
-  protected final void setKeyBindingRegistered(boolean b)
-  {
-    // FIXME: Implement.
-  }
-
-  /**
-   * DOCUMENT ME!
-   *
-   * @return DOCUMENT ME!
-   */
-  public final boolean isKeyBindingActive()
-  {
-    // FIXME: Implement.
-    return false;
-  }
-
-  /**
-   * DOCUMENT ME!
-   *
-   * @param b DOCUMENT ME!
-   */
-  protected final void setKeyBindingActive(boolean b)
-  {
-    // FIXME: Implement.
-  }
-
-  /**
-   * DOCUMENT ME!
-   */
-  protected void setupMenuOpenKey()
-  {
-    // FIXME: Implement.
-  }
-
-  /**
-   * DOCUMENT ME!
-   */
-  protected void setupMenuCloseKey()
-  {
-    // FIXME: Implement.
-  }
-
-  /**
-   * This method returns the north pane.
-   *
-   * @return The north pane.
-   */
-  public JComponent getNorthPane()
-  {
-    return northPane;
-  }
-
-  /**
-   * This method sets the north pane to be the given JComponent.
-   *
-   * @param c The new north pane.
-   */
-  public void setNorthPane(JComponent c)
-  {
-    replacePane(northPane, c);
-    northPane = c;
-    // the following is needed to make internal frames draggable when using
-    // the JGoodies PlasticLookAndFeel, because it overrides the
-    // createNorthPane() method and doesn't assign anything to the titlePane
-    // field.  It is possible there is another way to make this work, but
-    // I didn't find it...
-    if (c instanceof BasicInternalFrameTitlePane)
-      titlePane = (BasicInternalFrameTitlePane) c;
-  }
-
-  /**
-   * This method returns the south pane.
-   *
-   * @return The south pane.
-   */
-  public JComponent getSouthPane()
-  {
-    return southPane;
-  }
-
-  /**
-   * This method sets the south pane to be the given JComponent.
-   *
-   * @param c The new south pane.
-   */
-  public void setSouthPane(JComponent c)
-  {
-    replacePane(southPane, c);
-    southPane = c;
-  }
-
-  /**
-   * This method sets the east pane to be the given JComponent.
-   *
-   * @param c The new east pane.
-   */
-  public void setEastPane(JComponent c)
-  {
-    replacePane(eastPane, c);
-    eastPane = c;
-  }
-
-  /**
-   * This method returns the east pane.
-   *
-   * @return The east pane.
-   */
-  public JComponent getEastPane()
-  {
-    return eastPane;
-  }
-
-  /**
-   * This method sets the west pane to be the given JComponent.
-   *
-   * @param c The new west pane.
-   */
-  public void setWestPane(JComponent c)
-  {
-    replacePane(westPane, c);
-    westPane = c;
-  }
-
-  /**
-   * This method returns the west pane.
-   *
-   * @return The west pane.
-   */
-  public JComponent getWestPane()
-  {
-    return westPane;
-  }
-
-  /**
-   * This method returns the DesktopManager to use with the JInternalFrame.
-   *
-   * @return The DesktopManager to use with the JInternalFrame.
-   */
-  protected DesktopManager getDesktopManager()
-  {
-    DesktopManager value = null;
-    JDesktopPane pane = frame.getDesktopPane();
-    if (pane != null)
-      value = frame.getDesktopPane().getDesktopManager();
-    if (value == null)
-      value = createDesktopManager();
-    return value;
-  }
-
-  /**
-   * This method returns a default DesktopManager that can be used with this
-   * JInternalFrame.
-   *
-   * @return A default DesktopManager that can be used with this
-   *         JInternalFrame.
-   */
-  protected DesktopManager createDesktopManager()
-  {
-    return new DefaultDesktopManager();
-  }
-
-  /**
-   * This is a convenience method that closes the JInternalFrame.
-   *
-   * @param f The JInternalFrame to close.
-   */
-  protected void closeFrame(JInternalFrame f)
-  {
-    getDesktopManager().closeFrame(f);
-  }
-
-  /**
-   * This is a convenience method that maximizes the JInternalFrame.
-   *
-   * @param f The JInternalFrame to maximize.
-   */
-  protected void maximizeFrame(JInternalFrame f)
-  {
-    getDesktopManager().maximizeFrame(f);
-  }
-
-  /**
-   * This is a convenience method that minimizes the JInternalFrame.
-   *
-   * @param f The JInternalFrame to minimize.
-   */
-  protected void minimizeFrame(JInternalFrame f)
-  {
-    getDesktopManager().minimizeFrame(f);
-  }
-
-  /**
-   * This is a convenience method that iconifies the JInternalFrame.
-   *
-   * @param f The JInternalFrame to iconify.
-   */
-  protected void iconifyFrame(JInternalFrame f)
-  {
-    getDesktopManager().iconifyFrame(f);
-  }
-
-  /**
-   * This is a convenience method that deiconifies the JInternalFrame.
-   *
-   * @param f The JInternalFrame to deiconify.
-   */
-  protected void deiconifyFrame(JInternalFrame f)
-  {
-    getDesktopManager().deiconifyFrame(f);
-  }
-
-  /**
-   * This is a convenience method that activates the JInternalFrame.
-   *
-   * @param f The JInternalFrame to activate.
-   */
-  protected void activateFrame(JInternalFrame f)
-  {
-    getDesktopManager().activateFrame(f);
-  }
-
-  /**
-   * This is a convenience method that deactivates the JInternalFrame.
-   *
-   * @param f the JInternalFrame to deactivate
-   */
-  protected void deactivateFrame(JInternalFrame f)
-  {
-    getDesktopManager().deactivateFrame(f);
-  }
-
-  /**
-   * This method returns a new ComponentListener for the JDesktopPane.
-   *
-   * @return A new ComponentListener.
-   */
-  protected ComponentListener createComponentListener()
-  {
-    return new ComponentHandler();
-  }
-
-  /**
-   * This method returns a new GlassPaneDispatcher.
-   *
-   * @return A new GlassPaneDispatcher.
-   */
-  protected MouseInputListener createGlassPaneDispatcher()
-  {
-    return new GlassPaneDispatcher();
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicLabelUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicLabelUI.java
deleted file mode 100644
index 9469b56..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicLabelUI.java
+++ /dev/null
@@ -1,542 +0,0 @@
-/* BasicLabelUI.java
- Copyright (C) 2002, 2004, 2006, Free Software Foundation, Inc.
-
- This file is part of GNU Classpath.
-
- GNU Classpath is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- GNU Classpath is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Classpath; see the file COPYING.  If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA.
-
- Linking this library statically or dynamically with other modules is
- making a combined work based on this library.  Thus, the terms and
- conditions of the GNU General Public License cover the whole
- combination.
-
- As a special exception, the copyright holders of this library give you
- permission to link this library with independent modules to produce an
- executable, regardless of the license terms of these independent
- modules, and to copy and distribute the resulting executable under
- terms of your choice, provided that you also meet, for each linked
- independent module, the terms and conditions of the license of that
- module.  An independent module is a module which is not derived from
- or based on this library.  If you modify this library, you may extend
- this exception to your version of the library, but you are not
- obligated to do so.  If you do not wish to do so, delete this
- exception statement from your version. */
-
-package javax.swing.plaf.basic;
-
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Rectangle;
-import java.awt.Toolkit;
-import java.awt.event.ActionEvent;
-import java.awt.event.KeyEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.AbstractAction;
-import javax.swing.ActionMap;
-import javax.swing.Icon;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.KeyStroke;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingUtilities;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.LabelUI;
-import javax.swing.text.View;
-
-/**
- * This is the Basic Look and Feel class for the JLabel.  One BasicLabelUI
- * object is used to paint all JLabels that utilize the Basic Look and Feel.
- */
-public class BasicLabelUI extends LabelUI implements PropertyChangeListener
-{
-  /** The labelUI that is shared by all labels. */
-  protected static BasicLabelUI labelUI;
-
-  /**
-   * These fields hold the rectangles for the whole label,
-   * the icon and the text.
-   */
-  private Rectangle vr;
-  private Rectangle ir;
-  private Rectangle tr;
-
-  /**
-   * A cached Insets object for reuse in the label layout methods.
-   */
-  private Insets cachedInsets;
-
-  /**
-   * Creates a new BasicLabelUI object.
-   */
-  public BasicLabelUI()
-  {
-    super();
-    vr = new Rectangle();
-    ir = new Rectangle();
-    tr = new Rectangle();
-  }
-
-  /**
-   * Creates and returns a UI for the label. Since one UI is shared by  all
-   * labels, this means creating only if necessary and returning the  shared
-   * UI.
-   *
-   * @param c The {@link JComponent} that a UI is being created for.
-   *
-   * @return A label UI for the Basic Look and Feel.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    if (labelUI == null)
-      labelUI = new BasicLabelUI();
-    return labelUI;
-  }
-
-  /**
-   * Returns the preferred size of this component as calculated by the
-   * {@link #layoutCL(JLabel, FontMetrics, String, Icon, Rectangle, Rectangle,
-   * Rectangle)} method.
-   *
-   * @param c This {@link JComponent} to get a preferred size for.
-   *
-   * @return The preferred size.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    JLabel lab = (JLabel) c;
-    Insets insets = lab.getInsets();
-    int insetsX = insets.left + insets.right;
-    int insetsY = insets.top + insets.bottom;
-    Icon icon = lab.getIcon();
-    String text = lab.getText();
-    Dimension ret;
-    if (icon == null && text == null)
-      ret = new Dimension(insetsX, insetsY);
-    else if (icon != null && text == null)
-      ret = new Dimension(icon.getIconWidth() + insetsX,
-                          icon.getIconHeight() + insetsY);
-    else
-      {
-        FontMetrics fm = getFontMetrics(lab);
-        ir.x = 0;
-        ir.y = 0;
-        ir.width = 0;
-        ir.height = 0;
-        tr.x = 0;
-        tr.y = 0;
-        tr.width = 0;
-        tr.height = 0;
-        vr.x = 0;
-        vr.y = 0;
-        vr.width = Short.MAX_VALUE;
-        vr.height = Short.MAX_VALUE;
-        layoutCL(lab, fm, text, icon, vr, ir, tr);
-        Rectangle cr = SwingUtilities.computeUnion(tr.x, tr.y, tr.width,
-                                                   tr.height, ir);
-        ret = new Dimension(cr.width + insetsX, cr.height + insetsY);
-      }
-    return ret;
-  }
-
-  /**
-   * This method returns the minimum size of the {@link JComponent} given. If
-   * this method returns null, then it is up to the Layout Manager to give
-   * this component a minimum size.
-   *
-   * @param c The {@link JComponent} to get a minimum size for.
-   *
-   * @return The minimum size.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-  /**
-   * This method returns the maximum size of the {@link JComponent} given. If
-   * this method returns null, then it is up to the Layout Manager to give
-   * this component a maximum size.
-   *
-   * @param c The {@link JComponent} to get a maximum size for.
-   *
-   * @return The maximum size.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-  /**
-   * The method that paints the label according to its current state.
-   *
-   * @param g The {@link Graphics} object to paint with.
-   * @param c The {@link JComponent} to paint.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    JLabel b = (JLabel) c;
-    Icon icon = (b.isEnabled()) ? b.getIcon() : b.getDisabledIcon();
-    String text = b.getText();
-    if (icon != null || (text != null && ! text.equals("")))
-      {
-        FontMetrics fm = getFontMetrics(b);
-        Insets i = c.getInsets(cachedInsets);
-        vr.x = i.left;
-        vr.y = i.right;
-        vr.width = c.getWidth() - i.left - i.right;
-        vr.height = c.getHeight() - i.top - i.bottom;
-        ir.x = 0;
-        ir.y = 0;
-        ir.width = 0;
-        ir.height = 0;
-        tr.x = 0;
-        tr.y = 0;
-        tr.width = 0;
-        tr.height = 0;
-
-        text = layoutCL(b, fm, text, icon, vr, ir, tr);
-
-        if (icon != null)
-          icon.paintIcon(b, g, ir.x, ir.y);
-
-        if (text != null && ! text.equals(""))
-          {
-            Object htmlRenderer = b.getClientProperty(BasicHTML.propertyKey);
-            if (htmlRenderer == null)
-              {
-                if (b.isEnabled())
-                  paintEnabledText(b, g, text, tr.x, tr.y + fm.getAscent());
-                else
-                  paintDisabledText(b, g, text, tr.x, tr.y + fm.getAscent());
-              }
-            else
-              {
-                ((View) htmlRenderer).paint(g, tr);
-              }
-          }
-      }
-  }
-
-  /**
-   * This method is simply calls SwingUtilities's layoutCompoundLabel.
-   *
-   * @param label The label to lay out.
-   * @param fontMetrics The FontMetrics for the font used.
-   * @param text The text to paint.
-   * @param icon The icon to draw.
-   * @param viewR The entire viewable rectangle.
-   * @param iconR The icon bounds rectangle.
-   * @param textR The text bounds rectangle.
-   *
-   * @return A possibly clipped version of the text.
-   */
-  protected String layoutCL(JLabel label, FontMetrics fontMetrics, String text,
-      Icon icon, Rectangle viewR, Rectangle iconR, Rectangle textR)
-  {
-    return SwingUtilities.layoutCompoundLabel(label, fontMetrics, text, icon,
-        label.getVerticalAlignment(), label.getHorizontalAlignment(), label
-            .getVerticalTextPosition(), label.getHorizontalTextPosition(),
-        viewR, iconR, textR, label.getIconTextGap());
-  }
-
-  /**
-   * Paints the text if the label is disabled. By default, this paints the
-   * clipped text returned by layoutCompoundLabel using the
-   * background.brighter() color. It also paints the same text using the
-   * background.darker() color one pixel to the right and one pixel down.
-   *
-   * @param l The {@link JLabel} being painted.
-   * @param g The {@link Graphics} object to paint with.
-   * @param s The String to paint.
-   * @param textX The x coordinate of the start of the baseline.
-   * @param textY The y coordinate of the start of the baseline.
-   */
-  protected void paintDisabledText(JLabel l, Graphics g, String s, int textX,
-      int textY)
-  {
-    g.setColor(l.getBackground().brighter());
-
-    int mnemIndex = l.getDisplayedMnemonicIndex();
-
-    if (mnemIndex != -1)
-      BasicGraphicsUtils.drawStringUnderlineCharAt(g, s, mnemIndex, textX,
-          textY);
-    else
-      g.drawString(s, textX, textY);
-
-    g.setColor(l.getBackground().darker());
-    if (mnemIndex != -1)
-      BasicGraphicsUtils.drawStringUnderlineCharAt(g, s, mnemIndex, textX + 1,
-          textY + 1);
-    else
-      g.drawString(s, textX + 1, textY + 1);
-  }
-
-  /**
-   * Paints the text if the label is enabled. The text is painted using the
-   * foreground color.
-   *
-   * @param l The {@link JLabel} being painted.
-   * @param g The {@link Graphics} object to paint with.
-   * @param s The String to paint.
-   * @param textX The x coordinate of the start of the baseline.
-   * @param textY The y coordinate of the start of the baseline.
-   */
-  protected void paintEnabledText(JLabel l, Graphics g, String s, int textX,
-                                  int textY)
-  {
-    g.setColor(l.getForeground());
-
-    int mnemIndex = l.getDisplayedMnemonicIndex();
-
-    if (mnemIndex != -1)
-      BasicGraphicsUtils.drawStringUnderlineCharAt(g, s, mnemIndex, textX,
-          textY);
-    else
-      g.drawString(s, textX, textY);
-  }
-
-  /**
-   * This method installs the UI for the given {@link JComponent}.  This
-   * method will install the component, defaults, listeners,  and keyboard
-   * actions.
-   *
-   * @param c The {@link JComponent} that this UI is being installed on.
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    if (c instanceof JLabel)
-    {
-      JLabel l = (JLabel) c;
-
-      installComponents(l);
-      installDefaults(l);
-      installListeners(l);
-      installKeyboardActions(l);
-    }
-  }
-
-  /**
-   * This method uninstalls the UI for the given {@link JComponent}. This
-   * method will uninstall the component, defaults, listeners,  and keyboard
-   * actions.
-   *
-   * @param c The {@link JComponent} that this UI is being installed on.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    super.uninstallUI(c);
-    if (c instanceof JLabel)
-    {
-      JLabel l = (JLabel) c;
-
-      uninstallKeyboardActions(l);
-      uninstallListeners(l);
-      uninstallDefaults(l);
-      uninstallComponents(l);
-    }
-  }
-
-  /**
-   * This method installs the components for this {@link JLabel}.
-   *
-   * @param c The {@link JLabel} to install components for.
-   */
-  protected void installComponents(JLabel c)
-  {
-    BasicHTML.updateRenderer(c, c.getText());
-  }
-
-  /**
-   * This method uninstalls the components for this {@link JLabel}.
-   *
-   * @param c The {@link JLabel} to uninstall components for.
-   */
-  protected void uninstallComponents(JLabel c)
-  {
-    c.putClientProperty(BasicHTML.propertyKey, null);
-    c.putClientProperty(BasicHTML.documentBaseKey, null);
-  }
-
-  /**
-   * This method installs the defaults that are defined in  the Basic look and
-   * feel for this {@link JLabel}.
-   *
-   * @param c The {@link JLabel} to install defaults for.
-   */
-  protected void installDefaults(JLabel c)
-  {
-    LookAndFeel.installColorsAndFont(c, "Label.background", "Label.foreground",
-                                     "Label.font");
-    //XXX: There are properties we don't use called disabledForeground
-    //and disabledShadow.
-  }
-
-  /**
-   * This method uninstalls the defaults that are defined in the Basic look
-   * and feel for this {@link JLabel}.
-   *
-   * @param c The {@link JLabel} to uninstall defaults for.
-   */
-  protected void uninstallDefaults(JLabel c)
-  {
-    c.setForeground(null);
-    c.setBackground(null);
-    c.setFont(null);
-  }
-
-  /**
-   * Installs the keyboard actions for the given {@link JLabel}.
-   *
-   * @param l The {@link JLabel} to install keyboard actions for.
-   */
-  protected void installKeyboardActions(JLabel l)
-  {
-    Component c = l.getLabelFor();
-    if (c != null)
-      {
-        int mnemonic = l.getDisplayedMnemonic();
-        if (mnemonic > 0)
-          {
-            // add a keystroke for the given mnemonic mapping to 'press';
-            InputMap keyMap = new InputMap();
-            keyMap.put(KeyStroke.getKeyStroke(mnemonic, KeyEvent.VK_ALT),
-                "press");
-            SwingUtilities.replaceUIInputMap(l,
-                JComponent.WHEN_IN_FOCUSED_WINDOW, keyMap);
-
-            // add an action to focus the component when 'press' happens
-            ActionMap map = new ActionMap();
-            map.put("press", new AbstractAction() {
-              public void actionPerformed(ActionEvent event)
-              {
-                JLabel label = (JLabel) event.getSource();
-                Component c = label.getLabelFor();
-                if (c != null)
-                  c.requestFocus();
-              }
-            });
-            SwingUtilities.replaceUIActionMap(l, map);
-          }
-      }
-  }
-
-  /**
-   * This method uninstalls the keyboard actions for the given {@link JLabel}.
-   *
-   * @param l The {@link JLabel} to uninstall keyboard actions for.
-   */
-  protected void uninstallKeyboardActions(JLabel l)
-  {
-    SwingUtilities.replaceUIActionMap(l, null);
-    SwingUtilities.replaceUIInputMap(l, JComponent.WHEN_IN_FOCUSED_WINDOW,
-                                     null);
-  }
-
-  /**
-   * This method installs the listeners for the  given {@link JLabel}. The UI
-   * delegate only listens to  the label.
-   *
-   * @param c The {@link JLabel} to install listeners for.
-   */
-  protected void installListeners(JLabel c)
-  {
-    c.addPropertyChangeListener(this);
-  }
-
-  /**
-   * This method uninstalls the listeners for the given {@link JLabel}. The UI
-   * delegate only listens to the label.
-   *
-   * @param c The {@link JLabel} to uninstall listeners for.
-   */
-  protected void uninstallListeners(JLabel c)
-  {
-    c.removePropertyChangeListener(this);
-  }
-
-  /**
-   * This method is called whenever any JLabel's that use this UI has one of
-   * their properties change.
-   *
-   * @param e The {@link PropertyChangeEvent} that describes the change.
-   */
-  public void propertyChange(PropertyChangeEvent e)
-  {
-    if (e.getPropertyName().equals("text"))
-      {
-        String text = (String) e.getNewValue();
-        JLabel l = (JLabel) e.getSource();
-        BasicHTML.updateRenderer(l, text);
-      }
-    else if (e.getPropertyName().equals("displayedMnemonic"))
-      {
-        // update the key to action mapping
-        JLabel label = (JLabel) e.getSource();
-        if (label.getLabelFor() != null)
-          {
-            int oldMnemonic = ((Integer) e.getOldValue()).intValue();
-            int newMnemonic = ((Integer) e.getNewValue()).intValue();
-            InputMap keyMap = label.getInputMap(
-                JComponent.WHEN_IN_FOCUSED_WINDOW);
-            keyMap.put(KeyStroke.getKeyStroke(oldMnemonic,
-                KeyEvent.ALT_DOWN_MASK), null);
-            keyMap.put(KeyStroke.getKeyStroke(newMnemonic,
-                KeyEvent.ALT_DOWN_MASK), "press");
-          }
-      }
-    else if (e.getPropertyName().equals("labelFor"))
-      {
-        JLabel label = (JLabel) e.getSource();
-        InputMap keyMap = label.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
-        int mnemonic = label.getDisplayedMnemonic();
-        if (mnemonic > 0)
-          keyMap.put(KeyStroke.getKeyStroke(mnemonic, KeyEvent.ALT_DOWN_MASK),
-              "press");
-      }
-  }
-
-  /**
-   * Fetches a font metrics object for the specified label. This first
-   * tries to get it from the label object itself by calling
-   * {@link Component#getFontMetrics(Font)}, and if that does not work
-   * (for instance, when we are in the initialization and have no parent yet),
-   * it asks the Toolkit for a font metrics object.
-   *
-   * @param l the label
-   *
-   * @return a suitable font metrics object
-   */
-  private FontMetrics getFontMetrics(JLabel l)
-  {
-    Font font = l.getFont();
-    FontMetrics fm = l.getFontMetrics(font);
-    if (fm == null)
-      {
-        Toolkit tk = Toolkit.getDefaultToolkit();
-        fm = tk.getFontMetrics(font);
-      }
-    return fm;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicListUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicListUI.java
deleted file mode 100644
index 0e33957..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicListUI.java
+++ /dev/null
@@ -1,1421 +0,0 @@
-/* BasicListUI.java --
-   Copyright (C) 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.AbstractAction;
-import javax.swing.ActionMap;
-import javax.swing.CellRendererPane;
-import javax.swing.DefaultListSelectionModel;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
-import javax.swing.JList;
-import javax.swing.ListCellRenderer;
-import javax.swing.ListModel;
-import javax.swing.ListSelectionModel;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingUtilities;
-import javax.swing.TransferHandler;
-import javax.swing.UIDefaults;
-import javax.swing.UIManager;
-import javax.swing.event.ListDataEvent;
-import javax.swing.event.ListDataListener;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.event.MouseInputListener;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ListUI;
-import javax.swing.plaf.UIResource;
-
-/**
- * The Basic Look and Feel UI delegate for the
- * JList.
- */
-public class BasicListUI extends ListUI
-{
-
-  /**
-   * A helper class which listens for {@link FocusEvent}s
-   * from the JList.
-   */
-  public class FocusHandler implements FocusListener
-  {
-    /**
-     * Called when the JList acquires focus.
-     *
-     * @param e The FocusEvent representing focus acquisition
-     */
-    public void focusGained(FocusEvent e)
-    {
-      repaintCellFocus();
-    }
-
-    /**
-     * Called when the JList loses focus.
-     *
-     * @param e The FocusEvent representing focus loss
-     */
-    public void focusLost(FocusEvent e)
-    {
-      repaintCellFocus();
-    }
-
-    /**
-     * Helper method to repaint the focused cell's
-     * lost or acquired focus state.
-     */
-    protected void repaintCellFocus()
-    {
-      // TODO: Implement this properly.
-    }
-  }
-
-  /**
-   * A helper class which listens for {@link ListDataEvent}s generated by
-   * the {@link JList}'s {@link ListModel}.
-   *
-   * @see javax.swing.JList#getModel()
-   */
-  public class ListDataHandler implements ListDataListener
-  {
-    /**
-     * Called when a general change has happened in the model which cannot
-     * be represented in terms of a simple addition or deletion.
-     *
-     * @param e The event representing the change
-     */
-    public void contentsChanged(ListDataEvent e)
-    {
-      updateLayoutStateNeeded |= modelChanged;
-      list.revalidate();
-    }
-
-    /**
-     * Called when an interval of objects has been added to the model.
-     *
-     * @param e The event representing the addition
-     */
-    public void intervalAdded(ListDataEvent e)
-    {
-      updateLayoutStateNeeded |= modelChanged;
-      list.revalidate();
-    }
-
-    /**
-     * Called when an inteval of objects has been removed from the model.
-     *
-     * @param e The event representing the removal
-     */
-    public void intervalRemoved(ListDataEvent e)
-    {
-      updateLayoutStateNeeded |= modelChanged;
-      list.revalidate();
-    }
-  }
-
-  /**
-   * A helper class which listens for {@link ListSelectionEvent}s
-   * from the {@link JList}'s {@link ListSelectionModel}.
-   */
-  public class ListSelectionHandler implements ListSelectionListener
-  {
-    /**
-     * Called when the list selection changes.
-     *
-     * @param e The event representing the change
-     */
-    public void valueChanged(ListSelectionEvent e)
-    {
-      int index1 = e.getFirstIndex();
-      int index2 = e.getLastIndex();
-      Rectangle damaged = getCellBounds(list, index1, index2);
-      if (damaged != null)
-        list.repaint(damaged);
-    }
-  }
-
-  /**
-   * This class is used to mimmic the behaviour of the JDK when registering
-   * keyboard actions.  It is the same as the private class used in JComponent
-   * for the same reason.  This class receives an action event and dispatches
-   * it to the true receiver after altering the actionCommand property of the
-   * event.
-   */
-  private static class ActionListenerProxy
-    extends AbstractAction
-  {
-    ActionListener target;
-    String bindingCommandName;
-
-    public ActionListenerProxy(ActionListener li,
-                               String cmd)
-    {
-      target = li;
-      bindingCommandName = cmd;
-    }
-
-    public void actionPerformed(ActionEvent e)
-    {
-      ActionEvent derivedEvent = new ActionEvent(e.getSource(),
-                                                 e.getID(),
-                                                 bindingCommandName,
-                                                 e.getModifiers());
-      target.actionPerformed(derivedEvent);
-    }
-  }
-
-  /**
-   * Implements the action for the JList's keyboard commands.
-   */
-  private class ListAction
-    extends AbstractAction
-  {
-    // TODO: Maybe make a couple of classes out of this bulk Action.
-    // Form logical groups of Actions when doing this.
-
-    /**
-     * Creates a new ListAction for the specified command.
-     *
-     * @param cmd the actionCommand to set
-     */
-    ListAction(String cmd)
-    {
-      putValue(ACTION_COMMAND_KEY, cmd);
-    }
-
-    public void actionPerformed(ActionEvent e)
-    {
-      int lead = list.getLeadSelectionIndex();
-      int max = list.getModel().getSize() - 1;
-      DefaultListSelectionModel selModel
-          = (DefaultListSelectionModel) list.getSelectionModel();
-      String command = e.getActionCommand();
-      // Do nothing if list is empty
-      if (max == -1)
-        return;
-
-      if (command.equals("selectNextRow"))
-        {
-          selectNextIndex();
-        }
-      else if (command.equals("selectPreviousRow"))
-        {
-          selectPreviousIndex();
-        }
-      else if (command.equals("clearSelection"))
-        {
-          list.clearSelection();
-        }
-      else if (command.equals("selectAll"))
-        {
-          list.setSelectionInterval(0, max);
-          // this next line is to restore the lead selection index to the old
-          // position, because select-all should not change the lead index
-          list.addSelectionInterval(lead, lead);
-        }
-      else if (command.equals("selectLastRow"))
-        {
-          list.setSelectedIndex(list.getModel().getSize() - 1);
-        }
-      else if (command.equals("selectLastRowChangeLead"))
-        {
-          selModel.moveLeadSelectionIndex(list.getModel().getSize() - 1);
-        }
-      else if (command.equals("scrollDownExtendSelection"))
-        {
-          int target;
-          if (lead == list.getLastVisibleIndex())
-            {
-              target = Math.min(max, lead + (list.getLastVisibleIndex()
-                  - list.getFirstVisibleIndex() + 1));
-            }
-          else
-            target = list.getLastVisibleIndex();
-          selModel.setLeadSelectionIndex(target);
-        }
-      else if (command.equals("scrollDownChangeLead"))
-        {
-          int target;
-          if (lead == list.getLastVisibleIndex())
-            {
-              target = Math.min(max, lead + (list.getLastVisibleIndex()
-                  - list.getFirstVisibleIndex() + 1));
-            }
-          else
-            target = list.getLastVisibleIndex();
-          selModel.moveLeadSelectionIndex(target);
-        }
-      else if (command.equals("scrollUpExtendSelection"))
-        {
-          int target;
-          if (lead == list.getFirstVisibleIndex())
-            {
-              target = Math.max(0, lead - (list.getLastVisibleIndex()
-                  - list.getFirstVisibleIndex() + 1));
-            }
-          else
-            target = list.getFirstVisibleIndex();
-          selModel.setLeadSelectionIndex(target);
-        }
-      else if (command.equals("scrollUpChangeLead"))
-        {
-          int target;
-          if (lead == list.getFirstVisibleIndex())
-            {
-              target = Math.max(0, lead - (list.getLastVisibleIndex()
-                  - list.getFirstVisibleIndex() + 1));
-            }
-          else
-            target = list.getFirstVisibleIndex();
-          selModel.moveLeadSelectionIndex(target);
-        }
-      else if (command.equals("selectNextRowExtendSelection"))
-        {
-          selModel.setLeadSelectionIndex(Math.min(lead + 1, max));
-        }
-      else if (command.equals("selectFirstRow"))
-        {
-          list.setSelectedIndex(0);
-        }
-      else if (command.equals("selectFirstRowChangeLead"))
-        {
-          selModel.moveLeadSelectionIndex(0);
-        }
-      else if (command.equals("selectFirstRowExtendSelection"))
-        {
-          selModel.setLeadSelectionIndex(0);
-        }
-      else if (command.equals("selectPreviousRowExtendSelection"))
-        {
-          selModel.setLeadSelectionIndex(Math.max(0, lead - 1));
-        }
-      else if (command.equals("scrollUp"))
-        {
-          int target;
-          if (lead == list.getFirstVisibleIndex())
-            {
-              target = Math.max(0, lead - (list.getLastVisibleIndex()
-                  - list.getFirstVisibleIndex() + 1));
-            }
-          else
-            target = list.getFirstVisibleIndex();
-          list.setSelectedIndex(target);
-        }
-      else if (command.equals("selectLastRowExtendSelection"))
-        {
-          selModel.setLeadSelectionIndex(list.getModel().getSize() - 1);
-        }
-      else if (command.equals("scrollDown"))
-        {
-          int target;
-          if (lead == list.getLastVisibleIndex())
-            {
-              target = Math.min(max, lead + (list.getLastVisibleIndex()
-                  - list.getFirstVisibleIndex() + 1));
-            }
-          else
-            target = list.getLastVisibleIndex();
-          list.setSelectedIndex(target);
-        }
-      else if (command.equals("selectNextRowChangeLead"))
-          {
-            if (selModel.getSelectionMode() != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
-              selectNextIndex();
-            else
-              {
-                selModel.moveLeadSelectionIndex(Math.min(max, lead + 1));
-              }
-          }
-      else if (command.equals("selectPreviousRowChangeLead"))
-        {
-          if (selModel.getSelectionMode() != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
-            selectPreviousIndex();
-          else
-            {
-              selModel.moveLeadSelectionIndex(Math.max(0, lead - 1));
-            }
-        }
-      else if (command.equals("addToSelection"))
-        {
-          list.addSelectionInterval(lead, lead);
-        }
-      else if (command.equals("extendTo"))
-        {
-          selModel.setSelectionInterval(selModel.getAnchorSelectionIndex(),
-                                        lead);
-        }
-      else if (command.equals("toggleAndAnchor"))
-        {
-          if (!list.isSelectedIndex(lead))
-            list.addSelectionInterval(lead, lead);
-          else
-            list.removeSelectionInterval(lead, lead);
-          selModel.setAnchorSelectionIndex(lead);
-        }
-      else
-        {
-          // DEBUG: uncomment the following line to print out
-          // key bindings that aren't implemented yet
-
-          // System.out.println ("not implemented: "+e.getActionCommand());
-        }
-
-      list.ensureIndexIsVisible(list.getLeadSelectionIndex());
-    }
-  }
-
-  /**
-   * A helper class which listens for {@link MouseEvent}s
-   * from the {@link JList}.
-   */
-  public class MouseInputHandler implements MouseInputListener
-  {
-    /**
-     * Called when a mouse button press/release cycle completes
-     * on the {@link JList}
-     *
-     * @param event The event representing the mouse click
-     */
-    public void mouseClicked(MouseEvent event)
-    {
-      Point click = event.getPoint();
-      int index = locationToIndex(list, click);
-      if (index == -1)
-        return;
-      if (event.isShiftDown())
-        {
-          if (list.getSelectionMode() == ListSelectionModel.SINGLE_SELECTION)
-            list.setSelectedIndex(index);
-          else if (list.getSelectionMode() ==
-                   ListSelectionModel.SINGLE_INTERVAL_SELECTION)
-            // COMPAT: the IBM VM is compatible with the following line of code.
-            // However, compliance with Sun's VM would correspond to replacing
-            // getAnchorSelectionIndex() with getLeadSelectionIndex().This is
-            // both unnatural and contradictory to the way they handle other
-            // similar UI interactions.
-            list.setSelectionInterval(list.getAnchorSelectionIndex(), index);
-          else
-            // COMPAT: both Sun and IBM are compatible instead with:
-            // list.setSelectionInterval
-            //     (list.getLeadSelectionIndex(),index);
-            // Note that for IBM this is contradictory to what they did in
-            // the above situation for SINGLE_INTERVAL_SELECTION.
-            // The most natural thing to do is the following:
-            if (list.isSelectedIndex(list.getAnchorSelectionIndex()))
-              list.getSelectionModel().setLeadSelectionIndex(index);
-            else
-              list.addSelectionInterval(list.getAnchorSelectionIndex(), index);
-        }
-      else if (event.isControlDown())
-        {
-          if (list.getSelectionMode() == ListSelectionModel.SINGLE_SELECTION)
-            list.setSelectedIndex(index);
-          else if (list.isSelectedIndex(index))
-            list.removeSelectionInterval(index, index);
-          else
-            list.addSelectionInterval(index, index);
-        }
-      else
-        list.setSelectedIndex(index);
-
-      list.ensureIndexIsVisible(list.getLeadSelectionIndex());
-    }
-
-    /**
-     * Called when a mouse button is pressed down on the
-     * {@link JList}.
-     *
-     * @param event The event representing the mouse press
-     */
-    public void mousePressed(MouseEvent event)
-    {
-      // We need to explicitly request focus.
-      list.requestFocusInWindow();
-    }
-
-    /**
-     * Called when a mouse button is released on
-     * the {@link JList}
-     *
-     * @param event The event representing the mouse press
-     */
-    public void mouseReleased(MouseEvent event)
-    {
-      // TODO: What should be done here, if anything?
-    }
-
-    /**
-     * Called when the mouse pointer enters the area bounded
-     * by the {@link JList}
-     *
-     * @param event The event representing the mouse entry
-     */
-    public void mouseEntered(MouseEvent event)
-    {
-      // TODO: What should be done here, if anything?
-    }
-
-    /**
-     * Called when the mouse pointer leaves the area bounded
-     * by the {@link JList}
-     *
-     * @param event The event representing the mouse exit
-     */
-    public void mouseExited(MouseEvent event)
-    {
-      // TODO: What should be done here, if anything?
-    }
-
-    /**
-     * Called when the mouse pointer moves over the area bounded
-     * by the {@link JList} while a button is held down.
-     *
-     * @param event The event representing the mouse drag
-     */
-    public void mouseDragged(MouseEvent event)
-    {
-      Point click = event.getPoint();
-      int index = locationToIndex(list, click);
-      if (index == -1)
-        return;
-      if (!event.isShiftDown() && !event.isControlDown())
-        list.setSelectedIndex(index);
-
-      list.ensureIndexIsVisible(list.getLeadSelectionIndex());
-    }
-
-    /**
-     * Called when the mouse pointer moves over the area bounded
-     * by the {@link JList}.
-     *
-     * @param event The event representing the mouse move
-     */
-    public void mouseMoved(MouseEvent event)
-    {
-      // TODO: What should be done here, if anything?
-    }
-  }
-
-  /**
-   * Helper class which listens to {@link PropertyChangeEvent}s
-   * from the {@link JList}.
-   */
-  public class PropertyChangeHandler implements PropertyChangeListener
-  {
-    /**
-     * Called when the {@link JList} changes one of its bound properties.
-     *
-     * @param e The event representing the property change
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      if (e.getPropertyName().equals("model"))
-        {
-          if (e.getOldValue() != null && e.getOldValue() instanceof ListModel)
-            {
-              ListModel oldModel = (ListModel) e.getOldValue();
-              oldModel.removeListDataListener(listDataListener);
-            }
-          if (e.getNewValue() != null && e.getNewValue() instanceof ListModel)
-            {
-              ListModel newModel = (ListModel) e.getNewValue();
-              newModel.addListDataListener(BasicListUI.this.listDataListener);
-            }
-
-          updateLayoutStateNeeded |= modelChanged;
-        }
-      else if (e.getPropertyName().equals("selectionModel"))
-        updateLayoutStateNeeded |= selectionModelChanged;
-      else if (e.getPropertyName().equals("font"))
-        updateLayoutStateNeeded |= fontChanged;
-      else if (e.getPropertyName().equals("fixedCellWidth"))
-        updateLayoutStateNeeded |= fixedCellWidthChanged;
-      else if (e.getPropertyName().equals("fixedCellHeight"))
-        updateLayoutStateNeeded |= fixedCellHeightChanged;
-      else if (e.getPropertyName().equals("prototypeCellValue"))
-        updateLayoutStateNeeded |= prototypeCellValueChanged;
-      else if (e.getPropertyName().equals("cellRenderer"))
-        updateLayoutStateNeeded |= cellRendererChanged;
-    }
-  }
-
-  /**
-   * A constant to indicate that the model has changed.
-   */
-  protected static final int modelChanged = 1;
-
-  /**
-   * A constant to indicate that the selection model has changed.
-   */
-  protected static final int selectionModelChanged = 2;
-
-  /**
-   * A constant to indicate that the font has changed.
-   */
-  protected static final int fontChanged = 4;
-
-  /**
-   * A constant to indicate that the fixedCellWidth has changed.
-   */
-  protected static final int fixedCellWidthChanged = 8;
-
-  /**
-   * A constant to indicate that the fixedCellHeight has changed.
-   */
-  protected static final int fixedCellHeightChanged = 16;
-
-  /**
-   * A constant to indicate that the prototypeCellValue has changed.
-   */
-  protected static final int prototypeCellValueChanged = 32;
-
-  /**
-   * A constant to indicate that the cellRenderer has changed.
-   */
-  protected static final int cellRendererChanged = 64;
-
-  /**
-   * Creates a new BasicListUI for the component.
-   *
-   * @param c The component to create a UI for
-   *
-   * @return A new UI
-   */
-  public static ComponentUI createUI(final JComponent c)
-  {
-    return new BasicListUI();
-  }
-
-  /** The current focus listener. */
-  protected FocusListener focusListener;
-
-  /** The data listener listening to the model. */
-  protected ListDataListener listDataListener;
-
-  /** The selection listener listening to the selection model. */
-  protected ListSelectionListener listSelectionListener;
-
-  /** The mouse listener listening to the list. */
-  protected MouseInputListener mouseInputListener;
-
-  /** The property change listener listening to the list. */
-  protected PropertyChangeListener propertyChangeListener;
-
-  /** Saved reference to the list this UI was created for. */
-  protected JList list;
-
-  /**
-   * The height of a single cell in the list. This field is used when the
-   * fixedCellHeight property of the list is set. Otherwise this field is
-   * set to <code>-1</code> and {@link #cellHeights} is used instead.
-   */
-  protected int cellHeight;
-
-  /** The width of a single cell in the list. */
-  protected int cellWidth;
-
-  /**
-   * An array of varying heights of cells in the list, in cases where each
-   * cell might have a different height. This field is used when the
-   * <code>fixedCellHeight</code> property of the list is not set. Otherwise
-   * this field is <code>null</code> and {@link #cellHeight} is used.
-   */
-  protected int[] cellHeights;
-
-  /**
-   * A bitmask that indicates which properties of the JList have changed.
-   * When nonzero, indicates that the UI class is out of
-   * date with respect to the underlying list, and must recalculate the
-   * list layout before painting or performing size calculations.
-   *
-   * @see #modelChanged
-   * @see #selectionModelChanged
-   * @see #fontChanged
-   * @see #fixedCellWidthChanged
-   * @see #fixedCellHeightChanged
-   * @see #prototypeCellValueChanged
-   * @see #cellRendererChanged
-   */
-  protected int updateLayoutStateNeeded;
-
-  /**
-   * The {@link CellRendererPane} that is used for painting.
-   */
-  protected CellRendererPane rendererPane;
-
-  /** The action bound to KeyStrokes. */
-  ListAction action;
-
-  /**
-   * Calculate the height of a particular row. If there is a fixed {@link
-   * #cellHeight}, return it; otherwise return the specific row height
-   * requested from the {@link #cellHeights} array. If the requested row
-   * is invalid, return <code>-1</code>.
-   *
-   * @param row The row to get the height of
-   *
-   * @return The height, in pixels, of the specified row
-   */
-  protected int getRowHeight(int row)
-  {
-    int height;
-    if (cellHeights == null)
-      height = cellHeight;
-    else
-      {
-        if (row < 0 || row >= cellHeights.length)
-          height = -1;
-        else
-          height = cellHeights[row];
-      }
-    return height;
-  }
-
-  /**
-   * Calculate the bounds of a particular cell, considering the upper left
-   * corner of the list as the origin position <code>(0,0)</code>.
-   *
-   * @param l Ignored; calculates over <code>this.list</code>
-   * @param index1 The first row to include in the bounds
-   * @param index2 The last row to incude in the bounds
-   *
-   * @return A rectangle encompassing the range of rows between
-   * <code>index1</code> and <code>index2</code> inclusive, or null
-   * such a rectangle couldn't be calculated for the given indexes.
-   */
-  public Rectangle getCellBounds(JList l, int index1, int index2)
-  {
-    maybeUpdateLayoutState();
-
-    if (l != list || cellWidth == -1)
-      return null;
-
-    int minIndex = Math.min(index1, index2);
-    int maxIndex = Math.max(index1, index2);
-    Point loc = indexToLocation(list, minIndex);
-
-    // When the layoutOrientation is VERTICAL, then the width == the list
-    // width. Otherwise the cellWidth field is used.
-    int width = cellWidth;
-    if (l.getLayoutOrientation() == JList.VERTICAL)
-      width = l.getWidth();
-
-    Rectangle bounds = new Rectangle(loc.x, loc.y, width,
-                                     getCellHeight(minIndex));
-    for (int i = minIndex + 1; i <= maxIndex; i++)
-      {
-        Point hiLoc = indexToLocation(list, i);
-        bounds = SwingUtilities.computeUnion(hiLoc.x, hiLoc.y, width,
-                                             getCellHeight(i), bounds);
-      }
-
-    return bounds;
-  }
-
-  /**
-   * Calculates the maximum cell height.
-   *
-   * @param index the index of the cell
-   *
-   * @return the maximum cell height
-   */
-  private int getCellHeight(int index)
-  {
-    int height = cellHeight;
-    if (height <= 0)
-      {
-        if (list.getLayoutOrientation() == JList.VERTICAL)
-          height = getRowHeight(index);
-        else
-          {
-            for (int j = 0; j < cellHeights.length; j++)
-              height = Math.max(height, cellHeights[j]);
-          }
-      }
-    return height;
-  }
-
-  /**
-   * Calculate the Y coordinate of the upper edge of a particular row,
-   * considering the Y coordinate <code>0</code> to occur at the top of the
-   * list.
-   *
-   * @param row The row to calculate the Y coordinate of
-   *
-   * @return The Y coordinate of the specified row, or <code>-1</code> if
-   * the specified row number is invalid
-   */
-  protected int convertRowToY(int row)
-  {
-    int y = 0;
-    for (int i = 0; i < row; ++i)
-      {
-        int h = getRowHeight(i);
-        if (h == -1)
-          return -1;
-        y += h;
-      }
-    return y;
-  }
-
-  /**
-   * Calculate the row number containing a particular Y coordinate,
-   * considering the Y coodrinate <code>0</code> to occur at the top of the
-   * list.
-   *
-   * @param y0 The Y coordinate to calculate the row number for
-   *
-   * @return The row number containing the specified Y value, or <code>-1</code>
-   *         if the list model is empty
-   *
-   * @specnote This method is specified to return -1 for an invalid Y
-   *           coordinate. However, some simple tests show that the behaviour
-   *           is to return the index of the last list element for an Y
-   *           coordinate that lies outside of the list bounds (even for
-   *           negative indices). <code>-1</code>
-   *           is only returned if the list model is empty.
-   */
-  protected int convertYToRow(int y0)
-  {
-    if (list.getModel().getSize() == 0)
-      return -1;
-
-    // When y0 < 0, then the JDK returns the maximum row index of the list. So
-    // do we.
-    if (y0 < 0)
-      return list.getModel().getSize() - 1;
-
-    // Update the layout if necessary.
-    maybeUpdateLayoutState();
-
-    int index = list.getModel().getSize() - 1;
-
-    // If a fixed cell height is set, then we can work more efficient.
-    if (cellHeight > 0)
-      index = Math.min(y0 / cellHeight, index);
-    // If we have no fixed cell height, we must add up each cell height up
-    // to y0.
-    else
-      {
-        int h = 0;
-        for (int row = 0; row < cellHeights.length; ++row)
-          {
-            h += cellHeights[row];
-            if (y0 < h)
-              {
-                index = row;
-                break;
-              }
-          }
-      }
-    return index;
-  }
-
-  /**
-   * Recomputes the {@link #cellHeights}, {@link #cellHeight}, and {@link
-   * #cellWidth} properties by examining the variouis properties of the
-   * {@link JList}.
-   */
-  protected void updateLayoutState()
-  {
-    int nrows = list.getModel().getSize();
-    cellHeight = -1;
-    cellWidth = -1;
-    if (cellHeights == null || cellHeights.length != nrows)
-      cellHeights = new int[nrows];
-    ListCellRenderer rend = list.getCellRenderer();
-    // Update the cellHeight(s) fields.
-    int fixedCellHeight = list.getFixedCellHeight();
-    if (fixedCellHeight > 0)
-      {
-        cellHeight = fixedCellHeight;
-        cellHeights = null;
-      }
-    else
-      {
-        cellHeight = -1;
-        for (int i = 0; i < nrows; ++i)
-          {
-            Component flyweight =
-              rend.getListCellRendererComponent(list,
-                      list.getModel().getElementAt(i),
-                      i, list.isSelectedIndex(i),
-                      list.getSelectionModel().getAnchorSelectionIndex() == i);
-            Dimension dim = flyweight.getPreferredSize();
-            cellHeights[i] = dim.height;
-          }
-      }
-
-    // Update the cellWidth field.
-    int fixedCellWidth = list.getFixedCellWidth();
-    if (fixedCellWidth > 0)
-      cellWidth = fixedCellWidth;
-    else
-      {
-        for (int i = 0; i < nrows; ++i)
-          {
-            Component flyweight =
-              rend.getListCellRendererComponent(list,
-                                                list.getModel().getElementAt(i),
-                                                i, list.isSelectedIndex(i),
-                                                list.getSelectionModel().getAnchorSelectionIndex() == i);
-            Dimension dim = flyweight.getPreferredSize();
-            cellWidth = Math.max(cellWidth, dim.width);
-          }
-      }
-  }
-
-  /**
-   * Calls {@link #updateLayoutState} if {@link #updateLayoutStateNeeded}
-   * is nonzero, then resets {@link #updateLayoutStateNeeded} to zero.
-   */
-  protected void maybeUpdateLayoutState()
-  {
-    if (updateLayoutStateNeeded != 0 || !list.isValid())
-      {
-        updateLayoutState();
-        updateLayoutStateNeeded = 0;
-      }
-  }
-
-  /**
-   * Creates a new BasicListUI object.
-   */
-  public BasicListUI()
-  {
-    updateLayoutStateNeeded = 1;
-    rendererPane = new CellRendererPane();
-  }
-
-  /**
-   * Installs various default settings (mostly colors) from the {@link
-   * UIDefaults} into the {@link JList}
-   *
-   * @see #uninstallDefaults
-   */
-  protected void installDefaults()
-  {
-    LookAndFeel.installColorsAndFont(list, "List.background",
-                                     "List.foreground", "List.font");
-    list.setSelectionForeground(UIManager.getColor("List.selectionForeground"));
-    list.setSelectionBackground(UIManager.getColor("List.selectionBackground"));
-    list.setOpaque(true);
-  }
-
-  /**
-   * Resets to <code>null</code> those defaults which were installed in
-   * {@link #installDefaults}
-   */
-  protected void uninstallDefaults()
-  {
-    list.setForeground(null);
-    list.setBackground(null);
-    list.setSelectionForeground(null);
-    list.setSelectionBackground(null);
-  }
-
-  /**
-   * Attaches all the listeners we have in the UI class to the {@link
-   * JList}, its model and its selection model.
-   *
-   * @see #uninstallListeners
-   */
-  protected void installListeners()
-  {
-    if (focusListener == null)
-      focusListener = createFocusListener();
-    list.addFocusListener(focusListener);
-    if (listDataListener == null)
-      listDataListener = createListDataListener();
-    list.getModel().addListDataListener(listDataListener);
-    if (listSelectionListener == null)
-      listSelectionListener = createListSelectionListener();
-    list.addListSelectionListener(listSelectionListener);
-    if (mouseInputListener == null)
-      mouseInputListener = createMouseInputListener();
-    list.addMouseListener(mouseInputListener);
-    list.addMouseMotionListener(mouseInputListener);
-    if (propertyChangeListener == null)
-      propertyChangeListener = createPropertyChangeListener();
-    list.addPropertyChangeListener(propertyChangeListener);
-  }
-
-  /**
-   * Detaches all the listeners we attached in {@link #installListeners}.
-   */
-  protected void uninstallListeners()
-  {
-    list.removeFocusListener(focusListener);
-    list.getModel().removeListDataListener(listDataListener);
-    list.removeListSelectionListener(listSelectionListener);
-    list.removeMouseListener(mouseInputListener);
-    list.removeMouseMotionListener(mouseInputListener);
-    list.removePropertyChangeListener(propertyChangeListener);
-  }
-
-  /**
-   * Installs keyboard actions for this UI in the {@link JList}.
-   */
-  protected void installKeyboardActions()
-  {
-    // Install UI InputMap.
-    InputMap focusInputMap = (InputMap) UIManager.get("List.focusInputMap");
-    SwingUtilities.replaceUIInputMap(list, JComponent.WHEN_FOCUSED,
-                                     focusInputMap);
-
-    // Install UI ActionMap.
-    ActionMap am = (ActionMap) UIManager.get("List.actionMap");
-    if (am == null)
-      {
-        // Create the actionMap once and store it in the current UIDefaults
-        // for use in other components.
-        am = new ActionMapUIResource();
-        ListAction action;
-        action = new ListAction("selectPreviousRow");
-        am.put("selectPreviousRow", action);
-        action = new ListAction("selectNextRow");
-        am.put("selectNextRow", action);
-        action = new ListAction("selectPreviousRowExtendSelection");
-        am.put("selectPreviousRowExtendSelection", action);
-        action = new ListAction("selectNextRowExtendSelection");
-        am.put("selectNextRowExtendSelection", action);
-
-        action = new ListAction("selectPreviousColumn");
-        am.put("selectPreviousColumn", action);
-        action = new ListAction("selectNextColumn");
-        am.put("selectNextColumn", action);
-        action = new ListAction("selectPreviousColumnExtendSelection");
-        am.put("selectPreviousColumnExtendSelection", action);
-        action = new ListAction("selectNextColumnExtendSelection");
-        am.put("selectNextColumnExtendSelection", action);
-
-        action = new ListAction("selectFirstRow");
-        am.put("selectFirstRow", action);
-        action = new ListAction("selectLastRow");
-        am.put("selectLastRow", action);
-        action = new ListAction("selectFirstRowExtendSelection");
-        am.put("selectFirstRowExtendSelection", action);
-        action = new ListAction("selectLastRowExtendSelection");
-        am.put("selectLastRowExtendSelection", action);
-
-        action = new ListAction("scrollUp");
-        am.put("scrollUp", action);
-        action = new ListAction("scrollUpExtendSelection");
-        am.put("scrollUpExtendSelection", action);
-        action = new ListAction("scrollDown");
-        am.put("scrollDown", action);
-        action = new ListAction("scrollDownExtendSelection");
-        am.put("scrollDownExtendSelection", action);
-
-        action = new ListAction("selectAll");
-        am.put("selectAll", action);
-        action = new ListAction("clearSelection");
-        am.put("clearSelection", action);
-
-        am.put("copy", TransferHandler.getCopyAction());
-        am.put("cut", TransferHandler.getCutAction());
-        am.put("paste", TransferHandler.getPasteAction());
-
-        UIManager.put("List.actionMap", am);
-      }
-
-    SwingUtilities.replaceUIActionMap(list, am);
-  }
-
-  /**
-   * Uninstalls keyboard actions for this UI in the {@link JList}.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    // Uninstall the InputMap.
-    InputMap im = SwingUtilities.getUIInputMap(list, JComponent.WHEN_FOCUSED);
-    if (im instanceof UIResource)
-      SwingUtilities.replaceUIInputMap(list, JComponent.WHEN_FOCUSED, null);
-
-    // Uninstall the ActionMap.
-    if (SwingUtilities.getUIActionMap(list) instanceof UIResource)
-      SwingUtilities.replaceUIActionMap(list, null);
-  }
-
-  /**
-   * Installs the various aspects of the UI in the {@link JList}. In
-   * particular, calls {@link #installDefaults}, {@link #installListeners}
-   * and {@link #installKeyboardActions}. Also saves a reference to the
-   * provided component, cast to a {@link JList}.
-   *
-   * @param c The {@link JList} to install the UI into
-   */
-  public void installUI(final JComponent c)
-  {
-    super.installUI(c);
-    list = (JList) c;
-    installDefaults();
-    installListeners();
-    installKeyboardActions();
-    maybeUpdateLayoutState();
-  }
-
-  /**
-   * Uninstalls all the aspects of the UI which were installed in {@link
-   * #installUI}. When finished uninstalling, drops the saved reference to
-   * the {@link JList}.
-   *
-   * @param c Ignored; the UI is uninstalled from the {@link JList}
-   * reference saved during the call to {@link #installUI}
-   */
-  public void uninstallUI(final JComponent c)
-  {
-    uninstallKeyboardActions();
-    uninstallListeners();
-    uninstallDefaults();
-    list = null;
-  }
-
-  /**
-   * Gets the size this list would prefer to assume. This is calculated by
-   * calling {@link #getCellBounds} over the entire list.
-   *
-   * @param c Ignored; uses the saved {@link JList} reference
-   *
-   * @return DOCUMENT ME!
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    maybeUpdateLayoutState();
-    int size = list.getModel().getSize();
-    int visibleRows = list.getVisibleRowCount();
-    int layoutOrientation = list.getLayoutOrientation();
-
-    int h;
-    int w;
-    int maxCellHeight = cellHeight;
-    if (maxCellHeight <= 0)
-      {
-        for (int i = 0; i < cellHeights.length; i++)
-          maxCellHeight = Math.max(maxCellHeight, cellHeights[i]);
-      }
-    if (layoutOrientation == JList.HORIZONTAL_WRAP)
-      {
-        if (visibleRows > 0)
-          {
-            // We cast to double here to force double divisions.
-            double modelSize = size;
-            int neededColumns = (int) Math.ceil(modelSize / visibleRows);
-            int adjustedRows = (int) Math.ceil(modelSize / neededColumns);
-            h = maxCellHeight * adjustedRows;
-            w = cellWidth * neededColumns;
-          }
-        else
-          {
-            int neededColumns = Math.min(1, list.getWidth() / cellWidth);
-            h = size / neededColumns * maxCellHeight;
-            w = neededColumns * cellWidth;
-          }
-      }
-    else if (layoutOrientation == JList.VERTICAL_WRAP)
-      {
-        if (visibleRows > 0)
-          h = visibleRows * maxCellHeight;
-        else
-          h = Math.max(list.getHeight(), maxCellHeight);
-        int neededColumns = h / maxCellHeight;
-        w = cellWidth * neededColumns;
-      }
-    else
-      {
-        if (list.getFixedCellWidth() > 0)
-          w = list.getFixedCellWidth();
-        else
-          w = cellWidth;
-        if (list.getFixedCellHeight() > 0)
-          // FIXME: We need to add some cellVerticalMargins here, according
-          // to the specs.
-          h = list.getFixedCellHeight() * size;
-        else
-          h = maxCellHeight * size;
-      }
-    Insets insets = list.getInsets();
-    Dimension retVal = new Dimension(w + insets.left + insets.right,
-                                     h + insets.top + insets.bottom);
-    return retVal;
-  }
-
-  /**
-   * Paints a single cell in the list.
-   *
-   * @param g The graphics context to paint in
-   * @param row The row number to paint
-   * @param bounds The bounds of the cell to paint, assuming a coordinate
-   * system beginning at <code>(0,0)</code> in the upper left corner of the
-   * list
-   * @param rend A cell renderer to paint with
-   * @param data The data to provide to the cell renderer
-   * @param sel A selection model to provide to the cell renderer
-   * @param lead The lead selection index of the list
-   */
-  protected void paintCell(Graphics g, int row, Rectangle bounds,
-                 ListCellRenderer rend, ListModel data,
-                 ListSelectionModel sel, int lead)
-  {
-    boolean isSel = list.isSelectedIndex(row);
-    boolean hasFocus = (list.getLeadSelectionIndex() == row) && BasicListUI.this.list.hasFocus();
-    Component comp = rend.getListCellRendererComponent(list,
-                                                       data.getElementAt(row),
-                                                       row, isSel, hasFocus);
-    rendererPane.paintComponent(g, comp, list, bounds);
-  }
-
-  /**
-   * Paints the list by repeatedly calling {@link #paintCell} for each visible
-   * cell in the list.
-   *
-   * @param g The graphics context to paint with
-   * @param c Ignored; uses the saved {@link JList} reference
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    int nrows = list.getModel().getSize();
-    if (nrows == 0)
-      return;
-
-    maybeUpdateLayoutState();
-    ListCellRenderer render = list.getCellRenderer();
-    ListModel model = list.getModel();
-    ListSelectionModel sel = list.getSelectionModel();
-    int lead = sel.getLeadSelectionIndex();
-    Rectangle clip = g.getClipBounds();
-
-    int startIndex = locationToIndex(list, new Point(clip.x, clip.y));
-    int endIndex = locationToIndex(list, new Point(clip.x + clip.width,
-                                             clip.y + clip.height));
-
-    for (int row = startIndex; row <= endIndex; ++row)
-      {
-        Rectangle bounds = getCellBounds(list, row, row);
-        if (bounds != null && bounds.intersects(clip))
-          paintCell(g, row, bounds, render, model, sel, lead);
-      }
-  }
-
-  /**
-   * Computes the index of a list cell given a point within the list. If the
-   * location lies outside the bounds of the list, the greatest index in the
-   * list model is returned.
-   *
-   * @param l the list which on which the computation is based on
-   * @param location the coordinates
-   *
-   * @return the index of the list item that is located at the given
-   *         coordinates or <code>-1</code> if the list model is empty
-   */
-  public int locationToIndex(JList l, Point location)
-  {
-    int layoutOrientation = list.getLayoutOrientation();
-    int index = -1;
-    switch (layoutOrientation)
-      {
-      case JList.VERTICAL:
-        index = convertYToRow(location.y);
-        break;
-      case JList.HORIZONTAL_WRAP:
-        // determine visible rows and cells per row
-        int maxCellHeight = getCellHeight(0);
-        int visibleRows = list.getHeight() / maxCellHeight;
-        int cellsPerRow = -1;
-        int numberOfItems = list.getModel().getSize();
-        cellsPerRow = numberOfItems / visibleRows + 1;
-
-        // determine index for the given location
-        int cellsPerColumn = numberOfItems / cellsPerRow + 1;
-        int gridX = Math.min(location.x / cellWidth, cellsPerRow - 1);
-        int gridY = Math.min(location.y / maxCellHeight, cellsPerColumn);
-        index = gridX + gridY * cellsPerRow;
-        break;
-      case JList.VERTICAL_WRAP:
-        // determine visible rows and cells per column
-        int maxCellHeight2 = getCellHeight(0);
-        int visibleRows2 = list.getHeight() / maxCellHeight2;
-        int numberOfItems2 = list.getModel().getSize();
-        int cellsPerRow2 = numberOfItems2 / visibleRows2 + 1;
-
-        int gridX2 = Math.min(location.x / cellWidth, cellsPerRow2 - 1);
-        int gridY2 = Math.min(location.y / maxCellHeight2, visibleRows2);
-        index = gridY2 + gridX2 * visibleRows2;
-        break;
-      }
-    return index;
-  }
-
-  public Point indexToLocation(JList l, int index)
-  {
-    int layoutOrientation = list.getLayoutOrientation();
-    Point loc = null;
-    switch (layoutOrientation)
-      {
-      case JList.VERTICAL:
-        loc = new Point(0, convertRowToY(index));
-        break;
-      case JList.HORIZONTAL_WRAP:
-        // determine visible rows and cells per row
-        int maxCellHeight = getCellHeight(0);
-        int visibleRows = list.getHeight() / maxCellHeight;
-        int numberOfCellsPerRow = -1;
-        int numberOfItems = list.getModel().getSize();
-        numberOfCellsPerRow = numberOfItems / visibleRows + 1;
-
-        // compute coordinates inside the grid
-        int gridX = index % numberOfCellsPerRow;
-        int gridY = index / numberOfCellsPerRow;
-        int locX = gridX * cellWidth;
-        int locY;
-        locY = gridY * maxCellHeight;
-        loc = new Point(locX, locY);
-        break;
-      case JList.VERTICAL_WRAP:
-        // determine visible rows and cells per column
-        int maxCellHeight2 = getCellHeight(0);
-        int visibleRows2 = list.getHeight() / maxCellHeight2;
-        // compute coordinates inside the grid
-        if (visibleRows2 > 0)
-          {
-            int gridY2 = index % visibleRows2;
-            int gridX2 = index / visibleRows2;
-            int locX2 = gridX2 * cellWidth;
-            int locY2 = gridY2 * maxCellHeight2;
-            loc = new Point(locX2, locY2);
-          }
-        else
-          loc = new Point(0, convertRowToY(index));
-        break;
-      }
-    return loc;
-  }
-
-  /**
-   * Creates and returns the focus listener for this UI.
-   *
-   * @return the focus listener for this UI
-   */
-  protected FocusListener createFocusListener()
-  {
-    return new FocusHandler();
-  }
-
-  /**
-   * Creates and returns the list data listener for this UI.
-   *
-   * @return the list data listener for this UI
-   */
-  protected ListDataListener createListDataListener()
-  {
-    return new ListDataHandler();
-  }
-
-  /**
-   * Creates and returns the list selection listener for this UI.
-   *
-   * @return the list selection listener for this UI
-   */
-  protected ListSelectionListener createListSelectionListener()
-  {
-    return new ListSelectionHandler();
-  }
-
-  /**
-   * Creates and returns the mouse input listener for this UI.
-   *
-   * @return the mouse input listener for this UI
-   */
-  protected MouseInputListener createMouseInputListener()
-  {
-    return new MouseInputHandler();
-  }
-
-  /**
-   * Creates and returns the property change listener for this UI.
-   *
-   * @return the property change listener for this UI
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new PropertyChangeHandler();
-  }
-
-  /**
-   * Selects the next list item and force it to be visible.
-   */
-  protected void selectNextIndex()
-  {
-    int index = list.getSelectionModel().getLeadSelectionIndex();
-    if (index < list.getModel().getSize() - 1)
-      {
-        index++;
-        list.setSelectedIndex(index);
-      }
-    list.ensureIndexIsVisible(index);
-  }
-
-  /**
-   * Selects the previous list item and force it to be visible.
-   */
-  protected void selectPreviousIndex()
-  {
-    int index = list.getSelectionModel().getLeadSelectionIndex();
-    if (index > 0)
-      {
-        index--;
-        list.setSelectedIndex(index);
-      }
-    list.ensureIndexIsVisible(index);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicLookAndFeel.java b/libjava/classpath/javax/swing/plaf/basic/BasicLookAndFeel.java
deleted file mode 100644
index 9a1f544..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicLookAndFeel.java
+++ /dev/null
@@ -1,1734 +0,0 @@
-/* BasicLookAndFeel.java --
-   Copyright (C) 2002, 2004, 2005, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.AWTEvent;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.SystemColor;
-import java.awt.Toolkit;
-import java.awt.event.AWTEventListener;
-import java.awt.event.ActionEvent;
-import java.awt.event.MouseEvent;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Serializable;
-import java.util.Enumeration;
-import java.util.ResourceBundle;
-
-import javax.sound.sampled.AudioInputStream;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.Clip;
-import javax.sound.sampled.LineUnavailableException;
-import javax.sound.sampled.UnsupportedAudioFileException;
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.ActionMap;
-import javax.swing.BorderFactory;
-import javax.swing.JComponent;
-import javax.swing.KeyStroke;
-import javax.swing.LookAndFeel;
-import javax.swing.MenuSelectionManager;
-import javax.swing.UIDefaults;
-import javax.swing.UIManager;
-import javax.swing.border.BevelBorder;
-import javax.swing.border.Border;
-import javax.swing.plaf.BorderUIResource;
-import javax.swing.plaf.ColorUIResource;
-import javax.swing.plaf.DimensionUIResource;
-import javax.swing.plaf.FontUIResource;
-import javax.swing.plaf.IconUIResource;
-import javax.swing.plaf.InsetsUIResource;
-
-/**
- * A basic implementation of Swing's Look and Feel framework. This can serve
- * as a base for custom look and feel implementations.
- *
- * @author Andrew Selkirk
- */
-public abstract class BasicLookAndFeel extends LookAndFeel
-  implements Serializable
-{
-
-  /**
-   * Helps closing menu popups when the user clicks outside of any menu area.
-   * This is implemented as an AWTEventListener that listens on the event
-   * queue directly, grabs all mouse events from there and finds out of they
-   * are targetted at a menu/submenu/menubar or not. If not,
-   * the MenuSelectionManager is messaged to close the currently opened menus,
-   * if any.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  private class PopupHelper implements AWTEventListener
-  {
-
-    /**
-     * Receives an event from the event queue.
-     *
-     * @param event
-     */
-    public void eventDispatched(AWTEvent event)
-    {
-      if (event instanceof MouseEvent)
-        {
-          MouseEvent mouseEvent = (MouseEvent) event;
-          if (mouseEvent.getID() == MouseEvent.MOUSE_PRESSED)
-            mousePressed(mouseEvent);
-        }
-    }
-
-    /**
-     * Handles mouse pressed events from the event queue.
-     *
-     * @param ev the mouse pressed event
-     */
-    private void mousePressed(MouseEvent ev)
-    {
-      // Autoclose all menus managed by the MenuSelectionManager.
-      MenuSelectionManager m = MenuSelectionManager.defaultManager();
-      Component target = ev.getComponent();
-      if (target instanceof Container)
-        target = ((Container) target).findComponentAt(ev.getPoint());
-      if (m.getSelectedPath().length > 0
-          && ! m.isComponentPartOfCurrentMenu(target)
-          && (((JComponent)target).getClientProperty(DONT_CANCEL_POPUP) == null
-          || !((JComponent)target).getClientProperty(DONT_CANCEL_POPUP).equals(Boolean.TRUE)))
-        {
-          m.clearSelectedPath();
-        }
-    }
-
-  }
-
-  /**
-   * An action that can play an audio file.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  private class AudioAction extends AbstractAction
-  {
-    /**
-     * The UIDefaults key that specifies the sound.
-     */
-    Object key;
-
-    /**
-     * Creates a new AudioAction.
-     *
-     * @param key the key that describes the audio action, normally a filename
-     *        of an audio file relative to the current package
-     */
-    AudioAction(Object key)
-    {
-      this.key = key;
-    }
-
-    /**
-     * Plays the sound represented by this action.
-     *
-     * @param event the action event that triggers this audio action
-     */
-    public void actionPerformed(ActionEvent event)
-    {
-      // We only can handle strings for now.
-      if (key instanceof String)
-        {
-          String name = UIManager.getString(key);
-          InputStream stream = getClass().getResourceAsStream(name);
-          try
-            {
-              Clip clip = AudioSystem.getClip();
-              AudioInputStream audioStream =
-                AudioSystem.getAudioInputStream(stream);
-              clip.open(audioStream);
-            }
-          catch (LineUnavailableException ex)
-            {
-              // Nothing we can do about it.
-            }
-          catch (IOException ex)
-            {
-              // Nothing we can do about it.
-            }
-          catch (UnsupportedAudioFileException e)
-            {
-              // Nothing we can do about it.
-            }
-        }
-    }
-  }
-
-  static final long serialVersionUID = -6096995660290287879L;
-
-  /**
-   * This is a key for a client property that tells the PopupHelper that
-   * it shouldn't close popups when the mouse event target has this
-   * property set. This is used when the component handles popup closing
-   * itself.
-   */
-  static final String DONT_CANCEL_POPUP = "noCancelPopup";
-
-  /**
-   * Helps closing menu popups when user clicks outside of the menu area.
-   */
-  private transient PopupHelper popupHelper;
-
-  /**
-   * Maps the audio actions for this l&f.
-   */
-  private ActionMap audioActionMap;
-
-  /**
-   * Creates a new instance of the Basic look and feel.
-   */
-  public BasicLookAndFeel()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Creates and returns a new instance of the default resources for this look
-   * and feel.
-   *
-   * @return The UI defaults.
-   */
-  public UIDefaults getDefaults()
-  {
-    // Variables
-    UIDefaults def = new UIDefaults();
-    // Initialize Class Defaults
-    initClassDefaults(def);
-    // Initialize System Colour Defaults
-    initSystemColorDefaults(def);
-    // Initialize Component Defaults
-    initComponentDefaults(def);
-    // Return UI Defaults
-    return def;
-  }
-
-  /**
-   * Populates the <code>defaults</code> table with mappings between class IDs
-   * and fully qualified class names for the UI delegates.
-   *
-   * @param defaults  the defaults table (<code>null</code> not permitted).
-   */
-  protected void initClassDefaults(UIDefaults defaults)
-  {
-    // Variables
-    Object[] uiDefaults;
-    // Initialize Class Defaults
-    uiDefaults = new Object[] {
-      "ButtonUI", "javax.swing.plaf.basic.BasicButtonUI",
-      "CheckBoxMenuItemUI", "javax.swing.plaf.basic.BasicCheckBoxMenuItemUI",
-      "CheckBoxUI", "javax.swing.plaf.basic.BasicCheckBoxUI",
-      "ColorChooserUI", "javax.swing.plaf.basic.BasicColorChooserUI",
-      "ComboBoxUI", "javax.swing.plaf.basic.BasicComboBoxUI",
-      "DesktopIconUI", "javax.swing.plaf.basic.BasicDesktopIconUI",
-      "DesktopPaneUI", "javax.swing.plaf.basic.BasicDesktopPaneUI",
-      "EditorPaneUI", "javax.swing.plaf.basic.BasicEditorPaneUI",
-      "FileChooserUI", "javax.swing.plaf.basic.BasicFileChooserUI",
-      "FormattedTextFieldUI", "javax.swing.plaf.basic.BasicFormattedTextFieldUI",
-      "InternalFrameUI", "javax.swing.plaf.basic.BasicInternalFrameUI",
-      "LabelUI", "javax.swing.plaf.basic.BasicLabelUI",
-      "ListUI", "javax.swing.plaf.basic.BasicListUI",
-      "MenuBarUI", "javax.swing.plaf.basic.BasicMenuBarUI",
-      "MenuItemUI", "javax.swing.plaf.basic.BasicMenuItemUI",
-      "MenuUI", "javax.swing.plaf.basic.BasicMenuUI",
-      "OptionPaneUI", "javax.swing.plaf.basic.BasicOptionPaneUI",
-      "PanelUI", "javax.swing.plaf.basic.BasicPanelUI",
-      "PasswordFieldUI", "javax.swing.plaf.basic.BasicPasswordFieldUI",
-      "PopupMenuSeparatorUI", "javax.swing.plaf.basic.BasicPopupMenuSeparatorUI",
-      "PopupMenuUI", "javax.swing.plaf.basic.BasicPopupMenuUI",
-      "ProgressBarUI", "javax.swing.plaf.basic.BasicProgressBarUI",
-      "RadioButtonMenuItemUI", "javax.swing.plaf.basic.BasicRadioButtonMenuItemUI",
-      "RadioButtonUI", "javax.swing.plaf.basic.BasicRadioButtonUI",
-      "RootPaneUI", "javax.swing.plaf.basic.BasicRootPaneUI",
-      "ScrollBarUI", "javax.swing.plaf.basic.BasicScrollBarUI",
-      "ScrollPaneUI", "javax.swing.plaf.basic.BasicScrollPaneUI",
-      "SeparatorUI", "javax.swing.plaf.basic.BasicSeparatorUI",
-      "SliderUI", "javax.swing.plaf.basic.BasicSliderUI",
-      "SplitPaneUI", "javax.swing.plaf.basic.BasicSplitPaneUI",
-      "SpinnerUI", "javax.swing.plaf.basic.BasicSpinnerUI",
-      "StandardDialogUI", "javax.swing.plaf.basic.BasicStandardDialogUI",
-      "TabbedPaneUI", "javax.swing.plaf.basic.BasicTabbedPaneUI",
-      "TableHeaderUI", "javax.swing.plaf.basic.BasicTableHeaderUI",
-      "TableUI", "javax.swing.plaf.basic.BasicTableUI",
-      "TextPaneUI", "javax.swing.plaf.basic.BasicTextPaneUI",
-      "TextAreaUI", "javax.swing.plaf.basic.BasicTextAreaUI",
-      "TextFieldUI", "javax.swing.plaf.basic.BasicTextFieldUI",
-      "ToggleButtonUI", "javax.swing.plaf.basic.BasicToggleButtonUI",
-      "ToolBarSeparatorUI", "javax.swing.plaf.basic.BasicToolBarSeparatorUI",
-      "ToolBarUI", "javax.swing.plaf.basic.BasicToolBarUI",
-      "ToolTipUI", "javax.swing.plaf.basic.BasicToolTipUI",
-      "TreeUI", "javax.swing.plaf.basic.BasicTreeUI",
-      "ViewportUI", "javax.swing.plaf.basic.BasicViewportUI"
-    };
-    // Add Class Defaults to UI Defaults table
-    defaults.putDefaults(uiDefaults);
-  }
-
-  /**
-   * Populates the <code>defaults</code> table with system color defaults.
-   *
-   * This sets up a couple of default values and passes them to
-   * {@link #loadSystemColors(UIDefaults, String[], boolean)}. If the
-   * look and feel is a native look and feel, these defaults may be overridden
-   * by the corresponding SystemColor constants.
-   *
-   * @param defaults  the defaults table (<code>null</code> not permitted).
-   */
-  protected void initSystemColorDefaults(UIDefaults defaults)
-  {
-    String[] defaultColors = new String[] {
-      "activeCaption", "#000080",
-      "activeCaptionBorder", "#C0C0C0",
-      "activeCaptionText", "#FFFFFF",
-      "control", "#C0C0C0",
-      "controlDkShadow", "#000000",
-      "controlHighlight", "#C0C0C0",
-      "controlLtHighlight", "#FFFFFF",
-      "controlShadow", "#808080",
-      "controlText", "#000000",
-      "desktop", "#005C5C",
-      "inactiveCaption", "#808080",
-      "inactiveCaptionBorder", "#C0C0C0",
-      "inactiveCaptionText", "#C0C0C0",
-      "info", "#FFFFE1",
-      "infoText", "#000000",
-      "menu", "#C0C0C0",
-      "menuText", "#000000",
-      "scrollbar", "#E0E0E0",
-      "text", "#C0C0C0",
-      "textHighlight", "#000080",
-      "textHighlightText", "#FFFFFF",
-      "textInactiveText", "#808080",
-      "textText", "#000000",
-      "window", "#FFFFFF",
-      "windowBorder", "#000000",
-      "windowText", "#000000"
-    };
-    loadSystemColors(defaults, defaultColors, isNativeLookAndFeel());
-  }
-
-  /**
-   * Populates the <code>defaults</code> table with the system colors. If
-   * <code>useNative</code> is <code>true</code>, the table is populated
-   * with the constants in {@link SystemColor}, otherwise the
-   * <code>systemColors</code> parameter is decoded into the defaults table.
-   * The system colors array is made up of pairs, where the first entry is the
-   * name of the system color, and the second entry is a string denoting
-   * an RGB color value like &quot;#C0C0C0&quot;, which is decoded using
-   * {@link Color#decode(String)}.
-   *
-   * @param defaults  the defaults table (<code>null</code> not permitted).
-   * @param systemColors defaults to use when <code>useNative</code> is
-   *        <code>false</code>
-   * @param useNative when <code>true</code>, installs the values of the
-   *        SystemColor constants, when <code>false</code>, install the values
-   *        from <code>systemColors</code>
-   */
-  protected void loadSystemColors(UIDefaults defaults, String[] systemColors,
-                                  boolean useNative)
-  {
-    if (useNative)
-      {
-        defaults.put("activeCaption",
-                     new ColorUIResource(SystemColor.ACTIVE_CAPTION));
-        defaults.put("activeCaptionBorder",
-                     new ColorUIResource(SystemColor.ACTIVE_CAPTION_BORDER));
-        defaults.put("activeCaptionText",
-                     new ColorUIResource(SystemColor.ACTIVE_CAPTION_TEXT));
-        defaults.put("control",
-                     new ColorUIResource(SystemColor.CONTROL));
-        defaults.put("controlDkShadow",
-                     new ColorUIResource(SystemColor.CONTROL_DK_SHADOW));
-        defaults.put("controlHighlight",
-                     new ColorUIResource(SystemColor.CONTROL_HIGHLIGHT));
-        defaults.put("controlLtHighlight",
-                     new ColorUIResource(SystemColor.CONTROL_LT_HIGHLIGHT));
-        defaults.put("controlShadow",
-                     new ColorUIResource(SystemColor.CONTROL_SHADOW));
-        defaults.put("controlText",
-                     new ColorUIResource(SystemColor.CONTROL_TEXT));
-        defaults.put("desktop",
-                     new ColorUIResource(SystemColor.DESKTOP));
-        defaults.put("inactiveCaption",
-                     new ColorUIResource(SystemColor.INACTIVE_CAPTION));
-        defaults.put("inactiveCaptionBorder",
-                     new ColorUIResource(SystemColor.INACTIVE_CAPTION_BORDER));
-        defaults.put("inactiveCaptionText",
-                     new ColorUIResource(SystemColor.INACTIVE_CAPTION_TEXT));
-        defaults.put("info",
-                     new ColorUIResource(SystemColor.INFO));
-        defaults.put("infoText",
-                     new ColorUIResource(SystemColor.INFO_TEXT));
-        defaults.put("menu",
-                     new ColorUIResource(SystemColor.MENU));
-        defaults.put("menuText",
-                     new ColorUIResource(SystemColor.MENU_TEXT));
-        defaults.put("scrollbar",
-                     new ColorUIResource(SystemColor.SCROLLBAR));
-        defaults.put("text",
-                     new ColorUIResource(SystemColor.TEXT));
-        defaults.put("textHighlight",
-                     new ColorUIResource(SystemColor.TEXT_HIGHLIGHT));
-        defaults.put("textHighlightText",
-                     new ColorUIResource(SystemColor.TEXT_HIGHLIGHT_TEXT));
-        defaults.put("textInactiveText",
-                     new ColorUIResource(SystemColor.TEXT_INACTIVE_TEXT));
-        defaults.put("textText",
-                     new ColorUIResource(SystemColor.TEXT_TEXT));
-        defaults.put("window",
-                     new ColorUIResource(SystemColor.WINDOW));
-        defaults.put("windowBorder",
-                     new ColorUIResource(SystemColor.WINDOW_BORDER));
-        defaults.put("windowText",
-                     new ColorUIResource(SystemColor.WINDOW_TEXT));
-      }
-    else
-      {
-        for (int i = 0; i < systemColors.length; i += 2)
-          {
-            Color color = Color.BLACK;
-            try
-              {
-                color = Color.decode(systemColors[i + 1]);
-              }
-            catch (NumberFormatException e)
-              {
-                e.printStackTrace();
-              }
-            defaults.put(systemColors[i], new ColorUIResource(color));
-          }
-      }
-  }
-
-  /**
-   * Loads the resource bundle in 'resources/basic' and adds the contained
-   * key/value pairs to the <code>defaults</code> table.
-   *
-   * @param defaults the UI defaults to load the resources into
-   */
-  // FIXME: This method is not used atm and private and thus could be removed.
-  // However, I consider this method useful for providing localized
-  // descriptions and similar stuff and therefore think that we should use it
-  // instead and provide the resource bundles.
-  private void loadResourceBundle(UIDefaults defaults)
-  {
-    ResourceBundle bundle;
-    Enumeration e;
-    String key;
-    String value;
-    bundle = ResourceBundle.getBundle("resources/basic");
-    // Process Resources
-    e = bundle.getKeys();
-    while (e.hasMoreElements())
-      {
-        key = (String) e.nextElement();
-        value = bundle.getString(key);
-        defaults.put(key, value);
-      }
-  }
-
-  /**
-   * Populates the <code>defaults</code> table with UI default values for
-   * colors, fonts, keybindings and much more.
-   *
-   * @param defaults  the defaults table (<code>null</code> not permitted).
-   */
-  protected void initComponentDefaults(UIDefaults defaults)
-  {
-    Object[] uiDefaults;
-
-    Color highLight = new Color(249, 247, 246);
-    Color light = new Color(239, 235, 231);
-    Color shadow = new Color(139, 136, 134);
-    Color darkShadow = new Color(16, 16, 16);
-
-    uiDefaults = new Object[] {
-
-      "AbstractUndoableEdit.undoText", "Undo",
-      "AbstractUndoableEdit.redoText", "Redo",
-      "Button.background", new ColorUIResource(Color.LIGHT_GRAY),
-      "Button.border",
-      new UIDefaults.LazyValue()
-      {
-        public Object createValue(UIDefaults table)
-        {
-          return BasicBorders.getButtonBorder();
-        }
-      },
-      "Button.darkShadow", new ColorUIResource(Color.BLACK),
-      "Button.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "Button.foreground", new ColorUIResource(Color.BLACK),
-      "Button.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-          KeyStroke.getKeyStroke("SPACE"), "pressed",
-          KeyStroke.getKeyStroke("released SPACE"), "released"
-      }),
-      "Button.highlight", new ColorUIResource(Color.WHITE),
-      "Button.light", new ColorUIResource(Color.LIGHT_GRAY),
-      "Button.margin", new InsetsUIResource(2, 14, 2, 14),
-      "Button.shadow", new ColorUIResource(Color.GRAY),
-      "Button.textIconGap", new Integer(4),
-      "Button.textShiftOffset", new Integer(0),
-      "CheckBox.background", new ColorUIResource(new Color(204, 204, 204)),
-      "CheckBox.border", new BorderUIResource.CompoundBorderUIResource(null,
-                                                                       null),
-      "CheckBox.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-          KeyStroke.getKeyStroke("SPACE"), "pressed",
-          KeyStroke.getKeyStroke("released SPACE"), "released"
-      }),
-      "CheckBox.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "CheckBox.foreground", new ColorUIResource(darkShadow),
-      "CheckBox.icon",
-      new UIDefaults.LazyValue()
-      {
-        public Object createValue(UIDefaults def)
-        {
-          return BasicIconFactory.getCheckBoxIcon();
-        }
-      },
-      "CheckBox.checkIcon",
-      new UIDefaults.LazyValue()
-      {
-        public Object createValue(UIDefaults def)
-        {
-          return BasicIconFactory.getMenuItemCheckIcon();
-        }
-      },
-      "CheckBox.margin", new InsetsUIResource(2, 2, 2, 2),
-      "CheckBox.textIconGap", new Integer(4),
-      "CheckBox.textShiftOffset", new Integer(0),
-      "CheckBoxMenuItem.acceleratorFont", new FontUIResource("Dialog",
-                                                             Font.PLAIN, 12),
-      "CheckBoxMenuItem.acceleratorForeground",
-      new ColorUIResource(new Color(16, 16, 16)),
-      "CheckBoxMenuItem.acceleratorSelectionForeground",
-      new ColorUIResource(Color.white),
-      "CheckBoxMenuItem.arrowIcon", BasicIconFactory.getMenuItemArrowIcon(),
-      "CheckBoxMenuItem.background", new ColorUIResource(light),
-      "CheckBoxMenuItem.border", new BasicBorders.MarginBorder(),
-      "CheckBoxMenuItem.borderPainted", Boolean.FALSE,
-      "CheckBoxMenuItem.checkIcon",
-      new UIDefaults.LazyValue()
-      {
-        public Object createValue(UIDefaults def)
-        {
-          return BasicIconFactory.getCheckBoxMenuItemIcon();
-        }
-      },
-      "CheckBoxMenuItem.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "CheckBoxMenuItem.foreground", new ColorUIResource(darkShadow),
-      "CheckBoxMenuItem.margin", new InsetsUIResource(2, 2, 2, 2),
-      "CheckBoxMenuItem.selectionBackground", new ColorUIResource(Color.black),
-      "CheckBoxMenuItem.selectionForeground", new ColorUIResource(Color.white),
-      "ColorChooser.background", new ColorUIResource(light),
-      "ColorChooser.cancelText", "Cancel",
-      "ColorChooser.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "ColorChooser.foreground", new ColorUIResource(darkShadow),
-      "ColorChooser.hsbBlueText", "B",
-      "ColorChooser.hsbBrightnessText", "B",
-      "ColorChooser.hsbGreenText", "G",
-      "ColorChooser.hsbHueText", "H",
-      "ColorChooser.hsbNameText", "HSB",
-      "ColorChooser.hsbRedText", "R",
-      "ColorChooser.hsbSaturationText", "S",
-      "ColorChooser.okText", "OK",
-      "ColorChooser.previewText", "Preview",
-      "ColorChooser.resetText", "Reset",
-      "ColorChooser.rgbBlueMnemonic", "66",
-      "ColorChooser.rgbBlueText", "Blue",
-      "ColorChooser.rgbGreenMnemonic", "78",
-      "ColorChooser.rgbGreenText", "Green",
-      "ColorChooser.rgbNameText", "RGB",
-      "ColorChooser.rgbRedMnemonic", "68",
-      "ColorChooser.rgbRedText", "Red",
-      "ColorChooser.sampleText", "Sample Text  Sample Text",
-      "ColorChooser.swatchesDefaultRecentColor", new ColorUIResource(light),
-      "ColorChooser.swatchesNameText", "Swatches",
-      "ColorChooser.swatchesRecentSwatchSize", new Dimension(10, 10),
-      "ColorChooser.swatchesRecentText", "Recent:",
-      "ColorChooser.swatchesSwatchSize", new Dimension(10, 10),
-      "ComboBox.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
-        "ESCAPE", "hidePopup",
-        "PAGE_UP", "pageUpPassThrough",
-        "PAGE_DOWN", "pageDownPassThrough",
-        "HOME",  "homePassThrough",
-        "END",  "endPassThrough"
-      }),
-      "ComboBox.background", new ColorUIResource(Color.white),
-      "ComboBox.buttonBackground", new ColorUIResource(light),
-      "ComboBox.buttonDarkShadow", new ColorUIResource(darkShadow),
-      "ComboBox.buttonHighlight", new ColorUIResource(highLight),
-      "ComboBox.buttonShadow", new ColorUIResource(shadow),
-      "ComboBox.disabledBackground", new ColorUIResource(light),
-      "ComboBox.disabledForeground", new ColorUIResource(Color.gray),
-      "ComboBox.font", new FontUIResource("SansSerif", Font.PLAIN, 12),
-      "ComboBox.foreground", new ColorUIResource(Color.black),
-      "ComboBox.selectionBackground", new ColorUIResource(0, 0, 128),
-      "ComboBox.selectionForeground", new ColorUIResource(Color.white),
-      "Desktop.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
-        "KP_LEFT", "left",
-        "KP_RIGHT", "right",
-        "ctrl F5", "restore",
-        "LEFT",  "left",
-        "ctrl alt F6", "selectNextFrame",
-        "UP",  "up",
-        "ctrl F6", "selectNextFrame",
-        "RIGHT", "right",
-        "DOWN",  "down",
-        "ctrl F7", "move",
-        "ctrl F8", "resize",
-        "ESCAPE", "escape",
-        "ctrl TAB", "selectNextFrame",
-        "ctrl F9", "minimize",
-        "KP_UP", "up",
-        "ctrl F4", "close",
-        "KP_DOWN", "down",
-        "ctrl F10", "maximize",
-        "ctrl alt shift F6", "selectPreviousFrame"
-      }),
-      "DesktopIcon.border", new BorderUIResource.CompoundBorderUIResource(null,
-                                                                          null),
-      "EditorPane.background", new ColorUIResource(Color.white),
-      "EditorPane.border", BasicBorders.getMarginBorder(),
-      "EditorPane.caretBlinkRate", new Integer(500),
-      "EditorPane.caretForeground", new ColorUIResource(Color.black),
-      "EditorPane.font", new FontUIResource("Serif", Font.PLAIN, 12),
-      "EditorPane.foreground", new ColorUIResource(Color.black),
-      "EditorPane.inactiveForeground", new ColorUIResource(Color.gray),
-      "EditorPane.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-                KeyStroke.getKeyStroke("shift UP"), "selection-up",
-                KeyStroke.getKeyStroke("ctrl RIGHT"), "caret-next-word",
-                KeyStroke.getKeyStroke("shift ctrl LEFT"), "selection-previous-word",
-                KeyStroke.getKeyStroke("shift KP_UP"), "selection-up",
-                KeyStroke.getKeyStroke("DOWN"), "caret-down",
-                KeyStroke.getKeyStroke("shift ctrl T"), "previous-link-action",
-                KeyStroke.getKeyStroke("ctrl LEFT"), "caret-previous-word",
-                KeyStroke.getKeyStroke("CUT"), "cut-to-clipboard",
-                KeyStroke.getKeyStroke("END"), "caret-end-line",
-                KeyStroke.getKeyStroke("shift PAGE_UP"), "selection-page-up",
-                KeyStroke.getKeyStroke("KP_UP"), "caret-up",
-                KeyStroke.getKeyStroke("DELETE"), "delete-next",
-                KeyStroke.getKeyStroke("ctrl HOME"), "caret-begin",
-                KeyStroke.getKeyStroke("shift LEFT"), "selection-backward",
-                KeyStroke.getKeyStroke("ctrl END"), "caret-end",
-                KeyStroke.getKeyStroke("BACK_SPACE"), "delete-previous",
-                KeyStroke.getKeyStroke("shift ctrl RIGHT"), "selection-next-word",
-                KeyStroke.getKeyStroke("LEFT"), "caret-backward",
-                KeyStroke.getKeyStroke("KP_LEFT"), "caret-backward",
-                KeyStroke.getKeyStroke("shift KP_RIGHT"), "selection-forward",
-                KeyStroke.getKeyStroke("ctrl SPACE"), "activate-link-action",
-                KeyStroke.getKeyStroke("ctrl H"), "delete-previous",
-                KeyStroke.getKeyStroke("ctrl BACK_SLASH"), "unselect",
-                KeyStroke.getKeyStroke("ENTER"), "insert-break",
-                KeyStroke.getKeyStroke("shift HOME"), "selection-begin-line",
-                KeyStroke.getKeyStroke("RIGHT"), "caret-forward",
-                KeyStroke.getKeyStroke("shift ctrl PAGE_UP"), "selection-page-left",
-                KeyStroke.getKeyStroke("shift DOWN"), "selection-down",
-                KeyStroke.getKeyStroke("PAGE_DOWN"), "page-down",
-                KeyStroke.getKeyStroke("shift KP_LEFT"), "selection-backward",
-                KeyStroke.getKeyStroke("shift ctrl O"), "toggle-componentOrientation",
-                KeyStroke.getKeyStroke("ctrl X"), "cut-to-clipboard",
-                KeyStroke.getKeyStroke("shift ctrl PAGE_DOWN"), "selection-page-right",
-                KeyStroke.getKeyStroke("ctrl C"), "copy-to-clipboard",
-                KeyStroke.getKeyStroke("ctrl KP_RIGHT"), "caret-next-word",
-                KeyStroke.getKeyStroke("shift END"), "selection-end-line",
-                KeyStroke.getKeyStroke("ctrl KP_LEFT"), "caret-previous-word",
-                KeyStroke.getKeyStroke("HOME"), "caret-begin-line",
-                KeyStroke.getKeyStroke("ctrl V"), "paste-from-clipboard",
-                KeyStroke.getKeyStroke("KP_DOWN"), "caret-down",
-                KeyStroke.getKeyStroke("ctrl A"), "select-all",
-                KeyStroke.getKeyStroke("shift RIGHT"), "selection-forward",
-                KeyStroke.getKeyStroke("shift ctrl END"), "selection-end",
-                KeyStroke.getKeyStroke("COPY"), "copy-to-clipboard",
-                KeyStroke.getKeyStroke("shift ctrl KP_LEFT"), "selection-previous-word",
-                KeyStroke.getKeyStroke("ctrl T"), "next-link-action",
-                KeyStroke.getKeyStroke("shift KP_DOWN"), "selection-down",
-                KeyStroke.getKeyStroke("TAB"), "insert-tab",
-                KeyStroke.getKeyStroke("UP"), "caret-up",
-                KeyStroke.getKeyStroke("shift ctrl HOME"), "selection-begin",
-                KeyStroke.getKeyStroke("shift PAGE_DOWN"), "selection-page-down",
-                KeyStroke.getKeyStroke("KP_RIGHT"), "caret-forward",
-                KeyStroke.getKeyStroke("shift ctrl KP_RIGHT"), "selection-next-word",
-                KeyStroke.getKeyStroke("PAGE_UP"), "page-up",
-                KeyStroke.getKeyStroke("PASTE"), "paste-from-clipboard"
-          }),
-      "EditorPane.margin", new InsetsUIResource(3, 3, 3, 3),
-      "EditorPane.selectionBackground", new ColorUIResource(Color.black),
-      "EditorPane.selectionForeground", new ColorUIResource(Color.white),
-      "FileChooser.acceptAllFileFilterText", "All Files (*.*)",
-      "FileChooser.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
-        "ESCAPE", "cancelSelection"
-      }),
-      "FileChooser.cancelButtonMnemonic", "67",
-      "FileChooser.cancelButtonText", "Cancel",
-      "FileChooser.cancelButtonToolTipText", "Abort file chooser dialog",
-      "FileChooser.directoryDescriptionText", "Directory",
-      "FileChooser.fileDescriptionText", "Generic File",
-      "FileChooser.directoryOpenButtonMnemonic", "79",
-      "FileChooser.helpButtonMnemonic", "72",
-      "FileChooser.helpButtonText", "Help",
-      "FileChooser.helpButtonToolTipText", "FileChooser help",
-      "FileChooser.newFolderErrorSeparator", ":",
-      "FileChooser.newFolderErrorText", "Error creating new folder",
-      "FileChooser.openButtonMnemonic", "79",
-      "FileChooser.openButtonText", "Open",
-      "FileChooser.openButtonToolTipText", "Open selected file",
-      "FileChooser.saveButtonMnemonic", "83",
-      "FileChooser.saveButtonText", "Save",
-      "FileChooser.saveButtonToolTipText", "Save selected file",
-      "FileChooser.updateButtonMnemonic", "85",
-      "FileChooser.updateButtonText", "Update",
-      "FileChooser.updateButtonToolTipText", "Update directory listing",
-      "FocusManagerClassName", "TODO",
-      "FormattedTextField.background", new ColorUIResource(light),
-      "FormattedTextField.caretForeground", new ColorUIResource(Color.black),
-      "FormattedTextField.margin", new InsetsUIResource(0, 0, 0, 0),
-      "FormattedTextField.caretBlinkRate", new Integer(500),
-      "FormattedTextField.font",
-      new FontUIResource("SansSerif", Font.PLAIN, 12),
-      "FormattedTextField.foreground", new ColorUIResource(Color.black),
-      "FormattedTextField.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-        KeyStroke.getKeyStroke("KP_UP"), "increment",
-        KeyStroke.getKeyStroke("END"), "caret-end-line",
-        KeyStroke.getKeyStroke("shift ctrl  O"), "toggle-componentOrientation",
-        KeyStroke.getKeyStroke("shift KP_LEFT"), "selection-backward",
-        KeyStroke.getKeyStroke("shift RIGHT"), "selection-forward",
-        KeyStroke.getKeyStroke("KP_DOWN"), "decrement",
-        KeyStroke.getKeyStroke("HOME"), "caret-begin-line",
-        KeyStroke.getKeyStroke("ctrl V"), "paste-from-clipboard",
-        KeyStroke.getKeyStroke("ctrl H"), "delete-previous",
-        KeyStroke.getKeyStroke("KP_LEFT"), "caret-backward",
-        KeyStroke.getKeyStroke("LEFT"), "caret-backward",
-        KeyStroke.getKeyStroke("ctrl X"), "cut-to-clipboard",
-        KeyStroke.getKeyStroke("KP_RIGHT"), "caret-forward",
-        KeyStroke.getKeyStroke("UP"), "increment",
-        KeyStroke.getKeyStroke("shift ctrl KP_RIGHT"), "selection-next-word",
-        KeyStroke.getKeyStroke("COPY"), "copy-to-clipboard",
-        KeyStroke.getKeyStroke("shift HOME"), "selection-begin-line",
-        KeyStroke.getKeyStroke("ESCAPE"), "reset-field-edit",
-        KeyStroke.getKeyStroke("RIGHT"), "caret-forward",
-        KeyStroke.getKeyStroke("shift ctrl LEFT"), "selection-previous-word",
-        KeyStroke.getKeyStroke("ctrl KP_LEFT"), "caret-previous-word",
-        KeyStroke.getKeyStroke("DOWN"), "decrement",
-        KeyStroke.getKeyStroke("ctrl KP_RIGHT"), "caret-next-word",
-        KeyStroke.getKeyStroke("PASTE"), "paste-from-clipboard",
-        KeyStroke.getKeyStroke("shift ctrl RIGHT"), "selection-next-word",
-        KeyStroke.getKeyStroke("ctrl BACK_SLASH"), "unselect",
-        KeyStroke.getKeyStroke("ctrl A"), "select-all",
-        KeyStroke.getKeyStroke("shift KP_RIGHT"), "selection-forward",
-        KeyStroke.getKeyStroke("CUT"), "cut-to-clipboard",
-        KeyStroke.getKeyStroke("ctrl LEFT"), "caret-previous-word",
-        KeyStroke.getKeyStroke("BACK_SPACE"), "delete-previous",
-        KeyStroke.getKeyStroke("shift ctrl KP_LEFT"), "selection-previous-word",
-        KeyStroke.getKeyStroke("ctrl C"), "copy-to-clipboard",
-        KeyStroke.getKeyStroke("shift END"), "selection-end-line",
-        KeyStroke.getKeyStroke("ctrl RIGHT"), "caret-next-word",
-        KeyStroke.getKeyStroke("DELETE"), "delete-next",
-        KeyStroke.getKeyStroke("ENTER"), "notify-field-accept",
-        KeyStroke.getKeyStroke("shift LEFT"), "selection-backward"
-      }),
-      "FormattedTextField.inactiveBackground", new ColorUIResource(light),
-      "FormattedTextField.inactiveForeground", new ColorUIResource(Color.gray),
-      "FormattedTextField.selectionBackground",
-      new ColorUIResource(Color.black),
-      "FormattedTextField.selectionForeground",
-      new ColorUIResource(Color.white),
-      "FormView.resetButtonText", "Reset",
-      "FormView.submitButtonText", "Submit Query",
-      "InternalFrame.activeTitleBackground", new ColorUIResource(0, 0, 128),
-      "InternalFrame.activeTitleForeground", new ColorUIResource(Color.white),
-      "InternalFrame.border",
-      new UIDefaults.LazyValue()
-      {
-        public Object createValue(UIDefaults table)
-        {
-          Color lineColor = new Color(238, 238, 238);
-          Border inner = BorderFactory.createLineBorder(lineColor, 1);
-          Color shadowInner = new Color(184, 207, 229);
-          Color shadowOuter = new Color(122, 138, 153);
-          Border outer = BorderFactory.createBevelBorder(BevelBorder.RAISED,
-                                                         Color.WHITE,
-                                                         Color.WHITE,
-                                                         shadowOuter,
-                                                         shadowInner);
-          Border border = new BorderUIResource.CompoundBorderUIResource(outer,
-                                                                        inner);
-          return border;
-        }
-      },
-      "InternalFrame.borderColor", new ColorUIResource(light),
-      "InternalFrame.borderDarkShadow", new ColorUIResource(Color.BLACK),
-      "InternalFrame.borderHighlight", new ColorUIResource(Color.WHITE),
-      "InternalFrame.borderLight", new ColorUIResource(Color.LIGHT_GRAY),
-      "InternalFrame.borderShadow", new ColorUIResource(Color.GRAY),
-      "InternalFrame.closeIcon", BasicIconFactory.createEmptyFrameIcon(),
-      "InternalFrame.icon",
-      new UIDefaults.LazyValue()
-      {
-        public Object createValue(UIDefaults def)
-        {
-          return new IconUIResource(BasicIconFactory.createEmptyFrameIcon());
-        }
-      },
-      "InternalFrame.iconifyIcon", BasicIconFactory.createEmptyFrameIcon(),
-      "InternalFrame.inactiveTitleBackground", new ColorUIResource(Color.gray),
-      "InternalFrame.inactiveTitleForeground",
-      new ColorUIResource(Color.lightGray),
-      "InternalFrame.maximizeIcon", BasicIconFactory.createEmptyFrameIcon(),
-      "InternalFrame.minimizeIcon", BasicIconFactory.createEmptyFrameIcon(),
-      "InternalFrame.titleFont", new FontUIResource("Dialog", Font.BOLD, 12),
-      "InternalFrame.windowBindings", new Object[] {
-        "shift ESCAPE", "showSystemMenu",
-        "ctrl SPACE",  "showSystemMenu",
-        "ESCAPE",  "showSystemMenu"
-      },
-      "Label.background", new ColorUIResource(light),
-      "Label.disabledForeground", new ColorUIResource(Color.white),
-      "Label.disabledShadow", new ColorUIResource(shadow),
-      "Label.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "Label.foreground", new ColorUIResource(darkShadow),
-      "List.background", new ColorUIResource(Color.white),
-      "List.border", new BasicBorders.MarginBorder(),
-      "List.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-            KeyStroke.getKeyStroke("ctrl DOWN"), "selectNextRowChangeLead",
-            KeyStroke.getKeyStroke("shift UP"), "selectPreviousRowExtendSelection",
-            KeyStroke.getKeyStroke("ctrl RIGHT"), "selectNextColumnChangeLead",
-            KeyStroke.getKeyStroke("shift ctrl LEFT"), "selectPreviousColumnExtendSelection",
-            KeyStroke.getKeyStroke("shift KP_UP"), "selectPreviousRowExtendSelection",
-            KeyStroke.getKeyStroke("DOWN"), "selectNextRow",
-            KeyStroke.getKeyStroke("ctrl UP"), "selectPreviousRowChangeLead",
-            KeyStroke.getKeyStroke("ctrl LEFT"), "selectPreviousColumnChangeLead",
-            KeyStroke.getKeyStroke("CUT"), "cut",
-            KeyStroke.getKeyStroke("END"), "selectLastRow",
-            KeyStroke.getKeyStroke("shift PAGE_UP"), "scrollUpExtendSelection",
-            KeyStroke.getKeyStroke("KP_UP"), "selectPreviousRow",
-            KeyStroke.getKeyStroke("shift ctrl UP"), "selectPreviousRowExtendSelection",
-            KeyStroke.getKeyStroke("ctrl HOME"), "selectFirstRowChangeLead",
-            KeyStroke.getKeyStroke("shift LEFT"), "selectPreviousColumnExtendSelection",
-            KeyStroke.getKeyStroke("ctrl END"), "selectLastRowChangeLead",
-            KeyStroke.getKeyStroke("ctrl PAGE_DOWN"), "scrollDownChangeLead",
-            KeyStroke.getKeyStroke("shift ctrl RIGHT"), "selectNextColumnExtendSelection",
-            KeyStroke.getKeyStroke("LEFT"), "selectPreviousColumn",
-            KeyStroke.getKeyStroke("ctrl PAGE_UP"), "scrollUpChangeLead",
-            KeyStroke.getKeyStroke("KP_LEFT"), "selectPreviousColumn",
-            KeyStroke.getKeyStroke("shift KP_RIGHT"), "selectNextColumnExtendSelection",
-            KeyStroke.getKeyStroke("SPACE"), "addToSelection",
-            KeyStroke.getKeyStroke("ctrl SPACE"), "toggleAndAnchor",
-            KeyStroke.getKeyStroke("shift SPACE"), "extendTo",
-            KeyStroke.getKeyStroke("shift ctrl SPACE"), "moveSelectionTo",
-            KeyStroke.getKeyStroke("shift ctrl DOWN"), "selectNextRowExtendSelection",
-            KeyStroke.getKeyStroke("ctrl BACK_SLASH"), "clearSelection",
-            KeyStroke.getKeyStroke("shift HOME"), "selectFirstRowExtendSelection",
-            KeyStroke.getKeyStroke("RIGHT"), "selectNextColumn",
-            KeyStroke.getKeyStroke("shift ctrl PAGE_UP"), "scrollUpExtendSelection",
-            KeyStroke.getKeyStroke("shift DOWN"), "selectNextRowExtendSelection",
-            KeyStroke.getKeyStroke("PAGE_DOWN"), "scrollDown",
-            KeyStroke.getKeyStroke("shift ctrl KP_UP"), "selectPreviousRowExtendSelection",
-            KeyStroke.getKeyStroke("shift KP_LEFT"), "selectPreviousColumnExtendSelection",
-            KeyStroke.getKeyStroke("ctrl X"), "cut",
-            KeyStroke.getKeyStroke("shift ctrl PAGE_DOWN"), "scrollDownExtendSelection",
-            KeyStroke.getKeyStroke("ctrl SLASH"), "selectAll",
-            KeyStroke.getKeyStroke("ctrl C"), "copy",
-            KeyStroke.getKeyStroke("ctrl KP_RIGHT"), "selectNextColumnChangeLead",
-            KeyStroke.getKeyStroke("shift END"), "selectLastRowExtendSelection",
-            KeyStroke.getKeyStroke("shift ctrl KP_DOWN"), "selectNextRowExtendSelection",
-            KeyStroke.getKeyStroke("ctrl KP_LEFT"), "selectPreviousColumnChangeLead",
-            KeyStroke.getKeyStroke("HOME"), "selectFirstRow",
-            KeyStroke.getKeyStroke("ctrl V"), "paste",
-            KeyStroke.getKeyStroke("KP_DOWN"), "selectNextRow",
-            KeyStroke.getKeyStroke("ctrl KP_DOWN"), "selectNextRowChangeLead",
-            KeyStroke.getKeyStroke("shift RIGHT"), "selectNextColumnExtendSelection",
-            KeyStroke.getKeyStroke("ctrl A"), "selectAll",
-            KeyStroke.getKeyStroke("shift ctrl END"), "selectLastRowExtendSelection",
-            KeyStroke.getKeyStroke("COPY"), "copy",
-            KeyStroke.getKeyStroke("ctrl KP_UP"), "selectPreviousRowChangeLead",
-            KeyStroke.getKeyStroke("shift ctrl KP_LEFT"), "selectPreviousColumnExtendSelection",
-            KeyStroke.getKeyStroke("shift KP_DOWN"), "selectNextRowExtendSelection",
-            KeyStroke.getKeyStroke("UP"), "selectPreviousRow",
-            KeyStroke.getKeyStroke("shift ctrl HOME"), "selectFirstRowExtendSelection",
-            KeyStroke.getKeyStroke("shift PAGE_DOWN"), "scrollDownExtendSelection",
-            KeyStroke.getKeyStroke("KP_RIGHT"), "selectNextColumn",
-            KeyStroke.getKeyStroke("shift ctrl KP_RIGHT"), "selectNextColumnExtendSelection",
-            KeyStroke.getKeyStroke("PAGE_UP"), "scrollUp",
-            KeyStroke.getKeyStroke("PASTE"), "paste"
-      }),
-      "List.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "List.foreground", new ColorUIResource(Color.black),
-      "List.selectionBackground", new ColorUIResource(0, 0, 128),
-      "List.selectionForeground", new ColorUIResource(Color.white),
-      "List.focusCellHighlightBorder",
-      new BorderUIResource.
-      LineBorderUIResource(new ColorUIResource(Color.yellow)),
-      "Menu.acceleratorFont", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "Menu.crossMenuMnemonic", Boolean.TRUE,
-      "Menu.acceleratorForeground", new ColorUIResource(darkShadow),
-      "Menu.acceleratorSelectionForeground", new ColorUIResource(Color.white),
-      "Menu.arrowIcon", BasicIconFactory.getMenuArrowIcon(),
-      "Menu.background", new ColorUIResource(light),
-      "Menu.border", new BasicBorders.MarginBorder(),
-      "Menu.borderPainted", Boolean.FALSE,
-      "Menu.checkIcon", BasicIconFactory.getMenuItemCheckIcon(),
-      "Menu.consumesTabs", Boolean.TRUE,
-      "Menu.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "Menu.foreground", new ColorUIResource(darkShadow),
-      "Menu.margin", new InsetsUIResource(2, 2, 2, 2),
-      "Menu.selectedWindowInputMapBindings", new Object[] {
-        "ESCAPE", "cancel",
-        "DOWN",  "selectNext",
-        "KP_DOWN", "selectNext",
-        "UP",  "selectPrevious",
-        "KP_UP", "selectPrevious",
-        "LEFT",  "selectParent",
-        "KP_LEFT", "selectParent",
-        "RIGHT", "selectChild",
-        "KP_RIGHT", "selectChild",
-        "ENTER", "return",
-        "SPACE", "return"
-      },
-      "Menu.menuPopupOffsetX", new Integer(0),
-      "Menu.menuPopupOffsetY", new Integer(0),
-      "Menu.submenuPopupOffsetX", new Integer(0),
-      "Menu.submenuPopupOffsetY", new Integer(0),
-      "Menu.selectionBackground", new ColorUIResource(Color.black),
-      "Menu.selectionForeground", new ColorUIResource(Color.white),
-      "MenuBar.background", new ColorUIResource(light),
-      "MenuBar.border", new BasicBorders.MenuBarBorder(null, null),
-      "MenuBar.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "MenuBar.foreground", new ColorUIResource(darkShadow),
-      "MenuBar.highlight", new ColorUIResource(highLight),
-      "MenuBar.shadow", new ColorUIResource(shadow),
-      "MenuBar.windowBindings", new Object[] {
-        "F10", "takeFocus"
-      },
-      "MenuItem.acceleratorDelimiter", "+",
-      "MenuItem.acceleratorFont", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "MenuItem.acceleratorForeground", new ColorUIResource(darkShadow),
-      "MenuItem.acceleratorSelectionForeground",
-      new ColorUIResource(Color.white),
-      "MenuItem.arrowIcon", BasicIconFactory.getMenuItemArrowIcon(),
-      "MenuItem.background", new ColorUIResource(light),
-      "MenuItem.border", new BasicBorders.MarginBorder(),
-      "MenuItem.borderPainted", Boolean.FALSE,
-      "MenuItem.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "MenuItem.foreground", new ColorUIResource(darkShadow),
-      "MenuItem.margin", new InsetsUIResource(2, 2, 2, 2),
-      "MenuItem.selectionBackground", new ColorUIResource(Color.black),
-      "MenuItem.selectionForeground", new ColorUIResource(Color.white),
-      "OptionPane.background", new ColorUIResource(light),
-      "OptionPane.border",
-      new BorderUIResource.EmptyBorderUIResource(0, 0, 0, 0),
-      "OptionPane.buttonAreaBorder",
-      new BorderUIResource.EmptyBorderUIResource(0, 0, 0, 0),
-      "OptionPane.buttonClickThreshhold", new Integer(500),
-      "OptionPane.cancelButtonText", "Cancel",
-      "OptionPane.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "OptionPane.foreground", new ColorUIResource(darkShadow),
-      "OptionPane.messageAreaBorder",
-      new BorderUIResource.EmptyBorderUIResource(0, 0, 0, 0),
-      "OptionPane.messageForeground", new ColorUIResource(darkShadow),
-      "OptionPane.minimumSize",
-      new DimensionUIResource(BasicOptionPaneUI.MinimumWidth,
-                              BasicOptionPaneUI.MinimumHeight),
-      "OptionPane.noButtonText", "No",
-      "OptionPane.okButtonText", "OK",
-      "OptionPane.windowBindings", new Object[] {
-        "ESCAPE",  "close"
-      },
-      "OptionPane.yesButtonText", "Yes",
-      "Panel.background", new ColorUIResource(light),
-      "Panel.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "Panel.foreground", new ColorUIResource(Color.black),
-      "PasswordField.background", new ColorUIResource(light),
-      "PasswordField.border", new BasicBorders.FieldBorder(null, null,
-                                                           null, null),
-      "PasswordField.caretBlinkRate", new Integer(500),
-      "PasswordField.caretForeground", new ColorUIResource(Color.black),
-      "PasswordField.font", new FontUIResource("MonoSpaced", Font.PLAIN, 12),
-      "PasswordField.foreground", new ColorUIResource(Color.black),
-      "PasswordField.inactiveBackground", new ColorUIResource(light),
-      "PasswordField.inactiveForeground", new ColorUIResource(Color.gray),
-      "PasswordField.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-                      KeyStroke.getKeyStroke("END"), "caret-end-line",
-                      KeyStroke.getKeyStroke("shift ctrl O"), "toggle-componentOrientation",
-                      KeyStroke.getKeyStroke("shift KP_LEFT"), "selection-backward",
-                      KeyStroke.getKeyStroke("shift RIGHT"), "selection-forward",
-                      KeyStroke.getKeyStroke("HOME"), "caret-begin-line",
-                      KeyStroke.getKeyStroke("ctrl V"), "paste-from-clipboard",
-                      KeyStroke.getKeyStroke("ctrl H"), "delete-previous",
-                      KeyStroke.getKeyStroke("KP_LEFT"), "caret-backward",
-                      KeyStroke.getKeyStroke("LEFT"), "caret-backward",
-                      KeyStroke.getKeyStroke("ctrl X"), "cut-to-clipboard",
-                      KeyStroke.getKeyStroke("KP_RIGHT"), "caret-forward",
-                      KeyStroke.getKeyStroke("shift ctrl KP_RIGHT"), "selection-end-line",
-                      KeyStroke.getKeyStroke("COPY"), "copy-to-clipboard",
-                      KeyStroke.getKeyStroke("shift HOME"), "selection-begin-line",
-                      KeyStroke.getKeyStroke("RIGHT"), "caret-forward",
-                      KeyStroke.getKeyStroke("shift ctrl LEFT"), "selection-begin-line",
-                      KeyStroke.getKeyStroke("ctrl KP_LEFT"), "caret-begin-line",
-                      KeyStroke.getKeyStroke("ctrl KP_RIGHT"), "caret-end-line",
-                      KeyStroke.getKeyStroke("PASTE"), "paste-from-clipboard",
-                      KeyStroke.getKeyStroke("shift ctrl RIGHT"), "selection-end-line",
-                      KeyStroke.getKeyStroke("ctrl BACK_SLASH"), "unselect",
-                      KeyStroke.getKeyStroke("ctrl A"), "select-all",
-                      KeyStroke.getKeyStroke("shift KP_RIGHT"), "selection-forward",
-                      KeyStroke.getKeyStroke("CUT"), "cut-to-clipboard",
-                      KeyStroke.getKeyStroke("ctrl LEFT"), "caret-begin-line",
-                      KeyStroke.getKeyStroke("BACK_SPACE"), "delete-previous",
-                      KeyStroke.getKeyStroke("shift ctrl KP_LEFT"), "selection-begin-line",
-                      KeyStroke.getKeyStroke("ctrl C"), "copy-to-clipboard",
-                      KeyStroke.getKeyStroke("shift END"), "selection-end-line",
-                      KeyStroke.getKeyStroke("ctrl RIGHT"), "caret-end-line",
-                      KeyStroke.getKeyStroke("DELETE"), "delete-next",
-                      KeyStroke.getKeyStroke("ENTER"), "notify-field-accept",
-                      KeyStroke.getKeyStroke("shift LEFT"), "selection-backward"
-                            }),
-      "PasswordField.margin", new InsetsUIResource(0, 0, 0, 0),
-      "PasswordField.selectionBackground", new ColorUIResource(Color.black),
-      "PasswordField.selectionForeground", new ColorUIResource(Color.white),
-      "PopupMenu.background", new ColorUIResource(light),
-      "PopupMenu.border", new BorderUIResource.BevelBorderUIResource(0),
-      "PopupMenu.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "PopupMenu.foreground", new ColorUIResource(darkShadow),
-      "PopupMenu.selectedWindowInputMapBindings",
-      new Object[] {"ESCAPE", "cancel",
-                    "DOWN", "selectNext",
-                    "KP_DOWN", "selectNext",
-                    "UP", "selectPrevious",
-                    "KP_UP", "selectPrevious",
-                    "LEFT", "selectParent",
-                    "KP_LEFT", "selectParent",
-                    "RIGHT", "selectChild",
-                    "KP_RIGHT", "selectChild",
-                    "ENTER", "return",
-                    "SPACE", "return"
-      },
-      "PopupMenu.selectedWindowInputMapBindings.RightToLeft",
-      new Object[] {"LEFT", "selectChild",
-                    "KP_LEFT", "selectChild",
-                    "RIGHT", "selectParent",
-                    "KP_RIGHT", "selectParent",
-      },
-      "ProgressBar.background", new ColorUIResource(Color.LIGHT_GRAY),
-      "ProgressBar.border",
-      new BorderUIResource.LineBorderUIResource(Color.GREEN, 2),
-      "ProgressBar.cellLength", new Integer(1),
-      "ProgressBar.cellSpacing", new Integer(0),
-      "ProgressBar.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "ProgressBar.foreground", new ColorUIResource(0, 0, 128),
-      "ProgressBar.selectionBackground", new ColorUIResource(0, 0, 128),
-      "ProgressBar.selectionForeground", new ColorUIResource(Color.LIGHT_GRAY),
-      "ProgressBar.repaintInterval", new Integer(50),
-      "ProgressBar.cycleTime", new Integer(3000),
-      "RadioButton.background", new ColorUIResource(light),
-      "RadioButton.border", BasicBorders.getRadioButtonBorder(),
-      "RadioButton.darkShadow", new ColorUIResource(shadow),
-      "RadioButton.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-        KeyStroke.getKeyStroke("SPACE"),  "pressed",
-        KeyStroke.getKeyStroke("released SPACE"), "released"
-      }),
-      "RadioButton.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "RadioButton.foreground", new ColorUIResource(darkShadow),
-      "RadioButton.highlight", new ColorUIResource(highLight),
-      "RadioButton.icon",
-      new UIDefaults.LazyValue()
-      {
-        public Object createValue(UIDefaults def)
-        {
-          return BasicIconFactory.getRadioButtonIcon();
-        }
-      },
-      "RadioButton.light", new ColorUIResource(highLight),
-      "RadioButton.margin", new InsetsUIResource(2, 2, 2, 2),
-      "RadioButton.shadow", new ColorUIResource(shadow),
-      "RadioButton.textIconGap", new Integer(4),
-      "RadioButton.textShiftOffset", new Integer(0),
-      "RadioButtonMenuItem.acceleratorFont",
-      new FontUIResource("Dialog", Font.PLAIN, 12),
-      "RadioButtonMenuItem.acceleratorForeground",
-      new ColorUIResource(darkShadow),
-      "RadioButtonMenuItem.acceleratorSelectionForeground",
-      new ColorUIResource(Color.white),
-      "RadioButtonMenuItem.arrowIcon", BasicIconFactory.getMenuItemArrowIcon(),
-      "RadioButtonMenuItem.background", new ColorUIResource(light),
-      "RadioButtonMenuItem.border", new BasicBorders.MarginBorder(),
-      "RadioButtonMenuItem.borderPainted", Boolean.FALSE,
-      "RadioButtonMenuItem.checkIcon", BasicIconFactory.getRadioButtonMenuItemIcon(),
-      "RadioButtonMenuItem.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "RadioButtonMenuItem.foreground", new ColorUIResource(darkShadow),
-      "RadioButtonMenuItem.margin", new InsetsUIResource(2, 2, 2, 2),
-      "RadioButtonMenuItem.selectionBackground",
-      new ColorUIResource(Color.black),
-      "RadioButtonMenuItem.selectionForeground",
-      new ColorUIResource(Color.white),
-      "RootPane.defaultButtonWindowKeyBindings", new Object[] {
-        "ENTER",  "press",
-        "released ENTER", "release",
-        "ctrl ENTER",  "press",
-        "ctrl released ENTER", "release"
-      },
-      "ScrollBar.background", new ColorUIResource(224, 224, 224),
-      "ScrollBar.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-        "PAGE_UP", "negativeBlockIncrement",
-        "PAGE_DOWN", "positiveBlockIncrement",
-        "END",  "maxScroll",
-        "HOME",  "minScroll",
-        "LEFT",  "negativeUnitIncrement",
-        "KP_UP", "negativeUnitIncrement",
-        "KP_DOWN", "positiveUnitIncrement",
-        "UP",  "negativeUnitIncrement",
-        "RIGHT", "positiveUnitIncrement",
-        "KP_LEFT", "negativeUnitIncrement",
-        "DOWN",  "positiveUnitIncrement",
-        "KP_RIGHT", "positiveUnitIncrement"
-      }),
-      "ScrollBar.foreground", new ColorUIResource(light),
-      "ScrollBar.maximumThumbSize", new DimensionUIResource(4096, 4096),
-      "ScrollBar.minimumThumbSize", new DimensionUIResource(8, 8),
-      "ScrollBar.thumb", new ColorUIResource(light),
-      "ScrollBar.thumbDarkShadow", new ColorUIResource(shadow),
-      "ScrollBar.thumbHighlight", new ColorUIResource(highLight),
-      "ScrollBar.thumbShadow", new ColorUIResource(shadow),
-      "ScrollBar.track", new ColorUIResource(light),
-      "ScrollBar.trackHighlight", new ColorUIResource(shadow),
-      "ScrollBar.width", new Integer(16),
-      "ScrollPane.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
-        "PAGE_UP", "scrollUp",
-        "KP_LEFT", "unitScrollLeft",
-        "ctrl PAGE_DOWN", "scrollRight",
-        "PAGE_DOWN", "scrollDown",
-        "KP_RIGHT", "unitScrollRight",
-        "LEFT",  "unitScrollLeft",
-        "ctrl END", "scrollEnd",
-        "UP",  "unitScrollUp",
-        "RIGHT", "unitScrollRight",
-        "DOWN",  "unitScrollDown",
-        "ctrl HOME", "scrollHome",
-        "ctrl PAGE_UP", "scrollLeft",
-        "KP_UP", "unitScrollUp",
-        "KP_DOWN", "unitScrollDown"
-      }),
-      "ScrollPane.background", new ColorUIResource(light),
-      "ScrollPane.border", new BorderUIResource.EtchedBorderUIResource(),
-      "ScrollPane.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "ScrollPane.foreground", new ColorUIResource(darkShadow),
-      "Separator.background", new ColorUIResource(highLight),
-      "Separator.foreground", new ColorUIResource(shadow),
-      "Separator.highlight", new ColorUIResource(highLight),
-      "Separator.shadow", new ColorUIResource(shadow),
-      "Slider.background", new ColorUIResource(light),
-      "Slider.focus", new ColorUIResource(shadow),
-      "Slider.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-            "ctrl PAGE_DOWN", "negativeBlockIncrement",
-            "PAGE_DOWN", "negativeBlockIncrement",
-            "PAGE_UP", "positiveBlockIncrement",
-            "ctrl PAGE_UP", "positiveBlockIncrement",
-            "KP_RIGHT", "positiveUnitIncrement",
-            "DOWN", "negativeUnitIncrement",
-            "KP_LEFT", "negativeUnitIncrement",
-            "RIGHT", "positiveUnitIncrement",
-            "KP_DOWN", "negativeUnitIncrement",
-            "UP", "positiveUnitIncrement",
-            "KP_UP", "positiveUnitIncrement",
-            "LEFT", "negativeUnitIncrement",
-            "HOME", "minScroll",
-            "END", "maxScroll"
-      }),
-      "Slider.focusInsets", new InsetsUIResource(2, 2, 2, 2),
-      "Slider.foreground", new ColorUIResource(light),
-      "Slider.highlight", new ColorUIResource(highLight),
-      "Slider.shadow", new ColorUIResource(shadow),
-      "Slider.thumbHeight", new Integer(20),
-      "Slider.thumbWidth", new Integer(11),
-      "Slider.tickHeight", new Integer(12),
-      "Slider.horizontalSize", new Dimension(200, 21),
-      "Slider.verticalSize", new Dimension(21, 200),
-      "Slider.minimumHorizontalSize", new Dimension(36, 21),
-      "Slider.minimumVerticalSize", new Dimension(21, 36),
-      "Spinner.background", new ColorUIResource(light),
-      "Spinner.foreground", new ColorUIResource(light),
-      "Spinner.arrowButtonSize", new DimensionUIResource(16, 5),
-      "Spinner.editorBorderPainted", Boolean.FALSE,
-      "Spinner.font", new FontUIResource("MonoSpaced", Font.PLAIN, 12),
-      "SplitPane.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
-        "F6",  "toggleFocus",
-        "F8",  "startResize",
-        "END",  "selectMax",
-        "HOME",  "selectMin",
-        "LEFT",  "negativeIncrement",
-        "KP_UP", "negativeIncrement",
-        "KP_DOWN", "positiveIncrement",
-        "UP",  "negativeIncrement",
-        "RIGHT", "positiveIncrement",
-        "KP_LEFT", "negativeIncrement",
-        "DOWN",  "positiveIncrement",
-        "KP_RIGHT", "positiveIncrement",
-        "shift ctrl pressed TAB", "focusOutBackward",
-        "ctrl pressed TAB", "focusOutForward"
-      }),
-      "SplitPane.background", new ColorUIResource(light),
-      "SplitPane.border", new BasicBorders.SplitPaneBorder(null, null),
-      "SplitPane.darkShadow", new ColorUIResource(shadow),
-      "SplitPane.dividerSize", new Integer(7),
-      "SplitPane.highlight", new ColorUIResource(highLight),
-      "SplitPane.shadow", new ColorUIResource(shadow),
-      "SplitPaneDivider.border", BasicBorders.getSplitPaneDividerBorder(),
-      "SplitPaneDivider.draggingColor", new ColorUIResource(Color.DARK_GRAY),
-      "TabbedPane.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
-        "ctrl PAGE_DOWN", "navigatePageDown",
-        "ctrl PAGE_UP", "navigatePageUp",
-        "ctrl UP", "requestFocus",
-        "ctrl KP_UP", "requestFocus"
-      }),
-      "TabbedPane.background", new ColorUIResource(192, 192, 192),
-      "TabbedPane.contentBorderInsets", new InsetsUIResource(2, 2, 3, 3),
-      "TabbedPane.darkShadow", new ColorUIResource(Color.black),
-      "TabbedPane.focus", new ColorUIResource(Color.black),
-      "TabbedPane.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-            KeyStroke.getKeyStroke("ctrl DOWN"), "requestFocusForVisibleComponent",
-            KeyStroke.getKeyStroke("KP_UP"), "navigateUp",
-            KeyStroke.getKeyStroke("LEFT"), "navigateLeft",
-            KeyStroke.getKeyStroke("ctrl KP_DOWN"), "requestFocusForVisibleComponent",
-            KeyStroke.getKeyStroke("UP"), "navigateUp",
-            KeyStroke.getKeyStroke("KP_DOWN"), "navigateDown",
-            KeyStroke.getKeyStroke("KP_LEFT"), "navigateLeft",
-            KeyStroke.getKeyStroke("RIGHT"), "navigateRight",
-            KeyStroke.getKeyStroke("KP_RIGHT"), "navigateRight",
-            KeyStroke.getKeyStroke("DOWN"), "navigateDown"
-      }),
-      "TabbedPane.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "TabbedPane.foreground", new ColorUIResource(Color.black),
-      "TabbedPane.highlight", new ColorUIResource(Color.white),
-      "TabbedPane.light", new ColorUIResource(192, 192, 192),
-      "TabbedPane.selectedTabPadInsets", new InsetsUIResource(2, 2, 2, 1),
-      "TabbedPane.shadow", new ColorUIResource(128, 128, 128),
-      "TabbedPane.tabsOpaque", Boolean.TRUE,
-      "TabbedPane.tabAreaInsets", new InsetsUIResource(3, 2, 0, 2),
-      "TabbedPane.tabInsets", new InsetsUIResource(0, 4, 1, 4),
-      "TabbedPane.tabRunOverlay", new Integer(2),
-      "TabbedPane.tabsOverlapBorder", Boolean.FALSE,
-      "TabbedPane.textIconGap", new Integer(4),
-      "Table.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
-        "ctrl DOWN", "selectNextRowChangeLead",
-        "ctrl RIGHT", "selectNextColumnChangeLead",
-        "ctrl UP", "selectPreviousRowChangeLead",
-        "ctrl LEFT", "selectPreviousColumnChangeLead",
-        "CUT", "cut",
-        "SPACE", "addToSelection",
-        "ctrl SPACE", "toggleAndAnchor",
-        "shift SPACE", "extendTo",
-        "shift ctrl SPACE", "moveSelectionTo",
-        "ctrl X", "cut",
-        "ctrl C", "copy",
-        "ctrl KP_RIGHT", "selectNextColumnChangeLead",
-        "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
-        "ctrl V", "paste",
-        "ctrl KP_DOWN", "selectNextRowChangeLead",
-        "COPY", "copy",
-        "ctrl KP_UP", "selectPreviousRowChangeLead",
-        "PASTE", "paste",
-        "shift PAGE_DOWN", "scrollDownExtendSelection",
-        "PAGE_DOWN", "scrollDownChangeSelection",
-        "END",  "selectLastColumn",
-        "shift END", "selectLastColumnExtendSelection",
-        "HOME",  "selectFirstColumn",
-        "ctrl END", "selectLastRow",
-        "ctrl shift END", "selectLastRowExtendSelection",
-        "LEFT",  "selectPreviousColumn",
-        "shift HOME", "selectFirstColumnExtendSelection",
-        "UP",  "selectPreviousRow",
-        "RIGHT", "selectNextColumn",
-        "ctrl HOME", "selectFirstRow",
-        "shift LEFT", "selectPreviousColumnExtendSelection",
-        "DOWN",  "selectNextRow",
-        "ctrl shift HOME", "selectFirstRowExtendSelection",
-        "shift UP", "selectPreviousRowExtendSelection",
-        "F2",  "startEditing",
-        "shift RIGHT", "selectNextColumnExtendSelection",
-        "TAB",  "selectNextColumnCell",
-        "shift DOWN", "selectNextRowExtendSelection",
-        "ENTER", "selectNextRowCell",
-        "KP_UP", "selectPreviousRow",
-        "KP_DOWN", "selectNextRow",
-        "KP_LEFT", "selectPreviousColumn",
-        "KP_RIGHT", "selectNextColumn",
-        "shift TAB", "selectPreviousColumnCell",
-        "ctrl A", "selectAll",
-        "shift ENTER", "selectPreviousRowCell",
-        "shift KP_DOWN", "selectNextRowExtendSelection",
-        "shift KP_LEFT", "selectPreviousColumnExtendSelection",
-        "ESCAPE",  "cancel",
-        "ctrl shift PAGE_UP", "scrollLeftExtendSelection",
-        "shift KP_RIGHT", "selectNextColumnExtendSelection",
-        "ctrl PAGE_UP",  "scrollLeftChangeSelection",
-        "shift PAGE_UP", "scrollUpExtendSelection",
-        "ctrl shift PAGE_DOWN", "scrollRightExtendSelection",
-        "ctrl PAGE_DOWN", "scrollRightChangeSelection",
-        "PAGE_UP",   "scrollUpChangeSelection",
-        "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
-        "shift KP_UP", "selectPreviousRowExtendSelection",
-        "ctrl shift UP", "selectPreviousRowExtendSelection",
-        "ctrl shift RIGHT", "selectNextColumnExtendSelection",
-        "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
-        "ctrl shift DOWN", "selectNextRowExtendSelection",
-        "ctrl BACK_SLASH", "clearSelection",
-        "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
-        "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
-        "ctrl SLASH", "selectAll",
-        "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
-      }),
-      "Table.background", new ColorUIResource(new ColorUIResource(255, 255, 255)),
-      "Table.focusCellBackground", new ColorUIResource(new ColorUIResource(255, 255, 255)),
-      "Table.focusCellForeground", new ColorUIResource(new ColorUIResource(0, 0, 0)),
-      "Table.focusCellHighlightBorder",
-      new BorderUIResource.LineBorderUIResource(
-                                             new ColorUIResource(255, 255, 0)),
-      "Table.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "Table.foreground", new ColorUIResource(new ColorUIResource(0, 0, 0)),
-      "Table.gridColor", new ColorUIResource(new ColorUIResource(128, 128, 128)),
-      "Table.scrollPaneBorder", new BorderUIResource.BevelBorderUIResource(0),
-      "Table.selectionBackground", new ColorUIResource(new ColorUIResource(0, 0, 128)),
-      "Table.selectionForeground", new ColorUIResource(new ColorUIResource(255, 255, 255)),
-      "TableHeader.background", new ColorUIResource(new ColorUIResource(192, 192, 192)),
-      "TableHeader.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "TableHeader.foreground", new ColorUIResource(new ColorUIResource(0, 0, 0)),
-
-      "TextArea.background", new ColorUIResource(light),
-      "TextArea.border", new BorderUIResource(BasicBorders.getMarginBorder()),
-      "TextArea.caretBlinkRate", new Integer(500),
-      "TextArea.caretForeground", new ColorUIResource(Color.black),
-      "TextArea.font", new FontUIResource("MonoSpaced", Font.PLAIN, 12),
-      "TextArea.foreground", new ColorUIResource(Color.black),
-      "TextArea.inactiveForeground", new ColorUIResource(Color.gray),
-      "TextArea.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-         KeyStroke.getKeyStroke("shift UP"), "selection-up",
-         KeyStroke.getKeyStroke("ctrl RIGHT"), "caret-next-word",
-         KeyStroke.getKeyStroke("shift ctrl LEFT"), "selection-previous-word",
-         KeyStroke.getKeyStroke("shift KP_UP"), "selection-up",
-         KeyStroke.getKeyStroke("DOWN"), "caret-down",
-         KeyStroke.getKeyStroke("shift ctrl T"), "previous-link-action",
-         KeyStroke.getKeyStroke("ctrl LEFT"), "caret-previous-word",
-         KeyStroke.getKeyStroke("CUT"), "cut-to-clipboard",
-         KeyStroke.getKeyStroke("END"), "caret-end-line",
-         KeyStroke.getKeyStroke("shift PAGE_UP"), "selection-page-up",
-         KeyStroke.getKeyStroke("KP_UP"), "caret-up",
-         KeyStroke.getKeyStroke("DELETE"), "delete-next",
-         KeyStroke.getKeyStroke("ctrl HOME"), "caret-begin",
-         KeyStroke.getKeyStroke("shift LEFT"), "selection-backward",
-         KeyStroke.getKeyStroke("ctrl END"), "caret-end",
-         KeyStroke.getKeyStroke("BACK_SPACE"), "delete-previous",
-         KeyStroke.getKeyStroke("shift ctrl RIGHT"), "selection-next-word",
-         KeyStroke.getKeyStroke("LEFT"), "caret-backward",
-         KeyStroke.getKeyStroke("KP_LEFT"), "caret-backward",
-         KeyStroke.getKeyStroke("shift KP_RIGHT"), "selection-forward",
-         KeyStroke.getKeyStroke("ctrl SPACE"), "activate-link-action",
-         KeyStroke.getKeyStroke("ctrl H"), "delete-previous",
-         KeyStroke.getKeyStroke("ctrl BACK_SLASH"), "unselect",
-         KeyStroke.getKeyStroke("ENTER"), "insert-break",
-         KeyStroke.getKeyStroke("shift HOME"), "selection-begin-line",
-         KeyStroke.getKeyStroke("RIGHT"), "caret-forward",
-         KeyStroke.getKeyStroke("shift ctrl PAGE_UP"), "selection-page-left",
-         KeyStroke.getKeyStroke("shift DOWN"), "selection-down",
-         KeyStroke.getKeyStroke("PAGE_DOWN"), "page-down",
-         KeyStroke.getKeyStroke("shift KP_LEFT"), "selection-backward",
-         KeyStroke.getKeyStroke("shift ctrl O"), "toggle-componentOrientation",
-         KeyStroke.getKeyStroke("ctrl X"), "cut-to-clipboard",
-         KeyStroke.getKeyStroke("shift ctrl PAGE_DOWN"), "selection-page-right",
-         KeyStroke.getKeyStroke("ctrl C"), "copy-to-clipboard",
-         KeyStroke.getKeyStroke("ctrl KP_RIGHT"), "caret-next-word",
-         KeyStroke.getKeyStroke("shift END"), "selection-end-line",
-         KeyStroke.getKeyStroke("ctrl KP_LEFT"), "caret-previous-word",
-         KeyStroke.getKeyStroke("HOME"), "caret-begin-line",
-         KeyStroke.getKeyStroke("ctrl V"), "paste-from-clipboard",
-         KeyStroke.getKeyStroke("KP_DOWN"), "caret-down",
-         KeyStroke.getKeyStroke("ctrl A"), "select-all",
-         KeyStroke.getKeyStroke("shift RIGHT"), "selection-forward",
-         KeyStroke.getKeyStroke("shift ctrl END"), "selection-end",
-         KeyStroke.getKeyStroke("COPY"), "copy-to-clipboard",
-         KeyStroke.getKeyStroke("shift ctrl KP_LEFT"), "selection-previous-word",
-         KeyStroke.getKeyStroke("ctrl T"), "next-link-action",
-         KeyStroke.getKeyStroke("shift KP_DOWN"), "selection-down",
-         KeyStroke.getKeyStroke("TAB"), "insert-tab",
-         KeyStroke.getKeyStroke("UP"), "caret-up",
-         KeyStroke.getKeyStroke("shift ctrl HOME"), "selection-begin",
-         KeyStroke.getKeyStroke("shift PAGE_DOWN"), "selection-page-down",
-         KeyStroke.getKeyStroke("KP_RIGHT"), "caret-forward",
-         KeyStroke.getKeyStroke("shift ctrl KP_RIGHT"), "selection-next-word",
-         KeyStroke.getKeyStroke("PAGE_UP"), "page-up",
-         KeyStroke.getKeyStroke("PASTE"), "paste-from-clipboard"
-      }),
-      "TextArea.margin", new InsetsUIResource(0, 0, 0, 0),
-      "TextArea.selectionBackground", new ColorUIResource(Color.black),
-      "TextArea.selectionForeground", new ColorUIResource(Color.white),
-      "TextField.background", new ColorUIResource(light),
-      "TextField.border", new BasicBorders.FieldBorder(null, null, null, null),
-      "TextField.caretBlinkRate", new Integer(500),
-      "TextField.caretForeground", new ColorUIResource(Color.black),
-      "TextField.darkShadow", new ColorUIResource(shadow),
-      "TextField.font", new FontUIResource("SansSerif", Font.PLAIN, 12),
-      "TextField.foreground", new ColorUIResource(Color.black),
-      "TextField.highlight", new ColorUIResource(highLight),
-      "TextField.inactiveBackground", new ColorUIResource(Color.LIGHT_GRAY),
-      "TextField.inactiveForeground", new ColorUIResource(Color.GRAY),
-      "TextField.light", new ColorUIResource(highLight),
-      "TextField.highlight", new ColorUIResource(light),
-      "TextField.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-         KeyStroke.getKeyStroke("ENTER"), "notify-field-accept",
-         KeyStroke.getKeyStroke("LEFT"), "caret-backward",
-         KeyStroke.getKeyStroke("RIGHT"), "caret-forward",
-         KeyStroke.getKeyStroke("BACK_SPACE"), "delete-previous",
-         KeyStroke.getKeyStroke("ctrl X"), "cut-to-clipboard",
-         KeyStroke.getKeyStroke("ctrl C"), "copy-to-clipboard",
-         KeyStroke.getKeyStroke("ctrl V"), "paste-from-clipboard",
-         KeyStroke.getKeyStroke("shift LEFT"), "selection-backward",
-         KeyStroke.getKeyStroke("shift RIGHT"), "selection-forward",
-         KeyStroke.getKeyStroke("HOME"), "caret-begin-line",
-         KeyStroke.getKeyStroke("END"), "caret-end-line",
-         KeyStroke.getKeyStroke("DELETE"), "delete-next",
-         KeyStroke.getKeyStroke("shift ctrl O"), "toggle-componentOrientation",
-         KeyStroke.getKeyStroke("shift KP_LEFT"), "selection-backward",
-         KeyStroke.getKeyStroke("ctrl H"), "delete-previous",
-         KeyStroke.getKeyStroke("KP_LEFT"), "caret-backward",
-         KeyStroke.getKeyStroke("KP_RIGHT"), "caret-forward",
-         KeyStroke.getKeyStroke("shift ctrl KP_RIGHT"), "selection-next-word",
-         KeyStroke.getKeyStroke("COPY"), "copy-to-clipboard",
-         KeyStroke.getKeyStroke("shift HOME"), "selection-begin-line",
-         KeyStroke.getKeyStroke("shift ctrl LEFT"), "selection-previous-word",
-         KeyStroke.getKeyStroke("ctrl KP_LEFT"), "caret-previous-word",
-         KeyStroke.getKeyStroke("ctrl KP_RIGHT"), "caret-next-word",
-         KeyStroke.getKeyStroke("PASTE"), "paste-from-clipboard",
-         KeyStroke.getKeyStroke("shift ctrl RIGHT"), "selection-next-word",
-         KeyStroke.getKeyStroke("ctrl BACK_SLASH"), "unselect",
-         KeyStroke.getKeyStroke("ctrl A"), "select-all",
-         KeyStroke.getKeyStroke("shift KP_RIGHT"), "selection-forward",
-         KeyStroke.getKeyStroke("CUT"), "cut-to-clipboard",
-         KeyStroke.getKeyStroke("ctrl LEFT"), "caret-previous-word",
-         KeyStroke.getKeyStroke("shift ctrl KP_LEFT"), "selection-previous-word",
-         KeyStroke.getKeyStroke("shift END"), "selection-end-line",
-         KeyStroke.getKeyStroke("ctrl RIGHT"), "caret-next-word"
-      }),
-      "TextField.margin", new InsetsUIResource(0, 0, 0, 0),
-      "TextField.selectionBackground", new ColorUIResource(Color.black),
-      "TextField.selectionForeground", new ColorUIResource(Color.white),
-      "TextPane.background", new ColorUIResource(Color.white),
-      "TextPane.border", BasicBorders.getMarginBorder(),
-      "TextPane.caretBlinkRate", new Integer(500),
-      "TextPane.caretForeground", new ColorUIResource(Color.black),
-      "TextPane.font", new FontUIResource("Serif", Font.PLAIN, 12),
-      "TextPane.foreground", new ColorUIResource(Color.black),
-      "TextPane.inactiveForeground", new ColorUIResource(Color.gray),
-      "TextPane.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-          KeyStroke.getKeyStroke("shift UP"), "selection-up",
-          KeyStroke.getKeyStroke("ctrl RIGHT"), "caret-next-word",
-          KeyStroke.getKeyStroke("shift ctrl LEFT"), "selection-previous-word",
-          KeyStroke.getKeyStroke("shift KP_UP"), "selection-up",
-          KeyStroke.getKeyStroke("DOWN"), "caret-down",
-          KeyStroke.getKeyStroke("shift ctrl T"), "previous-link-action",
-          KeyStroke.getKeyStroke("ctrl LEFT"), "caret-previous-word",
-          KeyStroke.getKeyStroke("CUT"), "cut-to-clipboard",
-          KeyStroke.getKeyStroke("END"), "caret-end-line",
-          KeyStroke.getKeyStroke("shift PAGE_UP"), "selection-page-up",
-          KeyStroke.getKeyStroke("KP_UP"), "caret-up",
-          KeyStroke.getKeyStroke("DELETE"), "delete-next",
-          KeyStroke.getKeyStroke("ctrl HOME"), "caret-begin",
-          KeyStroke.getKeyStroke("shift LEFT"), "selection-backward",
-          KeyStroke.getKeyStroke("ctrl END"), "caret-end",
-          KeyStroke.getKeyStroke("BACK_SPACE"), "delete-previous",
-          KeyStroke.getKeyStroke("shift ctrl RIGHT"), "selection-next-word",
-          KeyStroke.getKeyStroke("LEFT"), "caret-backward",
-          KeyStroke.getKeyStroke("KP_LEFT"), "caret-backward",
-          KeyStroke.getKeyStroke("shift KP_RIGHT"), "selection-forward",
-          KeyStroke.getKeyStroke("ctrl SPACE"), "activate-link-action",
-          KeyStroke.getKeyStroke("ctrl H"), "delete-previous",
-          KeyStroke.getKeyStroke("ctrl BACK_SLASH"), "unselect",
-          KeyStroke.getKeyStroke("ENTER"), "insert-break",
-          KeyStroke.getKeyStroke("shift HOME"), "selection-begin-line",
-          KeyStroke.getKeyStroke("RIGHT"), "caret-forward",
-          KeyStroke.getKeyStroke("shift ctrl PAGE_UP"), "selection-page-left",
-          KeyStroke.getKeyStroke("shift DOWN"), "selection-down",
-          KeyStroke.getKeyStroke("PAGE_DOWN"), "page-down",
-          KeyStroke.getKeyStroke("shift KP_LEFT"), "selection-backward",
-          KeyStroke.getKeyStroke("shift ctrl O"), "toggle-componentOrientation",
-          KeyStroke.getKeyStroke("ctrl X"), "cut-to-clipboard",
-          KeyStroke.getKeyStroke("shift ctrl PAGE_DOWN"), "selection-page-right",
-          KeyStroke.getKeyStroke("ctrl C"), "copy-to-clipboard",
-          KeyStroke.getKeyStroke("ctrl KP_RIGHT"), "caret-next-word",
-          KeyStroke.getKeyStroke("shift END"), "selection-end-line",
-          KeyStroke.getKeyStroke("ctrl KP_LEFT"), "caret-previous-word",
-          KeyStroke.getKeyStroke("HOME"), "caret-begin-line",
-          KeyStroke.getKeyStroke("ctrl V"), "paste-from-clipboard",
-          KeyStroke.getKeyStroke("KP_DOWN"), "caret-down",
-          KeyStroke.getKeyStroke("ctrl A"), "select-all",
-          KeyStroke.getKeyStroke("shift RIGHT"), "selection-forward",
-          KeyStroke.getKeyStroke("shift ctrl END"), "selection-end",
-          KeyStroke.getKeyStroke("COPY"), "copy-to-clipboard",
-          KeyStroke.getKeyStroke("shift ctrl KP_LEFT"), "selection-previous-word",
-          KeyStroke.getKeyStroke("ctrl T"), "next-link-action",
-          KeyStroke.getKeyStroke("shift KP_DOWN"), "selection-down",
-          KeyStroke.getKeyStroke("TAB"), "insert-tab",
-          KeyStroke.getKeyStroke("UP"), "caret-up",
-          KeyStroke.getKeyStroke("shift ctrl HOME"), "selection-begin",
-          KeyStroke.getKeyStroke("shift PAGE_DOWN"), "selection-page-down",
-          KeyStroke.getKeyStroke("KP_RIGHT"), "caret-forward",
-          KeyStroke.getKeyStroke("shift ctrl KP_RIGHT"), "selection-next-word",
-          KeyStroke.getKeyStroke("PAGE_UP"), "page-up",
-          KeyStroke.getKeyStroke("PASTE"), "paste-from-clipboard"
-      }),
-      "TextPane.margin", new InsetsUIResource(3, 3, 3, 3),
-      "TextPane.selectionBackground", new ColorUIResource(Color.black),
-      "TextPane.selectionForeground", new ColorUIResource(Color.white),
-      "TitledBorder.border", new BorderUIResource.EtchedBorderUIResource(),
-      "TitledBorder.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "TitledBorder.titleColor", new ColorUIResource(darkShadow),
-      "ToggleButton.background", new ColorUIResource(light),
-      "ToggleButton.border",
-      new BorderUIResource.CompoundBorderUIResource(null, null),
-      "ToggleButton.darkShadow", new ColorUIResource(shadow),
-      "ToggleButton.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-          KeyStroke.getKeyStroke("SPACE"),  "pressed",
-          KeyStroke.getKeyStroke("released SPACE"), "released"
-      }),
-      "ToggleButton.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "ToggleButton.foreground", new ColorUIResource(darkShadow),
-      "ToggleButton.highlight", new ColorUIResource(highLight),
-      "ToggleButton.light", new ColorUIResource(light),
-      "ToggleButton.margin", new InsetsUIResource(2, 14, 2, 14),
-      "ToggleButton.shadow", new ColorUIResource(shadow),
-      "ToggleButton.textIconGap", new Integer(4),
-      "ToggleButton.textShiftOffset", new Integer(0),
-      "ToolBar.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
-        "UP",  "navigateUp",
-        "KP_UP", "navigateUp",
-        "DOWN",  "navigateDown",
-        "KP_DOWN", "navigateDown",
-        "LEFT",  "navigateLeft",
-        "KP_LEFT", "navigateLeft",
-        "RIGHT", "navigateRight",
-        "KP_RIGHT", "navigateRight"
-      }),
-      "ToolBar.background", new ColorUIResource(light),
-      "ToolBar.border", new BorderUIResource.EtchedBorderUIResource(),
-      "ToolBar.darkShadow", new ColorUIResource(shadow),
-      "ToolBar.dockingBackground", new ColorUIResource(light),
-      "ToolBar.dockingForeground", new ColorUIResource(Color.red),
-      "ToolBar.floatingBackground", new ColorUIResource(light),
-      "ToolBar.floatingForeground", new ColorUIResource(Color.darkGray),
-      "ToolBar.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "ToolBar.foreground", new ColorUIResource(darkShadow),
-      "ToolBar.highlight", new ColorUIResource(highLight),
-      "ToolBar.light", new ColorUIResource(highLight),
-      "ToolBar.separatorSize", new DimensionUIResource(10, 10),
-      "ToolBar.shadow", new ColorUIResource(shadow),
-      "ToolTip.background", new ColorUIResource(light),
-      "ToolTip.border", new BorderUIResource.LineBorderUIResource(Color.lightGray),
-      "ToolTip.font", new FontUIResource("SansSerif", Font.PLAIN, 12),
-      "ToolTip.foreground", new ColorUIResource(darkShadow),
-      "Tree.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
-        "ESCAPE", "cancel"
-      }),
-      "Tree.background", new ColorUIResource(new Color(255, 255, 255)),
-      "Tree.changeSelectionWithFocus", Boolean.TRUE,
-      "Tree.drawsFocusBorderAroundIcon", Boolean.FALSE,
-      "Tree.editorBorder", new BorderUIResource.LineBorderUIResource(Color.lightGray),
-      "Tree.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
-              KeyStroke.getKeyStroke("ctrl DOWN"), "selectNextChangeLead",
-              KeyStroke.getKeyStroke("shift UP"), "selectPreviousExtendSelection",
-              KeyStroke.getKeyStroke("ctrl RIGHT"), "scrollRight",
-              KeyStroke.getKeyStroke("shift KP_UP"), "selectPreviousExtendSelection",
-              KeyStroke.getKeyStroke("DOWN"), "selectNext",
-              KeyStroke.getKeyStroke("ctrl UP"), "selectPreviousChangeLead",
-              KeyStroke.getKeyStroke("ctrl LEFT"), "scrollLeft",
-              KeyStroke.getKeyStroke("CUT"), "cut",
-              KeyStroke.getKeyStroke("END"), "selectLast",
-              KeyStroke.getKeyStroke("shift PAGE_UP"), "scrollUpExtendSelection",
-              KeyStroke.getKeyStroke("KP_UP"), "selectPrevious",
-              KeyStroke.getKeyStroke("shift ctrl UP"), "selectPreviousExtendSelection",
-              KeyStroke.getKeyStroke("ctrl HOME"), "selectFirstChangeLead",
-              KeyStroke.getKeyStroke("ctrl END"), "selectLastChangeLead",
-              KeyStroke.getKeyStroke("ctrl PAGE_DOWN"), "scrollDownChangeLead",
-              KeyStroke.getKeyStroke("LEFT"), "selectParent",
-              KeyStroke.getKeyStroke("ctrl PAGE_UP"), "scrollUpChangeLead",
-              KeyStroke.getKeyStroke("KP_LEFT"), "selectParent",
-              KeyStroke.getKeyStroke("SPACE"), "addToSelection",
-              KeyStroke.getKeyStroke("ctrl SPACE"), "toggleAndAnchor",
-              KeyStroke.getKeyStroke("shift SPACE"), "extendTo",
-              KeyStroke.getKeyStroke("shift ctrl SPACE"), "moveSelectionTo",
-              KeyStroke.getKeyStroke("ADD"), "expand",
-              KeyStroke.getKeyStroke("ctrl BACK_SLASH"), "clearSelection",
-              KeyStroke.getKeyStroke("shift ctrl DOWN"), "selectNextExtendSelection",
-              KeyStroke.getKeyStroke("shift HOME"), "selectFirstExtendSelection",
-              KeyStroke.getKeyStroke("RIGHT"), "selectChild",
-              KeyStroke.getKeyStroke("shift ctrl PAGE_UP"), "scrollUpExtendSelection",
-              KeyStroke.getKeyStroke("shift DOWN"), "selectNextExtendSelection",
-              KeyStroke.getKeyStroke("PAGE_DOWN"), "scrollDownChangeSelection",
-              KeyStroke.getKeyStroke("shift ctrl KP_UP"), "selectPreviousExtendSelection",
-              KeyStroke.getKeyStroke("SUBTRACT"), "collapse",
-              KeyStroke.getKeyStroke("ctrl X"), "cut",
-              KeyStroke.getKeyStroke("shift ctrl PAGE_DOWN"), "scrollDownExtendSelection",
-              KeyStroke.getKeyStroke("ctrl SLASH"), "selectAll",
-              KeyStroke.getKeyStroke("ctrl C"), "copy",
-              KeyStroke.getKeyStroke("ctrl KP_RIGHT"), "scrollRight",
-              KeyStroke.getKeyStroke("shift END"), "selectLastExtendSelection",
-              KeyStroke.getKeyStroke("shift ctrl KP_DOWN"), "selectNextExtendSelection",
-              KeyStroke.getKeyStroke("ctrl KP_LEFT"), "scrollLeft",
-              KeyStroke.getKeyStroke("HOME"), "selectFirst",
-              KeyStroke.getKeyStroke("ctrl V"), "paste",
-              KeyStroke.getKeyStroke("KP_DOWN"), "selectNext",
-              KeyStroke.getKeyStroke("ctrl A"), "selectAll",
-              KeyStroke.getKeyStroke("ctrl KP_DOWN"), "selectNextChangeLead",
-              KeyStroke.getKeyStroke("shift ctrl END"), "selectLastExtendSelection",
-              KeyStroke.getKeyStroke("COPY"), "copy",
-              KeyStroke.getKeyStroke("ctrl KP_UP"), "selectPreviousChangeLead",
-              KeyStroke.getKeyStroke("shift KP_DOWN"), "selectNextExtendSelection",
-              KeyStroke.getKeyStroke("UP"), "selectPrevious",
-              KeyStroke.getKeyStroke("shift ctrl HOME"), "selectFirstExtendSelection",
-              KeyStroke.getKeyStroke("shift PAGE_DOWN"), "scrollDownExtendSelection",
-              KeyStroke.getKeyStroke("KP_RIGHT"), "selectChild",
-              KeyStroke.getKeyStroke("F2"), "startEditing",
-              KeyStroke.getKeyStroke("PAGE_UP"), "scrollUpChangeSelection",
-              KeyStroke.getKeyStroke("PASTE"), "paste"
-      }),
-      "Tree.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "Tree.foreground", new ColorUIResource(Color.black),
-      "Tree.hash", new ColorUIResource(new Color(184, 207, 228)),
-      "Tree.leftChildIndent", new Integer(7),
-      "Tree.rightChildIndent", new Integer(13),
-      "Tree.rowHeight", new Integer(16),
-      "Tree.scrollsOnExpand", Boolean.TRUE,
-      "Tree.selectionBackground", new ColorUIResource(Color.black),
-      "Tree.nonSelectionBackground", new ColorUIResource(new Color(255, 255, 255)),
-      "Tree.selectionBorderColor", new ColorUIResource(Color.black),
-      "Tree.selectionBorder", new BorderUIResource.LineBorderUIResource(Color.black),
-      "Tree.selectionForeground", new ColorUIResource(new Color(255, 255, 255)),
-      "Viewport.background", new ColorUIResource(light),
-      "Viewport.foreground", new ColorUIResource(Color.black),
-      "Viewport.font", new FontUIResource("Dialog", Font.PLAIN, 12)
-    };
-    defaults.putDefaults(uiDefaults);
-  }
-
-  /**
-   * Returns the <code>ActionMap</code> that stores all the actions that are
-   * responsibly for rendering auditory cues.
-   *
-   * @return the action map that stores all the actions that are
-   *         responsibly for rendering auditory cues
-   *
-   * @see #createAudioAction
-   * @see #playSound
-   *
-   * @since 1.4
-   */
-  protected ActionMap getAudioActionMap()
-  {
-    if (audioActionMap != null)
-      audioActionMap = new ActionMap();
-    return audioActionMap;
-  }
-
-  /**
-   * Creates an <code>Action</code> that can play an auditory cue specified by
-   * the key. The UIDefaults value for the key is normally a String that points
-   * to an audio file relative to the current package.
-   *
-   * @param key a UIDefaults key that specifies the sound
-   *
-   * @return an action that can play the sound
-   *
-   * @see #playSound
-   *
-   * @since 1.4
-   */
-  protected Action createAudioAction(Object key)
-  {
-    return new AudioAction(key);
-  }
-
-  /**
-   * Plays the sound of the action if it is listed in
-   * <code>AuditoryCues.playList</code>.
-   *
-   * @param audioAction the audio action to play
-   *
-   * @since 1.4
-   */
-  protected void playSound(Action audioAction)
-  {
-    if (audioAction instanceof AudioAction)
-      {
-        Object[] playList = (Object[]) UIManager.get("AuditoryCues.playList");
-        for (int i = 0; i < playList.length; ++i)
-          {
-            if (playList[i].equals(((AudioAction) audioAction).key))
-              {
-                ActionEvent ev = new ActionEvent(this,
-                                                 ActionEvent.ACTION_PERFORMED,
-                                                 (String) playList[i]);
-                audioAction.actionPerformed(ev);
-                break;
-              }
-          }
-      }
-  }
-
-  /**
-   * Initializes the Look and Feel.
-   */
-  public void initialize()
-  {
-    Toolkit toolkit = Toolkit.getDefaultToolkit();
-    popupHelper = new PopupHelper();
-    toolkit.addAWTEventListener(popupHelper, AWTEvent.MOUSE_EVENT_MASK);
-  }
-
-  /**
-   * Uninitializes the Look and Feel.
-   */
-  public void uninitialize()
-  {
-    Toolkit toolkit = Toolkit.getDefaultToolkit();
-    toolkit.removeAWTEventListener(popupHelper);
-    popupHelper = null;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicMenuBarUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicMenuBarUI.java
deleted file mode 100644
index b9e2912..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicMenuBarUI.java
+++ /dev/null
@@ -1,481 +0,0 @@
-/* BasicMenuBarUI.java --
-   Copyright (C) 2002, 2004, 2005  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Dimension;
-import java.awt.event.ActionEvent;
-import java.awt.event.ContainerEvent;
-import java.awt.event.ContainerListener;
-import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.ActionMap;
-import javax.swing.BoxLayout;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.LookAndFeel;
-import javax.swing.MenuElement;
-import javax.swing.MenuSelectionManager;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.event.MouseInputListener;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.MenuBarUI;
-
-/**
- * UI Delegate for JMenuBar.
- */
-public class BasicMenuBarUI extends MenuBarUI
-{
-
-  /**
-   * This action is performed for the action command 'takeFocus'.
-   */
-  private static class FocusAction
-    extends AbstractAction
-  {
-
-    /**
-     * Creates a new FocusAction.
-     */
-    FocusAction()
-    {
-      super("takeFocus");
-    }
-
-    /**
-     * Performs the action.
-     */
-    public void actionPerformed(ActionEvent event)
-    {
-      // In the JDK this action seems to pop up the first menu of the
-      // menu bar.
-      JMenuBar menuBar = (JMenuBar) event.getSource();
-      MenuSelectionManager defaultManager =
-        MenuSelectionManager.defaultManager();
-      MenuElement me[];
-      MenuElement subElements[];
-      JMenu menu = menuBar.getMenu(0);
-      if (menu != null)
-        {
-          me = new MenuElement[3];
-          me[0] = (MenuElement) menuBar;
-          me[1] = (MenuElement) menu;
-          me[2] = (MenuElement) menu.getPopupMenu();
-          defaultManager.setSelectedPath(me);
-        }
-    }
-
-  }
-
-  protected ChangeListener changeListener;
-
-  /*ContainerListener that listens to the ContainerEvents fired from menu bar*/
-  protected ContainerListener containerListener;
-
-  /*Property change listeners that listener to PropertyChangeEvent from menu bar*/
-  private PropertyChangeListener propertyChangeListener;
-
-  /* menu bar for which this UI delegate is for*/
-  protected JMenuBar menuBar;
-
-  /* MouseListener that listens to the mouseEvents fired from menu bar*/
-  private MouseInputListener mouseListener;
-
-  /**
-   * Creates a new BasicMenuBarUI object.
-   */
-  public BasicMenuBarUI()
-  {
-    changeListener = createChangeListener();
-    containerListener = createContainerListener();
-    propertyChangeListener = new PropertyChangeHandler();
-    mouseListener = new MouseInputHandler();
-  }
-
-  /**
-   * Creates ChangeListener
-   *
-   * @return The ChangeListener
-   */
-  protected ChangeListener createChangeListener()
-  {
-    return new ChangeHandler();
-  }
-
-  /**
-   * Creates ContainerListener() to listen for ContainerEvents
-   * fired by JMenuBar.
-   *
-   * @return The ContainerListener
-   */
-  protected ContainerListener createContainerListener()
-  {
-    return new ContainerHandler();
-  }
-
-  /**
-   * Factory method to create a BasicMenuBarUI for the given {@link
-   * JComponent}, which should be a {@link JMenuBar}.
-   *
-   * @param x The {@link JComponent} a UI is being created for.
-   *
-   * @return A BasicMenuBarUI for the {@link JComponent}.
-   */
-  public static ComponentUI createUI(JComponent x)
-  {
-    return new BasicMenuBarUI();
-  }
-
-  /**
-   * Returns maximum size for the specified menu bar
-   *
-   * @param c component for which to get maximum size
-   *
-   * @return  Maximum size for the specified menu bar
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    // let layout manager calculate its size
-    return null;
-  }
-
-  /**
-   * Returns maximum allowed size of JMenuBar.
-   *
-   * @param c menuBar for which to return maximum size
-   *
-   * @return Maximum size of the give menu bar.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    // let layout manager calculate its size
-    return null;
-  }
-
-  /**
-   * Returns preferred size of JMenuBar.
-   *
-   * @param c menuBar for which to return preferred size
-   *
-   * @return Preferred size of the give menu bar.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    // let layout manager calculate its size
-    return null;
-  }
-
-  /**
-   * Initializes any default properties that this UI has from the defaults for
-   * the Basic look and feel.
-   */
-  protected void installDefaults()
-  {
-    LookAndFeel.installBorder(menuBar, "MenuBar.border");
-    LookAndFeel.installColorsAndFont(menuBar, "MenuBar.background",
-                                     "MenuBar.foreground", "MenuBar.font");
-    menuBar.setOpaque(true);
-  }
-
-  /**
-   * This method installs the keyboard actions for the JMenuBar.
-   */
-  protected void installKeyboardActions()
-  {
-    // Install InputMap.
-    Object[] bindings =
-      (Object[]) SharedUIDefaults.get("MenuBar.windowBindings");
-    InputMap inputMap = LookAndFeel.makeComponentInputMap(menuBar, bindings);
-    SwingUtilities.replaceUIInputMap(menuBar,
-                                     JComponent.WHEN_IN_FOCUSED_WINDOW,
-                                     inputMap);
-
-    // Install ActionMap.
-    SwingUtilities.replaceUIActionMap(menuBar, getActionMap());
-  }
-
-  /**
-   * Creates and returns the shared action map for JTrees.
-   *
-   * @return the shared action map for JTrees
-   */
-  private ActionMap getActionMap()
-  {
-    ActionMap am = (ActionMap) UIManager.get("MenuBar.actionMap");
-    if (am == null)
-      {
-        am = createDefaultActions();
-        UIManager.getLookAndFeelDefaults().put("MenuBar.actionMap", am);
-      }
-    return am;
-  }
-
-  /**
-   * Creates the default actions when there are none specified by the L&F.
-   *
-   * @return the default actions
-   */
-  private ActionMap createDefaultActions()
-  {
-    ActionMapUIResource am = new ActionMapUIResource();
-    Action action = new FocusAction();
-    am.put(action.getValue(Action.NAME), action);
-    return am;
-  }
-
-  /**
-   * This method installs the listeners needed for this UI to function.
-   */
-  protected void installListeners()
-  {
-    menuBar.addContainerListener(containerListener);
-    menuBar.addPropertyChangeListener(propertyChangeListener);
-    menuBar.addMouseListener(mouseListener);
-  }
-
-  /**
-  * Installs and initializes all fields for this UI delegate. Any properties
-  * of the UI that need to be initialized and/or set to defaults will be
-  * done now. It will also install any listeners necessary.
-  *
-  * @param c The {@link JComponent} that is having this UI installed.
-  */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    menuBar = (JMenuBar) c;
-    menuBar.setLayout(new BoxLayout(menuBar, BoxLayout.X_AXIS));
-    installDefaults();
-    installListeners();
-    installKeyboardActions();
-  }
-
-  /**
-   * This method uninstalls the defaults and nulls any objects created during
-   * install.
-   */
-  protected void uninstallDefaults()
-  {
-    menuBar.setBackground(null);
-    menuBar.setBorder(null);
-    menuBar.setFont(null);
-    menuBar.setForeground(null);
-  }
-
-  /**
-   * This method reverses the work done in installKeyboardActions.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    SwingUtilities.replaceUIInputMap(menuBar,
-                                     JComponent.WHEN_IN_FOCUSED_WINDOW, null);
-    SwingUtilities.replaceUIActionMap(menuBar, null);
-  }
-
-  /**
-   * Unregisters all the listeners that this UI delegate was using.
-   */
-  protected void uninstallListeners()
-  {
-    menuBar.removeContainerListener(containerListener);
-    menuBar.removePropertyChangeListener(propertyChangeListener);
-    menuBar.removeMouseListener(mouseListener);
-  }
-
-  /**
-   * Performs the opposite of installUI. Any properties or resources that need
-   * to be cleaned up will be done now. It will also uninstall any listeners
-   * it has. In addition, any properties of this UI will be nulled.
-   *
-   * @param c The {@link JComponent} that is having this UI uninstalled.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    uninstallDefaults();
-    uninstallListeners();
-    uninstallKeyboardActions();
-    menuBar = null;
-  }
-
-  private class ChangeHandler implements ChangeListener
-  {
-    public void stateChanged(ChangeEvent event)
-    {
-      // TODO: What should be done here, if anything?
-    }
-  }
-
-  /**
-   * This class handles ContainerEvents fired by JMenuBar. It revalidates
-   * and repaints menu bar whenever menu is added or removed from it.
-   */
-  private class ContainerHandler implements ContainerListener
-  {
-    /**
-     * This method is called whenever menu is added to the menu bar
-     *
-     * @param e The ContainerEvent.
-     */
-    public void componentAdded(ContainerEvent e)
-    {
-      menuBar.revalidate();
-      menuBar.repaint();
-    }
-
-    /**
-     * This method is called whenever menu is removed from the menu bar.
-     *
-     * @param e The ContainerEvent.
-     */
-    public void componentRemoved(ContainerEvent e)
-    {
-      menuBar.revalidate();
-      menuBar.repaint();
-    }
-  }
-
-  /**
-   * This class handles PropertyChangeEvents fired from the JMenuBar
-   */
-  private class PropertyChangeHandler implements PropertyChangeListener
-  {
-    /**
-     * This method is called whenever one of the properties of the MenuBar
-     * changes.
-     *
-     * @param e The PropertyChangeEvent.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      if (e.getPropertyName().equals("borderPainted"))
-        menuBar.repaint();
-      if (e.getPropertyName().equals("margin"))
-        menuBar.repaint();
-    }
-  }
-
-  private class MouseInputHandler implements MouseInputListener
-  {
-    /**
-     * Handles mouse clicked event
-     *
-     * @param e Mouse event
-     */
-    public void mouseClicked(MouseEvent e)
-    {
-      MenuElement[] me = menuBar.getSubElements();
-
-      for (int i = 0; i < me.length; i++)
-        {
-          JMenu menu = menuBar.getMenu(i);
-          if (menu != null)
-            menu.setSelected(false);
-        }
-    }
-
-    /**
-     * Handles mouse pressed event
-     *
-     * @param e Mouse event
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      // TODO: What should be done here, if anything?
-    }
-
-    /**
-     * Handles mouse released event
-     *
-     * @param e Mouse event
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      // TODO: What should be done here, if anything?
-    }
-
-    /**
-     * Handles mouse exited event
-     *
-     * @param e Mouse event
-     */
-    public void mouseExited(MouseEvent e)
-    {
-      // TODO: What should be done here, if anything?
-    }
-
-    /**
-     * Handles mouse dragged event
-     *
-     * @param e Mouse event
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      // TODO: What should be done here, if anything?
-    }
-
-    /**
-     * Handles mouse moved event
-     *
-     * @param e Mouse event
-     */
-    public void mouseMoved(MouseEvent e)
-    {
-      // TODO: What should be done here, if anything?
-    }
-
-    /**
-     * Handles mouse entered event
-     *
-     * @param e Mouse event
-     */
-    public void mouseEntered(MouseEvent e)
-    {
-      // TODO: What should be done here, if anything?
-    }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicMenuItemUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicMenuItemUI.java
deleted file mode 100644
index 40b5393..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicMenuItemUI.java
+++ /dev/null
@@ -1,1339 +0,0 @@
-/* BasicMenuItemUI.java --
-   Copyright (C) 2002, 2004, 2005  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import gnu.classpath.SystemProperties;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseEvent;
-import java.awt.font.FontRenderContext;
-import java.awt.font.TextLayout;
-import java.awt.geom.AffineTransform;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.ArrayList;
-
-import javax.swing.AbstractAction;
-import javax.swing.AbstractButton;
-import javax.swing.ActionMap;
-import javax.swing.ButtonModel;
-import javax.swing.Icon;
-import javax.swing.InputMap;
-import javax.swing.JCheckBoxMenuItem;
-import javax.swing.JComponent;
-import javax.swing.JMenu;
-import javax.swing.JMenuItem;
-import javax.swing.JPopupMenu;
-import javax.swing.KeyStroke;
-import javax.swing.LookAndFeel;
-import javax.swing.MenuElement;
-import javax.swing.MenuSelectionManager;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.UIDefaults;
-import javax.swing.UIManager;
-import javax.swing.event.MenuDragMouseEvent;
-import javax.swing.event.MenuDragMouseListener;
-import javax.swing.event.MenuKeyEvent;
-import javax.swing.event.MenuKeyListener;
-import javax.swing.event.MouseInputListener;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentInputMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.MenuItemUI;
-import javax.swing.text.View;
-
-/**
- * UI Delegate for JMenuItem.
- */
-public class BasicMenuItemUI extends MenuItemUI
-{
-  /**
-   * Font to be used when displaying menu item's accelerator.
-   */
-  protected Font acceleratorFont;
-
-  /**
-   * Color to be used when displaying menu item's accelerator.
-   */
-  protected Color acceleratorForeground;
-
-  /**
-   * Color to be used when displaying menu item's accelerator when menu item is
-   * selected.
-   */
-  protected Color acceleratorSelectionForeground;
-
-  /**
-   * Icon that is displayed after the text to indicated that this menu contains
-   * submenu.
-   */
-  protected Icon arrowIcon;
-
-  /**
-   * Icon that is displayed before the text. This icon is only used in
-   * JCheckBoxMenuItem or JRadioBoxMenuItem.
-   */
-  protected Icon checkIcon;
-
-  /**
-   * Number of spaces between icon and text.
-   */
-  protected int defaultTextIconGap = 4;
-
-  /**
-   * Color of the text when menu item is disabled
-   */
-  protected Color disabledForeground;
-
-  /**
-   * The menu Drag mouse listener listening to the menu item.
-   */
-  protected MenuDragMouseListener menuDragMouseListener;
-
-  /**
-   * The menu item itself
-   */
-  protected JMenuItem menuItem;
-
-  /**
-   * Menu Key listener listening to the menu item.
-   */
-  protected MenuKeyListener menuKeyListener;
-
-  /**
-   * mouse input listener listening to menu item.
-   */
-  protected MouseInputListener mouseInputListener;
-
-  /**
-   * Indicates if border should be painted
-   */
-  protected boolean oldBorderPainted;
-
-  /**
-   * Color of text that is used when menu item is selected
-   */
-  protected Color selectionBackground;
-
-  /**
-   * Color of the text that is used when menu item is selected.
-   */
-  protected Color selectionForeground;
-
-  /**
-   * String that separates description of the modifiers and the key
-   */
-  private String acceleratorDelimiter;
-
-  /**
-   * ItemListener to listen for item changes in the menu item
-   */
-  private ItemListener itemListener;
-
-  /**
-   * A PropertyChangeListener to make UI updates after property changes.
-   */
-  private PropertyChangeHandler propertyChangeListener;
-
-  /**
-   * The view rectangle used for layout of the menu item.
-   */
-  private Rectangle viewRect;
-
-  /**
-   * The rectangle that holds the area of the label.
-   */
-  private Rectangle textRect;
-
-  /**
-   * The rectangle that holds the area of the accelerator.
-   */
-  private Rectangle accelRect;
-
-  /**
-   * The rectangle that holds the area of the icon.
-   */
-  private Rectangle iconRect;
-
-  /**
-   * The rectangle that holds the area of the icon.
-   */
-  private Rectangle arrowIconRect;
-
-  /**
-   * The rectangle that holds the area of the check icon.
-   */
-  private Rectangle checkIconRect;
-
-  /**
-   * A rectangle used for temporary storage to avoid creation of new
-   * rectangles.
-   */
-  private Rectangle cachedRect;
-
-  /**
-   * A class to handle PropertChangeEvents for the JMenuItem
-   * @author Anthony Balkissoon abalkiss at redhat dot com.
-   */
-  class PropertyChangeHandler implements PropertyChangeListener
-  {
-    /**
-     * This method is called when a property of the menuItem is changed.
-     * Currently it is only used to update the accelerator key bindings.
-     *
-     * @param e
-     *          the PropertyChangeEvent
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      String property = e.getPropertyName();
-      if (property.equals("accelerator"))
-        {
-          InputMap map = SwingUtilities.getUIInputMap(menuItem,
-              JComponent.WHEN_IN_FOCUSED_WINDOW);
-          if (map != null)
-            map.remove((KeyStroke) e.getOldValue());
-          else
-            map = new ComponentInputMapUIResource(menuItem);
-
-          KeyStroke accelerator = (KeyStroke) e.getNewValue();
-          if (accelerator != null)
-            map.put(accelerator, "doClick");
-        }
-      // TextLayout caching for speed-up drawing of text.
-      else if ((property.equals(AbstractButton.TEXT_CHANGED_PROPERTY)
-                || property.equals("font"))
-               && SystemProperties.getProperty("gnu.javax.swing.noGraphics2D")
-               == null)
-        {
-          AbstractButton b = (AbstractButton) e.getSource();
-          String text = b.getText();
-          if (text == null)
-            text = "";
-          FontRenderContext frc = new FontRenderContext(new AffineTransform(),
-                                                        false, false);
-          TextLayout layout = new TextLayout(text, b.getFont(), frc);
-          b.putClientProperty(BasicGraphicsUtils.CACHED_TEXT_LAYOUT, layout);
-        }
-    }
-  }
-
-  /**
-   * A class to handle accelerator keys.  This is the Action we will
-   * perform when the accelerator key for this JMenuItem is pressed.
-   * @author Anthony Balkissoon abalkiss at redhat dot com
-   *
-   */
-  class ClickAction extends AbstractAction
-  {
-    /**
-     * This is what is done when the accelerator key for the JMenuItem is
-     * pressed.
-     */
-    public void actionPerformed(ActionEvent event)
-    {
-      doClick(MenuSelectionManager.defaultManager());
-    }
-  }
-
-  /**
-   * Creates a new BasicMenuItemUI object.
-   */
-  public BasicMenuItemUI()
-  {
-    mouseInputListener = createMouseInputListener(menuItem);
-    menuDragMouseListener = createMenuDragMouseListener(menuItem);
-    menuKeyListener = createMenuKeyListener(menuItem);
-    itemListener = new ItemHandler();
-    propertyChangeListener = new PropertyChangeHandler();
-
-    // Initialize rectangles for layout.
-    viewRect = new Rectangle();
-    textRect = new Rectangle();
-    iconRect = new Rectangle();
-    arrowIconRect = new Rectangle();
-    checkIconRect = new Rectangle();
-    accelRect = new Rectangle();
-    cachedRect = new Rectangle();
-  }
-
-  /**
-   * Create MenuDragMouseListener to listen for mouse dragged events.
-   *
-   * @param c
-   *          menu item to listen to
-   * @return The MenuDragMouseListener
-   */
-  protected MenuDragMouseListener createMenuDragMouseListener(JComponent c)
-  {
-    return new MenuDragMouseHandler();
-  }
-
-  /**
-   * Creates MenuKeyListener to listen to key events occuring when menu item is
-   * visible on the screen.
-   *
-   * @param c
-   *          menu item to listen to
-   * @return The MenuKeyListener
-   */
-  protected MenuKeyListener createMenuKeyListener(JComponent c)
-  {
-    return new MenuKeyHandler();
-  }
-
-  /**
-   * Handles mouse input events occuring for this menu item
-   *
-   * @param c
-   *          menu item to listen to
-   * @return The MouseInputListener
-   */
-  protected MouseInputListener createMouseInputListener(JComponent c)
-  {
-    return new MouseInputHandler();
-  }
-
-  /**
-   * Factory method to create a BasicMenuItemUI for the given {@link
-   * JComponent}, which should be a {@link JMenuItem}.
-   *
-   * @param c
-   *          The {@link JComponent} a UI is being created for.
-   * @return A BasicMenuItemUI for the {@link JComponent}.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicMenuItemUI();
-  }
-
-  /**
-   * Programatically clicks menu item.
-   *
-   * @param msm
-   *          MenuSelectionManager for the menu hierarchy
-   */
-  protected void doClick(MenuSelectionManager msm)
-  {
-    menuItem.doClick(0);
-    msm.clearSelectedPath();
-  }
-
-  /**
-   * Returns maximum size for the specified menu item
-   *
-   * @param c
-   *          component for which to get maximum size
-   * @return Maximum size for the specified menu item.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return null;
-  }
-
-  /**
-   * Returns minimum size for the specified menu item
-   *
-   * @param c
-   *          component for which to get minimum size
-   * @return Minimum size for the specified menu item.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    return null;
-  }
-
-  /**
-   * Returns path to this menu item.
-   *
-   * @return $MenuElement[]$ Returns array of menu elements that constitute a
-   *         path to this menu item.
-   */
-  public MenuElement[] getPath()
-  {
-    ArrayList path = new ArrayList();
-
-    Component c = menuItem;
-    while (c instanceof MenuElement)
-      {
-        path.add(0, c);
-
-        if (c instanceof JPopupMenu)
-          c = ((JPopupMenu) c).getInvoker();
-        else
-          c = c.getParent();
-      }
-
-    MenuElement[] pathArray = new MenuElement[path.size()];
-    path.toArray(pathArray);
-    return pathArray;
-  }
-
-  /**
-   * Returns preferred size for the given menu item.
-   *
-   * @param c
-   *          menu item for which to get preferred size
-   * @param checkIcon
-   *          check icon displayed in the given menu item
-   * @param arrowIcon
-   *          arrow icon displayed in the given menu item
-   * @param defaultTextIconGap
-   *          space between icon and text in the given menuItem
-   * @return $Dimension$ preferred size for the given menu item
-   */
-  protected Dimension getPreferredMenuItemSize(JComponent c, Icon checkIcon,
-                                               Icon arrowIcon,
-                                               int defaultTextIconGap)
-  {
-    JMenuItem m = (JMenuItem) c;
-    String accelText = getAcceleratorString(m);
-
-    // Layout the menu item. The result gets stored in the rectangle
-    // fields of this class.
-    resetRectangles(null);
-    layoutMenuItem(m, accelText);
-
-    // The union of the text and icon areas is the label area.
-    cachedRect.setBounds(textRect);
-    Rectangle pref = SwingUtilities.computeUnion(iconRect.x, iconRect.y,
-                                                 iconRect.width,
-                                                 iconRect.height,
-                                                 cachedRect);
-
-    // Find the widest menu item text and accelerator and store it in
-    // client properties of the parent, so that we can align the accelerators
-    // properly. Of course, we only need can do this, if the parent is
-    // a JComponent and this menu item is not a toplevel menu.
-    Container parent = m.getParent();
-    if (parent != null && parent instanceof JComponent
-        && !(m instanceof JMenu && ((JMenu) m).isTopLevelMenu()))
-      {
-        JComponent p = (JComponent) parent;
-
-        // The widest text so far.
-        Integer maxTextWidth = (Integer) p.getClientProperty("maxTextWidth");
-        int maxTextValue = maxTextWidth == null ? 0 : maxTextWidth.intValue();
-        if (pref.width < maxTextValue)
-          pref.width = maxTextValue;
-        else
-          p.putClientProperty("maxTextWidth", new Integer(pref.width));
-
-        // The widest accelerator so far.
-        Integer maxAccelWidth = (Integer) p.getClientProperty("maxAccelWidth");
-        int maxAccelValue = maxAccelWidth == null ? 0
-                                                  : maxAccelWidth.intValue();
-        if (accelRect.width > maxAccelValue)
-          {
-            maxAccelValue = accelRect.width;
-            p.putClientProperty("maxAccelWidth", new Integer(accelRect.width));
-          }
-        pref.width += maxAccelValue;
-        pref.width += defaultTextIconGap;
-      }
-
-    // Add arrow and check size if appropriate.
-    if (! (m instanceof JMenu && ((JMenu) m).isTopLevelMenu()))
-      {
-        pref.width += checkIconRect.width;
-        pref.width += defaultTextIconGap;
-        pref.width += arrowIconRect.width;
-        pref.width += defaultTextIconGap;
-      }
-
-    // Add a gap ~2 times as wide as the defaultTextIconGap.
-    pref.width += 2 * defaultTextIconGap;
-
-    // Respect the insets of the menu item.
-    Insets i = m.getInsets();
-    pref.width += i.left + i.right;
-    pref.height += i.top + i.bottom;
-
-    // Return a copy, so that nobody messes with our textRect.
-    return pref.getSize();
-  }
-
-  /**
-   * Returns preferred size of the given component
-   *
-   * @param c
-   *          component for which to return preferred size
-   * @return $Dimension$ preferred size for the given component
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    return getPreferredMenuItemSize(c, checkIcon, arrowIcon,
-                                    defaultTextIconGap);
-  }
-
-  /**
-   * Returns the prefix for entries in the {@link UIDefaults} table.
-   *
-   * @return "MenuItem"
-   */
-  protected String getPropertyPrefix()
-  {
-    return "MenuItem";
-  }
-
-  /**
-   * This method installs the components for this {@link JMenuItem}.
-   *
-   * @param menuItem
-   *          The {@link JMenuItem} to install components for.
-   */
-  protected void installComponents(JMenuItem menuItem)
-  {
-    // FIXME: Need to implement
-  }
-
-  /**
-   * This method installs the defaults that are defined in the Basic look and
-   * feel for this {@link JMenuItem}.
-   */
-  protected void installDefaults()
-  {
-    String prefix = getPropertyPrefix();
-    LookAndFeel.installBorder(menuItem, prefix + ".border");
-    LookAndFeel.installColorsAndFont(menuItem, prefix + ".background",
-                                     prefix + ".foreground", prefix + ".font");
-    menuItem.setMargin(UIManager.getInsets(prefix + ".margin"));
-    acceleratorFont = UIManager.getFont(prefix + ".acceleratorFont");
-    acceleratorForeground = UIManager.getColor(prefix
-        + ".acceleratorForeground");
-    acceleratorSelectionForeground = UIManager.getColor(prefix
-        + ".acceleratorSelectionForeground");
-    selectionBackground = UIManager.getColor(prefix + ".selectionBackground");
-    selectionForeground = UIManager.getColor(prefix + ".selectionForeground");
-    acceleratorDelimiter = UIManager.getString(prefix + ".acceleratorDelimiter");
-    checkIcon = UIManager.getIcon(prefix + ".checkIcon");
-
-    menuItem.setHorizontalTextPosition(SwingConstants.TRAILING);
-    menuItem.setHorizontalAlignment(SwingConstants.LEADING);
-  }
-
-  /**
-   * This method installs the keyboard actions for this {@link JMenuItem}.
-   */
-  protected void installKeyboardActions()
-  {
-    InputMap focusedWindowMap = SwingUtilities.getUIInputMap(menuItem,
-        JComponent.WHEN_IN_FOCUSED_WINDOW);
-    if (focusedWindowMap == null)
-      focusedWindowMap = new ComponentInputMapUIResource(menuItem);
-    KeyStroke accelerator = menuItem.getAccelerator();
-    if (accelerator != null)
-      focusedWindowMap.put(accelerator, "doClick");
-    SwingUtilities.replaceUIInputMap(menuItem,
-        JComponent.WHEN_IN_FOCUSED_WINDOW, focusedWindowMap);
-
-    ActionMap UIActionMap = SwingUtilities.getUIActionMap(menuItem);
-    if (UIActionMap == null)
-      UIActionMap = new ActionMapUIResource();
-    UIActionMap.put("doClick", new ClickAction());
-    SwingUtilities.replaceUIActionMap(menuItem, UIActionMap);
-  }
-
-  /**
-   * This method installs the listeners for the {@link JMenuItem}.
-   */
-  protected void installListeners()
-  {
-    menuItem.addMouseListener(mouseInputListener);
-    menuItem.addMouseMotionListener(mouseInputListener);
-    menuItem.addMenuDragMouseListener(menuDragMouseListener);
-    menuItem.addMenuKeyListener(menuKeyListener);
-    menuItem.addItemListener(itemListener);
-    menuItem.addPropertyChangeListener(propertyChangeListener);
-    // Fire synthetic property change event to let the listener update
-    // the TextLayout cache.
-    propertyChangeListener.propertyChange(new PropertyChangeEvent(menuItem,
-                                                                  "font", null,
-                                                          menuItem.getFont()));
-  }
-
-  /**
-   * Installs and initializes all fields for this UI delegate. Any properties of
-   * the UI that need to be initialized and/or set to defaults will be done now.
-   * It will also install any listeners necessary.
-   *
-   * @param c
-   *          The {@link JComponent} that is having this UI installed.
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    menuItem = (JMenuItem) c;
-    installDefaults();
-    installComponents(menuItem);
-    installListeners();
-    installKeyboardActions();
-  }
-
-  /**
-   * Paints given menu item using specified graphics context
-   *
-   * @param g
-   *          The graphics context used to paint this menu item
-   * @param c
-   *          Menu Item to paint
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    paintMenuItem(g, c, checkIcon, arrowIcon, selectionBackground,
-                  c.getForeground(), defaultTextIconGap);
-  }
-
-  /**
-   * Paints background of the menu item
-   *
-   * @param g
-   *          The graphics context used to paint this menu item
-   * @param menuItem
-   *          menu item to paint
-   * @param bgColor
-   *          Background color to use when painting menu item
-   */
-  protected void paintBackground(Graphics g, JMenuItem menuItem, Color bgColor)
-  {
-    // Menu item is considered to be highlighted when it is selected.
-    // But we don't want to paint the background of JCheckBoxMenuItems
-    ButtonModel mod = menuItem.getModel();
-    Color saved = g.getColor();
-    if (mod.isArmed() || ((menuItem instanceof JMenu) && mod.isSelected()))
-      {
-        g.setColor(bgColor);
-        g.fillRect(0, 0, menuItem.getWidth(), menuItem.getHeight());
-      }
-    else if (menuItem.isOpaque())
-      {
-        g.setColor(menuItem.getBackground());
-        g.fillRect(0, 0, menuItem.getWidth(), menuItem.getHeight());
-      }
-    g.setColor(saved);
-  }
-
-  /**
-   * Paints specified menu item
-   *
-   * @param g
-   *          The graphics context used to paint this menu item
-   * @param c
-   *          menu item to paint
-   * @param checkIcon
-   *          check icon to use when painting menu item
-   * @param arrowIcon
-   *          arrow icon to use when painting menu item
-   * @param background
-   *          Background color of the menu item
-   * @param foreground
-   *          Foreground color of the menu item
-   * @param defaultTextIconGap
-   *          space to use between icon and text when painting menu item
-   */
-  protected void paintMenuItem(Graphics g, JComponent c, Icon checkIcon,
-                               Icon arrowIcon, Color background,
-                               Color foreground, int defaultTextIconGap)
-  {
-    JMenuItem m = (JMenuItem) c;
-
-    // Fetch fonts.
-    Font oldFont = g.getFont();
-    Font font = c.getFont();
-    g.setFont(font);
-    FontMetrics accelFm = m.getFontMetrics(acceleratorFont);
-
-    // Create accelerator string.
-    String accelText = getAcceleratorString(m);
-
-    // Layout menu item. The result gets stored in the rectangle fields
-    // of this class.
-    resetRectangles(m);
-
-    layoutMenuItem(m, accelText);
-
-    // Paint the background.
-    paintBackground(g, m, background);
-
-    Color oldColor = g.getColor();
-
-    // Paint the check icon.
-    if (checkIcon != null)
-      {
-        checkIcon.paintIcon(m, g, checkIconRect.x, checkIconRect.y);
-      }
-
-    // Paint the icon.
-    ButtonModel model = m.getModel();
-    if (m.getIcon() != null)
-      {
-        // Determine icon depending on the menu item
-        // state (normal/disabled/pressed).
-        Icon icon;
-        if (! m.isEnabled())
-          {
-            icon = m.getDisabledIcon();
-          }
-        else if (model.isPressed() && model.isArmed())
-          {
-            icon = m.getPressedIcon();
-            if (icon == null)
-              {
-                icon = m.getIcon();
-              }
-          }
-        else
-          {
-            icon = m.getIcon();
-          }
-
-        if (icon != null)
-          {
-            icon.paintIcon(m, g, iconRect.x, iconRect.y);
-          }
-      }
-
-    // Paint the text.
-    String text = m.getText();
-    if (text != null)
-      {
-        // Handle HTML.
-        View html = (View) m.getClientProperty(BasicHTML.propertyKey);
-        if (html != null)
-          {
-            html.paint(g, textRect);
-          }
-        else
-          {
-            paintText(g, m, textRect, text);
-          }
-      }
-
-    // Paint accelerator text.
-    if (! accelText.equals(""))
-      {
-        // Align the accelerator text. In getPreferredMenuItemSize() we
-        // store a client property 'maxAccelWidth' in the parent which holds
-        // the maximum accelerator width for the children of this parent.
-        // We use this here to align the accelerators properly.
-        int accelOffset = 0;
-        Container parent = m.getParent();
-        if (parent != null && parent instanceof JComponent)
-          {
-            JComponent p = (JComponent) parent;
-            Integer maxAccelWidth =
-              (Integer) p.getClientProperty("maxAccelWidth");
-            int maxAccelValue = maxAccelWidth == null ? 0
-                                                    : maxAccelWidth.intValue();
-            accelOffset = maxAccelValue - accelRect.width;
-          }
-
-        g.setFont(acceleratorFont);
-        if (! m.isEnabled())
-          {
-            // Paint accelerator disabled.
-            g.setColor(disabledForeground);
-          }
-        else
-          {
-            if (m.isArmed() || (m instanceof JMenu && m.isSelected()))
-              g.setColor(acceleratorSelectionForeground);
-            else
-              g.setColor(acceleratorForeground);
-          }
-        g.drawString(accelText, accelRect.x - accelOffset,
-                     accelRect.y + accelFm.getAscent());
-      }
-
-    // Paint arrow.
-    if (arrowIcon != null
-        && ! (m instanceof JMenu && ((JMenu) m).isTopLevelMenu()))
-      {
-        arrowIcon.paintIcon(m, g, arrowIconRect.x, arrowIconRect.y);
-      }
-
-    g.setFont(oldFont);
-    g.setColor(oldColor);
-
-  }
-
-  /**
-   * Paints label for the given menu item
-   *
-   * @param g
-   *          The graphics context used to paint this menu item
-   * @param menuItem
-   *          menu item for which to draw its label
-   * @param textRect
-   *          rectangle specifiying position of the text relative to the given
-   *          menu item
-   * @param text
-   *          label of the menu item
-   */
-  protected void paintText(Graphics g, JMenuItem menuItem, Rectangle textRect,
-                           String text)
-  {
-    Font f = menuItem.getFont();
-    g.setFont(f);
-    FontMetrics fm = g.getFontMetrics(f);
-
-    if (text != null && !text.equals(""))
-      {
-        if (menuItem.isEnabled())
-          {
-            // Menu item is considered to be highlighted when it is selected.
-            // But not if it's a JCheckBoxMenuItem
-            ButtonModel mod = menuItem.getModel();
-            if ((menuItem.isSelected() && checkIcon == null)
-                || (mod != null && mod.isArmed())
-                && (menuItem.getParent() instanceof MenuElement))
-              g.setColor(selectionForeground);
-            else
-              g.setColor(menuItem.getForeground());
-          }
-        else
-          // FIXME: should fix this to use 'disabledForeground', but its
-          // default value in BasicLookAndFeel is null.
-
-          // FIXME: should there be different foreground colours for selected
-          // or deselected, when disabled?
-          g.setColor(Color.gray);
-
-        int mnemonicIndex = menuItem.getDisplayedMnemonicIndex();
-
-        if (mnemonicIndex != -1)
-          BasicGraphicsUtils.drawStringUnderlineCharAt(menuItem, g, text,
-                                                       mnemonicIndex,
-                                                       textRect.x,
-                                                       textRect.y
-                                                           + fm.getAscent());
-        else
-          BasicGraphicsUtils.drawString(menuItem, g, text, 0, textRect.x,
-                                        textRect.y + fm.getAscent());
-      }
-  }
-
-  /**
-   * This method uninstalls the components for this {@link JMenuItem}.
-   *
-   * @param menuItem
-   *          The {@link JMenuItem} to uninstall components for.
-   */
-  protected void uninstallComponents(JMenuItem menuItem)
-  {
-    // FIXME: need to implement
-  }
-
-  /**
-   * This method uninstalls the defaults and sets any objects created during
-   * install to null
-   */
-  protected void uninstallDefaults()
-  {
-    menuItem.setForeground(null);
-    menuItem.setBackground(null);
-    menuItem.setBorder(null);
-    menuItem.setMargin(null);
-    menuItem.setBackground(null);
-    menuItem.setBorder(null);
-    menuItem.setFont(null);
-    menuItem.setForeground(null);
-    menuItem.setMargin(null);
-    acceleratorFont = null;
-    acceleratorForeground = null;
-    acceleratorSelectionForeground = null;
-    arrowIcon = null;
-    selectionBackground = null;
-    selectionForeground = null;
-    acceleratorDelimiter = null;
-  }
-
-  /**
-   * Uninstalls any keyboard actions.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    SwingUtilities.replaceUIInputMap(menuItem,
-                                     JComponent.WHEN_IN_FOCUSED_WINDOW, null);
-  }
-
-  /**
-   * Unregisters all the listeners that this UI delegate was using.
-   */
-  protected void uninstallListeners()
-  {
-    menuItem.removeMouseListener(mouseInputListener);
-    menuItem.removeMenuDragMouseListener(menuDragMouseListener);
-    menuItem.removeMenuKeyListener(menuKeyListener);
-    menuItem.removeItemListener(itemListener);
-    menuItem.removePropertyChangeListener(propertyChangeListener);
-  }
-
-  /**
-   * Performs the opposite of installUI. Any properties or resources that need
-   * to be cleaned up will be done now. It will also uninstall any listeners it
-   * has. In addition, any properties of this UI will be nulled.
-   *
-   * @param c
-   *          The {@link JComponent} that is having this UI uninstalled.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    uninstallListeners();
-    uninstallDefaults();
-    uninstallComponents(menuItem);
-    c.putClientProperty(BasicGraphicsUtils.CACHED_TEXT_LAYOUT, null);
-    menuItem = null;
-  }
-
-  /**
-   * This method calls paint.
-   *
-   * @param g
-   *          The graphics context used to paint this menu item
-   * @param c
-   *          The menu item to paint
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    paint(g, c);
-  }
-
-  /**
-   * This class handles mouse events occuring inside the menu item. Most of the
-   * events are forwarded for processing to MenuSelectionManager of the current
-   * menu hierarchy.
-   */
-  protected class MouseInputHandler implements MouseInputListener
-  {
-    /**
-     * Creates a new MouseInputHandler object.
-     */
-    protected MouseInputHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method is called when mouse is clicked on the menu item. It forwards
-     * this event to MenuSelectionManager.
-     *
-     * @param e
-     *          A {@link MouseEvent}.
-     */
-    public void mouseClicked(MouseEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      manager.processMouseEvent(e);
-    }
-
-    /**
-     * This method is called when mouse is dragged inside the menu item. It
-     * forwards this event to MenuSelectionManager.
-     *
-     * @param e
-     *          A {@link MouseEvent}.
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      manager.processMouseEvent(e);
-    }
-
-    /**
-     * This method is called when mouse enters menu item. When this happens menu
-     * item is considered to be selected and selection path in
-     * MenuSelectionManager is set. This event is also forwarded to
-     * MenuSelection Manager for further processing.
-     *
-     * @param e
-     *          A {@link MouseEvent}.
-     */
-    public void mouseEntered(MouseEvent e)
-    {
-      Component source = (Component) e.getSource();
-      if (source.getParent() instanceof MenuElement)
-        {
-          MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-          manager.setSelectedPath(getPath());
-          manager.processMouseEvent(e);
-        }
-    }
-
-    /**
-     * This method is called when mouse exits menu item. The event is forwarded
-     * to MenuSelectionManager for processing.
-     *
-     * @param e
-     *          A {@link MouseEvent}.
-     */
-    public void mouseExited(MouseEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      manager.processMouseEvent(e);
-    }
-
-    /**
-     * This method is called when mouse is inside the menu item. This event is
-     * forwarder to MenuSelectionManager for further processing.
-     *
-     * @param e
-     *          A {@link MouseEvent}.
-     */
-    public void mouseMoved(MouseEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      manager.processMouseEvent(e);
-    }
-
-    /**
-     * This method is called when mouse is pressed. This event is forwarded to
-     * MenuSelectionManager for further processing.
-     *
-     * @param e
-     *          A {@link MouseEvent}.
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      manager.processMouseEvent(e);
-    }
-
-    /**
-     * This method is called when mouse is released. If the mouse is released
-     * inside this menuItem, then this menu item is considered to be chosen and
-     * the menu hierarchy should be closed.
-     *
-     * @param e
-     *          A {@link MouseEvent}.
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      int x = e.getX();
-      int y = e.getY();
-      if (x > 0 && x < menuItem.getWidth() && y > 0
-          && y < menuItem.getHeight())
-        {
-          doClick(manager);
-        }
-      else
-        manager.processMouseEvent(e);
-    }
-  }
-
-  /**
-   * This class handles mouse dragged events.
-   */
-  private class MenuDragMouseHandler implements MenuDragMouseListener
-  {
-    /**
-     * Tbis method is invoked when mouse is dragged over the menu item.
-     *
-     * @param e
-     *          The MenuDragMouseEvent
-     */
-    public void menuDragMouseDragged(MenuDragMouseEvent e)
-    {
-      MenuSelectionManager manager = e.getMenuSelectionManager();
-      manager.setSelectedPath(e.getPath());
-    }
-
-    /**
-     * Tbis method is invoked when mouse enters the menu item while it is being
-     * dragged.
-     *
-     * @param e
-     *          The MenuDragMouseEvent
-     */
-    public void menuDragMouseEntered(MenuDragMouseEvent e)
-    {
-      MenuSelectionManager manager = e.getMenuSelectionManager();
-      manager.setSelectedPath(e.getPath());
-    }
-
-    /**
-     * Tbis method is invoked when mouse exits the menu item while it is being
-     * dragged
-     *
-     * @param e the MenuDragMouseEvent
-     */
-    public void menuDragMouseExited(MenuDragMouseEvent e)
-    {
-      // Nothing to do here yet.
-    }
-
-    /**
-     * Tbis method is invoked when mouse was dragged and released inside the
-     * menu item.
-     *
-     * @param e
-     *          The MenuDragMouseEvent
-     */
-    public void menuDragMouseReleased(MenuDragMouseEvent e)
-    {
-      MenuSelectionManager manager = e.getMenuSelectionManager();
-      int x = e.getX();
-      int y = e.getY();
-      if (x >= 0 && x < menuItem.getWidth() && y >= 0
-          && y < menuItem.getHeight())
-        doClick(manager);
-      else
-        manager.clearSelectedPath();
-    }
-  }
-
-  /**
-   * This class handles key events occuring when menu item is visible on the
-   * screen.
-   */
-  private class MenuKeyHandler implements MenuKeyListener
-  {
-    /**
-     * This method is invoked when key has been pressed
-     *
-     * @param e
-     *          A {@link MenuKeyEvent}.
-     */
-    public void menuKeyPressed(MenuKeyEvent e)
-    {
-      // TODO: What should be done here, if anything?
-    }
-
-    /**
-     * This method is invoked when key has been pressed
-     *
-     * @param e
-     *          A {@link MenuKeyEvent}.
-     */
-    public void menuKeyReleased(MenuKeyEvent e)
-    {
-      // TODO: What should be done here, if anything?
-    }
-
-    /**
-     * This method is invoked when key has been typed It handles the mnemonic
-     * key for the menu item.
-     *
-     * @param e
-     *          A {@link MenuKeyEvent}.
-     */
-    public void menuKeyTyped(MenuKeyEvent e)
-    {
-      // TODO: What should be done here, if anything?
-    }
-  }
-
-  /**
-   * Helper class that listens for item changes to the properties of the {@link
-   * JMenuItem}.
-   */
-  private class ItemHandler implements ItemListener
-  {
-    /**
-     * This method is called when one of the menu item changes.
-     *
-     * @param evt A {@link ItemEvent}.
-     */
-    public void itemStateChanged(ItemEvent evt)
-    {
-      boolean state = false;
-      if (menuItem instanceof JCheckBoxMenuItem)
-        {
-          if (evt.getStateChange() == ItemEvent.SELECTED)
-            state = true;
-          ((JCheckBoxMenuItem) menuItem).setState(state);
-        }
-      menuItem.revalidate();
-      menuItem.repaint();
-    }
-  }
-
-  /**
-   * A helper method to create the accelerator string from the menu item's
-   * accelerator property. The returned string is empty if there is
-   * no accelerator defined.
-   *
-   * @param m the menu item
-   *
-   * @return the accelerator string, not null
-   */
-  private String getAcceleratorString(JMenuItem m)
-  {
-    // Create accelerator string.
-    KeyStroke accel = m.getAccelerator();
-    String accelText = "";
-    if (accel != null)
-      {
-        int mods = accel.getModifiers();
-        if (mods > 0)
-          {
-            accelText = KeyEvent.getKeyModifiersText(mods);
-            accelText += acceleratorDelimiter;
-          }
-        int keycode = accel.getKeyCode();
-        if (keycode != 0)
-          accelText += KeyEvent.getKeyText(keycode);
-        else
-          accelText += accel.getKeyChar();
-      }
-    return accelText;
-  }
-
-  /**
-   * Resets the cached layout rectangles. If <code>i</code> is not null, then
-   * the view rectangle is set to the inner area of the component, otherwise
-   * it is set to (0, 0, Short.MAX_VALUE, Short.MAX_VALUE), this is needed
-   * for layouting.
-   *
-   * @param i the component for which to initialize the rectangles
-   */
-  private void resetRectangles(JMenuItem i)
-  {
-    // Reset rectangles.
-    iconRect.setBounds(0, 0, 0, 0);
-    textRect.setBounds(0, 0, 0, 0);
-    accelRect.setBounds(0, 0, 0, 0);
-    checkIconRect.setBounds(0, 0, 0, 0);
-    arrowIconRect.setBounds(0, 0, 0, 0);
-    if (i == null)
-      viewRect.setBounds(0, 0, Short.MAX_VALUE, Short.MAX_VALUE);
-    else
-      {
-        Insets insets = i.getInsets();
-        viewRect.setBounds(insets.left, insets.top,
-                           i.getWidth() - insets.left - insets.right,
-                           i.getHeight() - insets.top - insets.bottom);
-      }
-  }
-
-  /**
-   * A helper method that lays out the menu item. The layout is stored
-   * in the fields of this class.
-   *
-   * @param m the menu item to layout
-   * @param accelText the accelerator text
-   */
-  private void layoutMenuItem(JMenuItem m, String accelText)
-  {
-    // Fetch the fonts.
-    Font font = m.getFont();
-    FontMetrics fm = m.getFontMetrics(font);
-    FontMetrics accelFm = m.getFontMetrics(acceleratorFont);
-
-    String text = m.getText();
-    SwingUtilities.layoutCompoundLabel(m, fm, text, m.getIcon(),
-                                       m.getVerticalAlignment(),
-                                       m.getHorizontalAlignment(),
-                                       m.getVerticalTextPosition(),
-                                       m.getHorizontalTextPosition(),
-                                       viewRect, iconRect, textRect,
-                                       defaultTextIconGap);
-
-    // Initialize accelerator width and height.
-    if (! accelText.equals(""))
-      {
-        accelRect.width = accelFm.stringWidth(accelText);
-        accelRect.height = accelFm.getHeight();
-      }
-
-    // Initialize check and arrow icon width and height.
-    if (! (m instanceof JMenu && ((JMenu) m).isTopLevelMenu()))
-      {
-        if (checkIcon != null)
-          {
-            checkIconRect.width = checkIcon.getIconWidth();
-            checkIconRect.height = checkIcon.getIconHeight();
-          }
-        if (arrowIcon != null)
-          {
-            arrowIconRect.width = arrowIcon.getIconWidth();
-            arrowIconRect.height = arrowIcon.getIconHeight();
-          }
-      }
-
-    // The union of the icon and text of the menu item is the 'label area'.
-    cachedRect.setBounds(textRect);
-    Rectangle labelRect = SwingUtilities.computeUnion(iconRect.x,
-                                                      iconRect.y,
-                                                      iconRect.width,
-                                                      iconRect.height,
-                                                      cachedRect);
-    textRect.x += defaultTextIconGap;
-    iconRect.x += defaultTextIconGap;
-
-    // Layout accelerator rect.
-    accelRect.x = viewRect.x + viewRect.width - arrowIconRect.width
-      - defaultTextIconGap - accelRect.width;
-    // Layout check and arrow icons only when not in toplevel menu.
-    if (! (m instanceof JMenu && ((JMenu) m).isTopLevelMenu()))
-      {
-        checkIconRect.x = viewRect.x + defaultTextIconGap;
-        textRect.x += defaultTextIconGap + checkIconRect.width;
-        iconRect.x += defaultTextIconGap + checkIconRect.width;
-        arrowIconRect.x = viewRect.x + viewRect.width - defaultTextIconGap
-          - arrowIconRect.width;
-      }
-
-    // Align the accelerator text and all the icons vertically centered to
-    // the menu text.
-    accelRect.y = labelRect.y + (labelRect.height / 2)
-      - (accelRect.height / 2);
-    if (! (m instanceof JMenu && ((JMenu) m).isTopLevelMenu()))
-      {
-        arrowIconRect.y = labelRect.y + (labelRect.height / 2)
-          - (arrowIconRect.height / 2);
-        checkIconRect.y = labelRect.y + (labelRect.height / 2)
-          - (checkIconRect.height / 2);
-      }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicMenuUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicMenuUI.java
deleted file mode 100644
index 4897ee4..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicMenuUI.java
+++ /dev/null
@@ -1,678 +0,0 @@
-/* BasicMenuUI.java
-   Copyright (C) 2002, 2004, 2005  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import gnu.classpath.NotImplementedException;
-
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Point;
-import java.awt.event.ActionEvent;
-import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.AbstractAction;
-import javax.swing.JComponent;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.JPopupMenu;
-import javax.swing.LookAndFeel;
-import javax.swing.MenuElement;
-import javax.swing.MenuSelectionManager;
-import javax.swing.Timer;
-import javax.swing.UIDefaults;
-import javax.swing.UIManager;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.event.MenuDragMouseEvent;
-import javax.swing.event.MenuDragMouseListener;
-import javax.swing.event.MenuEvent;
-import javax.swing.event.MenuKeyEvent;
-import javax.swing.event.MenuKeyListener;
-import javax.swing.event.MenuListener;
-import javax.swing.event.MouseInputListener;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * UI Delegate for JMenu
- */
-public class BasicMenuUI extends BasicMenuItemUI
-{
-  /**
-   * Selects a menu. This is used to delay menu selection.
-   */
-  class SelectMenuAction
-    extends AbstractAction
-  {
-    /**
-     * Performs the action.
-     */
-    public void actionPerformed(ActionEvent event)
-    {
-      JMenu menu = (JMenu) menuItem;
-      MenuSelectionManager defaultManager =
-        MenuSelectionManager.defaultManager();
-      MenuElement path[] = defaultManager.getSelectedPath();
-      if(path.length > 0 && path[path.length - 1] == menu)
-        {
-          MenuElement newPath[] = new MenuElement[path.length + 1];
-          System.arraycopy(path, 0, newPath, 0, path.length);
-          newPath[path.length] = menu.getPopupMenu();
-          defaultManager.setSelectedPath(newPath);
-      }
-    }
-
-  }
-
-  protected ChangeListener changeListener;
-
-  /* MenuListener listens to MenuEvents fired by JMenu */
-  protected MenuListener menuListener;
-
-  /* PropertyChangeListner that listens to propertyChangeEvents occuring in JMenu*/
-  protected PropertyChangeListener propertyChangeListener;
-
-  /**
-   * Creates a new BasicMenuUI object.
-   */
-  public BasicMenuUI()
-  {
-    mouseInputListener = createMouseInputListener((JMenu) menuItem);
-    menuListener = createMenuListener((JMenu) menuItem);
-    propertyChangeListener = createPropertyChangeListener((JMenu) menuItem);
-  }
-
-  /**
-   * This method creates a new ChangeListener.
-   *
-   * @return A new ChangeListener.
-   */
-  protected ChangeListener createChangeListener(JComponent c)
-  {
-    return new ChangeHandler((JMenu) c, this);
-  }
-
-  /**
-   * This method creates new MenuDragMouseListener to listen to mouse dragged events
-   * occuring in the Menu
-   *
-   * @param c the menu to listen to
-   *
-   * @return The MenuDrageMouseListener
-   */
-  protected MenuDragMouseListener createMenuDragMouseListener(JComponent c)
-  {
-    return new MenuDragMouseHandler();
-  }
-
-  /**
-   * This method creates new MenuDragKeyListener to listen to key events
-   *
-   * @param c the menu to listen to
-   *
-   * @return The MenuKeyListener
-   */
-  protected MenuKeyListener createMenuKeyListener(JComponent c)
-  {
-    return new MenuKeyHandler();
-  }
-
-  /**
-   * This method creates new MenuListener to listen to menu events
-   * occuring in the Menu
-   *
-   * @param c the menu to listen to
-   *
-   * @return The MenuListener
-   */
-  protected MenuListener createMenuListener(JComponent c)
-  {
-    return new MenuHandler();
-  }
-
-  /**
-   * This method creates new MouseInputListener to listen to mouse input events
-   * occuring in the Menu
-   *
-   * @param c the menu to listen to
-   *
-   * @return The MouseInputListener
-   */
-  protected MouseInputListener createMouseInputListener(JComponent c)
-  {
-    return new MouseInputHandler();
-  }
-
-  /**
-   * This method creates newPropertyChangeListener to listen to property changes
-   * occuring in the Menu
-   *
-   * @param c the menu to listen to
-   *
-   * @return The PropertyChangeListener
-   */
-  protected PropertyChangeListener createPropertyChangeListener(JComponent c)
-  {
-    return new PropertyChangeHandler();
-  }
-
-  /**
-   * This method creates a new BasicMenuUI.
-   *
-   * @param c The JComponent to create a UI for.
-   *
-   * @return A new BasicMenuUI.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicMenuUI();
-  }
-
-  /**
-   * Get the component's maximum size.
-   *
-   * @param c The JComponent for which to get maximum size
-   *
-   * @return The maximum size of the component
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return c.getPreferredSize();
-  }
-
-  /**
-   * Returns the prefix for entries in the {@link UIDefaults} table.
-   *
-   * @return "Menu"
-   */
-  protected String getPropertyPrefix()
-  {
-    return "Menu";
-  }
-
-  /**
-   * Initializes any default properties that this UI has from the defaults for
-   * the Basic look and feel.
-   */
-  protected void installDefaults()
-  {
-
-    LookAndFeel.installBorder(menuItem, "Menu.border");
-    LookAndFeel.installColorsAndFont(menuItem, "Menu.background",
-                                     "Menu.foreground", "Menu.font");
-    menuItem.setMargin(UIManager.getInsets("Menu.margin"));
-    acceleratorFont = UIManager.getFont("Menu.acceleratorFont");
-    acceleratorForeground = UIManager.getColor("Menu.acceleratorForeground");
-    acceleratorSelectionForeground = UIManager.getColor("Menu.acceleratorSelectionForeground");
-    selectionBackground = UIManager.getColor("Menu.selectionBackground");
-    selectionForeground = UIManager.getColor("Menu.selectionForeground");
-    arrowIcon = UIManager.getIcon("Menu.arrowIcon");
-    oldBorderPainted = UIManager.getBoolean("Menu.borderPainted");
-    ((JMenu) menuItem).setDelay(200);
-  }
-
-  /**
-   * Installs any keyboard actions. The list of keys that need to be bound are
-   * listed in Basic look and feel's defaults.
-   *
-   */
-  protected void installKeyboardActions()
-  {
-    super.installKeyboardActions();
-  }
-
-  /**
-   * Creates and registers all the listeners for this UI delegate.
-   */
-  protected void installListeners()
-  {
-    super.installListeners();
-    ((JMenu) menuItem).addMenuListener(menuListener);
-  }
-
-  protected void setupPostTimer(JMenu menu)
-  {
-    Timer timer = new Timer(menu.getDelay(), new SelectMenuAction());
-    timer.setRepeats(false);
-    timer.start();
-  }
-
-  /**
-   * This method uninstalls the defaults and sets any objects created during
-   * install to null
-   */
-  protected void uninstallDefaults()
-  {
-    menuItem.setBackground(null);
-    menuItem.setBorder(null);
-    menuItem.setFont(null);
-    menuItem.setForeground(null);
-    menuItem.setMargin(null);
-    acceleratorFont = null;
-    acceleratorForeground = null;
-    acceleratorSelectionForeground = null;
-    selectionBackground = null;
-    selectionForeground = null;
-    arrowIcon = null;
-  }
-
-  /**
-   * Uninstalls any keyboard actions. The list of keys used  are listed in
-   * Basic look and feel's defaults.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    super.installKeyboardActions();
-  }
-
-  /**
-   * Unregisters all the listeners that this UI delegate was using. In
-   * addition, it will also null any listeners that it was using.
-   */
-  protected void uninstallListeners()
-  {
-    super.uninstallListeners();
-    ((JMenu) menuItem).removeMenuListener(menuListener);
-  }
-
-  /**
-   * This class is used by menus to handle mouse events occuring in the
-   * menu.
-   */
-  protected class MouseInputHandler implements MouseInputListener
-  {
-    public void mouseClicked(MouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    public void mouseDragged(MouseEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      manager.processMouseEvent(e);
-    }
-
-    private boolean popupVisible()
-    {
-      JMenuBar mb = (JMenuBar) ((JMenu) menuItem).getParent();
-      // check if mb.isSelected because if no menus are selected
-      // we don't have to look through the list for popup menus
-      if (!mb.isSelected())
-        return false;
-      for (int i = 0; i < mb.getMenuCount(); i++)
-      {
-         JMenu m = mb.getMenu(i);
-        if (m != null && m.isPopupMenuVisible())
-          return true;
-      }
-      return false;
-    }
-
-    public void mouseEntered(MouseEvent e)
-    {
-      JMenu menu = (JMenu) menuItem;
-      if (menu.isEnabled())
-        {
-          MenuSelectionManager manager =
-            MenuSelectionManager.defaultManager();
-          MenuElement[] selectedPath = manager.getSelectedPath();
-          if (! menu.isTopLevelMenu())
-            {
-              // Open the menu immediately or delayed, depending on the
-              // delay value.
-              if(! (selectedPath.length > 0
-                  && selectedPath[selectedPath.length - 1] == menu.getPopupMenu()))
-                {
-                  if(menu.getDelay() == 0)
-                    {
-                      MenuElement[] path = getPath();
-                      MenuElement[] newPath = new MenuElement[path.length + 1];
-                      System.arraycopy(path, 0, newPath, 0, path.length);
-                      newPath[path.length] = menu.getPopupMenu();
-                      manager.setSelectedPath(newPath);
-                    }
-                  else
-                    {
-                      manager.setSelectedPath(getPath());
-                      setupPostTimer(menu);
-                    }
-                }
-            }
-          else
-            {
-              if(selectedPath.length > 0
-                  && selectedPath[0] == menu.getParent())
-                {
-                  MenuElement[] newPath = new MenuElement[3];
-                  newPath[0] = (MenuElement) menu.getParent();
-                  newPath[1] = menu;
-                  newPath[2] = menu.getPopupMenu();
-                  manager.setSelectedPath(newPath);
-                }
-            }
-        }
-    }
-
-    public void mouseExited(MouseEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      manager.processMouseEvent(e);
-    }
-
-    public void mouseMoved(MouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    public void mousePressed(MouseEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      JMenu menu = (JMenu) menuItem;
-      if (menu.isEnabled())
-        {
-          // Open up the menu immediately if it's a toplevel menu.
-          // But not yet the popup, which might be opened delayed, see below.
-          if (menu.isTopLevelMenu())
-            {
-              if (menu.isSelected())
-                manager.clearSelectedPath();
-              else
-                {
-                  Container cnt = menu.getParent();
-                  if (cnt != null && cnt instanceof JMenuBar)
-                    {
-                      MenuElement[] me = new MenuElement[2];
-                      me[0] = (MenuElement) cnt;
-                      me[1] = menu;
-                      manager.setSelectedPath(me);
-                   }
-                }
-            }
-
-          // Open the menu's popup. Either do that immediately if delay == 0,
-          // or delayed when delay > 0.
-          MenuElement[] selectedPath = manager.getSelectedPath();
-          if (selectedPath.length > 0
-              && selectedPath[selectedPath.length - 1] != menu.getPopupMenu())
-            {
-              if(menu.isTopLevelMenu() || menu.getDelay() == 0)
-                {
-                  MenuElement[] newPath =
-                    new MenuElement[selectedPath.length + 1];
-                  System.arraycopy(selectedPath, 0, newPath, 0,
-                                   selectedPath.length);
-                  newPath[selectedPath.length] = menu.getPopupMenu();
-                  manager.setSelectedPath(newPath);
-                }
-              else
-                {
-                  setupPostTimer(menu);
-                }
-            }
-
-        }
-    }
-
-    public void mouseReleased(MouseEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      manager.processMouseEvent(e);
-    }
-  }
-
-  /**
-   * This class handles MenuEvents fired by the JMenu
-   */
-  private class MenuHandler implements MenuListener
-  {
-    /**
-     * This method is called when menu is cancelled. The menu is cancelled
-     * when its popup menu is closed without selection. It clears selected index
-     * in the selectionModel of the menu parent.
-     *
-     * @param e The MenuEvent.
-     */
-    public void menuCanceled(MenuEvent e)
-    {
-      menuDeselected(e);
-    }
-
-    /**
-     * This method is called when menu is deselected. It clears selected index
-     * in the selectionModel of the menu parent.
-     *
-     * @param e The MenuEvent.
-     */
-    public void menuDeselected(MenuEvent e)
-    {
-      JMenu menu = (JMenu) menuItem;
-      if (menu.getParent() != null)
-        {
-          if (menu.isTopLevelMenu())
-            ((JMenuBar) menu.getParent()).getSelectionModel().clearSelection();
-          else
-            ((JPopupMenu) menu.getParent()).getSelectionModel().clearSelection();
-        }
-    }
-
-    /**
-     * This method is called when menu is selected.  It sets selected index
-     * in the selectionModel of the menu parent.
-     *
-     * @param e The MenuEvent.
-     */
-    public void menuSelected(MenuEvent e)
-    {
-      JMenu menu = (JMenu) menuItem;
-      if (menu.isTopLevelMenu())
-        ((JMenuBar) menu.getParent()).setSelected(menu);
-      else
-        ((JPopupMenu) menu.getParent()).setSelected(menu);
-    }
-  }
-
-  /**
-   * Obsolete as of JDK1.4.
-   */
-  public class ChangeHandler implements ChangeListener
-  {
-    /**
-     * Not used.
-     */
-    public boolean isSelected;
-
-    /**
-     * Not used.
-     */
-    public JMenu menu;
-
-    /**
-     * Not used.
-     */
-    public BasicMenuUI ui;
-
-    /**
-     * Not used.
-     */
-    public Component wasFocused;
-
-    /**
-     * Not used.
-     */
-    public ChangeHandler(JMenu m, BasicMenuUI ui)
-    {
-      menu = m;
-      this.ui = ui;
-    }
-
-    /**
-     * Not used.
-     */
-    public void stateChanged(ChangeEvent e)
-    {
-      // Not used.
-    }
-  }
-
-  /**
-   * This class handles mouse dragged events occuring in the menu.
-   */
-  private class MenuDragMouseHandler implements MenuDragMouseListener
-  {
-    /**
-     * This method is invoked when mouse is dragged over the menu item.
-     *
-     * @param e The MenuDragMouseEvent
-     */
-    public void menuDragMouseDragged(MenuDragMouseEvent e)
-    {
-      if (menuItem.isEnabled())
-        {
-          MenuSelectionManager manager = e.getMenuSelectionManager();
-          MenuElement path[] = e.getPath();
-
-          Point p = e.getPoint();
-          if(p.x >= 0 && p.x < menuItem.getWidth()
-              && p.y >= 0 && p.y < menuItem.getHeight())
-            {
-              JMenu menu = (JMenu) menuItem;
-              MenuElement[] selectedPath = manager.getSelectedPath();
-              if(! (selectedPath.length > 0
-                  && selectedPath[selectedPath.length-1]
-                                  == menu.getPopupMenu()))
-                {
-                  if(menu.isTopLevelMenu() || menu.getDelay() == 0
-                     || e.getID() == MouseEvent.MOUSE_DRAGGED)
-                    {
-                      MenuElement[] newPath = new MenuElement[path.length + 1];
-                      System.arraycopy(path, 0, newPath, 0, path.length);
-                      newPath[path.length] = menu.getPopupMenu();
-                      manager.setSelectedPath(newPath);
-                    }
-                  else
-                    {
-                      manager.setSelectedPath(path);
-                      setupPostTimer(menu);
-                    }
-                }
-            }
-          else if (e.getID() == MouseEvent.MOUSE_RELEASED)
-            {
-              Component comp = manager.componentForPoint(e.getComponent(),
-                                                         e.getPoint());
-              if (comp == null)
-                manager.clearSelectedPath();
-            }
-        }
-    }
-
-    /**
-     * This method is invoked when mouse enters the menu item while it is
-     * being dragged.
-     *
-     * @param e The MenuDragMouseEvent
-     */
-    public void menuDragMouseEntered(MenuDragMouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method is invoked when mouse exits the menu item while
-     * it is being dragged
-     *
-     * @param e The MenuDragMouseEvent
-     */
-    public void menuDragMouseExited(MenuDragMouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method is invoked when mouse was dragged and released
-     * inside the menu item.
-     *
-     * @param e The MenuDragMouseEvent
-     */
-    public void menuDragMouseReleased(MenuDragMouseEvent e)
-    {
-      // Nothing to do here.
-    }
-  }
-
-  /**
-   * This class handles key events occuring when menu item is visible on the
-   * screen.
-   */
-  private class MenuKeyHandler implements MenuKeyListener
-  {
-    /**
-     * This method is invoked when key has been pressed
-     *
-     * @param e A {@link MenuKeyEvent}.
-     */
-    public void menuKeyPressed(MenuKeyEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method is invoked when key has been pressed
-     *
-     * @param e A {@link MenuKeyEvent}.
-     */
-    public void menuKeyReleased(MenuKeyEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method is invoked when key has been typed
-     * It handles the mnemonic key for the menu item.
-     *
-     * @param e A {@link MenuKeyEvent}.
-     */
-    public void menuKeyTyped(MenuKeyEvent e)
-    throws NotImplementedException
-    {
-      // TODO: What should be done here, if anything?
-    }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicOptionPaneUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicOptionPaneUI.java
deleted file mode 100644
index a03d224..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicOptionPaneUI.java
+++ /dev/null
@@ -1,1404 +0,0 @@
-/* BasicOptionPaneUI.java --
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.Graphics;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.LayoutManager;
-import java.awt.Polygon;
-import java.awt.Window;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyVetoException;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.ActionMap;
-import javax.swing.BorderFactory;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.Icon;
-import javax.swing.InputMap;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JDialog;
-import javax.swing.JInternalFrame;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.OptionPaneUI;
-
-/**
- * This class is the UI delegate for JOptionPane in the Basic Look and Feel.
- */
-public class BasicOptionPaneUI extends OptionPaneUI
-{
-  /**
-   * Implements the "close" keyboard action.
-   */
-  static class OptionPaneCloseAction
-    extends AbstractAction
-  {
-
-    public void actionPerformed(ActionEvent event)
-    {
-      JOptionPane op = (JOptionPane) event.getSource();
-      op.setValue(new Integer(JOptionPane.CLOSED_OPTION));
-    }
-
-  }
-
-  /**
-   * This is a helper class that listens to the buttons located at the bottom
-   * of the JOptionPane.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class ButtonActionListener implements ActionListener
-  {
-    /** The index of the option this button represents. */
-    protected int buttonIndex;
-
-    /**
-     * Creates a new ButtonActionListener object with the given buttonIndex.
-     *
-     * @param buttonIndex The index of the option this button represents.
-     */
-    public ButtonActionListener(int buttonIndex)
-    {
-      this.buttonIndex = buttonIndex;
-    }
-
-    /**
-     * This method is called when one of the option buttons are pressed.
-     *
-     * @param e The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      Object value = new Integer(JOptionPane.CLOSED_OPTION);
-      Object[] options = optionPane.getOptions();
-      if (options != null)
-        value = new Integer(buttonIndex);
-      else
-        {
-          String text = ((JButton) e.getSource()).getText();
-          if (text.equals(OK_STRING))
-            value = new Integer(JOptionPane.OK_OPTION);
-          if (text.equals(CANCEL_STRING))
-            value = new Integer(JOptionPane.CANCEL_OPTION);
-          if (text.equals(YES_STRING))
-            value = new Integer(JOptionPane.YES_OPTION);
-          if (text.equals(NO_STRING))
-            value = new Integer(JOptionPane.NO_OPTION);
-        }
-      optionPane.setValue(value);
-      resetInputValue();
-
-      Window owner = SwingUtilities.windowForComponent(optionPane);
-
-      if (owner instanceof JDialog)
-        ((JDialog) owner).dispose();
-
-      //else we probably have some kind of internal frame.
-      JInternalFrame inf = (JInternalFrame) SwingUtilities.getAncestorOfClass(
-          JInternalFrame.class, optionPane);
-      if (inf != null)
-        {
-          try
-            {
-              inf.setClosed(true);
-            }
-          catch (PropertyVetoException pve)
-            {
-              // We do nothing if attempt has been vetoed.
-            }
-        }
-    }
-  }
-
-  /**
-   * This helper layout manager is responsible for the layout of the button
-   * area. The button area is the panel that holds the buttons which
-   * represent the options.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public static class ButtonAreaLayout implements LayoutManager
-  {
-    /** Whether this layout will center the buttons. */
-    protected boolean centersChildren = true;
-
-    /** The space between the buttons. */
-    protected int padding;
-
-    /** Whether the buttons will share the same widths. */
-    protected boolean syncAllWidths;
-
-    /** The width of the widest button. */
-    private transient int widthOfWidestButton;
-
-    /** The height of the tallest button. */
-    private transient int tallestButton;
-
-    /**
-     * Creates a new ButtonAreaLayout object with the given sync widths
-     * property and padding.
-     *
-     * @param syncAllWidths Whether the buttons will share the same widths.
-     * @param padding The padding between the buttons.
-     */
-    public ButtonAreaLayout(boolean syncAllWidths, int padding)
-    {
-      this.syncAllWidths = syncAllWidths;
-      this.padding = padding;
-    }
-
-    /**
-     * This method is called when a component is added to the container.
-     *
-     * @param string The constraints string.
-     * @param comp The component added.
-     */
-    public void addLayoutComponent(String string, Component comp)
-    {
-      // Do nothing.
-    }
-
-    /**
-     * This method returns whether the children will be centered.
-     *
-     * @return Whether the children will be centered.
-     */
-    public boolean getCentersChildren()
-    {
-      return centersChildren;
-    }
-
-    /**
-     * This method returns the amount of space between components.
-     *
-     * @return The amount of space between components.
-     */
-    public int getPadding()
-    {
-      return padding;
-    }
-
-    /**
-     * This method returns whether all components will share widths (set to
-     * largest width).
-     *
-     * @return Whether all components will share widths.
-     */
-    public boolean getSyncAllWidths()
-    {
-      return syncAllWidths;
-    }
-
-    /**
-     * This method lays out the given container.
-     *
-     * @param container The container to lay out.
-     */
-    public void layoutContainer(Container container)
-    {
-      Component[] buttonList = container.getComponents();
-      int x = container.getInsets().left;
-      if (getCentersChildren())
-        x += (int) ((double) (container.getSize().width) / 2
-        - (double) (buttonRowLength(container)) / 2);
-      for (int i = 0; i < buttonList.length; i++)
-        {
-          Dimension dims = buttonList[i].getPreferredSize();
-          if (syncAllWidths)
-            {
-              buttonList[i].setBounds(x, 0, widthOfWidestButton, dims.height);
-              x += widthOfWidestButton + getPadding();
-            }
-          else
-            {
-              buttonList[i].setBounds(x, 0, dims.width, dims.height);
-              x += dims.width + getPadding();
-            }
-        }
-    }
-
-    /**
-     * This method returns the width of the given container taking into
-     * consideration the padding and syncAllWidths.
-     *
-     * @param c The container to calculate width for.
-     *
-     * @return The width of the given container.
-     */
-    private int buttonRowLength(Container c)
-    {
-      Component[] buttonList = c.getComponents();
-
-      int buttonLength = 0;
-      int widest = 0;
-      int tallest = 0;
-
-      for (int i = 0; i < buttonList.length; i++)
-        {
-          Dimension dims = buttonList[i].getPreferredSize();
-          buttonLength += dims.width + getPadding();
-          widest = Math.max(widest, dims.width);
-          tallest = Math.max(tallest, dims.height);
-        }
-
-      widthOfWidestButton = widest;
-      tallestButton = tallest;
-
-      int width;
-      if (getSyncAllWidths())
-        width = widest * buttonList.length
-                + getPadding() * (buttonList.length - 1);
-      else
-        width = buttonLength;
-
-      Insets insets = c.getInsets();
-      width += insets.left + insets.right;
-
-      return width;
-    }
-
-    /**
-     * This method returns the minimum layout size for the given container.
-     *
-     * @param c The container to measure.
-     *
-     * @return The minimum layout size.
-     */
-    public Dimension minimumLayoutSize(Container c)
-    {
-      return preferredLayoutSize(c);
-    }
-
-    /**
-     * This method returns the preferred size of the given container.
-     *
-     * @param c The container to measure.
-     *
-     * @return The preferred size.
-     */
-    public Dimension preferredLayoutSize(Container c)
-    {
-      int w = buttonRowLength(c);
-
-      return new Dimension(w, tallestButton);
-    }
-
-    /**
-     * This method removes the given component from the layout manager's
-     * knowledge.
-     *
-     * @param c The component to remove.
-     */
-    public void removeLayoutComponent(Component c)
-    {
-      // Do nothing.
-    }
-
-    /**
-     * This method sets whether the children will be centered.
-     *
-     * @param newValue Whether the children will be centered.
-     */
-    public void setCentersChildren(boolean newValue)
-    {
-      centersChildren = newValue;
-    }
-
-    /**
-     * This method sets the amount of space between each component.
-     *
-     * @param newPadding The padding between components.
-     */
-    public void setPadding(int newPadding)
-    {
-      padding = newPadding;
-    }
-
-    /**
-     * This method sets whether the widths will be synced.
-     *
-     * @param newValue Whether the widths will be synced.
-     */
-    public void setSyncAllWidths(boolean newValue)
-    {
-      syncAllWidths = newValue;
-    }
-  }
-
-  /**
-   * This helper class handles property change events from the JOptionPane.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class PropertyChangeHandler implements PropertyChangeListener
-  {
-    /**
-     * This method is called when one of the properties of the JOptionPane
-     * changes.
-     *
-     * @param e The PropertyChangeEvent.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      String property = e.getPropertyName();
-      if (property.equals(JOptionPane.ICON_PROPERTY)
-          || property.equals(JOptionPane.INITIAL_SELECTION_VALUE_PROPERTY)
-          || property.equals(JOptionPane.INITIAL_VALUE_PROPERTY)
-          || property.equals(JOptionPane.MESSAGE_PROPERTY)
-          || property.equals(JOptionPane.MESSAGE_TYPE_PROPERTY)
-          || property.equals(JOptionPane.OPTION_TYPE_PROPERTY)
-          || property.equals(JOptionPane.OPTIONS_PROPERTY)
-          || property.equals(JOptionPane.WANTS_INPUT_PROPERTY))
-        {
-          uninstallComponents();
-          installComponents();
-          optionPane.validate();
-        }
-    }
-  }
-
-  /**
-   * The minimum width for JOptionPanes.
-   */
-  public static final int MinimumWidth = 262;
-
-  /**
-   * The minimum height for JOptionPanes.
-   */
-  public static final int MinimumHeight = 90;
-
-  /** Whether the JOptionPane contains custom components. */
-  protected boolean hasCustomComponents;
-
-  // The initialFocusComponent seems to always be set to a button (even if
-  // I try to set initialSelectionValue). This is different from what the
-  // javadocs state (which should switch this reference to the input component
-  // if one is present since that is what's going to get focus).
-
-  /**
-   * The button that will receive focus based on initialValue when no input
-   * component is present. If an input component is present, then the input
-   * component will receive focus instead.
-   */
-  protected Component initialFocusComponent;
-
-  /** The component that receives input when the JOptionPane needs it. */
-  protected JComponent inputComponent;
-
-  /** The minimum dimensions of the JOptionPane. */
-  protected Dimension minimumSize;
-
-  /** The propertyChangeListener for the JOptionPane. */
-  protected PropertyChangeListener propertyChangeListener;
-
-  /** The JOptionPane this UI delegate is used for. */
-  protected JOptionPane optionPane;
-
-  /** The size of the icons. */
-  private static final int ICON_SIZE = 36;
-
-  /** The string used to describe OK buttons. */
-  private static final String OK_STRING = "OK";
-
-  /** The string used to describe Yes buttons. */
-  private static final String YES_STRING = "Yes";
-
-  /** The string used to describe No buttons. */
-  private static final String NO_STRING = "No";
-
-  /** The string used to describe Cancel buttons. */
-  private static final String CANCEL_STRING = "Cancel";
-
-  /** The container for the message area.
-   * This is package-private to avoid an accessor method. */
-  transient Container messageAreaContainer;
-
-  /** The container for the buttons.
-   * This is package-private to avoid an accessor method.  */
-  transient Container buttonContainer;
-
-  /**
-   * A helper class that implements Icon. This is used temporarily until
-   * ImageIcons are fixed.
-   */
-  private static class MessageIcon implements Icon
-  {
-    /**
-     * This method returns the width of the icon.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return ICON_SIZE;
-    }
-
-    /**
-     * This method returns the height of the icon.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return ICON_SIZE;
-    }
-
-    /**
-     * This method paints the icon as a part of the given component using the
-     * given graphics and the given x and y position.
-     *
-     * @param c The component that owns this icon.
-     * @param g The Graphics object to paint with.
-     * @param x The x coordinate.
-     * @param y The y coordinate.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      // Nothing to do here.
-    }
-  }
-
-  /** The icon displayed for ERROR_MESSAGE. */
-  private static MessageIcon errorIcon = new MessageIcon()
-    {
-      public void paintIcon(Component c, Graphics g, int x, int y)
-      {
-        Polygon oct = new Polygon(new int[] { 0, 0, 9, 27, 36, 36, 27, 9 },
-                                  new int[] { 9, 27, 36, 36, 27, 9, 0, 0 }, 8);
-        g.translate(x, y);
-
-        Color saved = g.getColor();
-        g.setColor(Color.RED);
-
-        g.fillPolygon(oct);
-
-        g.setColor(Color.BLACK);
-        g.drawRect(13, 16, 10, 4);
-
-        g.setColor(saved);
-        g.translate(-x, -y);
-      }
-    };
-
-  /** The icon displayed for INFORMATION_MESSAGE. */
-  private static MessageIcon infoIcon = new MessageIcon()
-    {
-      public void paintIcon(Component c, Graphics g, int x, int y)
-      {
-        g.translate(x, y);
-        Color saved = g.getColor();
-
-        // Should be purple.
-        g.setColor(Color.RED);
-
-        g.fillOval(0, 0, ICON_SIZE, ICON_SIZE);
-
-        g.setColor(Color.BLACK);
-        g.drawOval(16, 6, 4, 4);
-
-        Polygon bottomI = new Polygon(new int[] { 15, 15, 13, 13, 23, 23, 21, 21 },
-                                      new int[] { 12, 28, 28, 30, 30, 28, 28, 12 },
-                                      8);
-        g.drawPolygon(bottomI);
-
-        g.setColor(saved);
-        g.translate(-x, -y);
-      }
-    };
-
-  /** The icon displayed for WARNING_MESSAGE. */
-  private static MessageIcon warningIcon = new MessageIcon()
-    {
-      public void paintIcon(Component c, Graphics g, int x, int y)
-      {
-        g.translate(x, y);
-        Color saved = g.getColor();
-        g.setColor(Color.YELLOW);
-
-        Polygon triangle = new Polygon(new int[] { 0, 18, 36 },
-                                       new int[] { 36, 0, 36 }, 3);
-        g.fillPolygon(triangle);
-
-        g.setColor(Color.BLACK);
-
-        Polygon excl = new Polygon(new int[] { 15, 16, 20, 21 },
-                                   new int[] { 8, 26, 26, 8 }, 4);
-        g.drawPolygon(excl);
-        g.drawOval(16, 30, 4, 4);
-
-        g.setColor(saved);
-        g.translate(-x, -y);
-      }
-    };
-
-  /** The icon displayed for MESSAGE_ICON. */
-  private static MessageIcon questionIcon = new MessageIcon()
-    {
-      public void paintIcon(Component c, Graphics g, int x, int y)
-      {
-        g.translate(x, y);
-        Color saved = g.getColor();
-        g.setColor(Color.GREEN);
-
-        g.fillRect(0, 0, ICON_SIZE, ICON_SIZE);
-
-        g.setColor(Color.BLACK);
-
-        g.drawOval(11, 2, 16, 16);
-        g.drawOval(14, 5, 10, 10);
-
-        g.setColor(Color.GREEN);
-        g.fillRect(0, 10, ICON_SIZE, ICON_SIZE - 10);
-
-        g.setColor(Color.BLACK);
-
-        g.drawLine(11, 10, 14, 10);
-
-        g.drawLine(24, 10, 17, 22);
-        g.drawLine(27, 10, 20, 22);
-        g.drawLine(17, 22, 20, 22);
-
-        g.drawOval(17, 25, 3, 3);
-
-        g.setColor(saved);
-        g.translate(-x, -y);
-      }
-    };
-
-  /**
-   * Creates a new BasicOptionPaneUI object.
-   */
-  public BasicOptionPaneUI()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * This method is messaged to add the buttons to the given container.
-   *
-   * @param container The container to add components to.
-   * @param buttons The buttons to add. (If it is an instance of component,
-   *        the Object is added directly. If it is an instance of Icon, it is
-   *        packed into a label and added. For all other cases, the string
-   *        representation of the Object is retreived and packed into a
-   *        label.)
-   * @param initialIndex The index of the component that is the initialValue.
-   */
-  protected void addButtonComponents(Container container, Object[] buttons,
-                                     int initialIndex)
-  {
-    if (buttons == null)
-      return;
-    for (int i = 0; i < buttons.length; i++)
-      {
-        if (buttons[i] != null)
-          {
-            Component toAdd;
-            if (buttons[i] instanceof Component)
-              toAdd = (Component) buttons[i];
-            else
-              {
-                if (buttons[i] instanceof Icon)
-                  toAdd = new JButton((Icon) buttons[i]);
-                else
-                  toAdd = new JButton(buttons[i].toString());
-                hasCustomComponents = true;
-              }
-            if (toAdd instanceof JButton)
-              ((JButton) toAdd).addActionListener(createButtonActionListener(i));
-            if (i == initialIndex)
-              initialFocusComponent = toAdd;
-            container.add(toAdd);
-          }
-      }
-    selectInitialValue(optionPane);
-  }
-
-  /**
-   * This method adds the appropriate icon the given container.
-   *
-   * @param top The container to add an icon to.
-   */
-  protected void addIcon(Container top)
-  {
-    JLabel iconLabel = null;
-    Icon icon = getIcon();
-    if (icon != null)
-      {
-        iconLabel = new JLabel(icon);
-        configureLabel(iconLabel);
-        top.add(iconLabel, BorderLayout.WEST);
-      }
-  }
-
-  /**
-   * A helper method that returns an instance of GridBagConstraints to be used
-   * for creating the message area.
-   *
-   * @return An instance of GridBagConstraints.
-   */
-  private static GridBagConstraints createConstraints()
-  {
-    GridBagConstraints constraints = new GridBagConstraints();
-    constraints.gridx = GridBagConstraints.REMAINDER;
-    constraints.gridy = GridBagConstraints.REMAINDER;
-    constraints.gridwidth = 0;
-    constraints.anchor = GridBagConstraints.LINE_START;
-    constraints.fill = GridBagConstraints.NONE;
-    constraints.insets = new Insets(0, 0, 3, 0);
-
-    return constraints;
-  }
-
-  /**
-   * This method creates the proper object (if necessary) to represent msg.
-   * (If msg is an instance of Component, it will add it directly. If it is
-   * an icon, then it will pack it in a label and add it. Otherwise, it gets
-   * treated as a string. If the string is longer than maxll, a box is
-   * created and the burstStringInto is called with the box as the container.
-   * The box is then added to the given container. Otherwise, the string is
-   * packed in a label and placed in the given container.) This method is
-   * also used for adding the inputComponent to the container.
-   *
-   * @param container The container to add to.
-   * @param cons The constraints when adding.
-   * @param msg The message to add.
-   * @param maxll The max line length.
-   * @param internallyCreated Whether the msg is internally created.
-   */
-  protected void addMessageComponents(Container container,
-                                      GridBagConstraints cons, Object msg,
-                                      int maxll, boolean internallyCreated)
-  {
-    if (msg == null)
-      return;
-    hasCustomComponents = internallyCreated;
-    if (msg instanceof Object[])
-      {
-        Object[] arr = (Object[]) msg;
-        for (int i = 0; i < arr.length; i++)
-          addMessageComponents(container, cons, arr[i], maxll,
-                               internallyCreated);
-        return;
-      }
-    else if (msg instanceof Component)
-      {
-        container.add((Component) msg, cons);
-        cons.gridy++;
-      }
-    else if (msg instanceof Icon)
-      {
-        JLabel label = new JLabel((Icon) msg);
-        configureLabel(label);
-        container.add(label, cons);
-        cons.gridy++;
-      }
-    else
-      {
-        // Undocumented behaviour.
-        // if msg.toString().length greater than maxll
-        // it will create a box and burst the string.
-        // otherwise, it will just create a label and re-call
-        // this method with the label o.O
-        if (msg.toString().length() > maxll || msg.toString().contains("\n"))
-          {
-            Box tmp = new Box(BoxLayout.Y_AXIS);
-            burstStringInto(tmp, msg.toString(), maxll);
-            addMessageComponents(container, cons, tmp, maxll, true);
-          }
-        else
-          {
-            JLabel label = new JLabel(msg.toString());
-            configureLabel(label);
-            addMessageComponents(container, cons, label, maxll, true);
-          }
-      }
-  }
-
-  /**
-   * This method creates instances of d (recursively if necessary based on
-   * maxll) and adds to c.
-   *
-   * @param c The container to add to.
-   * @param d The string to burst.
-   * @param maxll The max line length.
-   */
-  protected void burstStringInto(Container c, String d, int maxll)
-  {
-    if (d == null || c == null)
-      return;
-
-    int newlineIndex = d.indexOf('\n');
-    String line;
-    String remainder;
-    if (newlineIndex >= 0 && newlineIndex < maxll)
-      {
-        line = d.substring(0, newlineIndex);
-        remainder = d.substring(newlineIndex + 1);
-      }
-    else
-      {
-        line = d.substring(0, maxll);
-        remainder = d.substring(maxll);
-      }
-    JLabel label = new JLabel(line);
-    configureLabel(label);
-    c.add(label);
-
-    // If there is nothing left to burst, then we can stop.
-    if (remainder.length() == 0)
-      return;
-
-    // Recursively call ourselves to burst the remainder of the string,
-    if (remainder.length() > maxll || remainder.contains("\n"))
-      burstStringInto(c, remainder, maxll);
-    else
-      {
-        // Add the remainder to the container and be done.
-        JLabel l = new JLabel(remainder);
-        configureLabel(l);
-        c.add(l);
-      }
-  }
-
-  /**
-   * This method returns true if the given JOptionPane contains custom
-   * components.
-   *
-   * @param op The JOptionPane to check.
-   *
-   * @return True if the JOptionPane contains custom components.
-   */
-  public boolean containsCustomComponents(JOptionPane op)
-  {
-    return hasCustomComponents;
-  }
-
-  /**
-   * This method creates a button action listener for the given button index.
-   *
-   * @param buttonIndex The index of the button in components.
-   *
-   * @return A new ButtonActionListener.
-   */
-  protected ActionListener createButtonActionListener(int buttonIndex)
-  {
-    return new ButtonActionListener(buttonIndex);
-  }
-
-  /**
-   * This method creates the button area.
-   *
-   * @return A new Button Area.
-   */
-  protected Container createButtonArea()
-  {
-    JPanel buttonPanel = new JPanel();
-    Border b = UIManager.getBorder("OptionPane.buttonAreaBorder");
-    if (b != null)
-      buttonPanel.setBorder(b);
-
-    buttonPanel.setLayout(createLayoutManager());
-    addButtonComponents(buttonPanel, getButtons(), getInitialValueIndex());
-
-    return buttonPanel;
-  }
-
-  /**
-   * This method creates a new LayoutManager for the button area.
-   *
-   * @return A new LayoutManager for the button area.
-   */
-  protected LayoutManager createLayoutManager()
-  {
-    return new ButtonAreaLayout(getSizeButtonsToSameWidth(), 6);
-  }
-
-  /**
-   * This method creates the message area.
-   *
-   * @return A new message area.
-   */
-  protected Container createMessageArea()
-  {
-    JPanel messageArea = new JPanel();
-    Border messageBorder = UIManager.getBorder("OptionPane.messageAreaBorder");
-    if (messageBorder != null)
-      messageArea.setBorder(messageBorder);
-
-    messageArea.setLayout(new BorderLayout());
-    addIcon(messageArea);
-
-    JPanel rightSide = new JPanel();
-    rightSide.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
-    rightSide.setLayout(new GridBagLayout());
-    GridBagConstraints con = createConstraints();
-
-    addMessageComponents(rightSide, con, getMessage(),
-                         getMaxCharactersPerLineCount(), false);
-
-    if (optionPane.getWantsInput())
-      {
-        Object[] selection = optionPane.getSelectionValues();
-
-        if (selection == null)
-          inputComponent = new JTextField(15);
-        else if (selection.length < 20)
-          inputComponent = new JComboBox(selection);
-        else
-          inputComponent = new JList(selection);
-        if (inputComponent != null)
-          {
-            addMessageComponents(rightSide, con, inputComponent,
-                                 getMaxCharactersPerLineCount(), false);
-            resetSelectedValue();
-            selectInitialValue(optionPane);
-          }
-      }
-
-    messageArea.add(rightSide, BorderLayout.CENTER);
-
-    return messageArea;
-  }
-
-  /**
-   * This method creates a new PropertyChangeListener for listening to the
-   * JOptionPane.
-   *
-   * @return A new PropertyChangeListener.
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new PropertyChangeHandler();
-  }
-
-  /**
-   * This method creates a Container that will separate the message and button
-   * areas.
-   *
-   * @return A Container that will separate the message and button areas.
-   */
-  protected Container createSeparator()
-  {
-    // The reference implementation returns null here. When overriding
-    // to return something non-null, the component gets added between
-    // the message area and the button area. See installComponents().
-    return null;
-  }
-
-  /**
-   * This method creates a new BasicOptionPaneUI for the given component.
-   *
-   * @param x The component to create a UI for.
-   *
-   * @return A new BasicOptionPaneUI.
-   */
-  public static ComponentUI createUI(JComponent x)
-  {
-    return new BasicOptionPaneUI();
-  }
-
-  /**
-   * This method returns the buttons for the JOptionPane. If no options are
-   * set, a set of options will be created based upon the optionType.
-   *
-   * @return The buttons that will be added.
-   */
-  protected Object[] getButtons()
-  {
-    if (optionPane.getOptions() != null)
-      return optionPane.getOptions();
-    switch (optionPane.getOptionType())
-      {
-      case JOptionPane.YES_NO_OPTION:
-        return new Object[] { YES_STRING, NO_STRING };
-      case JOptionPane.YES_NO_CANCEL_OPTION:
-        return new Object[] { YES_STRING, NO_STRING, CANCEL_STRING };
-      case JOptionPane.OK_CANCEL_OPTION:
-        return new Object[] { OK_STRING, CANCEL_STRING };
-      case JOptionPane.DEFAULT_OPTION:
-        return (optionPane.getWantsInput()) ?
-               new Object[] { OK_STRING, CANCEL_STRING } :
-               (optionPane.getMessageType() == JOptionPane.QUESTION_MESSAGE) ?
-               new Object[] { YES_STRING, NO_STRING, CANCEL_STRING } :
-               // ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, PLAIN_MESSAGE
-               new Object[] { OK_STRING };
-      }
-    return null;
-  }
-
-  /**
-   * This method will return the icon the user has set or the icon that will
-   * be used based on message type.
-   *
-   * @return The icon to use in the JOptionPane.
-   */
-  protected Icon getIcon()
-  {
-    if (optionPane.getIcon() != null)
-      return optionPane.getIcon();
-    else
-      return getIconForType(optionPane.getMessageType());
-  }
-
-  /**
-   * This method returns the icon for the given messageType.
-   *
-   * @param messageType The type of message.
-   *
-   * @return The icon for the given messageType.
-   */
-  protected Icon getIconForType(int messageType)
-  {
-    Icon tmp = null;
-    switch (messageType)
-      {
-      case JOptionPane.ERROR_MESSAGE:
-        tmp = errorIcon;
-        break;
-      case JOptionPane.INFORMATION_MESSAGE:
-        tmp = infoIcon;
-        break;
-      case JOptionPane.WARNING_MESSAGE:
-        tmp = warningIcon;
-        break;
-      case JOptionPane.QUESTION_MESSAGE:
-        tmp = questionIcon;
-        break;
-      }
-    return tmp;
-    // FIXME: Don't cast till the default icons are in.
-    // return new IconUIResource(tmp);
-  }
-
-  /**
-   * This method returns the index of the initialValue in the options array.
-   *
-   * @return The index of the initalValue.
-   */
-  protected int getInitialValueIndex()
-  {
-    Object[] buttons = getButtons();
-
-    if (buttons == null)
-      return -1;
-
-    Object select = optionPane.getInitialValue();
-
-    for (int i = 0; i < buttons.length; i++)
-      {
-        if (select == buttons[i])
-          return i;
-      }
-    return 0;
-  }
-
-  /**
-   * This method returns the maximum number of characters that should be
-   * placed on a line.
-   *
-   * @return The maximum number of characteres that should be placed on a
-   *         line.
-   */
-  protected int getMaxCharactersPerLineCount()
-  {
-    return optionPane.getMaxCharactersPerLineCount();
-  }
-
-  /**
-   * This method returns the maximum size.
-   *
-   * @param c The JComponent to measure.
-   *
-   * @return The maximum size.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-  /**
-   * This method returns the message of the JOptionPane.
-   *
-   * @return The message.
-   */
-  protected Object getMessage()
-  {
-    return optionPane.getMessage();
-  }
-
-  /**
-   * This method returns the minimum size of the JOptionPane.
-   *
-   * @return The minimum size.
-   */
-  public Dimension getMinimumOptionPaneSize()
-  {
-    return minimumSize;
-  }
-
-  /**
-   * This method returns the minimum size.
-   *
-   * @param c The JComponent to measure.
-   *
-   * @return The minimum size.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-  /**
-   * This method returns the preferred size of the JOptionPane. The preferred
-   * size is the maximum of the size desired by the layout and the minimum
-   * size.
-   *
-   * @param c The JComponent to measure.
-   *
-   * @return The preferred size.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension d = optionPane.getLayout().preferredLayoutSize(optionPane);
-    Dimension d2 = getMinimumOptionPaneSize();
-
-    int w = Math.max(d.width, d2.width);
-    int h = Math.max(d.height, d2.height);
-    return new Dimension(w, h);
-  }
-
-  /**
-   * This method returns whether all buttons should have the same width.
-   *
-   * @return Whether all buttons should have the same width.
-   */
-  protected boolean getSizeButtonsToSameWidth()
-  {
-    return true;
-  }
-
-  /**
-   * This method installs components for the JOptionPane.
-   */
-  protected void installComponents()
-  {
-    // First thing is the message area.
-    optionPane.add(createMessageArea());
-
-    // Add separator when createSeparator() is overridden to return
-    // something other than null.
-    Container sep = createSeparator();
-    if (sep != null)
-      optionPane.add(sep);
-
-    // Last thing is the button area.
-    optionPane.add(createButtonArea());
-  }
-
-  /**
-   * This method installs defaults for the JOptionPane.
-   */
-  protected void installDefaults()
-  {
-    LookAndFeel.installColorsAndFont(optionPane, "OptionPane.background",
-                                     "OptionPane.foreground",
-                                     "OptionPane.font");
-    LookAndFeel.installBorder(optionPane, "OptionPane.border");
-    optionPane.setOpaque(true);
-
-    minimumSize = UIManager.getDimension("OptionPane.minimumSize");
-
-    // FIXME: Image icons don't seem to work properly right now.
-    // Once they do, replace the synthetic icons with these ones.
-
-    /*
-    warningIcon = (IconUIResource) defaults.getIcon("OptionPane.warningIcon");
-    infoIcon = (IconUIResource) defaults.getIcon("OptionPane.informationIcon");
-    errorIcon = (IconUIResource) defaults.getIcon("OptionPane.errorIcon");
-    questionIcon = (IconUIResource) defaults.getIcon("OptionPane.questionIcon");
-    */
-  }
-
-  /**
-   * This method installs keyboard actions for the JOptionpane.
-   */
-  protected void installKeyboardActions()
-  {
-    // Install the input map.
-    Object[] bindings =
-      (Object[]) SharedUIDefaults.get("OptionPane.windowBindings");
-    InputMap inputMap = LookAndFeel.makeComponentInputMap(optionPane,
-                                                          bindings);
-    SwingUtilities.replaceUIInputMap(optionPane,
-                                     JComponent.WHEN_IN_FOCUSED_WINDOW,
-                                     inputMap);
-
-    // FIXME: The JDK uses a LazyActionMap for parentActionMap
-    SwingUtilities.replaceUIActionMap(optionPane, getActionMap());
-  }
-
-  /**
-   * Fetches the action map from  the UI defaults, or create a new one
-   * if the action map hasn't been initialized.
-   *
-   * @return the action map
-   */
-  private ActionMap getActionMap()
-  {
-    ActionMap am = (ActionMap) UIManager.get("OptionPane.actionMap");
-    if (am == null)
-      {
-        am = createDefaultActions();
-        UIManager.getLookAndFeelDefaults().put("OptionPane.actionMap", am);
-      }
-    return am;
-  }
-
-  private ActionMap createDefaultActions()
-  {
-    ActionMapUIResource am = new ActionMapUIResource();
-    Action action = new OptionPaneCloseAction();
-
-    am.put("close", action);
-    return am;
-  }
-
-  /**
-   * This method installs listeners for the JOptionPane.
-   */
-  protected void installListeners()
-  {
-    propertyChangeListener = createPropertyChangeListener();
-
-    optionPane.addPropertyChangeListener(propertyChangeListener);
-  }
-
-  /**
-   * This method installs the UI for the JOptionPane.
-   *
-   * @param c The JComponent to install the UI for.
-   */
-  public void installUI(JComponent c)
-  {
-    if (c instanceof JOptionPane)
-      {
-        optionPane = (JOptionPane) c;
-
-        installDefaults();
-        installComponents();
-        installListeners();
-        installKeyboardActions();
-      }
-  }
-
-  /**
-   * Changes the inputValue property in the JOptionPane based on the current
-   * value of the inputComponent.
-   */
-  protected void resetInputValue()
-  {
-    if (optionPane.getWantsInput() && inputComponent != null)
-      {
-        Object output = null;
-        if (inputComponent instanceof JTextField)
-          output = ((JTextField) inputComponent).getText();
-        else if (inputComponent instanceof JComboBox)
-          output = ((JComboBox) inputComponent).getSelectedItem();
-        else if (inputComponent instanceof JList)
-          output = ((JList) inputComponent).getSelectedValue();
-
-        if (output != null)
-          optionPane.setInputValue(output);
-      }
-  }
-
-  /**
-   * This method requests focus to the inputComponent (if one is present) and
-   * the initialFocusComponent otherwise.
-   *
-   * @param op The JOptionPane.
-   */
-  public void selectInitialValue(JOptionPane op)
-  {
-    if (inputComponent != null)
-      {
-        inputComponent.requestFocus();
-        return;
-      }
-    if (initialFocusComponent != null)
-      initialFocusComponent.requestFocus();
-  }
-
-  /**
-   * This method resets the value in the inputComponent to the
-   * initialSelectionValue property.
-   * This is package-private to avoid an accessor method.
-   */
-  void resetSelectedValue()
-  {
-    if (inputComponent != null)
-      {
-        Object init = optionPane.getInitialSelectionValue();
-        if (init == null)
-          return;
-        if (inputComponent instanceof JTextField)
-          ((JTextField) inputComponent).setText((String) init);
-        else if (inputComponent instanceof JComboBox)
-          ((JComboBox) inputComponent).setSelectedItem(init);
-        else if (inputComponent instanceof JList)
-          {
-            //  ((JList) inputComponent).setSelectedValue(init, true);
-          }
-      }
-  }
-
-  /**
-   * This method uninstalls all the components in the JOptionPane.
-   */
-  protected void uninstallComponents()
-  {
-    optionPane.removeAll();
-    buttonContainer = null;
-    messageAreaContainer = null;
-  }
-
-  /**
-   * This method uninstalls the defaults for the JOptionPane.
-   */
-  protected void uninstallDefaults()
-  {
-    optionPane.setFont(null);
-    optionPane.setForeground(null);
-    optionPane.setBackground(null);
-
-    minimumSize = null;
-
-    // FIXME: ImageIcons don't seem to work properly
-
-    /*
-    warningIcon = null;
-    errorIcon = null;
-    questionIcon = null;
-    infoIcon = null;
-    */
-  }
-
-  /**
-   * This method uninstalls keyboard actions for the JOptionPane.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    SwingUtilities.replaceUIInputMap(optionPane, JComponent.
-                                     WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, null);
-    SwingUtilities.replaceUIActionMap(optionPane, null);
-  }
-
-  /**
-   * This method uninstalls listeners for the JOptionPane.
-   */
-  protected void uninstallListeners()
-  {
-    optionPane.removePropertyChangeListener(propertyChangeListener);
-    propertyChangeListener = null;
-  }
-
-  /**
-   * This method uninstalls the UI for the given JComponent.
-   *
-   * @param c The JComponent to uninstall for.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    uninstallKeyboardActions();
-    uninstallListeners();
-    uninstallComponents();
-    uninstallDefaults();
-
-    optionPane = null;
-  }
-
-  /**
-   * Applies the proper UI configuration to labels that are added to
-   * the OptionPane.
-   *
-   * @param l the label to configure
-   */
-  private void configureLabel(JLabel l)
-  {
-    Color c = UIManager.getColor("OptionPane.messageForeground");
-    if (c != null)
-      l.setForeground(c);
-    Font f = UIManager.getFont("OptionPane.messageFont");
-    if (f != null)
-      l.setFont(f);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicPanelUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicPanelUI.java
deleted file mode 100644
index 959462a..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicPanelUI.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/* BasicPanelUI.java
-   Copyright (C) 2002, 2004, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-import javax.swing.LookAndFeel;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.PanelUI;
-
-/**
- * A UI delegate for the {@link JPanel} component.
- */
-public class BasicPanelUI extends PanelUI
-{
-  /**
-   * A UI delegate that can be shared by all panels (because the delegate is
-   * stateless).
-   */
-  static BasicPanelUI sharedUI;
-
-  /**
-   * Returns a UI delegate for the specified component.
-   *
-   * @param panel  the panel.
-   */
-  public static ComponentUI createUI(JComponent panel)
-  {
-    if (sharedUI == null)
-      sharedUI = new BasicPanelUI();
-    return sharedUI;
-  }
-
-  /**
-   * Installs this UI delegate in the specified component.
-   *
-   * @param c  the component (should be a {@link JPanel}, <code>null</code> not
-   *     permitted).
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    if (c instanceof JPanel)
-      {
-        JPanel p = (JPanel) c;
-        installDefaults(p);
-      }
-  }
-
-  /**
-   * Installs the defaults for this UI delegate in the specified panel.
-   *
-   * @param p  the panel (<code>null</code> not permitted).
-   */
-  protected void installDefaults(JPanel p)
-  {
-    LookAndFeel.installColorsAndFont(p, "Panel.background", "Panel.foreground",
-                                     "Panel.font");
-
-    // A test against the reference implementation shows that this method will
-    // install a border if one is defined in the UIDefaults table (even though
-    // the BasicLookAndFeel doesn't actually define a "Panel.border").  This
-    // test was written after discovering that a null argument to
-    // uninstallDefaults throws a NullPointerException in
-    // LookAndFeel.uninstallBorder()...
-    LookAndFeel.installBorder(p, "Panel.border");
-  }
-
-  /**
-   * Uninstalls this UI delegate from the specified component.
-   *
-   * @param c the component (<code>null</code> not permitted).
-   */
-  public void uninstallUI(JComponent c)
-  {
-    uninstallDefaults((JPanel) c);
-  }
-
-  /**
-   * Uninstalls the UI defaults for the specified panel.
-   *
-   * @param p  the panel (<code>null</code> not permitted).
-   */
-  protected void uninstallDefaults(JPanel p)
-  {
-    // Tests on the reference implementation showed this method:
-    // (1) doesn't actually remove the installed colors and font installed
-    //     by installDefaults(), it isn't necessary;
-    // (2) throws a NullPointerException in LookAndFeel.uninstallBorder() if
-    //     p is null.  Strangely, no border is installed by the
-    //     BasicLookAndFeel - perhaps this is needed by another LAF?
-
-    LookAndFeel.uninstallBorder(p);
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicPasswordFieldUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicPasswordFieldUI.java
deleted file mode 100644
index cc83917..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicPasswordFieldUI.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/* BasicPasswordFieldUI.java
-   Copyright (C) 2004  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import javax.swing.JComponent;
-import javax.swing.UIDefaults;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.text.Element;
-import javax.swing.text.PasswordView;
-import javax.swing.text.View;
-
-public class BasicPasswordFieldUI extends BasicTextFieldUI
-{
-  public BasicPasswordFieldUI()
-  {
-    // Nothing to do here.
-  }
-
-  public View create(Element elem)
-  {
-    return new PasswordView(elem);
-  }
-
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicPasswordFieldUI();
-  }
-
-  /**
-   * Returns the prefix for entries in the {@link UIDefaults} table.
-   *
-   * @return "PasswordField"
-   */
-  protected String getPropertyPrefix()
-  {
-    return "PasswordField";
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java
deleted file mode 100644
index b629477..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/* BasicPopupMenuSeparatorUI.java --
-   Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-
-import javax.swing.JComponent;
-import javax.swing.JPopupMenu;
-import javax.swing.SwingUtilities;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * The Basic Look and Feel UI delegate for JPopupMenu.Separator.
- */
-public class BasicPopupMenuSeparatorUI extends BasicSeparatorUI
-{
-  /**
-   * Creates a new BasicPopupMenuSeparatorUI object.
-   */
-  public BasicPopupMenuSeparatorUI()
-  {
-    super();
-  }
-
-  /**
-   * Creates a new UI delegate for the given JComponent.
-   *
-   * @param c The JComponent to create a delegate for.
-   *
-   * @return A new BasicPopupMenuSeparatorUI
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicPopupMenuSeparatorUI();
-  }
-
-  /**
-   * The Popup Menu Separator has two lines. The top line will be
-   * painted using highlight color and the bottom using shadow color.
-   *
-   * @param g The Graphics object to paint with
-   * @param c The JComponent to paint.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    if (! (c instanceof JPopupMenu.Separator))
-      return;
-
-    Rectangle r = new Rectangle();
-    SwingUtilities.calculateInnerArea(c, r);
-    Color saved = g.getColor();
-
-    int midAB = r.width / 2 + r.x;
-    int midAD = r.height / 2 + r.y;
-
-    g.setColor(highlight);
-    g.drawLine(r.x, midAD, r.x + r.width, midAD);
-
-    g.setColor(shadow);
-    g.drawLine(r.x, midAD + 1, r.x + r.width, midAD + 1);
-  }
-
-  /**
-    * This method returns the preferred size of the
-    * JComponent.
-    *
-    * @param c The JComponent to measure.
-    *
-    * @return The preferred size.
-    */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    return super.getPreferredSize(c);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicPopupMenuUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicPopupMenuUI.java
deleted file mode 100644
index 6cd433b..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicPopupMenuUI.java
+++ /dev/null
@@ -1,1019 +0,0 @@
-/* BasicPopupMenuUI.java
-   Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.basic;
-
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.KeyboardFocusManager;
-import java.awt.event.ActionEvent;
-import java.awt.event.ComponentEvent;
-import java.awt.event.ComponentListener;
-import java.awt.event.MouseEvent;
-import java.util.EventListener;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.ActionMap;
-import javax.swing.BoxLayout;
-import javax.swing.InputMap;
-import javax.swing.JApplet;
-import javax.swing.JComponent;
-import javax.swing.JFrame;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.JMenuItem;
-import javax.swing.JPopupMenu;
-import javax.swing.JRootPane;
-import javax.swing.LookAndFeel;
-import javax.swing.MenuElement;
-import javax.swing.MenuSelectionManager;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.event.PopupMenuEvent;
-import javax.swing.event.PopupMenuListener;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.PopupMenuUI;
-
-/**
- * UI Delegate for JPopupMenu
- */
-public class BasicPopupMenuUI extends PopupMenuUI
-{
-  /**
-   * Handles keyboard navigation through menus.
-   */
-  private static class NavigateAction
-    extends AbstractAction
-  {
-
-    /**
-     * Creates a new NavigateAction instance.
-     *
-     * @param name the name of the action
-     */
-    NavigateAction(String name)
-    {
-      super(name);
-    }
-
-    /**
-     * Actually performs the action.
-     */
-    public void actionPerformed(ActionEvent event)
-    {
-      String name = (String) getValue(Action.NAME);
-      if (name.equals("selectNext"))
-        navigateNextPrevious(true);
-      else if (name.equals("selectPrevious"))
-        navigateNextPrevious(false);
-      else if (name.equals("selectChild"))
-        navigateParentChild(true);
-      else if (name.equals("selectParent"))
-        navigateParentChild(false);
-      else if (name.equals("cancel"))
-        cancel();
-      else if (name.equals("return"))
-        doReturn();
-      else
-        assert false : "Must not reach here";
-    }
-
-    /**
-     * Navigates to the next or previous menu item.
-     *
-     * @param dir <code>true</code>: navigate to next, <code>false</code>:
-     *        navigate to previous
-     */
-    private void navigateNextPrevious(boolean dir)
-    {
-      MenuSelectionManager msm = MenuSelectionManager.defaultManager();
-      MenuElement path[] = msm.getSelectedPath();
-      int len = path.length;
-      if (len >= 2)
-        {
-
-          if (path[0] instanceof JMenuBar &&
-              path[1] instanceof JMenu && len == 2)
-            {
-
-              // A toplevel menu is selected, but its popup not yet shown.
-              // Show the popup and select the first item
-              JPopupMenu popup = ((JMenu)path[1]).getPopupMenu();
-              MenuElement next =
-                findEnabledChild(popup.getSubElements(), -1, true);
-              MenuElement[] newPath;
-
-              if (next != null)
-                {
-                  newPath = new MenuElement[4];
-                  newPath[3] = next;
-                }
-              else
-                {
-                  // Menu has no enabled items, show the popup anyway.
-                  newPath = new MenuElement[3];
-                }
-              System.arraycopy(path, 0, newPath, 0, 2);
-              newPath[2] = popup;
-              msm.setSelectedPath(newPath);
-            }
-          else if (path[len - 1] instanceof JPopupMenu &&
-                   path[len - 2] instanceof JMenu)
-            {
-              // Select next item in already shown popup menu.
-              JMenu menu = (JMenu) path[len - 2];
-              JPopupMenu popup = menu.getPopupMenu();
-              MenuElement next =
-                findEnabledChild(popup.getSubElements(), -1, dir);
-
-              if (next != null)
-                {
-                  MenuElement[] newPath = new MenuElement[len + 1];
-                  System.arraycopy(path, 0, newPath, 0, len);
-                  newPath[len] = next;
-                  msm.setSelectedPath(newPath);
-                }
-              else
-                {
-                  // All items in the popup are disabled.
-                  // Find the parent popup menu and select
-                  // its next item. If there's no parent popup menu , do nothing.
-                  if (len > 2 && path[len - 3] instanceof JPopupMenu)
-                    {
-                      popup = ((JPopupMenu) path[len - 3]);
-                      next = findEnabledChild(popup.getSubElements(),
-                                              menu, dir);
-                      if (next != null && next != menu)
-                        {
-                          MenuElement[] newPath = new MenuElement[len - 1];
-                          System.arraycopy(path, 0, newPath, 0, len - 2);
-                          newPath[len - 2] = next;
-                          msm.setSelectedPath(newPath);
-                        }
-                    }
-                }
-            }
-          else
-            {
-              // Only select the next item.
-              MenuElement subs[] = path[len - 2].getSubElements();
-              MenuElement nextChild =
-                findEnabledChild(subs, path[len - 1], dir);
-              if (nextChild == null)
-                {
-                  nextChild = findEnabledChild(subs, -1, dir);
-                }
-              if (nextChild != null)
-                {
-                  path[len-1] = nextChild;
-                  msm.setSelectedPath(path);
-                }
-            }
-        }
-    }
-
-    private MenuElement findEnabledChild(MenuElement[] children,
-                                         MenuElement start, boolean dir)
-    {
-      MenuElement found = null;
-      for (int i = 0; i < children.length && found == null; i++)
-        {
-          if (children[i] == start)
-            {
-              found = findEnabledChild(children, i, dir);
-            }
-        }
-      return found;
-    }
-
-    /**
-     * Searches the next or previous enabled child menu element.
-     *
-     * @param children the children to search through
-     * @param start the index at which to start
-     * @param dir the direction (true == forward, false == backward)
-     *
-     * @return the found element or null
-     */
-    private MenuElement findEnabledChild(MenuElement[] children,
-                                         int start, boolean dir)
-    {
-      MenuElement result = null;
-      if (dir)
-        {
-          result = findNextEnabledChild(children, start + 1, children.length-1);
-          if (result == null)
-            result = findNextEnabledChild(children, 0, start - 1);
-        }
-      else
-        {
-          result = findPreviousEnabledChild(children, start - 1, 0);
-          if (result == null)
-            result = findPreviousEnabledChild(children, children.length-1,
-                                          start + 1);
-        }
-      return result;
-    }
-
-    /**
-     * Finds the next child element that is enabled and visible.
-     *
-     * @param children the children to search through
-     * @param start the start index
-     * @param end the end index
-     *
-     * @return the found child, or null
-     */
-    private MenuElement findNextEnabledChild(MenuElement[] children, int start,
-                                             int end)
-    {
-      MenuElement found = null;
-      for (int i = start; i <= end && found == null; i++)
-        {
-          if (children[i] != null)
-            {
-              Component comp = children[i].getComponent();
-              if (comp != null && comp.isEnabled() && comp.isVisible())
-                {
-                  found = children[i];
-                }
-            }
-        }
-      return found;
-    }
-
-    /**
-     * Finds the previous child element that is enabled and visible.
-     *
-     * @param children the children to search through
-     * @param start the start index
-     * @param end the end index
-     *
-     * @return the found child, or null
-     */
-    private MenuElement findPreviousEnabledChild(MenuElement[] children,
-                                                 int start, int end)
-    {
-      MenuElement found = null;
-      for (int i = start; i >= end && found == null; i--)
-        {
-          if (children[i] != null)
-            {
-              Component comp = children[i].getComponent();
-              if (comp != null && comp.isEnabled() && comp.isVisible())
-                {
-                  found = children[i];
-                }
-            }
-        }
-      return found;
-    }
-
-    /**
-     * Navigates to the parent or child menu item.
-     *
-     * @param selectChild <code>true</code>: navigate to child,
-     *        <code>false</code>: navigate to parent
-     */
-    private void navigateParentChild(boolean selectChild)
-    {
-      MenuSelectionManager msm = MenuSelectionManager.defaultManager();
-      MenuElement path[] = msm.getSelectedPath();
-      int len = path.length;
-
-      if (selectChild)
-        {
-          if (len > 0 && path[len - 1] instanceof JMenu
-              && ! ((JMenu) path[len-1]).isTopLevelMenu())
-            {
-              // We have a submenu, open it.
-              JMenu menu = (JMenu) path[len - 1];
-              JPopupMenu popup = menu.getPopupMenu();
-              MenuElement[] subs = popup.getSubElements();
-              MenuElement item = findEnabledChild(subs, -1, true);
-              MenuElement[] newPath;
-
-              if (item == null)
-                {
-                  newPath = new MenuElement[len + 1];
-                }
-              else
-                {
-                  newPath = new MenuElement[len + 2];
-                  newPath[len + 1] = item;
-                }
-              System.arraycopy(path, 0, newPath, 0, len);
-              newPath[len] = popup;
-              msm.setSelectedPath(newPath);
-              return;
-            }
-        }
-      else
-        {
-          int popupIndex = len-1;
-          if (len > 2
-              && (path[popupIndex] instanceof JPopupMenu
-                  || path[--popupIndex] instanceof JPopupMenu)
-                  && ! ((JMenu) path[popupIndex - 1]).isTopLevelMenu())
-            {
-              // We have a submenu, close it.
-              MenuElement newPath[] = new MenuElement[popupIndex];
-              System.arraycopy(path, 0, newPath, 0, popupIndex);
-              msm.setSelectedPath(newPath);
-              return;
-            }
-        }
-
-      // If we got here, we have not selected a child or parent.
-      // Check if we have a toplevel menu selected. If so, then select
-      // another one.
-      if (len > 1 && path[0] instanceof JMenuBar)
-        {
-          MenuElement currentMenu = path[1];
-          MenuElement nextMenu = findEnabledChild(path[0].getSubElements(),
-                                                  currentMenu, selectChild);
-
-          if (nextMenu != null && nextMenu != currentMenu)
-            {
-              MenuElement newSelection[];
-              if (len == 2)
-                {
-                  // Menu is selected but its popup not shown.
-                  newSelection = new MenuElement[2];
-                  newSelection[0] = path[0];
-                  newSelection[1] = nextMenu;
-                }
-              else
-                {
-                  // Menu is selected and its popup is shown.
-                  newSelection = new MenuElement[3];
-                  newSelection[0] = path[0];
-                  newSelection[1] = nextMenu;
-                  newSelection[2] = ((JMenu) nextMenu).getPopupMenu();
-                }
-              msm.setSelectedPath(newSelection);
-            }
-        }
-    }
-
-    /**
-     * Handles cancel requests (ESC key).
-     */
-    private void cancel()
-    {
-      // Fire popup menu cancelled event. Unfortunately the
-      // firePopupMenuCancelled() is protected in JPopupMenu so we work
-      // around this limitation by fetching the listeners and notifying them
-      // directly.
-      JPopupMenu lastPopup = (JPopupMenu) getLastPopup();
-      EventListener[] ll = lastPopup.getListeners(PopupMenuListener.class);
-      for (int i = 0; i < ll.length; i++)
-        {
-          PopupMenuEvent ev = new PopupMenuEvent(lastPopup);
-          ((PopupMenuListener) ll[i]).popupMenuCanceled(ev);
-        }
-
-      // Close the last popup or the whole selection if there's only one
-      // popup left.
-      MenuSelectionManager msm = MenuSelectionManager.defaultManager();
-      MenuElement path[] = msm.getSelectedPath();
-      if(path.length > 4)
-        {
-          MenuElement newPath[] = new MenuElement[path.length - 2];
-          System.arraycopy(path,0,newPath,0,path.length-2);
-          MenuSelectionManager.defaultManager().setSelectedPath(newPath);
-        }
-      else
-          msm.clearSelectedPath();
-    }
-
-    /**
-     * Returns the last popup menu in the current selection or null.
-     *
-     * @return the last popup menu in the current selection or null
-     */
-    private JPopupMenu getLastPopup()
-    {
-      MenuSelectionManager msm = MenuSelectionManager.defaultManager();
-      MenuElement[] p = msm.getSelectedPath();
-      JPopupMenu popup = null;
-      for(int i = p.length - 1; popup == null && i >= 0; i--)
-        {
-          if (p[i] instanceof JPopupMenu)
-            popup = (JPopupMenu) p[i];
-        }
-      return popup;
-    }
-
-    /**
-     * Handles ENTER key requests. This normally opens submenus on JMenu
-     * items, or activates the menu item as if it's been clicked on it.
-     */
-    private void doReturn()
-    {
-      KeyboardFocusManager fmgr =
-        KeyboardFocusManager.getCurrentKeyboardFocusManager();
-      Component focusOwner = fmgr.getFocusOwner();
-      if((focusOwner == null || (focusOwner instanceof JRootPane)))
-        {
-          MenuSelectionManager msm = MenuSelectionManager.defaultManager();
-          MenuElement path[] = msm.getSelectedPath();
-          MenuElement lastElement;
-          if(path.length > 0)
-            {
-              lastElement = path[path.length - 1];
-              if(lastElement instanceof JMenu)
-                {
-                  MenuElement newPath[] = new MenuElement[path.length + 1];
-                  System.arraycopy(path,0,newPath,0,path.length);
-                  newPath[path.length] = ((JMenu) lastElement).getPopupMenu();
-                  msm.setSelectedPath(newPath);
-                }
-              else if(lastElement instanceof JMenuItem)
-                {
-                  JMenuItem mi = (JMenuItem)lastElement;
-                  if (mi.getUI() instanceof BasicMenuItemUI)
-                    {
-                      ((BasicMenuItemUI)mi.getUI()).doClick(msm);
-                    }
-                  else
-                    {
-                      msm.clearSelectedPath();
-                      mi.doClick(0);
-                    }
-                }
-            }
-        }
-    }
-  }
-
-  /**
-   * Installs keyboard actions when a popup is opened, and uninstalls the
-   * keyboard actions when closed. This listens on the default
-   * MenuSelectionManager.
-   */
-  private class KeyboardHelper
-    implements ChangeListener
-  {
-    private MenuElement[] lastSelectedPath = new MenuElement[0];
-    private Component lastFocused;
-    private JRootPane invokerRootPane;
-
-    public void stateChanged(ChangeEvent event)
-    {
-      MenuSelectionManager msm = (MenuSelectionManager) event.getSource();
-      MenuElement[] p = msm.getSelectedPath();
-      JPopupMenu popup = getActivePopup(p);
-      if (popup == null || popup.isFocusable())
-        {
-          if (lastSelectedPath.length != 0 && p.length != 0 )
-            {
-              if (! invokerEquals(p[0], lastSelectedPath[0]))
-                {
-                  uninstallKeyboardActionsImpl();
-                  lastSelectedPath = new MenuElement[0];
-                }
-            }
-
-          if (lastSelectedPath.length == 0 && p.length > 0)
-            {
-              JComponent invoker;
-              if (popup == null)
-                {
-                  if (p.length == 2 && p[0] instanceof JMenuBar
-                      && p[1] instanceof JMenu)
-                    {
-                      // A menu has been selected but not opened.
-                      invoker = (JComponent)p[1];
-                      popup = ((JMenu)invoker).getPopupMenu();
-                    }
-                  else
-                    {
-                      return;
-                    }
-                }
-              else
-                {
-                Component c = popup.getInvoker();
-                if(c instanceof JFrame)
-                  {
-                    invoker = ((JFrame) c).getRootPane();
-                  }
-                else if(c instanceof JApplet)
-                  {
-                    invoker = ((JApplet) c).getRootPane();
-                  }
-                else
-                  {
-                    while (!(c instanceof JComponent))
-                      {
-                        if (c == null)
-                          {
-                            return;
-                          }
-                        c = c.getParent();
-                      }
-                    invoker = (JComponent)c;
-                  }
-                }
-
-              // Remember current focus owner.
-              lastFocused = KeyboardFocusManager.
-                             getCurrentKeyboardFocusManager().getFocusOwner();
-
-              // Install keybindings used for menu navigation.
-              invokerRootPane = SwingUtilities.getRootPane(invoker);
-              if (invokerRootPane != null)
-                {
-                  invokerRootPane.requestFocus(true);
-                  installKeyboardActionsImpl();
-                }
-            }
-          else if (lastSelectedPath.length != 0 && p.length == 0)
-            {
-              // menu hidden -- return focus to where it had been before
-              // and uninstall menu keybindings
-              uninstallKeyboardActionsImpl();
-            }
-        }
-
-      // Remember the last path selected
-      lastSelectedPath = p;
-    }
-
-    private JPopupMenu getActivePopup(MenuElement[] path)
-    {
-      JPopupMenu active = null;
-      for (int i = path.length - 1; i >= 0 && active == null; i--)
-        {
-          MenuElement elem = path[i];
-          if (elem instanceof JPopupMenu)
-            {
-              active = (JPopupMenu) elem;
-            }
-        }
-      return active;
-    }
-
-    private boolean invokerEquals(MenuElement el1, MenuElement el2)
-    {
-      Component invoker1 = el1.getComponent();
-      Component invoker2 = el2.getComponent();
-      if (invoker1 instanceof JPopupMenu)
-        invoker1 = ((JPopupMenu) invoker1).getInvoker();
-      if (invoker2 instanceof JPopupMenu)
-        invoker2 = ((JPopupMenu) invoker2).getInvoker();
-      return invoker1 == invoker2;
-    }
-  }
-
-  /* popupMenu for which this UI delegate is for*/
-  protected JPopupMenu popupMenu;
-
-  /* PopupMenuListener listens to popup menu events fired by JPopupMenu*/
-  private transient PopupMenuListener popupMenuListener;
-
-  /* ComponentListener listening to popupMenu's invoker.
-   * This is package-private to avoid an accessor method.  */
-  TopWindowListener topWindowListener;
-
-  /**
-   * Counts how many popup menus are handled by this UI or a subclass.
-   * This is used to install a KeyboardHelper on the MenuSelectionManager
-   * for the first popup, and uninstall this same KeyboardHelper when the
-   * last popup is uninstalled.
-   */
-  private static int numPopups;
-
-  /**
-   * This is the KeyboardHelper that listens on the MenuSelectionManager.
-   */
-  private static KeyboardHelper keyboardHelper;
-
-  /**
-   * Creates a new BasicPopupMenuUI object.
-   */
-  public BasicPopupMenuUI()
-  {
-    popupMenuListener = new PopupMenuHandler();
-    topWindowListener = new TopWindowListener();
-  }
-
-  /**
-   * Factory method to create a BasicPopupMenuUI for the given {@link
-   * JComponent}, which should be a {@link JMenuItem}.
-   *
-   * @param x The {@link JComponent} a UI is being created for.
-   *
-   * @return A BasicPopupMenuUI for the {@link JComponent}.
-   */
-  public static ComponentUI createUI(JComponent x)
-  {
-    return new BasicPopupMenuUI();
-  }
-
-  /**
-   * Installs and initializes all fields for this UI delegate. Any properties
-   * of the UI that need to be initialized and/or set to defaults will be
-   * done now. It will also install any listeners necessary.
-   *
-   * @param c The {@link JComponent} that is having this UI installed.
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-
-    // Install KeyboardHelper when the first popup is initialized.
-    if (numPopups == 0)
-      {
-        keyboardHelper = new KeyboardHelper();
-        MenuSelectionManager msm = MenuSelectionManager.defaultManager();
-        msm.addChangeListener(keyboardHelper);
-      }
-    numPopups++;
-
-    popupMenu = (JPopupMenu) c;
-    popupMenu.setLayout(new DefaultMenuLayout(popupMenu, BoxLayout.Y_AXIS));
-    popupMenu.setBorderPainted(true);
-    JPopupMenu.setDefaultLightWeightPopupEnabled(true);
-
-    installDefaults();
-    installListeners();
-    installKeyboardActions();
-  }
-
-  /**
-   * This method installs the defaults that are defined in  the Basic look
-   * and feel for this {@link JPopupMenu}.
-   */
-  public void installDefaults()
-  {
-    LookAndFeel.installColorsAndFont(popupMenu, "PopupMenu.background",
-                                     "PopupMenu.foreground", "PopupMenu.font");
-    LookAndFeel.installBorder(popupMenu, "PopupMenu.border");
-    popupMenu.setOpaque(true);
-  }
-
-  /**
-   * This method installs the listeners for the {@link JMenuItem}.
-   */
-  protected void installListeners()
-  {
-    popupMenu.addPopupMenuListener(popupMenuListener);
-  }
-
-  /**
-   * This method installs the keyboard actions for this {@link JPopupMenu}.
-   */
-  protected void installKeyboardActions()
-  {
-    // We can't install the keyboard actions here, because then all
-    // popup menus would have their actions registered in the KeyboardManager.
-    // So we install it when the popup menu is opened, and uninstall it
-    // when it's closed. This is done in the KeyboardHelper class.
-    // Install InputMap.
-  }
-
-  /**
-   * Called by the KeyboardHandler when a popup is made visible.
-   */
-  void installKeyboardActionsImpl()
-  {
-    Object[] bindings;
-    if (popupMenu.getComponentOrientation().isLeftToRight())
-      {
-        bindings = (Object[])
-             SharedUIDefaults.get("PopupMenu.selectedWindowInputMapBindings");
-      }
-    else
-      {
-        bindings = (Object[]) SharedUIDefaults.get
-                      ("PopupMenu.selectedWindowInputMapBindings.RightToLeft");
-      }
-    InputMap inputMap = LookAndFeel.makeComponentInputMap(popupMenu, bindings);
-    SwingUtilities.replaceUIInputMap(popupMenu,
-                                     JComponent.WHEN_IN_FOCUSED_WINDOW,
-                                     inputMap);
-
-    // Install ActionMap.
-    SwingUtilities.replaceUIActionMap(popupMenu, getActionMap());
-  }
-
-  /**
-   * Creates and returns the shared action map for JTrees.
-   *
-   * @return the shared action map for JTrees
-   */
-  private ActionMap getActionMap()
-  {
-    ActionMap am = (ActionMap) UIManager.get("PopupMenu.actionMap");
-    if (am == null)
-      {
-        am = createDefaultActions();
-        UIManager.getLookAndFeelDefaults().put("PopupMenu.actionMap", am);
-      }
-    return am;
-  }
-
-  /**
-   * Creates the default actions when there are none specified by the L&F.
-   *
-   * @return the default actions
-   */
-  private ActionMap createDefaultActions()
-  {
-    ActionMapUIResource am = new ActionMapUIResource();
-    Action action = new NavigateAction("selectNext");
-    am.put(action.getValue(Action.NAME), action);
-    action = new NavigateAction("selectPrevious");
-    am.put(action.getValue(Action.NAME), action);
-    action = new NavigateAction("selectParent");
-    am.put(action.getValue(Action.NAME), action);
-    action = new NavigateAction("selectChild");
-    am.put(action.getValue(Action.NAME), action);
-    action = new NavigateAction("return");
-    am.put(action.getValue(Action.NAME), action);
-    action = new NavigateAction("cancel");
-    am.put(action.getValue(Action.NAME), action);
-
-    return am;
-  }
-
-  /**
-   * Performs the opposite of installUI. Any properties or resources that need
-   * to be cleaned up will be done now. It will also uninstall any listeners
-   * it has. In addition, any properties of this UI will be nulled.
-   *
-   * @param c The {@link JComponent} that is having this UI uninstalled.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    uninstallListeners();
-    uninstallDefaults();
-    uninstallKeyboardActions();
-    popupMenu = null;
-
-    // Install KeyboardHelper when the first popup is initialized.
-    numPopups--;
-    if (numPopups == 0)
-      {
-        MenuSelectionManager msm = MenuSelectionManager.defaultManager();
-        msm.removeChangeListener(keyboardHelper);
-      }
-
-  }
-
-  /**
-   * This method uninstalls the defaults and sets any objects created during
-   * install to null
-   */
-  protected void uninstallDefaults()
-  {
-    popupMenu.setBackground(null);
-    popupMenu.setBorder(null);
-    popupMenu.setFont(null);
-    popupMenu.setForeground(null);
-  }
-
-  /**
-   * Unregisters all the listeners that this UI delegate was using.
-   */
-  protected void uninstallListeners()
-  {
-    popupMenu.removePopupMenuListener(popupMenuListener);
-  }
-
-  /**
-   * Uninstalls any keyboard actions.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    // We can't install the keyboard actions here, because then all
-    // popup menus would have their actions registered in the KeyboardManager.
-    // So we install it when the popup menu is opened, and uninstall it
-    // when it's closed. This is done in the KeyboardHelper class.
-    // Install InputMap.
-  }
-
-  /**
-   * Called by the KeyboardHandler when a popup is made invisible.
-   */
-  void uninstallKeyboardActionsImpl()
-  {
-    SwingUtilities.replaceUIInputMap(popupMenu,
-                                     JComponent.WHEN_IN_FOCUSED_WINDOW, null);
-    SwingUtilities.replaceUIActionMap(popupMenu, null);
-  }
-
-  /**
-   * This method returns the minimum size of the JPopupMenu.
-   *
-   * @param c The JComponent to find a size for.
-   *
-   * @return The minimum size.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    return null;
-  }
-
-  /**
-   * This method returns the preferred size of the JPopupMenu.
-   *
-   * @param c The JComponent to find a size for.
-   *
-   * @return The preferred size.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    return null;
-  }
-
-  /**
-   * This method returns the minimum size of the JPopupMenu.
-   *
-   * @param c The JComponent to find a size for.
-   *
-   * @return The minimum size.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return null;
-  }
-
-  /**
-   * Return true if given mouse event is a platform popup trigger, and false
-   * otherwise
-   *
-   * @param e MouseEvent that is to be checked for popup trigger event
-   *
-   * @return true if given mouse event is a platform popup trigger, and false
-   *         otherwise
-   */
-  public boolean isPopupTrigger(MouseEvent e)
-  {
-    return false;
-  }
-
-  /**
-   * This listener handles PopupMenuEvents fired by JPopupMenu
-   */
-  private class PopupMenuHandler implements PopupMenuListener
-  {
-    /**
-     * This method is invoked when JPopupMenu is cancelled.
-     *
-     * @param event the PopupMenuEvent
-     */
-    public void popupMenuCanceled(PopupMenuEvent event)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      manager.clearSelectedPath();
-    }
-
-    /**
-     * This method is invoked when JPopupMenu becomes invisible
-     *
-     * @param event the PopupMenuEvent
-     */
-    public void popupMenuWillBecomeInvisible(PopupMenuEvent event)
-    {
-      // remove listener that listens to component events fired
-      // by the top - level window that this popup belongs to.
-      Component invoker = popupMenu.getInvoker();
-      Component rootContainer = SwingUtilities.getRoot(invoker);
-      if (rootContainer != null)
-        rootContainer.removeComponentListener(topWindowListener);
-    }
-
-    /**
-     * This method is invoked when JPopupMenu becomes visible
-     *
-     * @param event the PopupMenuEvent
-     */
-    public void popupMenuWillBecomeVisible(PopupMenuEvent event)
-    {
-      // Adds topWindowListener to top-level window to listener to
-      // ComponentEvents fired by it. We need to cancel this popup menu
-      // if topWindow to which this popup belongs was resized or moved.
-      Component invoker = popupMenu.getInvoker();
-      Component rootContainer = SwingUtilities.getRoot(invoker);
-      if (rootContainer != null)
-        rootContainer.addComponentListener(topWindowListener);
-
-      // if this popup menu is a free floating popup menu,
-      // then by default its first element should be always selected when
-      // this popup menu becomes visible.
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-
-      if (manager.getSelectedPath().length == 0)
-        {
-          // Set selected path to point to the first item in the popup menu
-          MenuElement[] path = new MenuElement[2];
-          path[0] = popupMenu;
-          Component[] comps = popupMenu.getComponents();
-          if (comps.length != 0 && comps[0] instanceof MenuElement)
-            {
-              path[1] = (MenuElement) comps[0];
-              manager.setSelectedPath(path);
-            }
-        }
-    }
-  }
-
-  /**
-   * ComponentListener that listens to Component Events fired by the top -
-   * level window to which popup menu belongs. If top-level window was
-   * resized, moved or hidded then popup menu will be hidded and selected
-   * path of current menu hierarchy will be set to null.
-   */
-  private class TopWindowListener implements ComponentListener
-  {
-    /**
-     * This method is invoked when top-level window is resized. This method
-     * closes current menu hierarchy.
-     *
-     * @param e The ComponentEvent
-     */
-    public void componentResized(ComponentEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      manager.clearSelectedPath();
-    }
-
-    /**
-     * This method is invoked when top-level window is moved. This method
-     * closes current menu hierarchy.
-     *
-     * @param e The ComponentEvent
-     */
-    public void componentMoved(ComponentEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      manager.clearSelectedPath();
-    }
-
-    /**
-     * This method is invoked when top-level window is shown This method
-     * does nothing by default.
-     *
-     * @param e The ComponentEvent
-     */
-    public void componentShown(ComponentEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      manager.clearSelectedPath();
-    }
-
-    /**
-     * This method is invoked when top-level window is hidden This method
-     * closes current menu hierarchy.
-     *
-     * @param e The ComponentEvent
-     */
-    public void componentHidden(ComponentEvent e)
-    {
-      MenuSelectionManager manager = MenuSelectionManager.defaultManager();
-      manager.clearSelectedPath();
-    }
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicProgressBarUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicProgressBarUI.java
deleted file mode 100644
index bff6385..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicProgressBarUI.java
+++ /dev/null
@@ -1,962 +0,0 @@
-/* BasicProgressBarUI.java --
-   Copyright (C) 2004, 2005  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.Shape;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
-import java.awt.event.ComponentListener;
-import java.awt.geom.AffineTransform;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.JComponent;
-import javax.swing.JProgressBar;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.Timer;
-import javax.swing.UIManager;
-import javax.swing.event.AncestorEvent;
-import javax.swing.event.AncestorListener;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ProgressBarUI;
-
-/**
- * The Basic Look and Feel UI delegate for the
- * JProgressBar.
- */
-public class BasicProgressBarUI extends ProgressBarUI
-{
-  /**
-   * A helper class that listens for ChangeEvents
-   * from the progressBar's model.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class ChangeHandler implements ChangeListener
-  {
-    /**
-     * Called every time the state of the model changes.
-     *
-     * @param e The ChangeEvent given by the model.
-     */
-    public void stateChanged(ChangeEvent e)
-    {
-      // Nothing to do but repaint.
-      progressBar.repaint();
-    }
-  }
-
-  /**
-   * This helper class is used to listen for
-   * PropertyChangeEvents from the progressBar.
-   */
-  private class PropertyChangeHandler implements PropertyChangeListener
-  {
-    /**
-     * Called every time the properties of the
-     * progressBar change.
-     *
-     * @param e The PropertyChangeEvent given by the progressBar.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      // Only need to listen for indeterminate changes.
-      // All other things are done on a repaint.
-      if (e.getPropertyName().equals("indeterminate"))
-        if (((Boolean) e.getNewValue()).booleanValue()
-            && progressBar.isShowing())
-          startAnimationTimer();
-        else
-          stopAnimationTimer();
-    }
-  }
-
-  /**
-   * Receives notification when the progressbar is becoming visible or
-   * invisible and starts/stops the animation timer accordingly.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  private class AncestorHandler implements AncestorListener
-  {
-
-    /**
-     * Receives notification when the progressbar is becoming visible. This
-     * starts the animation timer if the progressbar is indeterminate.
-     *
-     * @param event the ancestor event
-     */
-    public void ancestorAdded(AncestorEvent event)
-    {
-      if (progressBar.isIndeterminate())
-        startAnimationTimer();
-    }
-
-    /**
-     * Receives notification when the progressbar is becoming invisible. This
-     * stops the animation timer if the progressbar is indeterminate.
-     *
-     * @param event the ancestor event
-     */
-    public void ancestorRemoved(AncestorEvent event)
-    {
-      stopAnimationTimer();
-    }
-
-    /**
-     * Receives notification when an ancestor has been moved. We don't need to
-     * do anything here.
-     */
-    public void ancestorMoved(AncestorEvent event)
-    {
-      // Nothing to do here.
-    }
-
-  }
-
-  /**
-   * This helper class is used to listen for
-   * the animationTimer's intervals. On every interval,
-   * the bouncing box should move.
-   */
-  private class Animator implements ActionListener
-  {
-    /**
-     * Called every time the animationTimer reaches
-     * its interval.
-     *
-     * @param e The ActionEvent given by the timer.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      // Incrementing the animation index will cause
-      // a repaint.
-      incrementAnimationIndex();
-    }
-  }
-
-  /**
-   * Receives notification when the size of the progress bar changes and
-   * invalidates the layout information for the box calculation in
-   * {@link BasicProgressBarUI#getBox(Rectangle)}.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  private class ComponentHandler extends ComponentAdapter
-  {
-    /**
-     * Receives notification when the size of the progress bar changes and
-     * invalidates the layout information for the box calculation in
-     * {@link BasicProgressBarUI#getBox}.
-     *
-     * @param e the component event
-     */
-    public void componentResized(ComponentEvent e)
-    {
-      boxDependent = -1;
-      boxIndependent = -1;
-      incr = -1;
-    }
-  }
-
-  /**
-   * Holds the value of the bouncing box that is returned by {@link #getBox}.
-   *
-   * @since 1.5
-   */
-  protected Rectangle boxRect;
-
-  /** The timer used to move the bouncing box. */
-  private transient Timer animationTimer;
-
-  // The total number of frames must be an even number.
-  // The total number of frames is calculated from
-  // the cycleTime and repaintInterval given by
-  // the basic Look and Feel defaults.
-  //
-  // +-----------------------------------------------+
-  // | frame0 | frame1 | frame2 | frame 3 | frame 4  |
-  // |        | frame7 | frame6 | frame 5 |          |
-  // +-----------------------------------------------+
-
-  /** The current animation index. */
-  private transient int animationIndex;
-
-  /** The total number of frames.*/
-  private transient int numFrames;
-
-  /** The helper that moves the bouncing box. */
-  private transient Animator animation;
-
-  /** The helper that listens for property change events. */
-  private transient PropertyChangeHandler propertyListener;
-
-  /** The Listener for the model. */
-  protected ChangeListener changeListener;
-
-  /** The progressBar for this UI. */
-  protected JProgressBar progressBar;
-
-
-  /**
-   * The size of the box returned by {@link #getBox} in the orientation
-   * direction of the progress bar. This is package private to avoid accessor
-   * method.
-   */
-  transient double boxDependent = - 1;
-
-  /**
-   * The size of the box returned by {@link #getBox} against the orientation
-   * direction of the progress bar. This is package private to avoid accessor
-   * method.
-   */
-  transient int boxIndependent = - 1;
-
-  /**
-   * The increment for box animation. This is package private to avoid accessor
-   * method.
-   */
-  transient double incr = -1;
-
-  /** The length of the cell. The cell is the painted part. */
-  private transient int cellLength;
-
-  /** The gap between cells. */
-  private transient int cellSpacing;
-
-  /** The color of the text when the bar is not over it.*/
-  private transient Color selectionBackground;
-
-  /** The color of the text when the bar is over it. */
-  private transient Color selectionForeground;
-
-  /**
-   * Listens for notification when the component becomes showing and
-   * starts/stops the animation timer.
-   */
-  private AncestorListener ancestorListener;
-
-  /**
-   * Listens for resize events on the progress bar and invalidates some
-   * layout info.
-   */
-  private ComponentListener componentListener;
-
-  /**
-   * Creates a new BasicProgressBarUI object.
-   */
-  public BasicProgressBarUI()
-  {
-    super();
-  }
-
-  /**
-   * Creates a new BasicProgressBarUI for the component.
-   *
-   * @param x The JComponent to create the UI for.
-   *
-   * @return A new BasicProgressBarUI.
-   */
-  public static ComponentUI createUI(JComponent x)
-  {
-    return new BasicProgressBarUI();
-  }
-
-  /**
-   * This method returns the length of the bar (from the minimum)
-   * in pixels (or units that the Graphics object draws in) based
-   * on the progressBar's getPercentComplete() value.
-   *
-   * @param b The insets of the progressBar.
-   * @param width The width of the progressBar.
-   * @param height The height of the progressBar.
-   *
-   * @return The length of the bar that should be painted in pixels.
-   */
-  protected int getAmountFull(Insets b, int width, int height)
-  {
-    double percentDone = progressBar.getPercentComplete();
-    if (progressBar.getOrientation() == JProgressBar.HORIZONTAL)
-      return (int) (percentDone * (width - b.left - b.right));
-    else
-      return (int) (percentDone * (height - b.top - b.bottom));
-  }
-
-  /**
-   * The current animation index.
-   *
-   * @return The current animation index.
-   */
-  protected int getAnimationIndex()
-  {
-    return animationIndex;
-  }
-
-  /**
-   * This method returns the size and position of the bouncing box
-   * for the current animation index. It stores the values in the
-   * given rectangle and returns it. It returns null if no box should
-   * be drawn.
-   *
-   * @param r The bouncing box rectangle.
-   *
-   * @return The bouncing box rectangle.
-   */
-  protected Rectangle getBox(Rectangle r)
-  {
-    if (!progressBar.isIndeterminate())
-      return null;
-    if (r == null)
-      r = new Rectangle();
-
-    Rectangle vr = new Rectangle();
-    SwingUtilities.calculateInnerArea(progressBar, vr);
-
-    // Recalculate the metrics only when size of the progressbar has changed.
-    if (incr == -1 || boxDependent == -1 || boxIndependent == -1)
-      {
-        //numFrames has to be an even number as defined by spec.
-        int iterations = numFrames / 2;
-        if (progressBar.getOrientation() == JProgressBar.HORIZONTAL)
-          {
-            boxDependent = vr.width / 6.;
-            incr = ((double) (vr.width - boxDependent)) / (double) iterations;
-            boxIndependent = vr.height;
-          }
-        else
-          {
-            boxDependent = vr.height / 6.;
-            incr = ((double) (vr.height - boxDependent)) / (double) iterations;
-            boxIndependent = vr.width;
-          }
-      }
-
-    int index = getAnimationIndex();
-    if (animationIndex > numFrames / 2)
-      index = numFrames - getAnimationIndex();
-
-    if (progressBar.getOrientation() == JProgressBar.HORIZONTAL)
-      {
-        r.x = vr.x + (int) (incr * index);
-        r.y = vr.y;
-        r.width = (int) boxDependent;
-        r.height = (int) boxIndependent;
-      }
-    else
-      {
-        r.x = vr.x;
-        r.y = vr.height - (int) (incr * index) + vr.y - (int) boxDependent;
-        r.width = (int) boxIndependent;
-        r.height = (int) boxDependent;
-      }
-    return r;
-  }
-
-  /**
-   * This method returns the length of the cells.
-   *
-   * @return The cell length.
-   */
-  protected int getCellLength()
-  {
-    return cellLength;
-  }
-
-  /**
-   * This method returns the spacing between cells.
-   *
-   * @return The cell gap.
-   */
-  protected int getCellSpacing()
-  {
-    return cellSpacing;
-  }
-
-  /**
-   * This method returns the maximum size of the JComponent.
-   * If it returns null, it is up to the LayoutManager
-   * to give it a size.
-   *
-   * @param c The component to find a maximum size for.
-   *
-   * @return The maximum size.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Insets insets = c.getInsets();
-    Dimension ret;
-    int orientation = progressBar.getOrientation();
-    if (orientation == JProgressBar.VERTICAL)
-      {
-        ret = getPreferredInnerVertical();
-        ret.height = Short.MAX_VALUE;
-        ret.width += insets.left + insets.right;
-      }
-    else
-      {
-        ret = getPreferredInnerHorizontal();
-        ret.width = Short.MAX_VALUE;
-        ret.height += insets.top + insets.bottom;
-      }
-    return ret;
-  }
-
-  /**
-   * This method returns the minimum size of the JComponent.
-   * If it returns null, it is up to the LayoutManager to
-   * give it a size.
-   *
-   * @param c The component to find a minimum size for.
-   *
-   * @return The minimum size.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Insets insets = c.getInsets();
-    Dimension ret;
-    int orientation = progressBar.getOrientation();
-    if (orientation == JProgressBar.VERTICAL)
-      {
-        ret = getPreferredInnerVertical();
-        ret.height = 10;
-        ret.width += insets.left + insets.right;
-      }
-    else
-      {
-        ret = getPreferredInnerHorizontal();
-        ret.width = 10;
-        ret.height += insets.top + insets.bottom;
-      }
-    return ret;
-  }
-
-  /**
-   * This method returns the preferred size of the inner
-   * rectangle (the bounds without the insets) if the
-   * progressBar is horizontal.
-   *
-   * @return The preferred size of the progressBar minus
-   *         insets if it's horizontal.
-   */
-  protected Dimension getPreferredInnerHorizontal()
-  {
-    Font font = progressBar.getFont();
-    FontMetrics fm = progressBar.getFontMetrics(font);
-
-    int stringWidth = 0;
-    String str = progressBar.getString();
-    if (str != null)
-      stringWidth = fm.stringWidth(progressBar.getString());
-    Insets i = progressBar.getInsets();
-    int prefWidth = Math.max(200 - i.left - i.right, stringWidth);
-
-    int stringHeight = 0;
-    if (str != null)
-      stringHeight = fm.getHeight();
-    int prefHeight = Math.max(16 - i.top - i.bottom, stringHeight);
-
-    return new Dimension(prefWidth, prefHeight);
-  }
-
-  /**
-   * This method returns the preferred size of the inner
-   * rectangle (the bounds without insets) if the
-   * progressBar is vertical.
-   *
-   * @return The preferred size of the progressBar minus
-   *         insets if it's vertical.
-   */
-  protected Dimension getPreferredInnerVertical()
-  {
-    Font font = progressBar.getFont();
-    FontMetrics fm = progressBar.getFontMetrics(font);
-
-    int stringWidth = 0;
-    String str = progressBar.getString();
-    if (str != null)
-      stringWidth = fm.stringWidth(progressBar.getString());
-    Insets i = progressBar.getInsets();
-    int prefHeight = Math.max(200 - i.left - i.right, stringWidth);
-
-    int stringHeight = 0;
-    if (str != null)
-      stringHeight = fm.getHeight();
-    int prefWidth = Math.max(16 - i.top - i.bottom, stringHeight);
-
-    return new Dimension(prefWidth, prefHeight);
-  }
-
-  /**
-   * This method returns the preferred size of the
-   * given JComponent. If it returns null, then it
-   * is up to the LayoutManager to give it a size.
-   *
-   * @param c The component to find the preferred size for.
-   *
-   * @return The preferred size of the component.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Insets insets = c.getInsets();
-    Dimension ret;
-    int orientation = progressBar.getOrientation();
-    if (orientation == JProgressBar.VERTICAL)
-      ret = getPreferredInnerVertical();
-    else
-      ret = getPreferredInnerHorizontal();
-    ret.width += insets.left + insets.right;
-    ret.height += insets.top + insets.bottom;
-    return ret;
-  }
-
-  /**
-   * This method returns the Color that the text is shown in when the bar is
-   * not over the text.
-   *
-   * @return The color of the text when the bar is not over it.
-   */
-  protected Color getSelectionBackground()
-  {
-    return selectionBackground;
-  }
-
-  /**
-   * This method returns the Color that the text is shown in  when the bar is
-   * over the text.
-   *
-   * @return The color of the text when the bar is over it.
-   */
-  protected Color getSelectionForeground()
-  {
-    return selectionForeground;
-  }
-
-  /**
-   * This method returns the point (the top left of the bounding box)
-   * where the text should be painted.
-   *
-   * @param g The Graphics object to measure FontMetrics with.
-   * @param progressString The string to paint.
-   * @param x The x coordinate of the overall bounds box.
-   * @param y The y coordinate of the overall bounds box.
-   * @param width The width of the overall bounds box.
-   * @param height The height of the overall bounds box.
-   *
-   * @return The top left of the bounding box where text should be painted.
-   */
-  protected Point getStringPlacement(Graphics g, String progressString, int x,
-                                     int y, int width, int height)
-  {
-    Rectangle tr = new Rectangle();
-    Rectangle vr = new Rectangle();
-    Rectangle ir = new Rectangle();
-
-    if (progressBar.getOrientation() == JProgressBar.HORIZONTAL)
-      vr.setBounds(x, y, width, height);
-    else
-      vr.setBounds(y, x, height, width);
-
-    Font f = g.getFont();
-    FontMetrics fm = g.getFontMetrics(f);
-
-    SwingUtilities.layoutCompoundLabel(progressBar, fm, progressString, null,
-                                       SwingConstants.CENTER,
-                                       SwingConstants.CENTER,
-                                       SwingConstants.CENTER,
-                                       SwingConstants.CENTER, vr, ir, tr, 0);
-
-    if (progressBar.getOrientation() == JProgressBar.HORIZONTAL)
-      return new Point(tr.x, tr.y);
-    else
-      return new Point(tr.y, tr.x);
-  }
-
-  /**
-   * This method increments the animation index.
-   */
-  protected void incrementAnimationIndex()
-  {
-    animationIndex++;
-    //numFrames is like string length, it should be named numFrames or something
-    if (animationIndex >= numFrames)
-      animationIndex = 0;
-    progressBar.repaint();
-  }
-
-  /**
-   * This method paints the progressBar. It delegates its responsibilities
-   * to paintDeterminate and paintIndeterminate.
-   *
-   * @param g The Graphics object to paint with.
-   * @param c The JComponent to paint.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    if (! progressBar.isIndeterminate())
-      paintDeterminate(g, c);
-    else
-      paintIndeterminate(g, c);
-  }
-
-  /**
-   * This method is called if the painting to be done is
-   * for a determinate progressBar.
-   *
-   * @param g The Graphics object to paint with.
-   * @param c The JComponent to paint.
-   */
-  protected void paintDeterminate(Graphics g, JComponent c)
-  {
-    Color saved = g.getColor();
-    int space = getCellSpacing();
-    int len = getCellLength();
-    int max = progressBar.getMaximum();
-    int min = progressBar.getMinimum();
-    int value = progressBar.getValue();
-
-    Rectangle vr = SwingUtilities.calculateInnerArea(c, new Rectangle());
-    Rectangle or = progressBar.getBounds();
-    Insets insets = c.getInsets();
-
-    int amountFull = getAmountFull(insets, or.width, or.height);
-
-        if (progressBar.getOrientation() == JProgressBar.HORIZONTAL)
-          {
-            g.setColor(c.getForeground());
-            g.fillRect(vr.x, vr.y, amountFull, vr.height);
-          }
-        else
-          {
-            g.setColor(c.getForeground());
-            g.fillRect(vr.x, vr.y + vr.height - amountFull, vr.width,
-                       amountFull);
-          }
-
-    if (progressBar.isStringPainted() && !progressBar.getString().equals(""))
-      paintString(g, 0, 0, or.width, or.height, amountFull, insets);
-    g.setColor(saved);
-  }
-
-  /**
-   * This method is called if the painting to be done is for
-   * an indeterminate progressBar.
-   *
-   * @param g The Graphics object to paint with.
-   * @param c The JComponent to paint.
-   */
-  protected void paintIndeterminate(Graphics g, JComponent c)
-  {
-    //need to paint the box at it's current position. no text is painted since
-    //all we're doing is bouncing back and forth
-    Color saved = g.getColor();
-    Insets insets = c.getInsets();
-
-    Rectangle or = c.getBounds();
-    Rectangle vr = new Rectangle();
-    SwingUtilities.calculateInnerArea(c, vr);
-
-    g.setColor(c.getBackground());
-    g.fillRect(vr.x, vr.y, vr.width, vr.height);
-
-    boxRect = getBox(boxRect);
-
-    g.setColor(c.getForeground());
-    g.fillRect(boxRect.x, boxRect.y, boxRect.width, boxRect.height);
-
-    if (progressBar.isStringPainted() && !progressBar.getString().equals(""))
-      paintString(g, 0, 0, or.width, or.height,
-                  getAmountFull(insets, or.width, or.height), insets);
-
-    g.setColor(saved);
-  }
-
-  /**
-   * This method paints the string for the progressBar.
-   *
-   * @param g The Graphics object to paint with.
-   * @param x The x coordinate of the progressBar.
-   * @param y The y coordinate of the progressBar.
-   * @param width The width of the progressBar.
-   * @param height The height of the progressBar.
-   * @param amountFull The amount of the progressBar that has its bar filled.
-   * @param b The insets of the progressBar.
-   */
-  protected void paintString(Graphics g, int x, int y, int width, int height,
-                             int amountFull, Insets b)
-  {
-    String str = progressBar.getString();
-    int full = getAmountFull(b, width, height);
-    Point placement = getStringPlacement(g, progressBar.getString(),
-                                         x + b.left, y + b.top,
-                                         width - b.left - b.right,
-                                         height - b.top - b.bottom);
-    Color savedColor = g.getColor();
-    Shape savedClip = g.getClip();
-    FontMetrics fm = g.getFontMetrics(progressBar.getFont());
-
-    if (progressBar.getOrientation() == JProgressBar.VERTICAL)
-      {
-        AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2);
-        g.setFont(progressBar.getFont().deriveFont(rotate));
-        placement.x = width - placement.x - fm.getAscent();
-      }
-    else
-      {
-        placement.y += fm.getAscent();
-      }
-
-    g.setColor(getSelectionForeground());
-    g.setClip(0, 0, full + b.left, height);
-    g.drawString(str, placement.x, placement.y);
-    g.setColor(getSelectionBackground());
-    g.setClip(full + b.left, 0, width - full, height);
-    g.drawString(str, placement.x, placement.y);
-    g.setClip(savedClip);
-    g.setColor(savedColor);
-  }
-
-  /**
-   * This method sets the current animation index. If the index is greater than
-   * the number of frames, it resets to 0.
-   *
-   * @param newValue The new animation index.
-   */
-  protected void setAnimationIndex(int newValue)
-  {
-    animationIndex = (newValue <= numFrames) ? newValue : 0;
-    progressBar.repaint();
-  }
-
-  /**
-   * This method sets the cell length.
-   *
-   * @param cellLen The cell length.
-   */
-  protected void setCellLength(int cellLen)
-  {
-    cellLength = cellLen;
-  }
-
-  /**
-   * This method sets the cell spacing.
-   *
-   * @param cellSpace The cell spacing.
-   */
-  protected void setCellSpacing(int cellSpace)
-  {
-    cellSpacing = cellSpace;
-  }
-
-  /**
-   * This method starts the animation timer. It is called
-   * when the propertyChangeListener detects that the progressBar
-   * has changed to indeterminate mode.
-   *
-   * @since 1.4
-   */
-  protected void startAnimationTimer()
-  {
-    if (animationTimer != null)
-      animationTimer.start();
-  }
-
-  /**
-   * This method stops the animation timer. It is called when
-   * the propertyChangeListener detects that the progressBar
-   * has changed to determinate mode.
-   *
-   * @since 1.4
-   */
-  protected void stopAnimationTimer()
-  {
-    if (animationTimer != null)
-      animationTimer.stop();
-    setAnimationIndex(0);
-  }
-
-  /**
-   * This method changes the settings for the progressBar to
-   * the defaults provided by the current Look and Feel.
-   */
-  protected void installDefaults()
-  {
-    LookAndFeel.installColorsAndFont(progressBar, "ProgressBar.background",
-                                     "ProgressBar.foreground",
-                                     "ProgressBar.font");
-    LookAndFeel.installBorder(progressBar, "ProgressBar.border");
-    progressBar.setOpaque(true);
-
-    selectionForeground = UIManager.getColor("ProgressBar.selectionForeground");
-    selectionBackground = UIManager.getColor("ProgressBar.selectionBackground");
-    cellLength = UIManager.getInt("ProgressBar.cellLength");
-    cellSpacing = UIManager.getInt("ProgressBar.cellSpacing");
-
-    int repaintInterval = UIManager.getInt("ProgressBar.repaintInterval");
-    int cycleTime = UIManager.getInt("ProgressBar.cycleTime");
-
-    if (cycleTime % repaintInterval != 0
-        && (cycleTime / repaintInterval) % 2 != 0)
-      {
-        int div = (cycleTime / repaintInterval) + 2;
-        div /= 2;
-        div *= 2;
-        cycleTime = div * repaintInterval;
-      }
-    setAnimationIndex(0);
-    numFrames = cycleTime / repaintInterval;
-    animationTimer.setDelay(repaintInterval);
-  }
-
-  /**
-   * The method uninstalls any defaults that were
-   * set by the current Look and Feel.
-   */
-  protected void uninstallDefaults()
-  {
-    progressBar.setFont(null);
-    progressBar.setForeground(null);
-    progressBar.setBackground(null);
-
-    selectionForeground = null;
-    selectionBackground = null;
-  }
-
-  /**
-   * This method registers listeners to all the
-   * components that this UI delegate needs to listen to.
-   */
-  protected void installListeners()
-  {
-    changeListener = new ChangeHandler();
-    propertyListener = new PropertyChangeHandler();
-    animation = new Animator();
-
-    progressBar.addChangeListener(changeListener);
-    progressBar.addPropertyChangeListener(propertyListener);
-    animationTimer.addActionListener(animation);
-
-    ancestorListener = new AncestorHandler();
-    progressBar.addAncestorListener(ancestorListener);
-
-    componentListener = new ComponentHandler();
-    progressBar.addComponentListener(componentListener);
-  }
-
-  /**
-   * This method unregisters listeners to all the
-   * components that were listened to.
-   */
-  protected void uninstallListeners()
-  {
-    progressBar.removeChangeListener(changeListener);
-    progressBar.removePropertyChangeListener(propertyListener);
-    animationTimer.removeActionListener(animation);
-
-    changeListener = null;
-    propertyListener = null;
-    animation = null;
-
-    if (ancestorListener != null)
-      progressBar.removeAncestorListener(ancestorListener);
-    ancestorListener = null;
-
-    if (componentListener != null)
-      progressBar.removeComponentListener(componentListener);
-    componentListener = null;
-  }
-
-  /**
-   * This method installs the UI for the given JComponent.
-   * This includes setting up defaults and listeners as
-   * well as initializing any values or objects that
-   * the UI may need.
-   *
-   * @param c The JComponent that is having this UI installed.
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    if (c instanceof JProgressBar)
-      {
-        progressBar = (JProgressBar) c;
-
-        animationTimer = new Timer(200, null);
-        animationTimer.setRepeats(true);
-
-        installDefaults();
-        installListeners();
-      }
-    if (progressBar.isIndeterminate())
-      startAnimationTimer();
-  }
-
-  /**
-   * This method removes the UI for the given JComponent.
-   * This includes removing any listeners or defaults
-   * that the installUI may have set up.
-   *
-   * @param c The JComponent that is having this UI uninstalled.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    super.uninstallUI(c);
-    uninstallListeners();
-    uninstallDefaults();
-
-    animationTimer = null;
-    progressBar = null;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java
deleted file mode 100644
index f8f62e1..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/* BasicRadioButtonMenuItemUI.java --
-   Copyright (C) 2002, 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.event.MouseEvent;
-
-import javax.swing.JComponent;
-import javax.swing.JMenuItem;
-import javax.swing.MenuElement;
-import javax.swing.MenuSelectionManager;
-import javax.swing.UIDefaults;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * UI Delegator for JRadioButtonMenuItem
- */
-public class BasicRadioButtonMenuItemUI extends BasicMenuItemUI
-{
-  /**
-   * Creates a new BasicRadioButtonMenuItemUI object.
-   */
-  public BasicRadioButtonMenuItemUI()
-  {
-    super();
-  }
-
-  /**
-    * Factory method to create a BasicRadioButtonMenuItemUI for the given {@link
-    * JComponent}, which should be a JRadioButtonMenuItem.
-    *
-    * @param b The {@link JComponent} a UI is being created for.
-    *
-    * @return A BasicRadioButtonMenuItemUI for the {@link JComponent}.
-    */
-  public static ComponentUI createUI(JComponent b)
-  {
-    return new BasicRadioButtonMenuItemUI();
-  }
-
-  /**
-   * Returns the prefix for entries in the {@link UIDefaults} table.
-   *
-   * @return "RadioButtonMenuItem"
-   */
-  protected String getPropertyPrefix()
-  {
-    return "RadioButtonMenuItem";
-  }
-
-  /**
-   * DOCUMENT ME!
-   *
-   * @param item DOCUMENT ME!
-   * @param e DOCUMENT ME!
-   * @param path DOCUMENT ME!
-   * @param manager DOCUMENT ME!
-   */
-  public void processMouseEvent(JMenuItem item, MouseEvent e,
-                                MenuElement[] path,
-                                MenuSelectionManager manager)
-  {
-    // TODO: May not be implemented properly.
-    item.processMouseEvent(e, path, manager);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonUI.java
deleted file mode 100644
index ff374d1..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonUI.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/* BasicRadioButtonUI.java
-   Copyright (C) 2002, 2004, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Rectangle;
-
-import javax.swing.AbstractButton;
-import javax.swing.ButtonModel;
-import javax.swing.Icon;
-import javax.swing.JComponent;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.text.View;
-
-/**
- * The BasicLookAndFeel UI implementation for
- * {@link javax.swing.JRadioButton}s.
- */
-public class BasicRadioButtonUI extends BasicToggleButtonUI
-{
-  /**
-   * The default icon for JRadioButtons. The default icon displays the usual
-   * RadioButton and is sensible to the selection state of the button,
-   * and can be used both as normal icon as well as selectedIcon.
-   */
-  protected Icon icon;
-
-  /**
-   * Creates and returns a new instance of <code>BasicRadioButtonUI</code>.
-   *
-   * @return a new instance of <code>BasicRadioButtonUI</code>
-   */
-  public static ComponentUI createUI(final JComponent c)
-  {
-    return new BasicRadioButtonUI();
-  }
-
-  /**
-   * Creates a new instance of <code>BasicButtonUI</code>.
-   */
-  public BasicRadioButtonUI()
-  {
-    // nothing to do
-  }
-
-  /**
-   * Installs defaults from the Look &amp; Feel table on the specified
-   * button.
-   *
-   * @param b the button on which to install the defaults
-   */
-  protected void installDefaults(AbstractButton b)
-  {
-    super.installDefaults(b);
-    icon = UIManager.getIcon(getPropertyPrefix() + "icon");
-  }
-
-  /**
-   * Returns the prefix used for UIDefaults properties. This is
-   * <code>RadioButton</code> in this case.
-   *
-   * @return the prefix used for UIDefaults properties
-   */
-  protected String getPropertyPrefix()
-  {
-    return "RadioButton.";
-  }
-
-  /**
-   * Returns the default icon for JRadioButtons.
-   * The default icon displays the usual
-   * RadioButton and is sensible to the selection state of the button,
-   * and can be used both as normal icon as well as selectedIcon.
-   *
-   * @return the default icon for JRadioButtons
-   */
-  public Icon getDefaultIcon()
-  {
-    return icon;
-  }
-
-  /**
-   * Paints the RadioButton.
-   *
-   * @param g the Graphics context to paint with
-   * @param c the button to paint
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    AbstractButton b = (AbstractButton) c;
-    Dimension size = c.getSize();
-    Insets i = b.getInsets();
-    textR.x = 0;
-    textR.y = 0;
-    textR.width = 0;
-    textR.height = 0;
-    iconR.x = 0;
-    iconR.y = 0;
-    iconR.width = 0;
-    iconR.height = 0;
-    viewR.x = i.left;
-    viewR.y = i.right;
-    viewR.width = size.width - i.left - i.right;
-    viewR.height = size.height - i.top - i.bottom;
-
-    Font f = c.getFont();
-
-    g.setFont(f);
-
-    // This is the icon that we use for layout.
-    Icon icon = b.getIcon();
-    if (icon == null)
-      icon = getDefaultIcon();
-
-    // Figure out the correct icon.
-    Icon currentIcon = getCurrentIcon(b);
-
-    // Do the layout.
-    String text = SwingUtilities.layoutCompoundLabel(c, g.getFontMetrics(f),
-       b.getText(), currentIcon == null ? getDefaultIcon() : currentIcon,
-       b.getVerticalAlignment(), b.getHorizontalAlignment(),
-       b.getVerticalTextPosition(), b.getHorizontalTextPosition(),
-       viewR, iconR, textR, b.getIconTextGap());
-
-    // .. and paint it.
-    if (currentIcon != null)
-      currentIcon.paintIcon(c, g, iconR.x, iconR.y);
-
-    // Paint text and focus indicator.
-    if (text != null)
-      {
-        // Maybe render HTML in the radio button.
-        View v = (View) c.getClientProperty(BasicHTML.propertyKey);
-        if (v != null)
-          v.paint(g, textR);
-        else
-          paintText(g, b, textR, text);
-
-        // Paint focus indicator if necessary.
-        if (b.hasFocus() && b.isFocusPainted()
-            && textR.width > 0 && textR.height > 0)
-          paintFocus(g, textR, size);
-      }
-  }
-
-  /**
-   * Determines the icon to be displayed for the specified radio button.
-   *
-   * @param b the radio button
-   *
-   * @return the icon
-   */
-  private Icon getCurrentIcon(AbstractButton b)
-  {
-    ButtonModel m = b.getModel();
-    Icon currentIcon = b.getIcon();
-
-    if (currentIcon == null)
-      {
-        currentIcon = getDefaultIcon();
-      }
-    else
-      {
-        if (! m.isEnabled())
-          {
-            if (m.isSelected())
-              currentIcon = b.getDisabledSelectedIcon();
-            else
-              currentIcon = b.getDisabledIcon();
-          }
-        else if (m.isPressed() && m.isArmed())
-          {
-            currentIcon = b.getPressedIcon();
-            if (currentIcon == null)
-              currentIcon = b.getSelectedIcon();
-          }
-        else if (m.isSelected())
-          {
-            if (b.isRolloverEnabled() && m.isRollover())
-              {
-                currentIcon = b.getRolloverSelectedIcon();
-                if (currentIcon == null)
-                  currentIcon = b.getSelectedIcon();
-              }
-            else
-              currentIcon = b.getSelectedIcon();
-          }
-        else if (b.isRolloverEnabled() && m.isRollover())
-          {
-            currentIcon = b.getRolloverIcon();
-          }
-        if (currentIcon == null)
-          currentIcon = b.getIcon();
-      }
-    return currentIcon;
-  }
-
-  public Dimension getPreferredSize(JComponent c)
-  {
-    // This is basically the same code as in
-    // BasicGraphicsUtils.getPreferredButtonSize() but takes the default icon
-    // property into account. JRadioButton and subclasses always have an icon:
-    // the check box. If the user explicitly changes it with setIcon() that
-    // one will be used for layout calculations and painting instead.
-    // The other icon properties are ignored.
-    AbstractButton b = (AbstractButton) c;
-
-    Insets insets = b.getInsets();
-
-    String text = b.getText();
-    Icon i = b.getIcon();
-    if (i == null)
-      i = getDefaultIcon();
-
-    textR.x = 0;
-    textR.y = 0;
-    textR.width = 0;
-    textR.height = 0;
-    iconR.x = 0;
-    iconR.y = 0;
-    iconR.width = 0;
-    iconR.height = 0;
-    viewR.x = 0;
-    viewR.y = 0;
-    viewR.width = Short.MAX_VALUE;
-    viewR.height = Short.MAX_VALUE;
-
-    SwingUtilities.layoutCompoundLabel(b, // for the component orientation
-                                       b.getFontMetrics(b.getFont()),
-                                       text, i, b.getVerticalAlignment(),
-                                       b.getHorizontalAlignment(),
-                                       b.getVerticalTextPosition(),
-                                       b.getHorizontalTextPosition(),
-                                       viewR, iconR, textR,
-                                       text == null ? 0 : b.getIconTextGap());
-
-    Rectangle r = SwingUtilities.computeUnion(textR.x, textR.y, textR.width,
-                                              textR.height, iconR);
-
-    return new Dimension(insets.left + r.width + insets.right,
-                         insets.top + r.height + insets.bottom);
-  }
-
-  /**
-   * Paints the focus indicator for JRadioButtons.
-   *
-   * @param g the graphics context
-   * @param tr the rectangle for the text label
-   * @param size the size of the <code>JRadioButton</code> component.
-   */
-  protected void paintFocus(Graphics g, Rectangle tr, Dimension size)
-  {
-    Color focusColor = UIManager.getColor(getPropertyPrefix() + ".focus");
-    Color saved = g.getColor();
-    g.setColor(focusColor);
-    g.drawRect(tr.x, tr.y, tr.width, tr.height);
-    g.setColor(saved);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicRootPaneUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicRootPaneUI.java
deleted file mode 100644
index 26c7a53..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicRootPaneUI.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/* BasicRootPaneUI.java --
-   Copyright (C) 2002, 2004  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.event.ActionEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.AbstractAction;
-import javax.swing.ButtonModel;
-import javax.swing.InputMap;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JRootPane;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentInputMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.RootPaneUI;
-
-public class BasicRootPaneUI extends RootPaneUI
-  implements PropertyChangeListener
-{
-
-  /**
-   * Performed when the user activates the default button inside the JRootPane,
-   * usually by pressing 'ENTER'.
-   */
-  private class DefaultPressAction
-    extends AbstractAction
-  {
-    /**
-     * The JRootPane for which this action should be installed.
-     */
-    private JRootPane rootPane;
-
-    /**
-     * Creates a new DefaultPressAction for the specified JRootPane.
-     */
-    DefaultPressAction(JRootPane rp)
-    {
-      rootPane = rp;
-    }
-
-    /**
-     * Performes the action.
-     */
-    public void actionPerformed(ActionEvent ev)
-    {
-      JButton b = rootPane.getDefaultButton();
-      if (b != null)
-        {
-          ButtonModel m = b.getModel();
-          m.setArmed(true);
-          m.setPressed(true);
-        }
-    }
-  }
-
-  /**
-   * Performed when the user activates the default button inside the JRootPane,
-   * usually by releasing 'ENTER'.
-   */
-  private class DefaultReleaseAction
-    extends AbstractAction
-  {
-    /**
-     * The JRootPane for which this action should be installed.
-     */
-    private JRootPane rootPane;
-
-    /**
-     * Creates a new DefaultReleaseAction for the specified JRootPane.
-     */
-    DefaultReleaseAction(JRootPane rp)
-    {
-      rootPane = rp;
-    }
-
-    /**
-     * Performes the action.
-     */
-    public void actionPerformed(ActionEvent ev)
-    {
-      JButton b = rootPane.getDefaultButton();
-      if (b != null)
-        {
-          ButtonModel m = b.getModel();
-          m.setPressed(false);
-          m.setArmed(false);
-        }
-    }
-  }
-
-  public static ComponentUI createUI(JComponent x)
-  {
-    return new BasicRootPaneUI();
-  }
-
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    if (c instanceof JRootPane)
-      {
-        JRootPane rp = (JRootPane) c;
-        installDefaults(rp);
-        installComponents(rp);
-        installListeners(rp);
-        installKeyboardActions(rp);
-      }
-  }
-
-  /**
-   * Installs the look and feel defaults for JRootPane.
-   *
-   * @param rp the root pane to install the defaults to
-   */
-  protected void installDefaults(JRootPane rp)
-  {
-    // TODO: What to do here, if anything? (might be a hook method)
-  }
-
-  /**
-   * Installs additional look and feel components to the root pane.
-   *
-   * @param rp the root pane to install the components to
-   */
-  protected void installComponents(JRootPane rp)
-  {
-    // All components are initialized in the JRootPane constructor, and since
-    // the createXXXPane methods are protected, I see no reasonable way,
-    // and no need to initialize them here. This method is here anyway
-    // for compatibility and to provide the necessary hooks to subclasses.
-  }
-
-  /**
-   * Installs any look and feel specific listeners on the root pane.
-   *
-   * @param rp the root pane to install the listeners to
-   */
-  protected void installListeners(JRootPane rp)
-  {
-    rp.addPropertyChangeListener(this);
-  }
-
-  /**
-   * Installs look and feel keyboard actions on the root pane.
-   *
-   * @param rp the root pane to install the keyboard actions to
-   */
-  protected void installKeyboardActions(JRootPane rp)
-  {
-    // Install the keyboard actions.
-    ActionMapUIResource am = new ActionMapUIResource();
-    am.put("press", new DefaultPressAction(rp));
-    am.put("release", new DefaultReleaseAction(rp));
-    SwingUtilities.replaceUIActionMap(rp, am);
-
-    // Install the input map from the UIManager. It seems like the actual
-    // bindings are installed in the JRootPane only when the defaultButton
-    // property receives a value. So we also only install an empty
-    // input map here, and fill it in propertyChange.
-    ComponentInputMapUIResource im = new ComponentInputMapUIResource(rp);
-    SwingUtilities.replaceUIInputMap(rp, JComponent.WHEN_IN_FOCUSED_WINDOW,
-                                     im);
-  }
-
-  public void propertyChange(PropertyChangeEvent event)
-  {
-    JRootPane source = (JRootPane) event.getSource();
-    String propertyName = event.getPropertyName();
-    if (propertyName.equals("defaultButton"))
-      {
-        Object newValue = event.getNewValue();
-        InputMap im =
-          SwingUtilities.getUIInputMap(source,
-                                       JComponent.WHEN_IN_FOCUSED_WINDOW);
-        if (newValue != null)
-          {
-            Object[] keybindings = (Object[]) UIManager.get(
-                "RootPane.defaultButtonWindowKeyBindings");
-            LookAndFeel.loadKeyBindings(im, keybindings);
-          }
-        else
-          {
-            im.clear();
-          }
-      }
-  }
-
-  /**
-   * Uninstalls this UI from the root pane. This calls
-   * {@link #uninstallDefaults}, {@link #uninstallComponents},
-   * {@link #uninstallListeners}, {@link #uninstallKeyboardActions}
-   * in this order.
-   *
-   * @param c the root pane to uninstall the UI from
-   */
-  public void uninstallUI(JComponent c)
-  {
-    super.uninstallUI(c);
-    if (c instanceof JRootPane)
-      {
-        JRootPane rp = (JRootPane) c;
-        uninstallDefaults(rp);
-        uninstallComponents(rp);
-        uninstallListeners(rp);
-        uninstallKeyboardActions(rp);
-      }
-  }
-
-  /**
-   * Uninstalls the look and feel defaults that have been installed in
-   * {@link #installDefaults}.
-   *
-   * @param rp the root pane to uninstall the defaults from
-   */
-  protected void uninstallDefaults(JRootPane rp)
-  {
-    // We do nothing here.
-  }
-
-  /**
-   * Uninstalls look and feel components from the root pane.
-   *
-   * @param rp the root pane to uninstall the components from
-   */
-  protected void uninstallComponents(JRootPane rp)
-  {
-    // We do nothing here.
-  }
-
-  /**
-   * Uninstalls any look and feel specific listeners from the root pane.
-   *
-   * @param rp the root pane to uninstall the listeners from
-   */
-  protected void uninstallListeners(JRootPane rp)
-  {
-    rp.removePropertyChangeListener(this);
-  }
-
-  /**
-   * Uninstalls look and feel keyboard actions from the root pane.
-   *
-   * @param rp the root pane to uninstall the keyboard actions from
-   */
-  protected void uninstallKeyboardActions(JRootPane rp)
-  {
-    SwingUtilities.replaceUIActionMap(rp, null);
-    SwingUtilities.replaceUIInputMap(rp, JComponent.WHEN_IN_FOCUSED_WINDOW,
-                                     null);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicScrollBarUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicScrollBarUI.java
deleted file mode 100644
index 9f24f8a..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicScrollBarUI.java
+++ /dev/null
@@ -1,1513 +0,0 @@
-/* BasicScrollBarUI.java --
-   Copyright (C) 2004, 2005, 2006,  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.LayoutManager;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseMotionListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.AbstractAction;
-import javax.swing.ActionMap;
-import javax.swing.BoundedRangeModel;
-import javax.swing.InputMap;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JScrollBar;
-import javax.swing.JSlider;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.Timer;
-import javax.swing.UIManager;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ScrollBarUI;
-
-/**
- * The Basic Look and Feel UI delegate for JScrollBar.
- */
-public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
-                                                             SwingConstants
-{
-  /**
-   * A helper class that listens to the two JButtons on each end of the
-   * JScrollBar.
-   */
-  protected class ArrowButtonListener extends MouseAdapter
-  {
-
-    /**
-     * Move the thumb in the direction specified by the  button's arrow. If
-     * this button is held down, then it should keep moving the thumb.
-     *
-     * @param e The MouseEvent fired by the JButton.
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      scrollTimer.stop();
-      scrollListener.setScrollByBlock(false);
-      if (e.getSource() == incrButton)
-          scrollListener.setDirection(POSITIVE_SCROLL);
-      else if (e.getSource() == decrButton)
-          scrollListener.setDirection(NEGATIVE_SCROLL);
-      scrollTimer.setDelay(100);
-      scrollTimer.start();
-    }
-
-    /**
-     * Stops the thumb when the JButton is released.
-     *
-     * @param e The MouseEvent fired by the JButton.
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      scrollTimer.stop();
-      scrollTimer.setDelay(300);
-      if (e.getSource() == incrButton)
-          scrollByUnit(POSITIVE_SCROLL);
-      else if (e.getSource() == decrButton)
-        scrollByUnit(NEGATIVE_SCROLL);
-    }
-  }
-
-  /**
-   * A helper class that listens to the ScrollBar's model for ChangeEvents.
-   */
-  protected class ModelListener implements ChangeListener
-  {
-    /**
-     * Called when the model changes.
-     *
-     * @param e The ChangeEvent fired by the model.
-     */
-    public void stateChanged(ChangeEvent e)
-    {
-      calculatePreferredSize();
-      updateThumbRect();
-      scrollbar.repaint();
-    }
-  }
-
-  /**
-   * A helper class that listens to the ScrollBar's properties.
-   */
-  public class PropertyChangeHandler implements PropertyChangeListener
-  {
-    /**
-     * Called when one of the ScrollBar's properties change.
-     *
-     * @param e The PropertyChangeEvent fired by the ScrollBar.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      if (e.getPropertyName().equals("model"))
-        {
-          ((BoundedRangeModel) e.getOldValue()).removeChangeListener(modelListener);
-          scrollbar.getModel().addChangeListener(modelListener);
-          updateThumbRect();
-        }
-      else if (e.getPropertyName().equals("orientation"))
-        {
-          uninstallListeners();
-          uninstallComponents();
-          uninstallDefaults();
-          installDefaults();
-          installComponents();
-          installListeners();
-        }
-      else if (e.getPropertyName().equals("enabled"))
-        {
-          Boolean b = (Boolean) e.getNewValue();
-          if (incrButton != null)
-            incrButton.setEnabled(b.booleanValue());
-          if (decrButton != null)
-            decrButton.setEnabled(b.booleanValue());
-        }
-    }
-  }
-
-  /**
-   * A helper class that listens for events from the timer that is used to
-   * move the thumb.
-   */
-  protected class ScrollListener implements ActionListener
-  {
-    /** The direction the thumb moves in. */
-    private transient int direction;
-
-    /** Whether movement will be in blocks. */
-    private transient boolean block;
-
-    /**
-     * Creates a new ScrollListener object. The default is scrolling
-     * positively with block movement.
-     */
-    public ScrollListener()
-    {
-      direction = POSITIVE_SCROLL;
-      block = true;
-    }
-
-    /**
-     * Creates a new ScrollListener object using the given direction and
-     * block.
-     *
-     * @param dir The direction to move in.
-     * @param block Whether movement will be in blocks.
-     */
-    public ScrollListener(int dir, boolean block)
-    {
-      direction = dir;
-      this.block = block;
-    }
-
-    /**
-     * Sets the direction to scroll in.
-     *
-     * @param direction The direction to scroll in.
-     */
-    public void setDirection(int direction)
-    {
-      this.direction = direction;
-    }
-
-    /**
-     * Sets whether scrolling will be done in blocks.
-     *
-     * @param block Whether scrolling will be in blocks.
-     */
-    public void setScrollByBlock(boolean block)
-    {
-      this.block = block;
-    }
-
-    /**
-     * Called every time the timer reaches its interval.
-     *
-     * @param e The ActionEvent fired by the timer.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      if (block)
-        {
-          // Only need to check it if it's block scrolling
-          // We only block scroll if the click occurs
-          // in the track.
-          if (!trackListener.shouldScroll(direction))
-            {
-              trackHighlight = NO_HIGHLIGHT;
-              scrollbar.repaint();
-              return;
-            }
-            scrollByBlock(direction);
-        }
-      else
-        scrollByUnit(direction);
-    }
-  }
-
-  /**
-   * Helper class that listens for movement on the track.
-   */
-  protected class TrackListener extends MouseAdapter
-    implements MouseMotionListener
-  {
-    /** The current X coordinate of the mouse. */
-    protected int currentMouseX;
-
-    /** The current Y coordinate of the mouse. */
-    protected int currentMouseY;
-
-    /**
-     * The offset between the current mouse cursor and the  current value of
-     * the scrollbar.
-     */
-    protected int offset;
-
-    /**
-     * This method is called when the mouse is being dragged.
-     *
-     * @param e The MouseEvent given.
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      currentMouseX = e.getX();
-      currentMouseY = e.getY();
-      if (scrollbar.getValueIsAdjusting())
-        {
-          int value;
-          if (scrollbar.getOrientation() == SwingConstants.HORIZONTAL)
-            value = valueForXPosition(currentMouseX) - offset;
-          else
-            value = valueForYPosition(currentMouseY) - offset;
-
-          scrollbar.setValue(value);
-        }
-    }
-
-    /**
-     * This method is called when the mouse is moved.
-     *
-     * @param e The MouseEvent given.
-     */
-    public void mouseMoved(MouseEvent e)
-    {
-      if (thumbRect.contains(e.getPoint()))
-        thumbRollover = true;
-      else
-        thumbRollover = false;
-    }
-
-    /**
-     * This method is called when the mouse is pressed. When it is pressed,
-     * the thumb should move in blocks towards the cursor.
-     *
-     * @param e The MouseEvent given.
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      currentMouseX = e.getX();
-      currentMouseY = e.getY();
-
-      int value;
-      if (scrollbar.getOrientation() == SwingConstants.HORIZONTAL)
-        value = valueForXPosition(currentMouseX);
-      else
-        value = valueForYPosition(currentMouseY);
-
-      if (! thumbRect.contains(e.getPoint()))
-        {
-          scrollTimer.stop();
-          scrollListener.setScrollByBlock(true);
-          if (value > scrollbar.getValue())
-            {
-              trackHighlight = INCREASE_HIGHLIGHT;
-              scrollListener.setDirection(POSITIVE_SCROLL);
-            }
-          else
-            {
-              trackHighlight = DECREASE_HIGHLIGHT;
-              scrollListener.setDirection(NEGATIVE_SCROLL);
-            }
-      scrollTimer.setDelay(100);
-          scrollTimer.start();
-        }
-      else
-        {
-          // We'd like to keep track of where the cursor
-          // is inside the thumb.
-          // This works because the scrollbar's value represents
-          // "lower" edge of the thumb. The value at which
-          // the cursor is at must be greater or equal
-          // to that value.
-
-      scrollListener.setScrollByBlock(false);
-          scrollbar.setValueIsAdjusting(true);
-      offset = value - scrollbar.getValue();
-        }
-      scrollbar.repaint();
-    }
-
-    /**
-     * This method is called when the mouse is released. It should stop
-     * movement on the thumb
-     *
-     * @param e The MouseEvent given.
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      scrollTimer.stop();
-      scrollTimer.setDelay(300);
-      currentMouseX = e.getX();
-      currentMouseY = e.getY();
-
-      if (shouldScroll(POSITIVE_SCROLL))
-        scrollByBlock(POSITIVE_SCROLL);
-      else if (shouldScroll(NEGATIVE_SCROLL))
-        scrollByBlock(NEGATIVE_SCROLL);
-
-      trackHighlight = NO_HIGHLIGHT;
-      scrollListener.setScrollByBlock(false);
-      scrollbar.setValueIsAdjusting(true);
-      scrollbar.repaint();
-    }
-
-    /**
-     * A helper method that decides whether we should keep scrolling in the
-     * given direction.
-     *
-     * @param direction The direction to check for.
-     *
-     * @return Whether the thumb should keep scrolling.
-     */
-    boolean shouldScroll(int direction)
-    {
-      int value;
-      if (scrollbar.getOrientation() == HORIZONTAL)
-        value = valueForXPosition(currentMouseX);
-      else
-        value = valueForYPosition(currentMouseY);
-
-      if (thumbRect.contains(currentMouseX, currentMouseY))
-        return false;
-
-      if (direction == POSITIVE_SCROLL)
-        return value > scrollbar.getValue();
-      else
-        return value < scrollbar.getValue();
-    }
-  }
-
-  /** The listener that listens to the JButtons. */
-  protected ArrowButtonListener buttonListener;
-
-  /** The listener that listens to the model. */
-  protected ModelListener modelListener;
-
-  /** The listener that listens to the scrollbar for property changes. */
-  protected PropertyChangeListener propertyChangeListener;
-
-  /** The listener that listens to the timer. */
-  protected ScrollListener scrollListener;
-
-  /** The listener that listens for MouseEvents on the track. */
-  protected TrackListener trackListener;
-
-  /** The JButton that decrements the scrollbar's value. */
-  protected JButton decrButton;
-
-  /** The JButton that increments the scrollbar's value. */
-  protected JButton incrButton;
-
-  /** The dimensions of the maximum thumb size. */
-  protected Dimension maximumThumbSize;
-
-  /** The dimensions of the minimum thumb size. */
-  protected Dimension minimumThumbSize;
-
-  /** The color of the thumb. */
-  protected Color thumbColor;
-
-  /** The outer shadow of the thumb. */
-  protected Color thumbDarkShadowColor;
-
-  /** The top and left edge color for the thumb. */
-  protected Color thumbHighlightColor;
-
-  /** The outer light shadow for the thumb. */
-  protected Color thumbLightShadowColor;
-
-  /** The color that is used when the mouse press occurs in the track. */
-  protected Color trackHighlightColor;
-
-  /** The color of the track. */
-  protected Color trackColor;
-
-  /** The size and position of the track. */
-  protected Rectangle trackRect;
-
-  /** The size and position of the thumb. */
-  protected Rectangle thumbRect;
-
-  /** Indicates that the decrease highlight should be painted. */
-  protected static final int DECREASE_HIGHLIGHT = 1;
-
-  /** Indicates that the increase highlight should be painted. */
-  protected static final int INCREASE_HIGHLIGHT = 2;
-
-  /** Indicates that no highlight should be painted. */
-  protected static final int NO_HIGHLIGHT = 0;
-
-  /** Indicates that the scrolling direction is positive. */
-  private static final int POSITIVE_SCROLL = 1;
-
-  /** Indicates that the scrolling direction is negative. */
-  private static final int NEGATIVE_SCROLL = -1;
-
-  /** The cached preferred size for the scrollbar. */
-  private transient Dimension preferredSize;
-
-  /** The current highlight status. */
-  protected int trackHighlight;
-
-  /** FIXME: Use this for something (presumably mouseDragged) */
-  protected boolean isDragging;
-
-  /** The timer used to move the thumb when the mouse is held. */
-  protected Timer scrollTimer;
-
-  /** The scrollbar this UI is acting for. */
-  protected JScrollBar scrollbar;
-
-  /** True if the mouse is over the thumb. */
-  boolean thumbRollover;
-
-  /**
-   * This method adds a component to the layout.
-   *
-   * @param name The name to associate with the component that is added.
-   * @param child The Component to add.
-   */
-  public void addLayoutComponent(String name, Component child)
-  {
-    // You should not be adding stuff to this component.
-    // The contents are fixed.
-  }
-
-  /**
-   * This method configures the scrollbar's colors. This can be  done by
-   * looking up the standard colors from the Look and Feel defaults.
-   */
-  protected void configureScrollBarColors()
-  {
-    trackColor = UIManager.getColor("ScrollBar.track");
-    trackHighlightColor = UIManager.getColor("ScrollBar.trackHighlight");
-    thumbColor = UIManager.getColor("ScrollBar.thumb");
-    thumbHighlightColor = UIManager.getColor("ScrollBar.thumbHighlight");
-    thumbDarkShadowColor = UIManager.getColor("ScrollBar.thumbDarkShadow");
-    thumbLightShadowColor = UIManager.getColor("ScrollBar.thumbShadow");
-  }
-
-  /**
-   * This method creates an ArrowButtonListener.
-   *
-   * @return A new ArrowButtonListener.
-   */
-  protected ArrowButtonListener createArrowButtonListener()
-  {
-    return new ArrowButtonListener();
-  }
-
-  /**
-   * This method creates a new JButton with the appropriate icon for the
-   * orientation.
-   *
-   * @param orientation The orientation this JButton uses.
-   *
-   * @return The increase JButton.
-   */
-  protected JButton createIncreaseButton(int orientation)
-  {
-    return new BasicArrowButton(orientation);
-  }
-
-  /**
-   * This method creates a new JButton with the appropriate icon for the
-   * orientation.
-   *
-   * @param orientation The orientation this JButton uses.
-   *
-   * @return The decrease JButton.
-   */
-  protected JButton createDecreaseButton(int orientation)
-  {
-    return new BasicArrowButton(orientation);
-  }
-
-  /**
-   * This method creates a new ModelListener.
-   *
-   * @return A new ModelListener.
-   */
-  protected ModelListener createModelListener()
-  {
-    return new ModelListener();
-  }
-
-  /**
-   * This method creates a new PropertyChangeListener.
-   *
-   * @return A new PropertyChangeListener.
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new PropertyChangeHandler();
-  }
-
-  /**
-   * This method creates a new ScrollListener.
-   *
-   * @return A new ScrollListener.
-   */
-  protected ScrollListener createScrollListener()
-  {
-    return new ScrollListener();
-  }
-
-  /**
-   * This method creates a new TrackListener.
-   *
-   * @return A new TrackListener.
-   */
-  protected TrackListener createTrackListener()
-  {
-    return new TrackListener();
-  }
-
-  /**
-   * This method returns a new BasicScrollBarUI.
-   *
-   * @param c The JComponent to create a UI for.
-   *
-   * @return A new BasicScrollBarUI.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicScrollBarUI();
-  }
-
-  /**
-   * This method returns the maximum size for this JComponent.
-   *
-   * @param c The JComponent to measure the maximum size for.
-   *
-   * @return The maximum size for the component.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
-  }
-
-  /**
-   * This method returns the maximum thumb size.
-   *
-   * @return The maximum thumb size.
-   */
-  protected Dimension getMaximumThumbSize()
-  {
-    return maximumThumbSize;
-  }
-
-  /**
-   * This method returns the minimum size for this JComponent.
-   *
-   * @param c The JComponent to measure the minimum size for.
-   *
-   * @return The minimum size for the component.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-  /**
-   * This method returns the minimum thumb size.
-   *
-   * @return The minimum thumb size.
-   */
-  protected Dimension getMinimumThumbSize()
-  {
-    return minimumThumbSize;
-  }
-
-  /**
-   * This method calculates the preferred size since calling
-   * getPreferredSize() returns a cached value.
-   * This is package-private to avoid an accessor method.
-   */
-  void calculatePreferredSize()
-  {
-    int height;
-    int width;
-    height = width = 0;
-
-    if (scrollbar.getOrientation() == SwingConstants.HORIZONTAL)
-      {
-        width += incrButton.getPreferredSize().getWidth();
-        width += decrButton.getPreferredSize().getWidth();
-        width += 16;
-        height = UIManager.getInt("ScrollBar.width");
-      }
-    else
-      {
-        height += incrButton.getPreferredSize().getHeight();
-        height += decrButton.getPreferredSize().getHeight();
-        height += 16;
-        width = UIManager.getInt("ScrollBar.width");
-      }
-
-    Insets insets = scrollbar.getInsets();
-
-    height += insets.top + insets.bottom;
-    width += insets.left + insets.right;
-
-    preferredSize = new Dimension(width, height);
-  }
-
-  /**
-   * This method returns a cached value of the preferredSize. The only
-   * restrictions are: If the scrollbar is horizontal, the height should be
-   * the maximum of the height of the JButtons and  the minimum width of the
-   * thumb. For vertical scrollbars, the  calculation is similar (swap width
-   * for height and vice versa).
-   *
-   * @param c The JComponent to measure.
-   *
-   * @return The preferredSize.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    calculatePreferredSize();
-    return preferredSize;
-  }
-
-  /**
-   * This method returns the thumb's bounds based on the  current value of the
-   * scrollbar. This method updates the cached value and returns that.
-   *
-   * @return The thumb bounds.
-   */
-  protected Rectangle getThumbBounds()
-  {
-    return thumbRect;
-  }
-
-  /**
-   * This method calculates the bounds of the track. This method updates the
-   * cached value and returns it.
-   *
-   * @return The track's bounds.
-   */
-  protected Rectangle getTrackBounds()
-  {
-    return trackRect;
-  }
-
-  /**
-   * This method installs any addition Components that  are a part of or
-   * related to this scrollbar.
-   */
-  protected void installComponents()
-  {
-    int orientation = scrollbar.getOrientation();
-    switch (orientation)
-      {
-      case JScrollBar.HORIZONTAL:
-        incrButton = createIncreaseButton(EAST);
-        decrButton = createDecreaseButton(WEST);
-        break;
-      default:
-        incrButton = createIncreaseButton(SOUTH);
-        decrButton = createDecreaseButton(NORTH);
-        break;
-      }
-
-    if (incrButton != null)
-      scrollbar.add(incrButton);
-    if (decrButton != null)
-      scrollbar.add(decrButton);
-  }
-
-  /**
-   * This method installs the defaults for the scrollbar specified by the
-   * Basic Look and Feel.
-   */
-  protected void installDefaults()
-  {
-    LookAndFeel.installColors(scrollbar, "ScrollBar.background",
-                              "ScrollBar.foreground");
-    LookAndFeel.installBorder(scrollbar, "ScrollBar.border");
-    scrollbar.setOpaque(true);
-    scrollbar.setLayout(this);
-
-    configureScrollBarColors();
-
-    maximumThumbSize = UIManager.getDimension("ScrollBar.maximumThumbSize");
-    minimumThumbSize = UIManager.getDimension("ScrollBar.minimumThumbSize");
-  }
-
-  /**
-   * Installs the input map from the look and feel defaults, and a
-   * corresponding action map.  Note the the keyboard bindings will only
-   * work when the {@link JScrollBar} component has the focus, which is rare.
-   */
-  protected void installKeyboardActions()
-  {
-    InputMap keyMap = getInputMap(
-        JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
-    SwingUtilities.replaceUIInputMap(scrollbar,
-        JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, keyMap);
-    ActionMap map = getActionMap();
-    SwingUtilities.replaceUIActionMap(scrollbar, map);
-  }
-
-  /**
-   * Uninstalls the input map and action map installed by
-   * {@link #installKeyboardActions()}.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    SwingUtilities.replaceUIActionMap(scrollbar, null);
-    SwingUtilities.replaceUIInputMap(scrollbar,
-        JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, null);
-  }
-
-  InputMap getInputMap(int condition)
-  {
-    if (condition == JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
-      return (InputMap) UIManager.get("ScrollBar.focusInputMap");
-    return null;
-  }
-
-  /**
-   * Returns the action map for the {@link JScrollBar}.  All scroll bars
-   * share a single action map which is created the first time this method is
-   * called, then stored in the UIDefaults table for subsequent access.
-   *
-   * @return The shared action map.
-   */
-  ActionMap getActionMap()
-  {
-    ActionMap map = (ActionMap) UIManager.get("ScrollBar.actionMap");
-
-    if (map == null) // first time here
-      {
-        map = createActionMap();
-        if (map != null)
-          UIManager.put("ScrollBar.actionMap", map);
-      }
-    return map;
-  }
-
-  /**
-   * Creates the action map shared by all {@link JSlider} instances.
-   * This method is called once by {@link #getActionMap()} when it
-   * finds no action map in the UIDefaults table...after the map is
-   * created, it gets added to the defaults table so that subsequent
-   * calls to {@link #getActionMap()} will return the same shared
-   * instance.
-   *
-   * @return The action map.
-   */
-  ActionMap createActionMap()
-  {
-    ActionMap map = new ActionMapUIResource();
-    map.put("positiveUnitIncrement",
-            new AbstractAction("positiveUnitIncrement") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollBar sb = (JScrollBar) event.getSource();
-                if (sb.isVisible())
-                  {
-                    int delta = sb.getUnitIncrement(1);
-                    sb.setValue(sb.getValue() + delta);
-                  }
-              }
-            }
-    );
-    map.put("positiveBlockIncrement",
-            new AbstractAction("positiveBlockIncrement") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollBar sb = (JScrollBar) event.getSource();
-                if (sb.isVisible())
-                  {
-                    int delta = sb.getBlockIncrement(1);
-                    sb.setValue(sb.getValue() + delta);
-                  }
-              }
-            }
-    );
-    map.put("negativeUnitIncrement",
-            new AbstractAction("negativeUnitIncrement") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollBar sb = (JScrollBar) event.getSource();
-                if (sb.isVisible())
-                  {
-                    int delta = sb.getUnitIncrement(-1);
-                    sb.setValue(sb.getValue() + delta);
-                  }
-              }
-            }
-    );
-    map.put("negativeBlockIncrement",
-            new AbstractAction("negativeBlockIncrement") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollBar sb = (JScrollBar) event.getSource();
-                if (sb.isVisible())
-                  {
-                    int delta = sb.getBlockIncrement(-1);
-                    sb.setValue(sb.getValue() + delta);
-                  }
-              }
-            }
-    );
-    map.put("minScroll",
-            new AbstractAction("minScroll") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollBar sb = (JScrollBar) event.getSource();
-                if (sb.isVisible())
-                  {
-                    sb.setValue(sb.getMinimum());
-                  }
-              }
-            }
-    );
-    map.put("maxScroll",
-            new AbstractAction("maxScroll") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollBar sb = (JScrollBar) event.getSource();
-                if (sb.isVisible())
-                  {
-                    sb.setValue(sb.getMaximum());
-                  }
-              }
-            }
-    );
-    return map;
-  }
-
-  /**
-   * This method installs any listeners for the scrollbar. This method also
-   * installs listeners for things such as the JButtons and the timer.
-   */
-  protected void installListeners()
-  {
-    scrollListener = createScrollListener();
-    trackListener = createTrackListener();
-    buttonListener = createArrowButtonListener();
-    modelListener = createModelListener();
-    propertyChangeListener = createPropertyChangeListener();
-
-    scrollbar.addMouseMotionListener(trackListener);
-    scrollbar.addMouseListener(trackListener);
-
-    incrButton.addMouseListener(buttonListener);
-    decrButton.addMouseListener(buttonListener);
-
-    scrollbar.addPropertyChangeListener(propertyChangeListener);
-    scrollbar.getModel().addChangeListener(modelListener);
-
-    scrollTimer.addActionListener(scrollListener);
-  }
-
-  /**
-   * This method installs the UI for the component. This can include setting
-   * up listeners, defaults,  and components. This also includes initializing
-   * any data objects.
-   *
-   * @param c The JComponent to install.
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    if (c instanceof JScrollBar)
-      {
-        scrollbar = (JScrollBar) c;
-
-        trackRect = new Rectangle();
-        thumbRect = new Rectangle();
-
-        scrollTimer = new Timer(300, null);
-
-        installDefaults();
-        installComponents();
-        configureScrollBarColors();
-        installListeners();
-        installKeyboardActions();
-
-        calculatePreferredSize();
-      }
-  }
-
-  /**
-   * This method lays out the scrollbar.
-   *
-   * @param scrollbarContainer The Container to layout.
-   */
-  public void layoutContainer(Container scrollbarContainer)
-  {
-    if (scrollbarContainer instanceof JScrollBar)
-      {
-        if (scrollbar.getOrientation() == SwingConstants.HORIZONTAL)
-          layoutHScrollbar((JScrollBar) scrollbarContainer);
-        else
-          layoutVScrollbar((JScrollBar) scrollbarContainer);
-      }
-  }
-
-  /**
-   * This method lays out the scrollbar horizontally.
-   *
-   * @param sb The JScrollBar to layout.
-   */
-  protected void layoutHScrollbar(JScrollBar sb)
-  {
-    Rectangle vr = new Rectangle();
-    SwingUtilities.calculateInnerArea(scrollbar, vr);
-
-    Dimension incrDims = incrButton.getPreferredSize();
-    Dimension decrDims = decrButton.getPreferredSize();
-
-    // calculate and update the track bounds
-    SwingUtilities.calculateInnerArea(scrollbar, trackRect);
-    trackRect.width -= incrDims.getWidth();
-    trackRect.width -= decrDims.getWidth();
-    trackRect.x += decrDims.getWidth();
-
-    updateThumbRect();
-
-    decrButton.setBounds(vr.x, vr.y, decrDims.width, trackRect.height);
-    incrButton.setBounds(trackRect.x + trackRect.width, vr.y, incrDims.width,
-                         trackRect.height);
-  }
-
-  /**
-   * This method lays out the scrollbar vertically.
-   *
-   * @param sb The JScrollBar to layout.
-   */
-  protected void layoutVScrollbar(JScrollBar sb)
-  {
-    Rectangle vr = new Rectangle();
-    SwingUtilities.calculateInnerArea(scrollbar, vr);
-
-    Dimension incrDims = incrButton.getPreferredSize();
-    Dimension decrDims = decrButton.getPreferredSize();
-
-    // Update rectangles
-    SwingUtilities.calculateInnerArea(scrollbar, trackRect);
-    trackRect.height -= incrDims.getHeight();
-    trackRect.height -= decrDims.getHeight();
-    trackRect.y += decrDims.getHeight();
-
-    updateThumbRect();
-
-    decrButton.setBounds(vr.x, vr.y, trackRect.width, decrDims.height);
-    incrButton.setBounds(vr.x, trackRect.y + trackRect.height,
-                         trackRect.width, incrDims.height);
-  }
-
-  /**
-   * Updates the thumb rect.
-   */
-  void updateThumbRect()
-  {
-    int max = scrollbar.getMaximum();
-    int min = scrollbar.getMinimum();
-    int value = scrollbar.getValue();
-    int extent = scrollbar.getVisibleAmount();
-    if (max - extent <= min)
-      {
-        if (scrollbar.getOrientation() == JScrollBar.HORIZONTAL)
-          {
-            thumbRect.x = trackRect.x;
-            thumbRect.y = trackRect.y;
-            thumbRect.width = getMinimumThumbSize().width;
-            thumbRect.height = trackRect.height;
-          }
-        else
-          {
-            thumbRect.x = trackRect.x;
-            thumbRect.y = trackRect.y;
-            thumbRect.width = trackRect.width;
-            thumbRect.height = getMinimumThumbSize().height;
-          }
-      }
-    else
-      {
-        if (scrollbar.getOrientation() == JScrollBar.HORIZONTAL)
-          {
-            thumbRect.x = trackRect.x;
-            thumbRect.width = Math.max(extent * trackRect.width / (max - min),
-                getMinimumThumbSize().width);
-            int availableWidth = trackRect.width - thumbRect.width;
-            thumbRect.x += (value - min) * availableWidth / (max - min - extent);
-            thumbRect.y = trackRect.y;
-            thumbRect.height = trackRect.height;
-          }
-        else
-          {
-            thumbRect.x = trackRect.x;
-            thumbRect.height = Math.max(extent * trackRect.height / (max - min),
-                    getMinimumThumbSize().height);
-            int availableHeight = trackRect.height - thumbRect.height;
-            thumbRect.y = trackRect.y
-              + (value - min) * availableHeight / (max - min - extent);
-            thumbRect.width = trackRect.width;
-          }
-      }
-
-  }
-
-  /**
-   * This method returns the minimum size required for the layout.
-   *
-   * @param scrollbarContainer The Container that is laid out.
-   *
-   * @return The minimum size.
-   */
-  public Dimension minimumLayoutSize(Container scrollbarContainer)
-  {
-    return preferredLayoutSize(scrollbarContainer);
-  }
-
-  /**
-   * This method is called when the component is painted.
-   *
-   * @param g The Graphics object to paint with.
-   * @param c The JComponent to paint.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    paintTrack(g, c, getTrackBounds());
-    paintThumb(g, c, getThumbBounds());
-
-    if (trackHighlight == INCREASE_HIGHLIGHT)
-      paintIncreaseHighlight(g);
-    else if (trackHighlight == DECREASE_HIGHLIGHT)
-      paintDecreaseHighlight(g);
-  }
-
-  /**
-   * This method is called when repainting and the mouse is  pressed in the
-   * track. It paints the track below the thumb with the trackHighlight
-   * color.
-   *
-   * @param g The Graphics object to paint with.
-   */
-  protected void paintDecreaseHighlight(Graphics g)
-  {
-    Color saved = g.getColor();
-
-    g.setColor(trackHighlightColor);
-    if (scrollbar.getOrientation() == HORIZONTAL)
-      g.fillRect(trackRect.x, trackRect.y, thumbRect.x - trackRect.x,
-                 trackRect.height);
-    else
-      g.fillRect(trackRect.x, trackRect.y, trackRect.width,
-                 thumbRect.y - trackRect.y);
-    g.setColor(saved);
-  }
-
-  /**
-   * This method is called when repainting and the mouse is  pressed in the
-   * track. It paints the track above the thumb with the trackHighlight
-   * color.
-   *
-   * @param g The Graphics objet to paint with.
-   */
-  protected void paintIncreaseHighlight(Graphics g)
-  {
-    Color saved = g.getColor();
-
-    g.setColor(trackHighlightColor);
-    if (scrollbar.getOrientation() == HORIZONTAL)
-      g.fillRect(thumbRect.x + thumbRect.width, trackRect.y,
-                 trackRect.x + trackRect.width - thumbRect.x - thumbRect.width,
-                 trackRect.height);
-    else
-      g.fillRect(trackRect.x, thumbRect.y + thumbRect.height, trackRect.width,
-                 trackRect.y + trackRect.height - thumbRect.y
-                 - thumbRect.height);
-    g.setColor(saved);
-  }
-
-  /**
-   * This method paints the thumb.
-   *
-   * @param g The Graphics object to paint with.
-   * @param c The Component that is being painted.
-   * @param thumbBounds The thumb bounds.
-   */
-  protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds)
-  {
-    g.setColor(thumbColor);
-    g.fillRect(thumbBounds.x, thumbBounds.y, thumbBounds.width,
-               thumbBounds.height);
-
-    BasicGraphicsUtils.drawBezel(g, thumbBounds.x, thumbBounds.y,
-                                 thumbBounds.width, thumbBounds.height,
-                                 false, false, thumbDarkShadowColor,
-                                 thumbDarkShadowColor, thumbHighlightColor,
-                                 thumbHighlightColor);
-  }
-
-  /**
-   * This method paints the track.
-   *
-   * @param g The Graphics object to paint with.
-   * @param c The JComponent being painted.
-   * @param trackBounds The track's bounds.
-   */
-  protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds)
-  {
-    Color saved = g.getColor();
-    g.setColor(trackColor);
-    g.fill3DRect(trackBounds.x, trackBounds.y, trackBounds.width,
-                 trackBounds.height, false);
-    g.setColor(saved);
-  }
-
-  /**
-   * This method returns the preferred size for the layout.
-   *
-   * @param scrollbarContainer The Container to find a size for.
-   *
-   * @return The preferred size for the layout.
-   */
-  public Dimension preferredLayoutSize(Container scrollbarContainer)
-  {
-    if (scrollbarContainer instanceof JComponent)
-      return getPreferredSize((JComponent) scrollbarContainer);
-    else
-      return null;
-  }
-
-  /**
-   * This method removes a child component from the layout.
-   *
-   * @param child The child to remove.
-   */
-  public void removeLayoutComponent(Component child)
-  {
-    // You should not be removing stuff from this component.
-  }
-
-  /**
-   * The method scrolls the thumb by a block in the  direction specified.
-   *
-   * @param direction The direction to scroll.
-   */
-  protected void scrollByBlock(int direction)
-  {
-    scrollByBlock(scrollbar, direction);
-  }
-
-  /**
-   * Scrolls the specified <code>scrollBar</code> by one block (according
-   * to the scrollable protocol) in the specified <code>direction</code>.
-   *
-   * This method is here statically to support wheel scrolling from the
-   * BasicScrollPaneUI without code duplication.
-   *
-   * @param scrollBar the scrollbar to scroll
-   * @param direction the scroll direction
-   */
-  static final void scrollByBlock(JScrollBar scrollBar, int direction)
-  {
-    int delta;
-    if (direction > 0)
-      delta = scrollBar.getBlockIncrement(direction);
-    else
-      delta = - scrollBar.getBlockIncrement(direction);
-    int oldValue = scrollBar.getValue();
-    int newValue = oldValue + delta;
-
-    // Overflow check.
-    if (delta > 0 && newValue < oldValue)
-      newValue = scrollBar.getMaximum();
-    else if (delta < 0 && newValue > oldValue)
-      newValue = scrollBar.getMinimum();
-
-    scrollBar.setValue(newValue);
-  }
-
-  /**
-   * The method scrolls the thumb by a unit in the direction specified.
-   *
-   * @param direction The direction to scroll.
-   */
-  protected void scrollByUnit(int direction)
-  {
-    scrollByUnits(scrollbar, direction, 1);
-  }
-
-  /**
-   * Scrolls the specified <code>scrollbac/code> by <code>units</code> units
-   * in the specified <code>direction</code>.
-   *
-   * This method is here statically to support wheel scrolling from the
-   * BasicScrollPaneUI without code duplication.
-   *
-   * @param scrollBar the scrollbar to scroll
-   * @param direction the direction
-   * @param units the number of units to scroll
-   */
-  static final void scrollByUnits(JScrollBar scrollBar, int direction,
-                                   int units)
-  {
-    // Do this inside a loop so that we don't clash with the scrollable
-    // interface, which can return different units at times. For instance,
-    // a Scrollable could return a unit of 2 pixels only to adjust the
-    // visibility of an item. If we would simply multiply this by units,
-    // then we would only get 6 pixels, which is complete crap.
-    for (int i = 0; i < units; i++)
-      {
-        int delta;
-        if (direction > 0)
-          delta = scrollBar.getUnitIncrement(direction);
-        else
-          delta = - scrollBar.getUnitIncrement(direction);
-        int oldValue = scrollBar.getValue();
-        int newValue = oldValue + delta;
-
-        // Overflow check.
-        if (delta > 0 && newValue < oldValue)
-          newValue = scrollBar.getMaximum();
-        else if (delta < 0 && newValue > oldValue)
-          newValue = scrollBar.getMinimum();
-
-        scrollBar.setValue(newValue);
-      }
-  }
-
-  /**
-   * This method sets the thumb's bounds.
-   *
-   * @param x The X position of the thumb.
-   * @param y The Y position of the thumb.
-   * @param width The width of the thumb.
-   * @param height The height of the thumb.
-   */
-  protected void setThumbBounds(int x, int y, int width, int height)
-  {
-    thumbRect.x = x;
-    thumbRect.y = y;
-    thumbRect.width = width;
-    thumbRect.height = height;
-  }
-
-  /**
-   * This method uninstalls any components that  are a part of or related to
-   * this scrollbar.
-   */
-  protected void uninstallComponents()
-  {
-    if (incrButton != null)
-      scrollbar.remove(incrButton);
-    if (decrButton != null)
-      scrollbar.remove(decrButton);
-  }
-
-  /**
-   * This method uninstalls any defaults that this scrollbar acquired from the
-   * Basic Look and Feel defaults.
-   */
-  protected void uninstallDefaults()
-  {
-    scrollbar.setForeground(null);
-    scrollbar.setBackground(null);
-    LookAndFeel.uninstallBorder(scrollbar);
-    incrButton = null;
-    decrButton = null;
-  }
-
-  /**
-   * This method uninstalls any listeners that were registered during install.
-   */
-  protected void uninstallListeners()
-  {
-    if (scrollTimer != null)
-      scrollTimer.removeActionListener(scrollListener);
-
-    if (scrollbar != null)
-      {
-        scrollbar.getModel().removeChangeListener(modelListener);
-        scrollbar.removePropertyChangeListener(propertyChangeListener);
-        scrollbar.removeMouseListener(trackListener);
-        scrollbar.removeMouseMotionListener(trackListener);
-      }
-
-    if (decrButton != null)
-      decrButton.removeMouseListener(buttonListener);
-    if (incrButton != null)
-      incrButton.removeMouseListener(buttonListener);
-
-    propertyChangeListener = null;
-    modelListener = null;
-    buttonListener = null;
-    trackListener = null;
-    scrollListener = null;
-  }
-
-  /**
-   * This method uninstalls the UI. This includes removing any defaults,
-   * listeners, and components that this UI may have initialized. It also
-   * nulls any instance data.
-   *
-   * @param c The Component to uninstall for.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    uninstallKeyboardActions();
-    uninstallListeners();
-    uninstallDefaults();
-    uninstallComponents();
-
-    scrollTimer = null;
-
-    thumbRect = null;
-    trackRect = null;
-
-    trackColor = null;
-    trackHighlightColor = null;
-    thumbColor = null;
-    thumbHighlightColor = null;
-    thumbDarkShadowColor = null;
-    thumbLightShadowColor = null;
-
-    scrollbar = null;
-  }
-
-  /**
-   * This method returns the value in the scrollbar's range given the y
-   * coordinate. If the value is out of range, it will return the closest
-   * legal value.
-   * This is package-private to avoid an accessor method.
-   *
-   * @param yPos The y coordinate to calculate a value for.
-   *
-   * @return The value for the y coordinate.
-   */
-  int valueForYPosition(int yPos)
-  {
-    int min = scrollbar.getMinimum();
-    int max = scrollbar.getMaximum();
-    int len = trackRect.height;
-
-    int value;
-
-    // If the length is 0, you shouldn't be able to even see where the thumb is.
-    // This really shouldn't ever happen, but just in case, we'll return the middle.
-    if (len == 0)
-      return (max - min) / 2;
-
-    value = (yPos - trackRect.y) * (max - min) / len + min;
-
-    // If this isn't a legal value, then we'll have to move to one now.
-    if (value > max)
-      value = max;
-    else if (value < min)
-      value = min;
-    return value;
-  }
-
-  /**
-   * This method returns the value in the scrollbar's range given the x
-   * coordinate. If the value is out of range, it will return the closest
-   * legal value.
-   * This is package-private to avoid an accessor method.
-   *
-   * @param xPos The x coordinate to calculate a value for.
-   *
-   * @return The value for the x coordinate.
-   */
-  int valueForXPosition(int xPos)
-  {
-    int min = scrollbar.getMinimum();
-    int max = scrollbar.getMaximum();
-    int len = trackRect.width;
-
-    int value;
-
-    // If the length is 0, you shouldn't be able to even see where the slider is.
-    // This really shouldn't ever happen, but just in case, we'll return the middle.
-    if (len == 0)
-      return (max - min) / 2;
-
-    value = (xPos - trackRect.x) * (max - min) / len + min;
-
-    // If this isn't a legal value, then we'll have to move to one now.
-    if (value > max)
-      value = max;
-    else if (value < min)
-      value = min;
-    return value;
-  }
-
-  /**
-   * Returns true if the mouse is over the thumb.
-   *
-   * @return true if the mouse is over the thumb.
-   *
-   * @since 1.5
-   */
-  public boolean isThumbRollover()
-  {
-   return thumbRollover;
-  }
-
-  /**
-   * Set thumbRollover to active. This indicates
-   * whether or not the mouse is over the thumb.
-   *
-   * @param active - true if the mouse is over the thumb.
-   *
-   * @since 1.5
-   */
-  protected void setThumbRollover(boolean active)
-  {
-    thumbRollover = active;
-  }
-
-  /**
-   * Indicates whether the user can position the thumb with
-   * a mouse click (i.e. middle button).
-   *
-   * @return true if the user can position the thumb with a mouse
-   * click.
-   *
-   * @since 1.5
-   */
-  public boolean getSupportsAbsolutePositioning()
-  {
-    // The positioning feature has not been implemented.
-    // So, false is always returned.
-    return false;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicScrollPaneUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicScrollPaneUI.java
deleted file mode 100644
index 7123948..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicScrollPaneUI.java
+++ /dev/null
@@ -1,823 +0,0 @@
-/* BasicScrollPaneUI.java
-   Copyright (C) 2002, 2004, 2005, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ContainerEvent;
-import java.awt.event.ContainerListener;
-import java.awt.event.MouseWheelEvent;
-import java.awt.event.MouseWheelListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.AbstractAction;
-import javax.swing.ActionMap;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
-import javax.swing.JScrollBar;
-import javax.swing.JScrollPane;
-import javax.swing.JSlider;
-import javax.swing.JViewport;
-import javax.swing.LookAndFeel;
-import javax.swing.ScrollPaneConstants;
-import javax.swing.ScrollPaneLayout;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ScrollPaneUI;
-import javax.swing.plaf.UIResource;
-
-/**
- * A UI delegate for the {@link JScrollPane} component.
- */
-public class BasicScrollPaneUI extends ScrollPaneUI
-  implements ScrollPaneConstants
-{
-
-  /**
-   * Listens for changes in the state of the horizontal scrollbar's model and
-   * updates the scrollpane accordingly.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  public class HSBChangeListener implements ChangeListener
-  {
-
-    /**
-     * Receives notification when the state of the horizontal scrollbar
-     * model has changed.
-     *
-     * @param event the change event
-     */
-    public void stateChanged(ChangeEvent event)
-    {
-      JScrollBar hsb = scrollpane.getHorizontalScrollBar();
-      JViewport vp = scrollpane.getViewport();
-      Point viewPosition = vp.getViewPosition();
-      viewPosition.x = hsb.getValue();
-      vp.setViewPosition(viewPosition);
-    }
-
-  }
-
-  /**
-   * Listens for changes in the state of the vertical scrollbar's model and
-   * updates the scrollpane accordingly.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  public class VSBChangeListener implements ChangeListener
-  {
-
-    /**
-     * Receives notification when the state of the vertical scrollbar
-     * model has changed.
-     *
-     * @param event the change event
-     */
-    public void stateChanged(ChangeEvent event)
-    {
-      JScrollBar vsb = scrollpane.getVerticalScrollBar();
-      JViewport vp = scrollpane.getViewport();
-      Point viewPosition = vp.getViewPosition();
-      viewPosition.y = vsb.getValue();
-      vp.setViewPosition(viewPosition);
-    }
-
-  }
-
-  /**
-   * Listens for changes of the viewport's extent size and updates the
-   * scrollpane accordingly.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  public class ViewportChangeHandler implements ChangeListener
-  {
-
-    /**
-     * Receives notification when the view's size, position or extent size
-     * changes. When the extents size has changed, this method calls
-     * {@link BasicScrollPaneUI#syncScrollPaneWithViewport()} to adjust the
-     * scrollbars extents as well.
-     *
-     * @param event the change event
-     */
-    public void stateChanged(ChangeEvent event)
-    {
-      syncScrollPaneWithViewport();
-    }
-
-  }
-
-  /**
-   * Listens for property changes on the scrollpane and update the view
-   * accordingly.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  public class PropertyChangeHandler implements PropertyChangeListener
-  {
-
-    /**
-     * Receives notification when any of the scrollpane's bound property
-     * changes. This method calls the appropriate update method on the
-     * <code>ScrollBarUI</code>.
-     *
-     * @param e the property change event
-     *
-     * @see BasicScrollPaneUI#updateColumnHeader(PropertyChangeEvent)
-     * @see BasicScrollPaneUI#updateRowHeader(PropertyChangeEvent)
-     * @see BasicScrollPaneUI#updateScrollBarDisplayPolicy(PropertyChangeEvent)
-     * @see BasicScrollPaneUI#updateViewport(PropertyChangeEvent)
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      String propName = e.getPropertyName();
-      if (propName.equals("viewport"))
-        updateViewport(e);
-      else if (propName.equals("rowHeader"))
-        updateRowHeader(e);
-      else if (propName.equals("columnHeader"))
-        updateColumnHeader(e);
-      else if (propName.equals("horizontalScrollBarPolicy")
-          || e.getPropertyName().equals("verticalScrollBarPolicy"))
-        updateScrollBarDisplayPolicy(e);
-      else if (propName.equals("verticalScrollBar"))
-        {
-          JScrollBar oldSb = (JScrollBar) e.getOldValue();
-          oldSb.getModel().removeChangeListener(vsbChangeListener);
-          JScrollBar newSb = (JScrollBar) e.getNewValue();
-          newSb.getModel().addChangeListener(vsbChangeListener);
-        }
-      else if (propName.equals("horizontalScrollBar"))
-        {
-          JScrollBar oldSb = (JScrollBar) e.getOldValue();
-          oldSb.getModel().removeChangeListener(hsbChangeListener);
-          JScrollBar newSb = (JScrollBar) e.getNewValue();
-          newSb.getModel().addChangeListener(hsbChangeListener);
-        }
-    }
-
-  }
-
-  /**
-   * Listens for mouse wheel events and update the scrollpane accordingly.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   *
-   * @since 1.4
-   */
-  protected class MouseWheelHandler implements MouseWheelListener
-  {
-    /**
-     * Use to compute the visible rectangle.
-     */
-    final Rectangle rect = new Rectangle();
-
-    /**
-     * Scroll with the mouse wheel.
-     *
-     * @author Audrius Meskauskas (audriusa@Bioinformatics.org)
-     */
-    public void mouseWheelMoved(MouseWheelEvent e)
-    {
-      if (scrollpane.isWheelScrollingEnabled() && e.getScrollAmount() != 0)
-        {
-          // Try to scroll vertically first.
-          JScrollBar scrollBar = scrollpane.getVerticalScrollBar();
-          if (scrollBar == null || ! scrollBar.isVisible())
-            scrollBar = scrollpane.getHorizontalScrollBar();
-          if (scrollBar != null && scrollBar.isVisible())
-            {
-              int direction = e.getWheelRotation() < 0 ? -1 : 1;
-              int scrollType = e.getScrollType();
-              if (scrollType == MouseWheelEvent.WHEEL_UNIT_SCROLL)
-                BasicScrollBarUI.scrollByUnits(scrollBar, direction,
-                                               e.getScrollAmount());
-              else if (scrollType == MouseWheelEvent.WHEEL_BLOCK_SCROLL)
-                BasicScrollBarUI.scrollByBlock(scrollBar, direction);
-            }
-        }
-    }
-  }
-
-  /**
-   * Adds/removes the mouse wheel listener when the component is added/removed
-   * to/from the scroll pane view port.
-   *
-   * @author Audrius Meskauskas (audriusa@bioinformatics.org)
-   */
-  class ViewportContainerListener implements ContainerListener
-  {
-    /**
-     * Add the mouse wheel listener, allowing to scroll with the mouse.
-     */
-    public void componentAdded(ContainerEvent e)
-    {
-      e.getChild().addMouseWheelListener(mouseWheelListener);
-    }
-
-    /**
-     * Remove the mouse wheel listener.
-     */
-    public void componentRemoved(ContainerEvent e)
-    {
-      e.getChild().removeMouseWheelListener(mouseWheelListener);
-    }
-  }
-
-  /**
-   * The number of pixels by that we should scroll the content that does
-   * not implement Scrollable.
-   */
-  static int SCROLL_NON_SCROLLABLES = 10;
-
-  /**
-   * The number of rows to scroll per mouse wheel click. From impression,
-   * Sun seems using the value 3.
-   */
-  static int ROWS_PER_WHEEL_CLICK = 3;
-
-  /** The Scrollpane for which the UI is provided by this class. */
-  protected JScrollPane scrollpane;
-
-  /**
-   * The horizontal scrollbar listener.
-   */
-  protected ChangeListener hsbChangeListener;
-
-  /**
-   * The vertical scrollbar listener.
-   */
-  protected ChangeListener vsbChangeListener;
-
-  /**
-   * The viewport listener.
-   */
-  protected ChangeListener viewportChangeListener;
-
-  /**
-   * The scrollpane property change listener.
-   */
-  protected PropertyChangeListener spPropertyChangeListener;
-
-  /**
-   * The mousewheel listener for the scrollpane.
-   */
-  MouseWheelListener mouseWheelListener;
-
-  /**
-   * The listener to add and remove the mouse wheel listener to/from
-   * the component container.
-   */
-  ContainerListener containerListener;
-
-  public static ComponentUI createUI(final JComponent c)
-  {
-    return new BasicScrollPaneUI();
-  }
-
-  protected void installDefaults(JScrollPane p)
-  {
-    scrollpane = p;
-    LookAndFeel.installColorsAndFont(p, "ScrollPane.background",
-                                     "ScrollPane.foreground",
-                                     "ScrollPane.font");
-    LookAndFeel.installBorder(p, "ScrollPane.border");
-
-    // Install Viewport border.
-    Border vpBorder = p.getViewportBorder();
-    if (vpBorder == null || vpBorder instanceof UIResource)
-      {
-        vpBorder = UIManager.getBorder("ScrollPane.viewportBorder");
-        p.setViewportBorder(vpBorder);
-      }
-
-    p.setOpaque(true);
-  }
-
-  protected void uninstallDefaults(JScrollPane p)
-  {
-    LookAndFeel.uninstallBorder(p);
-    Border vpBorder = p.getViewportBorder();
-    if (vpBorder != null && vpBorder instanceof UIResource)
-      p.setViewportBorder(null);
-  }
-
-  public void installUI(final JComponent c)
-  {
-    super.installUI(c);
-    installDefaults((JScrollPane) c);
-    installListeners((JScrollPane) c);
-    installKeyboardActions((JScrollPane) c);
-  }
-
-  /**
-   * Installs the listeners on the scrollbars, the viewport and the scrollpane.
-   *
-   * @param sp the scrollpane on which to install the listeners
-   */
-  protected void installListeners(JScrollPane sp)
-  {
-    if (spPropertyChangeListener == null)
-      spPropertyChangeListener = createPropertyChangeListener();
-    sp.addPropertyChangeListener(spPropertyChangeListener);
-
-    if (hsbChangeListener == null)
-      hsbChangeListener = createHSBChangeListener();
-    sp.getHorizontalScrollBar().getModel().addChangeListener(hsbChangeListener);
-
-    if (vsbChangeListener == null)
-      vsbChangeListener = createVSBChangeListener();
-    sp.getVerticalScrollBar().getModel().addChangeListener(vsbChangeListener);
-
-    if (viewportChangeListener == null)
-      viewportChangeListener = createViewportChangeListener();
-
-    if (mouseWheelListener == null)
-      mouseWheelListener = createMouseWheelListener();
-
-    if (containerListener == null)
-      containerListener = new ViewportContainerListener();
-
-    JViewport v = sp.getViewport();
-    v.addChangeListener(viewportChangeListener);
-    v.addContainerListener(containerListener);
-
-    // Add mouse wheel listeners to the componets that are probably already
-    // in the view port.
-    for (int i = 0; i < v.getComponentCount(); i++)
-      v.getComponent(i).addMouseWheelListener(mouseWheelListener);
-  }
-
-  InputMap getInputMap(int condition)
-  {
-    if (condition == JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
-      return (InputMap) UIManager.get("ScrollPane.ancestorInputMap");
-    return null;
-  }
-
-  /**
-   * Returns the action map for the {@link JScrollPane}.  All scroll panes
-   * share a single action map which is created the first time this method is
-   * called, then stored in the UIDefaults table for subsequent access.
-   *
-   * @return The shared action map.
-   */
-  ActionMap getActionMap()
-  {
-    ActionMap map = (ActionMap) UIManager.get("ScrollPane.actionMap");
-
-    if (map == null) // first time here
-      {
-        map = createActionMap();
-        if (map != null)
-          UIManager.put("ScrollPane.actionMap", map);
-      }
-    return map;
-  }
-
-  /**
-   * Creates the action map shared by all {@link JSlider} instances.
-   * This method is called once by {@link #getActionMap()} when it
-   * finds no action map in the UIDefaults table...after the map is
-   * created, it gets added to the defaults table so that subsequent
-   * calls to {@link #getActionMap()} will return the same shared
-   * instance.
-   *
-   * @return The action map.
-   */
-  ActionMap createActionMap()
-  {
-    ActionMap map = new ActionMapUIResource();
-    map.put("scrollLeft",
-            new AbstractAction("scrollLeft") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollPane sp = (JScrollPane) event.getSource();
-                JScrollBar sb = sp.getHorizontalScrollBar();
-                if (sb.isVisible())
-                  {
-                    int delta = sb.getBlockIncrement(-1);
-                    sb.setValue(sb.getValue() + delta);
-                  }
-              }
-            }
-    );
-    map.put("scrollEnd",
-            new AbstractAction("scrollEnd") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollPane sp = (JScrollPane) event.getSource();
-                JScrollBar sb1 = sp.getHorizontalScrollBar();
-                if (sb1.isVisible())
-                  {
-                    sb1.setValue(sb1.getMaximum());
-                  }
-                JScrollBar sb2 = sp.getVerticalScrollBar();
-                if (sb2.isVisible())
-                  {
-                    sb2.setValue(sb2.getMaximum());
-                  }
-              }
-            }
-    );
-    map.put("unitScrollUp",
-            new AbstractAction("unitScrollUp") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollPane sp = (JScrollPane) event.getSource();
-                JScrollBar sb = sp.getVerticalScrollBar();
-                if (sb.isVisible())
-                  {
-                    int delta = sb.getUnitIncrement(-1);
-                    sb.setValue(sb.getValue() + delta);
-                  }
-              }
-            }
-    );
-    map.put("unitScrollLeft",
-            new AbstractAction("unitScrollLeft") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollPane sp = (JScrollPane) event.getSource();
-                JScrollBar sb = sp.getHorizontalScrollBar();
-                if (sb.isVisible())
-                  {
-                    int delta = sb.getUnitIncrement(-1);
-                    sb.setValue(sb.getValue() + delta);
-                  }
-              }
-            }
-    );
-    map.put("scrollUp",
-            new AbstractAction("scrollUp") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollPane sp = (JScrollPane) event.getSource();
-                JScrollBar sb = sp.getVerticalScrollBar();
-                if (sb.isVisible())
-                  {
-                    int delta = sb.getBlockIncrement(-1);
-                    sb.setValue(sb.getValue() + delta);
-                  }
-              }
-            }
-    );
-    map.put("scrollRight",
-            new AbstractAction("scrollRight") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollPane sp = (JScrollPane) event.getSource();
-                JScrollBar sb = sp.getHorizontalScrollBar();
-                if (sb.isVisible())
-                  {
-                    int delta = sb.getBlockIncrement(1);
-                    sb.setValue(sb.getValue() + delta);
-                  }
-              }
-            }
-    );
-    map.put("scrollHome",
-            new AbstractAction("scrollHome") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollPane sp = (JScrollPane) event.getSource();
-                JScrollBar sb1 = sp.getHorizontalScrollBar();
-                if (sb1.isVisible())
-                  {
-                    sb1.setValue(sb1.getMinimum());
-                  }
-                JScrollBar sb2 = sp.getVerticalScrollBar();
-                if (sb2.isVisible())
-                  {
-                    sb2.setValue(sb2.getMinimum());
-                  }
-              }
-            }
-    );
-    map.put("scrollDown",
-            new AbstractAction("scrollDown") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollPane sp = (JScrollPane) event.getSource();
-                JScrollBar sb = sp.getVerticalScrollBar();
-                if (sb.isVisible())
-                  {
-                    int delta = sb.getBlockIncrement(1);
-                    sb.setValue(sb.getValue() + delta);
-                  }
-              }
-            }
-    );
-    map.put("unitScrollDown",
-            new AbstractAction("unitScrollDown") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollPane sp = (JScrollPane) event.getSource();
-                JScrollBar sb = sp.getVerticalScrollBar();
-                if (sb.isVisible())
-                  {
-                    int delta = sb.getUnitIncrement(1);
-                    sb.setValue(sb.getValue() + delta);
-                  }
-              }
-            }
-    );
-    map.put("unitScrollRight",
-            new AbstractAction("unitScrollRight") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JScrollPane sp = (JScrollPane) event.getSource();
-                JScrollBar sb = sp.getHorizontalScrollBar();
-                if (sb.isVisible())
-                  {
-                    int delta = sb.getUnitIncrement(1);
-                    sb.setValue(sb.getValue() + delta);
-                  }
-              }
-            }
-    );
-    return map;
-  }
-
-  /**
-   * Installs additional keyboard actions on the scrollpane. This is a hook
-   * method provided to subclasses in order to install their own keyboard
-   * actions.
-   *
-   * @param sp the scrollpane to install keyboard actions on
-   */
-  protected void installKeyboardActions(JScrollPane sp)
-  {
-    InputMap keyMap = getInputMap(
-        JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
-    SwingUtilities.replaceUIInputMap(sp,
-        JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, keyMap);
-    ActionMap map = getActionMap();
-    SwingUtilities.replaceUIActionMap(sp, map);
-  }
-
-  /**
-   * Uninstalls all keyboard actions from the JScrollPane that have been
-   * installed by {@link #installKeyboardActions}. This is a hook method
-   * provided to subclasses to add their own keyboard actions.
-   *
-   * @param sp the scrollpane to uninstall keyboard actions from
-   */
-  protected void uninstallKeyboardActions(JScrollPane sp)
-  {
-    SwingUtilities.replaceUIActionMap(sp, null);
-    SwingUtilities.replaceUIInputMap(sp,
-        JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, null);
-  }
-
-  /**
-   * Creates and returns the change listener for the horizontal scrollbar.
-   *
-   * @return the change listener for the horizontal scrollbar
-   */
-  protected ChangeListener createHSBChangeListener()
-  {
-    return new HSBChangeListener();
-  }
-
-  /**
-   * Creates and returns the change listener for the vertical scrollbar.
-   *
-   * @return the change listener for the vertical scrollbar
-   */
-  protected ChangeListener createVSBChangeListener()
-  {
-    return new VSBChangeListener();
-  }
-
-  /**
-   * Creates and returns the change listener for the viewport.
-   *
-   * @return the change listener for the viewport
-   */
-  protected ChangeListener createViewportChangeListener()
-  {
-    return new ViewportChangeHandler();
-  }
-
-  /**
-   * Creates and returns the property change listener for the scrollpane.
-   *
-   * @return the property change listener for the scrollpane
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new PropertyChangeHandler();
-  }
-
-  /**
-   * Creates and returns the mouse wheel listener for the scrollpane.
-   *
-   * @return the mouse wheel listener for the scrollpane
-   *
-   * @since 1.4
-   */
-  protected MouseWheelListener createMouseWheelListener()
-  {
-    return new MouseWheelHandler();
-  }
-
-  public void uninstallUI(final JComponent c)
-  {
-    uninstallDefaults((JScrollPane) c);
-    uninstallListeners(c);
-    installKeyboardActions((JScrollPane) c);
-  }
-
-  /**
-   * Uninstalls all the listeners that have been installed in
-   * {@link #installListeners(JScrollPane)}.
-   *
-   * @param c the scrollpane from which to uninstall the listeners
-   */
-  protected void uninstallListeners(JComponent c)
-  {
-    JScrollPane sp = (JScrollPane) c;
-    sp.removePropertyChangeListener(spPropertyChangeListener);
-    sp.getHorizontalScrollBar().getModel()
-                               .removeChangeListener(hsbChangeListener);
-    sp.getVerticalScrollBar().getModel()
-                             .removeChangeListener(vsbChangeListener);
-
-    JViewport v = sp.getViewport();
-    v.removeChangeListener(viewportChangeListener);
-    v.removeContainerListener(containerListener);
-
-    for (int i = 0; i < v.getComponentCount(); i++)
-      v.getComponent(i).removeMouseWheelListener(mouseWheelListener);
-
-  }
-
-  public Dimension getMinimumSize(JComponent c)
-  {
-    JScrollPane p = (JScrollPane) c;
-    ScrollPaneLayout sl = (ScrollPaneLayout) p.getLayout();
-    return sl.minimumLayoutSize(c);
-  }
-
-  public void paint(Graphics g, JComponent c)
-  {
-    Border vpBorder = scrollpane.getViewportBorder();
-    if (vpBorder != null)
-      {
-        Rectangle r = scrollpane.getViewportBorderBounds();
-        vpBorder.paintBorder(scrollpane, g, r.x, r.y, r.width, r.height);
-      }
-  }
-
-  /**
-   * Synchronizes the scrollbar and header settings positions and extent
-   * with the viewport's view position and extent.
-   */
-  protected void syncScrollPaneWithViewport()
-  {
-    JViewport vp = scrollpane.getViewport();
-
-    if (vp != null)
-      {
-        Dimension extentSize = vp.getExtentSize();
-        Point viewPos = vp.getViewPosition();
-        Dimension viewSize = vp.getViewSize();
-
-        // Update the vertical scrollbar.
-        JScrollBar vsb = scrollpane.getVerticalScrollBar();
-        if (vsb != null)
-          {
-            int extent = extentSize.height;
-            int max = viewSize.height;
-            int val = Math.max(0, Math.min(viewPos.y, max - extent));
-            vsb.setValues(val, extent, 0, max);
-          }
-
-        // Update the horizontal scrollbar.
-        JScrollBar hsb = scrollpane.getHorizontalScrollBar();
-        if (hsb != null)
-          {
-            int extent = extentSize.width;
-            int max = viewSize.width;
-            int val = Math.max(0, Math.min(viewPos.x, max - extent));
-            hsb.setValues(val, extent, 0, max);
-          }
-
-        // Update the row header.
-        JViewport rowHeader = scrollpane.getRowHeader();
-        if (rowHeader != null)
-          {
-            Point p = new Point(0, viewPos.y);
-            rowHeader.setViewPosition(p);
-          }
-
-        // Update the column header.
-        JViewport colHeader = scrollpane.getColumnHeader();
-        if (colHeader != null)
-          {
-            Point p = new Point(viewPos.x, 0);
-            colHeader.setViewPosition(p);
-          }
-      }
-  }
-
-  /**
-   * Receives notification when the <code>columnHeader</code> property has
-   * changed on the scrollpane.
-   *
-   * @param ev the property change event
-   */
-  protected void updateColumnHeader(PropertyChangeEvent ev)
-  {
-    // TODO: Find out what should be done here. Or is this only a hook?
-  }
-
-  /**
-   * Receives notification when the <code>rowHeader</code> property has changed
-   * on the scrollpane.
-   *
-   * @param ev the property change event
-   */
-  protected void updateRowHeader(PropertyChangeEvent ev)
-  {
-    // TODO: Find out what should be done here. Or is this only a hook?
-  }
-
-  /**
-   * Receives notification when the <code>scrollBarDisplayPolicy</code>
-   * property has changed on the scrollpane.
-   *
-   * @param ev the property change event
-   */
-  protected void updateScrollBarDisplayPolicy(PropertyChangeEvent ev)
-  {
-    scrollpane.revalidate();
-    scrollpane.repaint();
-  }
-
-  /**
-   * Receives notification when the <code>viewport</code> property has changed
-   * on the scrollpane.
-   *
-   * This method sets removes the viewportChangeListener from the old viewport
-   * and adds it to the new viewport.
-   *
-   * @param ev the property change event
-   */
-  protected void updateViewport(PropertyChangeEvent ev)
-  {
-    JViewport oldViewport = (JViewport) ev.getOldValue();
-    oldViewport.removeChangeListener(viewportChangeListener);
-    JViewport newViewport = (JViewport) ev.getNewValue();
-    newViewport.addChangeListener(viewportChangeListener);
-    syncScrollPaneWithViewport();
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicSeparatorUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicSeparatorUI.java
deleted file mode 100644
index 2c80822..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicSeparatorUI.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/* BasicSeparatorUI.java --
-   Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-
-import javax.swing.JComponent;
-import javax.swing.JSeparator;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.SeparatorUI;
-
-/**
- * The Basic Look and Feel UI delegate for JSeparator.
- */
-public class BasicSeparatorUI extends SeparatorUI
-{
-  /** The shadow color. */
-  protected Color shadow;
-
-  /** The highlight color. */
-  protected Color highlight;
-
-  /**
-   * Creates a new UI delegate for the given JComponent.
-   *
-   * @param c The JComponent to create a delegate for.
-   *
-   * @return A new BasicSeparatorUI.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicSeparatorUI();
-  }
-
-  /**
-   * This method installs the UI for the given JComponent.
-   * This can include installing defaults, listeners, and
-   * initializing any instance data.
-   *
-   * @param c The JComponent that is having this UI installed.
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-
-    if (c instanceof JSeparator)
-      {
-        JSeparator s = (JSeparator) c;
-
-        installDefaults(s);
-        installListeners(s);
-      }
-  }
-
-  /**
-   * Uninstalls the UI for the given JComponent. This
-   * method reverses what was done when installing
-   * the UI on the JComponent.
-   *
-   * @param c The JComponent that is having this UI uninstalled.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    if (c instanceof JSeparator)
-      {
-        JSeparator s = (JSeparator) c;
-
-        uninstallListeners(s);
-        uninstallDefaults(s);
-      }
-  }
-
-  /**
-   * This method installs the defaults that are given by
-   * the Basic Look and Feel.
-   *
-   * @param s The JSeparator that is being installed.
-   */
-  protected void installDefaults(JSeparator s)
-  {
-    shadow = UIManager.getColor("Separator.shadow");
-    highlight = UIManager.getColor("Separator.highlight");
-    s.setOpaque(false);
-  }
-
-  /**
-   * This method removes the defaults that were given
-   * by the Basic Look and Feel.
-   *
-   * @param s The JSeparator that is being uninstalled.
-   */
-  protected void uninstallDefaults(JSeparator s)
-  {
-    shadow = null;
-    highlight = null;
-  }
-
-  /**
-   * This method installs any listeners that need
-   * to be attached to the JSeparator or any of its
-   * components.
-   *
-   * @param s The JSeparator that is being installed.
-   */
-  protected void installListeners(JSeparator s)
-  {
-    // Separators don't receive events.
-  }
-
-  /**
-   * This method uninstalls any listeners that
-   * were installed during the install UI process.
-   *
-   * @param s The JSeparator that is being uninstalled.
-   */
-  protected void uninstallListeners(JSeparator s)
-  {
-    // Separators don't receive events.
-  }
-
-  /**
-   * The separator is made of two lines. The top line will be
-   * the shadow color (or left line if it's vertical). The bottom
-   * or right line will be the highlight color. The two lines will
-   * be centered inside the bounds box. If the separator is horizontal,
-   * then it will be vertically centered, or if it's vertical, it will
-   * be horizontally centered.
-   *
-   * @param g The Graphics object to paint with
-   * @param c The JComponent to paint.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Rectangle r = new Rectangle();
-    SwingUtilities.calculateInnerArea(c, r);
-    Color saved = g.getColor();
-
-    JSeparator s;
-    if (c instanceof JSeparator)
-      s = (JSeparator) c;
-    else
-      return;
-
-    if (s.getOrientation() == JSeparator.HORIZONTAL)
-      {
-        int midAB = r.height / 2;
-        g.setColor(shadow);
-        g.drawLine(r.x, r.y + midAB - 1, r.x + r.width, r.y + midAB - 1);
-
-        g.setColor(highlight);
-        g.fillRect(r.x, r.y + midAB, r.x + r.width, r.y + midAB);
-      }
-      else
-      {
-        int midAD = r.height / 2 + r.y;
-        g.setColor(shadow);
-        g.drawLine(r.x, r.y, r.x, r.y + r.height);
-
-        g.setColor(highlight);
-        g.fillRect(r.x + midAD, r.y + r.height, r.x + midAD, r.y + r.height);
-      }
-    g.setColor(saved);
-  }
-
-  /**
-   * This method returns the preferred size of the
-   * JComponent.
-   *
-   * @param c The JComponent to measure.
-   *
-   * @return The preferred size.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension pref = new Dimension(2, 0);
-    if (c instanceof JSeparator)
-      {
-        JSeparator s = (JSeparator) c;
-        if (s.getOrientation() == JSeparator.HORIZONTAL)
-          pref = new Dimension(0, 2);
-      }
-    return pref;
-  }
-
-  /**
-   * This method returns the minimum size of the
-   * JComponent.
-   *
-   * @param c The JComponent to measure.
-   *
-   * @return The minimum size.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    return new Dimension(0, 0);
-  }
-
-  /**
-   * This method returns the maximum size of the
-   * JComponent.
-   *
-   * @param c The JComponent to measure.
-   *
-   * @return The maximum size.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return new Dimension(Short.MAX_VALUE,
-                         Short.MAX_VALUE);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicSliderUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicSliderUI.java
deleted file mode 100644
index b9d5643..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicSliderUI.java
+++ /dev/null
@@ -1,2339 +0,0 @@
-/* BasicSliderUI.java --
-   Copyright (C) 2004, 2005, 2006,  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Point;
-import java.awt.Polygon;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
-import java.awt.event.ComponentListener;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.Dictionary;
-import java.util.Enumeration;
-
-import javax.swing.AbstractAction;
-import javax.swing.ActionMap;
-import javax.swing.BoundedRangeModel;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
-import javax.swing.JSlider;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingUtilities;
-import javax.swing.Timer;
-import javax.swing.UIManager;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.event.MouseInputAdapter;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.SliderUI;
-
-/**
- * <p>
- * BasicSliderUI.java This is the UI delegate in the Basic look and feel that
- * paints JSliders.
- * </p>
- *
- * <p>
- * The UI delegate keeps track of 6 rectangles that place the various parts of
- * the JSlider inside the component.
- * </p>
- *
- * <p>
- * The rectangles are organized as follows:
- * </p>
- * <pre>
- *     +-------------------------------------------------------+ <-- focusRect
- *     |                                                       |
- *     |  +==+-------------------+==+--------------------+==+<------ contentRect
- *     |  |  |                   |  |<---thumbRect       |  |  |
- *     |  |  |    TRACK          |  |                    |<--------- trackRect
- *     |  |  +-------------------+==+--------------------+  |  |
- *     |  |  |                                           |  |  |
- *     |  |  |          TICKS GO HERE                    |<-------- tickRect
- *     |  |  |                                           |  |  |
- *     |  +==+-------------------------------------------+==+  |
- *     |  |  |                                           |  |  |
- *     |  |  |                                           |  |<----- labelRect
- *     |  |  |                 LABELS GO HERE            |  |  |
- *     |  |  |                                           |  |  |
- *     |  |  |                                           |  |  |
- *     |  |  |                                           |  |  |
- *     |  |  |                                           |  |  |
- *     |  |                                              |  |  |
- * </pre>
- *
- * <p>
- * The space between the contentRect and the focusRect are the FocusInsets.
- * </p>
- *
- * <p>
- * The space between the focusRect and the component bounds is the insetCache
- * which are the component's insets.
- * </p>
- *
- * <p>
- * The top of the thumb is the top of the contentRect. The trackRect has to be
- * as tall as the thumb.
- * </p>
- *
- * <p>
- * The trackRect and tickRect do not start from the left edge of the
- * focusRect. They are trackBuffer away from each side of the focusRect. This
- * is so that the thumb has room to move.
- * </p>
- *
- * <p>
- * The labelRect does start right against the contentRect's left and right
- * edges and it gets all remaining space.
- * </p>
- */
-public class BasicSliderUI extends SliderUI
-{
-  /**
-   * Helper class that listens to the {@link JSlider}'s model for changes.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class ChangeHandler implements ChangeListener
-  {
-    /**
-     * Called when the slider's model has been altered. The UI delegate should
-     * recalculate any rectangles that are dependent on the model for their
-     * positions and repaint.
-     *
-     * @param e A static {@link ChangeEvent} passed from the model.
-     */
-    public void stateChanged(ChangeEvent e)
-    {
-      // Maximum, minimum, and extent values will be taken
-      // care of automatically when the slider is repainted.
-      // Only thing that needs recalculation is the thumb.
-      calculateThumbLocation();
-      slider.repaint();
-    }
-  }
-
-  /**
-   * Helper class that listens for resize events.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class ComponentHandler extends ComponentAdapter
-  {
-    /**
-     * Called when the size of the component changes. The UI delegate should
-     * recalculate any rectangles that are dependent on the model for their
-     * positions and repaint.
-     *
-     * @param e A {@link ComponentEvent}.
-     */
-    public void componentResized(ComponentEvent e)
-    {
-      calculateGeometry();
-      slider.repaint();
-    }
-  }
-
-  /**
-   * Helper class that listens for focus events.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class FocusHandler implements FocusListener
-  {
-    /**
-     * Called when the {@link JSlider} has gained focus.  It should repaint
-     * the slider with the focus drawn.
-     *
-     * @param e A {@link FocusEvent}.
-     */
-    public void focusGained(FocusEvent e)
-    {
-      slider.repaint();
-    }
-
-    /**
-     * Called when the {@link JSlider} has lost focus. It  should repaint the
-     * slider without the focus drawn.
-     *
-     * @param e A {@link FocusEvent}.
-     */
-    public void focusLost(FocusEvent e)
-    {
-      slider.repaint();
-    }
-  }
-
-  /**
-   * Helper class that listens for changes to the properties of the {@link
-   * JSlider}.
-   */
-  public class PropertyChangeHandler implements PropertyChangeListener
-  {
-    /**
-     * Called when one of the properties change. The UI should recalculate any
-     * rectangles if necessary and repaint.
-     *
-     * @param e A {@link PropertyChangeEvent}.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      // Check for orientation changes.
-      String prop = e.getPropertyName();
-      if (prop.equals("orientation")
-          || prop.equals("inverted")
-          || prop.equals("labelTable")
-          || prop.equals("majorTickSpacing")
-          || prop.equals("minorTickSpacing")
-          || prop.equals("paintTicks")
-          || prop.equals("paintTrack")
-          || prop.equals("paintLabels"))
-        {
-          calculateGeometry();
-          slider.repaint();
-        }
-      else if (e.getPropertyName().equals("model"))
-        {
-          BoundedRangeModel oldModel = (BoundedRangeModel) e.getOldValue();
-          oldModel.removeChangeListener(changeListener);
-          slider.getModel().addChangeListener(changeListener);
-          calculateThumbLocation();
-          slider.repaint();
-        }
-    }
-  }
-
-  /**
-   * Helper class that listens to our swing timer. This class is responsible
-   * for listening to the timer and moving the thumb in the proper direction
-   * every interval.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class ScrollListener implements ActionListener
-  {
-    /** Indicates which direction the thumb should scroll. */
-    private transient int direction;
-
-    /** Indicates whether we should scroll in blocks or in units. */
-    private transient boolean block;
-
-    /**
-     * Creates a new ScrollListener object.
-     */
-    public ScrollListener()
-    {
-      direction = POSITIVE_SCROLL;
-      block = false;
-    }
-
-    /**
-     * Creates a new ScrollListener object.
-     *
-     * @param dir The direction to scroll in.
-     * @param block If movement will be in blocks.
-     */
-    public ScrollListener(int dir, boolean block)
-    {
-      direction = dir;
-      this.block = block;
-    }
-
-    /**
-     * Called every time the swing timer reaches its interval. If the thumb
-     * needs to move, then this method will move the thumb one block or  unit
-     * in the direction desired. Otherwise, the timer can be stopped.
-     *
-     * @param e An {@link ActionEvent}.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      if (! trackListener.shouldScroll(direction))
-        {
-          scrollTimer.stop();
-          return;
-        }
-
-      if (block)
-        scrollByBlock(direction);
-      else
-        scrollByUnit(direction);
-    }
-
-    /**
-     * Sets the direction to scroll in.
-     *
-     * @param direction The direction to scroll in.
-     */
-    public void setDirection(int direction)
-    {
-      this.direction = direction;
-    }
-
-    /**
-     * Sets whether movement will be in blocks.
-     *
-     * @param block If movement will be in blocks.
-     */
-    public void setScrollByBlock(boolean block)
-    {
-      this.block = block;
-    }
-  }
-
-  /**
-   * Helper class that listens for mouse events.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class TrackListener extends MouseInputAdapter
-  {
-    /** The current X position of the mouse. */
-    protected int currentMouseX;
-
-    /** The current Y position of the mouse. */
-    protected int currentMouseY;
-
-    /**
-     * The offset between the current slider value and the cursor's position.
-     */
-    protected int offset;
-
-    /**
-     * Called when the mouse has been dragged. This should find the mouse's
-     * current position and adjust the value of the {@link JSlider}
-     * accordingly.
-     *
-     * @param e A {@link MouseEvent}
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      dragging = true;
-      if (slider.isEnabled())
-        {
-          currentMouseX = e.getX();
-          currentMouseY = e.getY();
-          if (slider.getValueIsAdjusting())
-            {
-              int value;
-              if (slider.getOrientation() == JSlider.HORIZONTAL)
-                value = valueForXPosition(currentMouseX) - offset;
-              else
-                value = valueForYPosition(currentMouseY) - offset;
-
-              slider.setValue(value);
-            }
-        }
-    }
-
-    /**
-     * Called when the mouse has moved over a component but no buttons have
-     * been pressed yet.
-     *
-     * @param e A {@link MouseEvent}
-     */
-    public void mouseMoved(MouseEvent e)
-    {
-      // Don't care that we're moved unless we're dragging.
-    }
-
-    /**
-     * Called when the mouse is pressed. When the press occurs on the thumb
-     * itself, the {@link JSlider} should have its value set to where the
-     * mouse was pressed. If the press occurs on the track, then the thumb
-     * should move one block towards the direction of the mouse.
-     *
-     * @param e A {@link MouseEvent}
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      if (slider.isEnabled())
-        {
-          currentMouseX = e.getX();
-          currentMouseY = e.getY();
-
-          int value;
-          if (slider.getOrientation() == JSlider.HORIZONTAL)
-            value = valueForXPosition(currentMouseX);
-          else
-            value = valueForYPosition(currentMouseY);
-
-          if (slider.getSnapToTicks())
-            value = findClosestTick(value);
-
-          // If the thumb is hit, then we don't need to set the timers to
-          // move it.
-          if (! thumbRect.contains(e.getPoint()))
-            {
-              // The mouse has hit some other part of the slider.
-              // The value moves no matter where in the slider you hit.
-              if (value > slider.getValue())
-                scrollDueToClickInTrack(POSITIVE_SCROLL);
-              else
-                scrollDueToClickInTrack(NEGATIVE_SCROLL);
-            }
-          else
-            {
-              slider.setValueIsAdjusting(true);
-              offset = value - slider.getValue();
-            }
-        }
-    }
-
-    /**
-     * Called when the mouse is released.  This should stop the timer that
-     * scrolls the thumb.
-     *
-     * @param e A {@link MouseEvent}
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      dragging = false;
-      if (slider.isEnabled())
-        {
-          currentMouseX = e.getX();
-          currentMouseY = e.getY();
-
-          if (slider.getValueIsAdjusting())
-            {
-              slider.setValueIsAdjusting(false);
-              if (slider.getSnapToTicks())
-                slider.setValue(findClosestTick(slider.getValue()));
-            }
-          if (scrollTimer != null)
-            scrollTimer.stop();
-        }
-      slider.repaint();
-    }
-
-    /**
-     * Indicates whether the thumb should scroll in the given direction.
-     *
-     * @param direction The direction to check.
-     *
-     * @return True if the thumb should move in that direction.
-     */
-    public boolean shouldScroll(int direction)
-    {
-      int value;
-      if (slider.getOrientation() == JSlider.HORIZONTAL)
-        value = valueForXPosition(currentMouseX);
-      else
-        value = valueForYPosition(currentMouseY);
-
-      if (direction == POSITIVE_SCROLL)
-        return value > slider.getValue();
-      else
-        return value < slider.getValue();
-    }
-  }
-
-  /**
-   * This class is no longer used as of JDK1.3.
-   */
-  public class ActionScroller extends AbstractAction
-  {
-    /**
-     * Not used.
-     *
-     * @param slider not used
-     * @param dir not used
-     * @param block not used
-     */
-    public ActionScroller(JSlider slider, int dir, boolean block)
-    {
-      // Not used.
-    }
-
-    /**
-     * Not used.
-     *
-     * @param event not used
-     */
-    public void actionPerformed(ActionEvent event)
-    {
-      // Not used.
-    }
-  }
-
-  /** Listener for changes from the model. */
-  protected ChangeListener changeListener;
-
-  /** Listener for changes to the {@link JSlider}. */
-  protected PropertyChangeListener propertyChangeListener;
-
-  /** Listener for the scrollTimer. */
-  protected ScrollListener scrollListener;
-
-  /** Listener for component resizing. */
-  protected ComponentListener componentListener;
-
-  /** Listener for focus handling. */
-  protected FocusListener focusListener;
-
-  /** Listener for mouse events. */
-  protected TrackListener trackListener;
-
-  /** The insets between the FocusRectangle and the ContentRectangle. */
-  protected Insets focusInsets;
-
-  /** The {@link JSlider}'s insets. */
-  protected Insets insetCache;
-
-  /** Rectangle describing content bounds. See diagram above. */
-  protected Rectangle contentRect;
-
-  /** Rectangle describing focus bounds. See diagram above. */
-  protected Rectangle focusRect;
-
-  /** Rectangle describing the thumb's bounds. See diagram above. */
-  protected Rectangle thumbRect;
-
-  /** Rectangle describing the tick bounds. See diagram above. */
-  protected Rectangle tickRect;
-
-  /** Rectangle describing the label bounds. See diagram above. */
-  protected Rectangle labelRect;
-
-  /** Rectangle describing the track bounds. See diagram above. */
-  protected Rectangle trackRect;
-
-  /** FIXME: use this somewhere. */
-  public static final int MAX_SCROLL = 2;
-
-  /** FIXME: use this somewhere. */
-  public static final int MIN_SCROLL = -2;
-
-  /** A constant describing scrolling towards the minimum. */
-  public static final int NEGATIVE_SCROLL = -1;
-
-  /** A constant describing scrolling towards the maximum. */
-  public static final int POSITIVE_SCROLL = 1;
-
-  /** The gap between the edges of the contentRect and trackRect. */
-  protected int trackBuffer;
-
-  /** Whether this slider is actually drawn left to right. */
-  protected boolean leftToRightCache;
-
-  /** A timer that periodically moves the thumb. */
-  protected Timer scrollTimer;
-
-  /** A reference to the {@link JSlider} that this UI was created for. */
-  protected JSlider slider;
-
-  /** The shadow color. */
-  private transient Color shadowColor;
-
-  /** The highlight color. */
-  private transient Color highlightColor;
-
-  /** The focus color. */
-  private transient Color focusColor;
-
-  /** True if the user is dragging the slider. */
-  boolean dragging;
-
-  /**
-   * Creates a new Basic look and feel Slider UI.
-   *
-   * @param b The {@link JSlider} that this UI was created for.
-   */
-  public BasicSliderUI(JSlider b)
-  {
-    super();
-  }
-
-  /**
-   * Returns true if the user is dragging the slider.
-   *
-   * @return true if the slider is being dragged.
-   *
-   * @since 1.5
-   */
-  protected boolean isDragging()
-  {
-    return dragging;
-  }
-
-  /**
-   * Gets the shadow color to be used for this slider. The shadow color is the
-   * color used for drawing the top and left edges of the track.
-   *
-   * @return The shadow color.
-   */
-  protected Color getShadowColor()
-  {
-    return shadowColor;
-  }
-
-  /**
-   * Gets the highlight color to be used for this slider. The highlight color
-   * is the color used for drawing the bottom and right edges of the track.
-   *
-   * @return The highlight color.
-   */
-  protected Color getHighlightColor()
-  {
-    return highlightColor;
-  }
-
-  /**
-   * Gets the focus color to be used for this slider. The focus color is the
-   * color used for drawing the focus rectangle when the component gains
-   * focus.
-   *
-   * @return The focus color.
-   */
-  protected Color getFocusColor()
-  {
-    return focusColor;
-  }
-
-  /**
-   * Factory method to create a BasicSliderUI for the given {@link
-   * JComponent}, which should be a {@link JSlider}.
-   *
-   * @param b The {@link JComponent} a UI is being created for.
-   *
-   * @return A BasicSliderUI for the {@link JComponent}.
-   */
-  public static ComponentUI createUI(JComponent b)
-  {
-    return new BasicSliderUI((JSlider) b);
-  }
-
-  /**
-   * Installs and initializes all fields for this UI delegate. Any properties
-   * of the UI that need to be initialized and/or set to defaults will be
-   * done now. It will also install any listeners necessary.
-   *
-   * @param c The {@link JComponent} that is having this UI installed.
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    if (c instanceof JSlider)
-      {
-        slider = (JSlider) c;
-
-        focusRect = new Rectangle();
-        contentRect = new Rectangle();
-        thumbRect = new Rectangle();
-        trackRect = new Rectangle();
-        tickRect = new Rectangle();
-        labelRect = new Rectangle();
-
-        insetCache = slider.getInsets();
-        leftToRightCache = ! slider.getInverted();
-
-        scrollTimer = new Timer(200, null);
-        scrollTimer.setRepeats(true);
-
-        installDefaults(slider);
-        installListeners(slider);
-        installKeyboardActions(slider);
-
-        calculateFocusRect();
-
-        calculateContentRect();
-        calculateThumbSize();
-        calculateTrackBuffer();
-        calculateTrackRect();
-        calculateThumbLocation();
-
-        calculateTickRect();
-        calculateLabelRect();
-      }
-  }
-
-  /**
-   * Performs the opposite of installUI. Any properties or resources that need
-   * to be cleaned up will be done now. It will also uninstall any listeners
-   * it has. In addition, any properties of this UI will be nulled.
-   *
-   * @param c The {@link JComponent} that is having this UI uninstalled.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    super.uninstallUI(c);
-
-    uninstallKeyboardActions(slider);
-    uninstallListeners(slider);
-
-    scrollTimer = null;
-
-    focusRect = null;
-    contentRect = null;
-    thumbRect = null;
-    trackRect = null;
-    tickRect = null;
-    labelRect = null;
-
-    focusInsets = null;
-  }
-
-  /**
-   * Initializes any default properties that this UI has from the defaults for
-   * the Basic look and feel.
-   *
-   * @param slider The {@link JSlider} that is having this UI installed.
-   */
-  protected void installDefaults(JSlider slider)
-  {
-    LookAndFeel.installColors(slider, "Slider.background",
-                              "Slider.foreground");
-    LookAndFeel.installBorder(slider, "Slider.border");
-    shadowColor = UIManager.getColor("Slider.shadow");
-    highlightColor = UIManager.getColor("Slider.highlight");
-    focusColor = UIManager.getColor("Slider.focus");
-    focusInsets = UIManager.getInsets("Slider.focusInsets");
-    slider.setOpaque(true);
-  }
-
-  /**
-   * Creates a new {@link TrackListener}.
-   *
-   * @param slider The {@link JSlider} that this {@link TrackListener} is
-   *        created for.
-   *
-   * @return A new {@link TrackListener}.
-   */
-  protected TrackListener createTrackListener(JSlider slider)
-  {
-    return new TrackListener();
-  }
-
-  /**
-   * Creates a new {@link ChangeListener}.
-   *
-   * @param slider The {@link JSlider} that this {@link ChangeListener} is
-   *        created for.
-   *
-   * @return A new {@link ChangeListener}.
-   */
-  protected ChangeListener createChangeListener(JSlider slider)
-  {
-    return new ChangeHandler();
-  }
-
-  /**
-   * Creates a new {@link ComponentListener}.
-   *
-   * @param slider The {@link JSlider} that this {@link ComponentListener} is
-   *        created for.
-   *
-   * @return A new {@link ComponentListener}.
-   */
-  protected ComponentListener createComponentListener(JSlider slider)
-  {
-    return new ComponentHandler();
-  }
-
-  /**
-   * Creates a new {@link FocusListener}.
-   *
-   * @param slider The {@link JSlider} that this {@link FocusListener} is
-   *        created for.
-   *
-   * @return A new {@link FocusListener}.
-   */
-  protected FocusListener createFocusListener(JSlider slider)
-  {
-    return new FocusHandler();
-  }
-
-  /**
-   * Creates a new {@link ScrollListener}.
-   *
-   * @param slider The {@link JSlider} that this {@link ScrollListener} is
-   *        created for.
-   *
-   * @return A new {@link ScrollListener}.
-   */
-  protected ScrollListener createScrollListener(JSlider slider)
-  {
-    return new ScrollListener();
-  }
-
-  /**
-   * Creates a new {@link PropertyChangeListener}.
-   *
-   * @param slider The {@link JSlider} that this {@link
-   *        PropertyChangeListener} is created for.
-   *
-   * @return A new {@link PropertyChangeListener}.
-   */
-  protected PropertyChangeListener createPropertyChangeListener(JSlider slider)
-  {
-    return new PropertyChangeHandler();
-  }
-
-  /**
-   * Creates and registers all the listeners for this UI delegate. This
-   * includes creating the ScrollListener and registering it to the timer.
-   *
-   * @param slider The {@link JSlider} is having listeners installed.
-   */
-  protected void installListeners(JSlider slider)
-  {
-    propertyChangeListener = createPropertyChangeListener(slider);
-    componentListener = createComponentListener(slider);
-    trackListener = createTrackListener(slider);
-    focusListener = createFocusListener(slider);
-    changeListener = createChangeListener(slider);
-    scrollListener = createScrollListener(slider);
-
-    slider.addPropertyChangeListener(propertyChangeListener);
-    slider.addComponentListener(componentListener);
-    slider.addMouseListener(trackListener);
-    slider.addMouseMotionListener(trackListener);
-    slider.addFocusListener(focusListener);
-    slider.getModel().addChangeListener(changeListener);
-
-    scrollTimer.addActionListener(scrollListener);
-  }
-
-  /**
-   * Unregisters all the listeners that this UI delegate was using. In
-   * addition, it will also null any listeners that it was using.
-   *
-   * @param slider The {@link JSlider} that is having listeners removed.
-   */
-  protected void uninstallListeners(JSlider slider)
-  {
-    slider.removePropertyChangeListener(propertyChangeListener);
-    slider.removeComponentListener(componentListener);
-    slider.removeMouseListener(trackListener);
-    slider.removeMouseMotionListener(trackListener);
-    slider.removeFocusListener(focusListener);
-    slider.getModel().removeChangeListener(changeListener);
-
-    scrollTimer.removeActionListener(scrollListener);
-
-    propertyChangeListener = null;
-    componentListener = null;
-    trackListener = null;
-    focusListener = null;
-    changeListener = null;
-    scrollListener = null;
-  }
-
-  /**
-   * Installs any keyboard actions. The list of keys that need to be bound are
-   * listed in Basic look and feel's defaults.
-   *
-   * @param slider The {@link JSlider} that is having keyboard actions
-   *        installed.
-   */
-  protected void installKeyboardActions(JSlider slider)
-  {
-    InputMap keyMap = getInputMap(JComponent.WHEN_FOCUSED);
-    SwingUtilities.replaceUIInputMap(slider, JComponent.WHEN_FOCUSED, keyMap);
-    ActionMap map = getActionMap();
-    SwingUtilities.replaceUIActionMap(slider, map);
-  }
-
-  /**
-   * Uninstalls any keyboard actions. The list of keys used  are listed in
-   * Basic look and feel's defaults.
-   *
-   * @param slider The {@link JSlider} that is having keyboard actions
-   *        uninstalled.
-   */
-  protected void uninstallKeyboardActions(JSlider slider)
-  {
-    SwingUtilities.replaceUIActionMap(slider, null);
-    SwingUtilities.replaceUIInputMap(slider, JComponent.WHEN_FOCUSED, null);
-  }
-
-  /* XXX: This is all after experimentation with SUN's implementation.
-
-     PreferredHorizontalSize seems to be 200x21.
-     PreferredVerticalSize seems to be 21x200.
-
-     MinimumHorizontalSize seems to be 36x21.
-     MinimumVerticalSize seems to be 21x36.
-
-     PreferredSize seems to be 200x63. Or Components.getBounds?
-
-     MinimumSize seems to be 36x63.
-
-     MaximumSize seems to be 32767x63.
-   */
-
-  /**
-   * This method returns the preferred size when the slider is horizontally
-   * oriented.
-   *
-   * @return The dimensions of the preferred horizontal size.
-   */
-  public Dimension getPreferredHorizontalSize()
-  {
-    Dimension dim = UIManager.getDimension("Slider.horizontalSize");
-    if (dim == null) // Just to be sure we mirror the default.
-      dim = new Dimension(200, 21);
-    return dim;
-  }
-
-  /**
-   * This method returns the preferred size when the slider is vertically
-   * oriented.
-   *
-   * @return The dimensions of the preferred vertical size.
-   */
-  public Dimension getPreferredVerticalSize()
-  {
-    Dimension dim = UIManager.getDimension("Slider.verticalSize");
-    if (dim == null) // Just to be sure we mirror the default.
-      dim = new Dimension(21, 200);
-    return dim;
-  }
-
-  /**
-   * This method returns the minimum size when the slider is horizontally
-   * oriented.
-   *
-   * @return The dimensions of the minimum horizontal size.
-   */
-  public Dimension getMinimumHorizontalSize()
-  {
-    Dimension dim = UIManager.getDimension("Slider.minimumHorizontalSize");
-    if (dim == null) // Just to be sure we mirror the default.
-      dim = new Dimension(36, 21);
-    return dim;
-  }
-
-  /**
-   * This method returns the minimum size of the slider when it  is vertically
-   * oriented.
-   *
-   * @return The dimensions of the minimum vertical size.
-   */
-  public Dimension getMinimumVerticalSize()
-  {
-    Dimension dim = UIManager.getDimension("Slider.minimumVerticalSize");
-    if (dim == null) // Just to be sure we mirror the default.
-      dim = new Dimension(21, 36);
-    return dim;
-  }
-
-  /**
-   * This method returns the preferred size of the component. If it returns
-   * null, then it is up to the Layout Manager to give the {@link JComponent}
-   * a size.
-   *
-   * @param c The {@link JComponent} to find the preferred size for.
-   *
-   * @return The dimensions of the preferred size.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    recalculateIfInsetsChanged();
-    Dimension dim;
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      {
-        // Create copy here to protect the UIManager value.
-        dim = new Dimension(getPreferredHorizontalSize());
-        dim.height = insetCache.top + insetCache.bottom;
-        dim.height += focusInsets.top + focusInsets.bottom;
-        dim.height += trackRect.height + tickRect.height + labelRect.height;
-      }
-    else
-      {
-        // Create copy here to protect the UIManager value.
-        dim = new Dimension(getPreferredVerticalSize());
-        dim.width = insetCache.left + insetCache.right;
-        dim.width += focusInsets.left + focusInsets.right;
-        dim.width += trackRect.width + tickRect.width + labelRect.width;
-      }
-    return dim;
-  }
-
-  /**
-   * This method returns the minimum size for this {@link JSlider}  for this
-   * look and feel. If it returns null, then it is up to the Layout Manager
-   * to give the {@link JComponent} a size.
-   *
-   * @param c The {@link JComponent} to find the minimum size for.
-   *
-   * @return The dimensions of the minimum size.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    recalculateIfInsetsChanged();
-    Dimension dim;
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      {
-        // Create copy here to protect the UIManager value.
-        dim = new Dimension(getMinimumHorizontalSize());
-        dim.height = insetCache.top + insetCache.bottom;
-        dim.height += focusInsets.top + focusInsets.bottom;
-        dim.height += trackRect.height + tickRect.height + labelRect.height;
-      }
-    else
-      {
-        // Create copy here to protect the UIManager value.
-        dim = new Dimension(getMinimumVerticalSize());
-        dim.width = insetCache.left + insetCache.right;
-        dim.width += focusInsets.left + focusInsets.right;
-        dim.width += trackRect.width + tickRect.width + labelRect.width;
-      }
-    return dim;
-  }
-
-  /**
-   * This method returns the maximum size for this {@link JSlider} for this
-   * look and feel.
-   *
-   * @param c The {@link JComponent} to find a maximum size for.
-   *
-   * @return The dimensions of the maximum size.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension dim = getPreferredSize(c);
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      dim.width = Short.MAX_VALUE;
-    else
-      dim.height = Short.MAX_VALUE;
-    return dim;
-  }
-
-  /**
-   * This method calculates all the sizes of the rectangles by delegating to
-   * the helper methods calculateXXXRect.
-   */
-  protected void calculateGeometry()
-  {
-    calculateFocusRect();
-    calculateContentRect();
-    calculateThumbSize();
-    calculateTrackBuffer();
-    calculateTrackRect();
-    calculateTickRect();
-    calculateLabelRect();
-    calculateThumbLocation();
-  }
-
-  /**
-   * This method calculates the size and position of the focusRect. This
-   * method does not need to be called if the orientation changes.
-   */
-  protected void calculateFocusRect()
-  {
-    focusRect.x = insetCache.left;
-    focusRect.y = insetCache.top;
-    focusRect.width = slider.getWidth() - insetCache.left - insetCache.right;
-    focusRect.height = slider.getHeight() - insetCache.top - insetCache.bottom;
-  }
-
-  /**
-   * Sets the width and height of the <code>thumbRect</code> field, using the
-   * dimensions returned by {@link #getThumbSize()}.
-   */
-  protected void calculateThumbSize()
-  {
-    Dimension d = getThumbSize();
-    thumbRect.width = d.width;
-    thumbRect.height = d.height;
-  }
-
-  /**
-   * Updates the <code>contentRect</code> field to an area inside the
-   * <code>focusRect</code>. This method does not need to be called if the
-   * orientation changes.
-   */
-  protected void calculateContentRect()
-  {
-    contentRect.x = focusRect.x + focusInsets.left;
-    contentRect.y = focusRect.y + focusInsets.top;
-
-    contentRect.width = focusRect.width - focusInsets.left - focusInsets.right;
-    contentRect.height = focusRect.height - focusInsets.top
-                         - focusInsets.bottom;
-  }
-
-  /**
-   * Calculates the position of the thumbRect based on the current value of
-   * the slider. It must take into  account the orientation of the slider.
-   */
-  protected void calculateThumbLocation()
-  {
-    int value = slider.getValue();
-
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      {
-        thumbRect.x = xPositionForValue(value) - thumbRect.width / 2;
-        thumbRect.y = trackRect.y + 1;
-      }
-    else
-      {
-        thumbRect.x = trackRect.x + 1;
-        thumbRect.y = yPositionForValue(value) - thumbRect.height / 2;
-      }
-  }
-
-  /**
-   * Calculates the gap size between the edge of the <code>contentRect</code>
-   * and the edge of the <code>trackRect</code>, storing the result in the
-   * <code>trackBuffer</code> field.  Sufficient space needs to be reserved
-   * for the slider thumb and/or the labels at each end of the slider track.
-   */
-  protected void calculateTrackBuffer()
-  {
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      {
-        int w = Math.max(getWidthOfLowValueLabel(), getWidthOfHighValueLabel());
-        trackBuffer = Math.max(thumbRect.width / 2, w / 2);
-
-      }
-    else
-      {
-        int h = Math.max(getHeightOfLowValueLabel(),
-                         getHeightOfHighValueLabel());
-        trackBuffer = Math.max(thumbRect.height / 2, h / 2);
-      }
-  }
-
-  /**
-   * Returns the size of the slider's thumb.  The size is hard coded to
-   * <code>11 x 20</code> for horizontal sliders, and <code>20 x 11</code> for
-   * vertical sliders. Note that a new instance of {@link Dimension} is
-   * returned for every call to this method (this seems wasteful, but
-   * {@link Dimension} instances are not immutable, so this is probably
-   * unavoidable).
-   *
-   * @return The size of the slider's thumb.
-   */
-  protected Dimension getThumbSize()
-  {
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      return new Dimension(11, 20);
-    else
-      return new Dimension(20, 11);
-  }
-
-  /**
-   * Calculates the size and position of the trackRect. It must take into
-   * account the orientation of the slider.
-   */
-  protected void calculateTrackRect()
-  {
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      {
-        int center = thumbRect.height;
-        if (slider.getPaintTicks())
-          center += getTickLength();
-        if (slider.getPaintLabels())
-          center += getHeightOfTallestLabel();
-        trackRect.x = contentRect.x + trackBuffer;
-        trackRect.y = contentRect.y + (contentRect.height - center - 1) / 2;
-        trackRect.width = contentRect.width - 2 * trackBuffer;
-        trackRect.height = thumbRect.height;
-      }
-    else
-      {
-        int center = thumbRect.width;
-        if (slider.getPaintTicks())
-          center += getTickLength();
-        if (slider.getPaintLabels())
-          center += getWidthOfWidestLabel();
-        trackRect.x = contentRect.x + (contentRect.width - center - 1) / 2;
-        trackRect.y = contentRect.y + trackBuffer;
-        trackRect.width = thumbRect.width;
-        trackRect.height = contentRect.height - 2 * trackBuffer;
-      }
-  }
-
-  /**
-   * This method returns the height of the tick area box if the slider  is
-   * horizontal and the width of the tick area box is the slider is vertical.
-   * It not necessarily how long the ticks will be. If a gap between the edge
-   * of tick box and the actual tick is desired, then that will need to be
-   * handled in the tick painting methods.
-   *
-   * @return The height (or width if the slider is vertical) of the tick
-   *         rectangle.
-   */
-  protected int getTickLength()
-  {
-    return 8;
-  }
-
-  /**
-   * This method calculates the size and position of the tickRect. It must
-   * take into account the orientation of the slider.
-   */
-  protected void calculateTickRect()
-  {
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      {
-        tickRect.x = trackRect.x;
-        tickRect.y = trackRect.y + trackRect.height;
-        tickRect.width = trackRect.width;
-        tickRect.height = getTickLength();
-
-        // this makes our Mauve tests pass...can't explain it!
-        if (!slider.getPaintTicks())
-          {
-            tickRect.y--;
-            tickRect.height = 0;
-          }
-      }
-    else
-      {
-        tickRect.x = trackRect.x + trackRect.width;
-        tickRect.y = trackRect.y;
-        tickRect.width = getTickLength();
-        tickRect.height = trackRect.height;
-
-        // this makes our Mauve tests pass...can't explain it!
-        if (!slider.getPaintTicks())
-          {
-            tickRect.x--;
-            tickRect.width = 0;
-          }
-      }
-  }
-
-  /**
-   * Calculates the <code>labelRect</code> field, taking into account the
-   * orientation of the slider.
-   */
-  protected void calculateLabelRect()
-  {
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      {
-        if (slider.getPaintLabels())
-          {
-            labelRect.x = tickRect.x - trackBuffer;
-            labelRect.y = tickRect.y + tickRect.height;
-            labelRect.width = tickRect.width + trackBuffer * 2;
-            labelRect.height = getHeightOfTallestLabel();
-          }
-        else
-          {
-            labelRect.x = tickRect.x;
-            labelRect.y = tickRect.y + tickRect.height;
-            labelRect.width = tickRect.width;
-            labelRect.height = 0;
-          }
-      }
-    else
-      {
-        if (slider.getPaintLabels())
-          {
-            labelRect.x = tickRect.x + tickRect.width;
-            labelRect.y = tickRect.y - trackBuffer;
-            labelRect.width = getWidthOfWidestLabel();
-            labelRect.height = tickRect.height + trackBuffer * 2;
-          }
-        else
-          {
-            labelRect.x = tickRect.x + tickRect.width;
-            labelRect.y = tickRect.y;
-            labelRect.width = 0;
-            labelRect.height = tickRect.height;
-          }
-      }
-  }
-
-  /**
-   * This method returns the width of the widest label  in the slider's label
-   * table.
-   *
-   * @return The width of the widest label or 0 if no label table exists.
-   */
-  protected int getWidthOfWidestLabel()
-  {
-    int widest = 0;
-    Dictionary table = slider.getLabelTable();
-    if (table != null)
-      {
-        for (Enumeration list = slider.getLabelTable().elements();
-             list.hasMoreElements();)
-          {
-            Component label = (Component) list.nextElement();
-            widest = Math.max(label.getPreferredSize().width, widest);
-          }
-      }
-    return widest;
-  }
-
-  /**
-   * This method returns the height of the tallest label in the slider's label
-   * table.
-   *
-   * @return The height of the tallest label or 0 if no label table exists.
-   */
-  protected int getHeightOfTallestLabel()
-  {
-    int tallest = 0;
-    Component label;
-
-    if (slider.getLabelTable() == null)
-      return 0;
-    Dimension pref;
-    for (Enumeration list = slider.getLabelTable().elements();
-         list.hasMoreElements();)
-      {
-        Object comp = list.nextElement();
-        if (! (comp instanceof Component))
-          continue;
-        label = (Component) comp;
-        pref = label.getPreferredSize();
-        if (pref != null && pref.height > tallest)
-          tallest = pref.height;
-      }
-    return tallest;
-  }
-
-  /**
-   * Returns the width of the label whose key has the highest value, or 0 if
-   * there are no labels.
-   *
-   * @return The width of the label whose key has the highest value.
-   *
-   * @see #getHighestValueLabel()
-   */
-  protected int getWidthOfHighValueLabel()
-  {
-    Component highValueLabel = getHighestValueLabel();
-    if (highValueLabel != null)
-      return highValueLabel.getPreferredSize().width;
-    else
-      return 0;
-  }
-
-  /**
-   * Returns the width of the label whose key has the lowest value, or 0 if
-   * there are no labels.
-   *
-   * @return The width of the label whose key has the lowest value.
-   *
-   * @see #getLowestValueLabel()
-   */
-  protected int getWidthOfLowValueLabel()
-  {
-    Component lowValueLabel = getLowestValueLabel();
-    if (lowValueLabel != null)
-      return lowValueLabel.getPreferredSize().width;
-    else
-      return 0;
-  }
-
-  /**
-   * Returns the height of the label whose key has the highest value, or 0 if
-   * there are no labels.
-   *
-   * @return The height of the high value label or 0 if no label table exists.
-   */
-  protected int getHeightOfHighValueLabel()
-  {
-    Component highValueLabel = getHighestValueLabel();
-    if (highValueLabel != null)
-      return highValueLabel.getPreferredSize().height;
-    else
-      return 0;
-  }
-
-  /**
-   * Returns the height of the label whose key has the lowest value, or 0 if
-   * there are no labels.
-   *
-   * @return The height of the low value label or 0 if no label table exists.
-   */
-  protected int getHeightOfLowValueLabel()
-  {
-    Component lowValueLabel = getLowestValueLabel();
-    if (lowValueLabel != null)
-      return lowValueLabel.getPreferredSize().height;
-    else
-      return 0;
-  }
-
-  /**
-   * Returns <code>true</code> if the slider scale is to be drawn inverted,
-   * and <code>false</code> if not.
-   *
-   * @return <code>true</code> if the slider is to be drawn inverted.
-   */
-  protected boolean drawInverted()
-  {
-    return slider.getInverted();
-  }
-
-  /**
-   * This method returns the label whose key has the lowest value.
-   *
-   * @return The low value label or null if no label table exists.
-   */
-  protected Component getLowestValueLabel()
-  {
-    Integer key = new Integer(Integer.MAX_VALUE);
-    Integer tmpKey;
-    Dictionary labelTable = slider.getLabelTable();
-
-    if (labelTable == null)
-      return null;
-
-    for (Enumeration list = labelTable.keys(); list.hasMoreElements();)
-      {
-        Object value = list.nextElement();
-        if (! (value instanceof Integer))
-          continue;
-        tmpKey = (Integer) value;
-        if (tmpKey.intValue() < key.intValue())
-          key = tmpKey;
-      }
-    Object comp = labelTable.get(key);
-    if (! (comp instanceof Component))
-      return null;
-    return (Component) comp;
-  }
-
-  /**
-   * Returns the label whose key has the highest value.
-   *
-   * @return The label whose key has the highest value or <code>null</code> if
-   *     no label table exists.
-   */
-  protected Component getHighestValueLabel()
-  {
-    Integer key = new Integer(Integer.MIN_VALUE);
-    Integer tmpKey;
-    Dictionary labelTable = slider.getLabelTable();
-
-    if (labelTable == null)
-      return null;
-
-    for (Enumeration list = labelTable.keys(); list.hasMoreElements();)
-      {
-        Object value = list.nextElement();
-        if (! (value instanceof Integer))
-          continue;
-        tmpKey = (Integer) value;
-        if (tmpKey.intValue() > key.intValue())
-          key = tmpKey;
-      }
-    Object comp = labelTable.get(key);
-    if (! (comp instanceof Component))
-      return null;
-    return (Component) comp;
-  }
-
-  /**
-   * This method is used to paint the {@link JSlider}. It delegates all its
-   * duties to the various paint methods like paintTicks(),  paintTrack(),
-   * paintThumb(), etc.
-   *
-   * @param g The {@link Graphics} object to paint with.
-   * @param c The {@link JComponent} that is being painted.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    recalculateIfInsetsChanged();
-    recalculateIfOrientationChanged();
-    if (slider.getPaintTrack() && hitClip(g, trackRect))
-      paintTrack(g);
-    if (slider.getPaintTicks() && hitClip(g, tickRect))
-      paintTicks(g);
-    if (slider.getPaintLabels() && hitClip(g, labelRect))
-      paintLabels(g);
-    if (slider.hasFocus() && hitClip(g, focusRect))
-      paintFocus(g);
-    if (hitClip(g, thumbRect))
-      paintThumb(g);
-  }
-
-  /**
-   * This method recalculates any rectangles that need to be recalculated
-   * after the insets of the component have changed.
-   */
-  protected void recalculateIfInsetsChanged()
-  {
-    Insets insets = slider.getInsets();
-    if (! insets.equals(insetCache))
-      {
-        insetCache = insets;
-        calculateGeometry();
-      }
-  }
-
-  /**
-   * This method recalculates any rectangles that need to be recalculated
-   * after the orientation of the slider changes.
-   */
-  protected void recalculateIfOrientationChanged()
-  {
-    // Examining a test program shows that either Sun calls private
-    // methods that we don't know about, or these don't do anything.
-    calculateThumbSize();
-    calculateTrackBuffer();
-    calculateTrackRect();
-    calculateThumbLocation();
-
-    calculateTickRect();
-    calculateLabelRect();
-  }
-
-  /**
-   * This method is called during a repaint if the slider has focus. It draws
-   * an outline of the  focusRect using the color returned by
-   * getFocusColor().
-   *
-   * @param g The {@link Graphics} object to draw with.
-   */
-  public void paintFocus(Graphics g)
-  {
-    Color saved_color = g.getColor();
-
-    g.setColor(getFocusColor());
-
-    g.drawRect(focusRect.x, focusRect.y, focusRect.width, focusRect.height);
-
-    g.setColor(saved_color);
-  }
-
-  /**
-   * <p>
-   * This method is called during a repaint if the  track is to be drawn. It
-   * draws a 3D rectangle to  represent the track. The track is not the size
-   * of the trackRect. The top and left edges of the track should be outlined
-   * with the shadow color. The bottom and right edges should be outlined
-   * with the highlight color.
-   * </p>
-   * <pre>
-   *    a---d
-   *    |   |
-   *    |   |   a------------------------d
-   *    |   |   |                        |
-   *    |   |   b------------------------c
-   *    |   |
-   *    |   |
-   *    b---c
-   * </pre>
-   *
-   * <p>
-   * The b-a-d path needs to be drawn with the shadow color and the b-c-d path
-   * needs to be drawn with the highlight color.
-   * </p>
-   *
-   * @param g The {@link Graphics} object to draw with.
-   */
-  public void paintTrack(Graphics g)
-  {
-    Color saved_color = g.getColor();
-    int width;
-    int height;
-
-    Point a = new Point(trackRect.x, trackRect.y + 1);
-    Point b = new Point(a);
-    Point c = new Point(a);
-    Point d = new Point(a);
-
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      {
-        width = trackRect.width;
-        height = (thumbRect.height / 4 == 0) ? 1 : thumbRect.height / 4;
-
-        a.translate(0, (trackRect.height / 2) - (height / 2));
-        b.translate(0, (trackRect.height / 2) + (height / 2));
-        c.translate(trackRect.width, (trackRect.height / 2) + (height / 2));
-        d.translate(trackRect.width, (trackRect.height / 2) - (height / 2));
-      }
-    else
-      {
-        width = (thumbRect.width / 4 == 0) ? 1 : thumbRect.width / 4;
-        height = trackRect.height;
-
-        a.translate((trackRect.width / 2) - (width / 2), 0);
-        b.translate((trackRect.width / 2) - (width / 2), trackRect.height);
-        c.translate((trackRect.width / 2) + (width / 2), trackRect.height);
-        d.translate((trackRect.width / 2) + (width / 2), 0);
-      }
-    g.setColor(Color.GRAY);
-    g.fillRect(a.x, a.y, width, height);
-
-    g.setColor(getHighlightColor());
-    g.drawLine(b.x, b.y, c.x, c.y);
-    g.drawLine(c.x, c.y, d.x, d.y);
-
-    g.setColor(getShadowColor());
-    g.drawLine(b.x, b.y, a.x, a.y);
-    g.drawLine(a.x, a.y, d.x, d.y);
-
-    g.setColor(saved_color);
-  }
-
-  /**
-   * This method is called during a repaint if the ticks are to be drawn. This
-   * method must still verify that the majorTickSpacing and minorTickSpacing
-   * are greater than zero before drawing the ticks.
-   *
-   * @param g The {@link Graphics} object to draw with.
-   */
-  public void paintTicks(Graphics g)
-  {
-    int max = slider.getMaximum();
-    int min = slider.getMinimum();
-    int majorSpace = slider.getMajorTickSpacing();
-    int minorSpace = slider.getMinorTickSpacing();
-
-    if (majorSpace > 0)
-      {
-        if (slider.getOrientation() == JSlider.HORIZONTAL)
-          {
-            g.translate(0, tickRect.y);
-            for (int i = min; i <= max; i += majorSpace)
-              paintMajorTickForHorizSlider(g, tickRect, xPositionForValue(i));
-            g.translate(0, -tickRect.y);
-          }
-        else // JSlider.VERTICAL
-          {
-            g.translate(tickRect.x, 0);
-            for (int i = min; i <= max; i += majorSpace)
-              paintMajorTickForVertSlider(g, tickRect, yPositionForValue(i));
-            g.translate(-tickRect.x, 0);
-          }
-      }
-    if (minorSpace > 0)
-      {
-        if (slider.getOrientation() == JSlider.HORIZONTAL)
-          {
-            g.translate(0, tickRect.y);
-            for (int i = min; i <= max; i += minorSpace)
-              paintMinorTickForHorizSlider(g, tickRect, xPositionForValue(i));
-            g.translate(0, -tickRect.y);
-          }
-        else
-          {
-            g.translate(tickRect.x, 0);
-            for (int i = min; i <= max; i += minorSpace)
-              paintMinorTickForVertSlider(g, tickRect, yPositionForValue(i));
-            g.translate(-tickRect.x, 0);
-          }
-      }
-  }
-
-  /* Minor ticks start at 1/4 of the height (or width) of the tickRect and
-     extend to 1/2 of the tickRect.
-
-     Major ticks start at 1/4 of the height and extend to 3/4.
-   */
-
-  /**
-   * This method paints a minor tick for a horizontal slider at the given x
-   * value. x represents the x coordinate to paint at.
-   *
-   * @param g The {@link Graphics} object to draw with.
-   * @param tickBounds The tickRect rectangle.
-   * @param x The x coordinate to draw the tick at.
-   */
-  protected void paintMinorTickForHorizSlider(Graphics g,
-                                              Rectangle tickBounds, int x)
-  {
-    int y = tickRect.height / 4;
-    Color saved = g.getColor();
-    g.setColor(Color.BLACK);
-
-    g.drawLine(x, y, x, y + tickRect.height / 4);
-    g.setColor(saved);
-  }
-
-  /**
-   * This method paints a major tick for a horizontal slider at the given x
-   * value. x represents the x coordinate to paint at.
-   *
-   * @param g The {@link Graphics} object to draw with.
-   * @param tickBounds The tickRect rectangle.
-   * @param x The x coordinate to draw the tick at.
-   */
-  protected void paintMajorTickForHorizSlider(Graphics g,
-                                              Rectangle tickBounds, int x)
-  {
-    int y = tickRect.height / 4;
-    Color saved = g.getColor();
-    g.setColor(Color.BLACK);
-
-    g.drawLine(x, y, x, y + tickRect.height / 2);
-    g.setColor(saved);
-  }
-
-  /**
-   * This method paints a minor tick for a vertical slider at the given y
-   * value. y represents the y coordinate to paint at.
-   *
-   * @param g The {@link Graphics} object to draw with.
-   * @param tickBounds The tickRect rectangle.
-   * @param y The y coordinate to draw the tick at.
-   */
-  protected void paintMinorTickForVertSlider(Graphics g, Rectangle tickBounds,
-                                             int y)
-  {
-    int x = tickRect.width / 4;
-    Color saved = g.getColor();
-    g.setColor(Color.BLACK);
-
-    g.drawLine(x, y, x + tickRect.width / 4, y);
-    g.setColor(saved);
-  }
-
-  /**
-   * This method paints a major tick for a vertical slider at the given y
-   * value. y represents the y coordinate to paint at.
-   *
-   * @param g The {@link Graphics} object to draw with.
-   * @param tickBounds The tickRect rectangle.
-   * @param y The y coordinate to draw the tick at.
-   */
-  protected void paintMajorTickForVertSlider(Graphics g, Rectangle tickBounds,
-                                             int y)
-  {
-    int x = tickRect.width / 4;
-    Color saved = g.getColor();
-    g.setColor(Color.BLACK);
-
-    g.drawLine(x, y, x + tickRect.width / 2, y);
-    g.setColor(saved);
-  }
-
-  /**
-   * This method paints all the labels from the slider's label table. This
-   * method must make sure that the label table is not null before painting
-   * the labels. Each entry in the label table is a (integer, component)
-   * pair. Every label is painted at the value of the integer.
-   *
-   * @param g The {@link Graphics} object to draw with.
-   */
-  public void paintLabels(Graphics g)
-  {
-    Dictionary table = slider.getLabelTable();
-    if (table != null)
-      {
-        int min = slider.getMinimum();
-        int max = slider.getMaximum();
-        for (Enumeration list = table.keys(); list.hasMoreElements();)
-          {
-            Integer key = (Integer) list.nextElement();
-            int value = key.intValue();
-            if (value >= min && value <= max)
-              {
-                Component label = (Component) table.get(key);
-                if (slider.getOrientation() == JSlider.HORIZONTAL)
-                  {
-                    g.translate(0, labelRect.y);
-                    paintHorizontalLabel(g, value, label);
-                    g.translate(0, -labelRect.y);
-                  }
-                else
-                  {
-                    g.translate(labelRect.x, 0);
-                    paintVerticalLabel(g, value, label);
-                    g.translate(-labelRect.x, 0);
-                  }
-              }
-          }
-      }
-  }
-
-  /**
-   * This method paints the label on the horizontal slider at the value
-   * specified. The value is not a coordinate. It is a value within the range
-   * of the  slider. If the value is not within the range of the slider, this
-   * method will do nothing. This method should not paint outside the
-   * boundaries of the labelRect.
-   *
-   * @param g The {@link Graphics} object to draw with.
-   * @param value The value to paint at.
-   * @param label The label to paint.
-   */
-  protected void paintHorizontalLabel(Graphics g, int value, Component label)
-  {
-    int center = xPositionForValue(value);
-    int left = center - label.getPreferredSize().width / 2;
-    g.translate(left, 0);
-    label.paint(g);
-    g.translate(-left, 0);
-  }
-
-  /**
-   * This method paints the label on the vertical slider at the value
-   * specified. The value is not a coordinate. It is a value within the range
-   * of the  slider. If the value is not within the range of the slider, this
-   * method will do nothing. This method should not paint outside the
-   * boundaries of the labelRect.
-   *
-   * @param g The {@link Graphics} object to draw with.
-   * @param value The value to paint at.
-   * @param label The label to paint.
-   */
-  protected void paintVerticalLabel(Graphics g, int value, Component label)
-  {
-    int center = yPositionForValue(value);
-    int top = center - label.getPreferredSize().height / 2;
-    g.translate(0, top);
-    label.paint(g);
-    g.translate(0, -top);
-  }
-
-  /**
-   * <p>
-   * This method paints a thumb. There are two types of thumb:
-   * </p>
-   * <pre>
-   *   Vertical         Horizontal
-   *    a---b            a-----b
-   *    |   |            |      \
-   *    e   c            |       c
-   *     \ /             |      /
-   *      d              e-----d
-   *  </pre>
-   *
-   * <p>
-   * In the case of vertical thumbs, we highlight the path b-a-e-d and shadow
-   * the path b-c-d. In the case of horizontal thumbs, we highlight the path
-   * c-b-a-e and shadow the path c-d-e. In both cases we fill the path
-   * a-b-c-d-e before shadows and highlights are drawn.
-   * </p>
-   *
-   * @param g The graphics object to paint with
-   */
-  public void paintThumb(Graphics g)
-  {
-    Color saved_color = g.getColor();
-
-    Point a = new Point(thumbRect.x, thumbRect.y);
-    Point b = new Point(a);
-    Point c = new Point(a);
-    Point d = new Point(a);
-    Point e = new Point(a);
-
-    Polygon bright;
-    Polygon light; // light shadow
-    Polygon dark; // dark shadow
-    Polygon all;
-
-    // This will be in X-dimension if the slider is inverted and y if it isn't.
-    int turnPoint;
-
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      {
-        turnPoint = thumbRect.height * 3 / 4;
-
-        b.translate(thumbRect.width - 1, 0);
-        c.translate(thumbRect.width - 1, turnPoint);
-        d.translate(thumbRect.width / 2 - 1, thumbRect.height - 1);
-        e.translate(0, turnPoint);
-
-        bright = new Polygon(new int[] { b.x - 1, a.x, e.x, d.x },
-                             new int[] { b.y, a.y, e.y, d.y }, 4);
-
-        dark = new Polygon(new int[] { b.x, c.x, d.x + 1 }, new int[] { b.y,
-                                                                       c.y - 1,
-                                                                       d.y }, 3);
-
-        light = new Polygon(new int[] { b.x - 1, c.x - 1, d.x + 1 },
-                            new int[] { b.y + 1, c.y - 1, d.y - 1 }, 3);
-
-        all = new Polygon(
-                          new int[] { a.x + 1, b.x - 2, c.x - 2, d.x, e.x + 1 },
-                          new int[] { a.y + 1, b.y + 1, c.y - 1, d.y - 1, e.y },
-                          5);
-      }
-    else
-      {
-        turnPoint = thumbRect.width * 3 / 4 - 1;
-
-        b.translate(turnPoint, 0);
-        c.translate(thumbRect.width - 1, thumbRect.height / 2);
-        d.translate(turnPoint, thumbRect.height - 1);
-        e.translate(0, thumbRect.height - 1);
-
-        bright = new Polygon(new int[] { c.x - 1, b.x, a.x, e.x },
-                             new int[] { c.y - 1, b.y, a.y, e.y - 1 }, 4);
-
-        dark = new Polygon(new int[] { c.x, d.x, e.x }, new int[] { c.y, d.y,
-                                                                   e.y }, 3);
-
-        light = new Polygon(new int[] { c.x - 1, d.x, e.x + 1 },
-                            new int[] { c.y, d.y - 1, e.y - 1 }, 3);
-        all = new Polygon(new int[] { a.x + 1, b.x, c.x - 2, c.x - 2, d.x,
-                                     e.x + 1 }, new int[] { a.y + 1, b.y + 1,
-                                                           c.y - 1, c.y,
-                                                           d.y - 2, e.y - 2 },
-                          6);
-      }
-
-    g.setColor(Color.WHITE);
-    g.drawPolyline(bright.xpoints, bright.ypoints, bright.npoints);
-
-    g.setColor(Color.BLACK);
-    g.drawPolyline(dark.xpoints, dark.ypoints, dark.npoints);
-
-    g.setColor(Color.GRAY);
-    g.drawPolyline(light.xpoints, light.ypoints, light.npoints);
-
-    g.setColor(Color.LIGHT_GRAY);
-    g.drawPolyline(all.xpoints, all.ypoints, all.npoints);
-    g.fillPolygon(all);
-
-    g.setColor(saved_color);
-  }
-
-  /**
-   * This method sets the position of the thumbRect.
-   *
-   * @param x The new x position.
-   * @param y The new y position.
-   */
-  public void setThumbLocation(int x, int y)
-  {
-    Rectangle union = new Rectangle(thumbRect);
-    thumbRect.setLocation(x, y);
-    SwingUtilities.computeUnion(thumbRect.x, thumbRect.y, thumbRect.width,
-                                thumbRect.height, union);
-    slider.repaint(union);
-  }
-
-  /**
-   * Moves the thumb one block in the direction specified (a block is 1/10th
-   * of the slider range).   If the slider snaps to ticks, this method is
-   * responsible for snapping it to a tick after the thumb has been moved.
-   *
-   * @param direction  the direction (positive values increment the thumb
-   *   position by one block, zero/negative values decrement the thumb position
-   *   by one block).
-   */
-  public void scrollByBlock(int direction)
-  {
-    int unit = (slider.getMaximum() - slider.getMinimum()) / 10;
-    int moveTo = slider.getValue();
-    if (direction > 0)
-      moveTo += unit;
-    else
-      moveTo -= unit;
-
-    if (slider.getSnapToTicks())
-      moveTo = findClosestTick(moveTo);
-
-    slider.setValue(moveTo);
-  }
-
-  /**
-   * Moves the thumb one unit in the specified direction. If the slider snaps
-   * to ticks, this method is responsible for snapping it to a tick after the
-   * thumb has been moved.
-   *
-   * @param direction  the direction (positive values increment the thumb
-   *   position by one, zero/negative values decrement the thumb position by
-   *   one).
-   */
-  public void scrollByUnit(int direction)
-  {
-    int moveTo = slider.getValue();
-    if (direction > 0)
-      moveTo++;
-    else
-      moveTo--;
-
-    if (slider.getSnapToTicks())
-      moveTo = findClosestTick(moveTo);
-
-    slider.setValue(moveTo);
-  }
-
-  /**
-   * This method is called when there has been a click in the track and the
-   * thumb needs to be scrolled  on regular intervals. This method is only
-   * responsible  for starting the timer and not for stopping it.
-   *
-   * @param dir The direction to move in.
-   */
-  protected void scrollDueToClickInTrack(int dir)
-  {
-    scrollTimer.stop();
-
-    scrollListener.setDirection(dir);
-    scrollListener.setScrollByBlock(true);
-
-    scrollTimer.start();
-  }
-
-  /**
-   * Returns the x-coordinate (relative to the component) for the given slider
-   * value.  This method assumes that the <code>trackRect</code> field is
-   * set up.
-   *
-   * @param value  the slider value.
-   *
-   * @return The x-coordinate.
-   */
-  protected int xPositionForValue(int value)
-  {
-    int min = slider.getMinimum();
-    int max = slider.getMaximum();
-    int len = trackRect.width;
-    double range = max - min;
-    double pixPerVal = len / range;
-    int left = trackRect.x;
-    int right = left + trackRect.width - 1;
-    int xpos;
-    if (! drawInverted())
-      xpos = left + (int) Math.round(pixPerVal * ((double) value - min));
-    else
-      xpos = right - (int) Math.round(pixPerVal * ((double) value - min));
-    xpos = Math.max(left, xpos);
-    xpos = Math.min(right, xpos);
-    return xpos;
-  }
-
-  /**
-   * Returns the y-coordinate (relative to the component) for the given slider
-   * value.  This method assumes that the <code>trackRect</code> field is
-   * set up.
-   *
-   * @param value  the slider value.
-   *
-   * @return The y-coordinate.
-   */
-  protected int yPositionForValue(int value)
-  {
-    int min = slider.getMinimum();
-    int max = slider.getMaximum();
-    int len = trackRect.height;
-    double range = max - min;
-    double pixPerVal = len / range;
-    int top = trackRect.y;
-    int bottom = top + trackRect.height - 1;
-    int ypos;
-    if (! drawInverted())
-      ypos = top + (int) Math.round(pixPerVal * ((double) max - value));
-    else
-      ypos = top + (int) Math.round(pixPerVal * ((double) value - min));
-    ypos = Math.max(top, ypos);
-    ypos = Math.min(bottom, ypos);
-    return ypos;
-  }
-
-  /**
-   * This method returns the value in the slider's range given the y
-   * coordinate. If the value is out of range, it will  return the closest
-   * legal value.
-   *
-   * @param yPos The y coordinate to calculate a value for.
-   *
-   * @return The value for the y coordinate.
-   */
-  public int valueForYPosition(int yPos)
-  {
-    int min = slider.getMinimum();
-    int max = slider.getMaximum();
-    int len = trackRect.height;
-
-    int value;
-
-    // If the length is 0, you shouldn't be able to even see where the slider
-    // is.  This really shouldn't ever happen, but just in case, we'll return
-    // the middle.
-    if (len == 0)
-      return (max - min) / 2;
-
-    if (! drawInverted())
-      value = (len - (yPos - trackRect.y)) * (max - min) / len + min;
-    else
-      value = (yPos - trackRect.y) * (max - min) / len + min;
-
-    // If this isn't a legal value, then we'll have to move to one now.
-    if (value > max)
-      value = max;
-    else if (value < min)
-      value = min;
-    return value;
-  }
-
-  /**
-   * This method returns the value in the slider's range given the x
-   * coordinate. If the value is out of range, it will return the closest
-   * legal value.
-   *
-   * @param xPos The x coordinate to calculate a value for.
-   *
-   * @return The value for the x coordinate.
-   */
-  public int valueForXPosition(int xPos)
-  {
-    int min = slider.getMinimum();
-    int max = slider.getMaximum();
-    int len = trackRect.width;
-
-    int value;
-
-    // If the length is 0, you shouldn't be able to even see where the slider
-    // is.  This really shouldn't ever happen, but just in case, we'll return
-    // the middle.
-    if (len == 0)
-      return (max - min) / 2;
-
-    if (! drawInverted())
-      value = (xPos - trackRect.x) * (max - min) / len + min;
-    else
-      value = (len - (xPos - trackRect.x)) * (max - min) / len + min;
-
-    // If this isn't a legal value, then we'll have to move to one now.
-    if (value > max)
-      value = max;
-    else if (value < min)
-      value = min;
-    return value;
-  }
-
-  /**
-   * This method finds the closest value that has a tick associated with it.
-   * This is package-private to avoid an accessor method.
-   *
-   * @param value The value to search from.
-   *
-   * @return The closest value that has a tick associated with it.
-   */
-  int findClosestTick(int value)
-  {
-    int min = slider.getMinimum();
-    int max = slider.getMaximum();
-    int majorSpace = slider.getMajorTickSpacing();
-    int minorSpace = slider.getMinorTickSpacing();
-
-    // The default value to return is value + minor or
-    // value + major.
-    // Initializing at min - value leaves us with a default
-    // return value of min, which always has tick marks
-    // (if ticks are painted).
-    int minor = min - value;
-    int major = min - value;
-
-    // If there are no major tick marks or minor tick marks
-    // e.g. snap is set to true but no ticks are set, then
-    // we can just return the value.
-    if (majorSpace <= 0 && minorSpace <= 0)
-      return value;
-
-    // First check the major ticks.
-    if (majorSpace > 0)
-      {
-        int lowerBound = (value - min) / majorSpace;
-        int majLower = majorSpace * lowerBound + min;
-        int majHigher = majorSpace * (lowerBound + 1) + min;
-
-        if (majHigher <= max && majHigher - value <= value - majLower)
-          major = majHigher - value;
-        else
-          major = majLower - value;
-      }
-
-    if (minorSpace > 0)
-      {
-        int lowerBound = value / minorSpace;
-        int minLower = minorSpace * lowerBound;
-        int minHigher = minorSpace * (lowerBound + 1);
-
-        if (minHigher <= max && minHigher - value <= value - minLower)
-          minor = minHigher - value;
-        else
-          minor = minLower - value;
-      }
-
-    // Give preference to minor ticks
-    if (Math.abs(minor) > Math.abs(major))
-      return value + major;
-    else
-      return value + minor;
-  }
-
-  InputMap getInputMap(int condition)
-  {
-    if (condition == JComponent.WHEN_FOCUSED)
-      return (InputMap) UIManager.get("Slider.focusInputMap");
-    return null;
-  }
-
-  /**
-   * Returns the action map for the {@link JSlider}.  All sliders share
-   * a single action map which is created the first time this method is
-   * called, then stored in the UIDefaults table for subsequent access.
-   *
-   * @return The shared action map.
-   */
-  ActionMap getActionMap()
-  {
-    ActionMap map = (ActionMap) UIManager.get("Slider.actionMap");
-
-    if (map == null) // first time here
-      {
-        map = createActionMap();
-        if (map != null)
-          UIManager.put("Slider.actionMap", map);
-      }
-    return map;
-  }
-
-  /**
-   * Creates the action map shared by all {@link JSlider} instances.
-   * This method is called once by {@link #getActionMap()} when it
-   * finds no action map in the UIDefaults table...after the map is
-   * created, it gets added to the defaults table so that subsequent
-   * calls to {@link #getActionMap()} will return the same shared
-   * instance.
-   *
-   * @return The action map.
-   */
-  ActionMap createActionMap()
-  {
-    ActionMap map = new ActionMapUIResource();
-    map.put("positiveUnitIncrement",
-            new AbstractAction("positiveUnitIncrement") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JSlider slider = (JSlider) event.getSource();
-                BasicSliderUI ui = (BasicSliderUI) slider.getUI();
-                if (slider.getInverted())
-                  ui.scrollByUnit(BasicSliderUI.NEGATIVE_SCROLL);
-                else
-                  ui.scrollByUnit(BasicSliderUI.POSITIVE_SCROLL);
-              }
-            }
-    );
-    map.put("negativeUnitIncrement",
-            new AbstractAction("negativeUnitIncrement") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JSlider slider = (JSlider) event.getSource();
-                BasicSliderUI ui = (BasicSliderUI) slider.getUI();
-                if (slider.getInverted())
-                  ui.scrollByUnit(BasicSliderUI.POSITIVE_SCROLL);
-                else
-                  ui.scrollByUnit(BasicSliderUI.NEGATIVE_SCROLL);
-              }
-            }
-    );
-    map.put("positiveBlockIncrement",
-            new AbstractAction("positiveBlockIncrement") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JSlider slider = (JSlider) event.getSource();
-                BasicSliderUI ui = (BasicSliderUI) slider.getUI();
-                if (slider.getInverted())
-                  ui.scrollByBlock(BasicSliderUI.NEGATIVE_SCROLL);
-                else
-                  ui.scrollByBlock(BasicSliderUI.POSITIVE_SCROLL);
-              }
-            }
-    );
-    map.put("negativeBlockIncrement",
-            new AbstractAction("negativeBlockIncrement") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JSlider slider = (JSlider) event.getSource();
-                BasicSliderUI ui = (BasicSliderUI) slider.getUI();
-                if (slider.getInverted())
-                  ui.scrollByBlock(BasicSliderUI.POSITIVE_SCROLL);
-                else
-                  ui.scrollByBlock(BasicSliderUI.NEGATIVE_SCROLL);
-              }
-            }
-    );
-    map.put("minScroll",
-            new AbstractAction("minScroll") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JSlider slider = (JSlider) event.getSource();
-                if (slider.getInverted())
-                  slider.setValue(slider.getMaximum());
-                else
-                  slider.setValue(slider.getMinimum());
-              }
-            }
-    );
-    map.put("maxScroll",
-            new AbstractAction("maxScroll") {
-              public void actionPerformed(ActionEvent event)
-              {
-                JSlider slider = (JSlider) event.getSource();
-                if (slider.getInverted())
-                  slider.setValue(slider.getMinimum());
-                else
-                  slider.setValue(slider.getMaximum());
-              }
-            }
-    );
-    return map;
-  }
-
-  /**
-   * Small utility method to save me from typing the hell out of myself in
-   * paint().
-   */
-  private boolean hitClip(Graphics g, Rectangle r)
-  {
-    return g.hitClip(r.x, r.y, r.width, r.height);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicSpinnerUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicSpinnerUI.java
deleted file mode 100644
index 00c8537..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicSpinnerUI.java
+++ /dev/null
@@ -1,561 +0,0 @@
-/* BasicSpinnerUI.java --
-   Copyright (C) 2003, 2004, 2005, 2006,  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Insets;
-import java.awt.LayoutManager;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JSpinner;
-import javax.swing.LookAndFeel;
-import javax.swing.Timer;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.SpinnerUI;
-
-/**
- * A UI delegate for the {@link JSpinner} component.
- *
- * @author Ka-Hing Cheung
- *
- * @since 1.4
- */
-public class BasicSpinnerUI extends SpinnerUI
-{
-  /**
-   * Creates a new <code>BasicSpinnerUI</code> for the specified
-   * <code>JComponent</code>
-   *
-   * @param c  the component (ignored).
-   *
-   * @return A new instance of {@link BasicSpinnerUI}.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicSpinnerUI();
-  }
-
-  /**
-   * Creates an editor component. Really, it just returns
-   * <code>JSpinner.getEditor()</code>
-   *
-   * @return a JComponent as an editor
-   *
-   * @see javax.swing.JSpinner#getEditor
-   */
-  protected JComponent createEditor()
-  {
-    return spinner.getEditor();
-  }
-
-  /**
-   * Creates a <code>LayoutManager</code> that layouts the sub components. The
-   * subcomponents are identifies by the constraint "Next", "Previous" and
-   * "Editor"
-   *
-   * @return a LayoutManager
-   *
-   * @see java.awt.LayoutManager
-   */
-  protected LayoutManager createLayout()
-  {
-    return new DefaultLayoutManager();
-  }
-
-  /**
-   * Creates the "Next" button
-   *
-   * @return the next button component
-   */
-  protected Component createNextButton()
-  {
-    JButton button = new BasicArrowButton(BasicArrowButton.NORTH);
-    return button;
-  }
-
-  /**
-   * Creates the "Previous" button
-   *
-   * @return the previous button component
-   */
-  protected Component createPreviousButton()
-  {
-    JButton button = new BasicArrowButton(BasicArrowButton.SOUTH);
-    return button;
-  }
-
-  /**
-   * Creates the <code>PropertyChangeListener</code> that will be attached by
-   * <code>installListeners</code>. It should watch for the "editor"
-   * property, when it's changed, replace the old editor with the new one,
-   * probably by calling <code>replaceEditor</code>
-   *
-   * @return a PropertyChangeListener
-   *
-   * @see #replaceEditor
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new PropertyChangeListener()
-      {
-        public void propertyChange(PropertyChangeEvent event)
-        {
-          // FIXME: Add check for enabled property change. Need to
-          // disable the buttons.
-          if ("editor".equals(event.getPropertyName()))
-            BasicSpinnerUI.this.replaceEditor((JComponent) event.getOldValue(),
-                (JComponent) event.getNewValue());
-          // FIXME: Handle 'font' property change
-        }
-      };
-  }
-
-  /**
-   * Called by <code>installUI</code>. This should set various defaults
-   * obtained from <code>UIManager.getLookAndFeelDefaults</code>, as well as
-   * set the layout obtained from <code>createLayout</code>
-   *
-   * @see javax.swing.UIManager#getLookAndFeelDefaults
-   * @see #createLayout
-   * @see #installUI
-   */
-  protected void installDefaults()
-  {
-    LookAndFeel.installColorsAndFont(spinner, "Spinner.background",
-                                     "Spinner.foreground", "Spinner.font");
-    LookAndFeel.installBorder(spinner, "Spinner.border");
-    JComponent e = spinner.getEditor();
-    if (e instanceof JSpinner.DefaultEditor)
-      {
-        JSpinner.DefaultEditor de = (JSpinner.DefaultEditor) e;
-        de.getTextField().setBorder(null);
-      }
-    spinner.setLayout(createLayout());
-    spinner.setOpaque(true);
-  }
-
-  /*
-   * Called by <code>installUI</code>, which basically adds the
-   * <code>PropertyChangeListener</code> created by
-   * <code>createPropertyChangeListener</code>
-   *
-   * @see #createPropertyChangeListener
-   * @see #installUI
-   */
-  protected void installListeners()
-  {
-    spinner.addPropertyChangeListener(listener);
-  }
-
-  /*
-   * Install listeners to the next button so that it increments the model
-   */
-  protected void installNextButtonListeners(Component c)
-  {
-    c.addMouseListener(new MouseAdapter()
-        {
-          public void mousePressed(MouseEvent evt)
-          {
-            if (! spinner.isEnabled())
-              return;
-            increment();
-            timer.setInitialDelay(500);
-            timer.start();
-          }
-
-          public void mouseReleased(MouseEvent evt)
-          {
-            timer.stop();
-          }
-
-          void increment()
-          {
-            Object next = BasicSpinnerUI.this.spinner.getNextValue();
-            if (next != null)
-              BasicSpinnerUI.this.spinner.getModel().setValue(next);
-          }
-
-          volatile boolean mouseDown;
-          Timer timer = new Timer(50,
-                                  new ActionListener()
-              {
-                public void actionPerformed(ActionEvent event)
-                {
-                  increment();
-                }
-              });
-        });
-  }
-
-  /*
-   * Install listeners to the previous button so that it decrements the model
-   */
-  protected void installPreviousButtonListeners(Component c)
-  {
-    c.addMouseListener(new MouseAdapter()
-        {
-          public void mousePressed(MouseEvent evt)
-          {
-            if (! spinner.isEnabled())
-              return;
-            decrement();
-            timer.setInitialDelay(500);
-            timer.start();
-          }
-
-          public void mouseReleased(MouseEvent evt)
-          {
-            timer.stop();
-          }
-
-          void decrement()
-          {
-            Object prev = BasicSpinnerUI.this.spinner.getPreviousValue();
-            if (prev != null)
-              BasicSpinnerUI.this.spinner.getModel().setValue(prev);
-          }
-
-          volatile boolean mouseDown;
-          Timer timer = new Timer(50,
-                                  new ActionListener()
-              {
-                public void actionPerformed(ActionEvent event)
-                {
-                  decrement();
-                }
-              });
-        });
-  }
-
-  /**
-   * Install this UI to the <code>JComponent</code>, which in reality, is a
-   * <code>JSpinner</code>. Calls <code>installDefaults</code>,
-   * <code>installListeners</code>, and also adds the buttons and editor.
-   *
-   * @param c DOCUMENT ME!
-   *
-   * @see #installDefaults
-   * @see #installListeners
-   * @see #createNextButton
-   * @see #createPreviousButton
-   * @see #createEditor
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-
-    spinner = (JSpinner) c;
-
-    installDefaults();
-    installListeners();
-
-    Component next = createNextButton();
-    Component previous = createPreviousButton();
-
-    installNextButtonListeners(next);
-    installPreviousButtonListeners(previous);
-
-    c.add(createEditor(), "Editor");
-    c.add(next, "Next");
-    c.add(previous, "Previous");
-  }
-
-  /**
-   * Replace the old editor with the new one
-   *
-   * @param oldEditor the old editor
-   * @param newEditor the new one to replace with
-   */
-  protected void replaceEditor(JComponent oldEditor, JComponent newEditor)
-  {
-    spinner.remove(oldEditor);
-    spinner.add(newEditor);
-  }
-
-  /**
-   * The reverse of <code>installDefaults</code>. Called by
-   * <code>uninstallUI</code>
-   */
-  protected void uninstallDefaults()
-  {
-    spinner.setLayout(null);
-  }
-
-  /**
-   * The reverse of <code>installListeners</code>, called by
-   * <code>uninstallUI</code>
-   */
-  protected void uninstallListeners()
-  {
-    spinner.removePropertyChangeListener(listener);
-  }
-
-  /**
-   * Called when the current L&F is replaced with another one, should call
-   * <code>uninstallDefaults</code> and <code>uninstallListeners</code> as
-   * well as remove the next/previous buttons and the editor
-   *
-   * @param c DOCUMENT ME!
-   */
-  public void uninstallUI(JComponent c)
-  {
-    super.uninstallUI(c);
-
-    uninstallDefaults();
-    uninstallListeners();
-    c.removeAll();
-  }
-
-  /** The spinner for this UI */
-  protected JSpinner spinner;
-
-  /** DOCUMENT ME! */
-  private PropertyChangeListener listener = createPropertyChangeListener();
-
-  /**
-   * A layout manager for the {@link JSpinner} component.  The spinner has
-   * three subcomponents: an editor, a 'next' button and a 'previous' button.
-   */
-  private class DefaultLayoutManager implements LayoutManager
-  {
-    /**
-     * Layout the spinners inner parts.
-     *
-     * @param parent The parent container
-     */
-    public void layoutContainer(Container parent)
-    {
-      synchronized (parent.getTreeLock())
-        {
-          Insets i = parent.getInsets();
-          boolean l2r = parent.getComponentOrientation().isLeftToRight();
-          /*
-            --------------    --------------
-            |        | n |    | n |        |
-            |   e    | - | or | - |   e    |
-            |        | p |    | p |        |
-            --------------    --------------
-          */
-          Dimension e = prefSize(editor);
-          Dimension n = prefSize(next);
-          Dimension p = prefSize(previous);
-          Dimension s = parent.getSize();
-
-          int x = l2r ? i.left : i.right;
-          int y = i.top;
-          int w = Math.max(p.width, n.width);
-          int h = (s.height - i.bottom) / 2;
-          int e_width = s.width - w - i.left - i.right;
-
-          if (l2r)
-            {
-              setBounds(editor, x, y, e_width, 2 * h);
-              x += e_width;
-              setBounds(next, x, y, w, h);
-              y += h;
-              setBounds(previous, x, y, w, h);
-            }
-          else
-            {
-              setBounds(next, x, y + (s.height - e.height) / 2, w, h);
-              y += h;
-              setBounds(previous, x, y + (s.height - e.height) / 2, w, h);
-              x += w;
-              y -= h;
-              setBounds(editor, x, y, e_width, e.height);
-            }
-        }
-    }
-
-    /**
-     * Calculates the minimum layout size.
-     *
-     * @param parent  the parent.
-     *
-     * @return The minimum layout size.
-     */
-    public Dimension minimumLayoutSize(Container parent)
-    {
-      Dimension d = new Dimension();
-
-      if (editor != null)
-        {
-          Dimension tmp = editor.getMinimumSize();
-          d.width += tmp.width;
-          d.height = tmp.height;
-        }
-
-      int nextWidth = 0;
-      int previousWidth = 0;
-
-      if (next != null)
-        {
-          Dimension tmp = next.getMinimumSize();
-          nextWidth = tmp.width;
-        }
-      if (previous != null)
-        {
-          Dimension tmp = previous.getMinimumSize();
-          previousWidth = tmp.width;
-        }
-
-      d.width += Math.max(nextWidth, previousWidth);
-
-      return d;
-    }
-
-    /**
-     * Returns the preferred layout size of the container.
-     *
-     * @param parent DOCUMENT ME!
-     *
-     * @return DOCUMENT ME!
-     */
-    public Dimension preferredLayoutSize(Container parent)
-    {
-      Dimension d = new Dimension();
-
-      if (editor != null)
-        {
-          Dimension tmp = editor.getPreferredSize();
-          d.width += Math.max(tmp.width, 40);
-          d.height = tmp.height;
-        }
-
-      int nextWidth = 0;
-      int previousWidth = 0;
-
-      if (next != null)
-        {
-          Dimension tmp = next.getPreferredSize();
-          nextWidth = tmp.width;
-        }
-      if (previous != null)
-        {
-          Dimension tmp = previous.getPreferredSize();
-          previousWidth = tmp.width;
-        }
-
-      d.width += Math.max(nextWidth, previousWidth);
-      Insets insets = parent.getInsets();
-      d.width = d.width + insets.left + insets.right;
-      d.height = d.height + insets.top + insets.bottom;
-      return d;
-    }
-
-    /**
-     * DOCUMENT ME!
-     *
-     * @param child DOCUMENT ME!
-     */
-    public void removeLayoutComponent(Component child)
-    {
-      if (child == editor)
-        editor = null;
-      else if (child == next)
-        next = null;
-      else if (previous == child)
-        previous = null;
-    }
-
-    /**
-     * DOCUMENT ME!
-     *
-     * @param name DOCUMENT ME!
-     * @param child DOCUMENT ME!
-     */
-    public void addLayoutComponent(String name, Component child)
-    {
-      if ("Editor".equals(name))
-        editor = child;
-      else if ("Next".equals(name))
-        next = child;
-      else if ("Previous".equals(name))
-        previous = child;
-    }
-
-    /**
-     * DOCUMENT ME!
-     *
-     * @param c DOCUMENT ME!
-     *
-     * @return DOCUMENT ME!
-     */
-    private Dimension prefSize(Component c)
-    {
-      if (c == null)
-        return new Dimension();
-      else
-        return c.getPreferredSize();
-    }
-
-    /**
-     * Sets the bounds for the specified component.
-     *
-     * @param c  the component.
-     * @param x  the x-coordinate for the top-left of the component bounds.
-     * @param y  the y-coordinate for the top-left of the component bounds.
-     * @param w  the width of the bounds.
-     * @param h  the height of the bounds.
-     */
-    private void setBounds(Component c, int x, int y, int w, int h)
-    {
-      if (c != null)
-        c.setBounds(x, y, w, h);
-    }
-
-    /** The editor component. */
-    private Component editor;
-
-    /** The next button. */
-    private Component next;
-
-    /** The previous button. */
-    private Component previous;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicSplitPaneDivider.java b/libjava/classpath/javax/swing/plaf/basic/BasicSplitPaneDivider.java
deleted file mode 100644
index 53f7db6..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicSplitPaneDivider.java
+++ /dev/null
@@ -1,1077 +0,0 @@
-/* BasicSplitPaneDivider.java --
-   Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.LayoutManager;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseMotionListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.JButton;
-import javax.swing.JSplitPane;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
-
-/**
- * The divider that separates the two parts of a JSplitPane in the Basic look
- * and feel.
- *
- * <p>
- * Implementation status: We do not have a real implementation yet. Currently,
- * it is mostly a stub to allow compiling other parts of the
- * javax.swing.plaf.basic package, although some parts are already
- * functional.
- * </p>
- *
- * @author Sascha Brawer (brawer_AT_dandelis.ch)
- */
-public class BasicSplitPaneDivider extends Container
-  implements PropertyChangeListener
-{
-  /**
-   * The buttons used as one touch buttons.
-   */
-  private class BasicOneTouchButton
-    extends JButton
-  {
-    /**
-     * Denotes a left button.
-     */
-    static final int LEFT = 0;
-
-    /**
-     * Denotes a right button.
-     */
-    static final int RIGHT = 1;
-
-    /**
-     * The x points for the arrow.
-     */
-    private int[] xpoints;
-
-    /**
-     * The y points for the arrow.
-     */
-    private int[] ypoints;
-
-    /**
-     * Either LEFT or RIGHT.
-     */
-    private int direction;
-
-    /**
-     * Creates a new instance.
-     *
-     * @param dir either LEFT or RIGHT
-     */
-    BasicOneTouchButton(int dir)
-    {
-      direction = dir;
-      xpoints = new int[3];
-      ypoints = new int[3];
-    }
-
-    /**
-     * Never allow borders.
-     */
-    public void setBorder(Border b)
-    {
-    }
-
-    /**
-     * Never allow focus traversal.
-     */
-    public boolean isFocusTraversable()
-    {
-      return false;
-    }
-
-    /**
-     * Paints the one touch button.
-     */
-    public void paint(Graphics g)
-    {
-      if (splitPane != null)
-        {
-          // Fill background.
-          g.setColor(splitPane.getBackground());
-          g.fillRect(0, 0, getWidth(), getHeight());
-
-          // Draw arrow.
-          int size;
-          if (direction == LEFT)
-            {
-              if (orientation == JSplitPane.VERTICAL_SPLIT)
-                {
-                  size = Math.min(getHeight(), ONE_TOUCH_SIZE);
-                  xpoints[0] = 0;
-                  xpoints[1] = size / 2;
-                  xpoints[2] = size;
-                  ypoints[0] = size;
-                  ypoints[1] = 0;
-                  ypoints[2] = size;
-                }
-              else
-                {
-                  size = Math.min(getWidth(), ONE_TOUCH_SIZE);
-                  xpoints[0] = size;
-                  xpoints[1] = 0;
-                  xpoints[2] = size;
-                  ypoints[0] = 0;
-                  ypoints[1] = size / 2;
-                  ypoints[2] = size;
-                }
-            }
-          else
-            {
-              if (orientation == JSplitPane.VERTICAL_SPLIT)
-                {
-                  size = Math.min(getHeight(), ONE_TOUCH_SIZE);
-                  xpoints[0] = 0;
-                  xpoints[1] = size / 2;
-                  xpoints[2] = size;
-                  ypoints[0] = 0;
-                  ypoints[1] = size;
-                  ypoints[2] = 0;
-                }
-              else
-                {
-                  size = Math.min(getWidth(), ONE_TOUCH_SIZE);
-                  xpoints[0] = 0;
-                  xpoints[1] = size;
-                  xpoints[2] = 0;
-                  ypoints[0] = 0;
-                  ypoints[1] = size / 2;
-                  ypoints[2] = size;
-                }
-            }
-          g.setColor(Color.BLACK);
-          g.fillPolygon(xpoints, ypoints, 3);
-        }
-    }
-  }
-
-  /**
-   * Listens for actions on the one touch buttons.
-   */
-  private class OneTouchAction
-    implements ActionListener
-  {
-
-    public void actionPerformed(ActionEvent ev)
-    {
-      Insets insets = splitPane.getInsets();
-      int lastLoc = splitPane.getLastDividerLocation();
-      int currentLoc = splitPaneUI.getDividerLocation(splitPane);
-      int newLoc;
-
-      if (ev.getSource() == leftButton)
-        {
-          if (orientation == JSplitPane.VERTICAL_SPLIT)
-            {
-              if (currentLoc
-                  >= splitPane.getHeight() - insets.bottom - getHeight())
-                {
-                  newLoc = Math.min(splitPane.getMaximumDividerLocation(),
-                                    lastLoc);
-                }
-              else
-                {
-                  newLoc = insets.top;
-                }
-            }
-          else
-            {
-              if (currentLoc
-                  >= splitPane.getWidth() - insets.right - getWidth())
-                {
-                  newLoc = Math.min(splitPane.getMaximumDividerLocation(),
-                                    lastLoc);
-                }
-              else
-                {
-                  newLoc = insets.left;
-                }
-            }
-        }
-      else
-        {
-          if (orientation == JSplitPane.VERTICAL_SPLIT)
-            {
-              if (currentLoc == insets.top)
-                {
-                  newLoc = Math.min(splitPane.getMaximumDividerLocation(),
-                                    lastLoc);
-                }
-              else
-                {
-                  newLoc = splitPane.getHeight() - insets.top - getHeight();
-                }
-            }
-          else
-            {
-              if (currentLoc == insets.left)
-                {
-                  newLoc = Math.min(splitPane.getMaximumDividerLocation(),
-                                    lastLoc);
-                }
-              else
-                {
-                  newLoc = splitPane.getWidth() - insets.left - getWidth();
-                }
-            }
-        }
-      if (currentLoc != newLoc)
-        {
-          splitPane.setDividerLocation(newLoc);
-          splitPane.setLastDividerLocation(currentLoc);
-        }
-    }
-  }
-
-  /**
-   * Determined using the <code>serialver</code> tool of Apple/Sun JDK 1.3.1
-   * on MacOS X 10.1.5.
-   */
-  static final long serialVersionUID = 1463404307042803342L;
-
-  /**
-   * The width and height of the little buttons for showing and hiding parts
-   * of a JSplitPane in a single mouse click.
-   */
-  protected static final int ONE_TOUCH_SIZE = 6;
-
-  /** The distance the one touch buttons will sit from the divider's edges. */
-  protected static final int ONE_TOUCH_OFFSET = 2;
-
-  /**
-   * An object that performs the tasks associated with an ongoing drag
-   * operation, or <code>null</code> if the user is currently not dragging
-   * the divider.
-   */
-  protected DragController dragger;
-
-  /**
-   * The delegate object that is responsible for the UI of the
-   * <code>JSplitPane</code> that contains this divider.
-   */
-  protected BasicSplitPaneUI splitPaneUI;
-
-  /** The thickness of the divider in pixels. */
-  protected int dividerSize;
-
-  /** A divider that is used for layout purposes. */
-  protected Component hiddenDivider;
-
-  /** The JSplitPane containing this divider. */
-  protected JSplitPane splitPane;
-
-  /**
-   * The listener for handling mouse events from both the divider and the
-   * containing <code>JSplitPane</code>.
-   *
-   * <p>
-   * The reason for also handling MouseEvents from the containing
-   * <code>JSplitPane</code> is that users should be able to start a drag
-   * gesture from inside the JSplitPane, but slightly outisde the divider.
-   * </p>
-   */
-  protected MouseHandler mouseHandler = new MouseHandler();
-
-  /**
-   * The current orientation of the containing <code>JSplitPane</code>, which
-   * is either {@link javax.swing.JSplitPane#HORIZONTAL_SPLIT} or {@link
-   * javax.swing.JSplitPane#VERTICAL_SPLIT}.
-   */
-  protected int orientation;
-
-  /**
-   * The button for showing and hiding the left (or top) component of the
-   * <code>JSplitPane</code>.
-   */
-  protected JButton leftButton;
-
-  /**
-   * The button for showing and hiding the right (or bottom) component of the
-   * <code>JSplitPane</code>.
-   */
-  protected JButton rightButton;
-
-  /**
-   * The border of this divider. Typically, this will be an instance of {@link
-   * javax.swing.plaf.basic.BasicBorders.SplitPaneDividerBorder}.
-   *
-   * @see #getBorder()
-   * @see #setBorder(javax.swing.border.Border)
-   */
-  private Border border;
-
-  // This is not a pixel count.
-  // This int should be able to take 3 values.
-  // left (top), middle, right(bottom)
-  //    0          1          2
-
-  /**
-   * Keeps track of where the divider should be placed when using one touch
-   * expand buttons.
-   * This is package-private to avoid an accessor method.
-   */
-  transient int currentDividerLocation = 1;
-
-  /**
-   * Indicates if the ont touch buttons are laid out centered or at the
-   * top/left.
-   *
-   * Package private to avoid accessor method.
-   */
-  boolean centerOneTouchButtons;
-
-  /**
-   * Constructs a new divider.
-   *
-   * @param ui the UI delegate of the enclosing <code>JSplitPane</code>.
-   */
-  public BasicSplitPaneDivider(BasicSplitPaneUI ui)
-  {
-    setLayout(new DividerLayout());
-    setBasicSplitPaneUI(ui);
-    setDividerSize(splitPane.getDividerSize());
-    centerOneTouchButtons =
-      UIManager.getBoolean("SplitPane.centerOneTouchButtons");
-  }
-
-  /**
-   * Sets the delegate object that is responsible for the UI of the {@link
-   * javax.swing.JSplitPane} containing this divider.
-   *
-   * @param newUI the UI delegate, or <code>null</code> to release the
-   *        connection to the current delegate.
-   */
-  public void setBasicSplitPaneUI(BasicSplitPaneUI newUI)
-  {
-    /* Remove the connection to the existing JSplitPane. */
-    if (splitPane != null)
-      {
-        splitPane.removePropertyChangeListener(this);
-        removeMouseListener(mouseHandler);
-        removeMouseMotionListener(mouseHandler);
-        splitPane = null;
-        hiddenDivider = null;
-      }
-
-    /* Establish the connection to the new JSplitPane. */
-    splitPaneUI = newUI;
-    if (splitPaneUI != null)
-      splitPane = newUI.getSplitPane();
-    if (splitPane != null)
-      {
-        splitPane.addPropertyChangeListener(this);
-        addMouseListener(mouseHandler);
-        addMouseMotionListener(mouseHandler);
-        hiddenDivider = splitPaneUI.getNonContinuousLayoutDivider();
-        orientation = splitPane.getOrientation();
-        if (splitPane.isOneTouchExpandable())
-          oneTouchExpandableChanged();
-      }
-  }
-
-  /**
-   * Returns the delegate object that is responsible for the UI of the {@link
-   * javax.swing.JSplitPane} containing this divider.
-   *
-   * @return The UI for the JSplitPane.
-   */
-  public BasicSplitPaneUI getBasicSplitPaneUI()
-  {
-    return splitPaneUI;
-  }
-
-  /**
-   * Sets the thickness of the divider.
-   *
-   * @param newSize the new width or height in pixels.
-   */
-  public void setDividerSize(int newSize)
-  {
-    this.dividerSize = newSize;
-  }
-
-  /**
-   * Retrieves the thickness of the divider.
-   *
-   * @return The thickness of the divider.
-   */
-  public int getDividerSize()
-  {
-    return dividerSize;
-  }
-
-  /**
-   * Sets the border of this divider.
-   *
-   * @param border the new border. Typically, this will be an instance of
-   *        {@link
-   *        javax.swing.plaf.basic.BasicBorders.SplitPaneBorder}.
-   *
-   * @since 1.3
-   */
-  public void setBorder(Border border)
-  {
-    if (border != this.border)
-      {
-        Border oldValue = this.border;
-        this.border = border;
-        firePropertyChange("border", oldValue, border);
-      }
-  }
-
-  /**
-   * Retrieves the border of this divider.
-   *
-   * @return the current border, or <code>null</code> if no border has been
-   *         set.
-   *
-   * @since 1.3
-   */
-  public Border getBorder()
-  {
-    return border;
-  }
-
-  /**
-   * Retrieves the insets of the divider. If a border has been installed on
-   * the divider, the result of calling its <code>getBorderInsets</code>
-   * method is returned. Otherwise, the inherited implementation will be
-   * invoked.
-   *
-   * @see javax.swing.border.Border#getBorderInsets(java.awt.Component)
-   */
-  public Insets getInsets()
-  {
-    if (border != null)
-      return border.getBorderInsets(this);
-    else
-      return super.getInsets();
-  }
-
-  /**
-   * Returns the preferred size of this divider, which is
-   * <code>dividerSize</code> by <code>dividerSize</code> pixels.
-   *
-   * @return The preferred size of the divider.
-   */
-  public Dimension getPreferredSize()
-  {
-    Dimension d;
-    if (orientation == JSplitPane.HORIZONTAL_SPLIT)
-      d = new Dimension(getDividerSize(), 1);
-    else
-      d = new Dimension(1, getDividerSize());
-    return d;
-  }
-
-  /**
-   * Returns the minimal size of this divider, which is
-   * <code>dividerSize</code> by <code>dividerSize</code> pixels.
-   *
-   * @return The minimal size of the divider.
-   */
-  public Dimension getMinimumSize()
-  {
-    return getPreferredSize();
-  }
-
-  /**
-   * Processes events from the <code>JSplitPane</code> that contains this
-   * divider.
-   *
-   * @param e The PropertyChangeEvent.
-   */
-  public void propertyChange(PropertyChangeEvent e)
-  {
-    if (e.getPropertyName().equals(JSplitPane.ONE_TOUCH_EXPANDABLE_PROPERTY))
-      oneTouchExpandableChanged();
-    else if (e.getPropertyName().equals(JSplitPane.ORIENTATION_PROPERTY))
-      {
-        orientation = splitPane.getOrientation();
-        invalidate();
-        if (splitPane != null)
-          splitPane.revalidate();
-      }
-    else if (e.getPropertyName().equals(JSplitPane.DIVIDER_SIZE_PROPERTY))
-      dividerSize = splitPane.getDividerSize();
-  }
-
-  /**
-   * Paints the divider by painting its border.
-   *
-   * @param g The Graphics Object to paint with.
-   */
-  public void paint(Graphics g)
-  {
-    Dimension dividerSize;
-
-    super.paint(g);
-    if (border != null)
-      {
-        dividerSize = getSize();
-        border.paintBorder(this, g, 0, 0, dividerSize.width, dividerSize.height);
-      }
-  }
-
-  /**
-   * Reacts to changes of the <code>oneToughExpandable</code> property of the
-   * containing <code>JSplitPane</code>.
-   */
-  protected void oneTouchExpandableChanged()
-  {
-    if (splitPane.isOneTouchExpandable())
-      {
-        leftButton = createLeftOneTouchButton();
-        if (leftButton != null)
-          leftButton.addActionListener(new OneTouchAction());
-
-        rightButton = createRightOneTouchButton();
-        if (rightButton != null)
-          rightButton.addActionListener(new OneTouchAction());
-
-        // Only add them when both are non-null.
-        if (leftButton != null && rightButton != null)
-          {
-            add(leftButton);
-            add(rightButton);
-          }
-      }
-    invalidate();
-    if (splitPane != null)
-      splitPane.revalidate();
-  }
-
-  /**
-   * Creates a button for showing and hiding the left (or top) part of a
-   * <code>JSplitPane</code>.
-   *
-   * @return The left one touch button.
-   */
-  protected JButton createLeftOneTouchButton()
-  {
-    JButton button = new BasicOneTouchButton(BasicOneTouchButton.LEFT);
-    button.setMinimumSize(new Dimension(ONE_TOUCH_SIZE, ONE_TOUCH_SIZE));
-    button.setRequestFocusEnabled(false);
-    return button;
-  }
-
-  /**
-   * Creates a button for showing and hiding the right (or bottom) part of a
-   * <code>JSplitPane</code>.
-   *
-   * @return The right one touch button.
-   */
-  protected JButton createRightOneTouchButton()
-  {
-    JButton button = new BasicOneTouchButton(BasicOneTouchButton.RIGHT);
-    button.setMinimumSize(new Dimension(ONE_TOUCH_SIZE, ONE_TOUCH_SIZE));
-    button.setRequestFocusEnabled(false);
-    return button;
-  }
-
-  /**
-   * Prepares the divider for dragging by calling the
-   * <code>startDragging</code> method of the UI delegate of the enclosing
-   * <code>JSplitPane</code>.
-   *
-   * @see BasicSplitPaneUI#startDragging()
-   */
-  protected void prepareForDragging()
-  {
-    if (splitPaneUI != null)
-      splitPaneUI.startDragging();
-  }
-
-  /**
-   * Drags the divider to a given location by calling the
-   * <code>dragDividerTo</code> method of the UI delegate of the enclosing
-   * <code>JSplitPane</code>.
-   *
-   * @param location the new location of the divider.
-   *
-   * @see BasicSplitPaneUI#dragDividerTo(int location)
-   */
-  protected void dragDividerTo(int location)
-  {
-    if (splitPaneUI != null)
-      splitPaneUI.dragDividerTo(location);
-  }
-
-  /**
-   * Finishes a dragging gesture by calling the <code>finishDraggingTo</code>
-   * method of the UI delegate of the enclosing <code>JSplitPane</code>.
-   *
-   * @param location the new, final location of the divider.
-   *
-   * @see BasicSplitPaneUI#finishDraggingTo(int location)
-   */
-  protected void finishDraggingTo(int location)
-  {
-    if (splitPaneUI != null)
-      splitPaneUI.finishDraggingTo(location);
-  }
-
-  /**
-   * This helper method moves the divider to one of the  three locations when
-   * using one touch expand buttons. Location 0 is the left (or top) most
-   * location. Location 1 is the middle. Location 2 is the right (or bottom)
-   * most location.
-   * This is package-private to avoid an accessor method.
-   *
-   * @param locationIndex The location to move to.
-   */
-  void moveDividerTo(int locationIndex)
-  {
-    Insets insets = splitPane.getInsets();
-    switch (locationIndex)
-      {
-      case 1:
-        splitPane.setDividerLocation(splitPane.getLastDividerLocation());
-        break;
-      case 0:
-        int top = (orientation == JSplitPane.HORIZONTAL_SPLIT) ? insets.left
-                                                               : insets.top;
-        splitPane.setDividerLocation(top);
-        break;
-      case 2:
-        int bottom;
-        if (orientation == JSplitPane.HORIZONTAL_SPLIT)
-          bottom = splitPane.getBounds().width - insets.right - dividerSize;
-        else
-          bottom = splitPane.getBounds().height - insets.bottom - dividerSize;
-        splitPane.setDividerLocation(bottom);
-        break;
-      }
-  }
-
-  /**
-   * The listener for handling mouse events from both the divider and the
-   * containing <code>JSplitPane</code>.
-   *
-   * <p>
-   * The reason for also handling MouseEvents from the containing
-   * <code>JSplitPane</code> is that users should be able to start a drag
-   * gesture from inside the JSplitPane, but slightly outisde the divider.
-   * </p>
-   *
-   * @author Sascha Brawer (brawer_AT_dandelis.ch)
-   */
-  protected class MouseHandler extends MouseAdapter
-    implements MouseMotionListener
-  {
-    /** Keeps track of whether a drag is occurring. */
-    private transient boolean isDragging;
-
-    /**
-     * This method is called when the mouse is pressed.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      isDragging = true;
-      currentDividerLocation = 1;
-      if (orientation == JSplitPane.HORIZONTAL_SPLIT)
-        dragger = new DragController(e);
-      else
-        dragger = new VerticalDragController(e);
-      prepareForDragging();
-    }
-
-    /**
-     * This method is called when the mouse is released.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      if (isDragging)
-        dragger.completeDrag(e);
-      isDragging = false;
-    }
-
-    /**
-     * Repeatedly invoked when the user is dragging the mouse cursor while
-     * having pressed a mouse button.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      if (dragger != null)
-        dragger.continueDrag(e);
-    }
-
-    /**
-     * Repeatedly invoked when the user is dragging the mouse cursor without
-     * having pressed a mouse button.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseMoved(MouseEvent e)
-    {
-      // Do nothing.
-    }
-  }
-
-  /**
-   * Performs the tasks associated with an ongoing drag operation.
-   *
-   * @author Sascha Brawer (brawer_AT_dandelis.ch)
-   */
-  protected class DragController
-  {
-    /**
-     * The difference between where the mouse is clicked and the  initial
-     * divider location.
-     */
-    transient int offset;
-
-    /**
-     * Creates a new DragController object.
-     *
-     * @param e The MouseEvent to initialize with.
-     */
-    protected DragController(MouseEvent e)
-    {
-      offset = e.getX();
-    }
-
-    /**
-     * This method returns true if the divider can move.
-     *
-     * @return True if dragging is allowed.
-     */
-    protected boolean isValid()
-    {
-      // Views can always be resized?
-      return true;
-    }
-
-    /**
-     * Returns a position for the divider given the MouseEvent.
-     *
-     * @param e MouseEvent.
-     *
-     * @return The position for the divider to move to.
-     */
-    protected int positionForMouseEvent(MouseEvent e)
-    {
-      return e.getX() + getX() - offset;
-    }
-
-    /**
-     * This method returns one of the two paramters for the orientation. In
-     * this case, it returns x.
-     *
-     * @param x The x coordinate.
-     * @param y The y coordinate.
-     *
-     * @return The x coordinate.
-     */
-    protected int getNeededLocation(int x, int y)
-    {
-      return x;
-    }
-
-    /**
-     * This method is called to pass on the drag information to the UI through
-     * dragDividerTo.
-     *
-     * @param newX The x coordinate of the MouseEvent.
-     * @param newY The y coordinate of the MouseEvent.
-     */
-    protected void continueDrag(int newX, int newY)
-    {
-      if (isValid())
-        dragDividerTo(adjust(newX, newY));
-    }
-
-    /**
-     * This method is called to pass on the drag information  to the UI
-     * through dragDividerTo.
-     *
-     * @param e The MouseEvent.
-     */
-    protected void continueDrag(MouseEvent e)
-    {
-      if (isValid())
-        dragDividerTo(positionForMouseEvent(e));
-    }
-
-    /**
-     * This method is called to finish the drag session  by calling
-     * finishDraggingTo.
-     *
-     * @param x The x coordinate of the MouseEvent.
-     * @param y The y coordinate of the MouseEvent.
-     */
-    protected void completeDrag(int x, int y)
-    {
-      finishDraggingTo(adjust(x, y));
-    }
-
-    /**
-     * This method is called to finish the drag session  by calling
-     * finishDraggingTo.
-     *
-     * @param e The MouseEvent.
-     */
-    protected void completeDrag(MouseEvent e)
-    {
-      finishDraggingTo(positionForMouseEvent(e));
-    }
-
-    /**
-     * This is a helper method that includes the offset in the needed
-     * location.
-     *
-     * @param x The x coordinate of the MouseEvent.
-     * @param y The y coordinate of the MouseEvent.
-     *
-     * @return The needed location adjusted by the offsets.
-     */
-    int adjust(int x, int y)
-    {
-      return getNeededLocation(x, y) + getX() - offset;
-    }
-  }
-
-  /**
-   * This is a helper class that controls dragging when  the orientation is
-   * VERTICAL_SPLIT.
-   */
-  protected class VerticalDragController extends DragController
-  {
-    /**
-     * Creates a new VerticalDragController object.
-     *
-     * @param e The MouseEvent to initialize with.
-     */
-    protected VerticalDragController(MouseEvent e)
-    {
-      super(e);
-      offset = e.getY();
-    }
-
-    /**
-     * This method returns one of the two parameters given the orientation. In
-     * this case, it returns y.
-     *
-     * @param x The x coordinate of the MouseEvent.
-     * @param y The y coordinate of the MouseEvent.
-     *
-     * @return The y coordinate.
-     */
-    protected int getNeededLocation(int x, int y)
-    {
-      return y;
-    }
-
-    /**
-     * This method returns the new location of the divider given a MouseEvent.
-     *
-     * @param e The MouseEvent.
-     *
-     * @return The new location of the divider.
-     */
-    protected int positionForMouseEvent(MouseEvent e)
-    {
-      return e.getY() + getY() - offset;
-    }
-
-    /**
-     * This is a helper method that includes the offset in the needed
-     * location.
-     *
-     * @param x The x coordinate of the MouseEvent.
-     * @param y The y coordinate of the MouseEvent.
-     *
-     * @return The needed location adjusted by the offsets.
-     */
-    int adjust(int x, int y)
-    {
-      return getNeededLocation(x, y) + getY() - offset;
-    }
-  }
-
-  /**
-   * This helper class acts as the Layout Manager for the divider.
-   */
-  protected class DividerLayout implements LayoutManager
-  {
-    /**
-     * Creates a new DividerLayout object.
-     */
-    protected DividerLayout()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method is called when a Component is added.
-     *
-     * @param string The constraints string.
-     * @param c The Component to add.
-     */
-    public void addLayoutComponent(String string, Component c)
-    {
-      // Do nothing.
-    }
-
-    /**
-     * This method is called to lay out the container.
-     *
-     * @param c The container to lay out.
-     */
-    public void layoutContainer(Container c)
-    {
-      if (leftButton != null && rightButton != null
-          && c == BasicSplitPaneDivider.this)
-        {
-          if (splitPane.isOneTouchExpandable())
-            {
-              Insets insets = getInsets();
-              if (orientation == JSplitPane.HORIZONTAL_SPLIT)
-                {
-                  int size = getWidth() - insets.left - insets.right;
-                  size = Math.max(size, 0);
-                  size = Math.min(size, ONE_TOUCH_SIZE);
-                  int x, y;
-                  if (centerOneTouchButtons)
-                    {
-                      y = insets.top;
-                      x = (getWidth() - size) / 2;
-                    }
-                  else
-                    {
-                      x = insets.left;
-                      y = 0;
-                    }
-
-                  leftButton.setBounds(x, y + ONE_TOUCH_OFFSET, size,
-                                       size * 2);
-                  rightButton.setBounds(x, y + ONE_TOUCH_OFFSET
-                                        + ONE_TOUCH_SIZE * 2, size, size * 2);
-                }
-              else
-                {
-                  int size = getHeight() - insets.top - insets.bottom;
-                  size = Math.max(size, 0);
-                  size = Math.min(size, ONE_TOUCH_SIZE);
-                  int x, y;
-                  if (centerOneTouchButtons)
-                    {
-                      x = insets.left;
-                      y = (getHeight() - size) / 2;
-                    }
-                  else
-                    {
-                      x = 0;
-                      y = insets.top;
-                    }
-                  leftButton.setBounds(x + ONE_TOUCH_OFFSET, y, size * 2,
-                                       size);
-                  rightButton.setBounds(x + ONE_TOUCH_OFFSET
-                                        + ONE_TOUCH_SIZE * 2, y, size * 2,
-                                        size);
-                }
-            }
-          else
-            {
-              // The JDK sets this bounds for disabled one touch buttons, so
-              // do we.
-              leftButton.setBounds(-5, -5, 1, 1);
-              rightButton.setBounds(-5, -5, 1, 1);
-            }
-        }
-    }
-
-    /**
-     * This method returns the minimum layout size.
-     *
-     * @param c The container to calculate for.
-     *
-     * @return The minimum layout size.
-     */
-    public Dimension minimumLayoutSize(Container c)
-    {
-      return preferredLayoutSize(c);
-    }
-
-    /**
-     * This method returns the preferred layout size.
-     *
-     * @param c The container to calculate for.
-     *
-     * @return The preferred layout size.
-     */
-    public Dimension preferredLayoutSize(Container c)
-    {
-      return new Dimension(dividerSize, dividerSize);
-    }
-
-    /**
-     * This method is called when a component is removed.
-     *
-     * @param c The component to remove.
-     */
-    public void removeLayoutComponent(Component c)
-    {
-      // Do nothing.
-    }
-
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicSplitPaneUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicSplitPaneUI.java
deleted file mode 100644
index ca96075..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicSplitPaneUI.java
+++ /dev/null
@@ -1,1623 +0,0 @@
-/* BasicSplitPaneUI.java --
-   Copyright (C) 2003, 2004, 2005, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Canvas;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.LayoutManager2;
-import java.awt.Point;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.FocusAdapter;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.AbstractAction;
-import javax.swing.ActionMap;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
-import javax.swing.JSlider;
-import javax.swing.JSplitPane;
-import javax.swing.KeyStroke;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.SplitPaneUI;
-import javax.swing.plaf.UIResource;
-
-/**
- * This is the Basic Look and Feel implementation of the SplitPaneUI  class.
- */
-public class BasicSplitPaneUI extends SplitPaneUI
-{
-  /**
-   * This Layout Manager controls the position and size of the components when
-   * the JSplitPane's orientation is HORIZONTAL_SPLIT.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class BasicHorizontalLayoutManager implements LayoutManager2
-  {
-    // 3 components at a time.
-    // LEFT/TOP = 0
-    // RIGHT/BOTTOM = 1
-    // DIVIDER = 2
-
-    /**
-     * This array contains the components in the JSplitPane. The  left/top
-     * component is at index 0, the right/bottom is at 1, and the divider is
-     * at 2.
-     */
-    protected Component[] components = new Component[3];
-
-    // These are the _current_ widths of the associated component.
-
-    /**
-     * This array contains the current width (for HORIZONTAL_SPLIT) or height
-     * (for VERTICAL_SPLIT) of the components. The indices are the same as
-     * for components.
-     */
-    protected int[] sizes = new int[3];
-
-    /**
-     * This is used to determine if we are vertical or horizontal layout.
-     * In the JDK, the BasicVerticalLayoutManager seems to have no more
-     * methods implemented (as of JDK5), so we keep this state here.
-     */
-    private int axis;
-
-    /**
-     * Creates a new instance. This is package private because the reference
-     * implementation has no public constructor either. Still, we need to
-     * call it from BasicVerticalLayoutManager.
-     */
-    BasicHorizontalLayoutManager()
-    {
-      this(SwingConstants.HORIZONTAL);
-    }
-
-    /**
-     * Creates a new instance for a specified axis. This is provided for
-     * compatibility, since the BasicVerticalLayoutManager seems to have
-     * no more implementation in the RI, according to the specs. So
-     * we handle all the axis specific stuff here.
-     *
-     * @param a the axis, either SwingConstants#HORIZONTAL,
-     *        or SwingConstants#VERTICAL
-     */
-    BasicHorizontalLayoutManager(int a)
-    {
-      axis = a;
-    }
-
-    /**
-     * This method adds the component given to the JSplitPane. The position of
-     * the component is given by the constraints object.
-     *
-     * @param comp The Component to add.
-     * @param constraints The constraints that bind the object.
-     */
-    public void addLayoutComponent(Component comp, Object constraints)
-    {
-      addLayoutComponent((String) constraints, comp);
-    }
-
-    /**
-     * This method is called to add a Component to the JSplitPane. The
-     * placement string determines where the Component will be placed. The
-     * string should be one of LEFT, RIGHT, TOP, BOTTOM or null (signals that
-     * the component is the divider).
-     *
-     * @param place The placement of the Component.
-     * @param component The Component to add.
-     *
-     * @throws IllegalArgumentException DOCUMENT ME!
-     */
-    public void addLayoutComponent(String place, Component component)
-    {
-      int i = 0;
-      if (place == null)
-        i = 2;
-      else if (place.equals(JSplitPane.TOP) || place.equals(JSplitPane.LEFT))
-        i = 0;
-      else if (place.equals(JSplitPane.BOTTOM)
-               || place.equals(JSplitPane.RIGHT))
-        i = 1;
-      else
-        throw new IllegalArgumentException("Illegal placement in JSplitPane");
-      components[i] = component;
-      resetSizeAt(i);
-      splitPane.revalidate();
-      splitPane.repaint();
-    }
-
-    /**
-     * This method returns the width of the JSplitPane minus the insets.
-     *
-     * @param containerSize The Dimensions of the JSplitPane.
-     * @param insets The Insets of the JSplitPane.
-     *
-     * @return The width of the JSplitPane minus the insets.
-     */
-    protected int getAvailableSize(Dimension containerSize, Insets insets)
-    {
-      int size;
-      if (axis == SwingConstants.HORIZONTAL)
-        size = containerSize.width - insets.left - insets.right;
-      else
-        size = containerSize.height - insets.top - insets.bottom;
-      return size;
-    }
-
-    /**
-     * This method returns the given insets left value. If the  given inset is
-     * null, then 0 is returned.
-     *
-     * @param insets The Insets to use with the JSplitPane.
-     *
-     * @return The inset's left value.
-     */
-    protected int getInitialLocation(Insets insets)
-    {
-      int loc = 0;
-      if (insets != null)
-        {
-          if (axis == SwingConstants.HORIZONTAL)
-            loc = insets.left;
-          else
-            loc = insets.top;
-        }
-      return loc;
-    }
-
-    /**
-     * This specifies how a component is aligned with respect to  other
-     * components in the x fdirection.
-     *
-     * @param target The container.
-     *
-     * @return The component's alignment.
-     */
-    public float getLayoutAlignmentX(Container target)
-    {
-      return 0.0f;
-    }
-
-    /**
-     * This specifies how a component is aligned with respect to  other
-     * components in the y direction.
-     *
-     * @param target The container.
-     *
-     * @return The component's alignment.
-     */
-    public float getLayoutAlignmentY(Container target)
-    {
-      return 0.0f;
-    }
-
-    /**
-     * This method returns the preferred width of the component.
-     *
-     * @param c The component to measure.
-     *
-     * @return The preferred width of the component.
-     */
-    protected int getPreferredSizeOfComponent(Component c)
-    {
-      int size = 0;
-      Dimension dims = c.getPreferredSize();
-      if (axis == SwingConstants.HORIZONTAL)
-        {
-          if (dims != null)
-            size = dims.width;
-        }
-      else
-        {
-          if (dims != null)
-            size = dims.height;
-        }
-      return size;
-    }
-
-    /**
-     * This method returns the current width of the component.
-     *
-     * @param c The component to measure.
-     *
-     * @return The width of the component.
-     */
-    protected int getSizeOfComponent(Component c)
-    {
-      int size;
-      if (axis == SwingConstants.HORIZONTAL)
-        size = c.getHeight();
-      else
-        size = c.getWidth();
-      return size;
-    }
-
-    /**
-     * This method returns the sizes array.
-     *
-     * @return The sizes array.
-     */
-    protected int[] getSizes()
-    {
-      return sizes;
-    }
-
-    /**
-     * This method invalidates the layout. It does nothing.
-     *
-     * @param c The container to invalidate.
-     */
-    public void invalidateLayout(Container c)
-    {
-      // DO NOTHING
-    }
-
-    /**
-     * This method lays out the components in the container.
-     *
-     * @param container The container to lay out.
-     */
-    public void layoutContainer(Container container)
-    {
-      if (container instanceof JSplitPane)
-        {
-          JSplitPane split = (JSplitPane) container;
-          distributeExtraSpace();
-          Insets insets = split.getInsets();
-          Dimension dims = split.getSize();
-          int loc = getInitialLocation(insets);
-          int available = getAvailableSize(dims, insets);
-          sizes[0] = split.getDividerLocation();
-          sizes[1] = available - sizes[0] - sizes[2];
-
-          // According to a Mauve test we only honour the minimum
-          // size of the components, when the dividerLocation hasn't
-          // been excplicitly set.
-          if (! dividerLocationSet)
-            {
-              sizes[0] = Math.max(sizes[0], minimumSizeOfComponent(0));
-              sizes[1] = Math.max(sizes[1], minimumSizeOfComponent(1));
-            }
-          // The size of the divider won't change.
-
-          // Layout component#1.
-          setComponentToSize(components[0], sizes[0], loc, insets, dims);
-          // Layout divider.
-          loc += sizes[0];
-          setComponentToSize(components[2], sizes[2], loc, insets, dims);
-          // Layout component#2.
-          loc += sizes[2];
-          setComponentToSize(components[1], sizes[1], loc, insets, dims);
-        }
-    }
-
-    /**
-     * This method returns the maximum size for the container given the
-     * components. It returns a new Dimension object that has width and
-     * height equal to Integer.MAX_VALUE.
-     *
-     * @param target The container to measure.
-     *
-     * @return The maximum size.
-     */
-    public Dimension maximumLayoutSize(Container target)
-    {
-      return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
-    }
-
-    /**
-     * This method returns the container's minimum size. The  minimum width is
-     * the sum of all the component's minimum widths. The minimum height is
-     * the maximum of  all the components' minimum heights.
-     *
-     * @param target The container to measure.
-     *
-     * @return The minimum size.
-     */
-    public Dimension minimumLayoutSize(Container target)
-    {
-      Dimension dim = new Dimension();
-      if (target instanceof JSplitPane)
-        {
-          int primary = 0;
-          int secondary = 0;
-          for (int i = 0; i < components.length; i++)
-            {
-              if (components[i] != null)
-                {
-                  Dimension dims = components[i].getMinimumSize();
-                  primary += axis == SwingConstants.HORIZONTAL ? dims.width
-                                                               : dims.height;
-                  int sec = axis == SwingConstants.HORIZONTAL ? dims.height
-                                                              : dims.width;
-                  secondary = Math.max(sec, secondary);
-                }
-            }
-          int width = axis == SwingConstants.HORIZONTAL ? primary : secondary;
-          int height = axis == SwingConstants.VERTICAL ? secondary : primary;
-
-          Insets i = splitPane.getInsets();
-          dim.setSize(width + i.left + i.right, height + i.top + i.bottom);
-        }
-      return dim;
-    }
-
-    /**
-     * This method returns the container's preferred size. The preferred width
-     * is the sum of all the component's preferred widths. The preferred
-     * height is the maximum of all the components' preferred heights.
-     *
-     * @param target The container to measure.
-     *
-     * @return The preferred size.
-     */
-    public Dimension preferredLayoutSize(Container target)
-    {
-      Dimension dim = new Dimension();
-      if (target instanceof JSplitPane)
-        {
-          int primary = 0;
-          int secondary = 0;
-          for (int i = 0; i < components.length; i++)
-            {
-              if (components[i] != null)
-                {
-                  Dimension dims = components[i].getPreferredSize();
-                  primary += axis == SwingConstants.HORIZONTAL ? dims.width
-                                                               : dims.height;
-                  int sec = axis == SwingConstants.HORIZONTAL ? dims.height
-                                                              : dims.width;
-                  secondary = Math.max(sec, secondary);
-                }
-            }
-          int width = axis == SwingConstants.HORIZONTAL ? primary : secondary;
-          int height = axis == SwingConstants.VERTICAL ? secondary : primary;
-
-          Insets i = splitPane.getInsets();
-          dim.setSize(width + i.left + i.right, height + i.top + i.bottom);
-        }
-      return dim;
-    }
-
-    /**
-     * This method removes the component from the layout.
-     *
-     * @param component The component to remove from the layout.
-     */
-    public void removeLayoutComponent(Component component)
-    {
-      for (int i = 0; i < components.length; i++)
-        {
-          if (component == components[i])
-            {
-              components[i] = null;
-              sizes[i] = 0;
-            }
-        }
-    }
-
-    /**
-     * This method resets the size of Component to the preferred size.
-     *
-     * @param index The index of the component to reset.
-     */
-    protected void resetSizeAt(int index)
-    {
-      if (components[index] != null)
-        sizes[index] = getPreferredSizeOfComponent(components[index]);
-    }
-
-    /**
-     * This method resets the sizes of all the components.
-     */
-    public void resetToPreferredSizes()
-    {
-      for (int i = 0; i < components.length; i++)
-        resetSizeAt(i);
-    }
-
-    /**
-     * This methods sets the bounds of the given component. The width is the
-     * size. The height is the container size minus the  top and bottom
-     * inset. The x coordinate is the location given.  The y coordinate is
-     * the top inset.
-     *
-     * @param c The component to set.
-     * @param size The width of the component.
-     * @param location The x coordinate.
-     * @param insets The insets to use.
-     * @param containerSize The height of the container.
-     */
-    protected void setComponentToSize(Component c, int size, int location,
-                                      Insets insets, Dimension containerSize)
-    {
-      if (insets != null)
-        {
-          if (axis == SwingConstants.HORIZONTAL)
-            c.setBounds(location, insets.top, size,
-                        containerSize.height - insets.top - insets.bottom);
-          else
-            c.setBounds(insets.left, location,
-                        containerSize.width - insets.left - insets.right,
-                        size);
-        }
-      else
-        {
-          if (axis == SwingConstants.HORIZONTAL)
-            c.setBounds(location, 0, size, containerSize.height);
-          else
-            c.setBounds(0, location, containerSize.width, size);
-        }
-    }
-
-    /**
-     * This method stores the given int array as the new sizes array.
-     *
-     * @param newSizes The array to use as sizes.
-     */
-    protected void setSizes(int[] newSizes)
-    {
-      sizes = newSizes;
-    }
-
-    /**
-     * This method determines the size of each  component. It should be called
-     * when a new Layout Manager is created for an existing JSplitPane.
-     */
-    protected void updateComponents()
-    {
-      Component left = splitPane.getLeftComponent();
-      Component right = splitPane.getRightComponent();
-
-      if (left != null)
-        {
-          components[0] = left;
-          resetSizeAt(0);
-        }
-      if (right != null)
-        {
-          components[1] = right;
-          resetSizeAt(1);
-        }
-      components[2] = divider;
-    }
-
-    /**
-     * This method resizes the left and right components to fit inside the
-     * JSplitPane when there is extra space.
-     */
-    void distributeExtraSpace()
-    {
-      // FIXME: This needs to be reimplemented correctly.
-    }
-
-    /**
-     * This method returns the minimum width of the  component at the given
-     * index.
-     *
-     * @param index The index to check.
-     *
-     * @return The minimum width.
-     */
-    int minimumSizeOfComponent(int index)
-    {
-      Dimension dims = components[index].getMinimumSize();
-      int size = 0;
-      if (dims != null)
-        if (axis == SwingConstants.HORIZONTAL)
-          size = dims.width;
-        else
-          size = dims.height;
-        return size;
-    }
-  } //end BasicHorizontalLayoutManager
-
-  /**
-   * This class is the Layout Manager for the JSplitPane when the orientation
-   * is VERTICAL_SPLIT.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class BasicVerticalLayoutManager
-    extends BasicHorizontalLayoutManager
-  {
-    /**
-     * Creates a new instance.
-     */
-    public BasicVerticalLayoutManager()
-    {
-      super(SwingConstants.VERTICAL);
-    }
-  }
-
-  /**
-   * This class handles FocusEvents from the JComponent.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class FocusHandler extends FocusAdapter
-  {
-    /**
-     * This method is called when the JSplitPane gains focus.
-     *
-     * @param ev The FocusEvent.
-     */
-    public void focusGained(FocusEvent ev)
-    {
-      // repaint the divider because its background color may change due to
-      // the focus state...
-      divider.repaint();
-    }
-
-    /**
-     * This method is called when the JSplitPane loses focus.
-     *
-     * @param ev The FocusEvent.
-     */
-    public void focusLost(FocusEvent ev)
-    {
-      // repaint the divider because its background color may change due to
-      // the focus state...
-      divider.repaint();
-    }
-  }
-
-  /**
-   * This is a deprecated class. It is supposed to be used for handling down
-   * and right key presses.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class KeyboardDownRightHandler implements ActionListener
-  {
-    /**
-     * This method is called when the down or right keys are pressed.
-     *
-     * @param ev The ActionEvent
-     */
-    public void actionPerformed(ActionEvent ev)
-    {
-      // FIXME: implement.
-    }
-  }
-
-  /**
-   * This is a deprecated class. It is supposed to be used for handling end
-   * key presses.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class KeyboardEndHandler implements ActionListener
-  {
-    /**
-     * This method is called when the end key is pressed.
-     *
-     * @param ev The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent ev)
-    {
-      // FIXME: implement.
-    }
-  }
-
-  /**
-   * This is a deprecated class. It is supposed to be used for handling home
-   * key presses.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class KeyboardHomeHandler implements ActionListener
-  {
-    /**
-     * This method is called when the home key is pressed.
-     *
-     * @param ev The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent ev)
-    {
-      // FIXME: implement.
-    }
-  }
-
-  /**
-   * This is a deprecated class. It is supposed to be used for handling resize
-   * toggles.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class KeyboardResizeToggleHandler implements ActionListener
-  {
-    /**
-     * This method is called when a resize is toggled.
-     *
-     * @param ev The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent ev)
-    {
-      // FIXME: implement.
-    }
-  }
-
-  /**
-   * This is a deprecated class. It is supposed to be used for handler up and
-   * left key presses.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class KeyboardUpLeftHandler implements ActionListener
-  {
-    /**
-     * This method is called when the left or up keys are pressed.
-     *
-     * @param ev The ActionEvent.
-     */
-    public void actionPerformed(ActionEvent ev)
-    {
-      // FIXME: implement.
-    }
-  }
-
-  /**
-   * This helper class handles PropertyChangeEvents from the JSplitPane. When
-   * a property changes, this will update the UI accordingly.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class PropertyHandler implements PropertyChangeListener
-  {
-    /**
-     * This method is called whenever one of the JSplitPane's properties
-     * change.
-     *
-     * @param e DOCUMENT ME!
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      if (e.getPropertyName().equals(JSplitPane.DIVIDER_SIZE_PROPERTY))
-        {
-          int newSize = splitPane.getDividerSize();
-          int[] tmpSizes = layoutManager.getSizes();
-          dividerSize = tmpSizes[2];
-          int newSpace = newSize - tmpSizes[2];
-          tmpSizes[2] = newSize;
-
-          tmpSizes[0] += newSpace / 2;
-          tmpSizes[1] += newSpace / 2;
-
-          layoutManager.setSizes(tmpSizes);
-        }
-      else if (e.getPropertyName().equals(JSplitPane.ORIENTATION_PROPERTY))
-        {
-          int max = layoutManager.getAvailableSize(splitPane.getSize(),
-                                                   splitPane.getInsets());
-          int dividerLoc = getDividerLocation(splitPane);
-          double prop = ((double) dividerLoc) / max;
-
-          resetLayoutManager();
-          if (prop <= 1 && prop >= 0)
-            splitPane.setDividerLocation(prop);
-        }
-      // Don't have to deal with continuous_layout - only
-      // necessary in dragging modes (and it's checked
-      // every time you drag there)
-      // Don't have to deal with resize_weight (as there
-      // will be no extra space associated with this
-      // event - the changes to the weighting will
-      // be taken into account the next time the
-      // sizes change.)
-      // Don't have to deal with divider_location
-      // The method in JSplitPane calls our setDividerLocation
-      // so we'll know about those anyway.
-      // Don't have to deal with last_divider_location
-      // Although I'm not sure why, it doesn't seem to
-      // have any effect on Sun's JSplitPane.
-      // one_touch_expandable changes are dealt with
-      // by our divider.
-    }
-  }
-
-  /** The location of the divider when dragging began. */
-  protected int beginDragDividerLocation;
-
-  /** The size of the divider while dragging. */
-  protected int dividerSize;
-
-  /** The location where the last drag location ended. */
-  transient int lastDragLocation = -1;
-
-  /** The distance the divider is moved when moved by keyboard actions. */
-  // Sun defines this as 3
-  protected static int KEYBOARD_DIVIDER_MOVE_OFFSET = 3;
-
-  /** The divider that divides this JSplitPane. */
-  protected BasicSplitPaneDivider divider;
-
-  /** The listener that listens for PropertyChangeEvents from the JSplitPane. */
-  protected PropertyChangeListener propertyChangeListener;
-
-  /** The JSplitPane's focus handler. */
-  protected FocusListener focusListener;
-
-  /** @deprecated The handler for down and right key presses. */
-  protected ActionListener keyboardDownRightListener;
-
-  /** @deprecated The handler for end key presses. */
-  protected ActionListener keyboardEndListener;
-
-  /** @deprecated The handler for home key presses. */
-  protected ActionListener keyboardHomeListener;
-
-  /** @deprecated The handler for toggling resizes. */
-  protected ActionListener keyboardResizeToggleListener;
-
-  /** @deprecated The handler for up and left key presses. */
-  protected ActionListener keyboardUpLeftListener;
-
-  /** The JSplitPane's current layout manager. */
-  protected BasicHorizontalLayoutManager layoutManager;
-
-  /** @deprecated The divider resize toggle key. */
-  protected KeyStroke dividerResizeToggleKey;
-
-  /** @deprecated The down key. */
-  protected KeyStroke downKey;
-
-  /** @deprecated The end key. */
-  protected KeyStroke endKey;
-
-  /** @deprecated The home key. */
-  protected KeyStroke homeKey;
-
-  /** @deprecated The left key. */
-  protected KeyStroke leftKey;
-
-  /** @deprecated The right key. */
-  protected KeyStroke rightKey;
-
-  /** @deprecated The up key. */
-  protected KeyStroke upKey;
-
-  /** Set to true when dragging heavy weight components. */
-  protected boolean draggingHW;
-
-  /**
-   * The constraints object used when adding the non-continuous divider to the
-   * JSplitPane.
-   */
-  protected static final String NON_CONTINUOUS_DIVIDER
-    = "nonContinuousDivider";
-
-  /** The dark divider used when dragging in non-continuous layout mode. */
-  protected Component nonContinuousLayoutDivider;
-
-  /** The JSplitPane that this UI draws. */
-  protected JSplitPane splitPane;
-
-  /**
-   * True, when setDividerLocation() has been called at least
-   * once on the JSplitPane, false otherwise.
-   *
-   * This is package private to avoid a synthetic accessor method.
-   */
-  boolean dividerLocationSet;
-
-  /**
-   * Creates a new BasicSplitPaneUI object.
-   */
-  public BasicSplitPaneUI()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * This method creates a new BasicSplitPaneUI for the given JComponent.
-   *
-   * @param x The JComponent to create a UI for.
-   *
-   * @return A new BasicSplitPaneUI.
-   */
-  public static ComponentUI createUI(JComponent x)
-  {
-    return new BasicSplitPaneUI();
-  }
-
-  /**
-   * This method installs the BasicSplitPaneUI for the given JComponent.
-   *
-   * @param c The JComponent to install the UI for.
-   */
-  public void installUI(JComponent c)
-  {
-    if (c instanceof JSplitPane)
-      {
-        splitPane = (JSplitPane) c;
-        dividerLocationSet = false;
-        installDefaults();
-        installListeners();
-        installKeyboardActions();
-      }
-  }
-
-  /**
-   * This method uninstalls the BasicSplitPaneUI for the given JComponent.
-   *
-   * @param c The JComponent to uninstall the UI for.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    uninstallKeyboardActions();
-    uninstallListeners();
-    uninstallDefaults();
-
-    dividerLocationSet = false;
-    splitPane = null;
-  }
-
-  /**
-   * This method installs the defaults given by the Look and Feel.
-   */
-  protected void installDefaults()
-  {
-    LookAndFeel.installColors(splitPane, "SplitPane.background",
-                              "SplitPane.foreground");
-    LookAndFeel.installBorder(splitPane, "SplitPane.border");
-    divider = createDefaultDivider();
-    divider.setBorder(UIManager.getBorder("SplitPaneDivider.border"));
-    resetLayoutManager();
-    nonContinuousLayoutDivider = createDefaultNonContinuousLayoutDivider();
-    splitPane.add(divider, JSplitPane.DIVIDER);
-
-    // There is no need to add the nonContinuousLayoutDivider.
-    dividerSize = UIManager.getInt("SplitPane.dividerSize");
-    splitPane.setDividerSize(dividerSize);
-    divider.setDividerSize(dividerSize);
-    splitPane.setOpaque(true);
-  }
-
-  /**
-   * This method uninstalls the defaults and nulls any objects created during
-   * install.
-   */
-  protected void uninstallDefaults()
-  {
-    layoutManager = null;
-    splitPane.remove(divider);
-    divider = null;
-    nonContinuousLayoutDivider = null;
-
-    if (splitPane.getBackground() instanceof UIResource)
-      splitPane.setBackground(null);
-    if (splitPane.getBorder() instanceof UIResource)
-      splitPane.setBorder(null);
-  }
-
-  /**
-   * This method installs the listeners needed for this UI to function.
-   */
-  protected void installListeners()
-  {
-    propertyChangeListener = createPropertyChangeListener();
-    focusListener = createFocusListener();
-
-    splitPane.addPropertyChangeListener(propertyChangeListener);
-    splitPane.addFocusListener(focusListener);
-  }
-
-  /**
-   * This method uninstalls all listeners registered for the UI.
-   */
-  protected void uninstallListeners()
-  {
-    splitPane.removePropertyChangeListener(propertyChangeListener);
-    splitPane.removeFocusListener(focusListener);
-
-    focusListener = null;
-    propertyChangeListener = null;
-  }
-
-  /**
-   * Returns the input map for the specified condition.
-   *
-   * @param condition  the condition.
-   *
-   * @return The input map.
-   */
-  InputMap getInputMap(int condition)
-  {
-    if (condition == JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
-      return (InputMap) UIManager.get("SplitPane.ancestorInputMap");
-    return null;
-  }
-
-  /**
-   * Returns the action map for the {@link JSplitPane}.  All sliders share
-   * a single action map which is created the first time this method is
-   * called, then stored in the UIDefaults table for subsequent access.
-   *
-   * @return The shared action map.
-   */
-  ActionMap getActionMap()
-  {
-    ActionMap map = (ActionMap) UIManager.get("SplitPane.actionMap");
-
-    if (map == null) // first time here
-      {
-        map = createActionMap();
-        if (map != null)
-          UIManager.put("SplitPane.actionMap", map);
-      }
-    return map;
-  }
-
-  /**
-   * Creates the action map shared by all {@link JSlider} instances.
-   * This method is called once by {@link #getActionMap()} when it
-   * finds no action map in the UIDefaults table...after the map is
-   * created, it gets added to the defaults table so that subsequent
-   * calls to {@link #getActionMap()} will return the same shared
-   * instance.
-   *
-   * @return The action map.
-   */
-  ActionMap createActionMap()
-  {
-    ActionMap map = new ActionMapUIResource();
-    map.put("toggleFocus",
-            new AbstractAction("toggleFocus") {
-              public void actionPerformed(ActionEvent event)
-              {
-                // FIXME: What to do here?
-              }
-            }
-    );
-    map.put("startResize",
-            new AbstractAction("startResize") {
-              public void actionPerformed(ActionEvent event)
-              {
-                splitPane.requestFocus();
-              }
-            }
-    );
-    map.put("selectMax",
-            new AbstractAction("selectMax") {
-              public void actionPerformed(ActionEvent event)
-              {
-                splitPane.setDividerLocation(1.0);
-              }
-            }
-    );
-    map.put("selectMin",
-            new AbstractAction("selectMin") {
-              public void actionPerformed(ActionEvent event)
-              {
-                splitPane.setDividerLocation(0.0);
-              }
-            }
-    );
-    map.put("negativeIncrement",
-            new AbstractAction("negativeIncrement") {
-              public void actionPerformed(ActionEvent event)
-              {
-                int oldLoc = splitPane.getDividerLocation();
-                int newLoc =
-                  Math.max(oldLoc - KEYBOARD_DIVIDER_MOVE_OFFSET, 0);
-                splitPane.setDividerLocation(newLoc);
-              }
-            }
-    );
-    map.put("positiveIncrement",
-            new AbstractAction("positiveIncrement") {
-              public void actionPerformed(ActionEvent event)
-              {
-                int oldLoc = splitPane.getDividerLocation();
-                int newLoc =
-                  Math.max(oldLoc + KEYBOARD_DIVIDER_MOVE_OFFSET, 0);
-                splitPane.setDividerLocation(newLoc);
-              }
-            }
-    );
-    map.put("focusOutBackward",
-            new AbstractAction("focusOutBackward") {
-              public void actionPerformed(ActionEvent event)
-              {
-                // FIXME: implement this
-              }
-            }
-    );
-    map.put("focusOutForward",
-            new AbstractAction("focusOutForward") {
-              public void actionPerformed(ActionEvent event)
-              {
-                // FIXME: implement this
-              }
-            }
-    );
-    return map;
-  }
-
-  /**
-   * Installs any keyboard actions. The list of keys that need to be bound are
-   * listed in Basic look and feel's defaults.
-   */
-  protected void installKeyboardActions()
-  {
-    InputMap keyMap = getInputMap(
-        JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
-    SwingUtilities.replaceUIInputMap(splitPane,
-        JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, keyMap);
-    ActionMap map = getActionMap();
-    SwingUtilities.replaceUIActionMap(splitPane, map);
-  }
-
-  /**
-   * This method reverses the work done in installKeyboardActions.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    SwingUtilities.replaceUIActionMap(splitPane, null);
-    SwingUtilities.replaceUIInputMap(splitPane,
-        JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, null);
-  }
-
-  /**
-   * This method creates a new PropertyChangeListener.
-   *
-   * @return A new PropertyChangeListener.
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new PropertyHandler();
-  }
-
-  /**
-   * This method creates a new FocusListener.
-   *
-   * @return A new FocusListener.
-   */
-  protected FocusListener createFocusListener()
-  {
-    return new FocusHandler();
-  }
-
-  /**
-   * This method creates a new ActionListener for up and left key presses.
-   *
-   * @return A new ActionListener for up and left keys.
-   *
-   * @deprecated 1.3
-   */
-  protected ActionListener createKeyboardUpLeftListener()
-  {
-    return new KeyboardUpLeftHandler();
-  }
-
-  /**
-   * This method creates a new ActionListener for down and right key presses.
-   *
-   * @return A new ActionListener for down and right keys.
-   *
-   * @deprecated 1.3
-   */
-  protected ActionListener createKeyboardDownRightListener()
-  {
-    return new KeyboardDownRightHandler();
-  }
-
-  /**
-   * This method creates a new ActionListener for home key presses.
-   *
-   * @return A new ActionListener for home keys.
-   *
-   * @deprecated
-   */
-  protected ActionListener createKeyboardHomeListener()
-  {
-    return new KeyboardHomeHandler();
-  }
-
-  /**
-   * This method creates a new ActionListener for end key presses.i
-   *
-   * @return A new ActionListener for end keys.
-   *
-   * @deprecated 1.3
-   */
-  protected ActionListener createKeyboardEndListener()
-  {
-    return new KeyboardEndHandler();
-  }
-
-  /**
-   * This method creates a new ActionListener for resize toggle key events.
-   *
-   * @return A new ActionListener for resize toggle keys.
-   *
-   * @deprecated 1.3
-   */
-  protected ActionListener createKeyboardResizeToggleListener()
-  {
-    return new KeyboardResizeToggleHandler();
-  }
-
-  /**
-   * This method returns the orientation of the JSplitPane.
-   *
-   * @return The orientation of the JSplitPane.
-   */
-  public int getOrientation()
-  {
-    return splitPane.getOrientation();
-  }
-
-  /**
-   * This method sets the orientation of the JSplitPane.
-   *
-   * @param orientation The new orientation of the JSplitPane.
-   */
-  public void setOrientation(int orientation)
-  {
-    splitPane.setOrientation(orientation);
-  }
-
-  /**
-   * This method returns true if the JSplitPane is using continuous layout.
-   *
-   * @return True if the JSplitPane is using continuous layout.
-   */
-  public boolean isContinuousLayout()
-  {
-    return splitPane.isContinuousLayout();
-  }
-
-  /**
-   * This method sets the continuous layout property of the JSplitPane.
-   *
-   * @param b True if the JsplitPane is to use continuous layout.
-   */
-  public void setContinuousLayout(boolean b)
-  {
-    splitPane.setContinuousLayout(b);
-  }
-
-  /**
-   * This method returns the last location the divider was dragged to.
-   *
-   * @return The last location the divider was dragged to.
-   */
-  public int getLastDragLocation()
-  {
-    return lastDragLocation;
-  }
-
-  /**
-   * This method sets the last location the divider was dragged to.
-   *
-   * @param l The last location the divider was dragged to.
-   */
-  public void setLastDragLocation(int l)
-  {
-    lastDragLocation = l;
-  }
-
-  /**
-   * This method returns the BasicSplitPaneDivider that divides this
-   * JSplitPane.
-   *
-   * @return The divider for the JSplitPane.
-   */
-  public BasicSplitPaneDivider getDivider()
-  {
-    return divider;
-  }
-
-  /**
-   * This method creates a nonContinuousLayoutDivider for use with the
-   * JSplitPane in nonContinousLayout mode. The default divider is a gray
-   * Canvas.
-   *
-   * @return The default nonContinousLayoutDivider.
-   */
-  protected Component createDefaultNonContinuousLayoutDivider()
-  {
-    if (nonContinuousLayoutDivider == null)
-      {
-        nonContinuousLayoutDivider = new Canvas();
-        Color c = UIManager.getColor("SplitPaneDivider.draggingColor");
-        nonContinuousLayoutDivider.setBackground(c);
-      }
-    return nonContinuousLayoutDivider;
-  }
-
-  /**
-   * This method sets the component to use as the nonContinuousLayoutDivider.
-   *
-   * @param newDivider The component to use as the nonContinuousLayoutDivider.
-   */
-  protected void setNonContinuousLayoutDivider(Component newDivider)
-  {
-    setNonContinuousLayoutDivider(newDivider, true);
-  }
-
-  /**
-   * This method sets the component to use as the nonContinuousLayoutDivider.
-   *
-   * @param newDivider The component to use as the nonContinuousLayoutDivider.
-   * @param rememberSizes FIXME: document.
-   */
-  protected void setNonContinuousLayoutDivider(Component newDivider,
-                                               boolean rememberSizes)
-  {
-    // FIXME: use rememberSizes for something
-    nonContinuousLayoutDivider = newDivider;
-  }
-
-  /**
-   * This method returns the nonContinuousLayoutDivider.
-   *
-   * @return The nonContinuousLayoutDivider.
-   */
-  public Component getNonContinuousLayoutDivider()
-  {
-    return nonContinuousLayoutDivider;
-  }
-
-  /**
-   * This method returns the JSplitPane that this BasicSplitPaneUI draws.
-   *
-   * @return The JSplitPane.
-   */
-  public JSplitPane getSplitPane()
-  {
-    return splitPane;
-  }
-
-  /**
-   * This method creates the divider used normally with the JSplitPane.
-   *
-   * @return The default divider.
-   */
-  public BasicSplitPaneDivider createDefaultDivider()
-  {
-    if (divider == null)
-      divider = new BasicSplitPaneDivider(this);
-    return divider;
-  }
-
-  /**
-   * This method is called when JSplitPane's resetToPreferredSizes is called.
-   * It resets the sizes of all components in the JSplitPane.
-   *
-   * @param jc The JSplitPane to reset.
-   */
-  public void resetToPreferredSizes(JSplitPane jc)
-  {
-    layoutManager.resetToPreferredSizes();
-  }
-
-  /**
-   * This method sets the location of the divider.
-   *
-   * @param jc The JSplitPane to set the divider location in.
-   * @param location The new location of the divider.
-   */
-  public void setDividerLocation(JSplitPane jc, int location)
-  {
-    dividerLocationSet = true;
-    splitPane.revalidate();
-    splitPane.repaint();
-  }
-
-  /**
-   * This method returns the location of the divider.
-   *
-   * @param jc The JSplitPane to retrieve the location for.
-   *
-   * @return The location of the divider.
-   */
-  public int getDividerLocation(JSplitPane jc)
-  {
-    int loc;
-    if (jc.getOrientation() == JSplitPane.HORIZONTAL_SPLIT)
-      loc = divider.getX();
-    else
-      loc = divider.getY();
-    return loc;
-  }
-
-  /**
-   * This method returns the smallest value possible for the location of the
-   * divider.
-   *
-   * @param jc The JSplitPane.
-   *
-   * @return The minimum divider location.
-   */
-  public int getMinimumDividerLocation(JSplitPane jc)
-  {
-    int value = layoutManager.getInitialLocation(jc.getInsets());
-    if (layoutManager.components[0] != null)
-      value += layoutManager.minimumSizeOfComponent(0);
-    return value;
-  }
-
-  /**
-   * This method returns the largest value possible for the location of the
-   * divider.
-   *
-   * @param jc The JSplitPane.
-   *
-   * @return The maximum divider location.
-   */
-  public int getMaximumDividerLocation(JSplitPane jc)
-  {
-    int value = layoutManager.getInitialLocation(jc.getInsets())
-                + layoutManager.getAvailableSize(jc.getSize(), jc.getInsets())
-                - splitPane.getDividerSize();
-    if (layoutManager.components[1] != null)
-      value -= layoutManager.minimumSizeOfComponent(1);
-    return value;
-  }
-
-  /**
-   * This method is called after the children of the JSplitPane are painted.
-   *
-   * @param jc The JSplitPane.
-   * @param g The Graphics object to paint with.
-   */
-  public void finishedPaintingChildren(JSplitPane jc, Graphics g)
-  {
-    if (! splitPane.isContinuousLayout() && nonContinuousLayoutDivider != null
-        && nonContinuousLayoutDivider.isVisible())
-      javax.swing.SwingUtilities.paintComponent(g, nonContinuousLayoutDivider,
-                                                null,
-                                                nonContinuousLayoutDivider
-                                                .getBounds());
-  }
-
-  /**
-   * This method is called to paint the JSplitPane.
-   *
-   * @param g The Graphics object to paint with.
-   * @param jc The JSplitPane to paint.
-   */
-  public void paint(Graphics g, JComponent jc)
-  {
-    // TODO: What should be done here?
-  }
-
-  /**
-   * This method returns the preferred size of the JSplitPane.
-   *
-   * @param jc The JSplitPane.
-   *
-   * @return The preferred size of the JSplitPane.
-   */
-  public Dimension getPreferredSize(JComponent jc)
-  {
-    return layoutManager.preferredLayoutSize(jc);
-  }
-
-  /**
-   * This method returns the minimum size of the JSplitPane.
-   *
-   * @param jc The JSplitPane.
-   *
-   * @return The minimum size of the JSplitPane.
-   */
-  public Dimension getMinimumSize(JComponent jc)
-  {
-    return layoutManager.minimumLayoutSize(jc);
-  }
-
-  /**
-   * This method returns the maximum size of the JSplitPane.
-   *
-   * @param jc The JSplitPane.
-   *
-   * @return The maximum size of the JSplitPane.
-   */
-  public Dimension getMaximumSize(JComponent jc)
-  {
-    return layoutManager.maximumLayoutSize(jc);
-  }
-
-  /**
-   * This method returns the border insets of the current border.
-   *
-   * @param jc The JSplitPane.
-   *
-   * @return The current border insets.
-   */
-  public Insets getInsets(JComponent jc)
-  {
-    return splitPane.getBorder().getBorderInsets(splitPane);
-  }
-
-  /**
-   * This method resets the current layout manager. The type of layout manager
-   * is dependent on the current orientation.
-   */
-  protected void resetLayoutManager()
-  {
-    if (getOrientation() == JSplitPane.HORIZONTAL_SPLIT)
-      layoutManager = new BasicHorizontalLayoutManager();
-    else
-      layoutManager = new BasicVerticalLayoutManager();
-    getSplitPane().setLayout(layoutManager);
-    layoutManager.updateComponents();
-
-    // invalidating by itself does not invalidate the layout.
-    getSplitPane().revalidate();
-  }
-
-  /**
-   * This method is called when dragging starts. It resets lastDragLocation
-   * and dividerSize.
-   */
-  protected void startDragging()
-  {
-    Component left = splitPane.getLeftComponent();
-    Component right = splitPane.getRightComponent();
-    dividerSize = divider.getDividerSize();
-    setLastDragLocation(-1);
-
-    if ((left != null && !left.isLightweight())
-        || (right != null && !right.isLightweight()))
-      draggingHW = true;
-
-    if (splitPane.isContinuousLayout())
-      nonContinuousLayoutDivider.setVisible(false);
-    else
-      {
-        nonContinuousLayoutDivider.setVisible(true);
-        nonContinuousLayoutDivider.setBounds(divider.getBounds());
-      }
-  }
-
-  /**
-   * This method is called whenever the divider is dragged. If the JSplitPane
-   * is in continuousLayout mode, the divider needs to be moved and the
-   * JSplitPane needs to be laid out.
-   *
-   * @param location The new location of the divider.
-   */
-  protected void dragDividerTo(int location)
-  {
-    location = validLocation(location);
-    if (beginDragDividerLocation == -1)
-      beginDragDividerLocation = location;
-
-    if (splitPane.isContinuousLayout())
-      splitPane.setDividerLocation(location);
-    else
-      {
-        Point p = nonContinuousLayoutDivider.getLocation();
-        if (getOrientation() == JSplitPane.HORIZONTAL_SPLIT)
-          p.x = location;
-        else
-          p.y = location;
-        nonContinuousLayoutDivider.setLocation(p);
-      }
-    setLastDragLocation(location);
-    splitPane.repaint();
-  }
-
-  /**
-   * This method is called when the dragging is finished.
-   *
-   * @param location The location where the drag finished.
-   */
-  protected void finishDraggingTo(int location)
-  {
-    if (nonContinuousLayoutDivider != null)
-      nonContinuousLayoutDivider.setVisible(false);
-    draggingHW = false;
-    location = validLocation(location);
-    splitPane.setDividerLocation(location);
-    splitPane.setLastDividerLocation(beginDragDividerLocation);
-    beginDragDividerLocation = -1;
-  }
-
-  /**
-   * This method returns the width of one of the sides of the divider's border.
-   *
-   * @return The width of one side of the divider's border.
-   *
-   * @deprecated 1.3
-   */
-  protected int getDividerBorderSize()
-  {
-    if (getOrientation() == JSplitPane.HORIZONTAL_SPLIT)
-      return divider.getBorder().getBorderInsets(divider).left;
-    else
-      return divider.getBorder().getBorderInsets(divider).top;
-  }
-
-  /**
-   * This is a helper method that returns a valid location for the divider
-   * when dragging.
-   *
-   * @param location The location to check.
-   *
-   * @return A valid location.
-   */
-  private int validLocation(int location)
-  {
-    int min = getMinimumDividerLocation(splitPane);
-    int max = getMaximumDividerLocation(splitPane);
-    if (min > 0 && location < min)
-      return min;
-    if (max > 0 && location > max)
-      return max;
-    return location;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicTabbedPaneUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicTabbedPaneUI.java
deleted file mode 100644
index c42f9ca..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicTabbedPaneUI.java
+++ /dev/null
@@ -1,4003 +0,0 @@
-/* BasicTabbedPaneUI.java --
-   Copyright (C) 2002, 2004, 2005, 2006  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.LayoutManager;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.FocusAdapter;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.AbstractAction;
-import javax.swing.ActionMap;
-import javax.swing.Icon;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-import javax.swing.JTabbedPane;
-import javax.swing.JViewport;
-import javax.swing.KeyStroke;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.TabbedPaneUI;
-import javax.swing.plaf.UIResource;
-import javax.swing.text.View;
-
-/**
- * This is the Basic Look and Feel's UI delegate for JTabbedPane.
- *
- * @author Lillian Angel (langel@redhat.com)
- * @author Kim Ho (kho@redhat.com)
- * @author Roman Kennke (kennke@aicas.com)
- * @author Robert Schuster (robertschuster@fsfe.org)
- */
-public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants
-{
-
-  static class NavigateAction extends AbstractAction
-  {
-    int direction;
-
-    NavigateAction(String name, int dir)
-    {
-      super(name);
-      direction = dir;
-    }
-
-    public void actionPerformed(ActionEvent event)
-    {
-      JTabbedPane tp = (JTabbedPane) event.getSource();
-      BasicTabbedPaneUI ui = (BasicTabbedPaneUI) tp.getUI();
-
-      ui.navigateSelectedTab(direction);
-    }
-
-  }
-
-  static class NavigatePageDownAction extends AbstractAction
-  {
-
-    public NavigatePageDownAction()
-    {
-      super("navigatePageDown");
-    }
-
-    public void actionPerformed(ActionEvent event)
-    {
-      JTabbedPane tp = (JTabbedPane) event.getSource();
-      BasicTabbedPaneUI ui = (BasicTabbedPaneUI) tp.getUI();
-
-      int i = tp.getSelectedIndex();
-
-      if (i < 0)
-        i = 0;
-
-      ui.selectNextTabInRun(i);
-    }
-
-  }
-
-  static class NavigatePageUpAction extends AbstractAction
-  {
-
-    public NavigatePageUpAction()
-    {
-      super("navigatePageUp");
-    }
-
-    public void actionPerformed(ActionEvent event)
-    {
-      JTabbedPane tp = (JTabbedPane) event.getSource();
-      BasicTabbedPaneUI ui = (BasicTabbedPaneUI) tp.getUI();
-
-      int i = tp.getSelectedIndex();
-
-      if (i < 0)
-        i = 0;
-
-      ui.selectPreviousTabInRun(i);
-
-    }
-  }
-
-  static class RequestFocusAction extends AbstractAction
-  {
-
-    public RequestFocusAction()
-    {
-      super("requestFocus");
-    }
-
-    public void actionPerformed(ActionEvent event)
-    {
-      ((JTabbedPane) event.getSource()).requestFocus();
-    }
-
-  }
-
-  static class RequestFocusForVisibleComponentAction extends AbstractAction
-  {
-
-    public RequestFocusForVisibleComponentAction()
-    {
-      super("requestFocusForVisibleComponent");
-    }
-
-    public void actionPerformed(ActionEvent event)
-    {
-      JTabbedPane tp = (JTabbedPane) event.getSource();
-
-      // FIXME: This should select a suitable component within
-      // the tab content. However I dont know whether we have
-      // to search for this component or wether the called is
-      // supposed to do that.
-      tp.getSelectedComponent().requestFocus();
-    }
-
-  }
-
-  /**
-   * A helper class that handles focus.
-   * <p>The purpose of this class is to implement a more flexible focus
-   * handling for the tabbed pane, which is used to determine whether the
-   * focus indicator should be painted or not. When in scrolling layout
-   * mode the area containing the tabs is a scrollpane, so simply testing
-   * whether the tabbed pane has the focus does not work.</p>
-   * <p>The <code>FocusHandler</code> is installed on the scrollpane and
-   * the tabbed pane and sets the variable <code>hasFocus</code> to
-   * <code>false</code> only when both components do not hold the focus.</p>
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class FocusHandler extends FocusAdapter
-  {
-    /**
-     * This method is called when the component gains focus.
-     *
-     * @param e The FocusEvent.
-     */
-    public void focusGained(FocusEvent e)
-    {
-      Object source = e.getSource();
-      if (source == panel )
-        tabPane.requestFocus();
-      else if (source == tabPane)
-        tabPane.repaint();
-    }
-
-    /**
-     * This method is called when the component loses focus.
-     *
-     * @param e The FocusEvent.
-     */
-    public void focusLost(FocusEvent e)
-    {
-      if (e.getOppositeComponent() == tabPane.getSelectedComponent())
-        tabPane.requestFocus();
-      else if (e.getSource() == tabPane)
-        tabPane.repaint();
-    }
-  }
-
-  /**
-   * A helper class for determining if mouse presses occur inside tabs and
-   * sets the index appropriately. In SCROLL_TAB_MODE, this class also
-   * handles the mouse clicks on the scrolling buttons.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class MouseHandler extends MouseAdapter
-  {
-    public void mouseReleased(MouseEvent e)
-    {
-      Object s = e.getSource();
-
-      // Event may originate from the viewport in
-      // SCROLL_TAB_LAYOUT mode. It is redisptached
-      // through the tabbed pane then.
-      if (tabPane != e.getSource())
-        {
-          redispatchEvent(e);
-          e.setSource(s);
-        }
-    }
-
-    /**
-     * This method is called when the mouse is pressed. The index cannot
-     * change to a tab that is  not enabled.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      Object s = e.getSource();
-
-      // Event may originate from the viewport in
-      // SCROLL_TAB_LAYOUT mode. It is redisptached
-      // through the tabbed pane then.
-      if (tabPane != e.getSource())
-        {
-          redispatchEvent(e);
-          e.setSource(s);
-        }
-
-      int placement = tabPane.getTabPlacement();
-
-      if (s == incrButton)
-        {
-          if(!incrButton.isEnabled())
-            return;
-
-          currentScrollLocation++;
-
-          switch (placement)
-            {
-              case JTabbedPane.TOP:
-              case JTabbedPane.BOTTOM:
-                currentScrollOffset = getTabAreaInsets(placement).left;
-                for (int i = 0; i < currentScrollLocation; i++)
-                  currentScrollOffset += rects[i].width;
-                break;
-              default:
-                currentScrollOffset = getTabAreaInsets(placement).top;
-                for (int i = 0; i < currentScrollLocation; i++)
-                  currentScrollOffset += rects[i].height;
-                break;
-            }
-
-          updateViewPosition();
-          updateButtons();
-
-          tabPane.repaint();
-        }
-      else if (s == decrButton)
-        {
-          if(!decrButton.isEnabled())
-            return;
-
-           // The scroll location may be zero but the offset
-           // greater than zero because of an adjustement to
-           // make a partially visible tab completely visible.
-           if (currentScrollLocation > 0)
-             currentScrollLocation--;
-
-           // Set the offset back to 0 and recompute it.
-           currentScrollOffset = 0;
-
-           switch (placement)
-             {
-               case JTabbedPane.TOP:
-               case JTabbedPane.BOTTOM:
-                 // Take the tab area inset into account.
-                 if (currentScrollLocation > 0)
-                   currentScrollOffset = getTabAreaInsets(placement).left;
-                 // Recompute scroll offset.
-                 for (int i = 0; i < currentScrollLocation; i++)
-                   currentScrollOffset += rects[i].width;
-                 break;
-               default:
-                 // Take the tab area inset into account.
-                 if (currentScrollLocation > 0)
-                   currentScrollOffset = getTabAreaInsets(placement).top;
-
-                 for (int i = 0; i < currentScrollLocation; i++)
-                   currentScrollOffset += rects[i].height;
-             }
-
-           updateViewPosition();
-           updateButtons();
-
-           tabPane.repaint();
-        }
-      else if (tabPane.isEnabled())
-        {
-          int index = tabForCoordinate(tabPane, e.getX(), e.getY());
-          if (!tabPane.isEnabledAt(index))
-            return;
-
-          if (tabPane.getTabLayoutPolicy() == JTabbedPane.SCROLL_TAB_LAYOUT
-              && s == panel)
-            {
-              scrollTab(index, placement);
-
-              tabPane.setSelectedIndex(index);
-              tabPane.repaint();
-            }
-          else
-            {
-              tabPane.setSelectedIndex(index);
-              tabPane.revalidate();
-              tabPane.repaint();
-            }
-
-        }
-
-    }
-
-    /**
-     * Receives notification when the mouse pointer has entered the tabbed
-     * pane.
-     *
-     * @param e the mouse event
-     */
-    public void mouseEntered(MouseEvent e)
-    {
-      Object s = e.getSource();
-
-      // Event may originate from the viewport in
-      // SCROLL_TAB_LAYOUT mode. It is redisptached
-      // through the tabbed pane then.
-      if (tabPane != e.getSource())
-        {
-          redispatchEvent(e);
-          e.setSource(s);
-        }
-
-      int tabIndex = tabForCoordinate(tabPane, e.getX(), e.getY());
-      setRolloverTab(tabIndex);
-    }
-
-    /**
-     * Receives notification when the mouse pointer has exited the tabbed
-     * pane.
-     *
-     * @param e the mouse event
-     */
-    public void mouseExited(MouseEvent e)
-    {
-      Object s = e.getSource();
-
-      // Event may originate from the viewport in
-      // SCROLL_TAB_LAYOUT mode. It is redisptached
-      // through the tabbed pane then.
-      if (tabPane != e.getSource())
-        {
-          redispatchEvent(e);
-          e.setSource(s);
-        }
-
-      setRolloverTab(-1);
-    }
-
-    /**
-     * Receives notification when the mouse pointer has moved over the tabbed
-     * pane.
-     *
-     * @param ev the mouse event
-     */
-    public void mouseMoved(MouseEvent ev)
-    {
-      Object s = ev.getSource();
-
-      if (tabPane != ev.getSource())
-        {
-          ev.setSource(tabPane);
-          tabPane.dispatchEvent(ev);
-
-          ev.setSource(s);
-        }
-
-      int tabIndex = tabForCoordinate(tabPane, ev.getX(), ev.getY());
-      setRolloverTab(tabIndex);
-    }
-
-    /** Modifies the mouse event to originate from
-     * the tabbed pane and redispatches it.
-     *
-     * @param me
-     */
-    void redispatchEvent(MouseEvent me)
-    {
-      me.setSource(tabPane);
-      Point viewPos = viewport.getViewPosition();
-      viewPos.x -= viewport.getX();
-      viewPos.y -= viewport.getY();
-      me.translatePoint(-viewPos.x, -viewPos.y);
-      tabPane.dispatchEvent(me);
-
-      me.translatePoint(viewPos.x, viewPos.y);
-    }
-
-  }
-
-  /**
-   * This class handles PropertyChangeEvents fired from the JTabbedPane.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class PropertyChangeHandler implements PropertyChangeListener
-  {
-    /**
-     * This method is called whenever one of the properties of the JTabbedPane
-     * changes.
-     *
-     * @param e The PropertyChangeEvent.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      out:
-        {
-          if (e.getPropertyName().equals("tabLayoutPolicy"))
-            {
-              currentScrollLocation = currentScrollOffset = 0;
-
-              layoutManager = createLayoutManager();
-
-              tabPane.setLayout(layoutManager);
-            }
-          else if (e.getPropertyName().equals("tabPlacement")
-                   && tabPane.getTabLayoutPolicy()
-                   == JTabbedPane.SCROLL_TAB_LAYOUT)
-            {
-              incrButton = createIncreaseButton();
-              decrButton = createDecreaseButton();
-
-              // If the tab placement value was changed of a tabbed pane
-              // in SCROLL_TAB_LAYOUT mode we investigate the change to
-              // implement the following behavior which was observed in
-              // the RI:
-              // The scrolling offset will be reset if we change to
-              // a direction which is orthogonal to the current
-              // direction and stays the same if it is parallel.
-
-              int oldPlacement = ((Integer) e.getOldValue()).intValue();
-              int newPlacement = ((Integer) e.getNewValue()).intValue();
-              switch (newPlacement)
-                {
-                  case JTabbedPane.TOP:
-                  case JTabbedPane.BOTTOM:
-                    if (oldPlacement == JTabbedPane.TOP
-                        || oldPlacement == JTabbedPane.BOTTOM)
-                      break out;
-
-                    currentScrollOffset = getTabAreaInsets(newPlacement).left;
-                    break;
-                  default:
-                    if (oldPlacement == JTabbedPane.LEFT
-                       || oldPlacement == JTabbedPane.RIGHT)
-                      break out;
-
-                    currentScrollOffset = getTabAreaInsets(newPlacement).top;
-                }
-
-              updateViewPosition();
-              updateButtons();
-            }
-        }
-
-      tabPane.revalidate();
-      tabPane.repaint();
-    }
-  }
-
-  /**
-   * A LayoutManager responsible for placing all the tabs and the visible
-   * component inside the JTabbedPane. This class is only used for
-   * WRAP_TAB_LAYOUT.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class TabbedPaneLayout implements LayoutManager
-  {
-    /**
-     * This method is called when a component is added to the JTabbedPane.
-     *
-     * @param name The name of the component.
-     * @param comp The component being added.
-     */
-    public void addLayoutComponent(String name, Component comp)
-    {
-      // Do nothing.
-    }
-
-    /**
-     * This method is called when the rectangles need to be calculated. It
-     * also fixes the size of the visible component.
-     */
-    public void calculateLayoutInfo()
-    {
-      int count = tabPane.getTabCount();
-      assureRectsCreated(count);
-      calculateTabRects(tabPane.getTabPlacement(), count);
-      tabRunsDirty = false;
-    }
-
-    /**
-     * This method calculates the size of the the JTabbedPane.
-     *
-     * @param minimum Whether the JTabbedPane will try to be as small as it
-     *        can.
-     *
-     * @return The desired size of the JTabbedPane.
-     */
-    protected Dimension calculateSize(boolean minimum)
-    {
-      int tabPlacement = tabPane.getTabPlacement();
-
-      int width = 0;
-      int height = 0;
-      Component c;
-      Dimension dims;
-
-      // Find out the minimum/preferred size to display the largest child
-      // of the tabbed pane.
-      int count = tabPane.getTabCount();
-      for (int i = 0; i < count; i++)
-        {
-          c = tabPane.getComponentAt(i);
-          if (c == null)
-            continue;
-          dims = minimum ? c.getMinimumSize() : c.getPreferredSize();
-          if (dims != null)
-            {
-              height = Math.max(height, dims.height);
-              width = Math.max(width, dims.width);
-            }
-        }
-
-      Insets tabAreaInsets = getTabAreaInsets(tabPlacement);
-      if (tabPlacement == SwingConstants.TOP
-          || tabPlacement == SwingConstants.BOTTOM)
-        {
-          width = Math.max(calculateMaxTabWidth(tabPlacement), width);
-
-          height += preferredTabAreaHeight(tabPlacement,
-                                           width - tabAreaInsets.left
-                                           - tabAreaInsets.right);
-        }
-      else
-        {
-          height = Math.max(calculateMaxTabHeight(tabPlacement), height);
-
-          width += preferredTabAreaWidth(tabPlacement,
-                                         height - tabAreaInsets.top
-                                         - tabAreaInsets.bottom);
-        }
-
-      Insets tabPaneInsets = tabPane.getInsets();
-      return new Dimension(width + tabPaneInsets.left + tabPaneInsets.right,
-                           height + tabPaneInsets.top + tabPaneInsets.bottom);
-    }
-
-    // if tab placement is LEFT OR RIGHT, they share width.
-    // if tab placement is TOP OR BOTTOM, they share height
-    // PRE STEP: finds the default sizes for the labels as well as their
-    // locations.
-    // AND where they will be placed within the run system.
-    // 1. calls normalizeTab Runs.
-    // 2. calls rotate tab runs.
-    // 3. pads the tab runs.
-    // 4. pads the selected tab.
-
-    /**
-     * This method is called to calculate the tab rectangles.  This method
-     * will calculate the size and position of all  rectangles (taking into
-     * account which ones should be in which tab run). It will pad them and
-     * normalize them  as necessary.
-     *
-     * @param tabPlacement The JTabbedPane's tab placement.
-     * @param tabCount The run the current selection is in.
-     */
-    protected void calculateTabRects(int tabPlacement, int tabCount)
-    {
-      Insets insets = tabPane.getInsets();
-      Insets tabAreaInsets = getTabAreaInsets(tabPlacement);
-      Dimension size = tabPane.getSize();
-
-      // The coordinates of the upper left corner of the tab area.
-      int x;
-      int y;
-      // The location at which the runs must be broken.
-      int breakAt;
-
-      // Calculate the bounds for the tab area.
-      switch (tabPlacement)
-      {
-        case LEFT:
-          maxTabWidth = calculateMaxTabWidth(tabPlacement);
-          x = insets.left + tabAreaInsets.left;
-          y = insets.top + tabAreaInsets.top;
-          breakAt = size.height - (insets.bottom + tabAreaInsets.bottom);
-          break;
-        case RIGHT:
-          maxTabWidth = calculateMaxTabWidth(tabPlacement);
-          x = size.width - (insets.right + tabAreaInsets.right)
-              - maxTabWidth - 1;
-          y = insets.top + tabAreaInsets.top;
-          breakAt = size.height - (insets.bottom + tabAreaInsets.bottom);
-          break;
-        case BOTTOM:
-          maxTabHeight = calculateMaxTabHeight(tabPlacement);
-          x = insets.left + tabAreaInsets.left;
-          y = size.height - (insets.bottom + tabAreaInsets.bottom)
-              - maxTabHeight - 1;
-          breakAt = size.width - (insets.right + tabAreaInsets.right);
-          break;
-        case TOP:
-        default:
-          maxTabHeight = calculateMaxTabHeight(tabPlacement);
-          x = insets.left + tabAreaInsets.left;
-          y = insets.top + tabAreaInsets.top;
-          breakAt = size.width - (insets.right + tabAreaInsets.right);
-          break;
-      }
-
-      if (tabCount == 0)
-        return;
-
-      FontMetrics fm = getFontMetrics();
-      runCount = 0;
-      selectedRun = -1;
-      int selectedIndex = tabPane.getSelectedIndex();
-      if (selectedIndex < 0)
-          selectedIndex = 0;
-
-      Rectangle rect;
-
-      // Go through all the tabs and build the tab runs.
-      if (tabPlacement == SwingConstants.TOP
-          || tabPlacement == SwingConstants.BOTTOM)
-        {
-          for (int i = 0; i < tabCount; i++)
-            {
-              rect = rects[i];
-              if (i > 0)
-                {
-                  rect.x = rects[i - 1].x + rects[i - 1].width;
-                }
-              else
-                {
-                  tabRuns[0] = 0;
-                  runCount = 1;
-                  maxTabWidth = 0;
-                  rect.x = x;
-                }
-              rect.width = calculateTabWidth(tabPlacement, i, fm);
-              maxTabWidth = Math.max(maxTabWidth, rect.width);
-
-              if (rect.x != 2 + insets.left && rect.x + rect.width > breakAt)
-                {
-                  if (runCount > tabRuns.length - 1)
-                    expandTabRunsArray();
-                  tabRuns[runCount] = i;
-                  runCount++;
-                  rect.x = x;
-                }
-
-              rect.y = y;
-              rect.height = maxTabHeight;
-              if (i == selectedIndex)
-                selectedRun = runCount - 1;
-            }
-        }
-      else
-        {
-          for (int i = 0; i < tabCount; i++)
-            {
-              rect = rects[i];
-              if (i > 0)
-                {
-                  rect.y = rects[i - 1].y + rects[i - 1].height;
-                }
-              else
-                {
-                  tabRuns[0] = 0;
-                  runCount = 1;
-                  maxTabHeight = 0;
-                  rect.y = y;
-                }
-              rect.height = calculateTabHeight(tabPlacement, i,
-                                               fm.getHeight());
-              maxTabHeight = Math.max(maxTabHeight, rect.height);
-
-              if (rect.y != 2 + insets.top && rect.y + rect.height > breakAt)
-                {
-                  if (runCount > tabRuns.length - 1)
-                    expandTabRunsArray();
-                  tabRuns[runCount] = i;
-                  runCount++;
-                  rect.y = y;
-                }
-
-              rect.x = x;
-              rect.width = maxTabWidth;
-
-              if (i == selectedIndex)
-                selectedRun = runCount - 1;
-            }
-        }
-
-      if (runCount > 1)
-        {
-          int start;
-          if  (tabPlacement == SwingConstants.TOP
-              || tabPlacement == SwingConstants.BOTTOM)
-            start = x;
-          else
-            start = y;
-          normalizeTabRuns(tabPlacement, tabCount, start, breakAt);
-          selectedRun = getRunForTab(tabCount, selectedIndex);
-          if (shouldRotateTabRuns(tabPlacement))
-            {
-              rotateTabRuns(tabPlacement, selectedRun);
-            }
-        }
-
-      // Suppress padding if we have only one tab run.
-      if (runCount == 1)
-        return;
-
-      // Pad the runs.
-      int tabRunOverlay = getTabRunOverlay(tabPlacement);
-      for (int i = runCount - 1; i >= 0; --i)
-        {
-          int start = tabRuns[i];
-          int nextIndex;
-          if (i == runCount - 1)
-            nextIndex = 0;
-          else
-            nextIndex = i + 1;
-          int next = tabRuns[nextIndex];
-          int end = next != 0 ? next - 1 : tabCount - 1;
-          if (tabPlacement == SwingConstants.TOP
-              || tabPlacement == SwingConstants.BOTTOM)
-            {
-              for (int j = start; j <= end; ++j)
-                {
-                  rect = rects[j];
-                  rect.y = y;
-                  rect.x += getTabRunIndent(tabPlacement, i);
-                }
-              if (shouldPadTabRun(tabPlacement, i))
-                {
-                  padTabRun(tabPlacement, start, end, breakAt);
-                }
-              if (tabPlacement == BOTTOM)
-                y -= maxTabHeight - tabRunOverlay;
-              else
-                y += maxTabHeight - tabRunOverlay;
-            }
-          else
-            {
-              for (int j = start; j <= end; ++j)
-                {
-                  rect = rects[j];
-                  rect.x = x;
-                  rect.y += getTabRunIndent(tabPlacement, i);
-                }
-              if (shouldPadTabRun(tabPlacement, i))
-                {
-                  padTabRun(tabPlacement, start, end, breakAt);
-                }
-              if (tabPlacement == RIGHT)
-                x -= maxTabWidth - tabRunOverlay;
-              else
-                x += maxTabWidth - tabRunOverlay;
-
-            }
-        }
-      padSelectedTab(tabPlacement, selectedIndex);
-    }
-
-    /**
-     * This method is called when the JTabbedPane is laid out in
-     * WRAP_TAB_LAYOUT. It calls calculateLayoutInfo to  find the positions
-     * of all its components.
-     *
-     * @param parent The Container to lay out.
-     */
-    public void layoutContainer(Container parent)
-    {
-      calculateLayoutInfo();
-
-      int tabPlacement = tabPane.getTabPlacement();
-      Insets insets = tabPane.getInsets();
-
-      int selectedIndex = tabPane.getSelectedIndex();
-
-      Component selectedComponent = null;
-      if (selectedIndex >= 0)
-        selectedComponent = tabPane.getComponentAt(selectedIndex);
-      // The RI doesn't seem to change the component if the new selected
-      // component == null. This is probably so that applications can add
-      // one single component for every tab.
-      if (selectedComponent != null)
-        {
-          setVisibleComponent(selectedComponent);
-        }
-
-      int childCount = tabPane.getComponentCount();
-      if (childCount > 0)
-        {
-          int compX;
-          int compY;
-          int tabAreaWidth = 0;
-          int tabAreaHeight = 0;
-          switch (tabPlacement)
-          {
-            case LEFT:
-              tabAreaWidth = calculateTabAreaWidth(tabPlacement, runCount,
-                                                   maxTabWidth);
-              compX = tabAreaWidth + insets.left + contentBorderInsets.left;
-              compY = insets.top + contentBorderInsets.top;
-              break;
-            case RIGHT:
-              tabAreaWidth = calculateTabAreaWidth(tabPlacement, runCount,
-                                                   maxTabWidth);
-              compX = insets.left + contentBorderInsets.left;
-              compY = insets.top + contentBorderInsets.top;
-              break;
-            case BOTTOM:
-              tabAreaHeight = calculateTabAreaHeight(tabPlacement, runCount,
-                                                     maxTabHeight);
-              compX = insets.left + contentBorderInsets.left;
-              compY = insets.top + contentBorderInsets.top;
-              break;
-            case TOP:
-            default:
-              tabAreaHeight = calculateTabAreaHeight(tabPlacement, runCount,
-                                                     maxTabHeight);
-
-              compX = insets.left + contentBorderInsets.left;
-              compY = tabAreaHeight + insets.top + contentBorderInsets.top;
-          }
-          Rectangle bounds = tabPane.getBounds();
-          int compWidth = bounds.width - tabAreaWidth - insets.left
-                          - insets.right - contentBorderInsets.left
-                          - contentBorderInsets.right;
-          int compHeight = bounds.height - tabAreaHeight - insets.top
-                           - insets.bottom - contentBorderInsets.top
-                           - contentBorderInsets.bottom;
-
-
-          for (int i = 0; i < childCount; ++i)
-            {
-              Component c = tabPane.getComponent(i);
-              c.setBounds(compX, compY, compWidth, compHeight);
-            }
-        }
-    }
-
-    /**
-     * This method returns the minimum layout size for the given container.
-     *
-     * @param parent The container that is being sized.
-     *
-     * @return The minimum size.
-     */
-    public Dimension minimumLayoutSize(Container parent)
-    {
-      return calculateSize(true);
-    }
-
-    // If there is more free space in an adjacent run AND the tab
-    // in the run can fit in the adjacent run, move it. This method
-    // is not perfect, it is merely an approximation.
-    // If you play around with Sun's JTabbedPane, you'll see that
-    // it does do some pretty strange things with regards to not moving tabs
-    // that should be moved.
-    // start = the x position where the tabs will begin
-    // max = the maximum position of where the tabs can go to
-    // (tabAreaInsets.left + the width of the tab area)
-
-    /**
-     * This method tries to "even out" the number of tabs in each run based on
-     * their widths.
-     *
-     * @param tabPlacement The JTabbedPane's tab placement.
-     * @param tabCount The number of tabs.
-     * @param start The x position where the tabs will begin.
-     * @param max The maximum x position where the tab can run to.
-     */
-    protected void normalizeTabRuns(int tabPlacement, int tabCount, int start,
-                                    int max)
-    {
-      boolean horizontal = tabPlacement == TOP || tabPlacement == BOTTOM;
-      int currentRun = runCount - 1;
-      double weight = 1.25;
-      for (boolean adjust = true; adjust == true;)
-        {
-          int last = lastTabInRun(tabCount, currentRun);
-          int prevLast = lastTabInRun(tabCount, currentRun - 1);
-          int end;
-          int prevLength;
-          if (horizontal)
-            {
-              end = rects[last].x + rects[last].width;
-              prevLength = (int) (maxTabWidth * weight);
-            }
-          else
-            {
-              end = rects[last].y + rects[last].height;
-              prevLength = (int) (maxTabWidth * weight * 2);
-            }
-          if (max - end > prevLength)
-            {
-              tabRuns[currentRun] = prevLast;
-              if (horizontal)
-                rects[prevLast].x = start;
-              else
-                rects[prevLast].y = start;
-              for (int i = prevLast + 1; i <= last; i++)
-                {
-                  if (horizontal)
-                    rects[i].x = rects[i - 1].x + rects[i - 1].width;
-                  else
-                    rects[i].y = rects[i - 1].y + rects[i - 1].height;
-                }
-            }
-          else if (currentRun == runCount - 1)
-            adjust = false;
-          if (currentRun - 1 > 0)
-            currentRun -= 1;
-          else
-            {
-              // Check again, but with higher ratio to avoid
-              // clogging up the last run.
-              currentRun = runCount - 1;
-              weight += 0.25;
-            }
-        }
-    }
-
-    /**
-     * This method pads the tab at the selected index by the  selected tab pad
-     * insets (so that it looks larger).
-     *
-     * @param tabPlacement The placement of the tabs.
-     * @param selectedIndex The selected index.
-     */
-    protected void padSelectedTab(int tabPlacement, int selectedIndex)
-    {
-      Insets insets = getSelectedTabPadInsets(tabPlacement);
-      rects[selectedIndex].x -= insets.left;
-      rects[selectedIndex].y -= insets.top;
-      rects[selectedIndex].width += insets.left + insets.right;
-      rects[selectedIndex].height += insets.top + insets.bottom;
-    }
-
-    // If the tabs on the run don't fill the width of the window, make it
-    // fit now.
-    // start = starting index of the run
-    // end = last index of the run
-    // max = tabAreaInsets.left + width (or equivalent)
-    // assert start <= end.
-
-    /**
-     * This method makes each tab in the run larger so that the  tabs expand
-     * to fill the runs width/height (depending on tabPlacement).
-     *
-     * @param tabPlacement The placement of the tabs.
-     * @param start The index of the first tab.
-     * @param end The last index of the tab
-     * @param max The amount of space in the run (width for TOP and BOTTOM
-     *        tabPlacement).
-     */
-    protected void padTabRun(int tabPlacement, int start, int end, int max)
-    {
-      if (tabPlacement == SwingConstants.TOP
-          || tabPlacement == SwingConstants.BOTTOM)
-        {
-          int runWidth = rects[end].x + rects[end].width;
-          int spaceRemaining = max - runWidth;
-          int numTabs = end - start + 1;
-
-          // now divvy up the space.
-          int spaceAllocated = spaceRemaining / numTabs;
-          int currX = rects[start].x;
-          for (int i = start; i <= end; i++)
-            {
-              rects[i].x = currX;
-              rects[i].width += spaceAllocated;
-
-              currX += rects[i].width;
-              // This is used because since the spaceAllocated
-              // variable is an int, it rounds down. Sometimes,
-              // we don't fill an entire row, so we make it do
-              // so now.
-
-              if (i == end && rects[i].x + rects[i].width != max)
-                rects[i].width = max - rects[i].x;
-            }
-        }
-      else
-        {
-          int runHeight = rects[end].y + rects[end].height;
-          int spaceRemaining = max - runHeight;
-          int numTabs = end - start + 1;
-
-          int spaceAllocated = spaceRemaining / numTabs;
-          int currY = rects[start].y;
-          for (int i = start; i <= end; i++)
-            {
-              rects[i].y = currY;
-              rects[i].height += spaceAllocated;
-              currY += rects[i].height;
-              if (i == end && rects[i].y + rects[i].height != max)
-                rects[i].height = max - rects[i].y;
-            }
-        }
-    }
-
-    /**
-     * This method returns the preferred layout size for the given container.
-     *
-     * @param parent The container to size.
-     *
-     * @return The preferred layout size.
-     */
-    public Dimension preferredLayoutSize(Container parent)
-    {
-      return calculateSize(false);
-    }
-
-    /**
-     * This method returns the preferred tab height given a tabPlacement and
-     * width.
-     *
-     * @param tabPlacement The JTabbedPane's tab placement.
-     * @param width The expected width.
-     *
-     * @return The preferred tab area height.
-     */
-    protected int preferredTabAreaHeight(int tabPlacement, int width)
-    {
-      if (tabPane.getTabCount() == 0)
-        return calculateTabAreaHeight(tabPlacement, 0, 0);
-
-      int runs = 0;
-      int runWidth = 0;
-      int tabWidth = 0;
-
-      FontMetrics fm = getFontMetrics();
-
-      Insets tabAreaInsets = getTabAreaInsets(tabPlacement);
-      Insets insets = tabPane.getInsets();
-
-      // Only interested in width, this is a messed up rectangle now.
-      width -= tabAreaInsets.left + tabAreaInsets.right + insets.left
-      + insets.right;
-
-      // The reason why we can't use runCount:
-      // This method is only called to calculate the size request
-      // for the tabbedPane. However, this size request is dependent on
-      // our desired width. We need to find out what the height would
-      // be IF we got our desired width.
-      for (int i = 0; i < tabPane.getTabCount(); i++)
-        {
-          tabWidth = calculateTabWidth(tabPlacement, i, fm);
-          if (runWidth + tabWidth > width)
-            {
-              runWidth = tabWidth;
-              runs++;
-            }
-          else
-            runWidth += tabWidth;
-        }
-      runs++;
-
-      int maxTabHeight = calculateMaxTabHeight(tabPlacement);
-      int tabAreaHeight = calculateTabAreaHeight(tabPlacement, runs,
-                                                 maxTabHeight);
-      return tabAreaHeight;
-    }
-
-    /**
-     * This method calculates the preferred tab area width given a tab
-     * placement and height.
-     *
-     * @param tabPlacement The JTabbedPane's tab placement.
-     * @param height The expected height.
-     *
-     * @return The preferred tab area width.
-     */
-    protected int preferredTabAreaWidth(int tabPlacement, int height)
-    {
-      if (tabPane.getTabCount() == 0)
-        return calculateTabAreaHeight(tabPlacement, 0, 0);
-
-      int runs = 0;
-      int runHeight = 0;
-      int tabHeight = 0;
-
-      FontMetrics fm = getFontMetrics();
-
-      Insets tabAreaInsets = getTabAreaInsets(tabPlacement);
-      Insets insets = tabPane.getInsets();
-
-      height -= tabAreaInsets.top + tabAreaInsets.bottom + insets.top
-      + insets.bottom;
-      int fontHeight = fm.getHeight();
-
-      for (int i = 0; i < tabPane.getTabCount(); i++)
-        {
-          tabHeight = calculateTabHeight(tabPlacement, i, fontHeight);
-          if (runHeight + tabHeight > height)
-            {
-              runHeight = tabHeight;
-              runs++;
-            }
-          else
-            runHeight += tabHeight;
-        }
-      runs++;
-
-      int maxTabWidth = calculateMaxTabWidth(tabPlacement);
-      int tabAreaWidth = calculateTabAreaWidth(tabPlacement, runs,
-                                               maxTabWidth);
-      return tabAreaWidth;
-    }
-
-    /**
-     * This method rotates the places each run in the correct place  the
-     * tabRuns array. See the comment for tabRuns for how the runs are placed
-     * in the array.
-     *
-     * @param tabPlacement The JTabbedPane's tab placement.
-     * @param selectedRun The run the current selection is in.
-     */
-    protected void rotateTabRuns(int tabPlacement, int selectedRun)
-    {
-      if (runCount == 1 || selectedRun == 0 || selectedRun == -1)
-        return;
-      int[] newTabRuns = new int[tabRuns.length];
-      int currentRun = selectedRun;
-      int i = 0;
-      do
-        {
-          newTabRuns[i] = tabRuns[currentRun];
-          currentRun = getNextTabRun(currentRun);
-          i++;
-        }
-      while (i < runCount);
-
-      tabRuns = newTabRuns;
-      BasicTabbedPaneUI.this.selectedRun = 1;
-    }
-
-    /**
-     * This method is called when a component is removed  from the
-     * JTabbedPane.
-     *
-     * @param comp The component removed.
-     */
-    public void removeLayoutComponent(Component comp)
-    {
-      // Do nothing.
-    }
-  }
-
-  /**
-   * This class acts as the LayoutManager for the JTabbedPane in
-   * SCROLL_TAB_MODE.
-   */
-  private class TabbedPaneScrollLayout extends TabbedPaneLayout
-  {
-    /**
-     * This method returns the preferred layout size for the given container.
-     *
-     * @param parent The container to calculate a size for.
-     *
-     * @return The preferred layout size.
-     */
-    public Dimension preferredLayoutSize(Container parent)
-    {
-      return super.calculateSize(false);
-    }
-
-    /**
-     * This method returns the minimum layout size for the given container.
-     *
-     * @param parent The container to calculate a size for.
-     *
-     * @return The minimum layout size.
-     */
-    public Dimension minimumLayoutSize(Container parent)
-    {
-      return super.calculateSize(true);
-    }
-
-    /**
-     * This method calculates the tab area height given  a desired width.
-     *
-     * @param tabPlacement The JTabbedPane's tab placement.
-     * @param width The expected width.
-     *
-     * @return The tab area height given the width.
-     */
-    protected int preferredTabAreaHeight(int tabPlacement, int width)
-    {
-      if (tabPane.getTabCount() == 0)
-        return calculateTabAreaHeight(tabPlacement, 0, 0);
-
-      int runs = 1;
-
-      int maxTabHeight = calculateMaxTabHeight(tabPlacement);
-      int tabAreaHeight = calculateTabAreaHeight(tabPlacement, runs,
-                                                 maxTabHeight);
-      return tabAreaHeight;
-    }
-
-    /**
-     * This method calculates the tab area width given a desired height.
-     *
-     * @param tabPlacement The JTabbedPane's tab placement.
-     * @param height The expected height.
-     *
-     * @return The tab area width given the height.
-     */
-    protected int preferredTabAreaWidth(int tabPlacement, int height)
-    {
-      if (tabPane.getTabCount() == 0)
-        return calculateTabAreaHeight(tabPlacement, 0, 0);
-
-      int runs = 1;
-
-      int maxTabWidth = calculateMaxTabWidth(tabPlacement);
-      int tabAreaWidth = calculateTabAreaWidth(tabPlacement, runs, maxTabWidth);
-      return tabAreaWidth;
-    }
-
-    /**
-     * This method is called to calculate the tab rectangles.  This method
-     * will calculate the size and position of all  rectangles (taking into
-     * account which ones should be in which tab run). It will pad them and
-     * normalize them  as necessary.
-     *
-     * @param tabPlacement The JTabbedPane's tab placement.
-     * @param tabCount The number of tabs.
-     */
-    protected void calculateTabRects(int tabPlacement, int tabCount)
-    {
-      if (tabCount == 0)
-        return;
-
-      FontMetrics fm = getFontMetrics();
-      SwingUtilities.calculateInnerArea(tabPane, calcRect);
-      Insets tabAreaInsets = getTabAreaInsets(tabPlacement);
-      Insets insets = tabPane.getInsets();
-      if (tabPlacement == SwingConstants.TOP
-          || tabPlacement == SwingConstants.BOTTOM)
-        {
-          int maxHeight = calculateMaxTabHeight(tabPlacement);
-          calcRect.width -= tabAreaInsets.left + tabAreaInsets.right;
-          int width = 0;
-          int runWidth = tabAreaInsets.left + insets.left;
-          int top = insets.top + tabAreaInsets.top;
-          for (int i = 0; i < tabCount; i++)
-            {
-              width = calculateTabWidth(tabPlacement, i, fm);
-
-              // The proper instances should exists because
-              //  assureRectsCreated() was being run already.
-              rects[i].setBounds(runWidth, top, width, maxHeight);
-
-              runWidth += width;
-            }
-          tabAreaRect.width = tabPane.getWidth() - insets.left - insets.right;
-          tabAreaRect.height = maxTabHeight + tabAreaInsets.top
-                               + tabAreaInsets.bottom;
-          contentRect.width = tabAreaRect.width;
-          contentRect.height = tabPane.getHeight() - insets.top
-          - insets.bottom - tabAreaRect.height;
-          contentRect.x = insets.left;
-          tabAreaRect.x = insets.left;
-          if (tabPlacement == SwingConstants.BOTTOM)
-            {
-              contentRect.y = insets.top;
-              tabAreaRect.y = contentRect.y + contentRect.height;
-            }
-          else
-            {
-              tabAreaRect.y = insets.top;
-              contentRect.y = tabAreaRect.y + tabAreaRect.height;
-            }
-        }
-      else
-        {
-          int maxWidth = calculateMaxTabWidth(tabPlacement);
-
-          calcRect.height -= tabAreaInsets.top + tabAreaInsets.bottom;
-          int height = 0;
-          int runHeight = tabAreaInsets.top + insets.top;
-          int fontHeight = fm.getHeight();
-          int left = insets.left + tabAreaInsets.left;
-          for (int i = 0; i < tabCount; i++)
-            {
-              height = calculateTabHeight(tabPlacement, i, fontHeight);
-
-              // The proper instances should exists because
-              //  assureRectsCreated() was being run already.
-              rects[i].setBounds(left, runHeight, maxWidth, height);
-              runHeight += height;
-            }
-          tabAreaRect.width = maxTabWidth + tabAreaInsets.left
-                              + tabAreaInsets.right;
-          tabAreaRect.height = tabPane.getHeight() - insets.top
-                               - insets.bottom;
-          tabAreaRect.y = insets.top;
-          contentRect.width = tabPane.getWidth() - insets.left - insets.right
-                              - tabAreaRect.width;
-          contentRect.height = tabAreaRect.height;
-          contentRect.y = insets.top;
-          if (tabPlacement == SwingConstants.LEFT)
-            {
-              tabAreaRect.x = insets.left;
-              contentRect.x = tabAreaRect.x + tabAreaRect.width;
-            }
-          else
-            {
-              contentRect.x = insets.left;
-              tabAreaRect.x = contentRect.x + contentRect.width;
-            }
-        }
-
-      // Unlike the behavior in the WRAP_TAB_LAYOUT the selected
-      // tab is not padded specially.
-    }
-
-    /**
-     * This method is called when the JTabbedPane is laid out in
-     * SCROLL_TAB_LAYOUT. It finds the position for all components in the
-     * JTabbedPane.
-     *
-     * @param pane The JTabbedPane to be laid out.
-     */
-    public void layoutContainer(Container pane)
-    {
-      super.layoutContainer(pane);
-      int tabCount = tabPane.getTabCount();
-      if (tabCount == 0)
-        return;
-      int tabPlacement = tabPane.getTabPlacement();
-
-      if (tabPlacement == SwingConstants.TOP
-          || tabPlacement == SwingConstants.BOTTOM)
-        {
-          if (tabAreaRect.x + tabAreaRect.width < rects[tabCount - 1].x
-              + rects[tabCount - 1].width)
-            {
-              Dimension incrDims = incrButton.getPreferredSize();
-              Dimension decrDims = decrButton.getPreferredSize();
-
-              if (tabPlacement == SwingConstants.BOTTOM)
-                {
-                  // Align scroll buttons with the bottom border of the tabbed
-                  // pane's content area.
-                  decrButton.setBounds(tabAreaRect.x + tabAreaRect.width
-                                       - incrDims.width - decrDims.width,
-                                       tabAreaRect.y, decrDims.width,
-                                       decrDims.height);
-                  incrButton.setBounds(tabAreaRect.x + tabAreaRect.width
-                                       - incrDims.width, tabAreaRect.y,
-                                       incrDims.width, incrDims.height);
-                }
-              else
-                {
-                  // Align scroll buttons with the top border of the tabbed
-                  // pane's content area.
-                  decrButton.setBounds(tabAreaRect.x + tabAreaRect.width
-                                       - incrDims.width - decrDims.width,
-                                       tabAreaRect.y + tabAreaRect.height
-                                       - decrDims.height, decrDims.width,
-                                       decrDims.height);
-                  incrButton.setBounds(tabAreaRect.x + tabAreaRect.width
-                                       - incrDims.width,
-                                       tabAreaRect.y + tabAreaRect.height
-                                       - incrDims.height,
-                                       incrDims.width, incrDims.height);
-                }
-
-              tabAreaRect.width -= decrDims.width + incrDims.width;
-
-              updateButtons();
-
-              incrButton.setVisible(true);
-              decrButton.setVisible(true);
-            }
-          else
-            {
-              incrButton.setVisible(false);
-              decrButton.setVisible(false);
-
-              currentScrollOffset = 0;
-              currentScrollLocation = 0;
-            }
-        }
-
-      if (tabPlacement == SwingConstants.LEFT
-          || tabPlacement == SwingConstants.RIGHT)
-        {
-          if (tabAreaRect.y + tabAreaRect.height < rects[tabCount - 1].y
-              + rects[tabCount - 1].height)
-            {
-              Dimension incrDims = incrButton.getPreferredSize();
-              Dimension decrDims = decrButton.getPreferredSize();
-
-              if (tabPlacement == SwingConstants.RIGHT)
-                {
-                  // Align scroll buttons with the right border of the tabbed
-                  // pane's content area.
-                  decrButton.setBounds(tabAreaRect.x,
-                                       tabAreaRect.y + tabAreaRect.height
-                                       - incrDims.height - decrDims.height,
-                                       decrDims.width, decrDims.height);
-                  incrButton.setBounds(tabAreaRect.x,
-                                       tabAreaRect.y + tabAreaRect.height
-                                       - incrDims.height, incrDims.width,
-                                       incrDims.height);
-                }
-              else
-                {
-                  // Align scroll buttons with the left border of the tabbed
-                  // pane's content area.
-                  decrButton.setBounds(tabAreaRect.x + tabAreaRect.width
-                                       - decrDims.width,
-                                       tabAreaRect.y + tabAreaRect.height
-                                       - incrDims.height - decrDims.height,
-                                       decrDims.width, decrDims.height);
-                  incrButton.setBounds(tabAreaRect.x + tabAreaRect.width
-                                       - incrDims.width,
-                                       tabAreaRect.y + tabAreaRect.height
-                                       - incrDims.height, incrDims.width,
-                                       incrDims.height);
-                }
-
-              tabAreaRect.height -= decrDims.height + incrDims.height;
-
-              incrButton.setVisible(true);
-              decrButton.setVisible(true);
-            }
-          else
-            {
-              incrButton.setVisible(false);
-              decrButton.setVisible(false);
-
-              currentScrollOffset = 0;
-              currentScrollLocation = 0;
-            }
-        }
-      viewport.setBounds(tabAreaRect.x, tabAreaRect.y, tabAreaRect.width,
-                         tabAreaRect.height);
-
-      updateViewPosition();
-
-      viewport.repaint();
-    }
-  }
-
-  /**
-   * This class handles ChangeEvents from the JTabbedPane.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class TabSelectionHandler implements ChangeListener
-  {
-    /**
-     * This method is called whenever a ChangeEvent is fired from the
-     * JTabbedPane.
-     *
-     * @param e The ChangeEvent fired.
-     */
-    public void stateChanged(ChangeEvent e)
-    {
-      selectedRun = getRunForTab(tabPane.getTabCount(),
-                                 tabPane.getSelectedIndex());
-
-      if (tabPane.getTabLayoutPolicy() == JTabbedPane.WRAP_TAB_LAYOUT)
-        tabPane.revalidate();
-      tabPane.repaint();
-    }
-  }
-
-  /**
-   * This helper class is a JPanel that fits inside the ScrollViewport. This
-   * panel's sole job is to paint the tab rectangles inside the  viewport so
-   * that it's clipped correctly.
-   */
-  private class ScrollingPanel extends JPanel
-  {
-    /**
-     * This is a private UI class for our panel.
-     */
-    private class ScrollingPanelUI extends BasicPanelUI
-    {
-      /**
-       * This method overrides the default paint method. It paints the tab
-       * rectangles for the JTabbedPane in the panel.
-       *
-       * @param g The Graphics object to paint with.
-       * @param c The JComponent to paint.
-       */
-      public void paint(Graphics g, JComponent c)
-      {
-        int placement = tabPane.getTabPlacement();
-        g.setColor(highlight);
-        if (placement == SwingUtilities.TOP
-            || placement == SwingUtilities.BOTTOM)
-          g.fillRect(currentScrollOffset, 0,
-                     tabAreaRect.width, tabAreaRect.height);
-        else
-          g.fillRect(0, currentScrollOffset,
-                     tabAreaRect.width, tabAreaRect.height);
-
-        paintTabArea(g, placement, tabPane.getSelectedIndex());
-      }
-    }
-
-    /**
-     * This method overrides the updateUI method. It makes the default UI for
-     * this ScrollingPanel to be  a ScrollingPanelUI.
-     */
-    public void updateUI()
-    {
-      setUI(new ScrollingPanelUI());
-    }
-  }
-
-  /**
-   * This is a helper class that paints the panel that paints tabs. This
-   * custom JViewport is used so that the tabs painted in the panel will be
-   * clipped. This class implements UIResource so tabs are not added when
-   * this objects of this class are added to the  JTabbedPane.
-   */
-  private class ScrollingViewport extends JViewport implements UIResource
-  {
-    // TODO: Maybe remove this inner class.
-  }
-
-  /**
-   * This is a helper class that implements UIResource so it is not added as a
-   * tab when an object of this class is added to the JTabbedPane.
-   */
-  private class ScrollingButton extends BasicArrowButton implements UIResource
-  {
-    /**
-     * Creates a ScrollingButton given the direction.
-     *
-     * @param dir The direction to point in.
-     */
-    public ScrollingButton(int dir)
-    {
-      super(dir);
-    }
-  }
-
-  /** The button that increments the current scroll location.
-   * This is package-private to avoid an accessor method.  */
-  transient ScrollingButton incrButton;
-
-  /** The button that decrements the current scroll location.
-   * This is package-private to avoid an accessor method.  */
-  transient ScrollingButton decrButton;
-
-  /** The viewport used to display the tabs.
-   * This is package-private to avoid an accessor method.  */
-  transient ScrollingViewport viewport;
-
-  /** The panel inside the viewport that paints the tabs.
-   * This is package-private to avoid an accessor method.  */
-  transient ScrollingPanel panel;
-
-  /** The starting visible tab in the run in SCROLL_TAB_MODE.
-   * This is package-private to avoid an accessor method.  */
-  transient int currentScrollLocation;
-
-  transient int currentScrollOffset;
-
-  /** A reusable rectangle. */
-  protected Rectangle calcRect;
-
-  /** An array of Rectangles keeping track of the tabs' area and position. */
-  protected Rectangle[] rects;
-
-  /** The insets around the content area. */
-  protected Insets contentBorderInsets;
-
-  /** The extra insets around the selected tab. */
-  protected Insets selectedTabPadInsets;
-
-  /** The insets around the tab area. */
-  protected Insets tabAreaInsets;
-
-  /** The insets around each and every tab. */
-  protected Insets tabInsets;
-
-  /**
-   * The outer bottom and right edge color for both the tab and content
-   * border.
-   */
-  protected Color darkShadow;
-
-  /** The color of the focus outline on the selected tab. */
-  protected Color focus;
-
-  /** FIXME: find a use for this. */
-  protected Color highlight;
-
-  /** The top and left edge color for both the tab and content border. */
-  protected Color lightHighlight;
-
-  /** The inner bottom and right edge color for the tab and content border. */
-  protected Color shadow;
-
-  /** The maximum tab height. */
-  protected int maxTabHeight;
-
-  /** The maximum tab width. */
-  protected int maxTabWidth;
-
-  /** The number of runs in the JTabbedPane. */
-  protected int runCount;
-
-  /** The index of the run that the selected index is in. */
-  protected int selectedRun;
-
-  /** The amount of space each run overlaps the previous by. */
-  protected int tabRunOverlay;
-
-  /** The gap between text and label */
-  protected int textIconGap;
-
-  /** This array keeps track of which tabs are in which run.
-   * <p>The value at index i denotes the index of the first tab in run i.</p>
-   * <p>If the value for any index (i > 0) is 0 then (i - 1) is the last
-   * run.</p>
-   */
-  protected int[] tabRuns;
-
-  /**
-   * Indicates if the layout of the tab runs is ok or not. This is package
-   * private to avoid a synthetic accessor method.
-   */
-  boolean tabRunsDirty;
-
-  /**
-   * This is the keystroke for moving down.
-   *
-   * @deprecated 1.3
-   */
-  protected KeyStroke downKey;
-
-  /**
-   * This is the keystroke for moving left.
-   *
-   * @deprecated 1.3
-   */
-  protected KeyStroke leftKey;
-
-  /**
-   * This is the keystroke for moving right.
-   *
-   * @deprecated 1.3
-   */
-  protected KeyStroke rightKey;
-
-  /**
-   * This is the keystroke for moving up.
-   *
-   * @deprecated 1.3
-   */
-  protected KeyStroke upKey;
-
-  /** The listener that listens for focus events. */
-  protected FocusListener focusListener;
-
-  /** The listener that listens for mouse events. */
-  protected MouseListener mouseListener;
-
-  /** The listener that listens for property change events. */
-  protected PropertyChangeListener propertyChangeListener;
-
-  /** The listener that listens for change events. */
-  protected ChangeListener tabChangeListener;
-
-  /** The tab pane that this UI paints. */
-  protected JTabbedPane tabPane;
-
-  /** The current layout manager for the tabPane.
-   * This is package-private to avoid an accessor method.  */
-  transient LayoutManager layoutManager;
-
-  /** The rectangle that describes the tab area's position and size.
-   * This is package-private to avoid an accessor method.  */
-  transient Rectangle tabAreaRect;
-
-  /** The rectangle that describes the content area's position and
-   * size.  This is package-private to avoid an accessor method.  */
-  transient Rectangle contentRect;
-
-  /**
-   * The index over which the mouse is currently moving.
-   */
-  private int rolloverTab;
-
-  /**
-   * Determines if tabs are painted opaque or not. This can be adjusted using
-   * the UIManager property 'TabbedPane.tabsOpaque'.
-   */
-  private boolean tabsOpaque;
-
-  /**
-   * The currently visible component.
-   */
-  private Component visibleComponent;
-
-  private Color selectedColor;
-
-  private Rectangle tempTextRect = new Rectangle();
-
-  private Rectangle tempIconRect = new Rectangle();
-
-  /**
-   * Creates a new BasicTabbedPaneUI object.
-   */
-  public BasicTabbedPaneUI()
-  {
-    super();
-    rects = new Rectangle[0];
-    tabRuns = new int[10];
-  }
-
-  /**
-   * This method creates a ScrollingButton that  points in the appropriate
-   * direction for an increasing button.
-   * This is package-private to avoid an accessor method.
-   *
-   * @return The increase ScrollingButton.
-   */
-  ScrollingButton createIncreaseButton()
-  {
-    if (incrButton == null)
-      incrButton = new ScrollingButton(SwingConstants.NORTH);
-    if (tabPane.getTabPlacement() == SwingConstants.TOP
-        || tabPane.getTabPlacement() == SwingConstants.BOTTOM)
-      incrButton.setDirection(SwingConstants.EAST);
-    else
-      incrButton.setDirection(SwingConstants.SOUTH);
-    return incrButton;
-  }
-
-  /**
-   * This method creates a ScrollingButton that points in the appropriate
-   * direction for a decreasing button.
-   * This is package-private to avoid an accessor method.
-   *
-   * @return The decrease ScrollingButton.
-   */
-  ScrollingButton createDecreaseButton()
-  {
-    if (decrButton == null)
-      decrButton = new ScrollingButton(SwingConstants.SOUTH);
-    if (tabPane.getTabPlacement() == SwingConstants.TOP
-        || tabPane.getTabPlacement() == SwingConstants.BOTTOM)
-      decrButton.setDirection(SwingConstants.WEST);
-    else
-      decrButton.setDirection(SwingConstants.NORTH);
-    return decrButton;
-  }
-
-  /**
-   * This method finds the point to set the view  position at given the index
-   * of a tab. The tab will be the first visible tab in the run.
-   * This is package-private to avoid an accessor method.
-   *
-   * @param index The index of the first visible tab.
-   *
-   * @return The position of the first visible tab.
-   */
-  Point findPointForIndex(int index)
-  {
-    int tabPlacement = tabPane.getTabPlacement();
-    int selectedIndex = tabPane.getSelectedIndex();
-    Insets insets = getSelectedTabPadInsets(tabPlacement);
-    int w = 0;
-    int h = 0;
-
-    if (tabPlacement == TOP || tabPlacement == BOTTOM)
-      {
-        if (index > 0)
-          {
-            w += rects[index - 1].x + rects[index - 1].width;
-            if (index > selectedIndex)
-              w -= insets.left + insets.right;
-          }
-      }
-
-    else
-      {
-        if (index > 0)
-          {
-            h += rects[index - 1].y + rects[index - 1].height;
-            if (index > selectedIndex)
-              h -= insets.top + insets.bottom;
-          }
-      }
-
-    Point p = new Point(w, h);
-    return p;
-  }
-
-  /** TabbedPanes in scrolling mode should use this method to
-   * scroll properly to the tab given by the index argument.
-   *
-   * @param index The tab to scroll to.
-   * @param placement The tab's placement.
-   */
-  final void scrollTab(int index, int placement)
-  {
-    int diff;
-    if (index >= 0 && tabPane.isEnabledAt(index))
-      {
-        // If the user clicked on the last tab and that one was
-        // only partially visible shift the scroll offset to make
-        // it completely visible.
-        switch (placement)
-          {
-            case JTabbedPane.TOP:
-            case JTabbedPane.BOTTOM:
-              if ((diff = rects[index].x
-                  + rects[index].width
-                  - decrButton.getX() - currentScrollOffset) > 0)
-                currentScrollOffset += diff;
-              else if ((diff = rects[index].x - currentScrollOffset) < 0)
-                {
-                  if (index == 0)
-                    currentScrollOffset = 0;
-                  else
-                    currentScrollOffset += diff;
-                }
-
-              currentScrollLocation = tabForCoordinate(tabPane,
-                                                       currentScrollOffset,
-                                                       rects[index].y);
-              break;
-            default:
-              if ((diff = rects[index].y + rects[index].height
-                  - decrButton.getY() - currentScrollOffset) > 0)
-                currentScrollOffset += diff;
-              else if ((diff = rects[index].y - currentScrollOffset) < 0)
-                {
-                  if (index == 0)
-                    currentScrollOffset = 0;
-                  else
-                    currentScrollOffset += diff;
-                }
-
-              currentScrollLocation = tabForCoordinate(tabPane,
-                                                       rects[index].x,
-                                                       currentScrollOffset);
-          }
-
-        updateViewPosition();
-        updateButtons();
-      }
-  }
-
-  /** Sets the enabled state of the increase and decrease button
-   * according to the current scrolling offset and tab pane width
-   * (or height in TOP/BOTTOM placement).
-   */
-  final void updateButtons()
-  {
-    int tc = tabPane.getTabCount();
-
-    // The increase button should be enabled as long as the
-    // right/bottom border of the last tab is under the left/top
-    // border of the decrease button.
-    switch (tabPane.getTabPlacement())
-    {
-      case JTabbedPane.BOTTOM:
-      case JTabbedPane.TOP:
-        incrButton.setEnabled(currentScrollLocation + 1 < tc
-                              && rects[tc-1].x + rects[tc-1].width
-                              - currentScrollOffset > decrButton.getX());
-        break;
-      default:
-        incrButton.setEnabled(currentScrollLocation + 1 < tc
-                              && rects[tc-1].y + rects[tc-1].height
-                              - currentScrollOffset > decrButton.getY());
-    }
-
-    // The decrease button is enabled when the tab pane is scrolled in any way.
-    decrButton.setEnabled(currentScrollOffset > 0);
-
-  }
-
-  /**
-   * Updates the position of the scrolling viewport's view
-   * according to the current scroll offset.
-   */
-  final void updateViewPosition()
-  {
-    Point p = viewport.getViewPosition();
-
-    // The unneeded coordinate must be set to zero
-    // in order to correctly handle placement changes.
-    switch (tabPane.getTabPlacement())
-    {
-      case JTabbedPane.LEFT:
-      case JTabbedPane.RIGHT:
-        p.x = 0;
-        p.y = currentScrollOffset;
-        break;
-      default:
-        p.x = currentScrollOffset;
-        p.y = 0;
-    }
-
-    viewport.setViewPosition(p);
-  }
-
-  /**
-   * This method creates a new BasicTabbedPaneUI.
-   *
-   * @param c The JComponent to create a UI for.
-   *
-   * @return A new BasicTabbedPaneUI.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicTabbedPaneUI();
-  }
-
-  /**
-   * This method installs the UI for the given JComponent.
-   *
-   * @param c The JComponent to install the UI for.
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    if (c instanceof JTabbedPane)
-      {
-        tabPane = (JTabbedPane) c;
-
-        installComponents();
-        installDefaults();
-        installListeners();
-        installKeyboardActions();
-
-        layoutManager = createLayoutManager();
-        tabPane.setLayout(layoutManager);
-      }
-  }
-
-  /**
-   * This method uninstalls the UI for the  given JComponent.
-   *
-   * @param c The JComponent to uninstall the UI for.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    layoutManager = null;
-
-    uninstallKeyboardActions();
-    uninstallListeners();
-    uninstallDefaults();
-    uninstallComponents();
-
-    tabPane = null;
-  }
-
-  /**
-   * This method creates the appropriate layout manager for the JTabbedPane's
-   * current tab layout policy. If the tab layout policy is
-   * SCROLL_TAB_LAYOUT, then all the associated components that need to be
-   * created will be done so now.
-   *
-   * @return A layout manager given the tab layout policy.
-   */
-  protected LayoutManager createLayoutManager()
-  {
-    if (tabPane.getTabLayoutPolicy() == JTabbedPane.WRAP_TAB_LAYOUT)
-      return new TabbedPaneLayout();
-    else
-      {
-        runCount = 1;
-        tabRuns[0] = 0;
-
-        incrButton = createIncreaseButton();
-        incrButton.addMouseListener(mouseListener);
-
-        decrButton = createDecreaseButton();
-        decrButton.addMouseListener(mouseListener);
-        decrButton.setEnabled(false);
-
-        panel = new ScrollingPanel();
-        panel.setSize(Integer.MAX_VALUE, Integer.MAX_VALUE);
-        panel.addMouseListener(mouseListener);
-        panel.addFocusListener(focusListener);
-
-        viewport = new ScrollingViewport();
-        viewport.setBackground(Color.LIGHT_GRAY);
-        viewport.setView(panel);
-        viewport.setLayout(null);
-
-        tabPane.add(incrButton);
-        tabPane.add(decrButton);
-        tabPane.add(viewport);
-
-        return new TabbedPaneScrollLayout();
-      }
-  }
-
-  /**
-   * This method installs components for this JTabbedPane.
-   */
-  protected void installComponents()
-  {
-    // Nothing to be done.
-  }
-
-  /**
-   * This method uninstalls components for this JTabbedPane.
-   */
-  protected void uninstallComponents()
-  {
-    if (incrButton != null)
-      tabPane.remove(incrButton);
-
-    if (decrButton != null)
-      tabPane.remove(decrButton);
-
-    if (viewport != null)
-      tabPane.remove(viewport);
-  }
-
-  /**
-   * This method installs defaults for the Look and Feel.
-   */
-  protected void installDefaults()
-  {
-    LookAndFeel.installColorsAndFont(tabPane, "TabbedPane.background",
-                                     "TabbedPane.foreground",
-                                     "TabbedPane.font");
-    tabPane.setOpaque(false);
-
-    lightHighlight = UIManager.getColor("TabbedPane.highlight");
-    highlight = UIManager.getColor("TabbedPane.light");
-
-    shadow = UIManager.getColor("TabbedPane.shadow");
-    darkShadow = UIManager.getColor("TabbedPane.darkShadow");
-
-    focus = UIManager.getColor("TabbedPane.focus");
-
-    textIconGap = UIManager.getInt("TabbedPane.textIconGap");
-    tabRunOverlay = UIManager.getInt("TabbedPane.tabRunOverlay");
-
-    tabInsets = UIManager.getInsets("TabbedPane.tabInsets");
-    selectedTabPadInsets
-      = UIManager.getInsets("TabbedPane.selectedTabPadInsets");
-    tabAreaInsets = UIManager.getInsets("TabbedPane.tabAreaInsets");
-    contentBorderInsets
-      = UIManager.getInsets("TabbedPane.contentBorderInsets");
-    tabsOpaque = UIManager.getBoolean("TabbedPane.tabsOpaque");
-
-    // Although 'TabbedPane.contentAreaColor' is not defined in the defaults
-    // of BasicLookAndFeel it is used by this class.
-    selectedColor = UIManager.getColor("TabbedPane.contentAreaColor");
-    if (selectedColor == null)
-      selectedColor = UIManager.getColor("control");
-
-    calcRect = new Rectangle();
-    tabRuns = new int[10];
-    tabAreaRect = new Rectangle();
-    contentRect = new Rectangle();
-  }
-
-  /**
-   * This method uninstalls defaults for the Look and Feel.
-   */
-  protected void uninstallDefaults()
-  {
-    calcRect = null;
-    tabAreaRect = null;
-    contentRect = null;
-    tabRuns = null;
-
-    tempIconRect = null;
-    tempTextRect = null;
-
-    contentBorderInsets = null;
-    tabAreaInsets = null;
-    selectedTabPadInsets = null;
-    tabInsets = null;
-
-    focus = null;
-    darkShadow = null;
-    shadow = null;
-    lightHighlight = null;
-    highlight = null;
-
-    selectedColor = null;
-  }
-
-  /**
-   * This method creates and installs the listeners for this UI.
-   */
-  protected void installListeners()
-  {
-    mouseListener = createMouseListener();
-    tabChangeListener = createChangeListener();
-    propertyChangeListener = createPropertyChangeListener();
-    focusListener = createFocusListener();
-
-    tabPane.addMouseListener(mouseListener);
-    tabPane.addChangeListener(tabChangeListener);
-    tabPane.addPropertyChangeListener(propertyChangeListener);
-    tabPane.addFocusListener(focusListener);
-  }
-
-  /**
-   * This method removes and nulls the listeners for this UI.
-   */
-  protected void uninstallListeners()
-  {
-    tabPane.removeFocusListener(focusListener);
-    tabPane.removePropertyChangeListener(propertyChangeListener);
-    tabPane.removeChangeListener(tabChangeListener);
-    tabPane.removeMouseListener(mouseListener);
-
-    if (incrButton != null)
-      incrButton.removeMouseListener(mouseListener);
-
-    if (decrButton != null)
-      decrButton.removeMouseListener(mouseListener);
-
-    if (panel != null)
-      {
-        panel.removeMouseListener(mouseListener);
-        panel.removeFocusListener(focusListener);
-      }
-
-    focusListener = null;
-    propertyChangeListener = null;
-    tabChangeListener = null;
-    mouseListener = null;
-  }
-
-  /**
-   * This method creates a new MouseListener.
-   *
-   * @return A new MouseListener.
-   */
-  protected MouseListener createMouseListener()
-  {
-    return new MouseHandler();
-  }
-
-  /**
-   * This method creates a new FocusListener.
-   *
-   * @return A new FocusListener.
-   */
-  protected FocusListener createFocusListener()
-  {
-    return new FocusHandler();
-  }
-
-  /**
-   * This method creates a new ChangeListener.
-   *
-   * @return A new ChangeListener.
-   */
-  protected ChangeListener createChangeListener()
-  {
-    return new TabSelectionHandler();
-  }
-
-  /**
-   * This method creates a new PropertyChangeListener.
-   *
-   * @return A new PropertyChangeListener.
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new PropertyChangeHandler();
-  }
-
-  /**
-   * This method installs keyboard actions for the JTabbedPane.
-   */
-  protected void installKeyboardActions()
-  {
-    InputMap keyMap = (InputMap) UIManager.get("TabbedPane.focusInputMap");
-    SwingUtilities.replaceUIInputMap(tabPane, JComponent.WHEN_FOCUSED, keyMap);
-
-    keyMap = (InputMap) UIManager.get("TabbedPane.ancestorInputMap");
-    SwingUtilities
-      .replaceUIInputMap(tabPane,
-                         JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT,
-                         keyMap);
-
-    ActionMap map = getActionMap();
-    SwingUtilities.replaceUIActionMap(tabPane, map);
-  }
-
-  /**
-   * This method uninstalls keyboard actions for the JTabbedPane.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    SwingUtilities.replaceUIActionMap(tabPane, null);
-    SwingUtilities.replaceUIInputMap(tabPane, JComponent.WHEN_FOCUSED, null);
-    SwingUtilities
-      .replaceUIInputMap(tabPane,
-                         JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT,
-                         null);
-  }
-
-  /**
-   * This method returns the minimum size of the JTabbedPane.
-   *
-   * @param c The JComponent to find a size for.
-   *
-   * @return The minimum size.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    return layoutManager.minimumLayoutSize(tabPane);
-  }
-
-  /**
-   * This method returns the maximum size of the JTabbedPane.
-   *
-   * @param c The JComponent to find a size for.
-   *
-   * @return The maximum size.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return new Dimension(Short.MAX_VALUE, Short.MAX_VALUE);
-  }
-
-  /**
-   * This method paints the JTabbedPane.
-   *
-   * @param g The Graphics object to paint with.
-   * @param c The JComponent to paint.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    if (!tabPane.isValid())
-      tabPane.validate();
-
-    if (tabPane.getTabCount() == 0)
-      return;
-
-    int index = tabPane.getSelectedIndex();
-    if (index < 0)
-      index = 0;
-
-    int tabPlacement = tabPane.getTabPlacement();
-
-    // Paint the tab area only in WRAP_TAB_LAYOUT Mode from this method
-    // because it is done through the ScrollingViewport.paint() method
-    // for the SCROLL_TAB_LAYOUT mode.
-    if (tabPane.getTabLayoutPolicy() == JTabbedPane.WRAP_TAB_LAYOUT)
-      {
-        g.setColor(highlight);
-        g.fillRect(tabAreaRect.x, tabAreaRect.y,
-                   tabAreaRect.width, tabAreaRect.height);
-        paintTabArea(g, tabPlacement, index);
-      }
-
-    paintContentBorder(g, tabPlacement, index);
-  }
-
-  /**
-   * This method paints the tab area. This includes painting the rectangles
-   * that make up the tabs.
-   *
-   * @param g The Graphics object to paint with.
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param selectedIndex The selected index.
-   */
-  protected void paintTabArea(Graphics g, int tabPlacement, int selectedIndex)
-  {
-    // Please note: the ordering of the painting is important.
-    // we WANT to paint the outermost run first and then work our way in.
-
-    // The following drawing code works for both tab layouts.
-    int tabCount = tabPane.getTabCount();
-
-    for (int i = runCount - 1; i >= 0; --i)
-      {
-        int start = tabRuns[i];
-        int next;
-        if (i == runCount - 1)
-          next = tabRuns[0];
-        else
-          next = tabRuns[i + 1];
-        int end = next != 0 ? next - 1 : tabCount - 1;
-        for (int j = start; j <= end; ++j)
-          {
-            if (j != selectedIndex)
-              {
-                paintTab(g, tabPlacement, rects, j,
-                         tempIconRect, tempTextRect);
-              }
-          }
-      }
-
-    // Paint selected tab in front of every other tab.
-    if (selectedIndex >= 0)
-      paintTab(g, tabPlacement, rects, selectedIndex,
-               tempIconRect, tempTextRect);
-  }
-
-  /**
-   * This method paints an individual tab.
-   *
-   * @param g The Graphics object to paint with.
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param rects The array of rectangles that keep the size and position of
-   *        the tabs.
-   * @param tabIndex The tab index to paint.
-   * @param iconRect The rectangle to use for the icon.
-   * @param textRect The rectangle to use for the text.
-   */
-  protected void paintTab(Graphics g, int tabPlacement, Rectangle[] rects,
-                          int tabIndex, Rectangle iconRect, Rectangle textRect)
-  {
-    Rectangle rect = rects[tabIndex];
-    boolean isSelected = tabIndex == tabPane.getSelectedIndex();
-    // Paint background if necessary.
-    if (tabsOpaque || tabPane.isOpaque())
-      {
-        paintTabBackground(g, tabPlacement, tabIndex, rect.x, rect.y,
-                           rect.width, rect.height, isSelected);
-      }
-
-    // Paint border.
-    paintTabBorder(g, tabPlacement, tabIndex, rect.x, rect.y, rect.width,
-                   rect.height, isSelected);
-
-    // Layout label.
-    FontMetrics fm = getFontMetrics();
-    Icon icon = getIconForTab(tabIndex);
-    String title = tabPane.getTitleAt(tabIndex);
-    layoutLabel(tabPlacement, fm, tabIndex, title, icon, rect, iconRect,
-                textRect, isSelected);
-    // Paint the text.
-    paintText(g, tabPlacement, tabPane.getFont(), fm, tabIndex, title,
-              textRect, isSelected);
-
-    // Paint icon if necessary.
-    paintIcon(g, tabPlacement, tabIndex, icon, iconRect, isSelected);
-
-    // Paint focus indicator.
-    paintFocusIndicator(g, tabPlacement, rects, tabIndex, iconRect, textRect,
-                        isSelected);
-  }
-
-  /**
-   * This method lays out the tab and finds the location to paint the  icon
-   * and text.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param metrics The font metrics for the font to paint with.
-   * @param tabIndex The tab index to paint.
-   * @param title The string painted.
-   * @param icon The icon painted.
-   * @param tabRect The tab bounds.
-   * @param iconRect The calculated icon bounds.
-   * @param textRect The calculated text bounds.
-   * @param isSelected Whether this tab is selected.
-   */
-  protected void layoutLabel(int tabPlacement, FontMetrics metrics,
-                             int tabIndex, String title, Icon icon,
-                             Rectangle tabRect, Rectangle iconRect,
-                             Rectangle textRect, boolean isSelected)
-  {
-    // Reset the icon and text rectangles, as the result is not specified
-    // when the locations are not (0,0).
-    textRect.x = 0;
-    textRect.y = 0;
-    textRect.width = 0;
-    textRect.height = 0;
-    iconRect.x = 0;
-    iconRect.y = 0;
-    iconRect.width = 0;
-    iconRect.height = 0;
-    SwingUtilities.layoutCompoundLabel(tabPane, metrics, title, icon,
-                                       SwingConstants.CENTER,
-                                       SwingConstants.CENTER,
-                                       SwingConstants.CENTER,
-                                       SwingConstants.RIGHT, tabRect,
-                                       iconRect, textRect, textIconGap);
-
-    int shiftX = getTabLabelShiftX(tabPlacement, tabIndex, isSelected);
-    int shiftY = getTabLabelShiftY(tabPlacement, tabIndex, isSelected);
-
-    iconRect.x += shiftX;
-    iconRect.y += shiftY;
-
-    textRect.x += shiftX;
-    textRect.y += shiftY;
-  }
-
-  /**
-   * This method paints the icon.
-   *
-   * @param g The Graphics object to paint.
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param tabIndex The tab index to paint.
-   * @param icon The icon to paint.
-   * @param iconRect The bounds of the icon.
-   * @param isSelected Whether this tab is selected.
-   */
-  protected void paintIcon(Graphics g, int tabPlacement, int tabIndex,
-                           Icon icon, Rectangle iconRect, boolean isSelected)
-  {
-    if (icon != null)
-      icon.paintIcon(tabPane, g, iconRect.x, iconRect.y);
-  }
-
-  /**
-   * This method paints the text for the given tab.
-   *
-   * @param g The Graphics object to paint with.
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param font The font to paint with.
-   * @param metrics The fontmetrics of the given font.
-   * @param tabIndex The tab index.
-   * @param title The string to paint.
-   * @param textRect The bounds of the string.
-   * @param isSelected Whether this tab is selected.
-   */
-  protected void paintText(Graphics g, int tabPlacement, Font font,
-                           FontMetrics metrics, int tabIndex, String title,
-                           Rectangle textRect, boolean isSelected)
-  {
-    g.setFont(font);
-    View textView = getTextViewForTab(tabIndex);
-    if (textView != null)
-      {
-        textView.paint(g, textRect);
-        return;
-      }
-
-    int ascent = metrics.getAscent();
-
-    int mnemIndex = tabPane.getDisplayedMnemonicIndexAt(tabIndex);
-    if (tabPane.isEnabled() && tabPane.isEnabledAt(tabIndex))
-      {
-        Color fg = tabPane.getForegroundAt(tabIndex);
-        if (isSelected && (fg instanceof UIResource))
-          {
-            Color selectionForeground =
-              UIManager.getColor("TabbedPane.selectionForeground");
-            if (selectionForeground != null)
-              fg = selectionForeground;
-          }
-        g.setColor(fg);
-
-        if (mnemIndex != -1)
-          BasicGraphicsUtils.drawStringUnderlineCharAt(g, title, mnemIndex,
-                                                       textRect.x,
-                                                       textRect.y + ascent);
-        else
-          g.drawString(title, textRect.x, textRect.y + ascent);
-      }
-    else
-      {
-        Color bg = tabPane.getBackgroundAt(tabIndex);
-        g.setColor(bg.brighter());
-        if (mnemIndex != -1)
-          BasicGraphicsUtils.drawStringUnderlineCharAt(g, title, mnemIndex,
-                                                       textRect.x, textRect.y
-                                                       + ascent);
-        else
-          g.drawString(title, textRect.x, textRect.y + ascent);
-
-        g.setColor(bg.darker());
-        if (mnemIndex != -1)
-          BasicGraphicsUtils.drawStringUnderlineCharAt(g, title, mnemIndex,
-                                                       textRect.x + 1,
-                                                       textRect.y + 1
-                                                       + ascent);
-        else
-          g.drawString(title, textRect.x + 1, textRect.y + 1 + ascent);
-      }
-  }
-
-  /**
-   * This method returns how much the label for the tab should shift in the X
-   * direction.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param tabIndex The tab index being painted.
-   * @param isSelected Whether this tab is selected.
-   *
-   * @return The amount the label should shift by in the X direction.
-   */
-  protected int getTabLabelShiftX(int tabPlacement, int tabIndex,
-                                  boolean isSelected)
-  {
-    switch (tabPlacement)
-    {
-      default:
-      case SwingUtilities.TOP:
-      case SwingUtilities.BOTTOM:
-        return 1;
-      case SwingUtilities.LEFT:
-        return (isSelected) ? -1 : 1;
-      case SwingUtilities.RIGHT:
-        return (isSelected) ? 1 : -1;
-    }
-  }
-
-  /**
-   * This method returns how much the label for the tab should shift in the Y
-   * direction.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param tabIndex The tab index being painted.
-   * @param isSelected Whether this tab is selected.
-   *
-   * @return The amount the label should shift by in the Y direction.
-   */
-  protected int getTabLabelShiftY(int tabPlacement, int tabIndex,
-                                  boolean isSelected)
-  {
-    switch (tabPlacement)
-    {
-      default:
-      case SwingUtilities.TOP:
-        return (isSelected) ? -1 : 1;
-      case SwingUtilities.BOTTOM:
-        return (isSelected) ? 1 : -1;
-      case SwingUtilities.LEFT:
-      case SwingUtilities.RIGHT:
-        return 0;
-    }
-  }
-
-  /**
-   * This method paints the focus rectangle around the selected tab.
-   *
-   * @param g The Graphics object to paint with.
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param rects The array of rectangles keeping track of size and position.
-   * @param tabIndex The tab index.
-   * @param iconRect The icon bounds.
-   * @param textRect The text bounds.
-   * @param isSelected Whether this tab is selected.
-   */
-  protected void paintFocusIndicator(Graphics g, int tabPlacement,
-                                     Rectangle[] rects, int tabIndex,
-                                     Rectangle iconRect, Rectangle textRect,
-                                     boolean isSelected)
-  {
-    if (tabPane.hasFocus() && isSelected)
-      {
-        Rectangle rect = rects[tabIndex];
-        // The focus rectangle.
-        int x;
-        int y;
-        int w;
-        int h;
-
-        g.setColor(focus);
-        switch (tabPlacement)
-          {
-          case LEFT:
-            x = rect.x + 3;
-            y = rect.y + 3;
-            w = rect.width - 5;
-            h = rect.height - 6;
-            break;
-          case RIGHT:
-            x = rect.x + 2;
-            y = rect.y + 3;
-            w = rect.width - 6;
-            h = rect.height - 5;
-            break;
-          case BOTTOM:
-            x = rect.x + 3;
-            y = rect.y + 2;
-            w = rect.width - 6;
-            h = rect.height - 5;
-            break;
-          case TOP:
-          default:
-            x = rect.x + 3;
-            y = rect.y + 3;
-            w = rect.width - 6;
-            h = rect.height - 5;
-          }
-
-        BasicGraphicsUtils.drawDashedRect(g, x, y, w, h);
-      }
-  }
-
-  /**
-   * This method paints the border for an individual tab.
-   *
-   * @param g The Graphics object to paint with.
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param tabIndex The tab index.
-   * @param x The x position of the tab.
-   * @param y The y position of the tab.
-   * @param w The width of the tab.
-   * @param h The height of the tab.
-   * @param isSelected Whether the tab is selected.
-   */
-  protected void paintTabBorder(Graphics g, int tabPlacement, int tabIndex,
-                                int x, int y, int w, int h, boolean isSelected)
-  {
-    Color saved = g.getColor();
-
-    switch (tabPlacement)
-    {
-      case SwingConstants.TOP:
-        g.setColor(shadow);
-        // Inner right line.
-        g.drawLine(x + w - 2, y + 2, x + w - 2, y + h);
-
-        g.setColor(darkShadow);
-        // Outer right line.
-        g.drawLine(x + w - 1, y + 2, x + w - 1, y + h);
-
-        // Upper right corner.
-        g.drawLine(x + w - 2, y + 1, x + w - 1, y + 2);
-
-        g.setColor(lightHighlight);
-
-        // Left line.
-        g.drawLine(x, y + 3, x, y + h);
-
-        // Upper line.
-        g.drawLine(x + 3, y, x + w - 3, y);
-
-        // Upper left corner.
-        g.drawLine(x, y + 2, x + 2, y);
-
-        break;
-      case SwingConstants.LEFT:
-        g.setColor(lightHighlight);
-        // Top line.
-        g.drawLine(x + 3, y, x + w - 1, y);
-
-        // Top left border.
-        g.drawLine(x + 2, y, x, y + 2);
-
-        // Left line.
-        g.drawLine(x, y + 3, x, y + h - 4);
-
-        // Bottom left corner.
-        g.drawLine(x, y + h - 3, x + 1, y + h - 2);
-
-        g.setColor(darkShadow);
-        // Outer bottom line.
-        g.drawLine(x + 2, y + h - 1, x + w - 1, y + h - 1);
-
-        g.setColor(shadow);
-        // Inner bottom line.
-        g.drawLine(x + 2, y + h - 2,  x + w - 1, y + h - 2);
-
-        break;
-      case SwingConstants.BOTTOM:
-        g.setColor(shadow);
-        // Inner right line.
-        g.drawLine(x + w - 2, y, x + w - 2, y + h - 2);
-
-        // Inner bottom line.
-        g.drawLine(x + 2, y + h - 1, x + w - 3, y + h - 1);
-
-        g.setColor(darkShadow);
-        // Outer right line.
-        g.drawLine(x + w - 1, y, x + w - 1, y + h - 3);
-
-        // Bottom right corner.
-        g.drawLine(x + w - 1, y + h - 2, x + w - 3, y + h);
-
-        // Bottom line.
-        g.drawLine(x + 2, y + h, x + w - 4, y + h);
-
-        g.setColor(lightHighlight);
-        // Left line.
-        g.drawLine(x, y, x, y + h - 3);
-
-        // Bottom left corner.
-        g.drawLine(x, y + h - 2, x + 1, y + h - 1);
-        break;
-      case SwingConstants.RIGHT:
-        g.setColor(lightHighlight);
-        // Top line.
-        g.drawLine(x, y, x + w - 3, y);
-
-        g.setColor(darkShadow);
-        // Top right corner.
-        g.drawLine(x + w - 2, y + 1, x + w - 1, y + 2);
-
-        // Outer right line.
-        g.drawLine(x + w - 1, y + 3, x + w - 1, y + h - 3);
-
-        // Bottom right corner.
-        g.drawLine(x + w - 2, y + h - 2, x + w - 3, y + h - 1);
-
-        // Bottom line.
-        g.drawLine(x, y + h - 1, x + w - 4, y + h - 1);
-
-        g.setColor(shadow);
-
-        // Inner right line.
-        g.drawLine(x + w - 2, y + 2, x + w - 2, y + h - 3);
-
-        // Inner bottom line.
-        g.drawLine(x, y + h - 2, x + w - 3, y + h - 2);
-
-        break;
-    }
-
-    g.setColor(saved);
-  }
-
-  /**
-   * This method paints the background for an individual tab.
-   *
-   * @param g The Graphics object to paint with.
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param tabIndex The tab index.
-   * @param x The x position of the tab.
-   * @param y The y position of the tab.
-   * @param w The width of the tab.
-   * @param h The height of the tab.
-   * @param isSelected Whether the tab is selected.
-   */
-  protected void paintTabBackground(Graphics g, int tabPlacement,
-                                    int tabIndex, int x, int y, int w, int h,
-                                    boolean isSelected)
-  {
-    Color saved = g.getColor();
-
-    if (isSelected)
-      g.setColor(selectedColor);
-    else
-      {
-        Color bg = tabPane.getBackgroundAt(tabIndex);
-        if (bg == null)
-          bg = Color.LIGHT_GRAY;
-        g.setColor(bg);
-      }
-
-    switch (tabPlacement)
-      {
-        case SwingConstants.TOP:
-          g.fillRect(x + 1, y + 1, w - 1, h - 1);
-          break;
-        case SwingConstants.BOTTOM:
-          g.fillRect(x, y, w - 1, h - 1);
-          break;
-        case SwingConstants.LEFT:
-          g.fillRect(x + 1, y + 1, w - 1, h - 2);
-          break;
-        case SwingConstants.RIGHT:
-          g.fillRect(x, y + 1, w - 1, h - 2);
-          break;
-      }
-
-    g.setColor(saved);
-  }
-
-  /**
-   * This method paints the border around the content area.
-   *
-   * @param g The Graphics object to paint with.
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param selectedIndex The index of the selected tab.
-   */
-  protected void paintContentBorder(Graphics g, int tabPlacement,
-                                    int selectedIndex)
-  {
-    int width = tabPane.getWidth();
-    int height = tabPane.getHeight();
-    Insets insets = tabPane.getInsets();
-
-    // Calculate coordinates of content area.
-    int x = insets.left;
-    int y = insets.top;
-    int w = width - insets.left - insets.right;
-    int h = height - insets.top - insets.bottom;
-
-    switch (tabPlacement)
-    {
-    case LEFT:
-      x += calculateTabAreaWidth(tabPlacement, runCount, maxTabWidth);
-      w -= x - insets.left;
-      break;
-    case RIGHT:
-      w -= calculateTabAreaWidth(tabPlacement, runCount, maxTabWidth);
-      break;
-    case BOTTOM:
-      h -= calculateTabAreaHeight(tabPlacement, runCount, maxTabHeight);
-      break;
-    case TOP:
-    default:
-      y += calculateTabAreaHeight(tabPlacement, runCount, maxTabHeight);
-      h -= y - insets.top;
-    }
-
-    // Fill background if necessary.
-    if (tabPane.isOpaque())
-      {
-        Color bg = UIManager.getColor("TabbedPane.contentAreaColor");
-        g.setColor(bg);
-        g.fillRect(x, y, w, h);
-      }
-
-    // Paint border.
-    paintContentBorderTopEdge(g, tabPlacement, selectedIndex, x, y, w, h);
-    paintContentBorderLeftEdge(g, tabPlacement, selectedIndex, x, y, w, h);
-    paintContentBorderBottomEdge(g, tabPlacement, selectedIndex, x, y, w, h);
-    paintContentBorderRightEdge(g, tabPlacement, selectedIndex, x, y, w, h);
-  }
-
-  /**
-   * This method paints the top edge of the content border.
-   *
-   * @param g The Graphics object to paint with.
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param selectedIndex The selected tab index.
-   * @param x The x coordinate for the content area.
-   * @param y The y coordinate for the content area.
-   * @param w The width of the content area.
-   * @param h The height of the content area.
-   */
-  protected void paintContentBorderTopEdge(Graphics g, int tabPlacement,
-                                           int selectedIndex, int x, int y,
-                                           int w, int h)
-  {
-    Color saved = g.getColor();
-    g.setColor(lightHighlight);
-
-    int startgap = rects[selectedIndex].x - currentScrollOffset;
-    int endgap = rects[selectedIndex].x + rects[selectedIndex].width
-                 - currentScrollOffset;
-
-    // Paint the highlight line with a gap if the tabs are at the top
-    // and the selected tab is inside the visible area.
-    if (tabPlacement == SwingConstants.TOP && startgap >= 0)
-      {
-        g.drawLine(x, y, startgap, y);
-        g.drawLine(endgap, y, x + w - 1, y);
-
-        g.setColor(selectedColor);
-        g.drawLine(startgap, y, endgap - 1, y);
-      }
-    else
-      g.drawLine(x, y, x + w, y);
-
-    g.setColor(selectedColor);
-    g.drawLine(x, y + 1, x + w - 1, y + 1);
-    g.drawLine(x, y + 2, x + w - 1, y + 2);
-
-    g.setColor(saved);
-  }
-
-  /**
-   * This method paints the left edge of the content border.
-   *
-   * @param g The Graphics object to paint with.
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param selectedIndex The selected tab index.
-   * @param x The x coordinate for the content area.
-   * @param y The y coordinate for the content area.
-   * @param w The width of the content area.
-   * @param h The height of the content area.
-   */
-  protected void paintContentBorderLeftEdge(Graphics g, int tabPlacement,
-                                            int selectedIndex, int x, int y,
-                                            int w, int h)
-  {
-    Color saved = g.getColor();
-    g.setColor(lightHighlight);
-
-    int startgap = rects[selectedIndex].y - currentScrollOffset;
-    int endgap = rects[selectedIndex].y + rects[selectedIndex].height
-                 - currentScrollOffset;
-
-    if (tabPlacement == SwingConstants.LEFT && startgap >= 0)
-      {
-        g.drawLine(x, y, x, startgap);
-        g.drawLine(x, endgap, x, y + h - 1);
-
-        g.setColor(selectedColor);
-        g.drawLine(x, startgap, x, endgap - 1);
-      }
-    else
-      g.drawLine(x, y, x, y + h - 1);
-
-    g.setColor(selectedColor);
-    g.drawLine(x + 1, y + 1, x + 1, y + h - 4);
-
-    g.setColor(saved);
-  }
-
-  /**
-   * This method paints the bottom edge of the content border.
-   *
-   * @param g The Graphics object to paint with.
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param selectedIndex The selected tab index.
-   * @param x The x coordinate for the content area.
-   * @param y The y coordinate for the content area.
-   * @param w The width of the content area.
-   * @param h The height of the content area.
-   */
-  protected void paintContentBorderBottomEdge(Graphics g, int tabPlacement,
-                                              int selectedIndex, int x, int y,
-                                              int w, int h)
-  {
-    Color saved = g.getColor();
-
-    int startgap = rects[selectedIndex].x - currentScrollOffset;
-    int endgap = rects[selectedIndex].x + rects[selectedIndex].width
-                 - currentScrollOffset;
-
-    if (tabPlacement == SwingConstants.BOTTOM && startgap >= 0)
-      {
-        g.setColor(shadow);
-        g.drawLine(x + 1, y + h - 2, startgap, y + h - 2);
-        g.drawLine(endgap, y + h - 2, x + w - 2, y + h - 2);
-
-        g.setColor(darkShadow);
-        g.drawLine(x, y + h - 1, startgap , y + h - 1);
-        g.drawLine(endgap, y + h - 1, x + w - 1, y + h - 1);
-
-        g.setColor(selectedColor);
-        g.drawLine(startgap, y + h - 1, endgap - 1, y + h - 1);
-        g.drawLine(startgap, y + h - 2, endgap - 1, y + h - 2);
-      }
-    else
-      {
-        g.setColor(shadow);
-        g.drawLine(x + 1, y + h - 2, x + w - 1, y + h - 2);
-        g.setColor(darkShadow);
-        g.drawLine(x, y + h - 1, x + w - 1, y + h - 1);
-      }
-
-    g.setColor(selectedColor);
-    g.drawLine(x + 1, y + h - 3, x + w - 2, y + h - 3);
-
-    g.setColor(saved);
-  }
-
-  /**
-   * This method paints the right edge of the content border.
-   *
-   * @param g The Graphics object to paint with.
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param selectedIndex The selected tab index.
-   * @param x The x coordinate for the content area.
-   * @param y The y coordinate for the content area.
-   * @param w The width of the content area.
-   * @param h The height of the content area.
-   */
-  protected void paintContentBorderRightEdge(Graphics g, int tabPlacement,
-                                             int selectedIndex, int x, int y,
-                                             int w, int h)
-  {
-    Color saved = g.getColor();
-    int startgap = rects[selectedIndex].y - currentScrollOffset;
-    int endgap = rects[selectedIndex].y + rects[selectedIndex].height
-                 - currentScrollOffset;
-
-    if (tabPlacement == SwingConstants.RIGHT && startgap >= 0)
-      {
-        g.setColor(shadow);
-        g.drawLine(x + w - 2, y + 1, x + w - 2, startgap);
-        g.drawLine(x + w - 2, endgap, x + w - 2, y + h - 2);
-
-        g.setColor(darkShadow);
-        g.drawLine(x + w - 1, y, x + w - 1, startgap);
-        g.drawLine(x + w - 1, endgap, x + w - 1, y + h - 2);
-
-        g.setColor(selectedColor);
-        g.drawLine(x + w - 2, startgap, x + w - 2, endgap - 1);
-        g.drawLine(x + w - 1, startgap, x + w - 1, endgap - 1);
-      }
-    else
-      {
-        g.setColor(shadow);
-        g.drawLine(x + w - 2, y + 1, x + w - 2, y + h - 2);
-        g.setColor(darkShadow);
-        g.drawLine(x + w - 1, y, x + w - 1, y + h - 2);
-      }
-
-    g.setColor(selectedColor);
-    g.drawLine(x + w - 3, y + 1, x + w - 3, y + h - 4);
-
-    g.setColor(saved);
-  }
-
-  /**
-   * <p>This method returns the bounds of a tab for the given index
-   * and shifts it by the current scrolling offset if the tabbed
-   * pane is in scrolling tab layout mode.</p>
-   *
-   * <p>Subclassses should retrievs a tab's bounds by this method
-   * if they want to find out whether the tab is currently visible.</p>
-   *
-   * @param pane The JTabbedPane.
-   * @param i The index to look for.
-   *
-   * @return The bounds of the tab with the given index.
-   */
-  public Rectangle getTabBounds(JTabbedPane pane, int i)
-  {
-    // Need to re-layout container if tab does not exist.
-    if (i >= rects.length)
-      layoutManager.layoutContainer(pane);
-
-    // Properly shift coordinates if scrolling has taken
-    // place.
-    if (pane.getTabLayoutPolicy() == JTabbedPane.SCROLL_TAB_LAYOUT)
-      {
-        Rectangle r = new Rectangle(rects[i]);
-
-        switch(pane.getTabPlacement())
-        {
-          case SwingConstants.TOP:
-          case SwingConstants.BOTTOM:
-            r.x -= currentScrollOffset;
-            break;
-          default:
-            r.y -= currentScrollOffset;
-        }
-
-        return r;
-      }
-
-    return rects[i];
-  }
-
-  /**
-   * This method returns the number of runs.
-   *
-   * @param pane The JTabbedPane.
-   *
-   * @return The number of runs.
-   */
-  public int getTabRunCount(JTabbedPane pane)
-  {
-    return runCount;
-  }
-
-  /**
-   * This method returns the tab index given a coordinate.
-   *
-   * @param pane The JTabbedPane.
-   * @param x The x coordinate.
-   * @param y The y coordinate.
-   *
-   * @return The tab index that the coordinate lands in.
-   */
-  public int tabForCoordinate(JTabbedPane pane, int x, int y)
-  {
-    // Note: This code is tab layout mode agnostic.
-    if (! tabPane.isValid())
-      tabPane.validate();
-
-    int tabCount = tabPane.getTabCount();
-
-    // If the user clicked outside of any tab rect the
-    // selection should not change.
-    int index = tabPane.getSelectedIndex();
-    for (int i = 0; i < tabCount; ++i)
-      {
-        if (rects[i].contains(x, y))
-          {
-            index = i;
-            break;
-          }
-      }
-
-    return index;
-  }
-
-  /**
-   * <p>This method returns the tab bounds in the given rectangle.</p>
-   *
-   * <p>The returned rectangle will be shifted by the current scroll
-   * offset if the tabbed pane is in scrolling tab layout mode.</p>.
-   *
-   * @param tabIndex The index to get bounds for.
-   * @param dest The rectangle to store bounds in.
-   *
-   * @return The rectangle passed in.
-   */
-  protected Rectangle getTabBounds(int tabIndex, Rectangle dest)
-  {
-    dest.setBounds(getTabBounds(tabPane, tabIndex));
-    return dest;
-  }
-
-  /**
-   * This method returns the component that is shown in  the content area.
-   *
-   * @return The component that is shown in the content area.
-   */
-  protected Component getVisibleComponent()
-  {
-    return visibleComponent;
-  }
-
-  /**
-   * This method sets the visible component.
-   *
-   * @param component The component to be set visible.
-   */
-  protected void setVisibleComponent(Component component)
-  {
-    // Make old component invisible.
-    if (visibleComponent != null && visibleComponent != component
-        && visibleComponent.getParent() == tabPane)
-      {
-        visibleComponent.setVisible(false);
-      }
-
-    // Make new component visible.
-    if (component != null && ! component.isVisible())
-      {
-        component.setVisible(true);
-      }
-    visibleComponent = component;
-  }
-
-  /**
-   * This method assures that enough rectangles are created given the
-   * tabCount. The old array is copied to the  new one.
-   *
-   * @param tabCount The number of tabs.
-   */
-  protected void assureRectsCreated(int tabCount)
-  {
-    if (rects.length < tabCount)
-      {
-        Rectangle[] old = rects;
-        rects = new Rectangle[tabCount];
-        System.arraycopy(old, 0, rects, 0, old.length);
-        for (int i = old.length; i < rects.length; i++)
-          rects[i] = new Rectangle();
-      }
-  }
-
-  /**
-   * This method expands the tabRuns array to give it more room. The old array
-   * is copied to the new one.
-   */
-  protected void expandTabRunsArray()
-  {
-    // This method adds another 10 index positions to the tabRuns array.
-    if (tabRuns == null)
-      tabRuns = new int[10];
-    else
-      {
-        int[] newRuns = new int[tabRuns.length + 10];
-        System.arraycopy(tabRuns, 0, newRuns, 0, tabRuns.length);
-        tabRuns = newRuns;
-      }
-  }
-
-  /**
-   * This method returns which run a particular tab belongs to.
-   *
-   * @param tabCount The number of tabs.
-   * @param tabIndex The tab to find.
-   *
-   * @return The tabRuns index that it belongs to.
-   */
-  protected int getRunForTab(int tabCount, int tabIndex)
-  {
-    if (runCount == 1 && tabIndex < tabCount && tabIndex >= 0)
-      return 0;
-    for (int i = 0; i < runCount; i++)
-      {
-        int first = lastTabInRun(tabCount, getPreviousTabRun(i)) + 1;
-        if (first == tabCount)
-          first = 0;
-        int last = lastTabInRun(tabCount, i);
-        if (last >= tabIndex && first <= tabIndex)
-          return i;
-      }
-    return -1;
-  }
-
-  /**
-   * This method returns the index of the last tab in  a run.
-   *
-   * @param tabCount The number of tabs.
-   * @param run The run to check.
-   *
-   * @return The last tab in the given run.
-   */
-  protected int lastTabInRun(int tabCount, int run)
-  {
-    int lastTab;
-    if (runCount == 1)
-      lastTab = tabCount - 1;
-    else
-      {
-        int nextRun;
-        if (run == runCount - 1)
-          nextRun = 0;
-        else
-          nextRun = run + 1;
-
-        if (tabRuns[nextRun] == 0)
-          lastTab = tabCount - 1;
-        else
-          lastTab = tabRuns[nextRun] - 1;
-      }
-    return lastTab;
-  }
-
-  /**
-   * This method returns the tab run overlay.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   *
-   * @return The tab run overlay.
-   */
-  protected int getTabRunOverlay(int tabPlacement)
-  {
-    return tabRunOverlay;
-  }
-
-  /**
-   * This method returns the tab run indent. It is used in WRAP_TAB_LAYOUT and
-   * makes each tab run start indented by a certain amount.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param run The run to get indent for.
-   *
-   * @return The amount a run should be indented.
-   */
-  protected int getTabRunIndent(int tabPlacement, int run)
-  {
-    return 0;
-  }
-
-  /**
-   * This method returns whether a tab run should be padded.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param run The run to check.
-   *
-   * @return Whether the given run should be padded.
-   */
-  protected boolean shouldPadTabRun(int tabPlacement, int run)
-  {
-    return true;
-  }
-
-  /**
-   * This method returns whether the tab runs should be rotated.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   *
-   * @return Whether runs should be rotated.
-   */
-  protected boolean shouldRotateTabRuns(int tabPlacement)
-  {
-    return true;
-  }
-
-  /**
-   * This method returns an icon for the tab. If the tab is disabled, it
-   * should return the disabledIcon. If it is enabled, then it should return
-   * the default icon.
-   *
-   * @param tabIndex The tab index to get an icon for.
-   *
-   * @return The icon for the tab index.
-   */
-  protected Icon getIconForTab(int tabIndex)
-  {
-    if (tabPane.isEnabledAt(tabIndex))
-      return tabPane.getIconAt(tabIndex);
-    else
-      return tabPane.getDisabledIconAt(tabIndex);
-  }
-
-  /**
-   * This method returns a view that can paint the text for the label.
-   *
-   * @param tabIndex The tab index to get a view for.
-   *
-   * @return The view for the tab index.
-   */
-  protected View getTextViewForTab(int tabIndex)
-  {
-    // FIXME: When the label contains HTML this should return something
-    // non-null.
-    return null;
-  }
-
-  /**
-   * This method returns the tab height, including insets, for the given index
-   * and fontheight.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param tabIndex The index of the tab to calculate.
-   * @param fontHeight The font height.
-   *
-   * @return This tab's height.
-   */
-  protected int calculateTabHeight(int tabPlacement, int tabIndex,
-                                   int fontHeight)
-  {
-    // FIXME: Handle HTML by using the view (see getTextViewForTab).
-
-    int height = fontHeight;
-    Icon icon = getIconForTab(tabIndex);
-    Insets tabInsets = getTabInsets(tabPlacement, tabIndex);
-    if (icon != null)
-      height = Math.max(height, icon.getIconHeight());
-    height += tabInsets.top + tabInsets.bottom + 2;
-    return height;
-  }
-
-  /**
-   * This method returns the max tab height.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   *
-   * @return The maximum tab height.
-   */
-  protected int calculateMaxTabHeight(int tabPlacement)
-  {
-    maxTabHeight = 0;
-
-    FontMetrics fm = getFontMetrics();
-    int fontHeight = fm.getHeight();
-
-    for (int i = 0; i < tabPane.getTabCount(); i++)
-      maxTabHeight = Math.max(calculateTabHeight(tabPlacement, i, fontHeight),
-                              maxTabHeight);
-
-    return maxTabHeight;
-  }
-
-  /**
-   * This method calculates the tab width, including insets, for the given tab
-   * index and font metrics.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param tabIndex The tab index to calculate for.
-   * @param metrics The font's metrics.
-   *
-   * @return The tab width for the given index.
-   */
-  protected int calculateTabWidth(int tabPlacement, int tabIndex,
-                                  FontMetrics metrics)
-  {
-    Icon icon = getIconForTab(tabIndex);
-    Insets insets = getTabInsets(tabPlacement, tabIndex);
-
-    int width = insets.bottom + insets.right + 3;
-    if (icon != null)
-      {
-        width += icon.getIconWidth() + textIconGap;
-      }
-
-    View v = getTextViewForTab(tabIndex);
-    if (v != null)
-      width += v.getPreferredSpan(View.X_AXIS);
-    else
-      {
-        String label = tabPane.getTitleAt(tabIndex);
-        width += metrics.stringWidth(label);
-      }
-    return width;
-  }
-
-  /**
-   * This method calculates the max tab width.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   *
-   * @return The maximum tab width.
-   */
-  protected int calculateMaxTabWidth(int tabPlacement)
-  {
-    maxTabWidth = 0;
-
-    FontMetrics fm = getFontMetrics();
-
-    for (int i = 0; i < tabPane.getTabCount(); i++)
-      maxTabWidth = Math.max(calculateTabWidth(tabPlacement, i, fm),
-                             maxTabWidth);
-
-    return maxTabWidth;
-  }
-
-  /**
-   * This method calculates the tab area height, including insets, for the
-   * given amount of runs and tab height.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param horizRunCount The number of runs.
-   * @param maxTabHeight The max tab height.
-   *
-   * @return The tab area height.
-   */
-  protected int calculateTabAreaHeight(int tabPlacement, int horizRunCount,
-                                       int maxTabHeight)
-  {
-    Insets insets = getTabAreaInsets(tabPlacement);
-    int tabAreaHeight = horizRunCount * maxTabHeight
-                        - (horizRunCount - 1)
-                        * getTabRunOverlay(tabPlacement);
-
-    tabAreaHeight += insets.top + insets.bottom;
-
-    return tabAreaHeight;
-  }
-
-  /**
-   * This method calculates the tab area width, including insets, for the
-   * given amount of runs and tab width.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param vertRunCount The number of runs.
-   * @param maxTabWidth The max tab width.
-   *
-   * @return The tab area width.
-   */
-  protected int calculateTabAreaWidth(int tabPlacement, int vertRunCount,
-                                      int maxTabWidth)
-  {
-    Insets insets = getTabAreaInsets(tabPlacement);
-    int tabAreaWidth = vertRunCount * maxTabWidth
-                       - (vertRunCount - 1)
-                       * getTabRunOverlay(tabPlacement);
-
-    tabAreaWidth += insets.left + insets.right;
-
-    return tabAreaWidth;
-  }
-
-  /**
-   * This method returns the tab insets appropriately rotated.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param tabIndex The tab index.
-   *
-   * @return The tab insets for the given index.
-   */
-  protected Insets getTabInsets(int tabPlacement, int tabIndex)
-  {
-    return tabInsets;
-  }
-
-  /**
-   * This method returns the selected tab pad insets appropriately rotated.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   *
-   * @return The selected tab pad insets.
-   */
-  protected Insets getSelectedTabPadInsets(int tabPlacement)
-  {
-    Insets target = new Insets(0, 0, 0, 0);
-    rotateInsets(selectedTabPadInsets, target, tabPlacement);
-    return target;
-  }
-
-  /**
-   * This method returns the tab area insets appropriately rotated.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   *
-   * @return The tab area insets.
-   */
-  protected Insets getTabAreaInsets(int tabPlacement)
-  {
-    Insets target = new Insets(0, 0, 0, 0);
-    rotateInsets(tabAreaInsets, target, tabPlacement);
-    return target;
-  }
-
-  /**
-   * This method returns the content border insets appropriately rotated.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   *
-   * @return The content border insets.
-   */
-  protected Insets getContentBorderInsets(int tabPlacement)
-  {
-    Insets target = new Insets(0, 0, 0, 0);
-    rotateInsets(contentBorderInsets, target, tabPlacement);
-    return target;
-  }
-
-  /**
-   * This method returns the fontmetrics for the font of the JTabbedPane.
-   *
-   * @return The font metrics for the JTabbedPane.
-   */
-  protected FontMetrics getFontMetrics()
-  {
-    FontMetrics fm = tabPane.getFontMetrics(tabPane.getFont());
-    return fm;
-  }
-
-  /**
-   * This method navigates from the selected tab into the given direction. As
-   * a result, a new tab will be selected (if possible).
-   *
-   * @param direction The direction to navigate in.
-   */
-  protected void navigateSelectedTab(int direction)
-  {
-    int tabPlacement = tabPane.getTabPlacement();
-    if (tabPlacement == SwingConstants.TOP
-        || tabPlacement == SwingConstants.BOTTOM)
-      {
-        if (direction == SwingConstants.WEST)
-          selectPreviousTabInRun(tabPane.getSelectedIndex());
-        else if (direction == SwingConstants.EAST)
-          selectNextTabInRun(tabPane.getSelectedIndex());
-
-        else
-          {
-            int offset = getTabRunOffset(tabPlacement, tabPane.getTabCount(),
-                                         tabPane.getSelectedIndex(),
-                                         (tabPlacement == SwingConstants.TOP)
-                                         ? direction == SwingConstants.NORTH
-                                         : direction == SwingConstants.SOUTH);
-            selectAdjacentRunTab(tabPlacement, tabPane.getSelectedIndex(),
-                                 offset);
-          }
-      }
-    if (tabPlacement == SwingConstants.LEFT
-        || tabPlacement == SwingConstants.RIGHT)
-      {
-        if (direction == SwingConstants.NORTH)
-          selectPreviousTabInRun(tabPane.getSelectedIndex());
-        else if (direction == SwingConstants.SOUTH)
-          selectNextTabInRun(tabPane.getSelectedIndex());
-        else
-          {
-            int offset = getTabRunOffset(tabPlacement, tabPane.getTabCount(),
-                                         tabPane.getSelectedIndex(),
-                                         (tabPlacement == SwingConstants.LEFT)
-                                         ? direction == SwingConstants.WEST
-                                         : direction == SwingConstants.EAST);
-            selectAdjacentRunTab(tabPlacement, tabPane.getSelectedIndex(),
-                                 offset);
-          }
-      }
-  }
-
-  /**
-   * This method selects the next tab in the run.
-   *
-   * @param current The current selected index.
-   */
-  protected void selectNextTabInRun(int current)
-  {
-    current = getNextTabIndexInRun(tabPane.getTabCount(),
-                                   current);
-
-    if (tabPane.getTabLayoutPolicy() == JTabbedPane.SCROLL_TAB_LAYOUT)
-      scrollTab(current, tabPane.getTabPlacement());
-
-    tabPane.setSelectedIndex(current);
-  }
-
-  /**
-   * This method selects the previous tab in the run.
-   *
-   * @param current The current selected index.
-   */
-  protected void selectPreviousTabInRun(int current)
-  {
-    current = getPreviousTabIndexInRun(tabPane.getTabCount(),
-                                       current);
-
-    if (tabPane.getTabLayoutPolicy() == JTabbedPane.SCROLL_TAB_LAYOUT)
-      scrollTab(current, tabPane.getTabPlacement());
-
-    tabPane.setSelectedIndex(current);
-  }
-
-  /**
-   * This method selects the next tab (regardless of runs).
-   *
-   * @param current The current selected index.
-   */
-  protected void selectNextTab(int current)
-  {
-    current = getNextTabIndex(current);
-
-    if (tabPane.getTabLayoutPolicy() == JTabbedPane.SCROLL_TAB_LAYOUT)
-      scrollTab(current, tabPane.getTabPlacement());
-
-    tabPane.setSelectedIndex(current);
-  }
-
-  /**
-   * This method selects the previous tab (regardless of runs).
-   *
-   * @param current The current selected index.
-   */
-  protected void selectPreviousTab(int current)
-  {
-    current = getPreviousTabIndex(current);
-
-    if (tabPane.getTabLayoutPolicy() == JTabbedPane.SCROLL_TAB_LAYOUT)
-      scrollTab(current, tabPane.getTabPlacement());
-
-    tabPane.setSelectedIndex(current);
-  }
-
-  /**
-   * This method selects the correct tab given an offset from the current tab
-   * index. If the tab placement is TOP or BOTTOM, the offset will be in the
-   * y direction, otherwise, it will be in the x direction. A new coordinate
-   * will be found by adding the offset to the current location of the tab.
-   * The tab that the new location will be selected.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param tabIndex The tab to start from.
-   * @param offset The coordinate offset.
-   */
-  protected void selectAdjacentRunTab(int tabPlacement, int tabIndex,
-                                      int offset)
-  {
-    int x = rects[tabIndex].x + rects[tabIndex].width / 2;
-    int y = rects[tabIndex].y + rects[tabIndex].height / 2;
-
-    switch (tabPlacement)
-    {
-    case SwingConstants.TOP:
-    case SwingConstants.BOTTOM:
-      y += offset;
-      break;
-    case SwingConstants.RIGHT:
-    case SwingConstants.LEFT:
-      x += offset;
-      break;
-    }
-
-    int index = tabForCoordinate(tabPane, x, y);
-    if (index != -1)
-      {
-        if (tabPane.getTabLayoutPolicy() == JTabbedPane.SCROLL_TAB_LAYOUT)
-          scrollTab(index, tabPlacement);
-        tabPane.setSelectedIndex(index);
-      }
-  }
-
-  // This method is called when you press up/down to cycle through tab runs.
-  // it returns the distance (between the two runs' x/y position.
-  // where one run is the current selected run and the other run is the run in the
-  // direction of the scroll (dictated by the forward flag)
-  // the offset is an absolute value of the difference
-
-  /**
-   * This method calculates the offset distance for use in
-   * selectAdjacentRunTab. The offset returned will be a difference in the y
-   * coordinate between the run in  the desired direction and the current run
-   * (for tabPlacement in TOP or BOTTOM). Use x coordinate for LEFT and
-   * RIGHT.
-   *
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param tabCount The number of tabs.
-   * @param tabIndex The starting index.
-   * @param forward If forward, the run in the desired direction will be the
-   *        next run.
-   *
-   * @return The offset between the two runs.
-   */
-  protected int getTabRunOffset(int tabPlacement, int tabCount, int tabIndex,
-                                boolean forward)
-  {
-    int currRun = getRunForTab(tabCount, tabIndex);
-    int offset;
-    int nextRun = forward ? getNextTabRun(currRun) : getPreviousTabRun(currRun);
-    if (tabPlacement == SwingConstants.TOP
-        || tabPlacement == SwingConstants.BOTTOM)
-      offset = rects[lastTabInRun(tabCount, nextRun)].y
-               - rects[lastTabInRun(tabCount, currRun)].y;
-    else
-      offset = rects[lastTabInRun(tabCount, nextRun)].x
-               - rects[lastTabInRun(tabCount, currRun)].x;
-
-    return offset;
-  }
-
-  /**
-   * This method returns the previous tab index.
-   *
-   * @param base The index to start from.
-   *
-   * @return The previous tab index.
-   */
-  protected int getPreviousTabIndex(int base)
-  {
-    base--;
-    if (base < 0)
-      return tabPane.getTabCount() - 1;
-    return base;
-  }
-
-  /**
-   * This method returns the next tab index.
-   *
-   * @param base The index to start from.
-   *
-   * @return The next tab index.
-   */
-  protected int getNextTabIndex(int base)
-  {
-    base++;
-    if (base == tabPane.getTabCount())
-      return 0;
-    return base;
-  }
-
-  /**
-   * This method returns the next tab index in the run. If the next index is
-   * out of this run, it will return the starting tab index for the run.
-   *
-   * @param tabCount The number of tabs.
-   * @param base The index to start from.
-   *
-   * @return The next tab index in the run.
-   */
-  protected int getNextTabIndexInRun(int tabCount, int base)
-  {
-    int index = getNextTabIndex(base);
-    int run = getRunForTab(tabCount, base);
-    if (base == lastTabInRun(tabCount, run))
-      index = (run > 0)
-              ? lastTabInRun(tabCount, getPreviousTabRun(run)) + 1
-              : 0;
-
-    return index;
-  }
-
-  /**
-   * This method returns the previous tab index in the run. If the previous
-   * index is out of this run, it will return the last index for the run.
-   *
-   * @param tabCount The number of tabs.
-   * @param base The index to start from.
-   *
-   * @return The previous tab index in the run.
-   */
-  protected int getPreviousTabIndexInRun(int tabCount, int base)
-  {
-    int index = getPreviousTabIndex(base);
-    int run = getRunForTab(tabCount, base);
-    if (index == lastTabInRun(tabCount, getPreviousTabRun(run)))
-      index = lastTabInRun(tabCount, run);
-
-    return index;
-  }
-
-  /**
-   * This method returns the index of the previous run.
-   *
-   * @param baseRun The run to start from.
-   *
-   * @return The index of the previous run.
-   */
-  protected int getPreviousTabRun(int baseRun)
-  {
-    if (getTabRunCount(tabPane) == 1)
-      return 1;
-
-    int prevRun = --baseRun;
-    if (prevRun < 0)
-      prevRun = getTabRunCount(tabPane) - 1;
-    return prevRun;
-  }
-
-  /**
-   * This method returns the index of the next run.
-   *
-   * @param baseRun The run to start from.
-   *
-   * @return The index of the next run.
-   */
-  protected int getNextTabRun(int baseRun)
-  {
-    if (getTabRunCount(tabPane) == 1)
-      return 1;
-
-    int nextRun = ++baseRun;
-    if (nextRun == getTabRunCount(tabPane))
-      nextRun = 0;
-    return nextRun;
-  }
-
-  /**
-   * This method rotates the insets given a direction to rotate them in.
-   * Target placement should be one of TOP, LEFT, BOTTOM, RIGHT. The  rotated
-   * insets will be stored in targetInsets. Passing in TOP as  the direction
-   * does nothing. Passing in LEFT switches top and left, right and bottom.
-   * Passing in BOTTOM switches top and bottom. Passing in RIGHT switches top
-   * for left, left for bottom, bottom for right, and right for top.
-   *
-   * @param topInsets The reference insets.
-   * @param targetInsets An Insets object to store the new insets.
-   * @param targetPlacement The rotation direction.
-   */
-  protected static void rotateInsets(Insets topInsets, Insets targetInsets,
-                                     int targetPlacement)
-  {
-    // Sun's version will happily throw an NPE if params are null,
-    // so I won't check it either.
-    switch (targetPlacement)
-    {
-    default:
-    case SwingConstants.TOP:
-      targetInsets.top = topInsets.top;
-      targetInsets.left = topInsets.left;
-      targetInsets.right = topInsets.right;
-      targetInsets.bottom = topInsets.bottom;
-      break;
-    case SwingConstants.LEFT:
-      targetInsets.left = topInsets.top;
-      targetInsets.top = topInsets.left;
-      targetInsets.right = topInsets.bottom;
-      targetInsets.bottom = topInsets.right;
-      break;
-    case SwingConstants.BOTTOM:
-      targetInsets.top = topInsets.bottom;
-      targetInsets.bottom = topInsets.top;
-      targetInsets.left = topInsets.left;
-      targetInsets.right = topInsets.right;
-      break;
-    case SwingConstants.RIGHT:
-      targetInsets.top = topInsets.left;
-      targetInsets.left = topInsets.bottom;
-      targetInsets.bottom = topInsets.right;
-      targetInsets.right = topInsets.top;
-      break;
-    }
-  }
-
-  ActionMap getActionMap()
-  {
-    ActionMap map = (ActionMap) UIManager.get("TabbedPane.actionMap");
-
-    if (map == null) // first time here
-      {
-        map = createActionMap();
-        if (map != null)
-          UIManager.put("TabbedPane.actionMap", map);
-      }
-    return map;
-  }
-
-  ActionMap createActionMap()
-  {
-    ActionMap map = new ActionMapUIResource();
-
-    map.put("navigatePageDown", new NavigatePageDownAction());
-    map.put("navigatePageUp", new NavigatePageUpAction());
-    map.put("navigateDown",
-            new NavigateAction("navigateDown", SwingConstants.SOUTH));
-
-    map.put("navigateUp",
-            new NavigateAction("navigateUp", SwingConstants.NORTH));
-
-    map.put("navigateLeft",
-            new NavigateAction("navigateLeft", SwingConstants.WEST));
-
-    map.put("navigateRight",
-            new NavigateAction("navigateRight", SwingConstants.EAST));
-
-    map.put("requestFocusForVisibleComponent",
-            new RequestFocusForVisibleComponentAction());
-    map.put("requestFocus", new RequestFocusAction());
-
-    return map;
-  }
-
-  /**
-   * Sets the tab which should be highlighted when in rollover mode. And
-   * <code>index</code> of <code>-1</code> means that the rollover tab
-   * is deselected (i.e. the mouse is outside of the tabarea).
-   *
-   * @param index the index of the tab that is under the mouse, <code>-1</code>
-   *        for no tab
-   *
-   * @since 1.5
-   */
-  protected void setRolloverTab(int index)
-  {
-    rolloverTab = index;
-  }
-
-  /**
-   * Retunrs the index of the tab over which the mouse is currently moving,
-   * or <code>-1</code> for no tab.
-   *
-   * @return the index of the tab over which the mouse is currently moving,
-   *         or <code>-1</code> for no tab
-   *
-   * @since 1.5
-   */
-  protected int getRolloverTab()
-  {
-    return rolloverTab;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicTableHeaderUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicTableHeaderUI.java
deleted file mode 100644
index 7ff234e..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicTableHeaderUI.java
+++ /dev/null
@@ -1,566 +0,0 @@
-/* BasicTableHeaderUI.java --
-   Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Component;
-import java.awt.Cursor;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseEvent;
-
-import javax.swing.CellRendererPane;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.Timer;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
-import javax.swing.event.MouseInputListener;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.TableHeaderUI;
-import javax.swing.table.JTableHeader;
-import javax.swing.table.TableCellRenderer;
-import javax.swing.table.TableColumn;
-import javax.swing.table.TableColumnModel;
-
-/**
- * Basic pluggable look and feel interface for JTableHeader.
- */
-public class BasicTableHeaderUI extends TableHeaderUI
-{
-  /**
-   * The width of the space (in both direction) around the column boundary,
-   * where mouse cursor changes shape into "resize"
-   */
-  static int COLUMN_BOUNDARY_TOLERANCE = 3;
-
-  public static ComponentUI createUI(JComponent h)
-  {
-    return new BasicTableHeaderUI();
-  }
-
-  /**
-   * The table header that is using this interface.
-   */
-  protected JTableHeader header;
-
-  /**
-   * The mouse input listener, responsible for mouse manipulations with
-   * the table header.
-   */
-  protected MouseInputListener mouseInputListener;
-
-  /**
-   * Paint the header cell.
-   */
-  protected CellRendererPane rendererPane;
-
-  /**
-   * The header cell border.
-   */
-  private Border cellBorder;
-
-  /**
-   * Original mouse cursor prior to resizing.
-   */
-  private Cursor originalCursor;
-
-  /**
-   * If not null, one of the columns is currently being dragged.
-   */
-  Rectangle draggingHeaderRect;
-
-  /**
-   * Handles column movement and rearrangement by mouse. The same instance works
-   * both as mouse listener and the mouse motion listner.
-   */
-  public class MouseInputHandler
-      implements MouseInputListener
-  {
-    /**
-     * If true, the cursor is being already shown in the alternative "resize"
-     * shape.
-     */
-    boolean showingResizeCursor;
-
-    /**
-     * The position, from where the cursor is dragged during resizing. Double
-     * purpose field (absolute value during resizing and relative offset during
-     * column dragging).
-     */
-    int draggingFrom = - 1;
-
-    /**
-     * The number of the column being dragged.
-     */
-    int draggingColumnNumber;
-
-    /**
-     * The previous preferred width of the column.
-     */
-    int prevPrefWidth = - 1;
-
-    /**
-     * The timer to coalesce column resizing events.
-     */
-    Timer timer;
-
-    /**
-     * Returns without action, part of the MouseInputListener interface.
-     */
-    public void mouseClicked(MouseEvent e)
-    {
-      // Nothing to do.
-    }
-
-    /**
-     * If being in the resizing mode, handle resizing.
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      TableColumn resizeIt = header.getResizingColumn();
-      if (resizeIt != null && header.getResizingAllowed())
-        {
-          // The timer is intialised on demand.
-          if (timer == null)
-            {
-              // The purpose of timer is to coalesce events. If the queue
-              // is free, the repaint event is fired immediately.
-              timer = new Timer(1, new ActionListener()
-              {
-                public void actionPerformed(ActionEvent e)
-                {
-                  header.getTable().doLayout();
-                }
-              });
-              timer.setRepeats(false);
-              timer.setCoalesce(true);
-            }
-          resizeIt.setPreferredWidth(prevPrefWidth + e.getX() - draggingFrom);
-          timer.restart();
-        }
-      else if (draggingHeaderRect != null && header.getReorderingAllowed())
-        {
-          draggingHeaderRect.x = e.getX() + draggingFrom;
-          header.repaint();
-        }
-    }
-
-    /**
-     * Returns without action, part of the MouseInputListener interface.
-     */
-    public void mouseEntered(MouseEvent e)
-    {
-      // Nothing to do.
-    }
-
-    /**
-     * Reset drag information of the column resizing.
-     */
-    public void mouseExited(MouseEvent e)
-    {
-      // Nothing to do.
-    }
-
-    /**
-     * Change the mouse cursor if the mouse if above the column boundary.
-     */
-    public void mouseMoved(MouseEvent e)
-    {
-      // When dragging, the functionality is handled by the mouseDragged.
-      if (e.getButton() == 0 && header.getResizingAllowed())
-        {
-          TableColumnModel model = header.getColumnModel();
-          int n = model.getColumnCount();
-          if (n < 2)
-            // It must be at least two columns to have at least one boundary.
-            // Otherwise, nothing to do.
-            return;
-
-          boolean onBoundary = false;
-
-          int x = e.getX();
-          int a = x - COLUMN_BOUNDARY_TOLERANCE;
-          int b = x + COLUMN_BOUNDARY_TOLERANCE;
-
-          int p = 0;
-
-          Scan: for (int i = 0; i < n - 1; i++)
-            {
-              p += model.getColumn(i).getWidth();
-
-              if (p >= a && p <= b)
-                {
-                  TableColumn column = model.getColumn(i);
-                  onBoundary = true;
-
-                  draggingFrom = x;
-                  prevPrefWidth = column.getWidth();
-                  header.setResizingColumn(column);
-                  break Scan;
-                }
-            }
-
-          if (onBoundary != showingResizeCursor)
-            {
-              // Change the cursor shape, if needed.
-              if (onBoundary)
-                {
-
-                  originalCursor = header.getCursor();
-                  if (p < x)
-                    header.setCursor(Cursor.getPredefinedCursor(
-                        Cursor.W_RESIZE_CURSOR));
-                  else
-                    header.setCursor(Cursor.getPredefinedCursor(
-                        Cursor.E_RESIZE_CURSOR));
-                }
-              else
-                {
-                  header.setCursor(originalCursor);
-                  header.setResizingColumn(null);
-                }
-
-              showingResizeCursor = onBoundary;
-            }
-        }
-    }
-
-    /**
-     * Starts the dragging/resizing procedure.
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      if (header.getResizingAllowed())
-        {
-          TableColumn resizingColumn = header.getResizingColumn();
-          if (resizingColumn != null)
-            {
-              resizingColumn.setPreferredWidth(resizingColumn.getWidth());
-              return;
-            }
-        }
-
-      if (header.getReorderingAllowed())
-        {
-          TableColumnModel model = header.getColumnModel();
-          int n = model.getColumnCount();
-          if (n < 2)
-            // It must be at least two columns to change the column location.
-            return;
-
-          boolean onBoundary = false;
-
-          int x = e.getX();
-          int p = 0;
-          int col = - 1;
-
-          Scan: for (int i = 0; i < n; i++)
-            {
-              p += model.getColumn(i).getWidth();
-              if (p > x)
-                {
-                  col = i;
-                  break Scan;
-                }
-            }
-          if (col < 0)
-            return;
-
-          TableColumn dragIt = model.getColumn(col);
-          header.setDraggedColumn(dragIt);
-
-          draggingFrom = (p - dragIt.getWidth()) - x;
-          draggingHeaderRect = new Rectangle(header.getHeaderRect(col));
-          draggingColumnNumber = col;
-        }
-    }
-
-    /**
-     * Set all column preferred width to the current width to prevend abrupt
-     * width changes during the next resize.
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      if (header.getResizingColumn() != null && header.getResizingAllowed())
-        endResizing();
-      if (header.getDraggedColumn() != null &&  header.getReorderingAllowed())
-        endDragging(e);
-    }
-
-    /**
-     * Stop resizing session.
-     */
-    void endResizing()
-    {
-      TableColumnModel model = header.getColumnModel();
-      int n = model.getColumnCount();
-      if (n > 2)
-        {
-          TableColumn c;
-          for (int i = 0; i < n; i++)
-            {
-              c = model.getColumn(i);
-              c.setPreferredWidth(c.getWidth());
-            }
-        }
-      header.setResizingColumn(null);
-      showingResizeCursor = false;
-      if (timer != null)
-        timer.stop();
-      header.setCursor(originalCursor);
-    }
-
-    /**
-     * Stop the dragging session.
-     *
-     * @param e the "mouse release" mouse event, needed to determing the final
-     *          location for the dragged column.
-     */
-    void endDragging(MouseEvent e)
-    {
-      header.setDraggedColumn(null);
-      draggingHeaderRect = null;
-
-      TableColumnModel model = header.getColumnModel();
-
-      // Find where have we dragged the column.
-      int x = e.getX();
-      int p = 0;
-
-      int col = model.getColumnCount() - 1;
-      int n = model.getColumnCount();
-
-      // This loop does not find the column if the mouse if out of the
-      // right boundary of the table header. Then we make this column the
-      // rightmost column.
-      Scan: for (int i = 0; i < n; i++)
-        {
-          p += model.getColumn(i).getWidth();
-          if (p > x)
-            {
-              col = i;
-              break Scan;
-            }
-        }
-
-      header.getTable().moveColumn(draggingColumnNumber, col);
-    }
-  }
-
-  /**
-   * Create and return the mouse input listener.
-   *
-   * @return the mouse listener ({@link MouseInputHandler}, if not overridden.
-   */
-  protected MouseInputListener createMouseInputListener()
-  {
-    return new MouseInputHandler();
-  }
-
-  /**
-   * Construct a new BasicTableHeaderUI, create mouse listeners.
-   */
-  public BasicTableHeaderUI()
-  {
-    mouseInputListener = createMouseInputListener();
-  }
-
-  protected void installDefaults()
-  {
-    LookAndFeel.installColorsAndFont(header, "TableHeader.background",
-                                     "TableHeader.foreground",
-                                     "TableHeader.font");
-    cellBorder = UIManager.getBorder("TableHeader.cellBorder");
-  }
-
-  protected void installKeyboardActions()
-  {
-    // AFAICS, the RI does nothing here.
-  }
-
-  /**
-   * Add the mouse listener and the mouse motion listener to the table
-   * header. The listeners support table column resizing and rearrangement
-   * by mouse.
-   */
-  protected void installListeners()
-  {
-    header.addMouseListener(mouseInputListener);
-    header.addMouseMotionListener(mouseInputListener);
-  }
-
-  public void installUI(JComponent c)
-  {
-    header = (JTableHeader) c;
-    rendererPane = new CellRendererPane();
-    installDefaults();
-    installKeyboardActions();
-    installListeners();
-  }
-
-  protected void uninstallDefaults()
-  {
-    header.setBackground(null);
-    header.setForeground(null);
-    header.setFont(null);
-  }
-
-  protected void uninstallKeyboardActions()
-  {
-    // AFAICS, the RI does nothing here.
-  }
-
-  /**
-   * Remove the previously installed listeners.
-   */
-  protected void uninstallListeners()
-  {
-    header.removeMouseListener(mouseInputListener);
-    header.removeMouseMotionListener(mouseInputListener);
-  }
-
-  public void uninstallUI(JComponent c)
-  {
-    uninstallListeners();
-    uninstallKeyboardActions();
-    uninstallDefaults();
-  }
-
-  /**
-   * Repaint the table header.
-   */
-  public void paint(Graphics gfx, JComponent c)
-  {
-    TableColumnModel cmod = header.getColumnModel();
-    int ncols = cmod.getColumnCount();
-    if (ncols == 0)
-      return;
-
-    Rectangle clip = gfx.getClipBounds();
-    TableCellRenderer defaultRend = header.getDefaultRenderer();
-
-    for (int i = 0; i < ncols; ++i)
-      {
-        Rectangle bounds = header.getHeaderRect(i);
-        if (bounds.intersects(clip))
-          {
-            Rectangle oldClip = gfx.getClipBounds();
-            TableColumn col = cmod.getColumn(i);
-            TableCellRenderer rend = col.getHeaderRenderer();
-            if (rend == null)
-              rend = defaultRend;
-            Object val = col.getHeaderValue();
-            Component comp = rend.getTableCellRendererComponent(header.getTable(),
-                                                                val,
-                                                                false, // isSelected
-                                                                false, // isFocused
-                                                                -1, i);
-            // FIXME: The following settings should be performed in
-            // rend.getTableCellRendererComponent().
-            comp.setFont(header.getFont());
-            comp.setBackground(header.getBackground());
-            comp.setForeground(header.getForeground());
-            if (comp instanceof JComponent)
-              ((JComponent) comp).setBorder(cellBorder);
-            rendererPane.paintComponent(gfx, comp, header, bounds.x, bounds.y,
-                                        bounds.width, bounds.height);
-          }
-      }
-
-    // This displays a running rectangle that is much simplier than the total
-    // animation, as it is seen in Sun's application.
-    // TODO animate the collumn dragging like in Sun's jre.
-    if (draggingHeaderRect != null)
-      {
-        gfx.setColor(header.getForeground());
-        gfx.drawRect(draggingHeaderRect.x, draggingHeaderRect.y + 2,
-            draggingHeaderRect.width - 1, draggingHeaderRect.height - 6);
-      }
-  }
-
-  /**
-   * Get the preferred header size.
-   *
-   * @param ignored unused
-   *
-   * @return the preferred size of the associated header.
-   */
-  public Dimension getPreferredSize(JComponent ignored)
-  {
-    TableColumnModel cmod = header.getColumnModel();
-    TableCellRenderer defaultRend = header.getDefaultRenderer();
-    int ncols = cmod.getColumnCount();
-    Dimension ret = new Dimension(0, 0);
-    int spacing = 0;
-
-    if (header.getTable() != null
-        && header.getTable().getIntercellSpacing() != null)
-      spacing = header.getTable().getIntercellSpacing().width;
-
-    for (int i = 0; i < ncols; ++i)
-      {
-        TableColumn col = cmod.getColumn(i);
-        TableCellRenderer rend = col.getHeaderRenderer();
-        if (rend == null)
-          rend = defaultRend;
-        Object val = col.getHeaderValue();
-        Component comp = rend.getTableCellRendererComponent(header.getTable(),
-                                                            val,
-                                                            false, // isSelected
-                                                            false, // isFocused
-                                                            -1, i);
-        comp.setFont(header.getFont());
-        comp.setBackground(header.getBackground());
-        comp.setForeground(header.getForeground());
-        if (comp instanceof JComponent)
-          ((JComponent) comp).setBorder(cellBorder);
-
-        Dimension d = comp.getPreferredSize();
-        ret.width += spacing;
-        ret.height = Math.max(d.height, ret.height);
-      }
-    ret.width = cmod.getTotalColumnWidth();
-    return ret;
-  }
-
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicTableUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicTableUI.java
deleted file mode 100644
index f5a4bcb..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicTableUI.java
+++ /dev/null
@@ -1,1410 +0,0 @@
-/* BasicTableUI.java --
-   Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.ComponentOrientation;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
-import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.ActionMap;
-import javax.swing.CellRendererPane;
-import javax.swing.DefaultCellEditor;
-import javax.swing.DefaultListSelectionModel;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
-import javax.swing.JTable;
-import javax.swing.ListSelectionModel;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingUtilities;
-import javax.swing.TransferHandler;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.MouseInputListener;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.TableUI;
-import javax.swing.table.TableCellEditor;
-import javax.swing.table.TableCellRenderer;
-import javax.swing.table.TableColumn;
-import javax.swing.table.TableColumnModel;
-import javax.swing.table.TableModel;
-
-public class BasicTableUI extends TableUI
-{
-  public static ComponentUI createUI(JComponent comp)
-  {
-    return new BasicTableUI();
-  }
-
-  protected FocusListener focusListener;
-  protected KeyListener keyListener;
-  protected MouseInputListener  mouseInputListener;
-  protected CellRendererPane rendererPane;
-  protected JTable table;
-
-  /** The normal cell border. */
-  Border cellBorder;
-
-  /** The action bound to KeyStrokes. */
-  TableAction action;
-
-  /**
-   * Listens for changes to the tables properties.
-   */
-  private PropertyChangeListener propertyChangeListener;
-
-  /**
-   * Handles key events for the JTable. Key events should be handled through
-   * the InputMap/ActionMap mechanism since JDK1.3. This class is only there
-   * for backwards compatibility.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  public class KeyHandler implements KeyListener
-  {
-
-    /**
-     * Receives notification that a key has been pressed and released.
-     * Activates the editing session for the focused cell by pressing the
-     * character keys.
-     *
-     * @param event the key event
-     */
-    public void keyTyped(KeyEvent event)
-    {
-      // Key events should be handled through the InputMap/ActionMap mechanism
-      // since JDK1.3. This class is only there for backwards compatibility.
-
-      // Editor activation is a specific kind of response to ''any''
-      // character key. Hence it is handled here.
-      if (!table.isEditing() && table.isEnabled())
-        {
-          int r = table.getSelectedRow();
-          int c = table.getSelectedColumn();
-          if (table.isCellEditable(r, c))
-            table.editCellAt(r, c);
-        }
-    }
-
-    /**
-     * Receives notification that a key has been pressed.
-     *
-     * @param event the key event
-     */
-    public void keyPressed(KeyEvent event)
-    {
-      // Key events should be handled through the InputMap/ActionMap mechanism
-      // since JDK1.3. This class is only there for backwards compatibility.
-    }
-
-    /**
-     * Receives notification that a key has been released.
-     *
-     * @param event the key event
-     */
-    public void keyReleased(KeyEvent event)
-    {
-      // Key events should be handled through the InputMap/ActionMap mechanism
-      // since JDK1.3. This class is only there for backwards compatibility.
-    }
-  }
-
-  public class FocusHandler implements FocusListener
-  {
-    public void focusGained(FocusEvent e)
-    {
-      // The only thing that is affected by a focus change seems to be
-      // how the lead cell is painted. So we repaint this cell.
-      repaintLeadCell();
-    }
-
-    public void focusLost(FocusEvent e)
-    {
-      // The only thing that is affected by a focus change seems to be
-      // how the lead cell is painted. So we repaint this cell.
-      repaintLeadCell();
-    }
-
-    /**
-     * Repaints the lead cell in response to a focus change, to refresh
-     * the display of the focus indicator.
-     */
-    private void repaintLeadCell()
-    {
-      int rowCount = table.getRowCount();
-      int columnCount = table.getColumnCount();
-      int rowLead = table.getSelectionModel().getLeadSelectionIndex();
-      int columnLead = table.getColumnModel().getSelectionModel().
-                                                       getLeadSelectionIndex();
-      if (rowLead >= 0 && rowLead < rowCount && columnLead >= 0
-          && columnLead < columnCount)
-        {
-          Rectangle dirtyRect = table.getCellRect(rowLead, columnLead, false);
-          table.repaint(dirtyRect);
-        }
-    }
-  }
-
-  public class MouseInputHandler implements MouseInputListener
-  {
-    Point begin, curr;
-
-    private void updateSelection(boolean controlPressed)
-    {
-      // Update the rows
-      int lo_row = table.rowAtPoint(begin);
-      int hi_row  = table.rowAtPoint(curr);
-      ListSelectionModel rowModel = table.getSelectionModel();
-      if (lo_row != -1 && hi_row != -1)
-        {
-          if (controlPressed && rowModel.getSelectionMode()
-              != ListSelectionModel.SINGLE_SELECTION)
-            rowModel.addSelectionInterval(lo_row, hi_row);
-          else
-            rowModel.setSelectionInterval(lo_row, hi_row);
-        }
-
-      // Update the columns
-      int lo_col = table.columnAtPoint(begin);
-      int hi_col = table.columnAtPoint(curr);
-      ListSelectionModel colModel = table.getColumnModel().
-        getSelectionModel();
-      if (lo_col != -1 && hi_col != -1)
-        {
-          if (controlPressed && colModel.getSelectionMode() !=
-              ListSelectionModel.SINGLE_SELECTION)
-            colModel.addSelectionInterval(lo_col, hi_col);
-          else
-            colModel.setSelectionInterval(lo_col, hi_col);
-        }
-    }
-
-    /**
-     * For the double click, start the cell editor.
-     */
-    public void mouseClicked(MouseEvent e)
-    {
-      Point p = e.getPoint();
-      int row = table.rowAtPoint(p);
-      int col = table.columnAtPoint(p);
-      if (table.isCellEditable(row, col))
-        {
-          // If the cell editor is the default editor, we request the
-          // number of the required clicks from it. Otherwise,
-          // require two clicks (double click).
-          TableCellEditor editor = table.getCellEditor(row, col);
-          if (editor instanceof DefaultCellEditor)
-            {
-              DefaultCellEditor ce = (DefaultCellEditor) editor;
-              if (e.getClickCount() < ce.getClickCountToStart())
-                return;
-            }
-          table.editCellAt(row, col);
-        }
-    }
-
-    public void mouseDragged(MouseEvent e)
-    {
-      if (table.isEnabled())
-        {
-          curr = new Point(e.getX(), e.getY());
-          updateSelection(e.isControlDown());
-        }
-    }
-
-    public void mouseEntered(MouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    public void mouseExited(MouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    public void mouseMoved(MouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    public void mousePressed(MouseEvent e)
-    {
-      if (table.isEnabled())
-        {
-          ListSelectionModel rowModel = table.getSelectionModel();
-          ListSelectionModel colModel = table.getColumnModel().getSelectionModel();
-          int rowLead = rowModel.getLeadSelectionIndex();
-          int colLead = colModel.getLeadSelectionIndex();
-
-          begin = new Point(e.getX(), e.getY());
-          curr = new Point(e.getX(), e.getY());
-          //if control is pressed and the cell is already selected, deselect it
-          if (e.isControlDown() && table.isCellSelected(
-              table.rowAtPoint(begin), table.columnAtPoint(begin)))
-            {
-              table.getSelectionModel().
-              removeSelectionInterval(table.rowAtPoint(begin),
-                                      table.rowAtPoint(begin));
-              table.getColumnModel().getSelectionModel().
-              removeSelectionInterval(table.columnAtPoint(begin),
-                                      table.columnAtPoint(begin));
-            }
-          else
-            updateSelection(e.isControlDown());
-
-          // If we were editing, but the moved to another cell, stop editing
-          if (rowLead != rowModel.getLeadSelectionIndex() ||
-              colLead != colModel.getLeadSelectionIndex())
-            if (table.isEditing())
-              table.editingStopped(new ChangeEvent(e));
-
-          // Must request focus explicitly.
-          table.requestFocusInWindow();
-        }
-    }
-
-    public void mouseReleased(MouseEvent e)
-    {
-      if (table.isEnabled())
-        {
-          begin = null;
-          curr = null;
-        }
-    }
-  }
-
-  /**
-   * Listens for changes to the model property of the JTable and adjusts some
-   * settings.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  private class PropertyChangeHandler implements PropertyChangeListener
-  {
-    /**
-     * Receives notification if one of the JTable's properties changes.
-     *
-     * @param ev the property change event
-     */
-    public void propertyChange(PropertyChangeEvent ev)
-    {
-      String propName = ev.getPropertyName();
-      if (propName.equals("model"))
-        {
-          ListSelectionModel rowSel = table.getSelectionModel();
-          rowSel.clearSelection();
-          ListSelectionModel colSel = table.getColumnModel().getSelectionModel();
-          colSel.clearSelection();
-          TableModel model = table.getModel();
-
-          // Adjust lead and anchor selection indices of the row and column
-          // selection models.
-          if (model.getRowCount() > 0)
-            {
-              rowSel.setAnchorSelectionIndex(0);
-              rowSel.setLeadSelectionIndex(0);
-            }
-          else
-            {
-              rowSel.setAnchorSelectionIndex(-1);
-              rowSel.setLeadSelectionIndex(-1);
-            }
-          if (model.getColumnCount() > 0)
-            {
-              colSel.setAnchorSelectionIndex(0);
-              colSel.setLeadSelectionIndex(0);
-            }
-          else
-            {
-              colSel.setAnchorSelectionIndex(-1);
-              colSel.setLeadSelectionIndex(-1);
-            }
-        }
-    }
-  }
-
-  protected FocusListener createFocusListener()
-  {
-    return new FocusHandler();
-  }
-
-  protected MouseInputListener createMouseInputListener()
-  {
-    return new MouseInputHandler();
-  }
-
-
-  /**
-   * Creates and returns a key listener for the JTable.
-   *
-   * @return a key listener for the JTable
-   */
-  protected KeyListener createKeyListener()
-  {
-    return new KeyHandler();
-  }
-
-  /**
-   * Return the maximum size of the table. The maximum height is the row
-    * height times the number of rows. The maximum width is the sum of
-    * the maximum widths of each column.
-    *
-    *  @param comp the component whose maximum size is being queried,
-    *  this is ignored.
-    *  @return a Dimension object representing the maximum size of the table,
-    *  or null if the table has no elements.
-   */
-  public Dimension getMaximumSize(JComponent comp)
-  {
-    int maxTotalColumnWidth = 0;
-    for (int i = 0; i < table.getColumnCount(); i++)
-      maxTotalColumnWidth += table.getColumnModel().getColumn(i).getMaxWidth();
-
-    return new Dimension(maxTotalColumnWidth, getHeight());
-  }
-
-  /**
-   * Return the minimum size of the table. The minimum height is the row
-    * height times the number of rows. The minimum width is the sum of
-    * the minimum widths of each column.
-    *
-    *  @param comp the component whose minimum size is being queried,
-    *  this is ignored.
-    *  @return a Dimension object representing the minimum size of the table,
-    *  or null if the table has no elements.
-   */
-  public Dimension getMinimumSize(JComponent comp)
-  {
-    int minTotalColumnWidth = 0;
-    for (int i = 0; i < table.getColumnCount(); i++)
-      minTotalColumnWidth += table.getColumnModel().getColumn(i).getMinWidth();
-
-    return new Dimension(minTotalColumnWidth, getHeight());
-  }
-
-  /**
-   * Returns the preferred size for the table of that UI.
-   *
-   * @param comp ignored, the <code>table</code> field is used instead
-   *
-   * @return the preferred size for the table of that UI
-   */
-  public Dimension getPreferredSize(JComponent comp)
-  {
-    int prefTotalColumnWidth = 0;
-    TableColumnModel tcm = table.getColumnModel();
-
-    for (int i = 0; i < tcm.getColumnCount(); i++)
-      {
-        TableColumn col = tcm.getColumn(i);
-        prefTotalColumnWidth += col.getPreferredWidth();
-      }
-
-    return new Dimension(prefTotalColumnWidth, getHeight());
-  }
-
-  /**
-   * Returns the table height. This helper method is used by
-   * {@link #getMinimumSize(JComponent)}, {@link #getPreferredSize(JComponent)}
-   * and {@link #getMaximumSize(JComponent)} to determine the table height.
-   *
-   * @return the table height
-   */
-  private int getHeight()
-  {
-    int height = 0;
-    int rowCount = table.getRowCount();
-    if (rowCount > 0 && table.getColumnCount() > 0)
-      {
-        Rectangle r = table.getCellRect(rowCount - 1, 0, true);
-        height = r.y + r.height;
-      }
-    return height;
-  }
-
-  protected void installDefaults()
-  {
-    LookAndFeel.installColorsAndFont(table, "Table.background",
-                                     "Table.foreground", "Table.font");
-    table.setGridColor(UIManager.getColor("Table.gridColor"));
-    table.setSelectionForeground(UIManager.getColor("Table.selectionForeground"));
-    table.setSelectionBackground(UIManager.getColor("Table.selectionBackground"));
-    table.setOpaque(true);
-  }
-
-  /**
-   * Installs keyboard actions on the table.
-   */
-  protected void installKeyboardActions()
-  {
-    // Install the input map.
-    InputMap inputMap =
-      (InputMap) SharedUIDefaults.get("Table.ancestorInputMap");
-    SwingUtilities.replaceUIInputMap(table,
-                                 JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT,
-                                 inputMap);
-
-    // FIXME: The JDK uses a LazyActionMap for parentActionMap
-    SwingUtilities.replaceUIActionMap(table, getActionMap());
-
-  }
-
-  /**
-   * Fetches the action map from  the UI defaults, or create a new one
-   * if the action map hasn't been initialized.
-   *
-   * @return the action map
-   */
-  private ActionMap getActionMap()
-  {
-    ActionMap am = (ActionMap) UIManager.get("Table.actionMap");
-    if (am == null)
-      {
-        am = createDefaultActions();
-        UIManager.getLookAndFeelDefaults().put("Table.actionMap", am);
-      }
-    return am;
-  }
-
-  private ActionMap createDefaultActions()
-  {
-    ActionMapUIResource am = new ActionMapUIResource();
-    Action action = new TableAction();
-
-    am.put("cut", TransferHandler.getCutAction());
-    am.put("copy", TransferHandler.getCopyAction());
-    am.put("paste", TransferHandler.getPasteAction());
-
-    am.put("cancel", action);
-    am.put("selectAll", action);
-    am.put("clearSelection", action);
-    am.put("startEditing", action);
-
-    am.put("selectNextRow", action);
-    am.put("selectNextRowCell", action);
-    am.put("selectNextRowExtendSelection", action);
-    am.put("selectNextRowChangeLead", action);
-
-    am.put("selectPreviousRow", action);
-    am.put("selectPreviousRowCell", action);
-    am.put("selectPreviousRowExtendSelection", action);
-    am.put("selectPreviousRowChangeLead", action);
-
-    am.put("selectNextColumn", action);
-    am.put("selectNextColumnCell", action);
-    am.put("selectNextColumnExtendSelection", action);
-    am.put("selectNextColumnChangeLead", action);
-
-    am.put("selectPreviousColumn", action);
-    am.put("selectPreviousColumnCell", action);
-    am.put("selectPreviousColumnExtendSelection", action);
-    am.put("selectPreviousColumnChangeLead", action);
-
-    am.put("scrollLeftChangeSelection", action);
-    am.put("scrollLeftExtendSelection", action);
-    am.put("scrollRightChangeSelection", action);
-    am.put("scrollRightExtendSelection", action);
-
-    am.put("scrollUpChangeSelection", action);
-    am.put("scrollUpExtendSelection", action);
-    am.put("scrollDownChangeSelection", action);
-    am.put("scrolldownExtendSelection", action);
-
-    am.put("selectFirstColumn", action);
-    am.put("selectFirstColumnExtendSelection", action);
-    am.put("selectLastColumn", action);
-    am.put("selectLastColumnExtendSelection", action);
-
-    am.put("selectFirstRow", action);
-    am.put("selectFirstRowExtendSelection", action);
-    am.put("selectLastRow", action);
-    am.put("selectLastRowExtendSelection", action);
-
-    am.put("addToSelection", action);
-    am.put("toggleAndAnchor", action);
-    am.put("extendTo", action);
-    am.put("moveSelectionTo", action);
-
-    return am;
-  }
-
-  /**
-   * This class implements the actions that we want to happen
-   * when specific keys are pressed for the JTable.  The actionPerformed
-   * method is called when a key that has been registered for the JTable
-   * is received.
-   */
-  private static class TableAction
-    extends AbstractAction
-  {
-    /**
-     * What to do when this action is called.
-     *
-     * @param e the ActionEvent that caused this action.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      JTable table = (JTable) e.getSource();
-
-      DefaultListSelectionModel rowModel
-          = (DefaultListSelectionModel) table.getSelectionModel();
-      DefaultListSelectionModel colModel
-          = (DefaultListSelectionModel) table.getColumnModel().getSelectionModel();
-
-      int rowLead = rowModel.getLeadSelectionIndex();
-      int rowMax = table.getModel().getRowCount() - 1;
-
-      int colLead = colModel.getLeadSelectionIndex();
-      int colMax = table.getModel().getColumnCount() - 1;
-
-      // The command with which the action has been called is stored
-      // in this undocumented action value. This allows us to have only
-      // one Action instance to serve all keyboard input for JTable.
-      String command = (String) getValue("__command__");
-      if (command.equals("selectPreviousRowExtendSelection"))
-        {
-          rowModel.setLeadSelectionIndex(Math.max(rowLead - 1, 0));
-        }
-      else if (command.equals("selectLastColumn"))
-        {
-          colModel.setSelectionInterval(colMax, colMax);
-        }
-      else if (command.equals("startEditing"))
-        {
-          if (table.isCellEditable(rowLead, colLead))
-            table.editCellAt(rowLead, colLead);
-        }
-      else if (command.equals("selectFirstRowExtendSelection"))
-        {
-          rowModel.setLeadSelectionIndex(0);
-        }
-      else if (command.equals("selectFirstColumn"))
-        {
-          colModel.setSelectionInterval(0, 0);
-        }
-      else if (command.equals("selectFirstColumnExtendSelection"))
-        {
-          colModel.setLeadSelectionIndex(0);
-        }
-      else if (command.equals("selectLastRow"))
-        {
-          rowModel.setSelectionInterval(rowMax, rowMax);
-        }
-      else if (command.equals("selectNextRowExtendSelection"))
-        {
-          rowModel.setLeadSelectionIndex(Math.min(rowLead + 1, rowMax));
-        }
-      else if (command.equals("selectFirstRow"))
-        {
-          rowModel.setSelectionInterval(0, 0);
-        }
-      else if (command.equals("selectNextColumnExtendSelection"))
-        {
-          colModel.setLeadSelectionIndex(Math.min(colLead + 1, colMax));
-        }
-      else if (command.equals("selectLastColumnExtendSelection"))
-        {
-          colModel.setLeadSelectionIndex(colMax);
-        }
-      else if (command.equals("selectPreviousColumnExtendSelection"))
-        {
-          colModel.setLeadSelectionIndex(Math.max(colLead - 1, 0));
-        }
-      else if (command.equals("selectNextRow"))
-        {
-          rowModel.setSelectionInterval(Math.min(rowLead + 1, rowMax),
-                                        Math.min(rowLead + 1, rowMax));
-        }
-      else if (command.equals("scrollUpExtendSelection"))
-        {
-          int target;
-          if (rowLead == getFirstVisibleRowIndex(table))
-            target = Math.max(0, rowLead - (getLastVisibleRowIndex(table)
-                - getFirstVisibleRowIndex(table) + 1));
-          else
-            target = getFirstVisibleRowIndex(table);
-
-          rowModel.setLeadSelectionIndex(target);
-          colModel.setLeadSelectionIndex(colLead);
-        }
-      else if (command.equals("selectPreviousRow"))
-        {
-          rowModel.setSelectionInterval(Math.max(rowLead - 1, 0),
-                                        Math.max(rowLead - 1, 0));
-        }
-      else if (command.equals("scrollRightChangeSelection"))
-        {
-          int target;
-          if (colLead == getLastVisibleColumnIndex(table))
-            target = Math.min(colMax, colLead
-                              + (getLastVisibleColumnIndex(table)
-                              - getFirstVisibleColumnIndex(table) + 1));
-          else
-            target = getLastVisibleColumnIndex(table);
-
-          colModel.setSelectionInterval(target, target);
-          rowModel.setSelectionInterval(rowLead, rowLead);
-        }
-      else if (command.equals("selectPreviousColumn"))
-        {
-          colModel.setSelectionInterval(Math.max(colLead - 1, 0),
-                                        Math.max(colLead - 1, 0));
-        }
-      else if (command.equals("scrollLeftChangeSelection"))
-        {
-          int target;
-          if (colLead == getFirstVisibleColumnIndex(table))
-            target = Math.max(0, colLead - (getLastVisibleColumnIndex(table)
-                                 - getFirstVisibleColumnIndex(table) + 1));
-          else
-            target = getFirstVisibleColumnIndex(table);
-
-          colModel.setSelectionInterval(target, target);
-          rowModel.setSelectionInterval(rowLead, rowLead);
-        }
-      else if (command.equals("clearSelection"))
-        {
-          table.clearSelection();
-        }
-      else if (command.equals("cancel"))
-        {
-          // FIXME: implement other parts of "cancel" like undo-ing last
-          // selection.  Right now it just calls editingCancelled if
-          // we're currently editing.
-          if (table.isEditing())
-            table.editingCanceled(new ChangeEvent("cancel"));
-        }
-      else if (command.equals("selectNextRowCell")
-               || command.equals("selectPreviousRowCell")
-               || command.equals("selectNextColumnCell")
-               || command.equals("selectPreviousColumnCell"))
-        {
-          // If nothing is selected, select the first cell in the table
-          if (table.getSelectedRowCount() == 0 &&
-              table.getSelectedColumnCount() == 0)
-            {
-              rowModel.setSelectionInterval(0, 0);
-              colModel.setSelectionInterval(0, 0);
-              return;
-            }
-
-          // If the lead selection index isn't selected (ie a remove operation
-          // happened, then set the lead to the first selected cell in the
-          // table
-          if (!table.isCellSelected(rowLead, colLead))
-            {
-              rowModel.addSelectionInterval(rowModel.getMinSelectionIndex(),
-                                            rowModel.getMinSelectionIndex());
-              colModel.addSelectionInterval(colModel.getMinSelectionIndex(),
-                                            colModel.getMinSelectionIndex());
-              return;
-            }
-
-          // multRowsSelected and multColsSelected tell us if multiple rows or
-          // columns are selected, respectively
-          boolean multRowsSelected, multColsSelected;
-          multRowsSelected = table.getSelectedRowCount() > 1 &&
-            table.getRowSelectionAllowed();
-
-          multColsSelected = table.getSelectedColumnCount() > 1 &&
-            table.getColumnSelectionAllowed();
-
-          // If there is just one selection, select the next cell, and wrap
-          // when you get to the edges of the table.
-          if (!multColsSelected && !multRowsSelected)
-            {
-              if (command.indexOf("Column") != -1)
-                advanceSingleSelection(colModel, colMax, rowModel, rowMax,
-                    command.equals("selectPreviousColumnCell"));
-              else
-                advanceSingleSelection(rowModel, rowMax, colModel, colMax,
-                    command.equals("selectPreviousRowCell"));
-              return;
-            }
-
-
-          // rowMinSelected and rowMaxSelected are the minimum and maximum
-          // values respectively of selected cells in the row selection model
-          // Similarly for colMinSelected and colMaxSelected.
-          int rowMaxSelected = table.getRowSelectionAllowed() ?
-            rowModel.getMaxSelectionIndex() : table.getModel().getRowCount() - 1;
-          int rowMinSelected = table.getRowSelectionAllowed() ?
-            rowModel.getMinSelectionIndex() : 0;
-          int colMaxSelected = table.getColumnSelectionAllowed() ?
-            colModel.getMaxSelectionIndex() :
-            table.getModel().getColumnCount() - 1;
-          int colMinSelected = table.getColumnSelectionAllowed() ?
-            colModel.getMinSelectionIndex() : 0;
-
-          // If there are multiple rows and columns selected, select the next
-          // cell and wrap at the edges of the selection.
-          if (command.indexOf("Column") != -1)
-            advanceMultipleSelection(table, colModel, colMinSelected,
-                                     colMaxSelected, rowModel, rowMinSelected,
-                                     rowMaxSelected,
-                                    command.equals("selectPreviousColumnCell"),
-                                    true);
-
-          else
-            advanceMultipleSelection(table, rowModel, rowMinSelected,
-                                     rowMaxSelected, colModel, colMinSelected,
-                                     colMaxSelected,
-                                     command.equals("selectPreviousRowCell"),
-                                     false);
-        }
-      else if (command.equals("selectNextColumn"))
-        {
-          colModel.setSelectionInterval(Math.min(colLead + 1, colMax),
-                                        Math.min(colLead + 1, colMax));
-        }
-      else if (command.equals("scrollLeftExtendSelection"))
-        {
-          int target;
-          if (colLead == getFirstVisibleColumnIndex(table))
-            target = Math.max(0, colLead - (getLastVisibleColumnIndex(table)
-                                 - getFirstVisibleColumnIndex(table) + 1));
-          else
-            target = getFirstVisibleColumnIndex(table);
-
-          colModel.setLeadSelectionIndex(target);
-          rowModel.setLeadSelectionIndex(rowLead);
-        }
-      else if (command.equals("scrollDownChangeSelection"))
-        {
-          int target;
-          if (rowLead == getLastVisibleRowIndex(table))
-            target = Math.min(rowMax, rowLead + (getLastVisibleRowIndex(table)
-                                      - getFirstVisibleRowIndex(table) + 1));
-          else
-            target = getLastVisibleRowIndex(table);
-
-          rowModel.setSelectionInterval(target, target);
-          colModel.setSelectionInterval(colLead, colLead);
-        }
-      else if (command.equals("scrollRightExtendSelection"))
-        {
-          int target;
-          if (colLead == getLastVisibleColumnIndex(table))
-            target = Math.min(colMax, colLead + (getLastVisibleColumnIndex(table)
-                - getFirstVisibleColumnIndex(table) + 1));
-          else
-            target = getLastVisibleColumnIndex(table);
-
-          colModel.setLeadSelectionIndex(target);
-          rowModel.setLeadSelectionIndex(rowLead);
-        }
-      else if (command.equals("selectAll"))
-        {
-          table.selectAll();
-        }
-      else if (command.equals("selectLastRowExtendSelection"))
-        {
-          rowModel.setLeadSelectionIndex(rowMax);
-          colModel.setLeadSelectionIndex(colLead);
-        }
-      else if (command.equals("scrollDownExtendSelection"))
-        {
-          int target;
-          if (rowLead == getLastVisibleRowIndex(table))
-            target = Math.min(rowMax, rowLead + (getLastVisibleRowIndex(table)
-                - getFirstVisibleRowIndex(table) + 1));
-          else
-            target = getLastVisibleRowIndex(table);
-
-          rowModel.setLeadSelectionIndex(target);
-          colModel.setLeadSelectionIndex(colLead);
-        }
-      else if (command.equals("scrollUpChangeSelection"))
-        {
-          int target;
-          if (rowLead == getFirstVisibleRowIndex(table))
-            target = Math.max(0, rowLead - (getLastVisibleRowIndex(table)
-                - getFirstVisibleRowIndex(table) + 1));
-          else
-            target = getFirstVisibleRowIndex(table);
-
-          rowModel.setSelectionInterval(target, target);
-          colModel.setSelectionInterval(colLead, colLead);
-        }
-      else if (command.equals("selectNextRowChangeLead"))
-          {
-            if (rowModel.getSelectionMode()
-                != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
-              {
-                // just "selectNextRow"
-                rowModel.setSelectionInterval(Math.min(rowLead + 1, rowMax),
-                                              Math.min(rowLead + 1, rowMax));
-                colModel.setSelectionInterval(colLead, colLead);
-              }
-            else
-              rowModel.moveLeadSelectionIndex(Math.min(rowLead + 1, rowMax));
-          }
-      else if (command.equals("selectPreviousRowChangeLead"))
-        {
-          if (rowModel.getSelectionMode()
-              != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
-            {
-              // just selectPreviousRow
-              rowModel.setSelectionInterval(Math.max(rowLead - 1, 0),
-                                            Math.min(rowLead - 1, 0));
-              colModel.setSelectionInterval(colLead, colLead);
-            }
-          else
-            rowModel.moveLeadSelectionIndex(Math.max(rowLead - 1, 0));
-        }
-      else if (command.equals("selectNextColumnChangeLead"))
-        {
-          if (colModel.getSelectionMode()
-              != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
-            {
-              // just selectNextColumn
-              rowModel.setSelectionInterval(rowLead, rowLead);
-              colModel.setSelectionInterval(Math.min(colLead + 1, colMax),
-                                            Math.min(colLead + 1, colMax));
-            }
-          else
-            colModel.moveLeadSelectionIndex(Math.min(colLead + 1, colMax));
-        }
-      else if (command.equals("selectPreviousColumnChangeLead"))
-        {
-          if (colModel.getSelectionMode()
-              != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
-            {
-              // just selectPreviousColumn
-              rowModel.setSelectionInterval(rowLead, rowLead);
-              colModel.setSelectionInterval(Math.max(colLead - 1, 0),
-                                            Math.max(colLead - 1, 0));
-
-            }
-          else
-            colModel.moveLeadSelectionIndex(Math.max(colLead - 1, 0));
-        }
-      else if (command.equals("addToSelection"))
-          {
-            if (!table.isEditing())
-              {
-                int oldRowAnchor = rowModel.getAnchorSelectionIndex();
-                int oldColAnchor = colModel.getAnchorSelectionIndex();
-                rowModel.addSelectionInterval(rowLead, rowLead);
-                colModel.addSelectionInterval(colLead, colLead);
-                rowModel.setAnchorSelectionIndex(oldRowAnchor);
-                colModel.setAnchorSelectionIndex(oldColAnchor);
-              }
-          }
-      else if (command.equals("extendTo"))
-        {
-          rowModel.setSelectionInterval(rowModel.getAnchorSelectionIndex(),
-                                        rowLead);
-          colModel.setSelectionInterval(colModel.getAnchorSelectionIndex(),
-                                        colLead);
-        }
-      else if (command.equals("toggleAndAnchor"))
-        {
-          if (rowModel.isSelectedIndex(rowLead))
-            rowModel.removeSelectionInterval(rowLead, rowLead);
-          else
-            rowModel.addSelectionInterval(rowLead, rowLead);
-
-          if (colModel.isSelectedIndex(colLead))
-            colModel.removeSelectionInterval(colLead, colLead);
-          else
-            colModel.addSelectionInterval(colLead, colLead);
-
-          rowModel.setAnchorSelectionIndex(rowLead);
-          colModel.setAnchorSelectionIndex(colLead);
-        }
-      else if (command.equals("stopEditing"))
-        {
-          table.editingStopped(new ChangeEvent(command));
-        }
-      else
-        {
-          // If we're here that means we bound this TableAction class
-          // to a keyboard input but we either want to ignore that input
-          // or we just haven't implemented its action yet.
-
-          // Uncomment the following line to print the names of unused bindings
-          // when their keys are pressed
-
-          // System.out.println ("not implemented: "+e.getActionCommand());
-        }
-
-      // Any commands whose keyStrokes should be used by the Editor should not
-      // cause editing to be stopped: ie, the SPACE sends "addToSelection" but
-      // if the table is in editing mode, the space should not cause us to stop
-      // editing because it should be used by the Editor.
-      if (table.isEditing() && command != "startEditing"
-          && command != "addToSelection")
-        table.editingStopped(new ChangeEvent("update"));
-
-      table.scrollRectToVisible(table.getCellRect(
-          rowModel.getLeadSelectionIndex(), colModel.getLeadSelectionIndex(),
-          false));
-    }
-
-    /**
-     * Returns the column index of the first visible column.
-     * @return the column index of the first visible column.
-     */
-    int getFirstVisibleColumnIndex(JTable table)
-    {
-      ComponentOrientation or = table.getComponentOrientation();
-      Rectangle r = table.getVisibleRect();
-      if (!or.isLeftToRight())
-        r.translate((int) r.getWidth() - 1, 0);
-      return table.columnAtPoint(r.getLocation());
-    }
-
-    /**
-     * Returns the column index of the last visible column.
-     *
-     */
-    int getLastVisibleColumnIndex(JTable table)
-    {
-      ComponentOrientation or = table.getComponentOrientation();
-      Rectangle r = table.getVisibleRect();
-      if (or.isLeftToRight())
-        r.translate((int) r.getWidth() - 1, 0);
-      return table.columnAtPoint(r.getLocation());
-    }
-
-    /**
-     * Returns the row index of the first visible row.
-     *
-     */
-    int getFirstVisibleRowIndex(JTable table)
-    {
-      ComponentOrientation or = table.getComponentOrientation();
-      Rectangle r = table.getVisibleRect();
-      if (!or.isLeftToRight())
-        r.translate((int) r.getWidth() - 1, 0);
-      return table.rowAtPoint(r.getLocation());
-    }
-
-    /**
-     * Returns the row index of the last visible row.
-     *
-     */
-    int getLastVisibleRowIndex(JTable table)
-    {
-      ComponentOrientation or = table.getComponentOrientation();
-      Rectangle r = table.getVisibleRect();
-      r.translate(0, (int) r.getHeight() - 1);
-      if (or.isLeftToRight())
-        r.translate((int) r.getWidth() - 1, 0);
-      // The next if makes sure that we don't return -1 simply because
-      // there is white space at the bottom of the table (ie, the display
-      // area is larger than the table)
-      if (table.rowAtPoint(r.getLocation()) == -1)
-        {
-          if (getFirstVisibleRowIndex(table) == -1)
-            return -1;
-          else
-            return table.getModel().getRowCount() - 1;
-        }
-      return table.rowAtPoint(r.getLocation());
-    }
-
-    /**
-     * A helper method for the key bindings.  Used because the actions
-     * for TAB, SHIFT-TAB, ENTER, and SHIFT-ENTER are very similar.
-     *
-     * Selects the next (previous if SHIFT pressed) column for TAB, or row for
-     * ENTER from within the currently selected cells.
-     *
-     * @param firstModel the ListSelectionModel for columns (TAB) or
-     * rows (ENTER)
-     * @param firstMin the first selected index in firstModel
-     * @param firstMax the last selected index in firstModel
-     * @param secondModel the ListSelectionModel for rows (TAB) or
-     * columns (ENTER)
-     * @param secondMin the first selected index in secondModel
-     * @param secondMax the last selected index in secondModel
-     * @param reverse true if shift was held for the event
-     * @param eventIsTab true if TAB was pressed, false if ENTER pressed
-     */
-    void advanceMultipleSelection(JTable table, ListSelectionModel firstModel,
-                                  int firstMin,
-                                  int firstMax, ListSelectionModel secondModel,
-                                  int secondMin, int secondMax, boolean reverse,
-                                  boolean eventIsTab)
-    {
-      // If eventIsTab, all the "firsts" correspond to columns, otherwise, to
-      // rows "seconds" correspond to the opposite
-      int firstLead = firstModel.getLeadSelectionIndex();
-      int secondLead = secondModel.getLeadSelectionIndex();
-      int numFirsts = eventIsTab ?
-        table.getModel().getColumnCount() : table.getModel().getRowCount();
-      int numSeconds = eventIsTab ?
-        table.getModel().getRowCount() : table.getModel().getColumnCount();
-
-      // check if we have to wrap the "firsts" around, going to the other side
-      if ((firstLead == firstMax && !reverse) ||
-          (reverse && firstLead == firstMin))
-        {
-          firstModel.addSelectionInterval(reverse ? firstMax : firstMin,
-                                          reverse ? firstMax : firstMin);
-
-          // check if we have to wrap the "seconds"
-          if ((secondLead == secondMax && !reverse) ||
-              (reverse && secondLead == secondMin))
-            secondModel.addSelectionInterval(reverse ? secondMax : secondMin,
-                                             reverse ? secondMax : secondMin);
-
-          // if we're not wrapping the seconds, we have to find out where we
-          // are within the secondModel and advance to the next cell (or
-          // go back to the previous cell if reverse == true)
-          else
-            {
-              int[] secondsSelected;
-              if (eventIsTab && table.getRowSelectionAllowed() ||
-                  !eventIsTab && table.getColumnSelectionAllowed())
-                secondsSelected = eventIsTab ?
-                  table.getSelectedRows() : table.getSelectedColumns();
-              else
-                {
-                  // if row selection is not allowed, then the entire column gets
-                  // selected when you click on it, so consider ALL rows selected
-                  secondsSelected = new int[numSeconds];
-                  for (int i = 0; i < numSeconds; i++)
-                  secondsSelected[i] = i;
-                }
-
-              // and now find the "next" index within the model
-              int secondIndex = reverse ? secondsSelected.length - 1 : 0;
-              if (!reverse)
-                while (secondsSelected[secondIndex] <= secondLead)
-                  secondIndex++;
-              else
-                while (secondsSelected[secondIndex] >= secondLead)
-                  secondIndex--;
-
-              // and select it - updating the lead selection index
-              secondModel.addSelectionInterval(secondsSelected[secondIndex],
-                                               secondsSelected[secondIndex]);
-            }
-        }
-      // We didn't have to wrap the firsts, so just find the "next" first
-      // and select it, we don't have to change "seconds"
-      else
-        {
-          int[] firstsSelected;
-          if (eventIsTab && table.getColumnSelectionAllowed() ||
-              !eventIsTab && table.getRowSelectionAllowed())
-            firstsSelected = eventIsTab ?
-              table.getSelectedColumns() : table.getSelectedRows();
-          else
-            {
-              // if selection not allowed, consider ALL firsts to be selected
-              firstsSelected = new int[numFirsts];
-              for (int i = 0; i < numFirsts; i++)
-                firstsSelected[i] = i;
-            }
-          int firstIndex = reverse ? firstsSelected.length - 1 : 0;
-          if (!reverse)
-            while (firstsSelected[firstIndex] <= firstLead)
-              firstIndex++;
-          else
-            while (firstsSelected[firstIndex] >= firstLead)
-              firstIndex--;
-          firstModel.addSelectionInterval(firstsSelected[firstIndex],
-                                          firstsSelected[firstIndex]);
-          secondModel.addSelectionInterval(secondLead, secondLead);
-        }
-    }
-
-    /**
-     * A helper method for the key  bindings. Used because the actions
-     * for TAB, SHIFT-TAB, ENTER, and SHIFT-ENTER are very similar.
-     *
-     * Selects the next (previous if SHIFT pressed) column (TAB) or row (ENTER)
-     * in the table, changing the current selection.  All cells in the table
-     * are eligible, not just the ones that are currently selected.
-     * @param firstModel the ListSelectionModel for columns (TAB) or rows
-     * (ENTER)
-     * @param firstMax the last index in firstModel
-     * @param secondModel the ListSelectionModel for rows (TAB) or columns
-     * (ENTER)
-     * @param secondMax the last index in secondModel
-     * @param reverse true if SHIFT was pressed for the event
-     */
-
-    void advanceSingleSelection(ListSelectionModel firstModel, int firstMax,
-                                ListSelectionModel secondModel, int secondMax,
-                                boolean reverse)
-    {
-      // for TABs, "first" corresponds to columns and "seconds" to rows.
-      // the opposite is true for ENTERs
-      int firstLead = firstModel.getLeadSelectionIndex();
-      int secondLead = secondModel.getLeadSelectionIndex();
-
-      // if we are going backwards subtract 2 because we later add 1
-      // for a net change of -1
-      if (reverse && (firstLead == 0))
-        {
-          // check if we have to wrap around
-          if (secondLead == 0)
-            secondLead += secondMax + 1;
-          secondLead -= 2;
-        }
-
-      // do we have to wrap the "seconds"?
-      if (reverse && (firstLead == 0) || !reverse && (firstLead == firstMax))
-        secondModel.setSelectionInterval((secondLead + 1) % (secondMax + 1),
-                                         (secondLead + 1) % (secondMax + 1));
-      // if not, just reselect the current lead
-      else
-        secondModel.setSelectionInterval(secondLead, secondLead);
-
-      // if we are going backwards, subtract 2  because we add 1 later
-      // for net change of -1
-      if (reverse)
-        {
-          // check for wraparound
-          if (firstLead == 0)
-            firstLead += firstMax + 1;
-          firstLead -= 2;
-        }
-      // select the next "first"
-      firstModel.setSelectionInterval((firstLead + 1) % (firstMax + 1),
-                                      (firstLead + 1) % (firstMax + 1));
-    }
-  }
-
-  protected void installListeners()
-  {
-    if (focusListener == null)
-      focusListener = createFocusListener();
-    table.addFocusListener(focusListener);
-    if (keyListener == null)
-      keyListener = createKeyListener();
-    table.addKeyListener(keyListener);
-    if (mouseInputListener == null)
-      mouseInputListener = createMouseInputListener();
-    table.addMouseListener(mouseInputListener);
-    table.addMouseMotionListener(mouseInputListener);
-    if (propertyChangeListener == null)
-      propertyChangeListener = new PropertyChangeHandler();
-    table.addPropertyChangeListener(propertyChangeListener);
-  }
-
-  /**
-   * Uninstalls UI defaults that have been installed by
-   * {@link #installDefaults()}.
-   */
-  protected void uninstallDefaults()
-  {
-    // Nothing to do here for now.
-  }
-
-  /**
-   * Uninstalls the keyboard actions that have been installed by
-   * {@link #installKeyboardActions()}.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    SwingUtilities.replaceUIInputMap(table, JComponent.
-                                     WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, null);
-    SwingUtilities.replaceUIActionMap(table, null);
-  }
-
-  protected void uninstallListeners()
-  {
-    table.removeFocusListener(focusListener);
-    table.removeKeyListener(keyListener);
-    table.removeMouseListener(mouseInputListener);
-    table.removeMouseMotionListener(mouseInputListener);
-    table.removePropertyChangeListener(propertyChangeListener);
-    propertyChangeListener = null;
-  }
-
-  public void installUI(JComponent comp)
-  {
-    table = (JTable) comp;
-    rendererPane = new CellRendererPane();
-    table.add(rendererPane);
-
-    installDefaults();
-    installKeyboardActions();
-    installListeners();
-  }
-
-  public void uninstallUI(JComponent c)
-  {
-    uninstallListeners();
-    uninstallKeyboardActions();
-    uninstallDefaults();
-
-    table.remove(rendererPane);
-    rendererPane = null;
-    table = null;
-  }
-
-  /**
-   * Paints a single cell in the table.
-   *
-   * @param g The graphics context to paint in
-   * @param row The row number to paint
-   * @param col The column number to paint
-   * @param bounds The bounds of the cell to paint, assuming a coordinate
-   * system beginning at <code>(0,0)</code> in the upper left corner of the
-   * table
-   * @param rend A cell renderer to paint with
-   */
-  void paintCell(Graphics g, int row, int col, Rectangle bounds,
-                 TableCellRenderer rend)
-  {
-    Component comp = table.prepareRenderer(rend, row, col);
-    rendererPane.paintComponent(g, comp, table, bounds);
-  }
-
-  /**
-   * Paint the associated table.
-   */
-  public void paint(Graphics gfx, JComponent ignored)
-  {
-    int ncols = table.getColumnCount();
-    int nrows = table.getRowCount();
-    if (nrows == 0 || ncols == 0)
-      return;
-
-    Rectangle clip = gfx.getClipBounds();
-
-    // Determine the range of cells that are within the clip bounds.
-    Point p1 = new Point(clip.x, clip.y);
-    int c0 = table.columnAtPoint(p1);
-    if (c0 == -1)
-      c0 = 0;
-    int r0 = table.rowAtPoint(p1);
-    if (r0 == -1)
-      r0 = 0;
-    Point p2 = new Point(clip.x + clip.width, clip.y + clip.height);
-    int cn = table.columnAtPoint(p2);
-    if (cn == -1)
-      cn = table.getColumnCount() - 1;
-    int rn = table.rowAtPoint(p2);
-    if (rn == -1)
-      rn = table.getRowCount() - 1;
-
-    int columnMargin = table.getColumnModel().getColumnMargin();
-    int rowMargin = table.getRowMargin();
-
-    TableColumnModel cmodel = table.getColumnModel();
-    int[] widths = new int[cn + 1];
-    for (int i = c0; i <= cn; i++)
-      {
-        widths[i] = cmodel.getColumn(i).getWidth() - columnMargin;
-      }
-
-    Rectangle bounds = table.getCellRect(r0, c0, false);
-    // The left boundary of the area being repainted.
-    int left = bounds.x;
-
-    // The top boundary of the area being repainted.
-    int top = bounds.y;
-
-    // The bottom boundary of the area being repainted.
-    int bottom;
-
-    // paint the cell contents
-    Color grid = table.getGridColor();
-    for (int r = r0; r <= rn; ++r)
-      {
-        for (int c = c0; c <= cn; ++c)
-          {
-            bounds.width = widths[c];
-            paintCell(gfx, r, c, bounds, table.getCellRenderer(r, c));
-            bounds.x += widths[c] + columnMargin;
-          }
-        bounds.x = left;
-        bounds.y += table.getRowHeight(r);
-        // Update row height for tables with custom heights.
-        bounds.height = table.getRowHeight(r + 1) - rowMargin;
-      }
-
-    bottom = bounds.y - rowMargin;
-
-    // paint vertical grid lines
-    if (grid != null && table.getShowVerticalLines())
-      {
-        Color save = gfx.getColor();
-        gfx.setColor(grid);
-        int x = left - columnMargin;
-        for (int c = c0; c <= cn; ++c)
-          {
-            // The vertical grid is draw right from the cells, so we
-            // add before drawing.
-            x += widths[c] + columnMargin;
-            gfx.drawLine(x, top, x, bottom);
-          }
-        gfx.setColor(save);
-      }
-
-    // paint horizontal grid lines
-    if (grid != null && table.getShowHorizontalLines())
-      {
-        Color save = gfx.getColor();
-        gfx.setColor(grid);
-        int y = top - rowMargin;
-        for (int r = r0; r <= rn; ++r)
-          {
-            // The horizontal grid is draw below the cells, so we
-            // add before drawing.
-            y += table.getRowHeight(r);
-            gfx.drawLine(left, y, p2.x, y);
-          }
-        gfx.setColor(save);
-      }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicTextAreaUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicTextAreaUI.java
deleted file mode 100644
index b2541b4..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicTextAreaUI.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/* BasicTextAreaUI.java --
-   Copyright (C) 2004, 2006,  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-
-import java.beans.PropertyChangeEvent;
-
-import javax.swing.JComponent;
-import javax.swing.JTextArea;
-import javax.swing.UIDefaults;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.text.Element;
-import javax.swing.text.PlainView;
-import javax.swing.text.View;
-import javax.swing.text.WrappedPlainView;
-
-public class BasicTextAreaUI extends BasicTextUI
-{
-  public static ComponentUI createUI(JComponent comp)
-  {
-    return new BasicTextAreaUI();
-  }
-
-  public BasicTextAreaUI()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Create the view.  Returns a WrappedPlainView if the text area
-   * has lineWrap set to true, otherwise returns a PlainView.  If
-   * lineWrap is true has to check whether the wrap style is word
-   * or character and return an appropriate WrappedPlainView.
-   *
-   * @param elem the element to create a View for
-   * @return an appropriate View for the element
-   */
-  public View create(Element elem)
-  {
-    JTextArea comp = (JTextArea) getComponent();
-    if (comp.getLineWrap())
-      {
-        if (comp.getWrapStyleWord())
-          return new WrappedPlainView(elem, true);
-        else
-          return new WrappedPlainView(elem, false);
-      }
-    else
-      return new PlainView(elem);
-  }
-
-  /**
-   * Returns the prefix for entries in the {@link UIDefaults} table.
-   *
-   * @return "TextArea"
-   */
-  protected String getPropertyPrefix()
-  {
-    return "TextArea";
-  }
-
-  /**
-   * Receives notification whenever one of the text component's bound
-   * properties changes. This changes the view to WrappedPlainView
-   * if setLineWrap(true) is called, and back to PlainView if
-   * setLineWrap(false) is called.
-   *
-   * @param ev the property change event
-   */
-  protected void propertyChange(PropertyChangeEvent ev)
-  {
-    JTextArea comp = (JTextArea) getComponent();
-    if (ev.getPropertyName() == "lineWrap"
-        || ev.getPropertyName() == "wrapStyleWord")
-      {
-        // Changes the View (without modifying the document or it's listeners).
-        setView(create(textComponent.getDocument().getDefaultRootElement()));
-      }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicTextFieldUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicTextFieldUI.java
deleted file mode 100644
index 5f6a927..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicTextFieldUI.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/* BasicTextFieldUI.java
-   Copyright (C) 2004, 2006,  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.beans.PropertyChangeEvent;
-
-import javax.swing.JComponent;
-import javax.swing.UIDefaults;
-import javax.swing.plaf.ColorUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.text.Element;
-import javax.swing.text.FieldView;
-import javax.swing.text.View;
-
-public class BasicTextFieldUI extends BasicTextUI
-{
-  public BasicTextFieldUI()
-  {
-    super();
-  }
-
-  public View create(Element elem)
-  {
-    return new FieldView(elem);
-  }
-
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicTextFieldUI();
-  }
-
-  /**
-   * Returns the prefix for entries in the {@link UIDefaults} table.
-   *
-   * @return "TextField"
-   */
-  protected String getPropertyPrefix()
-  {
-    return "TextField";
-  }
-
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-  }
-
-  /**
-   * Receives notification whenever one of the text component's bound
-   * properties changes. Here we check for the editable and enabled
-   * properties and adjust the background color accordingly.
-   *
-   * <p>The colors are only changed if they are not a
-   * <code>ColorUIResource</code>.</p>
-   *
-   * @param event the property change event
-   */
-  protected void propertyChange(PropertyChangeEvent event)
-  {
-    if (event.getPropertyName().equals("editable"))
-      {
-        // Changing the color only if the current background is an instance of
-        // ColorUIResource is the behavior of the RI.
-        if (textComponent.getBackground() instanceof ColorUIResource)
-          {
-            Color c = null;
-            Color old = textComponent.getBackground();
-            String prefix = getPropertyPrefix();
-            if (! textComponent.isEnabled())
-              c = SharedUIDefaults.getColor(prefix + ".disabledBackground");
-            if (c == null && ! textComponent.isEditable())
-              c = SharedUIDefaults.getColor(prefix + ".inactiveBackground");
-            if (c == null)
-              c = SharedUIDefaults.getColor(prefix + ".background");
-            if (c != null && c != old)
-              {
-                textComponent.setBackground(c);
-              }
-          }
-      }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicTextPaneUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicTextPaneUI.java
deleted file mode 100644
index 507e0a1..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicTextPaneUI.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/* BasicTextPaneUI.java --
-   Copyright (C) 2004  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-
-import javax.swing.JComponent;
-import javax.swing.JTextPane;
-import javax.swing.plaf.ColorUIResource;
-import javax.swing.UIDefaults;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.text.Style;
-import javax.swing.text.StyleConstants;
-import javax.swing.text.StyleContext;
-
-public class BasicTextPaneUI extends BasicEditorPaneUI
-{
-  public BasicTextPaneUI()
-  {
-    // Do nothing here.
-  }
-
-  public static ComponentUI createUI(JComponent comp)
-  {
-    return new BasicTextPaneUI();
-  }
-
-  /**
-   * Returns the prefix for entries in the {@link UIDefaults} table.
-   *
-   * @return "TextPane"
-   */
-  protected String getPropertyPrefix()
-  {
-    return "TextPane";
-  }
-
-  /**
-   * Installs this UI on the specified <code>JTextPane</code>. This calls the
-   * super implementation and then adds a default style to the text pane.
-   *
-   * @param c the text pane to install the UI to
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    JTextPane tp = (JTextPane) c;
-    Style defaultStyle = tp.getStyle(StyleContext.DEFAULT_STYLE);
-    defaultStyle.addAttribute(StyleConstants.Foreground,
-                              new ColorUIResource(Color.BLACK));
-    defaultStyle.addAttribute(StyleConstants.FontFamily, "Serif");
-    defaultStyle.addAttribute(StyleConstants.Italic, Boolean.FALSE);
-    defaultStyle.addAttribute(StyleConstants.Bold, Boolean.FALSE);
-    defaultStyle.addAttribute(StyleConstants.FontSize, new Integer(12));
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicTextUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicTextUI.java
deleted file mode 100644
index bd7cc48..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicTextUI.java
+++ /dev/null
@@ -1,1538 +0,0 @@
-/* BasicTextUI.java --
-   Copyright (C) 2002, 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import gnu.classpath.SystemProperties;
-
-import java.awt.Color;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.HeadlessException;
-import java.awt.Insets;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.Shape;
-import java.awt.Toolkit;
-import java.awt.datatransfer.Clipboard;
-import java.awt.datatransfer.StringSelection;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.Action;
-import javax.swing.ActionMap;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.TransferHandler;
-import javax.swing.UIManager;
-import javax.swing.event.DocumentEvent;
-import javax.swing.event.DocumentListener;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.InputMapUIResource;
-import javax.swing.plaf.TextUI;
-import javax.swing.plaf.UIResource;
-import javax.swing.text.AbstractDocument;
-import javax.swing.text.AttributeSet;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.Caret;
-import javax.swing.text.DefaultCaret;
-import javax.swing.text.DefaultEditorKit;
-import javax.swing.text.DefaultHighlighter;
-import javax.swing.text.Document;
-import javax.swing.text.EditorKit;
-import javax.swing.text.Element;
-import javax.swing.text.Highlighter;
-import javax.swing.text.JTextComponent;
-import javax.swing.text.Keymap;
-import javax.swing.text.Position;
-import javax.swing.text.View;
-import javax.swing.text.ViewFactory;
-
-/**
- * The abstract base class from which the UI classes for Swings text
- * components are derived. This provides most of the functionality for
- * the UI classes.
- *
- * @author original author unknown
- * @author Roman Kennke (roman@kennke.org)
- */
-public abstract class BasicTextUI extends TextUI
-  implements ViewFactory
-{
-  /**
-   * A {@link DefaultCaret} that implements {@link UIResource}.
-   */
-  public static class BasicCaret extends DefaultCaret implements UIResource
-  {
-    public BasicCaret()
-    {
-      // Nothing to do here.
-    }
-  }
-
-  /**
-   * A {@link DefaultHighlighter} that implements {@link UIResource}.
-   */
-  public static class BasicHighlighter extends DefaultHighlighter
-    implements UIResource
-  {
-    public BasicHighlighter()
-    {
-      // Nothing to do here.
-    }
-  }
-
-  private static class FocusHandler
-    implements FocusListener
-  {
-    public void focusGained(FocusEvent e)
-    {
-      // Nothing to do here.
-    }
-    public void focusLost(FocusEvent e)
-    {
-      JTextComponent textComponent = (JTextComponent) e.getComponent();
-      // Integrates Swing text components with the system clipboard:
-      // The idea is that if one wants to copy text around X11-style
-      // (select text and middle-click in the target component) the focus
-      // will move to the new component which gives the old focus owner the
-      // possibility to paste its selection into the clipboard.
-      if (!e.isTemporary()
-          && textComponent.getSelectionStart()
-             != textComponent.getSelectionEnd())
-        {
-          SecurityManager sm = System.getSecurityManager();
-          try
-            {
-              if (sm != null)
-                sm.checkSystemClipboardAccess();
-
-              Clipboard cb = Toolkit.getDefaultToolkit().getSystemSelection();
-              if (cb != null)
-                {
-                  StringSelection selection = new StringSelection(
-                      textComponent.getSelectedText());
-                  cb.setContents(selection, selection);
-                }
-            }
-          catch (SecurityException se)
-            {
-              // Not allowed to access the clipboard: Ignore and
-              // do not access it.
-            }
-          catch (HeadlessException he)
-            {
-              // There is no AWT: Ignore and do not access the
-              // clipboard.
-            }
-          catch (IllegalStateException ise)
-          {
-              // Clipboard is currently unavaible.
-          }
-        }
-    }
-  }
-
-  /**
-   * This FocusListener triggers repaints on focus shift.
-   */
-  private static FocusListener focusListener;
-
-  /**
-   * Receives notifications when properties of the text component change.
-   */
-  private class Handler
-    implements PropertyChangeListener, DocumentListener
-  {
-    /**
-     * Notifies when a property of the text component changes.
-     *
-     * @param event the PropertyChangeEvent describing the change
-     */
-    public void propertyChange(PropertyChangeEvent event)
-    {
-      if (event.getPropertyName().equals("document"))
-        {
-          // Document changed.
-          Object oldValue = event.getOldValue();
-          if (oldValue != null)
-            {
-              Document oldDoc = (Document) oldValue;
-              oldDoc.removeDocumentListener(handler);
-            }
-          Object newValue = event.getNewValue();
-          if (newValue != null)
-            {
-              Document newDoc = (Document) newValue;
-              newDoc.addDocumentListener(handler);
-            }
-          modelChanged();
-        }
-
-      BasicTextUI.this.propertyChange(event);
-    }
-
-    /**
-     * Notification about a document change event.
-     *
-     * @param ev the DocumentEvent describing the change
-     */
-    public void changedUpdate(DocumentEvent ev)
-    {
-      // Updates are forwarded to the View even if 'getVisibleEditorRect'
-      // method returns null. This means the View classes have to be
-      // aware of that possibility.
-      rootView.changedUpdate(ev, getVisibleEditorRect(),
-                             rootView.getViewFactory());
-    }
-
-    /**
-     * Notification about a document insert event.
-     *
-     * @param ev the DocumentEvent describing the insertion
-     */
-    public void insertUpdate(DocumentEvent ev)
-    {
-      // Updates are forwarded to the View even if 'getVisibleEditorRect'
-      // method returns null. This means the View classes have to be
-      // aware of that possibility.
-      rootView.insertUpdate(ev, getVisibleEditorRect(),
-                            rootView.getViewFactory());
-    }
-
-    /**
-     * Notification about a document removal event.
-     *
-     * @param ev the DocumentEvent describing the removal
-     */
-    public void removeUpdate(DocumentEvent ev)
-    {
-      // Updates are forwarded to the View even if 'getVisibleEditorRect'
-      // method returns null. This means the View classes have to be
-      // aware of that possibility.
-      rootView.removeUpdate(ev, getVisibleEditorRect(),
-                            rootView.getViewFactory());
-    }
-
-  }
-
-  /**
-   * This view forms the root of the View hierarchy. However, it delegates
-   * most calls to another View which is the real root of the hierarchy.
-   * The purpose is to make sure that all Views in the hierarchy, including
-   * the (real) root have a well-defined parent to which they can delegate
-   * calls like {@link #preferenceChanged}, {@link #getViewFactory} and
-   * {@link #getContainer}.
-   */
-  private class RootView extends View
-  {
-    /** The real root view. */
-    private View view;
-
-    /**
-     * Creates a new RootView.
-     */
-    public RootView()
-    {
-      super(null);
-    }
-
-    /**
-     * Returns the ViewFactory for this RootView. If the current EditorKit
-     * provides a ViewFactory, this is used. Otherwise the TextUI itself
-     * is returned as a ViewFactory.
-     *
-     * @return the ViewFactory for this RootView
-     */
-    public ViewFactory getViewFactory()
-    {
-      ViewFactory factory = null;
-      EditorKit editorKit = BasicTextUI.this.getEditorKit(getComponent());
-      factory = editorKit.getViewFactory();
-      if (factory == null)
-        factory = BasicTextUI.this;
-      return factory;
-    }
-
-    /**
-     * Indicates that the preferences of one of the child view has changed.
-     * This calls revalidate on the text component.
-     *
-     * @param v the child view which's preference has changed
-     * @param width <code>true</code> if the width preference has changed
-     * @param height <code>true</code> if the height preference has changed
-     */
-    public void preferenceChanged(View v, boolean width, boolean height)
-    {
-      textComponent.revalidate();
-    }
-
-    /**
-     * Sets the real root view.
-     *
-     * @param v the root view to set
-     */
-    public void setView(View v)
-    {
-      if (view != null)
-        view.setParent(null);
-
-      if (v != null)
-        v.setParent(this);
-
-      view = v;
-    }
-
-    /**
-     * Returns the real root view, regardless of the index.
-     *
-     * @param index not used here
-     *
-     * @return the real root view, regardless of the index.
-     */
-    public View getView(int index)
-    {
-      return view;
-    }
-
-    /**
-     * Returns <code>1</code> since the RootView always contains one
-     * child, that is the real root of the View hierarchy.
-     *
-     * @return <code>1</code> since the RootView always contains one
-     *         child, that is the real root of the View hierarchy
-     */
-    public int getViewCount()
-    {
-      int count = 0;
-      if (view != null)
-        count = 1;
-      return count;
-    }
-
-    /**
-     * Returns the <code>Container</code> that contains this view. This
-     * normally will be the text component that is managed by this TextUI.
-     *
-     * @return the <code>Container</code> that contains this view
-     */
-    public Container getContainer()
-    {
-      return textComponent;
-    }
-
-    /**
-     * Sets the size of the renderer. This is synchronized because that
-     * potentially triggers layout and we don't want more than one thread
-     * playing with the layout information.
-     */
-    public synchronized void setSize(float w, float h)
-    {
-      if (view != null)
-        view.setSize(w, h);
-    }
-
-    /**
-     * Paints the view. This is delegated to the real root view.
-     *
-     * @param g the <code>Graphics</code> context to paint to
-     * @param s the allocation for the View
-     */
-    public void paint(Graphics g, Shape s)
-    {
-      if (view != null)
-        {
-          Rectangle b = s instanceof Rectangle ? (Rectangle) s : s.getBounds();
-          setSize(b.width, b.height);
-          view.paint(g, s);
-        }
-    }
-
-
-    /**
-     * Maps a position in the document into the coordinate space of the View.
-     * The output rectangle usually reflects the font height but has a width
-     * of zero.
-     *
-     * This is delegated to the real root view.
-     *
-     * @param position the position of the character in the model
-     * @param a the area that is occupied by the view
-     * @param bias either {@link Position.Bias#Forward} or
-     *        {@link Position.Bias#Backward} depending on the preferred
-     *        direction bias. If <code>null</code> this defaults to
-     *        <code>Position.Bias.Forward</code>
-     *
-     * @return a rectangle that gives the location of the document position
-     *         inside the view coordinate space
-     *
-     * @throws BadLocationException if <code>pos</code> is invalid
-     * @throws IllegalArgumentException if b is not one of the above listed
-     *         valid values
-     */
-    public Shape modelToView(int position, Shape a, Position.Bias bias)
-      throws BadLocationException
-    {
-      return view.modelToView(position, a, bias);
-    }
-
-    /**
-     * Maps coordinates from the <code>View</code>'s space into a position
-     * in the document model.
-     *
-     * @param x the x coordinate in the view space
-     * @param y the y coordinate in the view space
-     * @param a the allocation of this <code>View</code>
-     * @param b the bias to use
-     *
-     * @return the position in the document that corresponds to the screen
-     *         coordinates <code>x, y</code>
-     */
-    public int viewToModel(float x, float y, Shape a, Position.Bias[] b)
-    {
-      return view.viewToModel(x, y, a, b);
-    }
-
-    /**
-     * Notification about text insertions. These are forwarded to the
-     * real root view.
-     *
-     * @param ev the DocumentEvent describing the change
-     * @param shape the current allocation of the view's display
-     * @param vf the ViewFactory to use for creating new Views
-     */
-    public void insertUpdate(DocumentEvent ev, Shape shape, ViewFactory vf)
-    {
-      if (view != null)
-        view.insertUpdate(ev, shape, vf);
-    }
-
-    /**
-     * Notification about text removals. These are forwarded to the
-     * real root view.
-     *
-     * @param ev the DocumentEvent describing the change
-     * @param shape the current allocation of the view's display
-     * @param vf the ViewFactory to use for creating new Views
-     */
-    public void removeUpdate(DocumentEvent ev, Shape shape, ViewFactory vf)
-    {
-      if (view != null)
-        view.removeUpdate(ev, shape, vf);
-    }
-
-    /**
-     * Notification about text changes. These are forwarded to the
-     * real root view.
-     *
-     * @param ev the DocumentEvent describing the change
-     * @param shape the current allocation of the view's display
-     * @param vf the ViewFactory to use for creating new Views
-     */
-    public void changedUpdate(DocumentEvent ev, Shape shape, ViewFactory vf)
-    {
-      if (view != null)
-        view.changedUpdate(ev, shape, vf);
-    }
-
-    /**
-     * Returns the document position that is (visually) nearest to the given
-     * document position <code>pos</code> in the given direction <code>d</code>.
-     *
-     * @param pos the document position
-     * @param b the bias for <code>pos</code>
-     * @param a the allocation for the view
-     * @param d the direction, must be either {@link SwingConstants#NORTH},
-     *        {@link SwingConstants#SOUTH}, {@link SwingConstants#WEST} or
-     *        {@link SwingConstants#EAST}
-     * @param biasRet an array of {@link Position.Bias} that can hold at least
-     *        one element, which is filled with the bias of the return position
-     *        on method exit
-     *
-     * @return the document position that is (visually) nearest to the given
-     *         document position <code>pos</code> in the given direction
-     *         <code>d</code>
-     *
-     * @throws BadLocationException if <code>pos</code> is not a valid offset in
-     *         the document model
-     */
-    public int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a,
-                                         int d, Position.Bias[] biasRet)
-      throws BadLocationException
-    {
-      return view.getNextVisualPositionFrom(pos, b, a, d, biasRet);
-    }
-
-    /**
-     * Returns the startOffset of this view, which is always the beginning
-     * of the document.
-     *
-     * @return the startOffset of this view
-     */
-    public int getStartOffset()
-    {
-      return 0;
-    }
-
-    /**
-     * Returns the endOffset of this view, which is always the end
-     * of the document.
-     *
-     * @return the endOffset of this view
-     */
-    public int getEndOffset()
-    {
-      return getDocument().getLength();
-    }
-
-    /**
-     * Returns the document associated with this view.
-     *
-     * @return the document associated with this view
-     */
-    public Document getDocument()
-    {
-      return textComponent.getDocument();
-    }
-
-    /**
-     * Returns the attributes, which is null for the RootView.
-     */
-    public AttributeSet getAttributes()
-    {
-      return null;
-    }
-
-    /**
-     * Overridden to forward to the view.
-     */
-    public float getPreferredSpan(int axis)
-    {
-      // The RI returns 10 in the degenerate case.
-      float span = 10;
-      if (view != null)
-        span = view.getPreferredSpan(axis);
-      return span;
-    }
-
-    /**
-     * Overridden to forward to the real view.
-     */
-    public float getMinimumSpan(int axis)
-    {
-      // The RI returns 10 in the degenerate case.
-      float span = 10;
-      if (view != null)
-        span = view.getMinimumSpan(axis);
-      return span;
-    }
-
-    /**
-     * Overridden to return Integer.MAX_VALUE.
-     */
-    public float getMaximumSpan(int axis)
-    {
-      // The RI returns Integer.MAX_VALUE here, regardless of the real view's
-      // maximum size.
-      return Integer.MAX_VALUE;
-    }
-  }
-
-  /**
-   * The EditorKit used by this TextUI.
-   */
-  private static EditorKit kit;
-
-  /**
-   * The combined event handler for text components.
-   *
-   * This is package private to avoid accessor methods.
-   */
-  Handler handler;
-
-  /**
-   * The root view.
-   *
-   * This is package private to avoid accessor methods.
-   */
-  RootView rootView;
-
-  /**
-   * The text component that we handle.
-   */
-  JTextComponent textComponent;
-
-  /**
-   * Creates a new <code>BasicTextUI</code> instance.
-   */
-  public BasicTextUI()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Creates a {@link Caret} that should be installed into the text component.
-   *
-   * @return a caret that should be installed into the text component
-   */
-  protected Caret createCaret()
-  {
-    return new BasicCaret();
-  }
-
-  /**
-   * Creates a {@link Highlighter} that should be installed into the text
-   * component.
-   *
-   * @return a <code>Highlighter</code> for the text component
-   */
-  protected Highlighter createHighlighter()
-  {
-    return new BasicHighlighter();
-  }
-
-  /**
-   * The text component that is managed by this UI.
-   *
-   * @return the text component that is managed by this UI
-   */
-  protected final JTextComponent getComponent()
-  {
-    return textComponent;
-  }
-
-  /**
-   * Installs this UI on the text component.
-   *
-   * @param c the text component on which to install the UI
-   */
-  public void installUI(final JComponent c)
-  {
-    textComponent = (JTextComponent) c;
-
-    if (rootView == null)
-      rootView = new RootView();
-
-    installDefaults();
-    installFixedDefaults();
-
-    // These listeners must be installed outside of installListeners(),
-    // because overriding installListeners() doesn't prevent installing
-    // these in the RI, but overriding isntallUI() does.
-    if (handler == null)
-      handler = new Handler();
-    textComponent.addPropertyChangeListener(handler);
-    Document doc = textComponent.getDocument();
-    if (doc == null)
-      {
-        // The Handler takes care of installing the necessary listeners
-        // on the document here.
-        doc = getEditorKit(textComponent).createDefaultDocument();
-        textComponent.setDocument(doc);
-      }
-    else
-      {
-        // Must install the document listener.
-        doc.addDocumentListener(handler);
-        modelChanged();
-      }
-
-    installListeners();
-    installKeyboardActions();
-  }
-
-  /**
-   * Installs UI defaults on the text components.
-   */
-  protected void installDefaults()
-  {
-    String prefix = getPropertyPrefix();
-    // Install the standard properties.
-    LookAndFeel.installColorsAndFont(textComponent, prefix + ".background",
-                                     prefix + ".foreground", prefix + ".font");
-    LookAndFeel.installBorder(textComponent, prefix + ".border");
-
-    // Some additional text component only properties.
-    Color color = textComponent.getCaretColor();
-    if (color == null || color instanceof UIResource)
-      {
-        color = UIManager.getColor(prefix + ".caretForeground");
-        textComponent.setCaretColor(color);
-      }
-
-    // Fetch the colors for enabled/disabled text components.
-    color = textComponent.getDisabledTextColor();
-    if (color == null || color instanceof UIResource)
-      {
-        color = UIManager.getColor(prefix + ".inactiveForeground");
-        textComponent.setDisabledTextColor(color);
-      }
-    color = textComponent.getSelectedTextColor();
-    if (color == null || color instanceof UIResource)
-      {
-        color = UIManager.getColor(prefix  + ".selectionForeground");
-        textComponent.setSelectedTextColor(color);
-      }
-    color = textComponent.getSelectionColor();
-    if (color == null || color instanceof UIResource)
-      {
-        color = UIManager.getColor(prefix  + ".selectionBackground");
-        textComponent.setSelectionColor(color);
-      }
-
-    Insets margin = textComponent.getMargin();
-    if (margin == null || margin instanceof UIResource)
-      {
-        margin = UIManager.getInsets(prefix + ".margin");
-        textComponent.setMargin(margin);
-      }
-
-  }
-
-  /**
-   * Installs defaults that can't be overridden by overriding
-   * installDefaults().
-   */
-  private void installFixedDefaults()
-  {
-    String prefix = getPropertyPrefix();
-    Caret caret = textComponent.getCaret();
-    if (caret == null || caret instanceof UIResource)
-      {
-        caret = createCaret();
-        textComponent.setCaret(caret);
-        caret.setBlinkRate(UIManager.getInt(prefix + ".caretBlinkRate"));
-      }
-
-    Highlighter highlighter = textComponent.getHighlighter();
-    if (highlighter == null || highlighter instanceof UIResource)
-      textComponent.setHighlighter(createHighlighter());
-
-  }
-
-  /**
-   * Install all listeners on the text component.
-   */
-  protected void installListeners()
-  {
-    //
-    if (SystemProperties.getProperty("gnu.swing.text.no-xlike-clipboard")
-        == null)
-      {
-        if (focusListener == null)
-          focusListener = new FocusHandler();
-        textComponent.addFocusListener(focusListener);
-      }
-  }
-
-  /**
-   * Returns the name of the keymap for this type of TextUI.
-   *
-   * This is implemented so that the classname of this TextUI
-   * without the package prefix is returned. This way subclasses
-   * don't have to override this method.
-   *
-   * @return the name of the keymap for this TextUI
-   */
-  protected String getKeymapName()
-  {
-    String fullClassName = getClass().getName();
-    int index = fullClassName.lastIndexOf('.');
-    String className = fullClassName.substring(index + 1);
-    return className;
-  }
-
-  /**
-   * Creates the {@link Keymap} that is installed on the text component.
-   *
-   * @return the {@link Keymap} that is installed on the text component
-   */
-  protected Keymap createKeymap()
-  {
-    String keymapName = getKeymapName();
-    Keymap keymap = JTextComponent.getKeymap(keymapName);
-    if (keymap == null)
-      {
-        Keymap parentMap =
-          JTextComponent.getKeymap(JTextComponent.DEFAULT_KEYMAP);
-        keymap = JTextComponent.addKeymap(keymapName, parentMap);
-        Object val = UIManager.get(getPropertyPrefix() + ".keyBindings");
-        if (val != null && val instanceof JTextComponent.KeyBinding[])
-          {
-            JTextComponent.KeyBinding[] bindings =
-              (JTextComponent.KeyBinding[]) val;
-            JTextComponent.loadKeymap(keymap, bindings,
-                                      getComponent().getActions());
-          }
-      }
-    return keymap;
-  }
-
-  /**
-   * Installs the keyboard actions on the text components.
-   */
-  protected void installKeyboardActions()
-  {
-    // This is only there for backwards compatibility.
-    textComponent.setKeymap(createKeymap());
-
-    // load any bindings for the newer InputMap / ActionMap interface
-    SwingUtilities.replaceUIInputMap(textComponent, JComponent.WHEN_FOCUSED,
-                                     getInputMap());
-    SwingUtilities.replaceUIActionMap(textComponent, getActionMap());
-  }
-
-  /**
-   * Creates an ActionMap to be installed on the text component.
-   *
-   * @return an ActionMap to be installed on the text component
-   */
-  private ActionMap getActionMap()
-  {
-    // Note: There are no .actionMap entries in the standard L&Fs. However,
-    // with the RI it is possible to install action maps via such keys, so
-    // we must load them too. It can be observed that when there is no
-    // .actionMap entry in the UIManager, one gets installed after a text
-    // component of that type has been loaded.
-    String prefix = getPropertyPrefix();
-    String amName = prefix + ".actionMap";
-    ActionMap am = (ActionMap) UIManager.get(amName);
-    if (am == null)
-      {
-        am = createActionMap();
-        UIManager.put(amName, am);
-      }
-
-    ActionMap map = new ActionMapUIResource();
-    map.setParent(am);
-
-    return map;
-  }
-
-  /**
-   * Creates a default ActionMap for text components that have no UI default
-   * for this (the standard for the built-in L&Fs). The ActionMap is copied
-   * from the text component's getActions() method.
-   *
-   * @returna default ActionMap
-   */
-  private ActionMap createActionMap()
-  {
-    ActionMap am = new ActionMapUIResource();
-    Action[] actions = textComponent.getActions();
-    for (int i = actions.length - 1; i >= 0; i--)
-      {
-        Action action = actions[i];
-        am.put(action.getValue(Action.NAME), action);
-      }
-    // Add TransferHandler's actions here. They don't seem to be in the
-    // JTextComponent's default actions, and I can't make up a better place
-    // to add them.
-    Action copyAction = TransferHandler.getCopyAction();
-    am.put(copyAction.getValue(Action.NAME), copyAction);
-    Action cutAction = TransferHandler.getCutAction();
-    am.put(cutAction.getValue(Action.NAME), cutAction);
-    Action pasteAction = TransferHandler.getPasteAction();
-    am.put(pasteAction.getValue(Action.NAME), pasteAction);
-
-    return am;
-  }
-
-  /**
-   * Gets the input map for the specified <code>condition</code>.
-   *
-   * @return the InputMap for the specified condition
-   */
-  private InputMap getInputMap()
-  {
-    InputMap im = new InputMapUIResource();
-    String prefix = getPropertyPrefix();
-    InputMap shared =
-      (InputMap) SharedUIDefaults.get(prefix + ".focusInputMap");
-    if (shared != null)
-      im.setParent(shared);
-    return im;
-  }
-
-  /**
-   * Uninstalls this TextUI from the text component.
-   *
-   * @param component the text component to uninstall the UI from
-   */
-  public void uninstallUI(final JComponent component)
-  {
-    textComponent.removePropertyChangeListener(handler);
-    textComponent.getDocument().removeDocumentListener(handler);
-    rootView.setView(null);
-
-    uninstallDefaults();
-    uninstallFixedDefaults();
-    uninstallListeners();
-    uninstallKeyboardActions();
-
-    textComponent = null;
-  }
-
-  /**
-   * Uninstalls all default properties that have previously been installed by
-   * this UI.
-   */
-  protected void uninstallDefaults()
-  {
-    if (textComponent.getCaretColor() instanceof UIResource)
-      textComponent.setCaretColor(null);
-    if (textComponent.getSelectionColor() instanceof UIResource)
-      textComponent.setSelectionColor(null);
-    if (textComponent.getDisabledTextColor() instanceof UIResource)
-      textComponent.setDisabledTextColor(null);
-    if (textComponent.getSelectedTextColor() instanceof UIResource)
-      textComponent.setSelectedTextColor(null);
-    LookAndFeel.uninstallBorder(textComponent);
-    if (textComponent.getMargin() instanceof UIResource)
-      textComponent.setMargin(null);
-  }
-
-  /**
-   * Uninstalls additional fixed defaults that were installed
-   * by installFixedDefaults().
-   */
-  private void uninstallFixedDefaults()
-  {
-    if (textComponent.getCaret() instanceof UIResource)
-      textComponent.setCaret(null);
-    if (textComponent.getHighlighter() instanceof UIResource)
-      textComponent.setHighlighter(null);
-  }
-
-  /**
-   * Uninstalls all listeners that have previously been installed by
-   * this UI.
-   */
-  protected void uninstallListeners()
-  {
-    // Don't nullify the focusListener field, as it is static and shared
-    // between components.
-    if (focusListener != null)
-      textComponent.removeFocusListener(focusListener);
-  }
-
-  /**
-   * Uninstalls all keyboard actions that have previously been installed by
-   * this UI.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    SwingUtilities.replaceUIInputMap(textComponent, JComponent.WHEN_FOCUSED,
-                                     null);
-    SwingUtilities.replaceUIActionMap(textComponent, null);
-  }
-
-  /**
-   * Returns the property prefix by which the text component's UIDefaults
-   * are looked up.
-   *
-   * @return the property prefix by which the text component's UIDefaults
-   *     are looked up
-   */
-  protected abstract String getPropertyPrefix();
-
-  /**
-   * Returns the preferred size of the text component.
-   *
-   * @param c not used here
-   *
-   * @return the preferred size of the text component
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension d = c.getSize();
-    Insets i = c.getInsets();
-    // We need to lock here, since we require the view hierarchy to _not_
-    // change in between.
-    float w;
-    float h;
-    Document doc = textComponent.getDocument();
-    if (doc instanceof AbstractDocument)
-      ((AbstractDocument) doc).readLock();
-    try
-      {
-        if (d.width > (i.left + i.right) && d.height > (i.top + i.bottom))
-          {
-            rootView.setSize(d.width - i.left - i.right,
-                             d.height - i.top - i.bottom);
-          }
-        else
-          {
-            // Not laid out yet. Force some pseudo size.
-            rootView.setSize(Integer.MAX_VALUE, Integer.MAX_VALUE);
-          }
-        w = rootView.getPreferredSpan(View.X_AXIS);
-        h = rootView.getPreferredSpan(View.Y_AXIS);
-      }
-    finally
-      {
-        if (doc instanceof AbstractDocument)
-          ((AbstractDocument) doc).readUnlock();
-      }
-    Dimension size =  new Dimension((int) w + i.left + i.right,
-                         (int) h + i.top + i.bottom);
-    return size;
-  }
-
-  /**
-   * Returns the maximum size for text components that use this UI.
-   *
-   * This returns (Integer.MAX_VALUE, Integer.MAX_VALUE).
-   *
-   * @param c not used here
-   *
-   * @return the maximum size for text components that use this UI
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension d = new Dimension();
-    Insets i = c.getInsets();
-    Document doc = textComponent.getDocument();
-    // We need to lock here, since we require the view hierarchy to _not_
-    // change in between.
-    if (doc instanceof AbstractDocument)
-      ((AbstractDocument) doc).readLock();
-    try
-      {
-        // Check for overflow here.
-        d.width = (int) Math.min((long) rootView.getMaximumSpan(View.X_AXIS)
-                                 + i.left + i.right, Integer.MAX_VALUE);
-        d.height = (int) Math.min((long) rootView.getMaximumSpan(View.Y_AXIS)
-                                  + i.top + i.bottom, Integer.MAX_VALUE);
-      }
-    finally
-      {
-        if (doc instanceof AbstractDocument)
-          ((AbstractDocument) doc).readUnlock();
-      }
-    return d;
-  }
-
-  /**
-   * Returns the minimum size for text components. This returns the size
-   * of the component's insets.
-   *
-   * @return the minimum size for text components
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension d = new Dimension();
-    Document doc = textComponent.getDocument();
-    // We need to lock here, since we require the view hierarchy to _not_
-    // change in between.
-    if (doc instanceof AbstractDocument)
-      ((AbstractDocument) doc).readLock();
-    try
-      {
-        d.width = (int) rootView.getMinimumSpan(View.X_AXIS);
-        d.height = (int) rootView.getMinimumSpan(View.Y_AXIS);
-      }
-    finally
-      {
-        if (doc instanceof AbstractDocument)
-          ((AbstractDocument) doc).readUnlock();
-      }
-    Insets i = c.getInsets();
-    d.width += i.left + i.right;
-    d.height += i.top + i.bottom;
-    return d;
-  }
-
-  /**
-   * Paints the text component. This acquires a read lock on the model and then
-   * calls {@link #paintSafely(Graphics)} in order to actually perform the
-   * painting.
-   *
-   * @param g the <code>Graphics</code> context to paint to
-   * @param c not used here
-   */
-  public final void paint(Graphics g, JComponent c)
-  {
-    try
-      {
-        Document doc = textComponent.getDocument();
-        if (doc instanceof AbstractDocument)
-          {
-            AbstractDocument aDoc = (AbstractDocument) doc;
-            aDoc.readLock();
-          }
-        paintSafely(g);
-      }
-    finally
-      {
-        Document doc = textComponent.getDocument();
-        if (doc instanceof AbstractDocument)
-          {
-            AbstractDocument aDoc = (AbstractDocument) doc;
-            aDoc.readUnlock();
-          }
-      }
-  }
-
-  /**
-   * This paints the text component while beeing sure that the model is not
-   * modified while painting.
-   *
-   * The following is performed in this order:
-   * <ol>
-   * <li>If the text component is opaque, the background is painted by
-   * calling {@link #paintBackground(Graphics)}.</li>
-   * <li>If there is a highlighter, the highlighter is painted.</li>
-   * <li>The view hierarchy is painted.</li>
-   * <li>The Caret is painter.</li>
-   * </ol>
-   *
-   * @param g the <code>Graphics</code> context to paint to
-   */
-  protected void paintSafely(Graphics g)
-  {
-    Caret caret = textComponent.getCaret();
-    Highlighter highlighter = textComponent.getHighlighter();
-
-    if (textComponent.isOpaque())
-      paintBackground(g);
-
-    // Try painting with the highlighter without checking whether there
-    // is a selection because a highlighter can be used to do more than
-    // marking selected text.
-    if (highlighter != null)
-      {
-        // Handle restoring of the color here to prevent
-        // drawing problems when the Highlighter implementor
-        // forgets to restore it.
-        Color oldColor = g.getColor();
-        highlighter.paint(g);
-        g.setColor(oldColor);
-      }
-
-    rootView.paint(g, getVisibleEditorRect());
-
-    if (caret != null && textComponent.hasFocus())
-      caret.paint(g);
-  }
-
-  /**
-   * Paints the background of the text component.
-   *
-   * @param g the <code>Graphics</code> context to paint to
-   */
-  protected void paintBackground(Graphics g)
-  {
-    Color old = g.getColor();
-    g.setColor(textComponent.getBackground());
-    g.fillRect(0, 0, textComponent.getWidth(), textComponent.getHeight());
-    g.setColor(old);
-  }
-
-  /**
-   * Overridden for better control over background painting. This now simply
-   * calls {@link #paint} and this delegates the background painting to
-   * {@link #paintBackground}.
-   *
-   * @param g the graphics to use
-   * @param c the component to be painted
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    paint(g, c);
-  }
-
-  /**
-   * Marks the specified range inside the text component's model as
-   * damaged and queues a repaint request.
-   *
-   * @param t the text component
-   * @param p0 the start location inside the document model of the range that
-   *        is damaged
-   * @param p1 the end location inside the document model of the range that
-   *        is damaged
-   */
-  public void damageRange(JTextComponent t, int p0, int p1)
-  {
-    damageRange(t, p0, p1, Position.Bias.Forward, Position.Bias.Backward);
-  }
-
-  /**
-   * Marks the specified range inside the text component's model as
-   * damaged and queues a repaint request. This variant of this method
-   * allows a {@link Position.Bias} object to be specified for the start
-   * and end location of the range.
-   *
-   * @param t the text component
-   * @param p0 the start location inside the document model of the range that
-   *        is damaged
-   * @param p1 the end location inside the document model of the range that
-   *        is damaged
-   * @param firstBias the bias for the start location
-   * @param secondBias the bias for the end location
-   */
-  public void damageRange(JTextComponent t, int p0, int p1,
-                          Position.Bias firstBias, Position.Bias secondBias)
-  {
-    Rectangle alloc = getVisibleEditorRect();
-    if (alloc != null)
-      {
-        Document doc = t.getDocument();
-
-        // Acquire lock here to avoid structural changes in between.
-        if (doc instanceof AbstractDocument)
-          ((AbstractDocument) doc).readLock();
-        try
-          {
-            rootView.setSize(alloc.width, alloc.height);
-            Shape damage = rootView.modelToView(p0, firstBias, p1, secondBias,
-                                                alloc);
-            Rectangle r = damage instanceof Rectangle ? (Rectangle) damage
-                                                      : damage.getBounds();
-            textComponent.repaint(r.x, r.y, r.width, r.height);
-          }
-        catch (BadLocationException ex)
-          {
-            // Lets ignore this as it causes no serious problems.
-            // For debugging, comment this out.
-            // ex.printStackTrace();
-          }
-        finally
-          {
-            // Release lock.
-            if (doc instanceof AbstractDocument)
-              ((AbstractDocument) doc).readUnlock();
-          }
-      }
-  }
-
-  /**
-   * Returns the {@link EditorKit} used for the text component that is managed
-   * by this UI.
-   *
-   * @param t the text component
-   *
-   * @return the {@link EditorKit} used for the text component that is managed
-   *         by this UI
-   */
-  public EditorKit getEditorKit(JTextComponent t)
-  {
-    if (kit == null)
-      kit = new DefaultEditorKit();
-    return kit;
-  }
-
-  /**
-   * Gets the next position inside the document model that is visible on
-   * screen, starting from <code>pos</code>.
-   *
-   * @param t the text component
-   * @param pos the start positionn
-   * @param b the bias for pos
-   * @param direction the search direction
-   * @param biasRet filled by the method to indicate the bias of the return
-   *        value
-   *
-   * @return the next position inside the document model that is visible on
-   *         screen
-   */
-  public int getNextVisualPositionFrom(JTextComponent t, int pos,
-                                       Position.Bias b, int direction,
-                                       Position.Bias[] biasRet)
-    throws BadLocationException
-  {
-    int offset = -1;
-    Document doc = textComponent.getDocument();
-    if (doc instanceof AbstractDocument)
-      ((AbstractDocument) doc).readLock();
-    try
-      {
-        Rectangle alloc = getVisibleEditorRect();
-        if (alloc != null)
-          {
-            rootView.setSize(alloc.width, alloc.height);
-            offset = rootView.getNextVisualPositionFrom(pos, b, alloc,
-                                                        direction, biasRet);
-          }
-      }
-    finally
-      {
-        if (doc instanceof AbstractDocument)
-          ((AbstractDocument) doc).readUnlock();
-      }
-    return offset;
-  }
-
-  /**
-   * Returns the root {@link View} of a text component.
-   *
-   * @return the root {@link View} of a text component
-   */
-  public View getRootView(JTextComponent t)
-  {
-    return rootView;
-  }
-
-  /**
-   * Maps a position in the document into the coordinate space of the View.
-   * The output rectangle usually reflects the font height but has a width
-   * of zero. A bias of {@link Position.Bias#Forward} is used in this method.
-   *
-   * @param t the text component
-   * @param pos the position of the character in the model
-   *
-   * @return a rectangle that gives the location of the document position
-   *         inside the view coordinate space
-   *
-   * @throws BadLocationException if <code>pos</code> is invalid
-   * @throws IllegalArgumentException if b is not one of the above listed
-   *         valid values
-   */
-  public Rectangle modelToView(JTextComponent t, int pos)
-    throws BadLocationException
-  {
-    return modelToView(t, pos, Position.Bias.Forward);
-  }
-
-  /**
-   * Maps a position in the document into the coordinate space of the View.
-   * The output rectangle usually reflects the font height but has a width
-   * of zero.
-   *
-   * @param t the text component
-   * @param pos the position of the character in the model
-   * @param bias either {@link Position.Bias#Forward} or
-   *        {@link Position.Bias#Backward} depending on the preferred
-   *        direction bias. If <code>null</code> this defaults to
-   *        <code>Position.Bias.Forward</code>
-   *
-   * @return a rectangle that gives the location of the document position
-   *         inside the view coordinate space
-   *
-   * @throws BadLocationException if <code>pos</code> is invalid
-   * @throws IllegalArgumentException if b is not one of the above listed
-   *         valid values
-   */
-  public Rectangle modelToView(JTextComponent t, int pos, Position.Bias bias)
-    throws BadLocationException
-  {
-    // We need to read-lock here because we depend on the document
-    // structure not beeing changed in between.
-    Document doc = textComponent.getDocument();
-    if (doc instanceof AbstractDocument)
-      ((AbstractDocument) doc).readLock();
-    Rectangle rect = null;
-    try
-      {
-        Rectangle r = getVisibleEditorRect();
-        if (r != null)
-          {
-            rootView.setSize(r.width, r.height);
-            Shape s = rootView.modelToView(pos, r, bias);
-            if (s != null)
-              rect = s.getBounds();
-          }
-      }
-    finally
-      {
-        if (doc instanceof AbstractDocument)
-          ((AbstractDocument) doc).readUnlock();
-      }
-    return rect;
-  }
-
-  /**
-   * Maps a point in the <code>View</code> coordinate space to a position
-   * inside a document model.
-   *
-   * @param t the text component
-   * @param pt the point to be mapped
-   *
-   * @return the position inside the document model that corresponds to
-   *     <code>pt</code>
-   */
-  public int viewToModel(JTextComponent t, Point pt)
-  {
-    return viewToModel(t, pt, new Position.Bias[1]);
-  }
-
-  /**
-   * Maps a point in the <code>View</code> coordinate space to a position
-   * inside a document model.
-   *
-   * @param t the text component
-   * @param pt the point to be mapped
-   * @param biasReturn filled in by the method to indicate the bias of the
-   *        return value
-   *
-   * @return the position inside the document model that corresponds to
-   *     <code>pt</code>
-   */
-  public int viewToModel(JTextComponent t, Point pt, Position.Bias[] biasReturn)
-  {
-    int offset = -1;
-    Document doc = textComponent.getDocument();
-    if (doc instanceof AbstractDocument)
-      ((AbstractDocument) doc).readLock();
-    try
-      {
-        Rectangle alloc = getVisibleEditorRect();
-        if (alloc != null)
-          {
-            rootView.setSize(alloc.width, alloc.height);
-            offset = rootView.viewToModel(pt.x, pt.y, alloc, biasReturn);
-          }
-      }
-    finally
-      {
-        if (doc instanceof AbstractDocument)
-          ((AbstractDocument) doc).readUnlock();
-      }
-    return offset;
-  }
-
-  /**
-   * Creates a {@link View} for the specified {@link Element}.
-   *
-   * @param elem the <code>Element</code> to create a <code>View</code> for
-   *
-   * @see ViewFactory
-   */
-  public View create(Element elem)
-  {
-    // Subclasses have to implement this to get this functionality.
-    return null;
-  }
-
-  /**
-   * Creates a {@link View} for the specified {@link Element}.
-   *
-   * @param elem the <code>Element</code> to create a <code>View</code> for
-   * @param p0 the start offset
-   * @param p1 the end offset
-   *
-   * @see ViewFactory
-   */
-  public View create(Element elem, int p0, int p1)
-  {
-    // Subclasses have to implement this to get this functionality.
-    return null;
-  }
-
-  /**
-   * A cached Insets instance to be reused below.
-   */
-  private Insets cachedInsets;
-
-  /**
-   * Returns the allocation to give the root view.
-   *
-   * @return the allocation to give the root view
-   *
-   * @specnote The allocation has nothing to do with visibility. According
-   *           to the specs the naming of this method is unfortunate and
-   *           has historical reasons
-   */
-  protected Rectangle getVisibleEditorRect()
-  {
-    int width = textComponent.getWidth();
-    int height = textComponent.getHeight();
-
-    // Return null if the component has no valid size.
-    if (width <= 0 || height <= 0)
-      return null;
-
-    Insets insets = textComponent.getInsets(cachedInsets);
-    return new Rectangle(insets.left, insets.top,
-                         width - insets.left - insets.right,
-                         height - insets.top - insets.bottom);
-  }
-
-  /**
-   * Sets the root view for the text component.
-   *
-   * @param view the <code>View</code> to be set as root view
-   */
-  protected final void setView(View view)
-  {
-    rootView.setView(view);
-    textComponent.revalidate();
-    textComponent.repaint();
-  }
-
-  /**
-   * Indicates that the model of a text component has changed. This
-   * triggers a rebuild of the view hierarchy.
-   */
-  protected void modelChanged()
-  {
-    if (textComponent == null || rootView == null)
-      return;
-    ViewFactory factory = rootView.getViewFactory();
-    if (factory == null)
-      return;
-    Document doc = textComponent.getDocument();
-    if (doc == null)
-      return;
-    Element elem = doc.getDefaultRootElement();
-    if (elem == null)
-      return;
-    View view = factory.create(elem);
-    setView(view);
-  }
-
-  /**
-   * Receives notification whenever one of the text component's bound
-   * properties changes. This default implementation does nothing.
-   * It is a hook that enables subclasses to react to property changes
-   * on the text component.
-   *
-   * @param ev the property change event
-   */
-  protected void propertyChange(PropertyChangeEvent ev)
-  {
-    // The default implementation does nothing.
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicToggleButtonUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicToggleButtonUI.java
deleted file mode 100644
index 4550f08..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicToggleButtonUI.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/* BasicToggleButtonUI.java
-   Copyright (C) 2002, 2004, 2005, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Font;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-
-import javax.swing.AbstractButton;
-import javax.swing.JComponent;
-import javax.swing.JToggleButton;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * A UI delegate for the {@link JToggleButton} component.
- */
-public class BasicToggleButtonUI extends BasicButtonUI
-{
-
-  /**
-   * Returns a UI delegate for the specified component.
-   *
-   * @param component  the component (should be an instance of
-   *     {@link JToggleButton}).
-   *
-   * @return An instance of <code>BasicToggleButtonUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new BasicToggleButtonUI();
-  }
-
-  /**
-   * Returns the prefix for entries in the {@link UIManager} defaults table
-   * (<code>"ToggleButton."</code> in this case).
-   *
-   * @return <code>"ToggleButton."</code>
-   */
-  protected String getPropertyPrefix()
-  {
-    return "ToggleButton.";
-  }
-
-  /**
-   * Paint the component, which is an {@link AbstractButton}, according to
-   * its current state.
-   *
-   * @param g The graphics context to paint with
-   * @param c The component to paint the state of
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    AbstractButton b = (AbstractButton) c;
-
-    Rectangle tr = new Rectangle();
-    Rectangle ir = new Rectangle();
-    Rectangle vr = new Rectangle();
-
-    Font f = c.getFont();
-
-    g.setFont(f);
-
-    if (b.isBorderPainted())
-      SwingUtilities.calculateInnerArea(b, vr);
-    else
-      vr = SwingUtilities.getLocalBounds(b);
-    String text = SwingUtilities.layoutCompoundLabel(c, g.getFontMetrics(f),
-        b.getText(), currentIcon(b), b.getVerticalAlignment(),
-        b.getHorizontalAlignment(), b.getVerticalTextPosition(),
-        b.getHorizontalTextPosition(), vr, ir, tr, b.getIconTextGap()
-        + defaultTextShiftOffset);
-
-    if ((b.getModel().isArmed() && b.getModel().isPressed())
-        || b.isSelected())
-      paintButtonPressed(g, b);
-
-    paintIcon(g, b, ir);
-    if (text != null)
-      paintText(g, b, tr, text);
-    if (b.isFocusOwner() && b.isFocusPainted())
-      paintFocus(g, b, vr, tr, ir);
-  }
-
-  /**
-   * Paints the icon for the toggle button. This delegates to
-   * {@link BasicButtonUI#paintIcon(Graphics, JComponent, Rectangle)}.
-   *
-   * @param g the graphics context
-   * @param b the button to paint the icon for
-   * @param iconRect the area allocated for the icon
-   */
-  protected void paintIcon(Graphics g, AbstractButton b, Rectangle iconRect)
-  {
-    super.paintIcon(g, b, iconRect);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicToolBarSeparatorUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicToolBarSeparatorUI.java
deleted file mode 100644
index 79cf0b0..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicToolBarSeparatorUI.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/* BasicToolBarSeparatorUI.java --
-   Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-
-import javax.swing.JComponent;
-import javax.swing.JSeparator;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * The Basic Look and Feel UI delegate for Separator.
- */
-public class BasicToolBarSeparatorUI extends BasicSeparatorUI
-{
-  private transient Dimension size;
-
-  /**
-   * Creates a new UI delegate for the given JComponent.
-   *
-   * @param c The JComponent to create a delegate for.
-   *
-   * @return A new BasicToolBarSeparatorUI.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicToolBarSeparatorUI();
-  }
-
-  /**
-   * This method installs the defaults that are given by the Basic L&F.
-   *
-   * @param s The Separator that is being installed.
-   */
-  protected void installDefaults(JSeparator s)
-  {
-    size = UIManager.getDimension("ToolBar.separatorSize");
-  }
-
-  /**
-   * This method does nothing as a Separator is just blank space.
-   *
-   * @param g The Graphics object to paint with
-   * @param c The JComponent to paint.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    // Do nothing.
-  }
-
-  /**
-   * This method returns the preferred size of the  JComponent.
-   *
-   * @param c The JComponent to measure.
-   *
-   * @return The preferred size.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    return size;
-  }
-
-  /**
-   * This method returns the minimum size of the JComponent.
-   *
-   * @param c The JComponent to measure.
-   *
-   * @return The minimum size.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    return size;
-  }
-
-  /**
-   * This method returns the maximum size of the JComponent.
-   *
-   * @param c The JComponent to measure.
-   *
-   * @return The maximum size.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return size;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicToolBarUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicToolBarUI.java
deleted file mode 100644
index f5b2b2d..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicToolBarUI.java
+++ /dev/null
@@ -1,1610 +0,0 @@
-/* BasicToolBarUI.java --
-   Copyright (C) 2004, 2005, 2006  Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.Window;
-import java.awt.event.ActionEvent;
-import java.awt.event.ContainerEvent;
-import java.awt.event.ContainerListener;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.awt.event.MouseEvent;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.awt.event.WindowListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.Hashtable;
-
-import javax.swing.AbstractAction;
-import javax.swing.AbstractButton;
-import javax.swing.Action;
-import javax.swing.ActionMap;
-import javax.swing.InputMap;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-import javax.swing.JToolBar;
-import javax.swing.KeyStroke;
-import javax.swing.LookAndFeel;
-import javax.swing.RootPaneContainer;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
-import javax.swing.border.CompoundBorder;
-import javax.swing.event.MouseInputListener;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ToolBarUI;
-import javax.swing.plaf.UIResource;
-import javax.swing.plaf.basic.BasicBorders.ButtonBorder;
-
-/**
- * This is the Basic Look and Feel UI class for JToolBar.
- */
-public class BasicToolBarUI extends ToolBarUI implements SwingConstants
-{
-
-  /**
-   * Implements the keyboard actions for JToolBar.
-   */
-  static class ToolBarAction
-    extends AbstractAction
-  {
-    /**
-     * Performs the action.
-     */
-    public void actionPerformed(ActionEvent event)
-    {
-      Object cmd = getValue("__command__");
-      JToolBar toolBar = (JToolBar) event.getSource();
-      BasicToolBarUI ui = (BasicToolBarUI) toolBar.getUI();
-
-      if (cmd.equals("navigateRight"))
-        ui.navigateFocusedComp(EAST);
-      else if (cmd.equals("navigateLeft"))
-          ui.navigateFocusedComp(WEST);
-      else if (cmd.equals("navigateUp"))
-          ui.navigateFocusedComp(NORTH);
-      else if (cmd.equals("navigateDown"))
-        ui.navigateFocusedComp(SOUTH);
-      else
-        assert false : "Shouldn't reach here";
-    }
-  }
-
-  /** Static owner of all DragWindows.
-   * This is package-private to avoid an accessor method.  */
-  static JFrame owner = new JFrame();
-
-  /** The border used when the JToolBar is in nonrollover mode. */
-  private static Border nonRolloverBorder;
-
-  /** The border used when the JToolBar is in rollover mode. */
-  private static Border rolloverBorder;
-
-  /** The last known BorderLayout constraint before floating. */
-  protected String constraintBeforeFloating;
-
-  /** The last known orientation of the JToolBar before floating.
-   * This is package-private to avoid an accessor method.  */
-  int lastGoodOrientation;
-
-  /** The color of the border when it is dockable. */
-  protected Color dockingBorderColor;
-
-  /** The background color of the JToolBar when it is dockable. */
-  protected Color dockingColor;
-
-  /** The docking listener responsible for mouse events on the JToolBar. */
-  protected MouseInputListener dockingListener;
-
-  /** The window used for dragging the JToolBar. */
-  protected BasicToolBarUI.DragWindow dragWindow;
-
-  /** The color of the border when it is not dockable. */
-  protected Color floatingBorderColor;
-
-  /** The background color of the JToolBar when it is not dockable. */
-  protected Color floatingColor;
-
-  /** The index of the focused component. */
-  protected int focusedCompIndex;
-
-  /** The PropertyChangeListener for the JToolBar. */
-  protected PropertyChangeListener propertyListener;
-
-  /** The JToolBar this UI delegate is responsible for. */
-  protected JToolBar toolBar;
-
-  /** The Container listener for the JToolBar. */
-  protected ContainerListener toolBarContListener;
-
-  /** The Focus listener for the JToolBar. */
-  protected FocusListener toolBarFocusListener;
-
-  /**
-   * @deprecated since JDK1.3.
-   */
-  protected KeyStroke leftKey;
-
-  /**
-   * @deprecated since JDK1.3.
-   */
-  protected KeyStroke rightKey;
-
-  /**
-   * @deprecated since JDK1.3.
-   */
-  protected KeyStroke upKey;
-
-  /**
-   * @deprecated since JDK1.3.
-   */
-  protected KeyStroke downKey;
-
-  /**
-   * The floating window that is responsible for holding the JToolBar when it
-   * is dragged outside of its original parent.
-   */
-  private transient Window floatFrame;
-
-  /** The original parent of the JToolBar.
-   * This is package-private to avoid an accessor method.  */
-  transient Container origParent;
-
-  /** A hashtable of components and their original borders.
-   * This is package-private to avoid an accessor method.  */
-  transient Hashtable borders;
-
-  /** A window listener for the floatable frame. */
-  private transient WindowListener windowListener;
-
-  /** A set of cached bounds of the JToolBar.
-   * This is package-private to avoid an accessor method.  */
-  transient Dimension cachedBounds;
-
-  /** The cached orientation of the JToolBar.
-   * This is package-private to avoid an accessor method.  */
-  transient int cachedOrientation;
-
-  /**
-   * This method creates a new <code>BasicToolBarUI</code> object for the given JToolBar.
-   */
-  public BasicToolBarUI()
-  {
-    // Do nothing here.
-  }
-
-  /**
-   * This method returns whether the JToolBar can dock at the given position.
-   *
-   * @param c The component to try to dock in.
-   * @param p The position of the mouse cursor relative to the given
-   *        component.
-   *
-   * @return Whether the JToolBar can dock.
-   */
-  public boolean canDock(Component c, Point p)
-  {
-    return areaOfClick(c, p) != -1;
-  }
-
-  /**
-   * This helper method returns the position of the JToolBar if it can dock.
-   *
-   * @param c The component to try to dock in.
-   * @param p The position of the mouse cursor relative to the given
-   *        component.
-   *
-   * @return One of the SwingConstants directions or -1 if the JToolBar can't
-   *         dock.
-   */
-  private int areaOfClick(Component c, Point p)
-  {
-    // Has to dock in immediate parent, not eventual root container.
-    Rectangle pBounds = c.getBounds();
-
-    // XXX: In Sun's implementation, the space the toolbar has to dock is dependent on the size it had last.
-    Dimension d = toolBar.getSize();
-    int limit = Math.min(d.width, d.height);
-
-    // The order of checking is 1. top 2. bottom 3. left 4. right
-    if (! pBounds.contains(p))
-      return -1;
-
-    if (p.y < limit)
-      return SwingConstants.NORTH;
-
-    if (p.y > (pBounds.height - limit))
-      return SwingConstants.SOUTH;
-
-    if (p.x < limit)
-      return SwingConstants.WEST;
-
-    if (p.x > (pBounds.width - limit))
-      return SwingConstants.EAST;
-
-    return -1;
-  }
-
-  /**
-   * This method creates a new DockingListener for the JToolBar.
-   *
-   * @return A new DockingListener for the JToolBar.
-   */
-  protected MouseInputListener createDockingListener()
-  {
-    return new DockingListener(toolBar);
-  }
-
-  /**
-   * This method creates a new DragWindow for the given JToolBar.
-   *
-   * @param toolbar The JToolBar to create a DragWindow for.
-   *
-   * @return A new DragWindow.
-   */
-  protected BasicToolBarUI.DragWindow createDragWindow(JToolBar toolbar)
-  {
-    return new DragWindow();
-  }
-
-  /**
-   * This method creates a new floating frame for the JToolBar. By default,
-   * this UI uses createFloatingWindow instead. This method of creating a
-   * floating frame is deprecated.
-   *
-   * @param toolbar The JToolBar to create a floating frame for.
-   *
-   * @return A new floating frame.
-   */
-  protected JFrame createFloatingFrame(JToolBar toolbar)
-  {
-    // FIXME: Though deprecated, this should still work.
-    return null;
-  }
-
-  /**
-   * This method creates a new floating window for the JToolBar. This is the
-   * method used by default to create a floating container for the JToolBar.
-   *
-   * @param toolbar The JToolBar to create a floating window for.
-   *
-   * @return A new floating window.
-   */
-  protected RootPaneContainer createFloatingWindow(JToolBar toolbar)
-  {
-    // This one is used by default though.
-    return new ToolBarDialog();
-  }
-
-  /**
-   * This method creates a new WindowListener for the JToolBar.
-   *
-   * @return A new WindowListener.
-   */
-  protected WindowListener createFrameListener()
-  {
-    return new FrameListener();
-  }
-
-  /**
-   * This method creates a new nonRolloverBorder for JButtons when the
-   * JToolBar's rollover property is set to false.
-   *
-   * @return A new NonRolloverBorder.
-   */
-  protected Border createNonRolloverBorder()
-  {
-    Border b = UIManager.getBorder("ToolBar.nonrolloverBorder");
-
-    if (b == null)
-      {
-        b = new CompoundBorder(
-            new ButtonBorder(UIManager.getColor("Button.shadow"),
-                             UIManager.getColor("Button.darkShadow"),
-                             UIManager.getColor("Button.light"),
-                             UIManager.getColor("Button.highlight")),
-            BasicBorders.getMarginBorder());
-      }
-
-    return b;  }
-
-  /**
-   * This method creates a new PropertyChangeListener for the JToolBar.
-   *
-   * @return A new PropertyChangeListener.
-   */
-  protected PropertyChangeListener createPropertyListener()
-  {
-    return new PropertyListener();
-  }
-
-  /**
-   * This method creates a new rollover border for JButtons when the
-   * JToolBar's rollover property is set to true.
-   *
-   * @return A new rollover border.
-   */
-  protected Border createRolloverBorder()
-  {
-    Border b = UIManager.getBorder("ToolBar.rolloverBorder");
-
-    if (b == null)
-      {
-        b = new CompoundBorder(
-            new ButtonBorder(UIManager.getColor("Button.shadow"),
-                             UIManager.getColor("Button.darkShadow"),
-                             UIManager.getColor("Button.light"),
-                             UIManager.getColor("Button.highlight")),
-            BasicBorders.getMarginBorder());
-      }
-
-    return b;
-  }
-
-  /**
-   * This method creates a new Container listener for the JToolBar.
-   *
-   * @return A new Container listener.
-   */
-  protected ContainerListener createToolBarContListener()
-  {
-    return new ToolBarContListener();
-  }
-
-  /**
-   * This method creates a new FocusListener for the JToolBar.
-   *
-   * @return A new FocusListener for the JToolBar.
-   */
-  protected FocusListener createToolBarFocusListener()
-  {
-    return new ToolBarFocusListener();
-  }
-
-  /**
-   * This method creates a new UI delegate for the given JComponent.
-   *
-   * @param c The JComponent to create a UI delegate for.
-   *
-   * @return A new UI delegate.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicToolBarUI();
-  }
-
-  /**
-   * This method is called to drag the DragWindow around when the JToolBar is
-   * being dragged around.
-   *
-   * @param position The mouse cursor coordinates relative to the JToolBar.
-   * @param origin The screen position of the JToolBar.
-   */
-  protected void dragTo(Point position, Point origin)
-  {
-    int loc = areaOfClick(origParent,
-                          SwingUtilities.convertPoint(toolBar, position,
-                                                      origParent));
-
-    if (loc != -1)
-      {
-        dragWindow.setBorderColor(dockingBorderColor);
-        dragWindow.setBackground(dockingColor);
-      }
-    else
-      {
-        dragWindow.setBorderColor(floatingBorderColor);
-        dragWindow.setBackground(floatingColor);
-      }
-
-    int w = 0;
-    int h = 0;
-
-    boolean tmp = (loc == SwingConstants.NORTH)
-                  || (loc == SwingConstants.SOUTH) || (loc == -1);
-
-    cachedOrientation = toolBar.getOrientation();
-    cachedBounds = toolBar.getSize();
-    if (((cachedOrientation == SwingConstants.HORIZONTAL) && tmp)
-        || ((cachedOrientation == VERTICAL) && ! tmp))
-      {
-        w = cachedBounds.width;
-        h = cachedBounds.height;
-      }
-    else
-      {
-        w = cachedBounds.height;
-        h = cachedBounds.width;
-      }
-
-    Point p = dragWindow.getOffset();
-    Insets insets = toolBar.getInsets();
-
-    dragWindow.setBounds((origin.x + position.x) - p.x
-                         - ((insets.left + insets.right) / 2),
-                         (origin.y + position.y) - p.y
-                         - ((insets.top + insets.bottom) / 2), w, h);
-
-    if (! dragWindow.isVisible())
-      dragWindow.show();
-  }
-
-  /**
-   * This method is used at the end of a drag session to place the frame in
-   * either its original parent as a docked JToolBar or in its floating
-   * frame.
-   *
-   * @param position The position of the mouse cursor relative to the
-   *        JToolBar.
-   * @param origin The screen position of the JToolBar before the drag session
-   *        started.
-   */
-  protected void floatAt(Point position, Point origin)
-  {
-    Point p = new Point(position);
-    int aoc = areaOfClick(origParent,
-                          SwingUtilities.convertPoint(toolBar, p, origParent));
-
-    Container oldParent = toolBar.getParent();
-
-    oldParent.remove(toolBar);
-    oldParent.doLayout();
-    oldParent.repaint();
-
-    Container newParent;
-
-    if (aoc == -1)
-      newParent = ((RootPaneContainer) floatFrame).getContentPane();
-    else
-      {
-        floatFrame.hide();
-        newParent = origParent;
-      }
-
-    String constraint;
-    switch (aoc)
-      {
-      case SwingConstants.EAST:
-        constraint = BorderLayout.EAST;
-        break;
-      case SwingConstants.NORTH:
-        constraint = BorderLayout.NORTH;
-        break;
-      case SwingConstants.SOUTH:
-        constraint = BorderLayout.SOUTH;
-        break;
-      case SwingConstants.WEST:
-        constraint = BorderLayout.WEST;
-        break;
-      default:
-        constraint = BorderLayout.CENTER;
-        break;
-      }
-
-    int newOrientation = SwingConstants.HORIZONTAL;
-    if ((aoc != -1)
-        && ((aoc == SwingConstants.EAST) || (aoc == SwingConstants.WEST)))
-      newOrientation = SwingConstants.VERTICAL;
-
-    if (aoc != -1)
-      {
-        constraintBeforeFloating = constraint;
-        lastGoodOrientation = newOrientation;
-      }
-
-    newParent.add(toolBar, constraint);
-
-    setFloating(aoc == -1, null);
-    toolBar.setOrientation(newOrientation);
-
-    Insets insets = floatFrame.getInsets();
-    Dimension dims = toolBar.getPreferredSize();
-    p = dragWindow.getOffset();
-    setFloatingLocation((position.x + origin.x) - p.x
-                        - ((insets.left + insets.right) / 2),
-                        (position.y + origin.y) - p.y
-                        - ((insets.top + insets.bottom) / 2));
-
-    if (aoc == -1)
-      {
-        floatFrame.pack();
-        floatFrame.setSize(dims.width + insets.left + insets.right,
-                           dims.height + insets.top + insets.bottom);
-        floatFrame.show();
-      }
-
-    newParent.invalidate();
-    newParent.validate();
-    newParent.repaint();
-  }
-
-  /**
-   * This method returns the docking color.
-   *
-   * @return The docking color.
-   */
-  public Color getDockingColor()
-  {
-    return dockingColor;
-  }
-
-  /**
-   * This method returns the Color which is displayed when over a floating
-   * area.
-   *
-   * @return The color which is displayed when over a floating area.
-   */
-  public Color getFloatingColor()
-  {
-    return floatingColor;
-  }
-
-  /**
-   * This method returns the maximum size of the given JComponent for this UI.
-   *
-   * @param c The JComponent to find the maximum size for.
-   *
-   * @return The maximum size for this UI.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-  /**
-   * This method returns the minimum size of the given JComponent for this UI.
-   *
-   * @param c The JComponent to find a minimum size for.
-   *
-   * @return The minimum size for this UI.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-  /**
-   * This method installs the needed components for the JToolBar.
-   */
-  protected void installComponents()
-  {
-    floatFrame = (Window) createFloatingWindow(toolBar);
-
-    dragWindow = createDragWindow(toolBar);
-
-    nonRolloverBorder = createNonRolloverBorder();
-    rolloverBorder = createRolloverBorder();
-
-    borders = new Hashtable();
-    setRolloverBorders(toolBar.isRollover());
-
-    fillHashtable();
-  }
-
-  /**
-   * This method installs the defaults as specified by the look and feel.
-   */
-  protected void installDefaults()
-  {
-    LookAndFeel.installBorder(toolBar, "ToolBar.border");
-    LookAndFeel.installColorsAndFont(toolBar, "ToolBar.background",
-                                     "ToolBar.foreground", "ToolBar.font");
-
-    dockingBorderColor = UIManager.getColor("ToolBar.dockingForeground");
-    dockingColor = UIManager.getColor("ToolBar.dockingBackground");
-
-    floatingBorderColor = UIManager.getColor("ToolBar.floatingForeground");
-    floatingColor = UIManager.getColor("ToolBar.floatingBackground");
-  }
-
-  /**
-   * This method installs the keyboard actions for the JToolBar as specified
-   * by the look and feel.
-   */
-  protected void installKeyboardActions()
-  {
-    // Install the input map.
-    InputMap inputMap =
-      (InputMap) SharedUIDefaults.get("ToolBar.ancestorInputMap");
-    SwingUtilities.replaceUIInputMap(toolBar,
-                                 JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT,
-                                 inputMap);
-
-    // FIXME: The JDK uses a LazyActionMap for parentActionMap
-    SwingUtilities.replaceUIActionMap(toolBar, getActionMap());
-  }
-
-  /**
-   * Fetches the action map from  the UI defaults, or create a new one
-   * if the action map hasn't been initialized.
-   *
-   * @return the action map
-   */
-  private ActionMap getActionMap()
-  {
-    ActionMap am = (ActionMap) UIManager.get("ToolBar.actionMap");
-    if (am == null)
-      {
-        am = createDefaultActions();
-        UIManager.getLookAndFeelDefaults().put("ToolBar.actionMap", am);
-      }
-    return am;
-  }
-
-  private ActionMap createDefaultActions()
-  {
-    ActionMapUIResource am = new ActionMapUIResource();
-    Action action = new ToolBarAction();
-
-    am.put("navigateLeft", action);
-    am.put("navigateRight", action);
-    am.put("navigateUp", action);
-    am.put("navigateDown", action);
-
-    return am;
-  }
-
-  /**
-   * This method installs listeners for the JToolBar.
-   */
-  protected void installListeners()
-  {
-    dockingListener = createDockingListener();
-    toolBar.addMouseListener(dockingListener);
-    toolBar.addMouseMotionListener(dockingListener);
-
-    propertyListener = createPropertyListener();
-    toolBar.addPropertyChangeListener(propertyListener);
-
-    toolBarContListener = createToolBarContListener();
-    toolBar.addContainerListener(toolBarContListener);
-
-    windowListener = createFrameListener();
-    floatFrame.addWindowListener(windowListener);
-
-    toolBarFocusListener = createToolBarFocusListener();
-    if (toolBarFocusListener != null)
-      {
-        int count = toolBar.getComponentCount();
-        for (int i = 0; i < count; i++)
-          toolBar.getComponent(i).addFocusListener(toolBarFocusListener);
-      }
-  }
-
-  /**
-   * This method installs non rollover borders for each component inside the
-   * given JComponent.
-   *
-   * @param c The JComponent whose children need to have non rollover borders
-   *        installed.
-   */
-  protected void installNonRolloverBorders(JComponent c)
-  {
-    Component[] components = toolBar.getComponents();
-
-    for (int i = 0; i < components.length; i++)
-      setBorderToNonRollover(components[i]);
-  }
-
-  /**
-   * This method installs normal (or their original) borders for each
-   * component inside the given JComponent.
-   *
-   * @param c The JComponent whose children need to have their original
-   *        borders installed.
-   */
-  protected void installNormalBorders(JComponent c)
-  {
-    Component[] components = toolBar.getComponents();
-
-    for (int i = 0; i < components.length; i++)
-      setBorderToNormal(components[i]);
-  }
-
-  /**
-   * This method install rollover borders for each component inside the given
-   * JComponent.
-   *
-   * @param c The JComponent whose children need to have rollover borders
-   *        installed.
-   */
-  protected void installRolloverBorders(JComponent c)
-  {
-    Component[] components = toolBar.getComponents();
-
-    for (int i = 0; i < components.length; i++)
-      setBorderToRollover(components[i]);
-  }
-
-  /**
-   * This method fills the borders hashtable with a list of components that
-   * are JButtons and their borders.
-   */
-  private void fillHashtable()
-  {
-    Component[] c = toolBar.getComponents();
-
-    for (int i = 0; i < c.length; i++)
-      {
-        if (c[i] instanceof JButton)
-          {
-            // Don't really care about anything other than JButtons
-            JButton b = (JButton) c[i];
-
-            if (b.getBorder() != null)
-              borders.put(b, b.getBorder());
-          }
-      }
-  }
-
-  /**
-   * This method installs the UI for the given JComponent.
-   *
-   * @param c The JComponent to install a UI for.
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-
-    if (c instanceof JToolBar)
-      {
-        toolBar = (JToolBar) c;
-    installDefaults();
-    installComponents();
-        installListeners();
-        installKeyboardActions();
-      }
-  }
-
-  /**
-   * This method returns whether the JToolBar is floating.
-   *
-   * @return Whether the JToolBar is floating.
-   */
-  public boolean isFloating()
-  {
-    return floatFrame.isVisible();
-  }
-
-  /**
-   * This method returns whether rollover borders have been set.
-   *
-   * @return Whether rollover borders have been set.
-   */
-  public boolean isRolloverBorders()
-  {
-    return toolBar.isRollover();
-  }
-
-  /**
-   * This method navigates in the given direction giving focus to the next
-   * component in the given direction.
-   *
-   * @param direction The direction to give focus to.
-   */
-  protected void navigateFocusedComp(int direction)
-  {
-    int count = toolBar.getComponentCount();
-    switch (direction)
-    {
-      case EAST:
-      case SOUTH:
-        if (focusedCompIndex >= 0 && focusedCompIndex < count)
-          {
-            int i = focusedCompIndex + 1;
-            boolean focusRequested = false;
-            // Find component to focus and request focus on it.
-            while (i != focusedCompIndex && ! focusRequested)
-              {
-                if (i >= count)
-                  i = 0;
-                Component comp = toolBar.getComponentAtIndex(i++);
-                if (comp != null && comp.isFocusable()
-                    && comp.isEnabled())
-                  {
-                    comp.requestFocus();
-                    focusRequested = true;
-                  }
-              }
-          }
-        break;
-      case WEST:
-      case NORTH:
-        if (focusedCompIndex >= 0 && focusedCompIndex < count)
-          {
-            int i = focusedCompIndex - 1;
-            boolean focusRequested = false;
-            // Find component to focus and request focus on it.
-            while (i != focusedCompIndex && ! focusRequested)
-              {
-                if (i < 0)
-                  i = count - 1;
-                Component comp = toolBar.getComponentAtIndex(i--);
-                if (comp != null && comp.isFocusable()
-                    && comp.isEnabled())
-                  {
-                    comp.requestFocus();
-                    focusRequested = true;
-                  }
-              }
-          }
-        break;
-      default:
-        break;
-    }
-  }
-
-  /**
-   * This method sets the border of the given component to a non rollover
-   * border.
-   *
-   * @param c The Component whose border needs to be set.
-   */
-  protected void setBorderToNonRollover(Component c)
-  {
-    if (c instanceof AbstractButton)
-      {
-        AbstractButton b = (AbstractButton) c;
-        b.setRolloverEnabled(false);
-
-        // Save old border in hashtable.
-        if (b.getBorder() != null)
-          borders.put(b, b.getBorder());
-
-        b.setBorder(nonRolloverBorder);
-      }
-  }
-
-  /**
-   * This method sets the border of the given component to its original value.
-   *
-   * @param c The Component whose border needs to be set.
-   */
-  protected void setBorderToNormal(Component c)
-  {
-    if (c instanceof AbstractButton)
-      {
-        AbstractButton b = (AbstractButton) c;
-        b.setRolloverEnabled(true);
-        b.setBorder((Border) borders.remove(b));
-      }
-  }
-
-  /**
-   * This method sets the border of the given component to a rollover border.
-   *
-   * @param c The Component whose border needs to be set.
-   */
-  protected void setBorderToRollover(Component c)
-  {
-    if (c instanceof AbstractButton)
-      {
-        AbstractButton b = (AbstractButton) c;
-        b.setRolloverEnabled(false);
-
-        // Save old border in hashtable.
-        if (b.getBorder() != null)
-          borders.put(b, b.getBorder());
-
-        b.setBorder(rolloverBorder);
-      }
-  }
-
-  /**
-   * This method sets the docking color.
-   *
-   * @param c The docking color.
-   */
-  public void setDockingColor(Color c)
-  {
-    dockingColor = c;
-  }
-
-  /**
-   * This method sets the floating property for the JToolBar.
-   *
-   * @param b Whether the JToolBar is floating.
-   * @param p FIXME
-   */
-  public void setFloating(boolean b, Point p)
-  {
-    // FIXME: use p for something. It's not location
-    // since we already have setFloatingLocation.
-    floatFrame.setVisible(b);
-  }
-
-  /**
-   * This method sets the color displayed when the JToolBar is not in a
-   * dockable area.
-   *
-   * @param c The floating color.
-   */
-  public void setFloatingColor(Color c)
-  {
-    floatingColor = c;
-  }
-
-  /**
-   * This method sets the floating location of the JToolBar.
-   *
-   * @param x The x coordinate for the floating frame.
-   * @param y The y coordinate for the floating frame.
-   */
-  public void setFloatingLocation(int x, int y)
-  {
-    // x,y are the coordinates of the new JFrame created to store the toolbar
-    // XXX: The floating location is bogus is not floating.
-    floatFrame.setLocation(x, y);
-    floatFrame.invalidate();
-    floatFrame.validate();
-    floatFrame.repaint();
-  }
-
-  /**
-   * This is a convenience method for changing the orientation of the
-   * JToolBar.
-   *
-   * @param orientation The new orientation.
-   */
-  public void setOrientation(int orientation)
-  {
-    toolBar.setOrientation(orientation);
-  }
-
-  /**
-   * This method changes the child components to have rollover borders if the
-   * given parameter is true. Otherwise, the components are set to have non
-   * rollover borders.
-   *
-   * @param rollover Whether the children will have rollover borders.
-   */
-  public void setRolloverBorders(boolean rollover)
-  {
-    if (rollover)
-      installRolloverBorders(toolBar);
-    else
-      installNonRolloverBorders(toolBar);
-  }
-
-  /**
-   * This method uninstall UI installed components from the JToolBar.
-   */
-  protected void uninstallComponents()
-  {
-    installNormalBorders(toolBar);
-    borders = null;
-    cachedBounds = null;
-
-    floatFrame = null;
-    dragWindow = null;
-  }
-
-  /**
-   * This method removes the defaults installed by the Look and Feel.
-   */
-  protected void uninstallDefaults()
-  {
-    toolBar.setBackground(null);
-    toolBar.setForeground(null);
-    toolBar.setFont(null);
-
-    dockingBorderColor = null;
-    dockingColor = null;
-    floatingBorderColor = null;
-    floatingColor = null;
-  }
-
-  /**
-   * This method uninstalls keyboard actions installed by the UI.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    SwingUtilities.replaceUIInputMap(toolBar, JComponent.
-                                     WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, null);
-    SwingUtilities.replaceUIActionMap(toolBar, null);
-  }
-
-  /**
-   * This method uninstalls listeners installed by the UI.
-   */
-  protected void uninstallListeners()
-  {
-    if (toolBarFocusListener != null)
-      {
-        int count = toolBar.getComponentCount();
-        for (int i = 0; i < count; i++)
-          toolBar.getComponent(i).removeFocusListener(toolBarFocusListener);
-        toolBarFocusListener = null;
-      }
-
-    floatFrame.removeWindowListener(windowListener);
-    windowListener = null;
-
-    toolBar.removeContainerListener(toolBarContListener);
-    toolBarContListener = null;
-
-    toolBar.removeMouseMotionListener(dockingListener);
-    toolBar.removeMouseListener(dockingListener);
-    dockingListener = null;
-  }
-
-  /**
-   * This method uninstalls the UI.
-   *
-   * @param c The JComponent that is having this UI removed.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    uninstallKeyboardActions();
-    uninstallListeners();
-    uninstallComponents();
-    uninstallDefaults();
-    toolBar = null;
-  }
-
-  /**
-   * This is the MouseHandler class that allows the user to drag the JToolBar
-   * in and out of the parent and dock it if it can.
-   */
-  public class DockingListener implements MouseInputListener
-  {
-    /** Whether the JToolBar is being dragged. */
-    protected boolean isDragging;
-
-    /**
-     * The origin point. This point is saved from the beginning press and is
-     * used until the end of the drag session.
-     */
-    protected Point origin;
-
-    /** The JToolBar being dragged. */
-    protected JToolBar toolBar;
-
-    /**
-     * Creates a new DockingListener object.
-     *
-     * @param t The JToolBar this DockingListener is being used for.
-     */
-    public DockingListener(JToolBar t)
-    {
-      toolBar = t;
-    }
-
-    /**
-     * This method is called when the mouse is clicked.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseClicked(MouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method is called when the mouse is dragged. It delegates the drag
-     * painting to the dragTo method.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      if (isDragging)
-        dragTo(e.getPoint(), origin);
-    }
-
-    /**
-     * This method is called when the mouse enters the JToolBar.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseEntered(MouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method is called when the mouse exits the JToolBar.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseExited(MouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method is called when the mouse is moved in the JToolBar.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseMoved(MouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method is called when the mouse is pressed in the JToolBar. If the
-     * press doesn't occur in a place where it causes the JToolBar to be
-     * dragged, it returns. Otherwise, it starts a drag session.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      if (! toolBar.isFloatable())
-        return;
-
-      Point ssd = e.getPoint();
-      Insets insets = toolBar.getInsets();
-
-      // Verify that this click occurs in the top inset.
-      if (toolBar.getOrientation() == SwingConstants.HORIZONTAL)
-        {
-          if (e.getX() > insets.left)
-            return;
-        }
-      else
-        {
-          if (e.getY() > insets.top)
-            return;
-        }
-
-      origin = new Point(0, 0);
-      if (toolBar.isShowing())
-        SwingUtilities.convertPointToScreen(ssd, toolBar);
-
-      if (! (SwingUtilities.getAncestorOfClass(Window.class, toolBar) instanceof UIResource))
-        // Need to know who keeps the toolBar if it gets dragged back into it.
-        origParent = toolBar.getParent();
-
-      if (toolBar.isShowing())
-        SwingUtilities.convertPointToScreen(origin, toolBar);
-
-      isDragging = true;
-
-      if (dragWindow != null)
-        dragWindow.setOffset(new Point(cachedBounds.width / 2,
-            cachedBounds.height / 2));
-
-      dragTo(e.getPoint(), origin);
-    }
-
-    /**
-     * This method is called when the mouse is released from the JToolBar.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      if (! isDragging || ! toolBar.isFloatable())
-        return;
-
-      isDragging = false;
-      floatAt(e.getPoint(), origin);
-      dragWindow.hide();
-    }
-  }
-
-  /**
-   * This is the window that appears when the JToolBar is being dragged
-   * around.
-   */
-  protected class DragWindow extends Window
-  {
-    /**
-     * The current border color. It changes depending on whether the JToolBar
-     * is over a place that allows it to dock.
-     */
-    private Color borderColor;
-
-    /** The between the mouse and the top left corner of the window. */
-    private Point offset;
-
-    /**
-     * Creates a new DragWindow object.
-     * This is package-private to avoid an accessor method.
-     */
-    DragWindow()
-    {
-      super(owner);
-    }
-
-    /**
-     * The color that the border should be.
-     *
-     * @return The border color.
-     */
-    public Color getBorderColor()
-    {
-      if (borderColor == null)
-        return Color.BLACK;
-
-      return borderColor;
-    }
-
-    /**
-     * This method returns the insets for the DragWindow.
-     *
-     * @return The insets for the DragWindow.
-     */
-    public Insets getInsets()
-    {
-      // This window has no decorations, so insets are empty.
-      return new Insets(0, 0, 0, 0);
-    }
-
-    /**
-     * This method returns the mouse offset from the top left corner of the
-     * DragWindow.
-     *
-     * @return The mouse offset.
-     */
-    public Point getOffset()
-    {
-      return offset;
-    }
-
-    /**
-     * This method paints the DragWindow.
-     *
-     * @param g The Graphics object to paint with.
-     */
-    public void paint(Graphics g)
-    {
-      //  No visiting children necessary.
-      Color saved = g.getColor();
-      Rectangle b = getBounds();
-
-      g.setColor(getBorderColor());
-      g.drawRect(0, 0, b.width - 1, b.height - 1);
-
-      g.setColor(saved);
-    }
-
-    /**
-     * This method changes the border color.
-     *
-     * @param c The new border color.
-     */
-    public void setBorderColor(Color c)
-    {
-      borderColor = c;
-    }
-
-    /**
-     * This method changes the mouse offset.
-     *
-     * @param p The new mouse offset.
-     */
-    public void setOffset(Point p)
-    {
-      offset = p;
-    }
-
-    /**
-     * Sets the orientation of the toolbar and the
-     * drag window.
-     *
-     * @param o - the new orientation of the toolbar and drag
-     * window.
-     */
-    public void setOrientation(int o)
-    {
-      toolBar.setOrientation(o);
-      if (dragWindow != null)
-        dragWindow.setOrientation(o);
-    }
-  }
-
-  /**
-   * This helper class listens for Window events from the floatable window and
-   * if it is closed, returns the JToolBar to the last known good location.
-   */
-  protected class FrameListener extends WindowAdapter
-  {
-    /**
-     * This method is called when the floating window is closed.
-     *
-     * @param e The WindowEvent.
-     */
-    public void windowClosing(WindowEvent e)
-    {
-      Container parent = toolBar.getParent();
-      parent.remove(toolBar);
-
-      if (origParent != null)
-        {
-          origParent.add(toolBar,
-                         (constraintBeforeFloating != null)
-                         ? constraintBeforeFloating : BorderLayout.NORTH);
-          toolBar.setOrientation(lastGoodOrientation);
-        }
-
-      origParent.invalidate();
-      origParent.validate();
-      origParent.repaint();
-    }
-  }
-
-  /**
-   * This helper class listens for PropertyChangeEvents from the JToolBar.
-   */
-  protected class PropertyListener implements PropertyChangeListener
-  {
-    /**
-     * This method is called when a property from the JToolBar is changed.
-     *
-     * @param e The PropertyChangeEvent.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      // FIXME: need name properties so can change floatFrame title.
-      if (e.getPropertyName().equals("rollover") && toolBar != null)
-        setRolloverBorders(toolBar.isRollover());
-    }
-  }
-
-  /**
-   * This helper class listens for components added to and removed from the
-   * JToolBar.
-   */
-  protected class ToolBarContListener implements ContainerListener
-  {
-    /**
-     * This method is responsible for setting rollover or non rollover for new
-     * buttons added to the JToolBar.
-     *
-     * @param e The ContainerEvent.
-     */
-    public void componentAdded(ContainerEvent e)
-    {
-      if (e.getChild() instanceof JButton)
-        {
-          JButton b = (JButton) e.getChild();
-
-          if (b.getBorder() != null)
-            borders.put(b, b.getBorder());
-        }
-
-      if (isRolloverBorders())
-        setBorderToRollover(e.getChild());
-      else
-        setBorderToNonRollover(e.getChild());
-
-      cachedBounds = toolBar.getPreferredSize();
-      cachedOrientation = toolBar.getOrientation();
-
-      Component c = e.getChild();
-      if (toolBarFocusListener != null)
-        c.addFocusListener(toolBarFocusListener);
-    }
-
-    /**
-     * This method is responsible for giving the child components their
-     * original borders when they are removed.
-     *
-     * @param e The ContainerEvent.
-     */
-    public void componentRemoved(ContainerEvent e)
-    {
-      setBorderToNormal(e.getChild());
-      cachedBounds = toolBar.getPreferredSize();
-      cachedOrientation = toolBar.getOrientation();
-
-      Component c = e.getChild();
-      if (toolBarFocusListener != null)
-        c.removeFocusListener(toolBarFocusListener);
-    }
-  }
-
-  /**
-   * This is the floating window that is returned when getFloatingWindow is
-   * called.
-   */
-  private class ToolBarDialog extends JDialog implements UIResource
-  {
-    /**
-     * Creates a new ToolBarDialog object with the name given by the JToolBar.
-     */
-    public ToolBarDialog()
-    {
-      super();
-      setName((toolBar.getName() != null) ? toolBar.getName() : "");
-    }
-  }
-
-  /**
-   * DOCUMENT ME!
-   */
-  protected class ToolBarFocusListener implements FocusListener
-  {
-    /**
-     * Creates a new ToolBarFocusListener object.
-     */
-    protected ToolBarFocusListener()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Receives notification when the toolbar or one of it's component
-     * receives the keyboard input focus.
-     *
-     * @param e the focus event
-     */
-    public void focusGained(FocusEvent e)
-    {
-      Component c = e.getComponent();
-      focusedCompIndex = toolBar.getComponentIndex(c);
-    }
-
-    /**
-     * Receives notification when the toolbar or one of it's component
-     * looses the keyboard input focus.
-     *
-     * @param e the focus event
-     */
-    public void focusLost(FocusEvent e)
-    {
-      // Do nothing here.
-    }
-  }
-
-  /**
-   * This helper class acts as the border for the JToolBar.
-   */
-  private static class ToolBarBorder implements Border
-  {
-    /** The size of the larger, draggable side of the border. */
-    private static final int offset = 10;
-
-    /** The other sides. */
-    private static final int regular = 2;
-
-    /**
-     * This method returns the border insets for the JToolBar.
-     *
-     * @param c The Component to find insets for.
-     *
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      if (c instanceof JToolBar)
-        {
-          JToolBar tb = (JToolBar) c;
-          int orientation = tb.getOrientation();
-
-          if (! tb.isFloatable())
-            return new Insets(regular, regular, regular, regular);
-          else if (orientation == SwingConstants.HORIZONTAL)
-            return new Insets(regular, offset, regular, regular);
-          else
-            return new Insets(offset, regular, regular, regular);
-        }
-
-      return new Insets(0, 0, 0, 0);
-    }
-
-    /**
-     * This method returns whether the border is opaque.
-     *
-     * @return Whether the border is opaque.
-     */
-    public boolean isBorderOpaque()
-    {
-      return false;
-    }
-
-    /**
-     * This method paints the ribbed area of the border.
-     *
-     * @param g The Graphics object to paint with.
-     * @param x The x coordinate of the area.
-     * @param y The y coordinate of the area.
-     * @param w The width of the area.
-     * @param h The height of the area.
-     * @param size The size of the bump.
-     * @param c The color of the bumps.
-     */
-    private void paintBumps(Graphics g, int x, int y, int w, int h, int size,
-                            Color c)
-    {
-      Color saved = g.getColor();
-      g.setColor(c);
-
-      int hgap = 2 * size;
-      int vgap = 4 * size;
-      int count = 0;
-
-      for (int i = x; i < (w + x); i += hgap)
-        for (int j = ((count++ % 2) == 0) ? y : (y + (2 * size)); j < (h + y);
-             j += vgap)
-          g.fillRect(i, j, size, size);
-
-      g.setColor(saved);
-    }
-
-    /**
-     * This method paints the border around the given Component.
-     *
-     * @param c The Component whose border is being painted.
-     * @param g The Graphics object to paint with.
-     * @param x The x coordinate of the component.
-     * @param y The y coordinate of the component.
-     * @param width The width of the component.
-     * @param height The height of the component.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int width,
-                            int height)
-    {
-      if (c instanceof JToolBar)
-        {
-          JToolBar tb = (JToolBar) c;
-
-          int orientation = tb.getOrientation();
-
-          if (orientation == SwingConstants.HORIZONTAL)
-            {
-              paintBumps(g, x, y, offset, height, 1, Color.WHITE);
-              paintBumps(g, x + 1, y + 1, offset - 1, height - 1, 1, Color.GRAY);
-            }
-          else
-            {
-              paintBumps(g, x, y, width, offset, 1, Color.WHITE);
-              paintBumps(g, x + 1, y + 1, width - 1, offset - 1, 1, Color.GRAY);
-            }
-        }
-    }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicToolTipUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicToolTipUI.java
deleted file mode 100644
index 37c084b..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicToolTipUI.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/* BasicToolTipUI.java --
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Rectangle;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.JComponent;
-import javax.swing.JToolTip;
-import javax.swing.LookAndFeel;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ToolTipUI;
-import javax.swing.text.View;
-
-/**
- * This is the Basic Look and Feel UI class for JToolTip.
- */
-public class BasicToolTipUI extends ToolTipUI
-{
-
-  /**
-   * Receives notification when a property of the JToolTip changes.
-   * This updates the HTML renderer if appropriate.
-   */
-  private class PropertyChangeHandler
-    implements PropertyChangeListener
-  {
-
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      String prop = e.getPropertyName();
-      if (prop.equals("tiptext") || prop.equals("font")
-          || prop.equals("foreground"))
-        {
-          JToolTip tip = (JToolTip) e.getSource();
-          String text = tip.getTipText();
-          BasicHTML.updateRenderer(tip, text);
-        }
-    }
-
-  }
-
-  /** The shared instance of BasicToolTipUI used for all ToolTips. */
-  private static BasicToolTipUI shared;
-
-  /** The tooltip's text */
-  private String text;
-
-  /**
-   * Handles property changes.
-   */
-  private PropertyChangeListener propertyChangeHandler;
-
-  /**
-   * Creates a new BasicToolTipUI object.
-   */
-  public BasicToolTipUI()
-  {
-    super();
-  }
-
-  /**
-   * This method creates a new BasicToolTip UI for the given
-   * JComponent.
-   *
-   * @param c The JComponent to create a UI for.
-   *
-   * @return A BasicToolTipUI that can be used by the given JComponent.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    if (shared == null)
-      shared = new BasicToolTipUI();
-    return shared;
-  }
-
-  /**
-   * This method returns the msximum size of the given JComponent.
-   *
-   * @param c The JComponent to find a maximum size for.
-   *
-   * @return The maximum size.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension d = getPreferredSize(c);
-    View view = (View) c.getClientProperty(BasicHTML.propertyKey);
-    if (view != null)
-      d.width += view.getMaximumSpan(View.X_AXIS)
-                 - view.getPreferredSpan(View.X_AXIS);
-    return d;
-  }
-
-  /**
-   * This method returns the minimum size of the given JComponent.
-   *
-   * @param c The JComponent to find a minimum size for.
-   *
-   * @return The minimum size.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension d = getPreferredSize(c);
-    View view = (View) c.getClientProperty(BasicHTML.propertyKey);
-    if (view != null)
-      d.width -= view.getPreferredSpan(View.X_AXIS)
-                 - view.getMinimumSpan(View.X_AXIS);
-    return d;
-  }
-
-  /**
-   * This method returns the preferred size of the given JComponent.
-   *
-   * @param c The JComponent to find a preferred size for.
-   *
-   * @return The preferred size.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    JToolTip tip = (JToolTip) c;
-    String str = tip.getTipText();
-    FontMetrics fm = c.getFontMetrics(c.getFont());
-    Insets i = c.getInsets();
-    Dimension d = new Dimension(i.left + i.right, i.top + i.bottom);
-    if (str != null && ! str.equals(""))
-      {
-        View view = (View) c.getClientProperty(BasicHTML.propertyKey);
-        if (view != null)
-          {
-            d.width += (int) view.getPreferredSpan(View.X_AXIS);
-            d.height += (int) view.getPreferredSpan(View.Y_AXIS);
-          }
-        else
-          {
-            d.width += fm.stringWidth(str) + 6;
-            d.height += fm.getHeight();
-          }
-      }
-    return d;
-  }
-
-  /**
-   * This method installs the defaults for the given JComponent.
-   *
-   * @param c The JComponent to install defaults for.
-   */
-  protected void installDefaults(JComponent c)
-  {
-    LookAndFeel.installColorsAndFont(c, "ToolTip.background",
-                                     "ToolTip.foreground", "ToolTip.font");
-    LookAndFeel.installBorder(c, "ToolTip.border");
-  }
-
-  /**
-   * This method installs the listeners for the given JComponent.
-   *
-   * @param c The JComponent to install listeners for.
-   */
-  protected void installListeners(JComponent c)
-  {
-    propertyChangeHandler = new PropertyChangeHandler();
-    c.addPropertyChangeListener(propertyChangeHandler);
-  }
-
-  /**
-   * This method installs the UI for the given JComponent.
-   *
-   * @param c The JComponent to install the UI for.
-   */
-  public void installUI(JComponent c)
-  {
-    c.setOpaque(true);
-    installDefaults(c);
-    BasicHTML.updateRenderer(c, ((JToolTip) c).getTipText());
-    installListeners(c);
-  }
-
-  /**
-   * This method paints the given JComponent with the given Graphics object.
-   *
-   * @param g The Graphics object to paint with.
-   * @param c The JComponent to paint.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    JToolTip tip = (JToolTip) c;
-
-    String text = tip.getTipText();
-    Font font = c.getFont();
-    FontMetrics fm = c.getFontMetrics(font);
-    int ascent = fm.getAscent();
-    Insets i = c.getInsets();
-    Dimension size = c.getSize();
-    Rectangle paintR = new Rectangle(i.left, i.top,
-                                     size.width - i.left - i.right,
-                                     size.height - i.top - i.bottom);
-    Color saved = g.getColor();
-    Font oldFont = g.getFont();
-    g.setColor(Color.BLACK);
-
-    View view = (View) c.getClientProperty(BasicHTML.propertyKey);
-    if (view != null)
-      view.paint(g, paintR);
-    else
-      g.drawString(text, paintR.x + 3, paintR.y + ascent);
-
-    g.setFont(oldFont);
-    g.setColor(saved);
-  }
-
-  /**
-   * This method uninstalls the defaults for the given JComponent.
-   *
-   * @param c The JComponent to uninstall defaults for.
-   */
-  protected void uninstallDefaults(JComponent c)
-  {
-    c.setForeground(null);
-    c.setBackground(null);
-    c.setFont(null);
-    c.setBorder(null);
-  }
-
-  /**
-   * This method uninstalls listeners for the given JComponent.
-   *
-   * @param c The JComponent to uninstall listeners for.
-   */
-  protected void uninstallListeners(JComponent c)
-  {
-    if (propertyChangeHandler != null)
-      {
-        c.removePropertyChangeListener(propertyChangeHandler);
-        propertyChangeHandler = null;
-      }
-  }
-
-  /**
-   * This method uninstalls the UI for the given JComponent.
-   *
-   * @param c The JComponent to uninstall.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    uninstallDefaults(c);
-    BasicHTML.updateRenderer(c, "");
-    uninstallListeners(c);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicTreeUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicTreeUI.java
deleted file mode 100644
index af61a42..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicTreeUI.java
+++ /dev/null
@@ -1,3939 +0,0 @@
-/* BasicTreeUI.java --
- Copyright (C) 2002, 2004, 2005, 2006, Free Software Foundation, Inc.
-
- This file is part of GNU Classpath.
-
- GNU Classpath is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- GNU Classpath is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Classpath; see the file COPYING.  If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA.
-
- Linking this library statically or dynamically with other modules is
- making a combined work based on this library.  Thus, the terms and
- conditions of the GNU General Public License cover the whole
- combination.
-
- As a special exception, the copyright holders of this library give you
- permission to link this library with independent modules to produce an
- executable, regardless of the license terms of these independent
- modules, and to copy and distribute the resulting executable under
- terms of your choice, provided that you also meet, for each linked
- independent module, the terms and conditions of the license of that
- module.  An independent module is a module which is not derived from
- or based on this library.  If you modify this library, you may extend
- this exception to your version of the library, but you are not
- obligated to do so.  If you do not wish to do so, delete this
- exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import gnu.javax.swing.tree.GnuPath;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Label;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
-import java.awt.event.ComponentListener;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.awt.event.InputEvent;
-import java.awt.event.KeyAdapter;
-import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.Enumeration;
-import java.util.Hashtable;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.ActionMap;
-import javax.swing.CellRendererPane;
-import javax.swing.Icon;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
-import javax.swing.JScrollBar;
-import javax.swing.JScrollPane;
-import javax.swing.JTree;
-import javax.swing.LookAndFeel;
-import javax.swing.SwingUtilities;
-import javax.swing.Timer;
-import javax.swing.UIManager;
-import javax.swing.event.CellEditorListener;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.MouseInputListener;
-import javax.swing.event.TreeExpansionEvent;
-import javax.swing.event.TreeExpansionListener;
-import javax.swing.event.TreeModelEvent;
-import javax.swing.event.TreeModelListener;
-import javax.swing.event.TreeSelectionEvent;
-import javax.swing.event.TreeSelectionListener;
-import javax.swing.plaf.ActionMapUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.TreeUI;
-import javax.swing.tree.AbstractLayoutCache;
-import javax.swing.tree.DefaultTreeCellEditor;
-import javax.swing.tree.DefaultTreeCellRenderer;
-import javax.swing.tree.TreeCellEditor;
-import javax.swing.tree.TreeCellRenderer;
-import javax.swing.tree.TreeModel;
-import javax.swing.tree.TreeNode;
-import javax.swing.tree.TreePath;
-import javax.swing.tree.TreeSelectionModel;
-import javax.swing.tree.VariableHeightLayoutCache;
-
-/**
- * A delegate providing the user interface for <code>JTree</code> according to
- * the Basic look and feel.
- *
- * @see javax.swing.JTree
- * @author Lillian Angel (langel@redhat.com)
- * @author Sascha Brawer (brawer@dandelis.ch)
- * @author Audrius Meskauskas (audriusa@bioinformatics.org)
- */
-public class BasicTreeUI
-  extends TreeUI
-{
-  /**
-   * The tree cell editing may be started by the single mouse click on the
-   * selected cell. To separate it from the double mouse click, the editing
-   * session starts after this time (in ms) after that single click, and only no
-   * other clicks were performed during that time.
-   */
-  static int WAIT_TILL_EDITING = 900;
-
-  /** Collapse Icon for the tree. */
-  protected transient Icon collapsedIcon;
-
-  /** Expanded Icon for the tree. */
-  protected transient Icon expandedIcon;
-
-  /** Distance between left margin and where vertical dashes will be drawn. */
-  protected int leftChildIndent;
-
-  /**
-   * Distance between leftChildIndent and where cell contents will be drawn.
-   */
-  protected int rightChildIndent;
-
-  /**
-   * Total fistance that will be indented. The sum of leftChildIndent and
-   * rightChildIndent .
-   */
-  protected int totalChildIndent;
-
-  /** Index of the row that was last selected. */
-  protected int lastSelectedRow;
-
-  /** Component that we're going to be drawing onto. */
-  protected JTree tree;
-
-  /** Renderer that is being used to do the actual cell drawing. */
-  protected transient TreeCellRenderer currentCellRenderer;
-
-  /**
-   * Set to true if the renderer that is currently in the tree was created by
-   * this instance.
-   */
-  protected boolean createdRenderer;
-
-  /** Editor for the tree. */
-  protected transient TreeCellEditor cellEditor;
-
-  /**
-   * Set to true if editor that is currently in the tree was created by this
-   * instance.
-   */
-  protected boolean createdCellEditor;
-
-  /**
-   * Set to false when editing and shouldSelectCall() returns true meaning the
-   * node should be selected before editing, used in completeEditing.
-   * GNU Classpath editing is implemented differently, so this value is not
-   * actually read anywhere. However it is always set correctly to maintain
-   * interoperability with the derived classes that read this field.
-   */
-  protected boolean stopEditingInCompleteEditing;
-
-  /** Used to paint the TreeCellRenderer. */
-  protected CellRendererPane rendererPane;
-
-  /** Size needed to completely display all the nodes. */
-  protected Dimension preferredSize;
-
-  /** Minimum size needed to completely display all the nodes. */
-  protected Dimension preferredMinSize;
-
-  /** Is the preferredSize valid? */
-  protected boolean validCachedPreferredSize;
-
-  /** Object responsible for handling sizing and expanded issues. */
-  protected AbstractLayoutCache treeState;
-
-  /** Used for minimizing the drawing of vertical lines. */
-  protected Hashtable<TreePath, Boolean> drawingCache;
-
-  /**
-   * True if doing optimizations for a largeModel. Subclasses that don't support
-   * this may wish to override createLayoutCache to not return a
-   * FixedHeightLayoutCache instance.
-   */
-  protected boolean largeModel;
-
-  /** Responsible for telling the TreeState the size needed for a node. */
-  protected AbstractLayoutCache.NodeDimensions nodeDimensions;
-
-  /** Used to determine what to display. */
-  protected TreeModel treeModel;
-
-  /** Model maintaining the selection. */
-  protected TreeSelectionModel treeSelectionModel;
-
-  /**
-   * How much the depth should be offset to properly calculate x locations. This
-   * is based on whether or not the root is visible, and if the root handles are
-   * visible.
-   */
-  protected int depthOffset;
-
-  /**
-   * When editing, this will be the Component that is doing the actual editing.
-   */
-  protected Component editingComponent;
-
-  /** Path that is being edited. */
-  protected TreePath editingPath;
-
-  /**
-   * Row that is being edited. Should only be referenced if editingComponent is
-   * null.
-   */
-  protected int editingRow;
-
-  /** Set to true if the editor has a different size than the renderer. */
-  protected boolean editorHasDifferentSize;
-
-  /** Boolean to keep track of editing. */
-  boolean isEditing;
-
-  /** The current path of the visible nodes in the tree. */
-  TreePath currentVisiblePath;
-
-  /** The gap between the icon and text. */
-  int gap = 4;
-
-  /** The max height of the nodes in the tree. */
-  int maxHeight;
-
-  /** The hash color. */
-  Color hashColor;
-
-  /** Listeners */
-  PropertyChangeListener propertyChangeListener;
-
-  FocusListener focusListener;
-
-  TreeSelectionListener treeSelectionListener;
-
-  MouseListener mouseListener;
-
-  KeyListener keyListener;
-
-  PropertyChangeListener selectionModelPropertyChangeListener;
-
-  ComponentListener componentListener;
-
-  CellEditorListener cellEditorListener;
-
-  TreeExpansionListener treeExpansionListener;
-
-  TreeModelListener treeModelListener;
-
-  /**
-   * The zero size icon, used for expand controls, if they are not visible.
-   */
-  static Icon nullIcon;
-
-  /**
-   * Creates a new BasicTreeUI object.
-   */
-  public BasicTreeUI()
-  {
-    validCachedPreferredSize = false;
-    drawingCache = new Hashtable();
-    nodeDimensions = createNodeDimensions();
-    configureLayoutCache();
-
-    editingRow = - 1;
-    lastSelectedRow = - 1;
-  }
-
-  /**
-   * Returns an instance of the UI delegate for the specified component.
-   *
-   * @param c the <code>JComponent</code> for which we need a UI delegate for.
-   * @return the <code>ComponentUI</code> for c.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicTreeUI();
-  }
-
-  /**
-   * Returns the Hash color.
-   *
-   * @return the <code>Color</code> of the Hash.
-   */
-  protected Color getHashColor()
-  {
-    return hashColor;
-  }
-
-  /**
-   * Sets the Hash color.
-   *
-   * @param color the <code>Color</code> to set the Hash to.
-   */
-  protected void setHashColor(Color color)
-  {
-    hashColor = color;
-  }
-
-  /**
-   * Sets the left child's indent value.
-   *
-   * @param newAmount is the new indent value for the left child.
-   */
-  public void setLeftChildIndent(int newAmount)
-  {
-    leftChildIndent = newAmount;
-  }
-
-  /**
-   * Returns the indent value for the left child.
-   *
-   * @return the indent value for the left child.
-   */
-  public int getLeftChildIndent()
-  {
-    return leftChildIndent;
-  }
-
-  /**
-   * Sets the right child's indent value.
-   *
-   * @param newAmount is the new indent value for the right child.
-   */
-  public void setRightChildIndent(int newAmount)
-  {
-    rightChildIndent = newAmount;
-  }
-
-  /**
-   * Returns the indent value for the right child.
-   *
-   * @return the indent value for the right child.
-   */
-  public int getRightChildIndent()
-  {
-    return rightChildIndent;
-  }
-
-  /**
-   * Sets the expanded icon.
-   *
-   * @param newG is the new expanded icon.
-   */
-  public void setExpandedIcon(Icon newG)
-  {
-    expandedIcon = newG;
-  }
-
-  /**
-   * Returns the current expanded icon.
-   *
-   * @return the current expanded icon.
-   */
-  public Icon getExpandedIcon()
-  {
-    return expandedIcon;
-  }
-
-  /**
-   * Sets the collapsed icon.
-   *
-   * @param newG is the new collapsed icon.
-   */
-  public void setCollapsedIcon(Icon newG)
-  {
-    collapsedIcon = newG;
-  }
-
-  /**
-   * Returns the current collapsed icon.
-   *
-   * @return the current collapsed icon.
-   */
-  public Icon getCollapsedIcon()
-  {
-    return collapsedIcon;
-  }
-
-  /**
-   * Updates the componentListener, if necessary.
-   *
-   * @param largeModel sets this.largeModel to it.
-   */
-  protected void setLargeModel(boolean largeModel)
-  {
-    if (largeModel != this.largeModel)
-      {
-        completeEditing();
-        tree.removeComponentListener(componentListener);
-        this.largeModel = largeModel;
-        tree.addComponentListener(componentListener);
-      }
-  }
-
-  /**
-   * Returns true if largeModel is set
-   *
-   * @return true if largeModel is set, otherwise false.
-   */
-  protected boolean isLargeModel()
-  {
-    return largeModel;
-  }
-
-  /**
-   * Sets the row height.
-   *
-   * @param rowHeight is the height to set this.rowHeight to.
-   */
-  protected void setRowHeight(int rowHeight)
-  {
-    completeEditing();
-    if (rowHeight == 0)
-      rowHeight = getMaxHeight(tree);
-    treeState.setRowHeight(rowHeight);
-  }
-
-  /**
-   * Returns the current row height.
-   *
-   * @return current row height.
-   */
-  protected int getRowHeight()
-  {
-    return tree.getRowHeight();
-  }
-
-  /**
-   * Sets the TreeCellRenderer to <code>tcr</code>. This invokes
-   * <code>updateRenderer</code>.
-   *
-   * @param tcr is the new TreeCellRenderer.
-   */
-  protected void setCellRenderer(TreeCellRenderer tcr)
-  {
-    // Finish editing before changing the renderer.
-    completeEditing();
-
-    // The renderer is set in updateRenderer.
-    updateRenderer();
-
-    // Refresh the layout if necessary.
-    if (treeState != null)
-      {
-        treeState.invalidateSizes();
-        updateSize();
-      }
-  }
-
-  /**
-   * Return currentCellRenderer, which will either be the trees renderer, or
-   * defaultCellRenderer, which ever was not null.
-   *
-   * @return the current Cell Renderer
-   */
-  protected TreeCellRenderer getCellRenderer()
-  {
-    if (currentCellRenderer != null)
-      return currentCellRenderer;
-
-    return createDefaultCellRenderer();
-  }
-
-  /**
-   * Sets the tree's model.
-   *
-   * @param model to set the treeModel to.
-   */
-  protected void setModel(TreeModel model)
-  {
-    completeEditing();
-
-    if (treeModel != null && treeModelListener != null)
-      treeModel.removeTreeModelListener(treeModelListener);
-
-    treeModel = tree.getModel();
-
-    if (treeModel != null && treeModelListener != null)
-      treeModel.addTreeModelListener(treeModelListener);
-
-    if (treeState != null)
-      {
-        treeState.setModel(treeModel);
-        updateLayoutCacheExpandedNodes();
-        updateSize();
-      }
-  }
-
-  /**
-   * Returns the tree's model
-   *
-   * @return treeModel
-   */
-  protected TreeModel getModel()
-  {
-    return treeModel;
-  }
-
-  /**
-   * Sets the root to being visible.
-   *
-   * @param newValue sets the visibility of the root
-   */
-  protected void setRootVisible(boolean newValue)
-  {
-    completeEditing();
-    tree.setRootVisible(newValue);
-  }
-
-  /**
-   * Returns true if the root is visible.
-   *
-   * @return true if the root is visible.
-   */
-  protected boolean isRootVisible()
-  {
-    return tree.isRootVisible();
-  }
-
-  /**
-   * Determines whether the node handles are to be displayed.
-   *
-   * @param newValue sets whether or not node handles should be displayed.
-   */
-  protected void setShowsRootHandles(boolean newValue)
-  {
-    completeEditing();
-    updateDepthOffset();
-    if (treeState != null)
-      {
-        treeState.invalidateSizes();
-        updateSize();
-      }
-  }
-
-  /**
-   * Returns true if the node handles are to be displayed.
-   *
-   * @return true if the node handles are to be displayed.
-   */
-  protected boolean getShowsRootHandles()
-  {
-    return tree.getShowsRootHandles();
-  }
-
-  /**
-   * Sets the cell editor.
-   *
-   * @param editor to set the cellEditor to.
-   */
-  protected void setCellEditor(TreeCellEditor editor)
-  {
-    updateCellEditor();
-  }
-
-  /**
-   * Returns the <code>TreeCellEditor</code> for this tree.
-   *
-   * @return the cellEditor for this tree.
-   */
-  protected TreeCellEditor getCellEditor()
-  {
-    return cellEditor;
-  }
-
-  /**
-   * Configures the receiver to allow, or not allow, editing.
-   *
-   * @param newValue sets the receiver to allow editing if true.
-   */
-  protected void setEditable(boolean newValue)
-  {
-    updateCellEditor();
-  }
-
-  /**
-   * Returns true if the receiver allows editing.
-   *
-   * @return true if the receiver allows editing.
-   */
-  protected boolean isEditable()
-  {
-    return tree.isEditable();
-  }
-
-  /**
-   * Resets the selection model. The appropriate listeners are installed on the
-   * model.
-   *
-   * @param newLSM resets the selection model.
-   */
-  protected void setSelectionModel(TreeSelectionModel newLSM)
-  {
-    completeEditing();
-    if (newLSM != null)
-      {
-        treeSelectionModel = newLSM;
-        tree.setSelectionModel(treeSelectionModel);
-      }
-  }
-
-  /**
-   * Returns the current selection model.
-   *
-   * @return the current selection model.
-   */
-  protected TreeSelectionModel getSelectionModel()
-  {
-    return treeSelectionModel;
-  }
-
-  /**
-   * Returns the Rectangle enclosing the label portion that the last item in
-   * path will be drawn to. Will return null if any component in path is
-   * currently valid.
-   *
-   * @param tree is the current tree the path will be drawn to.
-   * @param path is the current path the tree to draw to.
-   * @return the Rectangle enclosing the label portion that the last item in the
-   *         path will be drawn to.
-   */
-  public Rectangle getPathBounds(JTree tree, TreePath path)
-  {
-    Rectangle bounds = null;
-    if (tree != null && treeState != null)
-      {
-        bounds = treeState.getBounds(path, null);
-        Insets i = tree.getInsets();
-        if (bounds != null && i != null)
-          {
-            bounds.x += i.left;
-            bounds.y += i.top;
-          }
-      }
-    return bounds;
-  }
-
-  /**
-   * Returns the max height of all the nodes in the tree.
-   *
-   * @param tree - the current tree
-   * @return the max height.
-   */
-  int getMaxHeight(JTree tree)
-  {
-    if (maxHeight != 0)
-      return maxHeight;
-
-    Icon e = UIManager.getIcon("Tree.openIcon");
-    Icon c = UIManager.getIcon("Tree.closedIcon");
-    Icon l = UIManager.getIcon("Tree.leafIcon");
-    int rc = getRowCount(tree);
-    int iconHeight = 0;
-
-    for (int row = 0; row < rc; row++)
-      {
-        if (isLeaf(row))
-          iconHeight = l.getIconHeight();
-        else if (tree.isExpanded(row))
-          iconHeight = e.getIconHeight();
-        else
-          iconHeight = c.getIconHeight();
-
-        maxHeight = Math.max(maxHeight, iconHeight + gap);
-      }
-
-    treeState.setRowHeight(maxHeight);
-    return maxHeight;
-  }
-
-  /**
-   * Get the tree node icon.
-   */
-  Icon getNodeIcon(TreePath path)
-  {
-    Object node = path.getLastPathComponent();
-    if (treeModel.isLeaf(node))
-      return UIManager.getIcon("Tree.leafIcon");
-    else if (treeState.getExpandedState(path))
-      return UIManager.getIcon("Tree.openIcon");
-    else
-      return UIManager.getIcon("Tree.closedIcon");
-  }
-
-  /**
-   * Returns the path for passed in row. If row is not visible null is returned.
-   *
-   * @param tree is the current tree to return path for.
-   * @param row is the row number of the row to return.
-   * @return the path for passed in row. If row is not visible null is returned.
-   */
-  public TreePath getPathForRow(JTree tree, int row)
-  {
-    return treeState.getPathForRow(row);
-  }
-
-  /**
-   * Returns the row that the last item identified in path is visible at. Will
-   * return -1 if any of the elments in the path are not currently visible.
-   *
-   * @param tree is the current tree to return the row for.
-   * @param path is the path used to find the row.
-   * @return the row that the last item identified in path is visible at. Will
-   *         return -1 if any of the elments in the path are not currently
-   *         visible.
-   */
-  public int getRowForPath(JTree tree, TreePath path)
-  {
-    return treeState.getRowForPath(path);
-  }
-
-  /**
-   * Returns the number of rows that are being displayed.
-   *
-   * @param tree is the current tree to return the number of rows for.
-   * @return the number of rows being displayed.
-   */
-  public int getRowCount(JTree tree)
-  {
-    return treeState.getRowCount();
-  }
-
-  /**
-   * Returns the path to the node that is closest to x,y. If there is nothing
-   * currently visible this will return null, otherwise it'll always return a
-   * valid path. If you need to test if the returned object is exactly at x,y
-   * you should get the bounds for the returned path and test x,y against that.
-   *
-   * @param tree the tree to search for the closest path
-   * @param x is the x coordinate of the location to search
-   * @param y is the y coordinate of the location to search
-   * @return the tree path closes to x,y.
-   */
-  public TreePath getClosestPathForLocation(JTree tree, int x, int y)
-  {
-    return treeState.getPathClosestTo(x, y);
-  }
-
-  /**
-   * Returns true if the tree is being edited. The item that is being edited can
-   * be returned by getEditingPath().
-   *
-   * @param tree is the tree to check for editing.
-   * @return true if the tree is being edited.
-   */
-  public boolean isEditing(JTree tree)
-  {
-    return isEditing;
-  }
-
-  /**
-   * Stops the current editing session. This has no effect if the tree is not
-   * being edited. Returns true if the editor allows the editing session to
-   * stop.
-   *
-   * @param tree is the tree to stop the editing on
-   * @return true if the editor allows the editing session to stop.
-   */
-  public boolean stopEditing(JTree tree)
-  {
-    boolean ret = false;
-    if (editingComponent != null && cellEditor.stopCellEditing())
-      {
-        completeEditing(false, false, true);
-        ret = true;
-      }
-    return ret;
-  }
-
-  /**
-   * Cancels the current editing session.
-   *
-   * @param tree is the tree to cancel the editing session on.
-   */
-  public void cancelEditing(JTree tree)
-  {
-    // There is no need to send the cancel message to the editor,
-    // as the cancellation event itself arrives from it. This would
-    // only be necessary when cancelling the editing programatically.
-    if (editingComponent != null)
-      completeEditing(false, true, false);
-  }
-
-  /**
-   * Selects the last item in path and tries to edit it. Editing will fail if
-   * the CellEditor won't allow it for the selected item.
-   *
-   * @param tree is the tree to edit on.
-   * @param path is the path in tree to edit on.
-   */
-  public void startEditingAtPath(JTree tree, TreePath path)
-  {
-    tree.scrollPathToVisible(path);
-    if (path != null && tree.isVisible(path))
-      startEditing(path, null);
-  }
-
-  /**
-   * Returns the path to the element that is being editted.
-   *
-   * @param tree is the tree to get the editing path from.
-   * @return the path that is being edited.
-   */
-  public TreePath getEditingPath(JTree tree)
-  {
-    return editingPath;
-  }
-
-  /**
-   * Invoked after the tree instance variable has been set, but before any
-   * default/listeners have been installed.
-   */
-  protected void prepareForUIInstall()
-  {
-    lastSelectedRow = -1;
-    preferredSize = new Dimension();
-    largeModel = tree.isLargeModel();
-    preferredSize = new Dimension();
-    stopEditingInCompleteEditing = true;
-    setModel(tree.getModel());
-  }
-
-  /**
-   * Invoked from installUI after all the defaults/listeners have been
-   * installed.
-   */
-  protected void completeUIInstall()
-  {
-    setShowsRootHandles(tree.getShowsRootHandles());
-    updateRenderer();
-    updateDepthOffset();
-    setSelectionModel(tree.getSelectionModel());
-    configureLayoutCache();
-    treeState.setRootVisible(tree.isRootVisible());
-    treeSelectionModel.setRowMapper(treeState);
-    updateSize();
-  }
-
-  /**
-   * Invoked from uninstallUI after all the defaults/listeners have been
-   * uninstalled.
-   */
-  protected void completeUIUninstall()
-  {
-    tree = null;
-  }
-
-  /**
-   * Installs the subcomponents of the tree, which is the renderer pane.
-   */
-  protected void installComponents()
-  {
-    currentCellRenderer = createDefaultCellRenderer();
-    rendererPane = createCellRendererPane();
-    createdRenderer = true;
-    setCellRenderer(currentCellRenderer);
-  }
-
-  /**
-   * Creates an instance of NodeDimensions that is able to determine the size of
-   * a given node in the tree. The node dimensions must be created before
-   * configuring the layout cache.
-   *
-   * @return the NodeDimensions of a given node in the tree
-   */
-  protected AbstractLayoutCache.NodeDimensions createNodeDimensions()
-  {
-    return new NodeDimensionsHandler();
-  }
-
-  /**
-   * Creates a listener that is reponsible for the updates the UI based on how
-   * the tree changes.
-   *
-   * @return the PropertyChangeListener that is reposnsible for the updates
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new PropertyChangeHandler();
-  }
-
-  /**
-   * Creates the listener responsible for updating the selection based on mouse
-   * events.
-   *
-   * @return the MouseListener responsible for updating.
-   */
-  protected MouseListener createMouseListener()
-  {
-    return new MouseHandler();
-  }
-
-  /**
-   * Creates the listener that is responsible for updating the display when
-   * focus is lost/grained.
-   *
-   * @return the FocusListener responsible for updating.
-   */
-  protected FocusListener createFocusListener()
-  {
-    return new FocusHandler();
-  }
-
-  /**
-   * Creates the listener reponsible for getting key events from the tree.
-   *
-   * @return the KeyListener responsible for getting key events.
-   */
-  protected KeyListener createKeyListener()
-  {
-    return new KeyHandler();
-  }
-
-  /**
-   * Creates the listener responsible for getting property change events from
-   * the selection model.
-   *
-   * @returns the PropertyChangeListener reponsible for getting property change
-   *          events from the selection model.
-   */
-  protected PropertyChangeListener createSelectionModelPropertyChangeListener()
-  {
-    return new SelectionModelPropertyChangeHandler();
-  }
-
-  /**
-   * Creates the listener that updates the display based on selection change
-   * methods.
-   *
-   * @return the TreeSelectionListener responsible for updating.
-   */
-  protected TreeSelectionListener createTreeSelectionListener()
-  {
-    return new TreeSelectionHandler();
-  }
-
-  /**
-   * Creates a listener to handle events from the current editor
-   *
-   * @return the CellEditorListener that handles events from the current editor
-   */
-  protected CellEditorListener createCellEditorListener()
-  {
-    return new CellEditorHandler();
-  }
-
-  /**
-   * Creates and returns a new ComponentHandler. This is used for the large
-   * model to mark the validCachedPreferredSize as invalid when the component
-   * moves.
-   *
-   * @return a new ComponentHandler.
-   */
-  protected ComponentListener createComponentListener()
-  {
-    return new ComponentHandler();
-  }
-
-  /**
-   * Creates and returns the object responsible for updating the treestate when
-   * a nodes expanded state changes.
-   *
-   * @return the TreeExpansionListener responsible for updating the treestate
-   */
-  protected TreeExpansionListener createTreeExpansionListener()
-  {
-    return new TreeExpansionHandler();
-  }
-
-  /**
-   * Creates the object responsible for managing what is expanded, as well as
-   * the size of nodes.
-   *
-   * @return the object responsible for managing what is expanded.
-   */
-  protected AbstractLayoutCache createLayoutCache()
-  {
-    return new VariableHeightLayoutCache();
-  }
-
-  /**
-   * Returns the renderer pane that renderer components are placed in.
-   *
-   * @return the rendererpane that render components are placed in.
-   */
-  protected CellRendererPane createCellRendererPane()
-  {
-    return new CellRendererPane();
-  }
-
-  /**
-   * Creates a default cell editor.
-   *
-   * @return the default cell editor.
-   */
-  protected TreeCellEditor createDefaultCellEditor()
-  {
-    DefaultTreeCellEditor ed;
-    if (currentCellRenderer != null
-        && currentCellRenderer instanceof DefaultTreeCellRenderer)
-      ed = new DefaultTreeCellEditor(tree,
-                                (DefaultTreeCellRenderer) currentCellRenderer);
-    else
-      ed = new DefaultTreeCellEditor(tree, null);
-    return ed;
-  }
-
-  /**
-   * Returns the default cell renderer that is used to do the stamping of each
-   * node.
-   *
-   * @return the default cell renderer that is used to do the stamping of each
-   *         node.
-   */
-  protected TreeCellRenderer createDefaultCellRenderer()
-  {
-    return new DefaultTreeCellRenderer();
-  }
-
-  /**
-   * Returns a listener that can update the tree when the model changes.
-   *
-   * @return a listener that can update the tree when the model changes.
-   */
-  protected TreeModelListener createTreeModelListener()
-  {
-    return new TreeModelHandler();
-  }
-
-  /**
-   * Uninstall all registered listeners
-   */
-  protected void uninstallListeners()
-  {
-    tree.removePropertyChangeListener(propertyChangeListener);
-    tree.removeFocusListener(focusListener);
-    tree.removeTreeSelectionListener(treeSelectionListener);
-    tree.removeMouseListener(mouseListener);
-    tree.removeKeyListener(keyListener);
-    tree.removePropertyChangeListener(selectionModelPropertyChangeListener);
-    tree.removeComponentListener(componentListener);
-    tree.removeTreeExpansionListener(treeExpansionListener);
-
-    TreeCellEditor tce = tree.getCellEditor();
-    if (tce != null)
-      tce.removeCellEditorListener(cellEditorListener);
-    if (treeModel != null)
-      treeModel.removeTreeModelListener(treeModelListener);
-  }
-
-  /**
-   * Uninstall all keyboard actions.
-   */
-  protected void uninstallKeyboardActions()
-  {
-    tree.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).setParent(
-                                                                              null);
-    tree.getActionMap().setParent(null);
-  }
-
-  /**
-   * Uninstall the rendererPane.
-   */
-  protected void uninstallComponents()
-  {
-    currentCellRenderer = null;
-    rendererPane = null;
-    createdRenderer = false;
-    setCellRenderer(currentCellRenderer);
-  }
-
-  /**
-   * The vertical element of legs between nodes starts at the bottom of the
-   * parent node by default. This method makes the leg start below that.
-   *
-   * @return the vertical leg buffer
-   */
-  protected int getVerticalLegBuffer()
-  {
-    return getRowHeight() / 2;
-  }
-
-  /**
-   * The horizontal element of legs between nodes starts at the right of the
-   * left-hand side of the child node by default. This method makes the leg end
-   * before that.
-   *
-   * @return the horizontal leg buffer
-   */
-  protected int getHorizontalLegBuffer()
-  {
-    return rightChildIndent / 2;
-  }
-
-  /**
-   * Make all the nodes that are expanded in JTree expanded in LayoutCache. This
-   * invokes updateExpandedDescendants with the root path.
-   */
-  protected void updateLayoutCacheExpandedNodes()
-  {
-    if (treeModel != null && treeModel.getRoot() != null)
-      updateExpandedDescendants(new TreePath(treeModel.getRoot()));
-  }
-
-  /**
-   * Updates the expanded state of all the descendants of the <code>path</code>
-   * by getting the expanded descendants from the tree and forwarding to the
-   * tree state.
-   *
-   * @param path the path used to update the expanded states
-   */
-  protected void updateExpandedDescendants(TreePath path)
-  {
-    completeEditing();
-    Enumeration expanded = tree.getExpandedDescendants(path);
-    while (expanded.hasMoreElements())
-      treeState.setExpandedState((TreePath) expanded.nextElement(), true);
-  }
-
-  /**
-   * Returns a path to the last child of <code>parent</code>
-   *
-   * @param parent is the topmost path to specified
-   * @return a path to the last child of parent
-   */
-  protected TreePath getLastChildPath(TreePath parent)
-  {
-    return (TreePath) parent.getLastPathComponent();
-  }
-
-  /**
-   * Updates how much each depth should be offset by.
-   */
-  protected void updateDepthOffset()
-  {
-    depthOffset += getVerticalLegBuffer();
-  }
-
-  /**
-   * Updates the cellEditor based on editability of the JTree that we're
-   * contained in. If the tree is editable but doesn't have a cellEditor, a
-   * basic one will be used.
-   */
-  protected void updateCellEditor()
-  {
-    completeEditing();
-    TreeCellEditor newEd = null;
-    if (tree != null && tree.isEditable())
-      {
-        newEd = tree.getCellEditor();
-        if (newEd == null)
-          {
-            newEd = createDefaultCellEditor();
-            if (newEd != null)
-              {
-                tree.setCellEditor(newEd);
-                createdCellEditor = true;
-              }
-          }
-      }
-    // Update listeners.
-    if (newEd != cellEditor)
-      {
-        if (cellEditor != null && cellEditorListener != null)
-          cellEditor.removeCellEditorListener(cellEditorListener);
-        cellEditor = newEd;
-        if (cellEditorListener == null)
-          cellEditorListener = createCellEditorListener();
-        if (cellEditor != null && cellEditorListener != null)
-          cellEditor.addCellEditorListener(cellEditorListener);
-        createdCellEditor = false;
-      }
-  }
-
-  /**
-   * Messaged from the tree we're in when the renderer has changed.
-   */
-  protected void updateRenderer()
-  {
-    if (tree != null)
-      {
-        TreeCellRenderer rend = tree.getCellRenderer();
-        if (rend != null)
-          {
-            createdRenderer = false;
-            currentCellRenderer = rend;
-            if (createdCellEditor)
-              tree.setCellEditor(null);
-          }
-        else
-          {
-            tree.setCellRenderer(createDefaultCellRenderer());
-            createdRenderer = true;
-          }
-      }
-    else
-      {
-        currentCellRenderer = null;
-        createdRenderer = false;
-      }
-
-    updateCellEditor();
-  }
-
-  /**
-   * Resets the treeState instance based on the tree we're providing the look
-   * and feel for. The node dimensions handler is required and must be created
-   * in advance.
-   */
-  protected void configureLayoutCache()
-  {
-    treeState = createLayoutCache();
-    treeState.setNodeDimensions(nodeDimensions);
-  }
-
-  /**
-   * Marks the cached size as being invalid, and messages the tree with
-   * <code>treeDidChange</code>.
-   */
-  protected void updateSize()
-  {
-    preferredSize = null;
-    updateCachedPreferredSize();
-    tree.treeDidChange();
-  }
-
-  /**
-   * Updates the <code>preferredSize</code> instance variable, which is
-   * returned from <code>getPreferredSize()</code>.
-   */
-  protected void updateCachedPreferredSize()
-  {
-    validCachedPreferredSize = false;
-  }
-
-  /**
-   * Messaged from the VisibleTreeNode after it has been expanded.
-   *
-   * @param path is the path that has been expanded.
-   */
-  protected void pathWasExpanded(TreePath path)
-  {
-    validCachedPreferredSize = false;
-    treeState.setExpandedState(path, true);
-    tree.repaint();
-  }
-
-  /**
-   * Messaged from the VisibleTreeNode after it has collapsed
-   */
-  protected void pathWasCollapsed(TreePath path)
-  {
-    validCachedPreferredSize = false;
-    treeState.setExpandedState(path, false);
-    tree.repaint();
-  }
-
-  /**
-   * Install all defaults for the tree.
-   */
-  protected void installDefaults()
-  {
-    LookAndFeel.installColorsAndFont(tree, "Tree.background",
-                                     "Tree.foreground", "Tree.font");
-
-    hashColor = UIManager.getColor("Tree.hash");
-    if (hashColor == null)
-      hashColor = Color.black;
-
-    tree.setOpaque(true);
-
-    rightChildIndent = UIManager.getInt("Tree.rightChildIndent");
-    leftChildIndent = UIManager.getInt("Tree.leftChildIndent");
-    totalChildIndent = rightChildIndent + leftChildIndent;
-    setRowHeight(UIManager.getInt("Tree.rowHeight"));
-    tree.setRowHeight(getRowHeight());
-    tree.setScrollsOnExpand(UIManager.getBoolean("Tree.scrollsOnExpand"));
-    setExpandedIcon(UIManager.getIcon("Tree.expandedIcon"));
-    setCollapsedIcon(UIManager.getIcon("Tree.collapsedIcon"));
-  }
-
-  /**
-   * Install all keyboard actions for this
-   */
-  protected void installKeyboardActions()
-  {
-    InputMap focusInputMap =
-      (InputMap) SharedUIDefaults.get("Tree.focusInputMap");
-    SwingUtilities.replaceUIInputMap(tree, JComponent.WHEN_FOCUSED,
-                                     focusInputMap);
-    InputMap ancestorInputMap =
-      (InputMap) SharedUIDefaults.get("Tree.ancestorInputMap");
-    SwingUtilities.replaceUIInputMap(tree,
-                                 JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT,
-                                 ancestorInputMap);
-
-    SwingUtilities.replaceUIActionMap(tree, getActionMap());
-  }
-
-  /**
-   * Creates and returns the shared action map for JTrees.
-   *
-   * @return the shared action map for JTrees
-   */
-  private ActionMap getActionMap()
-  {
-    ActionMap am = (ActionMap) UIManager.get("Tree.actionMap");
-    if (am == null)
-      {
-        am = createDefaultActions();
-        UIManager.getLookAndFeelDefaults().put("Tree.actionMap", am);
-      }
-    return am;
-  }
-
-  /**
-   * Creates the default actions when there are none specified by the L&F.
-   *
-   * @return the default actions
-   */
-  private ActionMap createDefaultActions()
-  {
-    ActionMapUIResource am = new ActionMapUIResource();
-    Action action;
-
-    // TreeHomeAction.
-    action = new TreeHomeAction(-1, "selectFirst");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreeHomeAction(-1, "selectFirstChangeLead");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreeHomeAction(-1, "selectFirstExtendSelection");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreeHomeAction(1, "selectLast");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreeHomeAction(1, "selectLastChangeLead");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreeHomeAction(1, "selectLastExtendSelection");
-    am.put(action.getValue(Action.NAME), action);
-
-    // TreeIncrementAction.
-    action = new TreeIncrementAction(-1, "selectPrevious");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreeIncrementAction(-1, "selectPreviousExtendSelection");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreeIncrementAction(-1, "selectPreviousChangeLead");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreeIncrementAction(1, "selectNext");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreeIncrementAction(1, "selectNextExtendSelection");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreeIncrementAction(1, "selectNextChangeLead");
-    am.put(action.getValue(Action.NAME), action);
-
-    // TreeTraverseAction.
-    action = new TreeTraverseAction(-1, "selectParent");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreeTraverseAction(1, "selectChild");
-    am.put(action.getValue(Action.NAME), action);
-
-    // TreeToggleAction.
-    action = new TreeToggleAction("toggleAndAnchor");
-    am.put(action.getValue(Action.NAME), action);
-
-    // TreePageAction.
-    action = new TreePageAction(-1, "scrollUpChangeSelection");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreePageAction(-1, "scrollUpExtendSelection");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreePageAction(-1, "scrollUpChangeLead");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreePageAction(1, "scrollDownChangeSelection");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreePageAction(1, "scrollDownExtendSelection");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreePageAction(1, "scrollDownChangeLead");
-    am.put(action.getValue(Action.NAME), action);
-
-    // Tree editing actions
-    action = new TreeStartEditingAction("startEditing");
-    am.put(action.getValue(Action.NAME), action);
-    action = new TreeCancelEditingAction("cancel");
-    am.put(action.getValue(Action.NAME), action);
-
-
-    return am;
-  }
-
-  /**
-   * Converts the modifiers.
-   *
-   * @param mod - modifier to convert
-   * @returns the new modifier
-   */
-  private int convertModifiers(int mod)
-  {
-    if ((mod & KeyEvent.SHIFT_DOWN_MASK) != 0)
-      {
-        mod |= KeyEvent.SHIFT_MASK;
-        mod &= ~ KeyEvent.SHIFT_DOWN_MASK;
-      }
-    if ((mod & KeyEvent.CTRL_DOWN_MASK) != 0)
-      {
-        mod |= KeyEvent.CTRL_MASK;
-        mod &= ~ KeyEvent.CTRL_DOWN_MASK;
-      }
-    if ((mod & KeyEvent.META_DOWN_MASK) != 0)
-      {
-        mod |= KeyEvent.META_MASK;
-        mod &= ~ KeyEvent.META_DOWN_MASK;
-      }
-    if ((mod & KeyEvent.ALT_DOWN_MASK) != 0)
-      {
-        mod |= KeyEvent.ALT_MASK;
-        mod &= ~ KeyEvent.ALT_DOWN_MASK;
-      }
-    if ((mod & KeyEvent.ALT_GRAPH_DOWN_MASK) != 0)
-      {
-        mod |= KeyEvent.ALT_GRAPH_MASK;
-        mod &= ~ KeyEvent.ALT_GRAPH_DOWN_MASK;
-      }
-    return mod;
-  }
-
-  /**
-   * Install all listeners for this
-   */
-  protected void installListeners()
-  {
-    propertyChangeListener = createPropertyChangeListener();
-    tree.addPropertyChangeListener(propertyChangeListener);
-
-    focusListener = createFocusListener();
-    tree.addFocusListener(focusListener);
-
-    treeSelectionListener = createTreeSelectionListener();
-    tree.addTreeSelectionListener(treeSelectionListener);
-
-    mouseListener = createMouseListener();
-    tree.addMouseListener(mouseListener);
-
-    keyListener = createKeyListener();
-    tree.addKeyListener(keyListener);
-
-    selectionModelPropertyChangeListener =
-      createSelectionModelPropertyChangeListener();
-    if (treeSelectionModel != null
-        && selectionModelPropertyChangeListener != null)
-      {
-        treeSelectionModel.addPropertyChangeListener(
-            selectionModelPropertyChangeListener);
-      }
-
-    componentListener = createComponentListener();
-    tree.addComponentListener(componentListener);
-
-    treeExpansionListener = createTreeExpansionListener();
-    tree.addTreeExpansionListener(treeExpansionListener);
-
-    treeModelListener = createTreeModelListener();
-    if (treeModel != null)
-      treeModel.addTreeModelListener(treeModelListener);
-
-    cellEditorListener = createCellEditorListener();
-  }
-
-  /**
-   * Install the UI for the component
-   *
-   * @param c the component to install UI for
-   */
-  public void installUI(JComponent c)
-  {
-    tree = (JTree) c;
-
-    prepareForUIInstall();
-    installDefaults();
-    installComponents();
-    installKeyboardActions();
-    installListeners();
-    completeUIInstall();
-  }
-
-  /**
-   * Uninstall the defaults for the tree
-   */
-  protected void uninstallDefaults()
-  {
-    tree.setFont(null);
-    tree.setForeground(null);
-    tree.setBackground(null);
-  }
-
-  /**
-   * Uninstall the UI for the component
-   *
-   * @param c the component to uninstall UI for
-   */
-  public void uninstallUI(JComponent c)
-  {
-    completeEditing();
-
-    prepareForUIUninstall();
-    uninstallDefaults();
-    uninstallKeyboardActions();
-    uninstallListeners();
-    uninstallComponents();
-    completeUIUninstall();
-  }
-
-  /**
-   * Paints the specified component appropriate for the look and feel. This
-   * method is invoked from the ComponentUI.update method when the specified
-   * component is being painted. Subclasses should override this method and use
-   * the specified Graphics object to render the content of the component.
-   *
-   * @param g the Graphics context in which to paint
-   * @param c the component being painted; this argument is often ignored, but
-   *          might be used if the UI object is stateless and shared by multiple
-   *          components
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    JTree tree = (JTree) c;
-
-    int rows = treeState.getRowCount();
-
-    if (rows == 0)
-      // There is nothing to do if the tree is empty.
-      return;
-
-    Rectangle clip = g.getClipBounds();
-
-    Insets insets = tree.getInsets();
-
-    if (clip != null && treeModel != null)
-      {
-        int startIndex = tree.getClosestRowForLocation(clip.x, clip.y);
-        int endIndex = tree.getClosestRowForLocation(clip.x + clip.width,
-                                                     clip.y + clip.height);
-        // Also paint dashes to the invisible nodes below.
-        // These should be painted first, otherwise they may cover
-        // the control icons.
-        if (endIndex < rows)
-          for (int i = endIndex + 1; i < rows; i++)
-            {
-              TreePath path = treeState.getPathForRow(i);
-              if (isLastChild(path))
-                paintVerticalPartOfLeg(g, clip, insets, path);
-            }
-
-        // The two loops are required to ensure that the lines are not
-        // painted over the other tree components.
-
-        int n = endIndex - startIndex + 1;
-        Rectangle[] bounds = new Rectangle[n];
-        boolean[] isLeaf = new boolean[n];
-        boolean[] isExpanded = new boolean[n];
-        TreePath[] path = new TreePath[n];
-        int k;
-
-        k = 0;
-        for (int i = startIndex; i <= endIndex; i++, k++)
-          {
-            path[k] = treeState.getPathForRow(i);
-            if (path[k] != null)
-              {
-                isLeaf[k] = treeModel.isLeaf(path[k].getLastPathComponent());
-                isExpanded[k] = tree.isExpanded(path[k]);
-                bounds[k] = getPathBounds(tree, path[k]);
-
-                paintHorizontalPartOfLeg(g, clip, insets, bounds[k], path[k],
-                                         i, isExpanded[k], false, isLeaf[k]);
-              }
-            if (isLastChild(path[k]))
-              paintVerticalPartOfLeg(g, clip, insets, path[k]);
-          }
-
-        k = 0;
-        for (int i = startIndex; i <= endIndex; i++, k++)
-          {
-            if (path[k] != null)
-              paintRow(g, clip, insets, bounds[k], path[k], i, isExpanded[k],
-                       false, isLeaf[k]);
-          }
-      }
-  }
-
-  /**
-   * Check if the path is referring to the last child of some parent.
-   */
-  private boolean isLastChild(TreePath path)
-  {
-    if (path == null)
-      return false;
-    else if (path instanceof GnuPath)
-      {
-        // Except the seldom case when the layout cache is changed, this
-        // optimized code will be executed.
-        return ((GnuPath) path).isLastChild;
-      }
-    else
-      {
-        // Non optimized general case.
-        TreePath parent = path.getParentPath();
-        if (parent == null)
-          return false;
-        int childCount = treeState.getVisibleChildCount(parent);
-        int p = treeModel.getIndexOfChild(parent, path.getLastPathComponent());
-        return p == childCount - 1;
-      }
-  }
-
-  /**
-   * Ensures that the rows identified by beginRow through endRow are visible.
-   *
-   * @param beginRow is the first row
-   * @param endRow is the last row
-   */
-  protected void ensureRowsAreVisible(int beginRow, int endRow)
-  {
-    if (beginRow < endRow)
-      {
-        int temp = endRow;
-        endRow = beginRow;
-        beginRow = temp;
-      }
-
-    for (int i = beginRow; i < endRow; i++)
-      {
-        TreePath path = getPathForRow(tree, i);
-        if (! tree.isVisible(path))
-          tree.makeVisible(path);
-      }
-  }
-
-  /**
-   * Sets the preferred minimum size.
-   *
-   * @param newSize is the new preferred minimum size.
-   */
-  public void setPreferredMinSize(Dimension newSize)
-  {
-    preferredMinSize = newSize;
-  }
-
-  /**
-   * Gets the preferred minimum size.
-   *
-   * @returns the preferred minimum size.
-   */
-  public Dimension getPreferredMinSize()
-  {
-    if (preferredMinSize == null)
-      return getPreferredSize(tree);
-    else
-      return preferredMinSize;
-  }
-
-  /**
-   * Returns the preferred size to properly display the tree, this is a cover
-   * method for getPreferredSize(c, false).
-   *
-   * @param c the component whose preferred size is being queried; this argument
-   *          is often ignored but might be used if the UI object is stateless
-   *          and shared by multiple components
-   * @return the preferred size
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    return getPreferredSize(c, false);
-  }
-
-  /**
-   * Returns the preferred size to represent the tree in c. If checkConsistancy
-   * is true, checkConsistancy is messaged first.
-   *
-   * @param c the component whose preferred size is being queried.
-   * @param checkConsistancy if true must check consistancy
-   * @return the preferred size
-   */
-  public Dimension getPreferredSize(JComponent c, boolean checkConsistancy)
-  {
-    if (! validCachedPreferredSize)
-      {
-        Rectangle size = tree.getBounds();
-        // Add the scrollbar dimensions to the preferred size.
-        preferredSize = new Dimension(treeState.getPreferredWidth(size),
-                                      treeState.getPreferredHeight());
-        validCachedPreferredSize = true;
-      }
-    return preferredSize;
-  }
-
-  /**
-   * Returns the minimum size for this component. Which will be the min
-   * preferred size or (0,0).
-   *
-   * @param c the component whose min size is being queried.
-   * @returns the preferred size or null
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    return preferredMinSize = getPreferredSize(c);
-  }
-
-  /**
-   * Returns the maximum size for the component, which will be the preferred
-   * size if the instance is currently in JTree or (0,0).
-   *
-   * @param c the component whose preferred size is being queried
-   * @return the max size or null
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return getPreferredSize(c);
-  }
-
-  /**
-   * Messages to stop the editing session. If the UI the receiver is providing
-   * the look and feel for returns true from
-   * <code>getInvokesStopCellEditing</code>, stopCellEditing will be invoked
-   * on the current editor. Then completeEditing will be messaged with false,
-   * true, false to cancel any lingering editing.
-   */
-  protected void completeEditing()
-  {
-    if (tree.getInvokesStopCellEditing() && stopEditingInCompleteEditing
-        && editingComponent != null)
-      cellEditor.stopCellEditing();
-
-    completeEditing(false, true, false);
-  }
-
-  /**
-   * Stops the editing session. If messageStop is true, the editor is messaged
-   * with stopEditing, if messageCancel is true the editor is messaged with
-   * cancelEditing. If messageTree is true, the treeModel is messaged with
-   * valueForPathChanged.
-   *
-   * @param messageStop message to stop editing
-   * @param messageCancel message to cancel editing
-   * @param messageTree message to treeModel
-   */
-  protected void completeEditing(boolean messageStop, boolean messageCancel,
-                                 boolean messageTree)
-  {
-    // Make no attempt to complete the non existing editing session.
-    if (stopEditingInCompleteEditing && editingComponent != null)
-      {
-        Component comp = editingComponent;
-        TreePath p = editingPath;
-        editingComponent = null;
-        editingPath = null;
-        if (messageStop)
-          cellEditor.stopCellEditing();
-        else if (messageCancel)
-          cellEditor.cancelCellEditing();
-
-        tree.remove(comp);
-
-        if (editorHasDifferentSize)
-          {
-            treeState.invalidatePathBounds(p);
-            updateSize();
-          }
-        else
-          {
-            // Need to refresh the tree.
-            Rectangle b = getPathBounds(tree, p);
-            tree.repaint(0, b.y, tree.getWidth(), b.height);
-          }
-
-        if (messageTree)
-          {
-            Object value = cellEditor.getCellEditorValue();
-            treeModel.valueForPathChanged(p, value);
-          }
-      }
-  }
-
-  /**
-   * Will start editing for node if there is a cellEditor and shouldSelectCall
-   * returns true. This assumes that path is valid and visible.
-   *
-   * @param path is the path to start editing
-   * @param event is the MouseEvent performed on the path
-   * @return true if successful
-   */
-  protected boolean startEditing(TreePath path, MouseEvent event)
-  {
-    // Maybe cancel editing.
-    if (isEditing(tree) && tree.getInvokesStopCellEditing()
-        && ! stopEditing(tree))
-      return false;
-
-    completeEditing();
-    TreeCellEditor ed = cellEditor;
-    if (ed != null && tree.isPathEditable(path))
-      {
-        if (ed.isCellEditable(event))
-          {
-            editingRow = getRowForPath(tree, path);
-            Object value = path.getLastPathComponent();
-            boolean isSelected = tree.isPathSelected(path);
-            boolean isExpanded = tree.isExpanded(editingPath);
-            boolean isLeaf = treeModel.isLeaf(value);
-            editingComponent = ed.getTreeCellEditorComponent(tree, value,
-                                                             isSelected,
-                                                             isExpanded,
-                                                             isLeaf,
-                                                             editingRow);
-
-            Rectangle bounds = getPathBounds(tree, path);
-
-            Dimension size = editingComponent.getPreferredSize();
-            int rowHeight = getRowHeight();
-            if (size.height != bounds.height && rowHeight > 0)
-              size.height = rowHeight;
-
-            if (size.width != bounds.width || size.height != bounds.height)
-              {
-                editorHasDifferentSize = true;
-                treeState.invalidatePathBounds(path);
-                updateSize();
-              }
-            else
-              editorHasDifferentSize = false;
-
-            // The editing component must be added to its container. We add the
-            // container, not the editing component itself.
-            tree.add(editingComponent);
-            editingComponent.setBounds(bounds.x, bounds.y, size.width,
-                                       size.height);
-            editingComponent.validate();
-            editingPath = path;
-
-            if (ed.shouldSelectCell(event))
-              {
-                stopEditingInCompleteEditing = false;
-                tree.setSelectionRow(editingRow);
-                stopEditingInCompleteEditing = true;
-              }
-
-            editorRequestFocus(editingComponent);
-            // Register MouseInputHandler to redispatch initial mouse events
-            // correctly.
-            if (event instanceof MouseEvent)
-              {
-                Point p = SwingUtilities.convertPoint(tree, event.getX(), event.getY(),
-                                                      editingComponent);
-                Component active =
-                  SwingUtilities.getDeepestComponentAt(editingComponent, p.x, p.y);
-                if (active != null)
-                  {
-                    MouseInputHandler ih = new MouseInputHandler(tree, active, event);
-
-                  }
-              }
-
-            return true;
-          }
-        else
-          editingComponent = null;
-      }
-    return false;
-  }
-
-  /**
-   * Requests focus on the editor. The method is necessary since the
-   * DefaultTreeCellEditor returns a container that contains the
-   * actual editor, and we want to request focus on the editor, not the
-   * container.
-   */
-  private void editorRequestFocus(Component c)
-  {
-    if (c instanceof Container)
-      {
-        // TODO: Maybe do something more reasonable here, like queriying the
-        // FocusTraversalPolicy.
-        Container cont = (Container) c;
-        if (cont.getComponentCount() > 0)
-          cont.getComponent(0).requestFocus();
-      }
-    else if (c.isFocusable())
-      c.requestFocus();
-
-  }
-
-  /**
-   * If the <code>mouseX</code> and <code>mouseY</code> are in the expand or
-   * collapse region of the row, this will toggle the row.
-   *
-   * @param path the path we are concerned with
-   * @param mouseX is the cursor's x position
-   * @param mouseY is the cursor's y position
-   */
-  protected void checkForClickInExpandControl(TreePath path, int mouseX,
-                                              int mouseY)
-  {
-    if (isLocationInExpandControl(path, mouseX, mouseY))
-      handleExpandControlClick(path, mouseX, mouseY);
-  }
-
-  /**
-   * Returns true if the <code>mouseX</code> and <code>mouseY</code> fall in
-   * the area of row that is used to expand/collpse the node and the node at row
-   * does not represent a leaf.
-   *
-   * @param path the path we are concerned with
-   * @param mouseX is the cursor's x position
-   * @param mouseY is the cursor's y position
-   * @return true if the <code>mouseX</code> and <code>mouseY</code> fall in
-   *         the area of row that is used to expand/collpse the node and the
-   *         node at row does not represent a leaf.
-   */
-  protected boolean isLocationInExpandControl(TreePath path, int mouseX,
-                                              int mouseY)
-  {
-    boolean cntlClick = false;
-    if (! treeModel.isLeaf(path.getLastPathComponent()))
-      {
-        int width;
-        Icon expandedIcon = getExpandedIcon();
-        if (expandedIcon != null)
-          width = expandedIcon.getIconWidth();
-        else
-          // Only guessing. This is the width of
-          // the tree control icon in Metal L&F.
-          width = 18;
-
-        Insets i = tree.getInsets();
-
-        int depth;
-        if (isRootVisible())
-          depth = path.getPathCount()-1;
-        else
-          depth = path.getPathCount()-2;
-
-        int left = getRowX(tree.getRowForPath(path), depth)
-                   - width + i.left;
-        cntlClick = mouseX >= left && mouseX <= left + width;
-      }
-    return cntlClick;
-  }
-
-  /**
-   * Messaged when the user clicks the particular row, this invokes
-   * toggleExpandState.
-   *
-   * @param path the path we are concerned with
-   * @param mouseX is the cursor's x position
-   * @param mouseY is the cursor's y position
-   */
-  protected void handleExpandControlClick(TreePath path, int mouseX, int mouseY)
-  {
-    toggleExpandState(path);
-  }
-
-  /**
-   * Expands path if it is not expanded, or collapses row if it is expanded. If
-   * expanding a path and JTree scroll on expand, ensureRowsAreVisible is
-   * invoked to scroll as many of the children to visible as possible (tries to
-   * scroll to last visible descendant of path).
-   *
-   * @param path the path we are concerned with
-   */
-  protected void toggleExpandState(TreePath path)
-  {
-    // tree.isExpanded(path) would do the same, but treeState knows faster.
-    if (treeState.isExpanded(path))
-      tree.collapsePath(path);
-    else
-      tree.expandPath(path);
-  }
-
-  /**
-   * Returning true signifies a mouse event on the node should toggle the
-   * selection of only the row under the mouse. The BasisTreeUI treats the
-   * event as "toggle selection event" if the CTRL button was pressed while
-   * clicking. The event is not counted as toggle event if the associated
-   * tree does not support the multiple selection.
-   *
-   * @param event is the MouseEvent performed on the row.
-   * @return true signifies a mouse event on the node should toggle the
-   *         selection of only the row under the mouse.
-   */
-  protected boolean isToggleSelectionEvent(MouseEvent event)
-  {
-    return
-      (tree.getSelectionModel().getSelectionMode() !=
-        TreeSelectionModel.SINGLE_TREE_SELECTION) &&
-      ((event.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) != 0);
-  }
-
-  /**
-   * Returning true signifies a mouse event on the node should select from the
-   * anchor point. The BasisTreeUI treats the event as "multiple selection
-   * event" if the SHIFT button was pressed while clicking. The event is not
-   * counted as multiple selection event if the associated tree does not support
-   * the multiple selection.
-   *
-   * @param event is the MouseEvent performed on the node.
-   * @return true signifies a mouse event on the node should select from the
-   *         anchor point.
-   */
-  protected boolean isMultiSelectEvent(MouseEvent event)
-  {
-    return
-      (tree.getSelectionModel().getSelectionMode() !=
-        TreeSelectionModel.SINGLE_TREE_SELECTION) &&
-      ((event.getModifiersEx() & InputEvent.SHIFT_DOWN_MASK) != 0);
-  }
-
-  /**
-   * Returning true indicates the row under the mouse should be toggled based on
-   * the event. This is invoked after checkForClickInExpandControl, implying the
-   * location is not in the expand (toggle) control.
-   *
-   * @param event is the MouseEvent performed on the row.
-   * @return true indicates the row under the mouse should be toggled based on
-   *         the event.
-   */
-  protected boolean isToggleEvent(MouseEvent event)
-  {
-    boolean toggle = false;
-    if (SwingUtilities.isLeftMouseButton(event))
-      {
-        int clickCount = tree.getToggleClickCount();
-        if (clickCount > 0 && event.getClickCount() == clickCount)
-          toggle = true;
-      }
-    return toggle;
-  }
-
-  /**
-   * Messaged to update the selection based on a MouseEvent over a particular
-   * row. If the even is a toggle selection event, the row is either selected,
-   * or deselected. If the event identifies a multi selection event, the
-   * selection is updated from the anchor point. Otherwise, the row is selected,
-   * and the previous selection is cleared.</p>
-   *
-   * @param path is the path selected for an event
-   * @param event is the MouseEvent performed on the path.
-   *
-   * @see #isToggleSelectionEvent(MouseEvent)
-   * @see #isMultiSelectEvent(MouseEvent)
-   */
-  protected void selectPathForEvent(TreePath path, MouseEvent event)
-  {
-    if (isToggleSelectionEvent(event))
-      {
-        // The event selects or unselects the clicked row.
-        if (tree.isPathSelected(path))
-          tree.removeSelectionPath(path);
-        else
-          {
-            tree.addSelectionPath(path);
-            tree.setAnchorSelectionPath(path);
-          }
-      }
-    else if (isMultiSelectEvent(event))
-      {
-        // The event extends selection form anchor till the clicked row.
-        TreePath anchor = tree.getAnchorSelectionPath();
-        if (anchor != null)
-          {
-            int aRow = getRowForPath(tree, anchor);
-            tree.addSelectionInterval(aRow, getRowForPath(tree, path));
-          }
-        else
-          tree.addSelectionPath(path);
-      }
-    else
-      {
-        // This is an ordinary event that just selects the clicked row.
-        tree.setSelectionPath(path);
-        if (isToggleEvent(event))
-          toggleExpandState(path);
-      }
-  }
-
-  /**
-   * Returns true if the node at <code>row</code> is a leaf.
-   *
-   * @param row is the row we are concerned with.
-   * @return true if the node at <code>row</code> is a leaf.
-   */
-  protected boolean isLeaf(int row)
-  {
-    TreePath pathForRow = getPathForRow(tree, row);
-    if (pathForRow == null)
-      return true;
-
-    Object node = pathForRow.getLastPathComponent();
-    return treeModel.isLeaf(node);
-  }
-
-  /**
-   * The action to start editing at the current lead selection path.
-   */
-  class TreeStartEditingAction
-      extends AbstractAction
-  {
-    /**
-     * Creates the new tree cancel editing action.
-     *
-     * @param name the name of the action (used in toString).
-     */
-    public TreeStartEditingAction(String name)
-    {
-      super(name);
-    }
-
-    /**
-     * Start editing at the current lead selection path.
-     *
-     * @param e the ActionEvent that caused this action.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      TreePath lead = tree.getLeadSelectionPath();
-      if (!tree.isEditing())
-        tree.startEditingAtPath(lead);
-    }
-  }
-
-  /**
-   * Updates the preferred size when scrolling, if necessary.
-   */
-  public class ComponentHandler
-      extends ComponentAdapter
-      implements ActionListener
-  {
-    /**
-     * Timer used when inside a scrollpane and the scrollbar is adjusting
-     */
-    protected Timer timer;
-
-    /** ScrollBar that is being adjusted */
-    protected JScrollBar scrollBar;
-
-    /**
-     * Constructor
-     */
-    public ComponentHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked when the component's position changes.
-     *
-     * @param e the event that occurs when moving the component
-     */
-    public void componentMoved(ComponentEvent e)
-    {
-      if (timer == null)
-        {
-          JScrollPane scrollPane = getScrollPane();
-          if (scrollPane == null)
-            updateSize();
-          else
-            {
-              // Determine the scrollbar that is adjusting, if any, and
-              // start the timer for that. If no scrollbar is adjusting,
-              // we simply call updateSize().
-              scrollBar = scrollPane.getVerticalScrollBar();
-              if (scrollBar == null || !scrollBar.getValueIsAdjusting())
-                {
-                  // It's not the vertical scrollbar, try the horizontal one.
-                  scrollBar = scrollPane.getHorizontalScrollBar();
-                  if (scrollBar != null && scrollBar.getValueIsAdjusting())
-                    startTimer();
-                  else
-                    updateSize();
-                }
-              else
-                {
-                  startTimer();
-                }
-            }
-        }
-    }
-
-    /**
-     * Creates, if necessary, and starts a Timer to check if needed to resize
-     * the bounds
-     */
-    protected void startTimer()
-    {
-      if (timer == null)
-        {
-          timer = new Timer(200, this);
-          timer.setRepeats(true);
-        }
-      timer.start();
-    }
-
-    /**
-     * Returns the JScrollPane housing the JTree, or null if one isn't found.
-     *
-     * @return JScrollPane housing the JTree, or null if one isn't found.
-     */
-    protected JScrollPane getScrollPane()
-    {
-      JScrollPane found = null;
-      Component p = tree.getParent();
-      while (p != null && !(p instanceof JScrollPane))
-        p = p.getParent();
-      if (p instanceof JScrollPane)
-        found = (JScrollPane) p;
-      return found;
-    }
-
-    /**
-     * Public as a result of Timer. If the scrollBar is null, or not adjusting,
-     * this stops the timer and updates the sizing.
-     *
-     * @param ae is the action performed
-     */
-    public void actionPerformed(ActionEvent ae)
-    {
-      if (scrollBar == null || !scrollBar.getValueIsAdjusting())
-        {
-          if (timer != null)
-            timer.stop();
-          updateSize();
-          timer = null;
-          scrollBar = null;
-        }
-    }
-  }
-
-  /**
-   * Listener responsible for getting cell editing events and updating the tree
-   * accordingly.
-   */
-  public class CellEditorHandler
-      implements CellEditorListener
-  {
-    /**
-     * Constructor
-     */
-    public CellEditorHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Messaged when editing has stopped in the tree. Tells the listeners
-     * editing has stopped.
-     *
-     * @param e is the notification event
-     */
-    public void editingStopped(ChangeEvent e)
-    {
-      completeEditing(false, false, true);
-    }
-
-    /**
-     * Messaged when editing has been canceled in the tree. This tells the
-     * listeners the editor has canceled editing.
-     *
-     * @param e is the notification event
-     */
-    public void editingCanceled(ChangeEvent e)
-    {
-      completeEditing(false, false, false);
-    }
-  } // CellEditorHandler
-
-  /**
-   * Repaints the lead selection row when focus is lost/grained.
-   */
-  public class FocusHandler
-      implements FocusListener
-  {
-    /**
-     * Constructor
-     */
-    public FocusHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked when focus is activated on the tree we're in, redraws the lead
-     * row. Invoked when a component gains the keyboard focus. The method
-     * repaints the lead row that is shown differently when the tree is in
-     * focus.
-     *
-     * @param e is the focus event that is activated
-     */
-    public void focusGained(FocusEvent e)
-    {
-      repaintLeadRow();
-    }
-
-    /**
-     * Invoked when focus is deactivated on the tree we're in, redraws the lead
-     * row. Invoked when a component loses the keyboard focus. The method
-     * repaints the lead row that is shown differently when the tree is in
-     * focus.
-     *
-     * @param e is the focus event that is deactivated
-     */
-    public void focusLost(FocusEvent e)
-    {
-      repaintLeadRow();
-    }
-
-    /**
-     * Repaint the lead row.
-     */
-    void repaintLeadRow()
-    {
-      TreePath lead = tree.getLeadSelectionPath();
-      if (lead != null)
-        tree.repaint(tree.getPathBounds(lead));
-    }
-  }
-
-  /**
-   * This is used to get multiple key down events to appropriately genereate
-   * events.
-   */
-  public class KeyHandler
-      extends KeyAdapter
-  {
-    /** Key code that is being generated for. */
-    protected Action repeatKeyAction;
-
-    /** Set to true while keyPressed is active */
-    protected boolean isKeyDown;
-
-    /**
-     * Constructor
-     */
-    public KeyHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked when a key has been typed. Moves the keyboard focus to the first
-     * element whose first letter matches the alphanumeric key pressed by the
-     * user. Subsequent same key presses move the keyboard focus to the next
-     * object that starts with the same letter.
-     *
-     * @param e the key typed
-     */
-    public void keyTyped(KeyEvent e)
-    {
-      char typed = Character.toLowerCase(e.getKeyChar());
-      for (int row = tree.getLeadSelectionRow() + 1;
-        row < tree.getRowCount(); row++)
-        {
-           if (checkMatch(row, typed))
-             {
-               tree.setSelectionRow(row);
-               tree.scrollRowToVisible(row);
-               return;
-             }
-        }
-
-      // Not found below, search above:
-      for (int row = 0; row < tree.getLeadSelectionRow(); row++)
-        {
-           if (checkMatch(row, typed))
-             {
-               tree.setSelectionRow(row);
-               tree.scrollRowToVisible(row);
-               return;
-             }
-        }
-    }
-
-    /**
-     * Check if the given tree row starts with this character
-     *
-     * @param row the tree row
-     * @param typed the typed char, must be converted to lowercase
-     * @return true if the given tree row starts with this character
-     */
-    boolean checkMatch(int row, char typed)
-    {
-      TreePath path = treeState.getPathForRow(row);
-      String node = path.getLastPathComponent().toString();
-      if (node.length() > 0)
-        {
-          char x = node.charAt(0);
-          if (typed == Character.toLowerCase(x))
-            return true;
-        }
-      return false;
-    }
-
-    /**
-     * Invoked when a key has been pressed.
-     *
-     * @param e the key pressed
-     */
-    public void keyPressed(KeyEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked when a key has been released
-     *
-     * @param e the key released
-     */
-    public void keyReleased(KeyEvent e)
-    {
-      // Nothing to do here.
-    }
-  }
-
-  /**
-   * MouseListener is responsible for updating the selection based on mouse
-   * events.
-   */
-  public class MouseHandler
-    extends MouseAdapter
-    implements MouseMotionListener
-  {
-
-    /**
-     * If the cell has been selected on mouse press.
-     */
-    private boolean selectedOnPress;
-
-    /**
-     * Constructor
-     */
-    public MouseHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked when a mouse button has been pressed on a component.
-     *
-     * @param e is the mouse event that occured
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      if (! e.isConsumed())
-        {
-          handleEvent(e);
-          selectedOnPress = true;
-        }
-      else
-        {
-          selectedOnPress = false;
-        }
-    }
-
-    /**
-     * Invoked when a mouse button is pressed on a component and then dragged.
-     * MOUSE_DRAGGED events will continue to be delivered to the component where
-     * the drag originated until the mouse button is released (regardless of
-     * whether the mouse position is within the bounds of the component).
-     *
-     * @param e is the mouse event that occured
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked when the mouse button has been moved on a component (with no
-     * buttons no down).
-     *
-     * @param e the mouse event that occured
-     */
-    public void mouseMoved(MouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked when a mouse button has been released on a component.
-     *
-     * @param e is the mouse event that occured
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      if (! e.isConsumed() && ! selectedOnPress)
-        handleEvent(e);
-    }
-
-    /**
-     * Handles press and release events.
-     *
-     * @param e the mouse event
-     */
-    private void handleEvent(MouseEvent e)
-    {
-      if (tree != null && tree.isEnabled())
-        {
-          // Maybe stop editing.
-          if (isEditing(tree) && tree.getInvokesStopCellEditing()
-              && ! stopEditing(tree))
-            return;
-
-          // Explicitly request focus.
-          tree.requestFocusInWindow();
-
-          int x = e.getX();
-          int y = e.getY();
-          TreePath path = getClosestPathForLocation(tree, x, y);
-          if (path != null)
-            {
-              Rectangle b = getPathBounds(tree, path);
-              if (y <= b.y + b.height)
-                {
-                  if (SwingUtilities.isLeftMouseButton(e))
-                    checkForClickInExpandControl(path, x, y);
-                  if (x > b.x && x <= b.x + b.width)
-                    {
-                      if (! startEditing(path, e))
-                        selectPathForEvent(path, e);
-                    }
-                }
-            }
-        }
-    }
-  }
-
-  /**
-   * MouseInputHandler handles passing all mouse events, including mouse motion
-   * events, until the mouse is released to the destination it is constructed
-   * with.
-   */
-  public class MouseInputHandler
-      implements MouseInputListener
-  {
-    /** Source that events are coming from */
-    protected Component source;
-
-    /** Destination that receives all events. */
-    protected Component destination;
-
-    /**
-     * Constructor
-     *
-     * @param source that events are coming from
-     * @param destination that receives all events
-     * @param e is the event received
-     */
-    public MouseInputHandler(Component source, Component destination,
-                             MouseEvent e)
-    {
-      this.source = source;
-      this.destination = destination;
-      source.addMouseListener(this);
-      source.addMouseMotionListener(this);
-      dispatch(e);
-    }
-
-    /**
-     * Invoked when the mouse button has been clicked (pressed and released) on
-     * a component.
-     *
-     * @param e mouse event that occured
-     */
-    public void mouseClicked(MouseEvent e)
-    {
-      dispatch(e);
-    }
-
-    /**
-     * Invoked when a mouse button has been pressed on a component.
-     *
-     * @param e mouse event that occured
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked when a mouse button has been released on a component.
-     *
-     * @param e mouse event that occured
-     */
-    public void mouseReleased(MouseEvent e)
-    {
-      dispatch(e);
-      removeFromSource();
-    }
-
-    /**
-     * Invoked when the mouse enters a component.
-     *
-     * @param e mouse event that occured
-     */
-    public void mouseEntered(MouseEvent e)
-    {
-      if (! SwingUtilities.isLeftMouseButton(e))
-        removeFromSource();
-    }
-
-    /**
-     * Invoked when the mouse exits a component.
-     *
-     * @param e mouse event that occured
-     */
-    public void mouseExited(MouseEvent e)
-    {
-      if (! SwingUtilities.isLeftMouseButton(e))
-        removeFromSource();
-    }
-
-    /**
-     * Invoked when a mouse button is pressed on a component and then dragged.
-     * MOUSE_DRAGGED events will continue to be delivered to the component where
-     * the drag originated until the mouse button is released (regardless of
-     * whether the mouse position is within the bounds of the component).
-     *
-     * @param e mouse event that occured
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      dispatch(e);
-    }
-
-    /**
-     * Invoked when the mouse cursor has been moved onto a component but no
-     * buttons have been pushed.
-     *
-     * @param e mouse event that occured
-     */
-    public void mouseMoved(MouseEvent e)
-    {
-      removeFromSource();
-    }
-
-    /**
-     * Removes event from the source
-     */
-    protected void removeFromSource()
-    {
-      if (source != null)
-        {
-          source.removeMouseListener(this);
-          source.removeMouseMotionListener(this);
-        }
-      source = null;
-      destination = null;
-    }
-
-    /**
-     * Redispatches mouse events to the destination.
-     *
-     * @param e the mouse event to redispatch
-     */
-    private void dispatch(MouseEvent e)
-    {
-      if (destination != null)
-        {
-          MouseEvent e2 = SwingUtilities.convertMouseEvent(source, e,
-                                                           destination);
-          destination.dispatchEvent(e2);
-        }
-    }
-  }
-
-  /**
-   * Class responsible for getting size of node, method is forwarded to
-   * BasicTreeUI method. X location does not include insets, that is handled in
-   * getPathBounds.
-   */
-  public class NodeDimensionsHandler
-      extends AbstractLayoutCache.NodeDimensions
-  {
-    /**
-     * Constructor
-     */
-    public NodeDimensionsHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns, by reference in bounds, the size and x origin to place value at.
-     * The calling method is responsible for determining the Y location. If
-     * bounds is null, a newly created Rectangle should be returned, otherwise
-     * the value should be placed in bounds and returned.
-     *
-     * @param cell the value to be represented
-     * @param row row being queried
-     * @param depth the depth of the row
-     * @param expanded true if row is expanded
-     * @param size a Rectangle containing the size needed to represent value
-     * @return containing the node dimensions, or null if node has no dimension
-     */
-    public Rectangle getNodeDimensions(Object cell, int row, int depth,
-                                       boolean expanded, Rectangle size)
-    {
-      Dimension prefSize;
-      if (editingComponent != null && editingRow == row)
-        {
-          // Editing, ask editor for preferred size.
-          prefSize = editingComponent.getPreferredSize();
-          int rowHeight = getRowHeight();
-          if (rowHeight > 0 && rowHeight != prefSize.height)
-            prefSize.height = rowHeight;
-        }
-      else
-        {
-          // Not editing, ask renderer for preferred size.
-          Component rend =
-            currentCellRenderer.getTreeCellRendererComponent(tree, cell,
-                                                       tree.isRowSelected(row),
-                                                       expanded,
-                                                       treeModel.isLeaf(cell),
-                                                       row, false);
-          // Make sure the layout is valid.
-          rendererPane.add(rend);
-          rend.validate();
-          prefSize = rend.getPreferredSize();
-        }
-      if (size != null)
-        {
-          size.x = getRowX(row, depth);
-          // FIXME: This should be handled by the layout cache.
-          size.y = prefSize.height * row;
-          size.width =  prefSize.width;
-          size.height = prefSize.height;
-        }
-      else
-        // FIXME: The y should be handled by the layout cache.
-        size = new Rectangle(getRowX(row, depth), prefSize.height * row, prefSize.width,
-                             prefSize.height);
-
-      return size;
-    }
-
-    /**
-     * Returns the amount to indent the given row
-     *
-     * @return amount to indent the given row.
-     */
-    protected int getRowX(int row, int depth)
-    {
-      return BasicTreeUI.this.getRowX(row, depth);
-    }
-  } // NodeDimensionsHandler
-
-  /**
-   * PropertyChangeListener for the tree. Updates the appropriate variable, or
-   * TreeState, based on what changes.
-   */
-  public class PropertyChangeHandler
-      implements PropertyChangeListener
-  {
-
-    /**
-     * Constructor
-     */
-    public PropertyChangeHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method gets called when a bound property is changed.
-     *
-     * @param event A PropertyChangeEvent object describing the event source and
-     *          the property that has changed.
-     */
-    public void propertyChange(PropertyChangeEvent event)
-    {
-      String property = event.getPropertyName();
-      if (property.equals(JTree.ROOT_VISIBLE_PROPERTY))
-        {
-          validCachedPreferredSize = false;
-          treeState.setRootVisible(tree.isRootVisible());
-          tree.repaint();
-        }
-      else if (property.equals(JTree.SELECTION_MODEL_PROPERTY))
-        {
-          treeSelectionModel = tree.getSelectionModel();
-          treeSelectionModel.setRowMapper(treeState);
-        }
-      else if (property.equals(JTree.TREE_MODEL_PROPERTY))
-        {
-          setModel(tree.getModel());
-        }
-      else if (property.equals(JTree.CELL_RENDERER_PROPERTY))
-        {
-          setCellRenderer(tree.getCellRenderer());
-          // Update layout.
-          if (treeState != null)
-            treeState.invalidateSizes();
-        }
-      else if (property.equals(JTree.EDITABLE_PROPERTY))
-        setEditable(((Boolean) event.getNewValue()).booleanValue());
-
-    }
-  }
-
-  /**
-   * Listener on the TreeSelectionModel, resets the row selection if any of the
-   * properties of the model change.
-   */
-  public class SelectionModelPropertyChangeHandler
-    implements PropertyChangeListener
-  {
-
-    /**
-     * Constructor
-     */
-    public SelectionModelPropertyChangeHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * This method gets called when a bound property is changed.
-     *
-     * @param event A PropertyChangeEvent object describing the event source and
-     *          the property that has changed.
-     */
-    public void propertyChange(PropertyChangeEvent event)
-    {
-      treeSelectionModel.resetRowSelection();
-    }
-  }
-
-  /**
-   * The action to cancel editing on this tree.
-   */
-  public class TreeCancelEditingAction
-      extends AbstractAction
-  {
-    /**
-     * Creates the new tree cancel editing action.
-     *
-     * @param name the name of the action (used in toString).
-     */
-    public TreeCancelEditingAction(String name)
-    {
-      super(name);
-    }
-
-    /**
-     * Invoked when an action occurs, cancels the cell editing (if the
-     * tree cell is being edited).
-     *
-     * @param e event that occured
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      if (isEnabled() && tree.isEditing())
-        tree.cancelEditing();
-    }
-  }
-
-  /**
-   * Updates the TreeState in response to nodes expanding/collapsing.
-   */
-  public class TreeExpansionHandler
-      implements TreeExpansionListener
-  {
-
-    /**
-     * Constructor
-     */
-    public TreeExpansionHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Called whenever an item in the tree has been expanded.
-     *
-     * @param event is the event that occured
-     */
-    public void treeExpanded(TreeExpansionEvent event)
-    {
-      validCachedPreferredSize = false;
-      treeState.setExpandedState(event.getPath(), true);
-      // The maximal cell height may change
-      maxHeight = 0;
-      tree.revalidate();
-      tree.repaint();
-    }
-
-    /**
-     * Called whenever an item in the tree has been collapsed.
-     *
-     * @param event is the event that occured
-     */
-    public void treeCollapsed(TreeExpansionEvent event)
-    {
-      completeEditing();
-      validCachedPreferredSize = false;
-      treeState.setExpandedState(event.getPath(), false);
-      // The maximal cell height may change
-      maxHeight = 0;
-      tree.revalidate();
-      tree.repaint();
-    }
-  } // TreeExpansionHandler
-
-  /**
-   * TreeHomeAction is used to handle end/home actions. Scrolls either the first
-   * or last cell to be visible based on direction.
-   */
-  public class TreeHomeAction
-      extends AbstractAction
-  {
-
-    /** The direction, either home or end */
-    protected int direction;
-
-    /**
-     * Creates a new TreeHomeAction instance.
-     *
-     * @param dir the direction to go to, <code>-1</code> for home,
-     *        <code>1</code> for end
-     * @param name the name of the action
-     */
-    public TreeHomeAction(int dir, String name)
-    {
-      direction = dir;
-      putValue(Action.NAME, name);
-    }
-
-    /**
-     * Invoked when an action occurs.
-     *
-     * @param e is the event that occured
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      if (tree != null)
-        {
-          String command = (String) getValue(Action.NAME);
-          if (command.equals("selectFirst"))
-            {
-              ensureRowsAreVisible(0, 0);
-              tree.setSelectionInterval(0, 0);
-            }
-          if (command.equals("selectFirstChangeLead"))
-            {
-              ensureRowsAreVisible(0, 0);
-              tree.setLeadSelectionPath(getPathForRow(tree, 0));
-            }
-          if (command.equals("selectFirstExtendSelection"))
-            {
-              ensureRowsAreVisible(0, 0);
-              TreePath anchorPath = tree.getAnchorSelectionPath();
-              if (anchorPath == null)
-                tree.setSelectionInterval(0, 0);
-              else
-                {
-                  int anchorRow = getRowForPath(tree, anchorPath);
-                  tree.setSelectionInterval(0, anchorRow);
-                  tree.setAnchorSelectionPath(anchorPath);
-                  tree.setLeadSelectionPath(getPathForRow(tree, 0));
-                }
-            }
-          else if (command.equals("selectLast"))
-            {
-              int end = getRowCount(tree) - 1;
-              ensureRowsAreVisible(end, end);
-              tree.setSelectionInterval(end, end);
-            }
-          else if (command.equals("selectLastChangeLead"))
-            {
-              int end = getRowCount(tree) - 1;
-              ensureRowsAreVisible(end, end);
-              tree.setLeadSelectionPath(getPathForRow(tree, end));
-            }
-          else if (command.equals("selectLastExtendSelection"))
-            {
-              int end = getRowCount(tree) - 1;
-              ensureRowsAreVisible(end, end);
-              TreePath anchorPath = tree.getAnchorSelectionPath();
-              if (anchorPath == null)
-                tree.setSelectionInterval(end, end);
-              else
-                {
-                  int anchorRow = getRowForPath(tree, anchorPath);
-                  tree.setSelectionInterval(end, anchorRow);
-                  tree.setAnchorSelectionPath(anchorPath);
-                  tree.setLeadSelectionPath(getPathForRow(tree, end));
-                }
-            }
-        }
-
-      // Ensure that the lead path is visible after the increment action.
-      tree.scrollPathToVisible(tree.getLeadSelectionPath());
-    }
-
-    /**
-     * Returns true if the action is enabled.
-     *
-     * @return true if the action is enabled.
-     */
-    public boolean isEnabled()
-    {
-      return (tree != null) && tree.isEnabled();
-    }
-  }
-
-  /**
-   * TreeIncrementAction is used to handle up/down actions. Selection is moved
-   * up or down based on direction.
-   */
-  public class TreeIncrementAction
-    extends AbstractAction
-  {
-
-    /**
-     * Specifies the direction to adjust the selection by.
-     */
-    protected int direction;
-
-    /**
-     * Creates a new TreeIncrementAction.
-     *
-     * @param dir up or down, <code>-1</code> for up, <code>1</code> for down
-     * @param name is the name of the direction
-     */
-    public TreeIncrementAction(int dir, String name)
-    {
-      direction = dir;
-      putValue(Action.NAME, name);
-    }
-
-    /**
-     * Invoked when an action occurs.
-     *
-     * @param e is the event that occured
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      TreePath currentPath = tree.getLeadSelectionPath();
-      int currentRow;
-
-      if (currentPath != null)
-        currentRow = treeState.getRowForPath(currentPath);
-      else
-        currentRow = 0;
-
-      int rows = treeState.getRowCount();
-
-      int nextRow = currentRow + 1;
-      int prevRow = currentRow - 1;
-      boolean hasNext = nextRow < rows;
-      boolean hasPrev = prevRow >= 0 && rows > 0;
-      TreePath newPath;
-      String command = (String) getValue(Action.NAME);
-
-      if (command.equals("selectPreviousChangeLead") && hasPrev)
-        {
-          newPath = treeState.getPathForRow(prevRow);
-          tree.setSelectionPath(newPath);
-          tree.setAnchorSelectionPath(newPath);
-          tree.setLeadSelectionPath(newPath);
-        }
-      else if (command.equals("selectPreviousExtendSelection") && hasPrev)
-        {
-          newPath = treeState.getPathForRow(prevRow);
-
-          // If the new path is already selected, the selection shrinks,
-          // unselecting the previously current path.
-          if (tree.isPathSelected(newPath))
-            tree.getSelectionModel().removeSelectionPath(currentPath);
-
-          // This must be called in any case because it updates the model
-          // lead selection index.
-          tree.addSelectionPath(newPath);
-          tree.setLeadSelectionPath(newPath);
-        }
-      else if (command.equals("selectPrevious") && hasPrev)
-        {
-          newPath = treeState.getPathForRow(prevRow);
-          tree.setSelectionPath(newPath);
-        }
-      else if (command.equals("selectNext") && hasNext)
-        {
-          newPath = treeState.getPathForRow(nextRow);
-          tree.setSelectionPath(newPath);
-        }
-      else if (command.equals("selectNextExtendSelection") && hasNext)
-        {
-          newPath = treeState.getPathForRow(nextRow);
-
-          // If the new path is already selected, the selection shrinks,
-          // unselecting the previously current path.
-          if (tree.isPathSelected(newPath))
-            tree.getSelectionModel().removeSelectionPath(currentPath);
-
-          // This must be called in any case because it updates the model
-          // lead selection index.
-          tree.addSelectionPath(newPath);
-
-          tree.setLeadSelectionPath(newPath);
-        }
-      else if (command.equals("selectNextChangeLead") && hasNext)
-        {
-          newPath = treeState.getPathForRow(nextRow);
-          tree.setSelectionPath(newPath);
-          tree.setAnchorSelectionPath(newPath);
-          tree.setLeadSelectionPath(newPath);
-        }
-
-      // Ensure that the lead path is visible after the increment action.
-      tree.scrollPathToVisible(tree.getLeadSelectionPath());
-    }
-
-    /**
-     * Returns true if the action is enabled.
-     *
-     * @return true if the action is enabled.
-     */
-    public boolean isEnabled()
-    {
-      return (tree != null) && tree.isEnabled();
-    }
-  }
-
-  /**
-   * Forwards all TreeModel events to the TreeState.
-   */
-  public class TreeModelHandler
-      implements TreeModelListener
-  {
-    /**
-     * Constructor
-     */
-    public TreeModelHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Invoked after a node (or a set of siblings) has changed in some way. The
-     * node(s) have not changed locations in the tree or altered their children
-     * arrays, but other attributes have changed and may affect presentation.
-     * Example: the name of a file has changed, but it is in the same location
-     * in the file system. To indicate the root has changed, childIndices and
-     * children will be null. Use e.getPath() to get the parent of the changed
-     * node(s). e.getChildIndices() returns the index(es) of the changed
-     * node(s).
-     *
-     * @param e is the event that occured
-     */
-    public void treeNodesChanged(TreeModelEvent e)
-    {
-      validCachedPreferredSize = false;
-      treeState.treeNodesChanged(e);
-      tree.repaint();
-    }
-
-    /**
-     * Invoked after nodes have been inserted into the tree. Use e.getPath() to
-     * get the parent of the new node(s). e.getChildIndices() returns the
-     * index(es) of the new node(s) in ascending order.
-     *
-     * @param e is the event that occured
-     */
-    public void treeNodesInserted(TreeModelEvent e)
-    {
-      validCachedPreferredSize = false;
-      treeState.treeNodesInserted(e);
-      tree.repaint();
-    }
-
-    /**
-     * Invoked after nodes have been removed from the tree. Note that if a
-     * subtree is removed from the tree, this method may only be invoked once
-     * for the root of the removed subtree, not once for each individual set of
-     * siblings removed. Use e.getPath() to get the former parent of the deleted
-     * node(s). e.getChildIndices() returns, in ascending order, the index(es)
-     * the node(s) had before being deleted.
-     *
-     * @param e is the event that occured
-     */
-    public void treeNodesRemoved(TreeModelEvent e)
-    {
-      validCachedPreferredSize = false;
-      treeState.treeNodesRemoved(e);
-      tree.repaint();
-    }
-
-    /**
-     * Invoked after the tree has drastically changed structure from a given
-     * node down. If the path returned by e.getPath() is of length one and the
-     * first element does not identify the current root node the first element
-     * should become the new root of the tree. Use e.getPath() to get the path
-     * to the node. e.getChildIndices() returns null.
-     *
-     * @param e is the event that occured
-     */
-    public void treeStructureChanged(TreeModelEvent e)
-    {
-      if (e.getPath().length == 1
-          && ! e.getPath()[0].equals(treeModel.getRoot()))
-        tree.expandPath(new TreePath(treeModel.getRoot()));
-      validCachedPreferredSize = false;
-      treeState.treeStructureChanged(e);
-      tree.repaint();
-    }
-  } // TreeModelHandler
-
-  /**
-   * TreePageAction handles page up and page down events.
-   */
-  public class TreePageAction
-      extends AbstractAction
-  {
-    /** Specifies the direction to adjust the selection by. */
-    protected int direction;
-
-    /**
-     * Constructor
-     *
-     * @param direction up or down
-     * @param name is the name of the direction
-     */
-    public TreePageAction(int direction, String name)
-    {
-      this.direction = direction;
-      putValue(Action.NAME, name);
-    }
-
-    /**
-     * Invoked when an action occurs.
-     *
-     * @param e is the event that occured
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      String command = (String) getValue(Action.NAME);
-      boolean extendSelection = command.equals("scrollUpExtendSelection")
-                                || command.equals("scrollDownExtendSelection");
-      boolean changeSelection = command.equals("scrollUpChangeSelection")
-                                || command.equals("scrollDownChangeSelection");
-
-      // Disable change lead, unless we are in discontinuous mode.
-      if (!extendSelection && !changeSelection
-          && tree.getSelectionModel().getSelectionMode() !=
-            TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION)
-        {
-          changeSelection = true;
-        }
-
-      int rowCount = getRowCount(tree);
-      if (rowCount > 0 && treeSelectionModel != null)
-        {
-          Dimension maxSize = tree.getSize();
-          TreePath lead = tree.getLeadSelectionPath();
-          TreePath newPath = null;
-          Rectangle visible = tree.getVisibleRect();
-          if (direction == -1) // The RI handles -1 as up.
-            {
-              newPath = getClosestPathForLocation(tree, visible.x, visible.y);
-              if (newPath.equals(lead)) // Corner case, adjust one page up.
-                {
-                  visible.y = Math.max(0, visible.y - visible.height);
-                  newPath = getClosestPathForLocation(tree, visible.x,
-                                                      visible.y);
-                }
-            }
-          else // +1 is down.
-            {
-              visible.y = Math.min(maxSize.height,
-                                   visible.y + visible.height - 1);
-              newPath = getClosestPathForLocation(tree, visible.x, visible.y);
-              if (newPath.equals(lead)) // Corner case, adjust one page down.
-                {
-                  visible.y = Math.min(maxSize.height,
-                                       visible.y + visible.height - 1);
-                  newPath = getClosestPathForLocation(tree, visible.x,
-                                                      visible.y);
-                }
-            }
-
-          // Determine new visible rect.
-          Rectangle newVisible = getPathBounds(tree, newPath);
-          newVisible.x = visible.x;
-          newVisible.width = visible.width;
-          if (direction == -1)
-            {
-              newVisible.height = visible.height;
-            }
-          else
-            {
-              newVisible.y -= visible.height - newVisible.height;
-              newVisible.height = visible.height;
-            }
-
-          if (extendSelection)
-            {
-              // Extend selection.
-              TreePath anchorPath = tree.getAnchorSelectionPath();
-              if (anchorPath == null)
-                {
-                  tree.setSelectionPath(newPath);
-                }
-              else
-                {
-                  int newIndex = getRowForPath(tree, newPath);
-                  int anchorIndex = getRowForPath(tree, anchorPath);
-                  tree.setSelectionInterval(Math.min(anchorIndex, newIndex),
-                                            Math.max(anchorIndex, newIndex));
-                  tree.setAnchorSelectionPath(anchorPath);
-                  tree.setLeadSelectionPath(newPath);
-                }
-            }
-          else if (changeSelection)
-            {
-              tree.setSelectionPath(newPath);
-            }
-          else // Change lead.
-            {
-              tree.setLeadSelectionPath(newPath);
-            }
-
-          tree.scrollRectToVisible(newVisible);
-        }
-    }
-
-    /**
-     * Returns true if the action is enabled.
-     *
-     * @return true if the action is enabled.
-     */
-    public boolean isEnabled()
-    {
-      return (tree != null) && tree.isEnabled();
-    }
-  } // TreePageAction
-
-  /**
-   * Listens for changes in the selection model and updates the display
-   * accordingly.
-   */
-  public class TreeSelectionHandler
-      implements TreeSelectionListener
-  {
-    /**
-     * Constructor
-     */
-    public TreeSelectionHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Messaged when the selection changes in the tree we're displaying for.
-     * Stops editing, messages super and displays the changed paths.
-     *
-     * @param event the event that characterizes the change.
-     */
-    public void valueChanged(TreeSelectionEvent event)
-    {
-      completeEditing();
-
-      TreePath op = event.getOldLeadSelectionPath();
-      TreePath np = event.getNewLeadSelectionPath();
-
-      // Repaint of the changed lead selection path.
-      if (op != np)
-        {
-          Rectangle o = treeState.getBounds(event.getOldLeadSelectionPath(),
-                                           new Rectangle());
-          Rectangle n = treeState.getBounds(event.getNewLeadSelectionPath(),
-                                           new Rectangle());
-
-          if (o != null)
-            tree.repaint(o);
-          if (n != null)
-            tree.repaint(n);
-        }
-    }
-  } // TreeSelectionHandler
-
-  /**
-   * For the first selected row expandedness will be toggled.
-   */
-  public class TreeToggleAction
-      extends AbstractAction
-  {
-    /**
-     * Creates a new TreeToggleAction.
-     *
-     * @param name is the name of <code>Action</code> field
-     */
-    public TreeToggleAction(String name)
-    {
-      putValue(Action.NAME, name);
-    }
-
-    /**
-     * Invoked when an action occurs.
-     *
-     * @param e the event that occured
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      int selected = tree.getLeadSelectionRow();
-      if (selected != -1 && isLeaf(selected))
-        {
-          TreePath anchorPath = tree.getAnchorSelectionPath();
-          TreePath leadPath = tree.getLeadSelectionPath();
-          toggleExpandState(getPathForRow(tree, selected));
-          // Need to do this, so that the toggling doesn't mess up the lead
-          // and anchor.
-          tree.setLeadSelectionPath(leadPath);
-          tree.setAnchorSelectionPath(anchorPath);
-
-          // Ensure that the lead path is visible after the increment action.
-          tree.scrollPathToVisible(tree.getLeadSelectionPath());
-        }
-    }
-
-    /**
-     * Returns true if the action is enabled.
-     *
-     * @return true if the action is enabled, false otherwise
-     */
-    public boolean isEnabled()
-    {
-      return (tree != null) && tree.isEnabled();
-    }
-  } // TreeToggleAction
-
-  /**
-   * TreeTraverseAction is the action used for left/right keys. Will toggle the
-   * expandedness of a node, as well as potentially incrementing the selection.
-   */
-  public class TreeTraverseAction
-      extends AbstractAction
-  {
-    /**
-     * Determines direction to traverse, 1 means expand, -1 means collapse.
-     */
-    protected int direction;
-
-    /**
-     * Constructor
-     *
-     * @param direction to traverse
-     * @param name is the name of the direction
-     */
-    public TreeTraverseAction(int direction, String name)
-    {
-      this.direction = direction;
-      putValue(Action.NAME, name);
-    }
-
-    /**
-     * Invoked when an action occurs.
-     *
-     * @param e the event that occured
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      TreePath current = tree.getLeadSelectionPath();
-      if (current == null)
-        return;
-
-      String command = (String) getValue(Action.NAME);
-      if (command.equals("selectParent"))
-        {
-          if (current == null)
-            return;
-
-          if (tree.isExpanded(current))
-            {
-              tree.collapsePath(current);
-            }
-          else
-            {
-              // If the node is not expanded (also, if it is a leaf node),
-              // we just select the parent. We do not select the root if it
-              // is not visible.
-              TreePath parent = current.getParentPath();
-              if (parent != null &&
-                  ! (parent.getPathCount() == 1 && ! tree.isRootVisible()))
-                tree.setSelectionPath(parent);
-            }
-        }
-      else if (command.equals("selectChild"))
-        {
-          Object node = current.getLastPathComponent();
-          int nc = treeModel.getChildCount(node);
-          if (nc == 0 || treeState.isExpanded(current))
-            {
-              // If the node is leaf or it is already expanded,
-              // we just select the next row.
-              int nextRow = tree.getLeadSelectionRow() + 1;
-              if (nextRow <= tree.getRowCount())
-                tree.setSelectionRow(nextRow);
-            }
-          else
-            {
-              tree.expandPath(current);
-            }
-        }
-
-      // Ensure that the lead path is visible after the increment action.
-      tree.scrollPathToVisible(tree.getLeadSelectionPath());
-    }
-
-    /**
-     * Returns true if the action is enabled.
-     *
-     * @return true if the action is enabled, false otherwise
-     */
-    public boolean isEnabled()
-    {
-      return (tree != null) && tree.isEnabled();
-    }
-  }
-
-  /**
-   * Returns true if the LookAndFeel implements the control icons. Package
-   * private for use in inner classes.
-   *
-   * @returns true if there are control icons
-   */
-  boolean hasControlIcons()
-  {
-    if (expandedIcon != null || collapsedIcon != null)
-      return true;
-    return false;
-  }
-
-  /**
-   * Returns control icon. It is null if the LookAndFeel does not implements the
-   * control icons. Package private for use in inner classes.
-   *
-   * @return control icon if it exists.
-   */
-  Icon getCurrentControlIcon(TreePath path)
-  {
-    if (hasControlIcons())
-      {
-        if (tree.isExpanded(path))
-          return expandedIcon;
-        else
-          return collapsedIcon;
-      }
-    else
-      {
-        if (nullIcon == null)
-          nullIcon = new Icon()
-          {
-            public int getIconHeight()
-            {
-              return 0;
-            }
-
-            public int getIconWidth()
-            {
-              return 0;
-            }
-
-            public void paintIcon(Component c, Graphics g, int x, int y)
-            {
-              // No action here.
-            }
-          };
-        return nullIcon;
-      }
-  }
-
-  /**
-   * Returns the parent of the current node
-   *
-   * @param root is the root of the tree
-   * @param node is the current node
-   * @return is the parent of the current node
-   */
-  Object getParent(Object root, Object node)
-  {
-    if (root == null || node == null || root.equals(node))
-      return null;
-
-    if (node instanceof TreeNode)
-      return ((TreeNode) node).getParent();
-    return findNode(root, node);
-  }
-
-  /**
-   * Recursively checks the tree for the specified node, starting at the root.
-   *
-   * @param root is starting node to start searching at.
-   * @param node is the node to search for
-   * @return the parent node of node
-   */
-  private Object findNode(Object root, Object node)
-  {
-    if (! treeModel.isLeaf(root) && ! root.equals(node))
-      {
-        int size = treeModel.getChildCount(root);
-        for (int j = 0; j < size; j++)
-          {
-            Object child = treeModel.getChild(root, j);
-            if (node.equals(child))
-              return root;
-
-            Object n = findNode(child, node);
-            if (n != null)
-              return n;
-          }
-      }
-    return null;
-  }
-
-  /**
-   * Selects the specified path in the tree depending on modes. Package private
-   * for use in inner classes.
-   *
-   * @param tree is the tree we are selecting the path in
-   * @param path is the path we are selecting
-   */
-  void selectPath(JTree tree, TreePath path)
-  {
-    if (path != null)
-      {
-        tree.setSelectionPath(path);
-        tree.setLeadSelectionPath(path);
-        tree.makeVisible(path);
-        tree.scrollPathToVisible(path);
-      }
-  }
-
-  /**
-   * Returns the path from node to the root. Package private for use in inner
-   * classes.
-   *
-   * @param node the node to get the path to
-   * @param depth the depth of the tree to return a path for
-   * @return an array of tree nodes that represent the path to node.
-   */
-  Object[] getPathToRoot(Object node, int depth)
-  {
-    if (node == null)
-      {
-        if (depth == 0)
-          return null;
-
-        return new Object[depth];
-      }
-
-    Object[] path = getPathToRoot(getParent(treeModel.getRoot(), node),
-                                  depth + 1);
-    path[path.length - depth - 1] = node;
-    return path;
-  }
-
-  /**
-   * Draws a vertical line using the given graphic context
-   *
-   * @param g is the graphic context
-   * @param c is the component the new line will belong to
-   * @param x is the horizonal position
-   * @param top specifies the top of the line
-   * @param bottom specifies the bottom of the line
-   */
-  protected void paintVerticalLine(Graphics g, JComponent c, int x, int top,
-                                   int bottom)
-  {
-    // FIXME: Check if drawing a dashed line or not.
-    g.setColor(getHashColor());
-    g.drawLine(x, top, x, bottom);
-  }
-
-  /**
-   * Draws a horizontal line using the given graphic context
-   *
-   * @param g is the graphic context
-   * @param c is the component the new line will belong to
-   * @param y is the vertical position
-   * @param left specifies the left point of the line
-   * @param right specifies the right point of the line
-   */
-  protected void paintHorizontalLine(Graphics g, JComponent c, int y, int left,
-                                     int right)
-  {
-    // FIXME: Check if drawing a dashed line or not.
-    g.setColor(getHashColor());
-    g.drawLine(left, y, right, y);
-  }
-
-  /**
-   * Draws an icon at around a specific position
-   *
-   * @param c is the component the new line will belong to
-   * @param g is the graphic context
-   * @param icon is the icon which will be drawn
-   * @param x is the center position in x-direction
-   * @param y is the center position in y-direction
-   */
-  protected void drawCentered(Component c, Graphics g, Icon icon, int x, int y)
-  {
-    x -= icon.getIconWidth() / 2;
-    y -= icon.getIconHeight() / 2;
-
-    if (x < 0)
-      x = 0;
-    if (y < 0)
-      y = 0;
-
-    icon.paintIcon(c, g, x, y);
-  }
-
-  /**
-   * Draws a dashed horizontal line.
-   *
-   * @param g - the graphics configuration.
-   * @param y - the y location to start drawing at
-   * @param x1 - the x location to start drawing at
-   * @param x2 - the x location to finish drawing at
-   */
-  protected void drawDashedHorizontalLine(Graphics g, int y, int x1, int x2)
-  {
-    g.setColor(getHashColor());
-    for (int i = x1; i < x2; i += 2)
-      g.drawLine(i, y, i + 1, y);
-  }
-
-  /**
-   * Draws a dashed vertical line.
-   *
-   * @param g - the graphics configuration.
-   * @param x - the x location to start drawing at
-   * @param y1 - the y location to start drawing at
-   * @param y2 - the y location to finish drawing at
-   */
-  protected void drawDashedVerticalLine(Graphics g, int x, int y1, int y2)
-  {
-    g.setColor(getHashColor());
-    for (int i = y1; i < y2; i += 2)
-      g.drawLine(x, i, x, i + 1);
-  }
-
-  /**
-   * Paints the expand (toggle) part of a row. The receiver should NOT modify
-   * clipBounds, or insets.
-   *
-   * @param g - the graphics configuration
-   * @param clipBounds -
-   * @param insets -
-   * @param bounds - bounds of expand control
-   * @param path - path to draw control for
-   * @param row - row to draw control for
-   * @param isExpanded - is the row expanded
-   * @param hasBeenExpanded - has the row already been expanded
-   * @param isLeaf - is the path a leaf
-   */
-  protected void paintExpandControl(Graphics g, Rectangle clipBounds,
-                                    Insets insets, Rectangle bounds,
-                                    TreePath path, int row, boolean isExpanded,
-                                    boolean hasBeenExpanded, boolean isLeaf)
-  {
-    if (shouldPaintExpandControl(path, row, isExpanded, hasBeenExpanded, isLeaf))
-      {
-        Icon icon = getCurrentControlIcon(path);
-        int iconW = icon.getIconWidth();
-        int x = bounds.x - iconW - gap;
-        icon.paintIcon(tree, g, x, bounds.y + bounds.height / 2
-                                   - icon.getIconHeight() / 2);
-      }
-  }
-
-  /**
-   * Paints the horizontal part of the leg. The receiver should NOT modify
-   * clipBounds, or insets. NOTE: parentRow can be -1 if the root is not
-   * visible.
-   *
-   * @param g - the graphics configuration
-   * @param clipBounds -
-   * @param insets -
-   * @param bounds - bounds of the cell
-   * @param path - path to draw leg for
-   * @param row - row to start drawing at
-   * @param isExpanded - is the row expanded
-   * @param hasBeenExpanded - has the row already been expanded
-   * @param isLeaf - is the path a leaf
-   */
-  protected void paintHorizontalPartOfLeg(Graphics g, Rectangle clipBounds,
-                                          Insets insets, Rectangle bounds,
-                                          TreePath path, int row,
-                                          boolean isExpanded,
-                                          boolean hasBeenExpanded,
-                                          boolean isLeaf)
-  {
-    if (row != 0)
-      {
-        paintHorizontalLine(g, tree, bounds.y + bounds.height / 2,
-                            bounds.x - leftChildIndent - gap, bounds.x - gap);
-      }
-  }
-
-  /**
-   * Paints the vertical part of the leg. The receiver should NOT modify
-   * clipBounds, insets.
-   *
-   * @param g - the graphics configuration.
-   * @param clipBounds -
-   * @param insets -
-   * @param path - the path to draw the vertical part for.
-   */
-  protected void paintVerticalPartOfLeg(Graphics g, Rectangle clipBounds,
-                                        Insets insets, TreePath path)
-  {
-    Rectangle bounds = getPathBounds(tree, path);
-    TreePath parent = path.getParentPath();
-
-    boolean paintLine;
-    if (isRootVisible())
-      paintLine = parent != null;
-    else
-      paintLine = parent != null && parent.getPathCount() > 1;
-    if (paintLine)
-      {
-        Rectangle parentBounds = getPathBounds(tree, parent);
-        paintVerticalLine(g, tree, parentBounds.x + 2 * gap,
-                          parentBounds.y + parentBounds.height / 2,
-                          bounds.y + bounds.height / 2);
-      }
-  }
-
-  /**
-   * Paints the renderer part of a row. The receiver should NOT modify
-   * clipBounds, or insets.
-   *
-   * @param g - the graphics configuration
-   * @param clipBounds -
-   * @param insets -
-   * @param bounds - bounds of expand control
-   * @param path - path to draw control for
-   * @param row - row to draw control for
-   * @param isExpanded - is the row expanded
-   * @param hasBeenExpanded - has the row already been expanded
-   * @param isLeaf - is the path a leaf
-   */
-  protected void paintRow(Graphics g, Rectangle clipBounds, Insets insets,
-                          Rectangle bounds, TreePath path, int row,
-                          boolean isExpanded, boolean hasBeenExpanded,
-                          boolean isLeaf)
-  {
-    boolean selected = tree.isPathSelected(path);
-    boolean hasIcons = false;
-    Object node = path.getLastPathComponent();
-
-    paintExpandControl(g, clipBounds, insets, bounds, path, row, isExpanded,
-                       hasBeenExpanded, isLeaf);
-
-    TreeCellRenderer dtcr = currentCellRenderer;
-
-    boolean focused = false;
-    if (treeSelectionModel != null)
-      focused = treeSelectionModel.getLeadSelectionRow() == row
-                && tree.isFocusOwner();
-
-    Component c = dtcr.getTreeCellRendererComponent(tree, node, selected,
-                                                    isExpanded, isLeaf, row,
-                                                    focused);
-
-    rendererPane.paintComponent(g, c, c.getParent(), bounds);
-  }
-
-  /**
-   * Prepares for the UI to uninstall.
-   */
-  protected void prepareForUIUninstall()
-  {
-    // Nothing to do here yet.
-  }
-
-  /**
-   * Returns true if the expand (toggle) control should be drawn for the
-   * specified row.
-   *
-   * @param path - current path to check for.
-   * @param row - current row to check for.
-   * @param isExpanded - true if the path is expanded
-   * @param hasBeenExpanded - true if the path has been expanded already
-   * @param isLeaf - true if the row is a lead
-   */
-  protected boolean shouldPaintExpandControl(TreePath path, int row,
-                                             boolean isExpanded,
-                                             boolean hasBeenExpanded,
-                                             boolean isLeaf)
-  {
-    Object node = path.getLastPathComponent();
-    return ! isLeaf && hasControlIcons();
-  }
-
-  /**
-   * Returns the amount to indent the given row
-   *
-   * @return amount to indent the given row.
-   */
-  protected int getRowX(int row, int depth)
-  {
-    return depth * totalChildIndent;
-  }
-} // BasicTreeUI
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicViewportUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicViewportUI.java
deleted file mode 100644
index 11c7d63..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/BasicViewportUI.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/* BasicViewportUI.java --
-   Copyright (C) 2002, 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ViewportUI;
-
-public class BasicViewportUI extends ViewportUI
-{
-  protected void installDefaults(JComponent c)
-  {
-    c.setOpaque(true);
-    LookAndFeel.installColorsAndFont(c, "Viewport.background",
-                                     "Viewport.foreground", "Viewport.font");
-  }
-  protected void uninstallDefaults(JComponent c)
-  {
-    // TODO: Implement this properly.
-  }
-
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new BasicViewportUI();
-  }
-
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    installDefaults(c);
-  }
-
-  public void uninstallUI(JComponent c)
-  {
-    super.uninstallUI(c);
-    uninstallDefaults(c);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/ComboPopup.java b/libjava/classpath/javax/swing/plaf/basic/ComboPopup.java
deleted file mode 100644
index 8bdcc51..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/ComboPopup.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/* ComboPopup.java --
-   Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.event.KeyListener;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionListener;
-
-import javax.swing.JList;
-
-public interface ComboPopup
-{
-  /**
-   * This method display popup menu containing list of JComboBox's items to
-   * the screen
-   */
-  void show();
-
-  /**
-   * This method hides popup menu with list of JComboBox's item from the
-   * screen
-   */
-  void hide();
-
-  /**
-   * Retursn true if popup menu with JComboBOx's item is currently visible on
-   * the screen and false otherwise
-   *
-   * @return true if JComboBox's popup menu with list of items is currently
-   *         visible on the screen and false otherwise.
-   */
-  boolean isVisible();
-
-  /**
-   * Return JList that is used to draw cells of the JComboBox.
-   *
-   * @return JList that is used to draw cells of the JcomboBox
-   */
-  JList getList();
-
-  /**
-   * This method returns MouseListener that listen's to mouse events occuring
-   * in the combo box
-   *
-   * @return MouseListenere
-   */
-  MouseListener getMouseListener();
-
-  /**
-   * This method returns MouseListener that listen's to mouse events occuring
-   * in the combo box.
-   *
-   * @return MouseMotionListener
-   */
-  MouseMotionListener getMouseMotionListener();
-
-  /**
-   * This method returns KeyListener that listen's to key events  occuring in
-   * the combo box.
-   *
-   * @return KeyListener
-   */
-  KeyListener getKeyListener();
-
-  /* This method removes any listeners that were installed */
-  void uninstallingUI();
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/DefaultMenuLayout.java b/libjava/classpath/javax/swing/plaf/basic/DefaultMenuLayout.java
deleted file mode 100644
index 9760e82..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/DefaultMenuLayout.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/* DefaultMenuLayout.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.basic;
-
-import java.awt.Container;
-import java.awt.Dimension;
-
-import javax.swing.BoxLayout;
-import javax.swing.plaf.UIResource;
-
-/**
- * The LayoutManager that is used in PopupMenus. This is a derived from
- * {@link BoxLayout}.
- *
- * @author Roman Kennke (roman@kennke.org)
- */
-public class DefaultMenuLayout
-  extends BoxLayout
-  implements UIResource
-{
-
-  /**
-   * Creates a new instance of DefaultMenuLayout.
-   *
-   * @param target the component that is laid out
-   * @param axis the axis along which the component is laid out
-   */
-  public DefaultMenuLayout(Container target, int axis)
-  {
-    super(target, axis);
-  }
-
-  /**
-   * Returns the preferred size for the layout of the menu.
-   *
-   * @param target the Container which's preferred size we calculate
-   */
-  public Dimension preferredLayoutSize(Container target)
-  {
-    return super.preferredLayoutSize(target);
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/SharedUIDefaults.java b/libjava/classpath/javax/swing/plaf/basic/SharedUIDefaults.java
deleted file mode 100644
index 3427805..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/SharedUIDefaults.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/* SharedUIDefaults.java -- Manages shared instances for UIDefaults
-   Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.util.HashMap;
-
-import javax.swing.UIManager;
-
-/**
- * Manages shared instances for UI defaults. For example, all Swing components
- * of one type usually share one InputMap/ActionMap pair. In order to avoid
- * duplication of such objects we store them in a Map here.
- *
- * @author Roman Kennke (kennke@aicas.com)
- */
-public class SharedUIDefaults
-{
-
-  /**
-   * Stores the shared instances, indexed by their UI names
-   * (i.e. "TextField.InputMap").
-   */
-  private static HashMap sharedDefaults = new HashMap();
-
-  /**
-   * Returns a shared UI defaults object.
-   *
-   * @param key the key for the shared object
-   *
-   * @return a shared UI defaults object for the specified key
-   */
-  static Object get(String key)
-  {
-    Object o = sharedDefaults.get(key);
-    if (o == null)
-      {
-        o = UIManager.get(key);
-        sharedDefaults.put(key, o);
-      }
-    return o;
-  }
-
-  /**
-   * Returns a shared UI color.
-   *
-   * @param key the key
-   *
-   * @return the shared color instance
-   */
-  static Color getColor(String key)
-  {
-    return (Color) get(key);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders-1.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders-1.png
deleted file mode 100644
index daeb16c..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders-1.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders-2.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders-2.png
deleted file mode 100644
index 60f6a8a..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders-2.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.ButtonBorder-1.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.ButtonBorder-1.png
deleted file mode 100644
index 54047dc..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.ButtonBorder-1.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.FieldBorder-1.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.FieldBorder-1.png
deleted file mode 100644
index 7c89911..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.FieldBorder-1.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.MarginBorder-1.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.MarginBorder-1.png
deleted file mode 100644
index a3841ba..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.MarginBorder-1.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.MenuBarBorder-1.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.MenuBarBorder-1.png
deleted file mode 100644
index 13a9fa4e..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.MenuBarBorder-1.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.RadioButtonBorder-1.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.RadioButtonBorder-1.png
deleted file mode 100644
index a6408ec..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.RadioButtonBorder-1.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-1.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-1.png
deleted file mode 100644
index db283c2..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-1.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-2.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-2.png
deleted file mode 100644
index 65381bd..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-2.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneDividerBorder-1.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneDividerBorder-1.png
deleted file mode 100644
index c22763a..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneDividerBorder-1.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.ToggleButtonBorder-1.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.ToggleButtonBorder-1.png
deleted file mode 100644
index f898bee..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicBorders.ToggleButtonBorder-1.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-1.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-1.png
deleted file mode 100644
index 99f8c6e..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-1.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-2.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-2.png
deleted file mode 100644
index 59d9a61..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-2.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-3.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-3.png
deleted file mode 100644
index 5b0971c..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-3.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-4.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-4.png
deleted file mode 100644
index ceba0b6e..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-4.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-5.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-5.png
deleted file mode 100644
index fa3055f..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-5.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-6.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-6.png
deleted file mode 100644
index c760313..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-6.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-7.png b/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-7.png
deleted file mode 100644
index 6a557a0..0000000
Binary files a/libjava/classpath/javax/swing/plaf/basic/doc-files/BasicGraphicsUtils-7.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/basic/package.html b/libjava/classpath/javax/swing/plaf/basic/package.html
deleted file mode 100644
index 700c8cd..0000000
--- a/libjava/classpath/javax/swing/plaf/basic/package.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!-- package.html - describes classes in javax.swing.plaf.basic package.
-   Copyright (C) 2002, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. -->
-
-<html>
-<head><title>GNU Classpath - javax.swing.plaf.basic</title></head>
-
-<body>
-<p>Provides a "basic" look and feel implementation.</p>
-
-</body>
-</html>
diff --git a/libjava/classpath/javax/swing/plaf/doc-files/ComponentUI-1.dia b/libjava/classpath/javax/swing/plaf/doc-files/ComponentUI-1.dia
deleted file mode 100644
index 02bfbbe..0000000
Binary files a/libjava/classpath/javax/swing/plaf/doc-files/ComponentUI-1.dia and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/doc-files/ComponentUI-1.png b/libjava/classpath/javax/swing/plaf/doc-files/ComponentUI-1.png
deleted file mode 100644
index def4cbc..0000000
Binary files a/libjava/classpath/javax/swing/plaf/doc-files/ComponentUI-1.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/doc-files/TreeUI-1.png b/libjava/classpath/javax/swing/plaf/doc-files/TreeUI-1.png
deleted file mode 100644
index 0f01ab0..0000000
Binary files a/libjava/classpath/javax/swing/plaf/doc-files/TreeUI-1.png and /dev/null differ
diff --git a/libjava/classpath/javax/swing/plaf/metal/DefaultMetalTheme.java b/libjava/classpath/javax/swing/plaf/metal/DefaultMetalTheme.java
deleted file mode 100644
index 27c569f..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/DefaultMetalTheme.java
+++ /dev/null
@@ -1,305 +0,0 @@
-/* DefaultMetalTheme.java --
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import gnu.classpath.SystemProperties;
-
-import java.awt.Font;
-
-import javax.swing.UIManager;
-import javax.swing.plaf.ColorUIResource;
-import javax.swing.plaf.FontUIResource;
-
-/**
- * The default theme for the {@link MetalLookAndFeel}.
- *
- * @see MetalLookAndFeel#setCurrentTheme(MetalTheme)
- */
-public class DefaultMetalTheme extends MetalTheme
-{
-  private static final ColorUIResource PRIMARY1 =
-    new ColorUIResource(102, 102, 153);
-  private static final ColorUIResource PRIMARY2 =
-    new ColorUIResource(153, 153, 204);
-  private static final ColorUIResource PRIMARY3 =
-    new ColorUIResource(204, 204, 255);
-  private static final ColorUIResource SECONDARY1 =
-    new ColorUIResource(102, 102, 102);
-  private static final ColorUIResource SECONDARY2 =
-    new ColorUIResource(153, 153, 153);
-  private static final ColorUIResource SECONDARY3 =
-    new ColorUIResource(204, 204, 204);
-
-  private static final FontUIResource SUB_TEXT_FONT =
-    new FontUIResource("Dialog", Font.PLAIN, 10);
-  private static final FontUIResource SYSTEM_TEXT_FONT =
-    new FontUIResource("Dialog", Font.PLAIN, 12);
-  private static final FontUIResource USER_TEXT_FONT =
-    new FontUIResource("Dialog", Font.PLAIN, 12);
-  private static final FontUIResource WINDOW_TITLE_FONT =
-    new FontUIResource("Dialog", Font.BOLD, 12);
-
-  /**
-   * The control text font for swing.boldMetal=false.
-   */
-  private static final FontUIResource PLAIN_CONTROL_TEXT_FONT =
-    new FontUIResource("Dialog", Font.PLAIN, 12);
-
-  /**
-   * The standard control text font.
-   */
-  private static final FontUIResource BOLD_CONTROL_TEXT_FONT =
-    new FontUIResource("Dialog", Font.BOLD, 12);
-
-  /**
-   * The menu text font for swing.boldMetal=false.
-   */
-  private static final FontUIResource PLAIN_MENU_TEXT_FONT =
-    new FontUIResource("Dialog", Font.PLAIN, 12);
-
-  /**
-   * The menu control text font.
-   */
-  private static final FontUIResource BOLD_MENU_TEXT_FONT =
-    new FontUIResource("Dialog", Font.BOLD, 12);
-
-  /**
-   * Indicates the control text font.
-   */
-  static final int CONTROL_TEXT_FONT = 1;
-
-  /**
-   * Indicates the menu text font.
-   */
-  static final int MENU_TEXT_FONT = 2;
-
-  /**
-   * Creates a new instance of this theme.
-   */
-  public DefaultMetalTheme()
-  {
-    // Do nothing here.
-  }
-
-  /**
-   * Returns the name of the theme.
-   *
-   * @return <code>"Steel"</code>.
-   */
-  public String getName()
-  {
-    return "Steel";
-  }
-
-  /**
-   * Returns the first primary color for this theme.
-   *
-   * @return The first primary color.
-   */
-  protected ColorUIResource getPrimary1()
-  {
-    return PRIMARY1;
-  }
-
-  /**
-   * Returns the second primary color for this theme.
-   *
-   * @return The second primary color.
-   */
-  protected ColorUIResource getPrimary2()
-  {
-    return PRIMARY2;
-  }
-
-  /**
-   * Returns the third primary color for this theme.
-   *
-   * @return The third primary color.
-   */
-  protected ColorUIResource getPrimary3()
-  {
-    return PRIMARY3;
-  }
-
-  /**
-   * Returns the first secondary color for this theme.
-   *
-   * @return The first secondary color.
-   */
-  protected ColorUIResource getSecondary1()
-  {
-    return SECONDARY1;
-  }
-
-  /**
-   * Returns the second secondary color for this theme.
-   *
-   * @return The second secondary color.
-   */
-  protected ColorUIResource getSecondary2()
-  {
-    return SECONDARY2;
-  }
-
-  /**
-   * Returns the third secondary color for this theme.
-   *
-   * @return The third secondary color.
-   */
-  protected ColorUIResource getSecondary3()
-  {
-    return SECONDARY3;
-  }
-
-  /**
-   * Returns the font used for text on controls.  In this case, the font is
-   * <code>FontUIResource("Dialog", Font.BOLD, 12)</code>, unless the
-   * <code>swing.boldMetal</code> UI default is set to {@link Boolean#FALSE}
-   * in which case it is <code>FontUIResource("Dialog", Font.PLAIN, 12)</code>.
-   *
-   * @return The font.
-   */
-  public FontUIResource getControlTextFont()
-  {
-    return getFont(CONTROL_TEXT_FONT);
-  }
-
-  /**
-   * Returns the font used for text in menus.  In this case, the font is
-   * <code>FontUIResource("Dialog", Font.BOLD, 12)</code>, unless the
-   * <code>swing.boldMetal</code> UI default is set to {@link Boolean#FALSE}
-   * in which case it is <code>FontUIResource("Dialog", Font.PLAIN, 12)</code>.
-   *
-   * @return The font used for text in menus.
-   */
-  public FontUIResource getMenuTextFont()
-  {
-    return getFont(MENU_TEXT_FONT);
-  }
-
-  /**
-   * Returns the font used for sub text.  In this case, the font is
-   * <code>FontUIResource("Dialog", Font.PLAIN, 10)</code>.
-   *
-   * @return The font used for sub text.
-   */
-  public FontUIResource getSubTextFont()
-  {
-    return SUB_TEXT_FONT;
-  }
-
-  /**
-   * Returns the font used for system text.  In this case, the font is
-   * <code>FontUIResource("Dialog", Font.PLAIN, 12)</code>.
-   *
-   * @return The font used for system text.
-   */
-  public FontUIResource getSystemTextFont()
-  {
-    return SYSTEM_TEXT_FONT;
-  }
-
-  /**
-   * Returns the font used for user text.  In this case, the font is
-   * <code>FontUIResource("Dialog", Font.PLAIN, 12)</code>.
-   *
-   * @return The font used for user text.
-   */
-  public FontUIResource getUserTextFont()
-  {
-    return USER_TEXT_FONT;
-  }
-
-  /**
-   * Returns the font used for window titles.  In this case, the font is
-   * <code>FontUIResource("Dialog", Font.BOLD, 12)</code>.
-   *
-   * @return The font used for window titles.
-   */
-  public FontUIResource getWindowTitleFont()
-  {
-    return WINDOW_TITLE_FONT;
-  }
-
-  /**
-   * Returns the appropriate font. The font type to return is identified
-   * by the specified id.
-   *
-   * @param id the font type to return
-   *
-   * @return the correct font
-   */
-  private FontUIResource getFont(int id)
-  {
-    FontUIResource font = null;
-    switch (id)
-      {
-      case CONTROL_TEXT_FONT:
-        if (isBoldMetal())
-          font = BOLD_CONTROL_TEXT_FONT;
-        else
-          font = PLAIN_CONTROL_TEXT_FONT;
-        break;
-      case MENU_TEXT_FONT:
-        if (isBoldMetal())
-          font = BOLD_MENU_TEXT_FONT;
-        else
-          font = PLAIN_MENU_TEXT_FONT;
-      break;
-      // TODO: Add other font types and their mapping here.
-      }
-    return font;
-  }
-
-  /**
-   * Determines if the theme should be bold or not. The theme is bold by
-   * default, this can be turned off by setting the system property
-   * swing.boldMetal to true, or by putting the property with the same name
-   * into the current UIManager's defaults.
-   *
-   * @return <code>true</code>, when the theme is bold, <code>false</code>
-   *         otherwise
-   */
-  private boolean isBoldMetal()
-  {
-    Object boldMetal = UIManager.get("swing.boldMetal");
-    return (boldMetal == null || ! Boolean.FALSE.equals(boldMetal))
-        && ! ("false".equals(SystemProperties.getProperty("swing.boldMetal")));
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalBorders.java b/libjava/classpath/javax/swing/plaf/metal/MetalBorders.java
deleted file mode 100644
index 2536299..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalBorders.java
+++ /dev/null
@@ -1,1626 +0,0 @@
-/* MetalBorders.java
-   Copyright (C) 2005, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Graphics;
-import java.awt.Insets;
-
-import javax.swing.AbstractButton;
-import javax.swing.ButtonModel;
-import javax.swing.JButton;
-import javax.swing.JInternalFrame;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-import javax.swing.JScrollPane;
-import javax.swing.JTextField;
-import javax.swing.JToggleButton;
-import javax.swing.JToolBar;
-import javax.swing.SwingConstants;
-import javax.swing.UIManager;
-import javax.swing.border.AbstractBorder;
-import javax.swing.border.Border;
-import javax.swing.border.CompoundBorder;
-import javax.swing.plaf.BorderUIResource;
-import javax.swing.plaf.UIResource;
-import javax.swing.plaf.basic.BasicBorders;
-import javax.swing.text.JTextComponent;
-
-
-/**
- * A factory class that creates borders for the different Swing components.
- *
- * @author Roman Kennke (roman@kennke.org)
- */
-public class MetalBorders
-{
-
-  /** The shared instance for getButtonBorder(). */
-  private static Border buttonBorder;
-
-  /** The shared instance for getToggleButtonBorder(). */
-  private static Border toggleButtonBorder;
-
-  /** The shared instance for getDesktopIconBorder(). */
-  private static Border desktopIconBorder;
-
-  /** The shared instance for getRolloverButtonBorder(). */
-  private static Border toolbarButtonBorder;
-
-  /** The shared instance for getTextFieldBorder(). */
-  private static Border textFieldBorder;
-
-  /** The shared instance for getTextBorder(). */
-  private static Border textBorder;
-
-  /** The shared instance for getRolloverBorder(). */
-  private static Border rolloverBorder;
-
-  /**
-   * A MarginBorder that gets shared by multiple components.
-   * Created on demand by the private helper function {@link
-   * #getMarginBorder()}.
-   */
-  private static BasicBorders.MarginBorder marginBorder;
-
-  /**
-   * <p>A border used for {@link JButton} components.</p>
-   *
-   * <p>This {@link Border} implementation can handle only instances of
-   * {@link AbstractButton} and their subclasses.</p>
-   *
-   * <p>If the Metal Look and Feel's current theme is 'Ocean' the border
-   * will be painted with a special highlight when the mouse cursor if
-   * over the button (ie. the property <code>rollover</code> of the
-   * button's model is <code>true</code>) and is not a <b>direct</b>
-   * child of a {@link JToolBar}.</p>
-   */
-  public static class ButtonBorder extends AbstractBorder implements UIResource
-  {
-    /** The borders insets. */
-    protected static Insets borderInsets = new Insets(3, 3, 3, 3);
-
-    /**
-     * Creates a new instance of <code>ButtonBorder</code>.
-     */
-    public ButtonBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Paints the button border.
-     *
-     * @param c the component for which we paint the border
-     * @param g the Graphics context to use
-     * @param x the X coordinate of the upper left corner of c
-     * @param y the Y coordinate of the upper left corner of c
-     * @param w the width of c
-     * @param h the height of c
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-                            int h)
-    {
-      // With the OceanTheme the button border is painted entirely different.
-      // However, I couldn't figure out how this is determined besides checking
-      // for instanceof OceanTheme. The button painting is definitely not
-      // influenced by a UI default property and it is definitely performed
-      // by the same Border class.
-      if (MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme)
-        paintOceanButtonBorder(c, g, x, y, w, h);
-      else
-        paintDefaultButtonBorder(c, g, x, y, w, h);
-    }
-
-    /**
-     * Paints the button border for the DefaultMetalTheme.
-     *
-     * @param c the component (button)
-     * @param g the graphics object to use
-     * @param x the upper left corner of the component, X coordinate
-     * @param y the upper left corner of the component, Y coordinate
-     * @param w the width of the component
-     * @param h the height of the component
-     */
-    private void paintDefaultButtonBorder(Component c, Graphics g, int x,
-                                          int y, int w, int h)
-    {
-      ButtonModel bmodel = null;
-
-      // The RI will fail with a ClassCastException in such a situation.
-      // This code tries to be more helpful.
-      if (c instanceof AbstractButton)
-        bmodel = ((AbstractButton) c).getModel();
-      else
-        throw new IllegalStateException("A ButtonBorder is supposed to work "
-                                        + "only with AbstractButton and"
-                                        + "subclasses.");
-
-      Color darkShadow = MetalLookAndFeel.getControlDarkShadow();
-      Color shadow = MetalLookAndFeel.getControlShadow();
-      Color light = MetalLookAndFeel.getControlHighlight();
-      Color middle = MetalLookAndFeel.getControl();
-
-      if (c.isEnabled())
-        {
-          // draw dark border
-          g.setColor(darkShadow);
-          g.drawRect(x, y, w - 2, h - 2);
-
-          // If the button is the default button, we paint a special border,
-          // regardless of the pressed state.
-          if (c instanceof JButton && ((JButton) c).isDefaultButton())
-            {
-              g.drawRect(x + 1, y + 1, w - 4, h - 4);
-              // Draw white highlight.
-              g.setColor(light);
-              g.drawLine(x + 2, y + 2, x + w - 4, y + 2);
-              g.drawLine(x + 2, y + 2, x + 2, y + h - 4);
-              g.drawLine(x + 2, y + h - 1, x + w - 1, y + h - 1);
-              g.drawLine(x + w - 1, y + 2, x + w - 1, y + h - 1);
-              // Draw crossing pixels.
-              g.setColor(middle);
-              g.fillRect(x + w - 2, y + 2, 1, 1);
-              g.fillRect(x + 2, y + h - 2, 1, 1);
-            }
-          else
-            {
-              // The normal border. This is used when the button is not
-              // pressed or the button is not armed.
-              if (! (bmodel.isPressed() && bmodel.isArmed()))
-                {
-                  // draw light border
-                  g.setColor(light);
-                  g.drawRect(x + 1, y + 1, w - 2, h - 2);
-
-                  // draw crossing pixels of both borders
-                  g.setColor(middle);
-                  g.drawLine(x + 1, y + h - 2, x + 1, y + h - 2);
-                  g.drawLine(x + w - 2, y + 1, x + w - 2, y + 1);
-                }
-              // The pressed border. This border is painted only when
-              // the button is both pressed and armed.
-              else
-                {
-                  // draw light border
-                  g.setColor(light);
-                  g.drawLine(x + w - 1, y + 1, x + w - 1, y + h - 1);
-                  g.drawLine(x + 1, y + h - 1, x + w - 1, y + h - 1);
-
-                  // draw shadow border
-                  g.setColor(middle);
-                  g.drawLine(x + 1, y + 1, x + w - 2, y + 1);
-                  g.drawLine(x + 1, y + 1, x + 1, y + h - 2);
-
-                  // draw crossing pixels of both borders
-                  g.setColor(shadow);
-                  g.drawRect(x + 1, y + h - 2, 0, 0);
-                  g.drawRect(x + w - 2, y + 1, 0, 0);
-                }
-            }
-        }
-      else
-        {
-          // draw disabled border
-          g.setColor(MetalLookAndFeel.getInactiveControlTextColor());
-          g.drawRect(x, y, w - 2, h - 2);
-        }
-    }
-
-    /**
-     * Paints the button border for the OceanTheme.
-     *
-     * @param c the button
-     * @param g the graphics context
-     * @param x the X coordinate of the upper left corner of the painting rect
-     * @param y the Y coordinate of the upper left corner of the painting rect
-     * @param w the width of the painting rect
-     * @param h the height of the painting rect
-     */
-    private void paintOceanButtonBorder(Component c, Graphics g, int x,
-                                        int y, int w, int h)
-    {
-      ButtonModel bmodel = null;
-
-      // The RI will fail with a ClassCastException in such a situation.
-      // This code tries to be more helpful.
-      if (c instanceof AbstractButton)
-        bmodel = ((AbstractButton) c).getModel();
-      else
-        throw new IllegalStateException("A ButtonBorder is supposed to work "
-                                        + "only with AbstractButton and"
-                                        + "subclasses.");
-
-      Color darkShadow = MetalLookAndFeel.getControlDarkShadow();
-      Color shadow = MetalLookAndFeel.getControlShadow();
-      Color light = MetalLookAndFeel.getControlHighlight();
-      Color middle = MetalLookAndFeel.getControl();
-
-      if (c.isEnabled())
-        {
-          // Paint the pressed border if the button is pressed, or if
-          // the button is the default button. In the OceanTheme, the default
-          // button has the same border as a pressed button.
-          if (bmodel.isPressed() || ((c instanceof JButton)
-                                     && ((JButton) c).isDefaultButton()))
-            {
-              // Draw fat border.
-              g.setColor(darkShadow);
-              g.drawRect(x, y, w - 1, h - 1);
-              g.drawRect(x + 1, y + 1, w - 3, h - 3);
-            }
-          else if (bmodel.isRollover() && !(c.getParent() instanceof JToolBar))
-            {
-              // Paint a bigger border when the mouse is over the button but
-              // only if it is *not* part of a JToolBar.
-              g.setColor(shadow);
-              g.drawRect(x, y, w - 1, h - 1);
-              g.drawRect(x + 2, y + 2, w - 5, h - 5);
-              g.setColor(darkShadow);
-              g.drawRect(x + 1, y + 1, w - 3, h - 3);
-            }
-          else
-            {
-              g.setColor(darkShadow);
-              g.drawRect(x, y, w - 1, h - 1);
-            }
-        }
-      else
-        {
-          // draw disabled border
-          g.setColor(MetalLookAndFeel.getInactiveControlTextColor());
-          g.drawRect(x, y, w - 2, h - 2);
-        }
-    }
-
-    /**
-     * Returns the insets of the <code>ButtonBorder</code>.
-     *
-     * @param c the component for which the border is used (ignored).
-     *
-     * @return The insets of the <code>ButtonBorder</code>.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return borderInsets;
-    }
-
-    /**
-     * Returns the insets of the <code>ButtonBorder</code> in the specified
-     * <code>newInsets</code> object.
-     *
-     * @param c the component for which the border is used (ignored).
-     * @param newInsets the insets object where to put the values (
-     *                  <code>null</code> not permitted).
-     *
-     * @return The <code>newInsets</code> reference.
-     */
-    public Insets getBorderInsets(Component c, Insets newInsets)
-    {
-      newInsets.bottom = borderInsets.bottom;
-      newInsets.left = borderInsets.left;
-      newInsets.right = borderInsets.right;
-      newInsets.top = borderInsets.top;
-      return newInsets;
-    }
-  }
-
-  /**
-   * A border used when painting {@link JInternalFrame} instances.
-   */
-  static class DesktopIconBorder extends AbstractBorder
-    implements UIResource
-  {
-    /**
-     * Creates a new border instance.
-     */
-    public DesktopIconBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     *
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return getBorderInsets(c, null);
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c, Insets newInsets)
-    {
-      if (newInsets == null)
-        newInsets = new Insets(3, 3, 2, 3);
-      else
-        {
-          newInsets.top = 3;
-          newInsets.left = 3;
-          newInsets.bottom = 2;
-          newInsets.right = 3;
-        }
-      return newInsets;
-    }
-
-    /**
-     * Paints the border for the specified component.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     * @param w  the width.
-     * @param h  the height.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-        int h)
-    {
-      g.setColor(MetalLookAndFeel.getControlDarkShadow());
-      g.drawRect(x, y, w - 1, h - 1);
-    }
-
-  }
-
-  /**
-   * A simple 3D border.
-   */
-  public static class Flush3DBorder extends AbstractBorder
-    implements UIResource
-  {
-    private static final Insets borderInsets = new Insets(2, 2, 2, 2);
-
-    /**
-     * Creates a new border instance.
-     */
-    public Flush3DBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     *
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return borderInsets;
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     * @param newInsets  an existing insets instance, that will be populated
-     *                   with the border insets and returned as the result
-     *                   (<code>null</code> not permitted).
-     *
-     * @return The <code>newInsets</code> reference.
-     */
-    public Insets getBorderInsets(Component c, Insets newInsets)
-    {
-      newInsets.top = borderInsets.top;
-      newInsets.left = borderInsets.left;
-      newInsets.bottom = borderInsets.bottom;
-      newInsets.right = borderInsets.right;
-      return newInsets;
-    }
-
-    /**
-     * Paints the border for the specified component.
-     *
-     * @param c  the component (ignored).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     * @param w  the width.
-     * @param h  the height.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-        int h)
-    {
-      Color savedColor = g.getColor();
-      g.setColor(MetalLookAndFeel.getControlDarkShadow());
-      g.drawRect(x, y, w - 2, h - 2);
-      g.setColor(MetalLookAndFeel.getControlHighlight());
-      g.drawRect(x + 1, y + 1, w - 2, h - 2);
-      g.setColor(MetalLookAndFeel.getControl());
-      g.drawLine(x + 1, y + h - 2, x + 1, y + h - 2);
-      g.drawLine(x + w - 2, y + 1, x + w - 2, y + 1);
-      g.setColor(savedColor);
-    }
-
-  }
-
-  /**
-   * A border used for a {@link JInternalFrame} when it is being used as a
-   * palette.
-   *
-   * @since 1.3
-   */
-  public static class PaletteBorder extends AbstractBorder
-    implements UIResource
-  {
-    private static final Insets borderInsets = new Insets(1, 1, 1, 1);
-
-    /**
-     * Creates a new <code>PaletteBorder</code>.
-     */
-    public PaletteBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     *
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return borderInsets;
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     * @param newInsets  an existing insets instance, that will be populated
-     *                   with the border insets and returned as the result
-     *                   (<code>null</code> not permitted).
-     *
-     * @return The <code>newInsets</code> reference.
-     */
-    public Insets getBorderInsets(Component c, Insets newInsets)
-    {
-      newInsets.top = borderInsets.top;
-      newInsets.left = borderInsets.left;
-      newInsets.bottom = borderInsets.bottom;
-      newInsets.right = borderInsets.right;
-      return newInsets;
-    }
-
-    /**
-     * Paints the border for the specified component.
-     *
-     * @param c  the component (ignored).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     * @param w  the width.
-     * @param h  the height.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-            int h)
-    {
-      Color savedColor = g.getColor();
-
-      // draw the outline
-      g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-      g.drawRect(x, y, w - 1, h - 1);
-
-      // put a dot in each corner
-      g.setColor(MetalLookAndFeel.getControl());
-      g.fillRect(x, y, 1, 1);
-      g.fillRect(x + w - 1, y, 1, 1);
-      g.fillRect(x + w - 1, y + h - 1, 1, 1);
-      g.fillRect(x, y + h - 1, 1, 1);
-      g.setColor(savedColor);
-    }
-
-  }
-
-  /**
-   * A border used for the {@link JTextField} component.
-   */
-  public static class TextFieldBorder extends Flush3DBorder
-    implements UIResource
-  {
-    /**
-     * Creates a new border instance.
-     */
-    public TextFieldBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Paints the border for the specified component.
-     *
-     * @param c  the component (ignored).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     * @param w  the width.
-     * @param h  the height.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-        int h)
-    {
-      boolean enabledTextBorder;
-      if (c instanceof JTextComponent)
-        {
-          JTextComponent tc = (JTextComponent) c;
-          enabledTextBorder = tc.isEnabled() && tc.isEditable();
-        }
-      else
-        enabledTextBorder = false;
-
-      if (enabledTextBorder)
-        super.paintBorder(c, g, x, y, w, h);
-      else
-        {
-          Color savedColor = g.getColor();
-          g.setColor(MetalLookAndFeel.getControlShadow());
-          g.drawRect(x, y, w - 1, h - 1);
-          g.setColor(savedColor);
-        }
-    }
-
-  }
-
-  /**
-   * A border used for the {@link JInternalFrame} component.
-   */
-  public static class InternalFrameBorder extends AbstractBorder
-    implements UIResource
-  {
-    private static final Insets borderInsets = new Insets(5, 5, 5, 5);
-
-    /**
-     * Creates a new border instance.
-     */
-    public InternalFrameBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     *
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return borderInsets;
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     * @param newInsets  an existing insets instance, that will be populated
-     *                   with the border insets and returned as the result
-     *                   (<code>null</code> not permitted).
-     *
-     * @return The <code>newInsets</code> reference.
-     */
-    public Insets getBorderInsets(Component c, Insets newInsets)
-    {
-      newInsets.top = borderInsets.top;
-      newInsets.left = borderInsets.left;
-      newInsets.bottom = borderInsets.bottom;
-      newInsets.right = borderInsets.right;
-      return newInsets;
-    }
-
-    /**
-     * Paints the border for the specified component.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     * @param w  the width.
-     * @param h  the height.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-        int h)
-    {
-
-      JInternalFrame f = (JInternalFrame) c;
-      if (f.isSelected())
-        g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-      else
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-
-      // fill the border background
-      g.fillRect(x, y, w, 5);
-      g.fillRect(x, y, 5, h);
-      g.fillRect(x + w - 5, y, 5, h);
-      g.fillRect(x, y + h - 5, w, 5);
-
-      // draw a dot in each corner
-      g.setColor(MetalLookAndFeel.getControl());
-      g.fillRect(x, y, 1, 1);
-      g.fillRect(x + w - 1, y, 1, 1);
-      g.fillRect(x + w - 1, y + h - 1, 1, 1);
-      g.fillRect(x, y + h - 1, 1, 1);
-
-      // draw the lines
-      g.setColor(MetalLookAndFeel.getBlack());
-      g.drawLine(x + 14, y + 2, x + w - 15, y + 2);
-      g.drawLine(x + 14, y + h - 3, x + w - 15, y + h - 3);
-      g.drawLine(x + 2, y + 14, x + 2, y + h - 15);
-      g.drawLine(x + w - 3, y + 14, x + w - 3, y + h - 15);
-
-      // draw the line highlights
-      if (f.isSelected())
-        g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
-      else
-        g.setColor(MetalLookAndFeel.getControlShadow());
-      g.drawLine(x + 15, y + 3, x + w - 14, y + 3);
-      g.drawLine(x + 15, y + h - 2, x + w - 14, y + h - 2);
-      g.drawLine(x + 3, y + 15, x + 3, y + h - 14);
-      g.drawLine(x + w - 2, y + 15, x + w - 2, y + h - 14);
-    }
-
-  }
-
-  /**
-   * A border used for {@link JInternalFrame} components that are
-   * presented as dialogs (by the {@link JOptionPane} class).
-   */
-  public static class OptionDialogBorder extends AbstractBorder
-    implements UIResource
-  {
-
-    /**
-     * Creates a new border instance.
-     */
-    public OptionDialogBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     *
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return getBorderInsets(c, null);
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c, Insets newInsets)
-    {
-      if (newInsets == null)
-        newInsets = new Insets(3, 3, 3, 3);
-      else
-        {
-          newInsets.top = 3;
-          newInsets.left = 3;
-          newInsets.bottom = 3;
-          newInsets.right = 3;
-        }
-      return newInsets;
-    }
-
-    /**
-     * Paints the border for the specified component.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     * @param w  the width.
-     * @param h  the height.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-        int h)
-    {
-
-      JInternalFrame f = (JInternalFrame) c;
-      g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-      if (f.getContentPane() instanceof JOptionPane)
-        {
-          JOptionPane pane = (JOptionPane) f.getContentPane();
-          int type = pane.getMessageType();
-          if (type == JOptionPane.QUESTION_MESSAGE)
-            {
-              Color bc = UIManager.getColor(
-                  "OptionPane.questionDialog.border.background");
-              if (bc != null)
-                g.setColor(bc);
-            }
-          if (type == JOptionPane.WARNING_MESSAGE)
-            {
-              Color bc = UIManager.getColor(
-                  "OptionPane.warningDialog.border.background");
-              if (bc != null)
-                g.setColor(bc);
-            }
-          else if (type == JOptionPane.ERROR_MESSAGE)
-            {
-              Color bc = UIManager.getColor(
-                  "OptionPane.errorDialog.border.background");
-              if (bc != null)
-                g.setColor(bc);
-            }
-        }
-
-      // fill the border background
-      g.fillRect(x, y, w, 3);
-      g.fillRect(x, y, 3, h);
-      g.fillRect(x + w - 3, y, 3, h);
-      g.fillRect(x, y + h - 3, w, 3);
-
-      // draw a dot in each corner
-      g.setColor(MetalLookAndFeel.getControl());
-      g.fillRect(x, y, 1, 1);
-      g.fillRect(x + w - 1, y, 1, 1);
-      g.fillRect(x + w - 1, y + h - 1, 1, 1);
-      g.fillRect(x, y + h - 1, 1, 1);
-
-    }
-
-  }
-
-  /**
-   * A border used for {@link JMenu} and {@link JMenuItem} components.
-   */
-  public static class MenuItemBorder extends AbstractBorder
-    implements UIResource
-  {
-    /** The border insets. */
-    protected static Insets borderInsets = new Insets(2, 2, 2, 2);
-
-    /**
-     * Creates a new border instance.
-     */
-    public MenuItemBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Paints the border for the component.  A border is painted only if the
-     * component is a selected {@link JMenu} or an armed {@link JMenuItem}.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x-coordinate of the border area.
-     * @param y  the y-coordinate of the border area.
-     * @param w  the width of the border area.
-     * @param h  the height of the border area.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-        int h)
-    {
-      Color dark = MetalLookAndFeel.getPrimaryControlDarkShadow();
-      Color light = MetalLookAndFeel.getPrimaryControlHighlight();
-      if (c instanceof JMenu)
-        {
-          JMenu menu = (JMenu) c;
-          if (menu.isSelected())
-            {
-              g.setColor(dark);
-              g.drawLine(x, y, x, y + h);
-              g.drawLine(x, y, x + w, y);
-              g.drawLine(x + w - 2, y + 1, x + w - 2, y + h);
-              g.setColor(light);
-              g.drawLine(x + w - 1, y + 1, x + w - 1, y + h);
-            }
-        }
-      else if (c instanceof JMenuItem)
-        {
-          JMenuItem item = (JMenuItem) c;
-          if (item.isArmed())
-            {
-              g.setColor(dark);
-              g.drawLine(x, y, x + w, y);
-              g.setColor(light);
-              g.drawLine(x, y + h - 1, x + w, y + h - 1);
-            }
-          else
-            {
-              // Normally we draw a light line on the left.
-              g.setColor(light);
-              g.drawLine(x, y, x, y + h);
-            }
-        }
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     *
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return borderInsets;
-    }
-
-    /**
-     * Populates <code>insets</code> with the border insets, then returns it.
-     *
-     * @param c  the component (ignored).
-     * @param insets  the object to populate with the border insets.
-     *
-     * @return The border insets.
-     *
-     * @throws NullPointerException if <code>insets</code> is <code>null</code>.
-     */
-    public Insets getBorderInsets(Component c, Insets insets)
-    {
-      insets.left = borderInsets.left;
-      insets.top = borderInsets.top;
-      insets.bottom = borderInsets.bottom;
-      insets.right = borderInsets.right;
-      return insets;
-    }
-  }
-
-  /**
-   * A border used for {@link JMenuBar} components.
-   */
-  public static class MenuBarBorder
-      extends AbstractBorder
-      implements UIResource
-  {
-    /** The border insets. */
-    protected static Insets borderInsets = new Insets(1, 0, 1, 0);
-
-    /**
-     * Creates a new border instance.
-     */
-    public MenuBarBorder()
-    {
-    }
-
-    /**
-     * Paints the border for the component.  A border is painted only if the
-     * component is a selected {@link JMenu} or an armed {@link JMenuItem}.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x-coordinate of the border area.
-     * @param y  the y-coordinate of the border area.
-     * @param w  the width of the border area.
-     * @param h  the height of the border area.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-        int h)
-    {
-      // Although it is not correct to decide on the static property
-      // currentTheme which color to use the RI does it like that.
-      // The trouble is that by simply changing the current theme to
-      // e.g. DefaultMetalLookAndFeel this method will use another color
-      // although a change in painting behavior should be expected only
-      // after setting a new look and feel and updating all components.
-      if(MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme)
-        g.setColor(UIManager.getColor("MenuBar.borderColor"));
-      else
-        g.setColor(MetalLookAndFeel.getControlShadow());
-
-      g.drawLine(x, y + h - 1, x + w, y + h - 1);
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     *
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return borderInsets;
-    }
-
-    /**
-     * Populates <code>insets</code> with the border insets, then returns it.
-     *
-     * @param c  the component (ignored).
-     * @param insets  the object to populate with the border insets.
-     *
-     * @return The border insets.
-     *
-     * @throws NullPointerException if <code>insets</code> is <code>null</code>.
-     */
-    public Insets getBorderInsets(Component c, Insets insets)
-    {
-      insets.left = borderInsets.left;
-      insets.top = borderInsets.top;
-      insets.bottom = borderInsets.bottom;
-      insets.right = borderInsets.right;
-      return insets;
-    }
-  }
-
-  /**
-   * A border for {@link JScrollPane} components.
-   */
-  public static class ScrollPaneBorder
-    extends AbstractBorder
-    implements UIResource
-  {
-    /** The border insets. */
-    private static Insets insets = new Insets(1, 1, 2, 2);
-
-    /**
-     * Constructs a new ScrollPaneBorder.
-     */
-    public ScrollPaneBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the insets of the border for the Component <code>c</code>.
-     *
-     * @param c the Component for which we return the border insets
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return insets;
-    }
-
-    /**
-     * Paints the border.
-     *
-     * @param c the Component for which the border is painted
-     * @param g the Graphics context
-     * @param x the X coordinate of the upper left corner of the border
-     * @param y the Y coordinate of the upper left corner of the border
-     * @param w the width of the border
-     * @param h the height of the border
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y,
-                            int w, int h)
-    {
-      Color darkShadow = MetalLookAndFeel.getControlDarkShadow();
-      Color shadow = MetalLookAndFeel.getControlShadow();
-      Color light = MetalLookAndFeel.getWhite();
-      Color middle = MetalLookAndFeel.getControl();
-
-      // paint top border line
-      g.setColor(darkShadow);
-      g.drawLine(x, y, x + w - 2, y);
-
-      // paint left border line
-      g.drawLine(x, y, x, y + h - 2);
-
-      // paint right inner border line
-      g.drawLine(x + w - 2, y, x + w - 2, y + h + 1);
-
-      // paint bottom inner border line
-      g.drawLine(x + 2, y + h - 2, x + w - 2, y + h - 2);
-
-      // draw right outer border line
-      g.setColor(light);
-      g.drawLine(x + w - 1, y, x + w - 1, y + h - 1);
-
-      // draw bottom outer border line
-      g.drawLine(x, y + h - 1, x + w - 1, y + h - 1);
-
-      // paint the lighter points
-      g.setColor(middle);
-      g.drawLine(x + w - 1, y, x + w - 1, y);
-      g.drawLine(x + w - 2, y + 2, x + w - 2, y + 2);
-      g.drawLine(x, y + h - 1, x, y + h - 1);
-      g.drawLine(x + 1, y + h - 2, x + 1, y + h - 2);
-
-    }
-
-  }
-
-  /**
-   * A button border that is only visible when the mouse pointer is within
-   * the button's bounds.
-   */
-  public static class RolloverButtonBorder
-    extends MetalBorders.ButtonBorder
-  {
-    /**
-     * Creates a new border instance.
-     */
-    public RolloverButtonBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Paints the border.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     * @param w  the width.
-     * @param h  the height.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-            int h)
-    {
-      // TODO: What should be done here? Obviously the ButtonBorder already
-      // handles the rollover state in Sun's impl. Maybe this is only there
-      // for backwards compatibility.
-      super.paintBorder(c, g, x, y, w, h);
-    }
-  }
-
-  /**
-   * This border is used in Toolbar buttons as inner border.
-   */
-  static class RolloverMarginBorder extends AbstractBorder
-  {
-    /** The borders insets. */
-    protected static Insets borderInsets = new Insets(3, 3, 3, 3);
-
-    /**
-     * Creates a new instance of RolloverBorder.
-     */
-    public RolloverMarginBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the insets of the RolloverBorder.
-     *
-     * @param c the component for which the border is used
-     *
-     * @return the insets of the RolloverBorder
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return getBorderInsets(c, null);
-    }
-
-    /**
-     * Returns the insets of the RolloverMarginBorder in the specified
-     * Insets object.
-     *
-     * @param c the component for which the border is used
-     * @param newInsets the insets object where to put the values
-     *
-     * @return the insets of the RolloverMarginBorder
-     */
-    public Insets getBorderInsets(Component c, Insets newInsets)
-    {
-      if (newInsets == null)
-        newInsets = new Insets(0, 0, 0, 0);
-
-      AbstractButton b = (AbstractButton) c;
-      Insets margin = b.getMargin();
-      newInsets.bottom = borderInsets.bottom;
-      newInsets.left = borderInsets.left;
-      newInsets.right = borderInsets.right;
-      newInsets.top = borderInsets.top;
-      return newInsets;
-    }
-  }
-
-  /**
-   * A border implementation for popup menus.
-   */
-  public static class PopupMenuBorder
-    extends AbstractBorder
-    implements UIResource
-  {
-
-    /** The border's insets. */
-    protected static Insets borderInsets = new Insets(3, 1, 2, 1);
-
-    /**
-     * Constructs a new PopupMenuBorder.
-     */
-    public PopupMenuBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the insets of the border, creating a new Insets instance
-     * with each call.
-     *
-     * @param c the component for which we return the border insets
-     *          (not used here)
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return getBorderInsets(c, null);
-    }
-
-    /**
-     * Returns the insets of the border, using the supplied Insets instance.
-     *
-     * @param c the component for which we return the border insets
-     *          (not used here)
-     * @param i the Insets instance to fill with the Insets values
-     */
-    public Insets getBorderInsets(Component c, Insets i)
-    {
-      Insets insets;
-      if (i == null)
-        insets = new Insets(borderInsets.top, borderInsets.left,
-                            borderInsets.bottom, borderInsets.right);
-      else
-        {
-          insets = i;
-          insets.top = borderInsets.top;
-          insets.left = borderInsets.left;
-          insets.bottom = borderInsets.bottom;
-          insets.right = borderInsets.right;
-        }
-
-      return insets;
-    }
-
-    /**
-     * Paints the border for component <code>c</code> using the
-     * Graphics context <code>g</code> with the dimension
-     * <code>x, y, w, h</code>.
-     *
-     * @param c the component for which we paint the border
-     * @param g the Graphics context to use
-     * @param x the X coordinate of the upper left corner of c
-     * @param y the Y coordinate of the upper left corner of c
-     * @param w the width of c
-     * @param h the height of c
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-                            int h)
-    {
-      Color darkShadow = MetalLookAndFeel.getPrimaryControlDarkShadow();
-      Color light = MetalLookAndFeel.getPrimaryControlHighlight();
-
-      // draw dark outer border
-      g.setColor(darkShadow);
-      g.drawRect(x, y, w - 1, h - 1);
-
-      // draw highlighted inner border (only top and left)
-      g.setColor(light);
-      g.drawLine(x + 1, y + 1, x + w - 2, y + 1);
-    }
-
-  }
-
-  /**
-   * A border used for the {@link JToggleButton} component.
-   *
-   * @since 1.3
-   */
-  public static class ToggleButtonBorder
-    extends ButtonBorder
-  {
-    /**
-     * Creates a new border instance.
-     */
-    public ToggleButtonBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Paints the toggle button border.
-     *
-     * @param c the component for which we paint the border
-     * @param g the Graphics context to use
-     * @param x the X coordinate of the upper left corner of c
-     * @param y the Y coordinate of the upper left corner of c
-     * @param w the width of c
-     * @param h the height of c
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-                            int h)
-    {
-      ButtonModel bmodel = null;
-
-      if (c instanceof AbstractButton)
-        bmodel = ((AbstractButton) c).getModel();
-
-      Color darkShadow = MetalLookAndFeel.getControlDarkShadow();
-      Color shadow = MetalLookAndFeel.getControlShadow();
-      Color light = MetalLookAndFeel.getWhite();
-      Color middle = MetalLookAndFeel.getControl();
-
-      if (c.isEnabled())
-        {
-          // draw dark border
-          g.setColor(darkShadow);
-          g.drawRect(x, y, w - 2, h - 2);
-
-          if (!bmodel.isArmed())
-            {
-              // draw light border
-              g.setColor(light);
-              g.drawLine(x + 1, y + h - 1, x + w - 1, y + h - 1);
-              g.drawLine(x + w - 1, y + 1, x + w - 1, y + h - 1);
-              if (bmodel.isSelected())
-                g.setColor(middle);
-              g.drawLine(x + 1, y + 1, x + w - 3, y + 1);
-              g.drawLine(x + 1, y + 1, x + 1, y + h - 3);
-
-              // draw crossing pixels of both borders
-              g.setColor(shadow);
-              g.drawLine(x + 1, y + h - 2, x + 1, y + h - 2);
-              g.drawLine(x + w - 2, y + 1, x + w - 2, y + 1);
-            }
-          else
-            {
-              // draw light border
-              g.setColor(light);
-              g.drawLine(x + w - 1, y + 1, x + w - 1, y + h - 1);
-              g.drawLine(x + 1, y + h - 1, x + w - 1, y + h - 1);
-
-              // draw shadow border
-              g.setColor(shadow);
-              g.drawLine(x + 1, y + 1, x + w - 2, y + 1);
-              g.drawLine(x + 1, y + 1, x + 1, y + h - 2);
-
-              // draw crossing pixels of both borders
-              g.setColor(shadow);
-              g.drawLine(x + 1, y + h - 2, x + 1, y + h - 2);
-              g.drawLine(x + w - 2, y + 1, x + w - 2, y + 1);
-
-            }
-          // draw corners
-          g.setColor(middle);
-          g.drawLine(x, y + h - 1, x, y + h - 1);
-          g.drawLine(x + w - 1, y, x + w - 1, y);
-        }
-      else
-        {
-          // draw disabled border
-          g.setColor(MetalLookAndFeel.getControlDisabled());
-          g.drawRect(x, y, w - 2, h - 2);
-        }
-    }
-  }
-
-  /**
-   * A border used for the {@link JToolBar} component.
-   */
-  public static class ToolBarBorder extends AbstractBorder
-    implements UIResource, SwingConstants
-  {
-    /**
-     * Creates a new border instance.
-     */
-    public ToolBarBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     *
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return getBorderInsets(c, null);
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c  the component (ignored).
-     * @return The border insets.
-     */
-    public Insets getBorderInsets(Component c, Insets newInsets)
-    {
-      JToolBar tb = (JToolBar) c;
-      if (tb.getOrientation() == JToolBar.HORIZONTAL)
-        {
-          if (newInsets == null)
-            newInsets = new Insets(2, 16, 2, 2);
-          else
-            {
-              newInsets.top = 2;
-              newInsets.left = 16;
-              newInsets.bottom = 2;
-              newInsets.right = 2;
-            }
-          return newInsets;
-        }
-      else // assume JToolBar.VERTICAL
-        {
-          if (newInsets == null)
-            newInsets = new Insets(16, 2, 2, 2);
-          else
-            {
-              newInsets.top = 16;
-              newInsets.left = 2;
-              newInsets.bottom = 2;
-              newInsets.right = 2;
-            }
-          return newInsets;
-        }
-
-    }
-
-    /**
-     * Paints the border for the specified component.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     * @param w  the width.
-     * @param h  the height.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-        int h)
-    {
-
-      JToolBar tb = (JToolBar) c;
-      if (tb.getOrientation() == JToolBar.HORIZONTAL)
-        {
-           MetalUtils.fillMetalPattern(tb, g, x + 2, y + 2, x + 11, y + h - 5,
-                  MetalLookAndFeel.getControlHighlight(),
-                  MetalLookAndFeel.getControlDarkShadow());
-        }
-      else
-        {
-          MetalUtils.fillMetalPattern(tb, g, x + 2, y + 2, x + w - 5, y + 11,
-                  MetalLookAndFeel.getControlHighlight(),
-                  MetalLookAndFeel.getControlDarkShadow());
-        }
-    }
-
-  }
-
-  /**
-   * A border for table header cells.
-   *
-   * @since 1.3
-   */
-  public static class TableHeaderBorder extends AbstractBorder
-  {
-    /**
-     * The insets of this border.
-     */
-    // TODO: According to tests that I have done, this is really the border
-    // that should be returned by getBorderInsets(). However, the name
-    // is very distracting. Is there any deeper meaning in it?
-    protected Insets editorBorderInsets;
-
-    /**
-     * Creates a new instance of <code>TableHeaderBorder</code>.
-     */
-    public TableHeaderBorder()
-    {
-      editorBorderInsets = new Insets(1, 1, 1, 1);
-    }
-
-    /**
-     * Return the insets of this border.
-     *
-     * @return the insets of this border
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return editorBorderInsets;
-    }
-
-    /**
-     * Paints the border.
-     *
-     * @param c the component for which to paint the border
-     * @param g the graphics context to use
-     * @param x the x cooridinate of the border rectangle
-     * @param y the y cooridinate of the border rectangle
-     * @param w the width of the border rectangle
-     * @param h the height of the border rectangle
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w, int h)
-    {
-      Color dark = MetalLookAndFeel.getControlDarkShadow();
-      Color light = MetalLookAndFeel.getWhite();
-      Color old = g.getColor();
-      g.setColor(light);
-      g.drawLine(x, y, x + w - 2, y);
-      g.drawLine(x, y, x, y + h - 2);
-      g.setColor(dark);
-      g.drawLine(x + w - 1, y, x + w - 1, y + h - 1);
-      g.drawLine(x + 1, y + h - 1, x + w - 1, y + h - 1);
-      g.setColor(old);
-    }
-  }
-
-  /**
-   * Returns a border for Swing buttons in the Metal Look &amp; Feel.
-   *
-   * @return a border for Swing buttons in the Metal Look &amp; Feel
-   */
-  public static Border getButtonBorder()
-  {
-    if (buttonBorder == null)
-      {
-        Border outer = new ButtonBorder();
-        Border inner = getMarginBorder();
-        buttonBorder = new BorderUIResource.CompoundBorderUIResource(outer,
-            inner);
-      }
-    return buttonBorder;
-  }
-
-  /**
-   * Returns a border for use with {@link JToggleButton} components.
-   *
-   * @return A border.
-   *
-   * @since 1.3
-   */
-  public static Border getToggleButtonBorder()
-  {
-    if (toggleButtonBorder == null)
-      {
-        Border outer = new ToggleButtonBorder();
-        Border inner = getMarginBorder();
-        toggleButtonBorder = new BorderUIResource.CompoundBorderUIResource(
-            outer, inner);
-      }
-    return toggleButtonBorder;
-  }
-
-  /**
-   * Returns a border instance that is used with a {@link JInternalFrame} when
-   * it is in the iconified state.
-   *
-   * @return A border.
-   *
-   * @since 1.3
-   */
-  public static Border getDesktopIconBorder()
-  {
-    if (desktopIconBorder == null)
-      desktopIconBorder = new DesktopIconBorder();
-    return desktopIconBorder;
-  }
-
-  /**
-   * Returns a border for use by the {@link JTextField} component.
-   *
-   * @return A border.
-   *
-   * @since 1.3
-   */
-  public static Border getTextFieldBorder()
-  {
-    if (textFieldBorder == null)
-      {
-        Border inner = getMarginBorder();
-        Border outer = new TextFieldBorder();
-        textFieldBorder =
-          new BorderUIResource.CompoundBorderUIResource(outer, inner);
-      }
-    return textFieldBorder;
-  }
-
-  /**
-   * Returns the border that is used for text components (except text fields,
-   * which use {@link #getTextFieldBorder}.
-   *
-   * @return the border that is used for text components
-   *
-   * @since 1.3
-   */
-  public static Border getTextBorder()
-  {
-    if (textBorder == null)
-      {
-        Border inner = getMarginBorder();
-        Border outer = new Flush3DBorder();
-        textBorder =
-          new BorderUIResource.CompoundBorderUIResource(outer, inner);
-      }
-    return textBorder;
-  }
-
-  /**
-   * Returns a border for Toolbar buttons in the Metal Look &amp; Feel.
-   *
-   * @return a border for Toolbar buttons in the Metal Look &amp; Feel
-   */
-  static Border getToolbarButtonBorder()
-  {
-    if (toolbarButtonBorder == null)
-      {
-        Border outer = new ButtonBorder();
-        Border inner = new RolloverMarginBorder();
-        toolbarButtonBorder = new CompoundBorder(outer, inner);
-      }
-    return toolbarButtonBorder;
-  }
-
-  /**
-   * Returns a shared instance of {@link BasicBorders.MarginBorder}.
-   *
-   * @return a shared instance of {@link BasicBorders.MarginBorder}
-   */
-  static Border getMarginBorder()
-  {
-    if (marginBorder == null)
-      marginBorder = new BasicBorders.MarginBorder();
-    return marginBorder;
-  }
-
-  /**
-   * Returns a shared instance of a compound border for rollover buttons.
-   *
-   * @return A shared border instance.
-   */
-  static Border getRolloverBorder()
-  {
-    if (rolloverBorder == null)
-      {
-        Border outer = new MetalBorders.RolloverButtonBorder();
-        Border inner = MetalBorders.getMarginBorder();
-        rolloverBorder = new BorderUIResource.CompoundBorderUIResource(outer,
-            inner);
-      }
-    return rolloverBorder;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalButtonListener.java b/libjava/classpath/javax/swing/plaf/metal/MetalButtonListener.java
deleted file mode 100644
index 7cf84e5..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalButtonListener.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/* MetalButtonListener.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.beans.PropertyChangeEvent;
-
-import javax.swing.AbstractButton;
-import javax.swing.plaf.basic.BasicButtonListener;
-
-/**
- * A listener for buttons under the {@link MetalLookAndFeel}.
- *
- * @see MetalButtonUI#createButtonListener
- */
-class MetalButtonListener extends BasicButtonListener
-{
-
-  /**
-   * Creates a new instance.
-   *
-   * @param button  the button.
-   */
-  public MetalButtonListener(AbstractButton button)
-  {
-    super(button);
-  }
-
-  /**
-   * Handles property change events.
-   *
-   * @param e  the event.
-   */
-  public void propertyChange(PropertyChangeEvent e)
-  {
-    super.propertyChange(e);
-    // TODO: What should be done here?
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalButtonUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalButtonUI.java
deleted file mode 100644
index 974f0a8..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalButtonUI.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/* MetalButtonUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-
-import javax.swing.AbstractButton;
-import javax.swing.ButtonModel;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JToolBar;
-import javax.swing.SwingConstants;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.UIResource;
-import javax.swing.plaf.basic.BasicButtonUI;
-
-/**
- * A UI delegate for the {@link JButton} component.
- *
- * @author Roman Kennke (roman@kennke.org)
- */
-public class MetalButtonUI
-  extends BasicButtonUI
-{
-
-  /**
-   * The shared button UI.
-   */
-  private static MetalButtonUI sharedUI;
-
-  /**
-   * The color used to draw the focus rectangle around the text and/or icon.
-   */
-  protected Color focusColor;
-
-  /**
-   * The background color for the button when it is pressed.
-   */
-  protected Color selectColor;
-
-  /**
-   * The color for disabled button labels.
-   */
-  protected Color disabledTextColor;
-
-  /**
-   * Returns a UI delegate for the specified component.
-   *
-   * @param c  the component (should be a subclass of {@link AbstractButton}).
-   *
-   * @return A new instance of <code>MetalButtonUI</code>.
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    if (sharedUI == null)
-      sharedUI = new MetalButtonUI();
-    return sharedUI;
-  }
-
-  /**
-   * Creates a new instance.
-   */
-  public MetalButtonUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns the color for the focus border.
-   *
-   * @return the color for the focus border
-   */
-  protected Color getFocusColor()
-  {
-    focusColor = UIManager.getColor(getPropertyPrefix() + "focus");
-    return focusColor;
-  }
-
-  /**
-   * Returns the color that indicates a selected button.
-   *
-   * @return the color that indicates a selected button
-   */
-  protected Color getSelectColor()
-  {
-    selectColor = UIManager.getColor(getPropertyPrefix() + "select");
-    return selectColor;
-  }
-
-  /**
-   * Returns the color for the text label of disabled buttons.
-   *
-   * @return the color for the text label of disabled buttons
-   */
-  protected Color getDisabledTextColor()
-  {
-    disabledTextColor = UIManager.getColor(getPropertyPrefix()
-                                           + "disabledText");
-    return disabledTextColor;
-  }
-
-  /**
-   * Installs the default settings for the specified button.
-   *
-   * @param button  the button.
-   *
-   * @see #uninstallDefaults(AbstractButton)
-   */
-  public void installDefaults(AbstractButton button)
-  {
-    // This is overridden to be public, for whatever reason.
-    super.installDefaults(button);
-  }
-
-  /**
-   * Removes the defaults added by {@link #installDefaults(AbstractButton)}.
-   */
-  public void uninstallDefaults(AbstractButton button)
-  {
-    // This is overridden to be public, for whatever reason.
-    super.uninstallDefaults(button);
-  }
-
-  /**
-   * Paints the background of the button to indicate that it is in the
-   * "pressed" state.
-   *
-   * @param g  the graphics context.
-   * @param b  the button.
-   */
-  protected void paintButtonPressed(Graphics g, AbstractButton b)
-  {
-    if (b.isContentAreaFilled())
-    {
-      g.setColor(getSelectColor());
-      g.fillRect(0, 0, b.getWidth(), b.getHeight());
-    }
-  }
-
-  /**
-   * Paints the focus rectangle around the button text and/or icon.
-   *
-   * @param g  the graphics context.
-   * @param b  the button.
-   * @param viewRect  the button bounds.
-   * @param textRect  the text bounds.
-   * @param iconRect  the icon bounds.
-   */
-  protected void paintFocus(Graphics g, AbstractButton b, Rectangle viewRect,
-          Rectangle textRect, Rectangle iconRect)
-  {
-    if (b.isEnabled() && b.hasFocus() && b.isFocusPainted())
-    {
-      Color savedColor = g.getColor();
-      g.setColor(getFocusColor());
-      Rectangle focusRect = iconRect.union(textRect);
-      g.drawRect(focusRect.x - 1, focusRect.y,
-                 focusRect.width + 1, focusRect.height);
-      g.setColor(savedColor);
-    }
-  }
-
-  /**
-   * Paints the button text.
-   *
-   * @param g  the graphics context.
-   * @param c  the button.
-   * @param textRect  the text bounds.
-   * @param text  the text to display.
-   */
-  protected void paintText(Graphics g, JComponent c, Rectangle textRect,
-          String text)
-  {
-    AbstractButton b = (AbstractButton) c;
-    Font f = b.getFont();
-    g.setFont(f);
-    FontMetrics fm = g.getFontMetrics(f);
-
-    if (b.isEnabled())
-      {
-        g.setColor(b.getForeground());
-        g.drawString(text, textRect.x, textRect.y + fm.getAscent());
-      }
-    else
-      {
-        g.setColor(getDisabledTextColor());
-        g.drawString(text, textRect.x, textRect.y + fm.getAscent());
-      }
-  }
-
-  /**
-   * If the property <code>Button.gradient</code> is set, then a gradient is
-   * painted as background, otherwise the normal superclass behaviour is
-   * called.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    AbstractButton b = (AbstractButton) c;
-    if ((b.getBackground() instanceof UIResource)
-        && b.isContentAreaFilled() && b.isEnabled())
-      {
-        ButtonModel m = b.getModel();
-        String uiKey = "Button.gradient";
-        if (! isToolbarButton(b))
-          {
-            if (! m.isArmed() && ! m.isPressed() && isDrawingGradient(uiKey))
-              {
-                MetalUtils.paintGradient(g, 0, 0, b.getWidth(), b.getHeight(),
-                                         SwingConstants.VERTICAL,
-                                         uiKey);
-                paint(g, c);
-                return;
-              }
-          }
-        else if (m.isRollover() && isDrawingGradient(uiKey))
-          {
-            MetalUtils.paintGradient(g, 0, 0, b.getWidth(), b.getHeight(),
-                                     SwingConstants.VERTICAL,
-                                     uiKey);
-            paint(g, c);
-            return;
-          }
-      }
-    // Fallback if we didn't have any of the two above cases.
-    super.update(g, c);
-  }
-
-  /**
-   * Returns <code>true</code> when the button is a toolbar button,
-   * <code>false</code> otherwise.
-   *
-   * @param b the button component to test
-   *
-   * @return <code>true</code> when the button is a toolbar button,
-   *         <code>false</code> otherwise
-   */
-  private boolean isToolbarButton(Component b)
-  {
-    Component parent = b.getParent();
-    return parent instanceof JToolBar;
-  }
-
-  /**
-   * Returns <code>true</code> if we should draw the button gradient,
-   * <code>false</code> otherwise.
-   *
-   * @param uiKey the UIManager key for the gradient
-   *
-   * @return <code>true</code> if we should draw the button gradient,
-   *         <code>false</code> otherwise
-   */
-  private boolean isDrawingGradient(String uiKey)
-  {
-    return (UIManager.get(uiKey) != null);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalCheckBoxIcon.java b/libjava/classpath/javax/swing/plaf/metal/MetalCheckBoxIcon.java
deleted file mode 100644
index 5e0ac06..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalCheckBoxIcon.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/* MetalCheckBoxIcon.java -- An icon for JCheckBoxes in the Metal L&F
-   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Component;
-import java.awt.Graphics;
-import java.io.Serializable;
-
-import javax.swing.AbstractButton;
-import javax.swing.Icon;
-import javax.swing.SwingConstants;
-import javax.swing.UIManager;
-import javax.swing.plaf.UIResource;
-
-/**
- * An {@link Icon} used by the {@link MetalCheckBoxUI} class.
- *
- * @author Roman Kennke (roman@kennke.org)
- */
-public class MetalCheckBoxIcon
-  implements Icon, UIResource, Serializable
-{
-
-  /** Used to paint the border of the icon. */
-  MetalBorders.ButtonBorder border;
-
-  /**
-   * Creates a new MetalCheckBoxIcon instance.
-   */
-  public MetalCheckBoxIcon()
-  {
-    border = new MetalBorders.ButtonBorder();
-  }
-
-  /**
-   * Draws the check in the CheckBox.
-   *
-   * @param c the component to draw on
-   * @param g the Graphics context to draw with
-   * @param x the X position
-   * @param y the Y position
-   */
-  protected void drawCheck(Component c, Graphics g, int x, int y)
-  {
-    if (c.isEnabled())
-      g.setColor(MetalLookAndFeel.getBlack());
-    else
-      g.setColor(MetalLookAndFeel.getControlDisabled());
-    g.drawLine(3 + x, 5 + y, 3 + x, 9 + y);
-    g.drawLine(4 + x, 5 + y, 4 + x, 9 + y);
-    g.drawLine(5 + x, 7 + y, 9 + x, 3 + y);
-    g.drawLine(5 + x, 8 + y, 9 + x, 4 + y);
-  }
-
-  /**
-   * Returns the size (both X and Y) of the checkbox icon.
-   *
-   * @return the size of the checkbox icon
-   */
-  protected int getControlSize()
-  {
-    return 13;
-  }
-
-  /**
-   * Returns the width of the icon in pixels.
-   *
-   * @return the width of the icon in pixels
-   */
-  public int getIconWidth()
-  {
-    return getControlSize();
-  }
-
-  /**
-   * Returns the height of the icon in pixels.
-   *
-   * @return the height of the icon in pixels
-   */
-  public int getIconHeight()
-  {
-    return getControlSize();
-  }
-
-  /**
-   * Paints the icon. This first paints the border of the CheckBox and
-   * if the CheckBox is selected it calls {@link #drawCheck} to draw
-   * the check.
-   *
-   * @param c the Component to draw on (gets casted to JCheckBox)
-   * @param g the Graphics context to draw with
-   * @param x the X position
-   * @param y the Y position
-   */
-  public void paintIcon(Component c, Graphics g, int x, int y)
-  {
-    if (UIManager.get("CheckBox.gradient") != null)
-      MetalUtils.paintGradient(g, x, y, getIconWidth(), getIconHeight(),
-                               SwingConstants.VERTICAL, "CheckBox.gradient");
-    border.paintBorder(c, g, x, y, getIconWidth(), getIconHeight());
-
-    AbstractButton b = (AbstractButton) c;
-    if (b.isSelected())
-      drawCheck(b, g, x, y);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalCheckBoxUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalCheckBoxUI.java
deleted file mode 100644
index 11979e1..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalCheckBoxUI.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/* MetalCheckBoxUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import javax.swing.JCheckBox;
-import javax.swing.JComponent;
-import javax.swing.UIDefaults;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * A UI delegate for the {@link JCheckBox} component.
- */
-public class MetalCheckBoxUI
-  extends MetalRadioButtonUI
-{
-
-  // FIXME: maybe replace by a Map of instances when this becomes stateful
-  /** The shared UI instance for JCheckBoxes. */
-  private static MetalCheckBoxUI instance;
-
-  /**
-   * Constructs a new instance of MetalCheckBoxUI.
-   */
-  public MetalCheckBoxUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a shared instance of <code>MetalCheckBoxUI</code>.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return A shared instance of <code>MetalCheckBoxUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    if (instance == null)
-      instance = new MetalCheckBoxUI();
-    return instance;
-  }
-
-  /**
-   * Returns the prefix for properties defined in the {@link UIDefaults} table.
-   *
-   * @return The property prefix (<code>"CheckBox."</code>).
-   */
-  public String getPropertyPrefix()
-  {
-    return "CheckBox.";
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalComboBoxButton.java b/libjava/classpath/javax/swing/plaf/metal/MetalComboBoxButton.java
deleted file mode 100644
index 8ec8bad..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalComboBoxButton.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/* MetalComboBoxButton.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Graphics;
-import java.awt.Insets;
-
-import javax.swing.CellRendererPane;
-import javax.swing.Icon;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JList;
-import javax.swing.ListCellRenderer;
-import javax.swing.UIManager;
-
-/**
- * A button used by the {@link MetalComboBoxUI} class.
- */
-public class MetalComboBoxButton
-  extends JButton
-{
-
-  /** A reference to the JComboBox that the button belongs to. */
-  protected JComboBox comboBox;
-
-  /** A reference to the JList. */
-  protected JList listBox;
-
-  /**
-   * Used for rendering the selected item.
-   */
-  protected CellRendererPane rendererPane;
-
-  /** The button icon. */
-  protected Icon comboIcon;
-
-  /** Display just the icon, or the icon plus the label. */
-  protected boolean iconOnly;
-
-  /**
-   * Creates a new button.
-   *
-   * @param cb  the combo that the button is used for (<code>null</code> not
-   *            permitted).
-   * @param i  the icon displayed on the button.
-   * @param pane  the rendering pane.
-   * @param list  the list.
-   */
-  public MetalComboBoxButton(JComboBox cb, Icon i, CellRendererPane pane,
-      JList list)
-  {
-    this(cb, i, cb.isEditable(), pane, list);
-  }
-
-  /**
-   * Creates a new button.
-   *
-   * @param cb  the combo that the button is used for (<code>null</code> not
-   *            permitted).
-   * @param i  the icon displayed on the button.
-   * @param onlyIcon  a flag that specifies whether the button displays only an
-   *                  icon, or text as well.
-   * @param pane  the rendering pane.
-   * @param list  the list.
-   */
-  public MetalComboBoxButton(JComboBox cb, Icon i, boolean onlyIcon,
-      CellRendererPane pane, JList list)
-  {
-    super();
-    if (cb == null)
-      throw new NullPointerException("Null 'cb' argument");
-    comboBox = cb;
-    comboIcon = i;
-    iconOnly = onlyIcon;
-    listBox = list;
-    rendererPane = pane;
-    setRolloverEnabled(false);
-    setEnabled(comboBox.isEnabled());
-    setFocusable(comboBox.isEnabled());
-  }
-
-  /**
-   * Returns the combo box that the button is used with.
-   *
-   * @return The combo box.
-   */
-  public final JComboBox getComboBox()
-  {
-    return comboBox;
-  }
-
-  /**
-   * Sets the combo box that the button is used with.
-   *
-   * @param cb  the combo box.
-   */
-  public final void setComboBox(JComboBox cb)
-  {
-    comboBox = cb;
-  }
-
-  /**
-   * Returns the icon displayed by the button.  By default, this will be an
-   * instance of {@link MetalComboBoxIcon}.
-   *
-   * @return The icon displayed by the button.
-   */
-  public final Icon getComboIcon()
-  {
-    return comboIcon;
-  }
-
-  /**
-   * Sets the icon displayed by the button.
-   *
-   * @param i  the icon.
-   */
-  public final void setComboIcon(Icon i)
-  {
-    comboIcon = i;
-  }
-
-  /**
-   * Returns a flag that controls whether the button displays an icon only,
-   * or text as well.
-   *
-   * @return A boolean.
-   */
-  public final boolean isIconOnly()
-  {
-    return iconOnly;
-  }
-
-  /**
-   * Sets the flag that controls whether the button displays an icon only,
-   * or text as well.
-   *
-   * @param isIconOnly  the flag.
-   */
-  public final void setIconOnly(boolean isIconOnly)
-  {
-    iconOnly = isIconOnly;
-  }
-
-  /**
-   * Returns <code>false</code>, to indicate that this component is not part
-   * of the focus traversal group.
-   *
-   * @return <code>false</code>
-   */
-  public boolean isFocusTraversable()
-  {
-    return false;
-  }
-
-  /**
-   * Enables or disables the button.
-   *
-   * @param enabled  the new status.
-   */
-  public void setEnabled(boolean enabled)
-  {
-    super.setEnabled(enabled);
-    if (enabled)
-      {
-        setBackground(comboBox.getBackground());
-        setForeground(comboBox.getForeground());
-      }
-    else
-      {
-        setBackground(UIManager.getColor("ComboBox.disabledBackground"));
-        setForeground(UIManager.getColor("ComboBox.disabledForeground"));
-      }
-  }
-
-  /**
-   * Paints the component.
-   *
-   * @param g  the graphics device.
-   */
-  public void paintComponent(Graphics g)
-  {
-    super.paintComponent(g);
-    Insets insets = this.getInsets();
-    int w = getWidth() - (insets.left + insets.right);
-    int h = getHeight() - (insets.top + insets.bottom);
-    if (h > 0 && w > 0)
-      {
-        int x1 = insets.left;
-        int y1 = insets.top;
-        int x2 = x1 + (w - 1);
-        int y2 = y1 + (h - 1);
-        int iconWidth = 0;
-        int iconX = x2;
-        if (comboIcon != null)
-          {
-            iconWidth = comboIcon.getIconWidth();
-            int iconHeight = comboIcon.getIconHeight();
-            int iconY;
-            if (iconOnly)
-              {
-                iconX = getWidth() / 2 - iconWidth / 2;
-                iconY = getHeight() / 2 - iconHeight / 2;
-              }
-            else
-              {
-                iconX = x1 + (w - 1) - iconWidth;
-                iconY = y1 + (y2 - y1) / 2 - iconHeight / 2;
-              }
-            comboIcon.paintIcon(this, g, iconX, iconY);
-            if (this.hasFocus())
-              {
-                g.setColor(MetalLookAndFeel.getFocusColor());
-                g.drawRect(x1 - 1, y1 - 1, w + 3, h + 1);
-              }
-          }
-        if (! iconOnly && comboBox != null)
-          {
-            ListCellRenderer renderer = comboBox.getRenderer();
-            boolean pressed = this.getModel().isPressed();
-            Component comp = renderer.getListCellRendererComponent(listBox,
-                comboBox.getSelectedItem(), -1, false, false);
-            comp.setFont(rendererPane.getFont());
-
-            if ((model.isArmed() && model.isPressed())
-                || (comboBox.isFocusOwner() && !comboBox.isPopupVisible()))
-              {
-                if (isOpaque())
-                  {
-                    comp.setBackground(UIManager.getColor("Button.select"));
-                    comp.setForeground(comboBox.getForeground());
-                  }
-              }
-            else if (! comboBox.isEnabled())
-              {
-                if (this.isOpaque())
-                  {
-                    Color dbg =
-                      UIManager.getColor("ComboBox.disabledBackground");
-                    comp.setBackground(dbg);
-                    Color dfg =
-                      UIManager.getColor("ComboBox.disabledForeground");
-                    comp.setForeground(dfg);
-                  }
-              }
-            else
-              {
-                comp.setForeground(comboBox.getForeground());
-                comp.setBackground(comboBox.getBackground());
-              }
-            int wr = w - (insets.right + iconWidth);
-            rendererPane.paintComponent(g, comp, this, x1, y1, wr, h);
-          }
-      }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalComboBoxEditor.java b/libjava/classpath/javax/swing/plaf/metal/MetalComboBoxEditor.java
deleted file mode 100644
index 8872d74..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalComboBoxEditor.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/* MetalComboBoxEditor.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-
-import javax.swing.JTextField;
-import javax.swing.border.AbstractBorder;
-import javax.swing.plaf.basic.BasicComboBoxEditor;
-import javax.swing.plaf.metal.MetalLookAndFeel;
-
-/**
- * An editor used by the {@link MetalComboBoxUI} class.
- */
-public class MetalComboBoxEditor extends BasicComboBoxEditor
-{
-  /**
-   * A border used for the {@link JTextField} component.
-   */
-  static class MetalComboBoxEditorBorder extends AbstractBorder
-  {
-    /**
-     * Creates a new border instance.
-     */
-    public MetalComboBoxEditorBorder()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Paints the border for the specified component.
-     *
-     * @param c  the component (ignored).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     * @param w  the width.
-     * @param h  the height.
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-        int h)
-    {
-      g.translate(x, y);
-      if (MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme)
-        {
-          g.setColor(MetalLookAndFeel.getControlDarkShadow());
-          g.drawLine(0, 0, w - 1, 0);
-          g.drawLine(0, 0, 0, h - 1);
-          g.drawLine(0, h - 1, w - 1, h - 1);
-          g.setColor(MetalLookAndFeel.getControlShadow());
-          g.drawLine(1, 1, w - 2, 1);
-          g.drawLine(1, 1, 1, h - 2);
-          g.drawLine(1, h - 2, w - 1, h - 2);
-          g.drawLine(w - 1, 1, w - 1, h - 2);
-        }
-      else
-        {
-          g.setColor(MetalLookAndFeel.getControlDarkShadow());
-          g.drawLine(0, 0, w - 1, 0);
-          g.drawLine(0, 0, 0, h - 2);
-          g.drawLine(0, h - 2, w - 1, h - 2);
-          g.setColor(MetalLookAndFeel.getControlHighlight());
-          g.drawLine(1, 1, w - 1, 1);
-          g.drawLine(1, 1, 1, h - 1);
-          g.drawLine(1, h - 1, w - 1, h - 1);
-          g.setColor(MetalLookAndFeel.getControl());
-          g.drawLine(1, h - 2, 1, h - 2);
-        }
-      g.translate(-x, -y);
-    }
-
-    /**
-     * Measures the width of this border.
-     *
-     * @param c the component whose border is to be measured.
-     *
-     * @return an Insets object whose <code>left</code>, <code>right</code>,
-     *         <code>top</code> and <code>bottom</code> fields indicate the
-     *         width of the border at the respective edge, which is zero
-     *         for the default implementation provided by AbstractButton.
-     *
-     * @see #getBorderInsets(java.awt.Component, java.awt.Insets)
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return editorBorderInsets;
-    }
-  }
-
-  /**
-   * A subclass of {@link MetalComboBoxEditor} that implements the
-   * {@link javax.swing.plaf.UIResource} interface.
-   */
-  public static class UIResource extends MetalComboBoxEditor
-    implements javax.swing.plaf.UIResource
-  {
-    /**
-     * Creates a new instance.
-     */
-    public UIResource()
-    {
-      // Nothing to do here.
-    }
-  }
-
-  /**
-   * A special textfield implementation for the MetalComboBoxEditor.
-   */
-  private class EditorTextField extends JTextField
-  {
-    EditorTextField(String s, int columns)
-    {
-      super(s, columns);
-    }
-
-    /**
-     * Tests seem to show that the textfield in MetalComboBoxEditors have
-     * a height + 4.
-     */
-    public Dimension getPreferredSize()
-    {
-      Dimension size = super.getPreferredSize();
-      size.height += 4;
-      return size;
-    }
-
-    /**
-     * Tests seem to show that the textfield in MetalComboBoxEditors have
-     * a height + 4.
-     */
-    public Dimension getMinimumSize()
-    {
-      Dimension size = super.getMinimumSize();
-      size.height += 4;
-      return size;
-    }
-  }
-
-  /** The editor's border insets. */
-  protected static Insets editorBorderInsets = new Insets(2, 2, 2, 0);
-
-  /**
-   * Creates a new editor.
-   */
-  public MetalComboBoxEditor()
-  {
-    editor = new EditorTextField("", 9);
-    editor.setBorder(new MetalComboBoxEditorBorder());
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalComboBoxIcon.java b/libjava/classpath/javax/swing/plaf/metal/MetalComboBoxIcon.java
deleted file mode 100644
index 45c8ead..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalComboBoxIcon.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/* MetalComboBoxIcon.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Graphics;
-import java.io.Serializable;
-
-import javax.swing.Icon;
-
-/**
- * An icon used by the {@link MetalComboBoxUI} class.
- */
-public class MetalComboBoxIcon implements Icon, Serializable
-{
-
-  /**
-   * Creates a new icon.
-   */
-  public MetalComboBoxIcon()
-  {
-    // nothing required.
-  }
-
-  /**
-   * Returns the icon width, which for this icon is 10 pixels.
-   *
-   * @return <code>10</code>.
-   */
-  public int getIconWidth()
-  {
-    return 10;
-  }
-
-  /**
-   * Returns the icon height, which for this icon is 5 pixels.
-   *
-   * @return <code>5</code>.
-   */
-  public int getIconHeight()
-  {
-    return 5;
-  }
-
-  /**
-   * Paints the icon at the location (x, y).
-   *
-   * @param c  the combo box (ignored here).
-   * @param g  the graphics device.
-   * @param x  the x coordinate.
-   * @param y  the y coordinate.
-   */
-  public void paintIcon(Component c, Graphics g, int x, int y)
-  {
-    Color savedColor = g.getColor();
-    if (c.isEnabled())
-      g.setColor(MetalLookAndFeel.getBlack());
-    else
-      g.setColor(MetalLookAndFeel.getControlDisabled());
-    for (int i = 0; i < 5; i++)
-      g.drawLine(x + i, y + i, x + 9 - i, y + i);
-    g.setColor(savedColor);
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalComboBoxUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalComboBoxUI.java
deleted file mode 100644
index b9019b7..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalComboBoxUI.java
+++ /dev/null
@@ -1,372 +0,0 @@
-/* MetalComboBoxUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.LayoutManager;
-import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.ComboBoxEditor;
-import javax.swing.Icon;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicComboBoxUI;
-import javax.swing.plaf.basic.BasicComboPopup;
-import javax.swing.plaf.basic.ComboPopup;
-
-
-/**
- * A UI delegate for the {@link JComboBox} component.
- */
-public class MetalComboBoxUI extends BasicComboBoxUI
-{
-  /**
-   * A layout manager that arranges the editor component (if active) and the
-   * button that make up the combo box.
-   */
-  public class MetalComboBoxLayoutManager
-    extends BasicComboBoxUI.ComboBoxLayoutManager
-  {
-    /**
-     * Creates a new instance of the layout manager.
-     */
-    public MetalComboBoxLayoutManager()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Arranges the editor (if visible) and button that comprise the combo
-     * box.
-     *
-     * @param parent  the parent.
-     */
-    public void layoutContainer(Container parent)
-    {
-      layoutComboBox(parent, this);
-    }
-
-    /**
-     * Calls the <code>layoutContainer(Container)</code> method in the super
-     * class.
-     *
-     * @param parent  the container.
-     */
-    public void superLayout(Container parent)
-    {
-      super.layoutContainer(parent);
-    }
-  }
-
-  /**
-   * A listener used to handle property changes in the {@link JComboBox}
-   * component, to ensure that the UI delegate accurately reflects the current
-   * state in the rendering onscreen.
-   */
-  public class MetalPropertyChangeListener
-    extends BasicComboBoxUI.PropertyChangeHandler
-  {
-    /**
-     * Creates a new listener.
-     */
-    public MetalPropertyChangeListener()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Handles a property change event, updating the UI components as
-     * appropriate.
-     *
-     * @param e  the event.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      super.propertyChange(e);
-      String name = e.getPropertyName();
-      if (name.equals("editable"))
-        editablePropertyChanged(e);
-      else if (name.equals("enabled"))
-        {
-          if (arrowButton instanceof MetalComboBoxButton)
-            {
-              arrowButton.setFocusable(!comboBox.isEditable()
-                                       && comboBox.isEnabled());
-              comboBox.repaint();
-            }
-        }
-      else if (name.equals("background"))
-        {
-          Color c = (Color) e.getNewValue();
-          arrowButton.setBackground(c);
-          listBox.setBackground(c);
-        }
-      else if (name.equals("foreground"))
-        {
-          Color c = (Color) e.getNewValue();
-          arrowButton.setForeground(c);
-          listBox.setForeground(c);
-        }
-    }
-  }
-
-  /**
-   * A popup menu for the combo-box.
-   *
-   * @see #createPopup()
-   *
-   * @deprecated 1.4
-   */
-  public class MetalComboPopup extends BasicComboPopup
-  {
-    /**
-     * Creates a new popup.
-     *
-     * @param cBox  the combo box.
-     */
-    public MetalComboPopup(JComboBox cBox)
-    {
-      super(cBox);
-    }
-
-    public void delegateFocus(MouseEvent e)
-    {
-      super.delegateFocus(e);
-    }
-  }
-
-  /**
-   * Constructs a new instance of MetalComboBoxUI.
-   */
-  public MetalComboBoxUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns an instance of MetalComboBoxUI.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return an instance of MetalComboBoxUI
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalComboBoxUI();
-  }
-
-  /**
-   * Creates an editor for the combo box.
-   *
-   * @return An editor.
-   */
-  protected ComboBoxEditor createEditor()
-  {
-    return new MetalComboBoxEditor.UIResource();
-  }
-
-  /**
-   * Creates a popup for the combo box.
-   *
-   * @return A popup.
-   */
-  protected ComboPopup createPopup()
-  {
-    return super.createPopup();
-  }
-
-  /**
-   * Creates a new button for use in rendering the JComboBox.
-   *
-   * @return A button.
-   */
-  protected JButton createArrowButton()
-  {
-    JButton button = new MetalComboBoxButton(comboBox, new MetalComboBoxIcon(),
-            currentValuePane, listBox);
-    button.setMargin(new Insets(0, 1, 1, 3));
-    return button;
-  }
-
-  /**
-   * Creates a new property change listener.
-   *
-   * @return A new property change listener.
-   */
-  public PropertyChangeListener createPropertyChangeListener()
-  {
-    return new MetalPropertyChangeListener();
-  }
-
-  public void paint(Graphics g, JComponent c)
-  {
-    // do nothing, the button and text field are painted elsewhere
-  }
-
-  /**
-   * Updates the button and text field to reflect a change in the 'editable'
-   * property.
-   *
-   * @param e  the event.
-   *
-   * @deprecated 1.4
-   */
-  protected void editablePropertyChanged(PropertyChangeEvent e)
-  {
-    if (arrowButton instanceof MetalComboBoxButton)
-      {
-        MetalComboBoxButton b = (MetalComboBoxButton) arrowButton;
-        b.setIconOnly(comboBox.isEditable());
-        b.setFocusable(!comboBox.isEditable() && comboBox.isEnabled());
-        comboBox.repaint();
-      }
-  }
-
-  /**
-   * Creates a new layout manager for the UI delegate.
-   *
-   * @return A new layout manager.
-   */
-  protected LayoutManager createLayoutManager()
-  {
-    return new MetalComboBoxLayoutManager();
-  }
-
-  /**
-   * Not used in Classpath.
-   *
-   * @deprecated 1.4
-   */
-  protected void removeListeners()
-  {
-    // no longer used in JDK 1.4
-  }
-
-  /**
-   * Returns the minimum size for the combo.
-   *
-   * @param c  the component
-   *
-   * @return The minimum size for the combo box.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    if (!isMinimumSizeDirty)
-      return new Dimension(cachedMinimumSize);
-
-    Dimension d;
-    if (!comboBox.isEditable() && arrowButton != null
-        && arrowButton instanceof MetalComboBoxButton)
-      {
-        MetalComboBoxButton b = (MetalComboBoxButton) arrowButton;
-        d = getDisplaySize();
-        Insets arrowInsets = b.getInsets();
-        Insets comboInsets = comboBox.getInsets();
-        Icon icon = b.getComboIcon();
-        d.width += comboInsets.left + comboInsets.right;
-        d.width += arrowInsets.left + arrowInsets.right;
-        d.width += arrowInsets.right + icon.getIconWidth();
-        d.height += comboInsets.top + comboInsets.bottom;
-        d.height += arrowInsets.top + arrowInsets.bottom;
-      }
-    else if (comboBox.isEditable() && arrowButton != null && editor != null)
-      {
-        d = super.getMinimumSize(c);
-        Insets arrowMargin = arrowButton.getMargin();
-        d.height += arrowMargin.top + arrowMargin.bottom;
-        d.width += arrowMargin.left + arrowMargin.right;
-      }
-    else
-      {
-        d = super.getMinimumSize(c);
-      }
-    cachedMinimumSize.setSize(d.width, d.height);
-    isMinimumSizeDirty = false;
-    return new Dimension(cachedMinimumSize);
-  }
-
-  /**
-   * Configures the editor for this combo box.
-   */
-  public void configureEditor()
-  {
-    super.configureEditor();
-    if (popupKeyListener != null)
-      editor.removeKeyListener(popupKeyListener);
-    if (focusListener != null)
-      editor.addFocusListener(focusListener);
-  }
-
-  /**
-   * Unconfigures the editor for this combo box.
-   */
-  public void unconfigureEditor()
-  {
-    super.unconfigureEditor();
-    if (focusListener != null)
-      editor.removeFocusListener(focusListener);
-  }
-
-  /**
-   * Lays out the ComboBox
-   */
-  public void layoutComboBox(Container parent,
-                             MetalComboBoxUI.MetalComboBoxLayoutManager manager)
-  {
-    if (comboBox.isEditable())
-      manager.superLayout(parent);
-    else if (arrowButton != null)
-      {
-        Insets comboInsets = comboBox.getInsets();
-        int width = comboBox.getWidth();
-        int height = comboBox.getHeight();
-        arrowButton.setBounds(comboInsets.left, comboInsets.top,
-                              width - (comboInsets.left + comboInsets.right),
-                              height - (comboInsets.top + comboInsets.bottom));
-      }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalDesktopIconUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalDesktopIconUI.java
deleted file mode 100644
index 0c1163a..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalDesktopIconUI.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/* MetalDesktopIconUI.java
-   Copyright (C) 2005, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import javax.swing.JComponent;
-import javax.swing.JInternalFrame;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicDesktopIconUI;
-
-/**
- * A UI delegate for the {@link JInternalFrame.JDesktopIcon} component.
- */
-public class MetalDesktopIconUI
-  extends BasicDesktopIconUI
-{
-
-  /**
-   * Constructs a new instance of <code>MetalDesktopIconUI</code>.
-   */
-  public MetalDesktopIconUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a new <code>MetalDesktopIconUI</code> instance.
-   *
-   * @param component  the component (ignored).
-   *
-   * @return A new <code>MetalDesktopIconUI</code> instance.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalDesktopIconUI();
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalFileChooserUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalFileChooserUI.java
deleted file mode 100644
index df49edf..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalFileChooserUI.java
+++ /dev/null
@@ -1,2120 +0,0 @@
-/* MetalFileChooserUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.GridLayout;
-import java.awt.Insets;
-import java.awt.LayoutManager;
-import java.awt.Rectangle;
-import java.awt.Window;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.io.File;
-import java.text.DateFormat;
-import java.text.NumberFormat;
-import java.util.Date;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.AbstractListModel;
-import javax.swing.ActionMap;
-import javax.swing.BorderFactory;
-import javax.swing.ButtonGroup;
-import javax.swing.ComboBoxModel;
-import javax.swing.DefaultListCellRenderer;
-import javax.swing.Icon;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JDialog;
-import javax.swing.JFileChooser;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
-import javax.swing.JTextField;
-import javax.swing.JToggleButton;
-import javax.swing.ListModel;
-import javax.swing.ListSelectionModel;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.filechooser.FileFilter;
-import javax.swing.filechooser.FileSystemView;
-import javax.swing.filechooser.FileView;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicFileChooserUI;
-import javax.swing.table.DefaultTableCellRenderer;
-import javax.swing.table.DefaultTableModel;
-
-
-/**
- * A UI delegate for the {@link JFileChooser} component.  This class is only
- * partially implemented and is not usable yet.
- */
-public class MetalFileChooserUI
-  extends BasicFileChooserUI
-{
-
-  /**
-   * A renderer for the files and directories in the file chooser table.
-   */
-  class TableFileRenderer
-    extends DefaultTableCellRenderer
-  {
-
-    /**
-     * Creates a new renderer.
-     */
-    public TableFileRenderer()
-    {
-      super();
-    }
-
-    /**
-     * Returns a component that can render the specified value.
-     *
-     * @param table  the table
-     * @param value  the string value of the cell
-     * @param isSelected  is the item selected?
-     * @param hasFocus  does the item have the focus?
-     * @param row  the row
-     * @param column  the column
-     *
-     * @return The renderer.
-     */
-    public Component getTableCellRendererComponent(JTable table, Object value,
-        boolean isSelected, boolean hasFocus, int row, int column)
-    {
-      if (column == 0)
-        {
-          FileView v = getFileView(getFileChooser());
-          ListModel lm = fileList.getModel();
-          if (row < lm.getSize())
-            setIcon(v.getIcon((File) lm.getElementAt(row)));
-        }
-      else
-        setIcon(null);
-
-      setText(value.toString());
-      setOpaque(true);
-      setEnabled(table.isEnabled());
-      setFont(fileList.getFont());
-
-      if (startEditing && column == 0 || !isSelected)
-        {
-          setBackground(table.getBackground());
-          setForeground(table.getForeground());
-        }
-      else
-        {
-          setBackground(table.getSelectionBackground());
-          setForeground(table.getSelectionForeground());
-        }
-
-      if (hasFocus)
-        setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
-      else
-        setBorder(noFocusBorder);
-
-      return this;
-    }
-  }
-
-  /**
-   * ActionListener for the list view.
-   */
-  class ListViewActionListener implements ActionListener
-  {
-
-    /**
-     * This method is invoked when an action occurs.
-     *
-     * @param e -
-     *          the <code>ActionEvent</code> that occurred
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      if (!listView)
-        {
-          int[] index = fileTable.getSelectedRows();
-          listView = true;
-          JFileChooser fc = getFileChooser();
-          fc.remove(fileTablePanel);
-          createList(fc);
-
-          fileList.getSelectionModel().clearSelection();
-          if (index.length > 0)
-              for (int i = 0; i < index.length; i++)
-                fileList.getSelectionModel().addSelectionInterval(index[i], index[i]);
-
-          fc.add(fileListPanel, BorderLayout.CENTER);
-          fc.revalidate();
-          fc.repaint();
-        }
-    }
-  }
-
-  /**
-   * ActionListener for the details view.
-   */
-  class DetailViewActionListener implements ActionListener
-  {
-
-    /**
-     * This method is invoked when an action occurs.
-     *
-     * @param e -
-     *          the <code>ActionEvent</code> that occurred
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      if (listView)
-        {
-          int[] index = fileList.getSelectedIndices();
-          JFileChooser fc = getFileChooser();
-          listView = false;
-          fc.remove(fileListPanel);
-
-          if (fileTable == null)
-            createDetailsView(fc);
-          else
-            updateTable();
-
-          fileTable.getSelectionModel().clearSelection();
-          if (index.length > 0)
-            {
-              for (int i = 0; i < index.length; i++)
-                fileTable.getSelectionModel().addSelectionInterval(index[i], index[i]);
-            }
-
-          fc.add(fileTablePanel, BorderLayout.CENTER);
-          fc.revalidate();
-          fc.repaint();
-        }
-    }
-  }
-
-  /**
-   * A property change listener.
-   */
-  class MetalFileChooserPropertyChangeListener
-    implements PropertyChangeListener
-  {
-    /**
-     * Default constructor.
-     */
-    public MetalFileChooserPropertyChangeListener()
-    {
-    }
-
-    /**
-     * Handles a property change event.
-     *
-     * @param e  the event.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      JFileChooser filechooser = getFileChooser();
-
-      String n = e.getPropertyName();
-      if (n.equals(JFileChooser.MULTI_SELECTION_ENABLED_CHANGED_PROPERTY))
-        {
-          int mode = -1;
-          if (filechooser.isMultiSelectionEnabled())
-            mode = ListSelectionModel.MULTIPLE_INTERVAL_SELECTION;
-          else
-            mode = ListSelectionModel.SINGLE_SELECTION;
-
-          if (listView)
-            fileList.setSelectionMode(mode);
-          else
-            fileTable.setSelectionMode(mode);
-        }
-      else if (n.equals(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY))
-        {
-          File file = filechooser.getSelectedFile();
-
-          if (file != null
-              && filechooser.getDialogType() == JFileChooser.SAVE_DIALOG)
-            {
-              if (file.isDirectory() && filechooser.isTraversable(file))
-                {
-                  directoryLabel = look;
-                  dirLabel.setText(directoryLabel);
-                  filechooser.setApproveButtonText(openButtonText);
-                  filechooser.setApproveButtonToolTipText(openButtonToolTipText);
-                }
-              else if (file.isFile())
-                {
-                  directoryLabel = save;
-                  dirLabel.setText(directoryLabel);
-                  filechooser.setApproveButtonText(saveButtonText);
-                  filechooser.setApproveButtonToolTipText(saveButtonToolTipText);
-                }
-            }
-
-          if (file == null)
-            setFileName(null);
-          else if (file.isFile() || filechooser.getFileSelectionMode()
-                   != JFileChooser.FILES_ONLY)
-            setFileName(file.getName());
-          int index = -1;
-          index = getModel().indexOf(file);
-          if (index >= 0)
-            {
-              if (listView)
-                {
-                  fileList.setSelectedIndex(index);
-                  fileList.ensureIndexIsVisible(index);
-                  fileList.revalidate();
-                  fileList.repaint();
-                }
-              else
-                {
-                  fileTable.getSelectionModel().addSelectionInterval(index, index);
-                  fileTable.scrollRectToVisible(fileTable.getCellRect(index, 0, true));
-                  fileTable.revalidate();
-                  fileTable.repaint();
-                }
-            }
-        }
-
-      else if (n.equals(JFileChooser.DIRECTORY_CHANGED_PROPERTY))
-        {
-          if (listView)
-            {
-              fileList.clearSelection();
-              fileList.revalidate();
-              fileList.repaint();
-            }
-          else
-            {
-              fileTable.clearSelection();
-              fileTable.revalidate();
-              fileTable.repaint();
-            }
-
-          setDirectorySelected(false);
-          File currentDirectory = filechooser.getCurrentDirectory();
-          setDirectory(currentDirectory);
-          boolean hasParent = currentDirectory.getParentFile() != null;
-          getChangeToParentDirectoryAction().setEnabled(hasParent);
-        }
-
-      else if (n.equals(JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY))
-        {
-          filterModel.propertyChange(e);
-        }
-      else if (n.equals(JFileChooser.FILE_FILTER_CHANGED_PROPERTY))
-        {
-          filterModel.propertyChange(e);
-        }
-      else if (n.equals(JFileChooser.DIALOG_TYPE_CHANGED_PROPERTY)
-                 || n.equals(JFileChooser.DIALOG_TITLE_CHANGED_PROPERTY))
-        {
-          Window owner = SwingUtilities.windowForComponent(filechooser);
-          if (owner instanceof JDialog)
-            ((JDialog) owner).setTitle(getDialogTitle(filechooser));
-          approveButton.setText(getApproveButtonText(filechooser));
-          approveButton.setToolTipText(
-                  getApproveButtonToolTipText(filechooser));
-          approveButton.setMnemonic(getApproveButtonMnemonic(filechooser));
-        }
-
-      else if (n.equals(JFileChooser.APPROVE_BUTTON_TEXT_CHANGED_PROPERTY))
-        approveButton.setText(getApproveButtonText(filechooser));
-
-      else if (n.equals(
-              JFileChooser.APPROVE_BUTTON_TOOL_TIP_TEXT_CHANGED_PROPERTY))
-        approveButton.setToolTipText(getApproveButtonToolTipText(filechooser));
-
-      else if (n.equals(JFileChooser.APPROVE_BUTTON_MNEMONIC_CHANGED_PROPERTY))
-        approveButton.setMnemonic(getApproveButtonMnemonic(filechooser));
-
-      else if (n.equals(
-              JFileChooser.CONTROL_BUTTONS_ARE_SHOWN_CHANGED_PROPERTY))
-        {
-          if (filechooser.getControlButtonsAreShown())
-            {
-              topPanel.add(controls, BorderLayout.EAST);
-            }
-          else
-            topPanel.remove(controls);
-          topPanel.revalidate();
-          topPanel.repaint();
-          topPanel.doLayout();
-        }
-
-      else if (n.equals(
-              JFileChooser.ACCEPT_ALL_FILE_FILTER_USED_CHANGED_PROPERTY))
-        {
-          if (filechooser.isAcceptAllFileFilterUsed())
-            filechooser.addChoosableFileFilter(
-                    getAcceptAllFileFilter(filechooser));
-          else
-            filechooser.removeChoosableFileFilter(
-                    getAcceptAllFileFilter(filechooser));
-        }
-
-      else if (n.equals(JFileChooser.ACCESSORY_CHANGED_PROPERTY))
-        {
-          JComponent old = (JComponent) e.getOldValue();
-          if (old != null)
-            getAccessoryPanel().remove(old);
-          JComponent newval = (JComponent) e.getNewValue();
-          if (newval != null)
-            getAccessoryPanel().add(newval);
-        }
-
-      if (n.equals(JFileChooser.DIRECTORY_CHANGED_PROPERTY)
-          || n.equals(JFileChooser.FILE_FILTER_CHANGED_PROPERTY)
-          || n.equals(JFileChooser.FILE_HIDING_CHANGED_PROPERTY))
-        {
-          // Remove editing component
-          if (fileTable != null)
-            fileTable.removeAll();
-          if (fileList != null)
-            fileList.removeAll();
-          startEditing = false;
-
-          // Set text on button back to original.
-          if (filechooser.getDialogType() == JFileChooser.SAVE_DIALOG)
-            {
-              directoryLabel = save;
-              dirLabel.setText(directoryLabel);
-              filechooser.setApproveButtonText(saveButtonText);
-              filechooser.setApproveButtonToolTipText(saveButtonToolTipText);
-            }
-
-          rescanCurrentDirectory(filechooser);
-        }
-
-      filechooser.revalidate();
-      filechooser.repaint();
-    }
-  }
-
-  /**
-   * A combo box model containing the selected directory and all its parent
-   * directories.
-   */
-  protected class DirectoryComboBoxModel
-    extends AbstractListModel
-    implements ComboBoxModel
-  {
-    /** Storage for the items in the model. */
-    private List items;
-
-    /** The index of the selected item. */
-    private int selectedIndex;
-
-    /**
-     * Creates a new model.
-     */
-    public DirectoryComboBoxModel()
-    {
-      items = new java.util.ArrayList();
-      selectedIndex = -1;
-    }
-
-    /**
-     * Returns the number of items in the model.
-     *
-     * @return The number of items in the model.
-     */
-    public int getSize()
-    {
-      return items.size();
-    }
-
-    /**
-     * Returns the item at the specified index.
-     *
-     * @param index  the item index.
-     *
-     * @return The item.
-     */
-    public Object getElementAt(int index)
-    {
-      return items.get(index);
-    }
-
-    /**
-     * Returns the depth of the item at the given <code>index</code>.
-     *
-     * @param index  the item index.
-     *
-     * @return The depth.
-     */
-    public int getDepth(int index)
-    {
-      return Math.max(index, 0);
-    }
-
-    /**
-     * Returns the selected item, or <code>null</code> if no item is selected.
-     *
-     * @return The selected item, or <code>null</code>.
-     */
-    public Object getSelectedItem()
-    {
-      if (selectedIndex >= 0)
-        return items.get(selectedIndex);
-      else
-        return null;
-    }
-
-    /**
-     * Sets the selected item.  This clears all the directories from the
-     * existing list, and repopulates it with the new selected directory
-     * and all its parent directories.
-     *
-     * @param selectedDirectory  the selected directory.
-     */
-    public void setSelectedItem(Object selectedDirectory)
-    {
-      items.clear();
-      FileSystemView fsv = getFileChooser().getFileSystemView();
-      File parent = (File) selectedDirectory;
-      while (parent != null)
-        {
-          items.add(0, parent);
-          parent = fsv.getParentDirectory(parent);
-        }
-      selectedIndex = items.indexOf(selectedDirectory);
-      fireContentsChanged(this, 0, items.size() - 1);
-    }
-
-  }
-
-  /**
-   * Handles changes to the selection in the directory combo box.
-   */
-  protected class DirectoryComboBoxAction
-    extends AbstractAction
-  {
-    /**
-     * Creates a new action.
-     */
-    protected DirectoryComboBoxAction()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Handles the action event.
-     *
-     * @param e  the event.
-     */
-    public void actionPerformed(ActionEvent e)
-    {
-      JFileChooser fc = getFileChooser();
-      fc.setCurrentDirectory((File) directoryModel.getSelectedItem());
-    }
-  }
-
-  /**
-   * A renderer for the items in the directory combo box.
-   */
-  class DirectoryComboBoxRenderer
-    extends DefaultListCellRenderer
-  {
-    /**
-     * This is the icon that is displayed in the combobox. This wraps
-     * the standard icon and adds indendation.
-     */
-    private IndentIcon indentIcon;
-
-    /**
-     * Creates a new renderer.
-     */
-    public DirectoryComboBoxRenderer(JFileChooser fc)
-    {
-      indentIcon = new IndentIcon();
-    }
-
-    /**
-     * Returns a component that can be used to paint the given value within
-     * the list.
-     *
-     * @param list  the list.
-     * @param value  the value (a {@link File}).
-     * @param index  the item index.
-     * @param isSelected  is the item selected?
-     * @param cellHasFocus  does the list cell have focus?
-     *
-     * @return The list cell renderer.
-     */
-    public Component getListCellRendererComponent(JList list, Object value,
-                                                  int index,
-                                                  boolean isSelected,
-                                                  boolean cellHasFocus)
-    {
-      super.getListCellRendererComponent(list, value, index, isSelected,
-                                         cellHasFocus);
-      File file = (File) value;
-      setText(getFileChooser().getName(file));
-
-      // Install indented icon.
-      Icon icon = getFileChooser().getIcon(file);
-      indentIcon.setIcon(icon);
-      int depth = directoryModel.getDepth(index);
-      indentIcon.setDepth(depth);
-      setIcon(indentIcon);
-
-      return this;
-    }
-  }
-
-  /**
-   * An icon that wraps another icon and adds indentation.
-   */
-  class IndentIcon
-    implements Icon
-  {
-
-    /**
-     * The indentation level.
-     */
-    private static final int INDENT = 10;
-
-    /**
-     * The wrapped icon.
-     */
-    private Icon icon;
-
-    /**
-     * The current depth.
-     */
-    private int depth;
-
-    /**
-     * Sets the icon to be wrapped.
-     *
-     * @param i the icon
-     */
-    void setIcon(Icon i)
-    {
-      icon = i;
-    }
-
-    /**
-     * Sets the indentation depth.
-     *
-     * @param d the depth to set
-     */
-    void setDepth(int d)
-    {
-      depth = d;
-    }
-
-    public int getIconHeight()
-    {
-      return icon.getIconHeight();
-    }
-
-    public int getIconWidth()
-    {
-      return icon.getIconWidth() + depth * INDENT;
-    }
-
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      icon.paintIcon(c, g, x + depth * INDENT, y);
-    }
-
-  }
-
-  /**
-   * A renderer for the files and directories in the file chooser.
-   */
-  protected class FileRenderer
-    extends DefaultListCellRenderer
-  {
-
-    /**
-     * Creates a new renderer.
-     */
-    protected FileRenderer()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns a component that can render the specified value.
-     *
-     * @param list  the list.
-     * @param value  the value (a {@link File}).
-     * @param index  the index.
-     * @param isSelected  is the item selected?
-     * @param cellHasFocus  does the item have the focus?
-     *
-     * @return The renderer.
-     */
-    public Component getListCellRendererComponent(JList list, Object value,
-        int index, boolean isSelected, boolean cellHasFocus)
-    {
-      FileView v = getFileView(getFileChooser());
-      File f = (File) value;
-      if (f != null)
-        {
-          setText(v.getName(f));
-          setIcon(v.getIcon(f));
-        }
-      else
-        {
-          setText("");
-          setIcon(null);
-        }
-      setOpaque(true);
-      if (isSelected)
-        {
-          setBackground(list.getSelectionBackground());
-          setForeground(list.getSelectionForeground());
-        }
-      else
-        {
-          setBackground(list.getBackground());
-          setForeground(list.getForeground());
-        }
-
-      setEnabled(list.isEnabled());
-      setFont(list.getFont());
-
-      if (cellHasFocus)
-        setBorder(UIManager.getBorder("List.focusCellHighlightBorder"));
-      else
-        setBorder(noFocusBorder);
-      return this;
-    }
-  }
-
-  /**
-   * A combo box model for the file selection filters.
-   */
-  protected class FilterComboBoxModel
-    extends AbstractListModel
-    implements ComboBoxModel, PropertyChangeListener
-  {
-
-    /** Storage for the filters in the model. */
-    protected FileFilter[] filters;
-
-    /** The index of the selected file filter. */
-    private Object selected;
-
-    /**
-     * Creates a new model.
-     */
-    protected FilterComboBoxModel()
-    {
-      filters = new FileFilter[1];
-      filters[0] = getAcceptAllFileFilter(getFileChooser());
-      selected = filters[0];
-    }
-
-    /**
-     * Handles property changes.
-     *
-     * @param e  the property change event.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      if (e.getPropertyName().equals(JFileChooser.FILE_FILTER_CHANGED_PROPERTY))
-        {
-          JFileChooser fc = getFileChooser();
-          FileFilter[] choosableFilters = fc.getChoosableFileFilters();
-          filters = choosableFilters;
-          fireContentsChanged(this, 0, filters.length);
-          selected = e.getNewValue();
-          fireContentsChanged(this, -1, -1);
-        }
-      else if (e.getPropertyName().equals(
-              JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY))
-        {
-          // repopulate list
-          JFileChooser fc = getFileChooser();
-          FileFilter[] choosableFilters = fc.getChoosableFileFilters();
-          filters = choosableFilters;
-          fireContentsChanged(this, 0, filters.length);
-        }
-    }
-
-    /**
-     * Sets the selected filter.
-     *
-     * @param filter  the filter (<code>null</code> ignored).
-     */
-    public void setSelectedItem(Object filter)
-    {
-      if (filter != null)
-      {
-          selected = filter;
-          fireContentsChanged(this, -1, -1);
-      }
-    }
-
-    /**
-     * Returns the selected file filter.
-     *
-     * @return The selected file filter.
-     */
-    public Object getSelectedItem()
-    {
-      return selected;
-    }
-
-    /**
-     * Returns the number of items in the model.
-     *
-     * @return The number of items in the model.
-     */
-    public int getSize()
-    {
-      return filters.length;
-    }
-
-    /**
-     * Returns the item at the specified index.
-     *
-     * @param index  the item index.
-     *
-     * @return The item at the specified index.
-     */
-    public Object getElementAt(int index)
-    {
-      return filters[index];
-    }
-
-  }
-
-  /**
-   * A renderer for the items in the file filter combo box.
-   */
-  public class FilterComboBoxRenderer
-    extends DefaultListCellRenderer
-  {
-    /**
-     * Creates a new renderer.
-     */
-    public FilterComboBoxRenderer()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns a component that can be used to paint the given value within
-     * the list.
-     *
-     * @param list  the list.
-     * @param value  the value (a {@link FileFilter}).
-     * @param index  the item index.
-     * @param isSelected  is the item selected?
-     * @param cellHasFocus  does the list cell have focus?
-     *
-     * @return This component as the renderer.
-     */
-    public Component getListCellRendererComponent(JList list, Object value,
-        int index, boolean isSelected, boolean cellHasFocus)
-    {
-      super.getListCellRendererComponent(list, value, index, isSelected,
-                                         cellHasFocus);
-      FileFilter filter = (FileFilter) value;
-      setText(filter.getDescription());
-      return this;
-    }
-  }
-
-  /**
-   * A listener for selection events in the file list.
-   *
-   * @see #createListSelectionListener(JFileChooser)
-   */
-  class MetalFileChooserSelectionListener
-    implements ListSelectionListener
-  {
-    /**
-     * Creates a new <code>SelectionListener</code> object.
-     */
-    protected MetalFileChooserSelectionListener()
-    {
-      // Do nothing here.
-    }
-
-    /**
-     * Makes changes to different properties when
-     * a value has changed in the filechooser's selection.
-     *
-     * @param e - the list selection event that occured.
-     */
-    public void valueChanged(ListSelectionEvent e)
-    {
-      File f = (File) fileList.getSelectedValue();
-      if (f == null)
-        return;
-      JFileChooser filechooser = getFileChooser();
-      if (! filechooser.isTraversable(f))
-        filechooser.setSelectedFile(f);
-      else
-        filechooser.setSelectedFile(null);
-    }
-  }
-
-  /**
-   * A mouse listener for the {@link JFileChooser}.
-   * This listener is used for editing filenames.
-   */
-  protected class SingleClickListener
-    extends MouseAdapter
-  {
-
-    /** Stores instance of the list */
-    JList list;
-
-    /**
-     * Stores the current file that is being edited.
-     * It is null if nothing is currently being edited.
-     */
-    File editFile;
-
-    /** The current file chooser. */
-    JFileChooser fc;
-
-    /** The last file selected. */
-    Object lastSelected;
-
-    /** The textfield used for editing. */
-    JTextField editField;
-
-    /**
-     * Creates a new listener.
-     *
-     * @param list  the directory/file list.
-     */
-    public SingleClickListener(JList list)
-    {
-      this.list = list;
-      editFile = null;
-      fc = getFileChooser();
-      lastSelected = null;
-      startEditing = false;
-    }
-
-    /**
-     * Receives notification of a mouse click event.
-     *
-     * @param e  the event.
-     */
-    public void mouseClicked(MouseEvent e)
-    {
-      if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON1)
-        {
-          int index = list.locationToIndex(e.getPoint());
-          File[] sf = fc.getSelectedFiles();
-          if ((!fc.isMultiSelectionEnabled() || (sf != null && sf.length <= 1))
-              && index >= 0 && !startEditing && list.isSelectedIndex(index))
-            {
-              Object tmp = list.getModel().getElementAt(index);
-              if (lastSelected != null && lastSelected.equals(tmp))
-                editFile(index);
-              lastSelected = tmp;
-            }
-          else
-              completeEditing();
-        }
-      else
-        completeEditing();
-    }
-
-    /**
-     * Sets up the text editor for the current file.
-     *
-     * @param index -
-     *          the current index of the item in the list to be edited.
-     */
-    void editFile(int index)
-    {
-      Rectangle bounds = list.getCellBounds(index, index);
-      list.scrollRectToVisible(bounds);
-      editFile = (File) list.getModel().getElementAt(index);
-      if (editFile.canWrite())
-        {
-          startEditing = true;
-          editField = new JTextField(editFile.getName());
-          editField.addActionListener(new EditingActionListener());
-
-          Icon icon = getFileView(fc).getIcon(editFile);
-          if (icon != null)
-            {
-              int padding = icon.getIconWidth() + 4;
-              bounds.x += padding;
-              bounds.width -= padding;
-            }
-          editField.setBounds(bounds);
-
-          list.add(editField);
-
-          editField.requestFocus();
-          editField.selectAll();
-        }
-      else
-        completeEditing();
-      list.repaint();
-    }
-
-    /**
-     * Completes the editing.
-     */
-    void completeEditing()
-    {
-      if (editField != null && editFile != null)
-        {
-          String text = editField.getText();
-          if (text != null && text != "" && !text.equals(fc.getName(editFile)))
-            {
-              File f = fc.getFileSystemView().
-                createFileObject(fc.getCurrentDirectory(), text);
-              if ( editFile.renameTo(f) )
-                rescanCurrentDirectory(fc);
-            }
-          list.remove(editField);
-        }
-      startEditing = false;
-      editFile = null;
-      lastSelected = null;
-      editField = null;
-      list.repaint();
-    }
-
-    /**
-     * ActionListener for the editing text field.
-     */
-    class EditingActionListener implements ActionListener
-    {
-
-      /**
-       * This method is invoked when an action occurs.
-       *
-       * @param e -
-       *          the <code>ActionEvent</code> that occurred
-       */
-      public void actionPerformed(ActionEvent e)
-      {
-        if (editField != null)
-          completeEditing();
-      }
-    }
-  }
-
-  /**
-   * A mouse listener for the {@link JFileChooser}.
-   * This listener is used for the table
-   */
-  private class TableClickListener extends MouseAdapter
-  {
-
-    /** Stores instance of the table */
-    JTable table;
-
-    /** Stores instance of the file chooser */
-    JFileChooser fc;
-
-    /** The last selected file. */
-    Object lastSelected;
-
-    /**
-     * Stores the current file that is being edited.
-     * It is null if nothing is currently being edited.
-     */
-    File editFile;
-
-    /** The textfield used for editing. */
-    JTextField editField;
-
-    /**
-     * Creates a new listener.
-     *
-     * @param table the directory/file table
-     * @param fc the JFileChooser
-     */
-    public TableClickListener(JTable table, JFileChooser fc)
-    {
-      this.table = table;
-      this.fc = fc;
-      lastSelected = fileList.getSelectedValue();
-      setDirectorySelected(false);
-      startEditing = false;
-      editFile = null;
-      editField = null;
-    }
-
-    /**
-     * Receives notification of a mouse click event.
-     *
-     * @param e the event.
-     */
-    public void mouseClicked(MouseEvent e)
-    {
-      int row = table.getSelectedRow();
-      Object selVal = fileList.getModel().getElementAt(row);
-      if (selVal == null)
-        return;
-      FileSystemView fsv = fc.getFileSystemView();
-      if (e.getClickCount() == 1 &&
-          selVal.equals(lastSelected) &&
-          e.getButton() == MouseEvent.BUTTON1)
-        {
-          File[] sf = fc.getSelectedFiles();
-          if ((!fc.isMultiSelectionEnabled() || (sf != null && sf.length <= 1))
-              && !startEditing)
-            {
-              editFile = (File) selVal;
-              editFile(row);
-            }
-        }
-      else if (e.getClickCount() >= 2 &&
-          selVal.equals(lastSelected))
-        {
-          if (startEditing)
-            completeEditing();
-          File f = fsv.createFileObject(lastSelected.toString());
-          if (fc.isTraversable(f))
-            {
-              fc.setCurrentDirectory(f);
-              fc.rescanCurrentDirectory();
-            }
-          else
-            {
-              fc.setSelectedFile(f);
-              fc.approveSelection();
-              closeDialog();
-            }
-        }
-      else
-        {
-          if (startEditing)
-            completeEditing();
-          String path = selVal.toString();
-          File f = fsv.createFileObject(path);
-          fc.setSelectedFile(f);
-          if (fc.isTraversable(f))
-            {
-              setDirectorySelected(true);
-              setDirectory(f);
-            }
-          else
-            {
-              setDirectorySelected(false);
-              setDirectory(null);
-            }
-          lastSelected = selVal;
-          if (f.isFile())
-            setFileName(path.substring(path.lastIndexOf("/") + 1));
-          else if (fc.getFileSelectionMode() != JFileChooser.FILES_ONLY)
-            setFileName(path);
-        }
-      fileTable.repaint();
-    }
-
-    /**
-     * Sets up the text editor for the current file.
-     *
-     * @param row -
-     *          the current row of the item in the list to be edited.
-     */
-    void editFile(int row)
-    {
-      Rectangle bounds = table.getCellRect(row, 0, true);
-      table.scrollRectToVisible(bounds);
-      if (editFile.canWrite())
-        {
-          startEditing = true;
-          editField = new JTextField(editFile.getName());
-          editField.addActionListener(new EditingActionListener());
-
-          // Need to adjust y pos
-          bounds.y = row * table.getRowHeight();
-          editField.setBounds(bounds);
-
-          table.add(editField);
-
-          editField.requestFocus();
-          editField.selectAll();
-        }
-      else
-        completeEditing();
-      table.repaint();
-    }
-
-    /**
-     * Completes the editing.
-     */
-    void completeEditing()
-    {
-      if (editField != null && editFile != null)
-        {
-          String text = editField.getText();
-          if (text != null && text != "" && !text.equals(fc.getName(editFile)))
-              if (editFile.renameTo(fc.getFileSystemView().createFileObject(
-                  fc.getCurrentDirectory(), text)))
-                rescanCurrentDirectory(fc);
-          table.remove(editField);
-        }
-      startEditing = false;
-      editFile = null;
-      editField = null;
-      table.repaint();
-    }
-
-    /**
-     * ActionListener for the editing text field.
-     */
-    class EditingActionListener implements ActionListener
-    {
-
-      /**
-       * This method is invoked when an action occurs.
-       *
-       * @param e -
-       *          the <code>ActionEvent</code> that occurred
-       */
-      public void actionPerformed(ActionEvent e)
-      {
-        if (editField != null)
-          completeEditing();
-      }
-    }
-
-    /**
-     * Closes the dialog.
-     */
-    public void closeDialog()
-    {
-      Window owner = SwingUtilities.windowForComponent(fc);
-      if (owner instanceof JDialog)
-        ((JDialog) owner).dispose();
-    }
-  }
-
-  /** The text for a label describing the directory combo box. */
-  private String directoryLabel;
-
-  private JComboBox directoryComboBox;
-
-  /** The model for the directory combo box. */
-  DirectoryComboBoxModel directoryModel;
-
-  /** The text for a label describing the file text field. */
-  private String fileLabel;
-
-  /** The file name text field. */
-  private JTextField fileTextField;
-
-  /** The text for a label describing the filter combo box. */
-  private String filterLabel;
-
-  /**
-   * The top panel (contains the directory combo box and the control buttons).
-   */
-  private JPanel topPanel;
-
-  /** A panel containing the control buttons ('up', 'home' etc.). */
-  private JPanel controls;
-
-  /**
-   * The panel that contains the filename field and the filter combobox.
-   */
-  private JPanel bottomPanel;
-
-  /**
-   * The panel that contains the 'Open' (or 'Save') and 'Cancel' buttons.
-   */
-  private JPanel buttonPanel;
-
-  private JButton approveButton;
-
-  /** The file list. */
-  JList fileList;
-
-  /** The file table. */
-  JTable fileTable;
-
-  /** The panel containing the file list. */
-  JPanel fileListPanel;
-
-  /** The panel containing the file table. */
-  JPanel fileTablePanel;
-
-  /** The filter combo box model. */
-  private FilterComboBoxModel filterModel;
-
-  /** The action map. */
-  private ActionMap actionMap;
-
-  /** True if currently in list view. */
-  boolean listView;
-
-  /** True if we can or have started editing a cell. */
-  boolean startEditing;
-
-  /** The scrollpane used for the table and list. */
-  JScrollPane scrollPane;
-
-  /** The text for the label when saving. */
-  String save;
-
-  /** The text for the label when opening a directory. */
-  String look;
-
-  /** The label for the file combo box. */
-  JLabel dirLabel;
-
-  /** Listeners. */
-  ListSelectionListener listSelList;
-  MouseListener doubleClickList;
-  SingleClickListener singleClickList;
-  TableClickListener tableClickList;
-
-  /**
-   * A factory method that returns a UI delegate for the specified
-   * component.
-   *
-   * @param c  the component (which should be a {@link JFileChooser}).
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    JFileChooser chooser = (JFileChooser) c;
-    return new MetalFileChooserUI(chooser);
-  }
-
-  /**
-   * Creates a new instance of this UI delegate.
-   *
-   * @param filechooser  the file chooser component.
-   */
-  public MetalFileChooserUI(JFileChooser filechooser)
-  {
-    super(filechooser);
-    bottomPanel = new JPanel(new GridLayout(3, 2));
-    buttonPanel = new JPanel();
-  }
-
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    actionMap = createActionMap();
-  }
-
-  public void uninstallUI(JComponent c)
-  {
-    super.uninstallUI(c);
-    actionMap = null;
-  }
-
-  /**
-   * Installs the sub-components of the file chooser.
-   *
-   * @param fc  the file chooser component.
-   */
-  public void installComponents(JFileChooser fc)
-  {
-    fc.setLayout(new BorderLayout());
-    topPanel = new JPanel(new BorderLayout());
-    dirLabel = new JLabel(directoryLabel);
-    topPanel.add(dirLabel, BorderLayout.WEST);
-    this.controls = new JPanel();
-    addControlButtons();
-
-    JPanel dirPanel = new JPanel(new VerticalMidLayout());
-    directoryModel = createDirectoryComboBoxModel(fc);
-    directoryComboBox = new JComboBox(directoryModel);
-    directoryComboBox.setRenderer(createDirectoryComboBoxRenderer(fc));
-    dirPanel.add(directoryComboBox);
-    topPanel.add(dirPanel);
-    topPanel.add(controls, BorderLayout.EAST);
-    topPanel.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8));
-    fc.add(topPanel, BorderLayout.NORTH);
-
-    JPanel list = createList(fc);
-    list.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
-    fc.add(list, BorderLayout.CENTER);
-
-    JPanel bottomPanel = getBottomPanel();
-    filterModel = createFilterComboBoxModel();
-    JComboBox fileFilterCombo = new JComboBox(filterModel);
-    fileFilterCombo.setRenderer(createFilterComboBoxRenderer());
-
-    fileTextField = new JTextField();
-    JPanel fileNamePanel = new JPanel(new VerticalMidLayout());
-    fileNamePanel.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 5));
-    fileNamePanel.add(fileTextField);
-    JPanel row1 = new JPanel(new BorderLayout());
-    row1.add(new JLabel(this.fileLabel), BorderLayout.WEST);
-    row1.add(fileNamePanel);
-    bottomPanel.add(row1);
-
-    JPanel row2 = new JPanel(new BorderLayout());
-    row2.add(new JLabel(this.filterLabel), BorderLayout.WEST);
-    row2.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
-    row2.add(fileFilterCombo);
-    bottomPanel.add(row2);
-    JPanel buttonPanel = new JPanel(new ButtonLayout());
-
-    approveButton = new JButton(getApproveSelectionAction());
-    approveButton.setText(getApproveButtonText(fc));
-    approveButton.setToolTipText(getApproveButtonToolTipText(fc));
-    approveButton.setMnemonic(getApproveButtonMnemonic(fc));
-    buttonPanel.add(approveButton);
-    buttonPanel.setBorder(BorderFactory.createEmptyBorder(8, 0, 0, 0));
-
-    JButton cancelButton = new JButton(getCancelSelectionAction());
-    cancelButton.setText(cancelButtonText);
-    cancelButton.setToolTipText(cancelButtonToolTipText);
-    cancelButton.setMnemonic(cancelButtonMnemonic);
-    buttonPanel.add(cancelButton);
-    bottomPanel.add(buttonPanel, BorderLayout.SOUTH);
-    bottomPanel.setBorder(BorderFactory.createEmptyBorder(0, 8, 8, 8));
-    fc.add(bottomPanel, BorderLayout.SOUTH);
-
-    fc.add(getAccessoryPanel(), BorderLayout.EAST);
-  }
-
-  /**
-   * Uninstalls the components added by
-   * {@link #installComponents(JFileChooser)}.
-   *
-   * @param fc  the file chooser.
-   */
-  public void uninstallComponents(JFileChooser fc)
-  {
-    fc.remove(bottomPanel);
-    bottomPanel = null;
-    fc.remove(fileListPanel);
-    fc.remove(fileTablePanel);
-    fileTablePanel = null;
-    fileListPanel = null;
-    fc.remove(topPanel);
-    topPanel = null;
-
-    directoryModel = null;
-    fileTextField = null;
-    directoryComboBox = null;
-  }
-
-  /**
-   * Returns the panel that contains the 'Open' (or 'Save') and 'Cancel'
-   * buttons.
-   *
-   * @return The panel.
-   */
-  protected JPanel getButtonPanel()
-  {
-    return buttonPanel;
-  }
-
-  /**
-   * Creates and returns a new panel that will be used for the controls at
-   * the bottom of the file chooser.
-   *
-   * @return A new panel.
-   */
-  protected JPanel getBottomPanel()
-  {
-    if (bottomPanel == null)
-      bottomPanel = new JPanel(new GridLayout(3, 2));
-    return bottomPanel;
-  }
-
-  /**
-   * Fetches localised strings for use by the labels and buttons on the
-   * file chooser.
-   *
-   * @param fc  the file chooser.
-   */
-  protected void installStrings(JFileChooser fc)
-  {
-     super.installStrings(fc);
-     look = "Look In: ";
-     save = "Save In: ";
-     if (fc.getDialogType() == JFileChooser.SAVE_DIALOG)
-       directoryLabel = save;
-     else
-       directoryLabel = look;
-
-     fileLabel = "File Name: ";
-     filterLabel = "Files of Type: ";
-
-     this.cancelButtonMnemonic = 0;
-     this.cancelButtonText = "Cancel";
-     this.cancelButtonToolTipText = "Abort file chooser dialog";
-
-     this.directoryOpenButtonMnemonic = 0;
-     this.directoryOpenButtonText = "Open";
-     this.directoryOpenButtonToolTipText = "Open selected directory";
-
-     this.helpButtonMnemonic = 0;
-     this.helpButtonText = "Help";
-     this.helpButtonToolTipText = "Filechooser help";
-
-     this.openButtonMnemonic = 0;
-     this.openButtonText = "Open";
-     this.openButtonToolTipText = "Open selected file";
-
-     this.saveButtonMnemonic = 0;
-     this.saveButtonText = "Save";
-     this.saveButtonToolTipText = "Save selected file";
-
-     this.updateButtonMnemonic = 0;
-     this.updateButtonText = "Update";
-     this.updateButtonToolTipText = "Update directory listing";
-  }
-
-  /**
-   * Installs the listeners required.
-   *
-   * @param fc  the file chooser.
-   */
-  protected void installListeners(JFileChooser fc)
-  {
-    directoryComboBox.setAction(new DirectoryComboBoxAction());
-    fc.addPropertyChangeListener(filterModel);
-    listSelList = createListSelectionListener(fc);
-    doubleClickList = this.createDoubleClickListener(fc, fileList);
-    singleClickList = new SingleClickListener(fileList);
-    fileList.addListSelectionListener(listSelList);
-    fileList.addMouseListener(doubleClickList);
-    fileList.addMouseListener(singleClickList);
-    super.installListeners(fc);
-  }
-
-  protected void uninstallListeners(JFileChooser fc)
-  {
-    super.uninstallListeners(fc);
-    fc.removePropertyChangeListener(filterModel);
-    directoryComboBox.setAction(null);
-    fileList.removeListSelectionListener(listSelList);
-    fileList.removeMouseListener(doubleClickList);
-    fileList.removeMouseListener(singleClickList);
-
-    if (fileTable != null)
-      fileTable.removeMouseListener(tableClickList);
-  }
-
-  protected ActionMap getActionMap()
-  {
-    if (actionMap == null)
-      actionMap = createActionMap();
-    return actionMap;
-  }
-
-  /**
-   * Creates and returns an action map.
-   *
-   * @return The action map.
-   */
-  protected ActionMap createActionMap()
-  {
-    ActionMap map = new ActionMap();
-    map.put("approveSelection", getApproveSelectionAction());
-    map.put("cancelSelection", getCancelSelectionAction());
-    map.put("Go Up", getChangeToParentDirectoryAction());
-    return map;
-  }
-
-  /**
-   * Creates a panel containing a list of files.
-   *
-   * @param fc  the file chooser.
-   *
-   * @return A panel.
-   */
-  protected JPanel createList(JFileChooser fc)
-  {
-    if (fileList == null)
-      {
-        fileListPanel = new JPanel(new BorderLayout());
-        fileList = new JList(getModel());
-        scrollPane = new JScrollPane(fileList);
-        fileList.setLayoutOrientation(JList.VERTICAL_WRAP);
-        fileList.setCellRenderer(new FileRenderer());
-      }
-    else
-      {
-        fileList.setModel(getModel());
-        fileListPanel.removeAll();
-        scrollPane.getViewport().setView(fileList);
-      }
-    fileListPanel.add(scrollPane);
-    // This size was determined using BeanShell and dumping the JFileChooser
-    // component hierarchy. Sun has an internal FilePane class in there, but
-    // that probably doesn't matter atm.
-    fileListPanel.setPreferredSize(new Dimension(405, 135));
-    return fileListPanel;
-  }
-
-  /**
-   * Creates a panel containing a table within a scroll pane.
-   *
-   * @param fc  the file chooser.
-   *
-   * @return The details view.
-   */
-  protected JPanel createDetailsView(JFileChooser fc)
-  {
-    fileTablePanel = new JPanel(new BorderLayout());
-
-    Object[] cols = new Object[] {"Name", "Size", "Modified"};
-    Object[][] rows = new Object[fileList.getModel().getSize()][3];
-
-    fileTable = new JTable(new DefaultTableModel(rows, cols));
-
-    if (fc.isMultiSelectionEnabled())
-      fileTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
-    else
-      fileTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-
-    fileTable.setShowGrid(false);
-    fileTable.setColumnSelectionAllowed(false);
-    fileTable.setDefaultRenderer(Object.class, new TableFileRenderer());
-
-    tableClickList = new TableClickListener(fileTable, fc);
-    fileTable.addMouseListener(tableClickList);
-
-    return updateTable();
-  }
-
-  /**
-   * Sets the values in the table, and puts it in the panel.
-   *
-   * @return the panel containing the table.
-   */
-  JPanel updateTable()
-  {
-    DefaultTableModel mod = (DefaultTableModel) fileTable.getModel();
-    ListModel lm = fileList.getModel();
-    DateFormat dt = DateFormat.getDateTimeInstance(DateFormat.SHORT,
-                                                   DateFormat.SHORT);
-    File curr = null;
-    int size = lm.getSize();
-    int rc = mod.getRowCount();
-
-    // If there are not enough rows
-    for (int x = rc; x < size; x++)
-      mod.addRow(new Object[3]);
-
-    for (int i = 0; i < size; i++)
-      {
-        curr = (File) lm.getElementAt(i);
-        fileTable.setValueAt(curr.getName(), i, 0);
-        fileTable.setValueAt(formatSize(curr.length()), i, 1);
-        fileTable.setValueAt(dt.format(new Date(curr.lastModified())), i, 2);
-      }
-
-    // If there are too many rows
-    while (rc > size)
-      mod.removeRow(--rc);
-
-    scrollPane.getViewport().setView(fileTable);
-    scrollPane.setColumnHeaderView(fileTable.getTableHeader());
-
-    fileTablePanel.removeAll();
-    fileTablePanel.add(scrollPane);
-
-    return fileTablePanel;
-  }
-
-  /**
-   * Formats bytes into the appropriate size.
-   *
-   * @param bytes the number of bytes to convert
-   * @return a string representation of the size
-   */
-  private String formatSize(long bytes)
-  {
-    NumberFormat nf = NumberFormat.getNumberInstance();
-    long mb = (long) Math.pow(2, 20);
-    long kb = (long) Math.pow(2, 10);
-    long gb = (long) Math.pow(2, 30);
-    double size = 0;
-    String id = "";
-
-    if ((bytes / gb) >= 1)
-      {
-        size = (double) bytes / (double) gb;
-        id = "GB";
-      }
-    else if ((bytes / mb) >= 1)
-      {
-        size = (double) bytes / (double) mb;
-        id = "MB";
-      }
-    else if ((bytes / kb) >= 1)
-      {
-        size = (double) bytes / (double) kb;
-        id = "KB";
-      }
-    else
-      {
-        size = bytes;
-        id = "Bytes";
-      }
-
-    return nf.format(size) + " " + id;
-  }
-  /**
-   * Creates a listener that monitors selections in the directory/file list
-   * and keeps the {@link JFileChooser} component up to date.
-   *
-   * @param fc  the file chooser.
-   *
-   * @return The listener.
-   *
-   * @see #installListeners(JFileChooser)
-   */
-  public ListSelectionListener createListSelectionListener(JFileChooser fc)
-  {
-    return new MetalFileChooserSelectionListener();
-  }
-
-  /**
-   * Returns the preferred size for the file chooser component.
-   *
-   * @return The preferred size.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension tp = topPanel.getPreferredSize();
-    Dimension bp = bottomPanel.getPreferredSize();
-    Dimension fl = fileListPanel.getPreferredSize();
-    return new Dimension(fl.width, tp.height + bp.height + fl.height);
-  }
-
-  /**
-   * Returns the minimum size for the file chooser component.
-   *
-   * @return The minimum size.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension tp = topPanel.getMinimumSize();
-    Dimension bp = bottomPanel.getMinimumSize();
-    Dimension fl = fileListPanel.getMinimumSize();
-    return new Dimension(fl.width, tp.height + bp.height + fl.height);
-  }
-
-  /**
-   * Returns the maximum size for the file chooser component.
-   *
-   * @return The maximum size.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
-  }
-
-  /**
-   * Creates a property change listener that monitors the {@link JFileChooser}
-   * for property change events and updates the component display accordingly.
-   *
-   * @param fc  the file chooser.
-   *
-   * @return The property change listener.
-   *
-   * @see #installListeners(JFileChooser)
-   */
-  public PropertyChangeListener createPropertyChangeListener(JFileChooser fc)
-  {
-    return new MetalFileChooserPropertyChangeListener();
-  }
-
-  /**
-   * Creates and returns a new instance of {@link DirectoryComboBoxModel}.
-   *
-   * @return A new instance of {@link DirectoryComboBoxModel}.
-   */
-  protected MetalFileChooserUI.DirectoryComboBoxModel
-      createDirectoryComboBoxModel(JFileChooser fc)
-  {
-    return new DirectoryComboBoxModel();
-  }
-
-  /**
-   * Creates a new instance of the renderer used in the directory
-   * combo box.
-   *
-   * @param fc  the file chooser.
-   *
-   * @return The renderer.
-   */
-  protected DirectoryComboBoxRenderer createDirectoryComboBoxRenderer(
-          JFileChooser fc)
-  {
-    return new DirectoryComboBoxRenderer(fc);
-  }
-
-  /**
-   * Creates and returns a new instance of {@link FilterComboBoxModel}.
-   *
-   * @return A new instance of {@link FilterComboBoxModel}.
-   */
-  protected FilterComboBoxModel createFilterComboBoxModel()
-  {
-    return new FilterComboBoxModel();
-  }
-
-  /**
-   * Creates and returns a new instance of {@link FilterComboBoxRenderer}.
-   *
-   * @return A new instance of {@link FilterComboBoxRenderer}.
-   */
-  protected MetalFileChooserUI.FilterComboBoxRenderer
-      createFilterComboBoxRenderer()
-  {
-    return new FilterComboBoxRenderer();
-  }
-
-  /**
-   * Adds the control buttons ('up', 'home' etc.) to the panel.
-   */
-  protected void addControlButtons()
-  {
-    JButton upButton = new JButton(getChangeToParentDirectoryAction());
-    upButton.setText(null);
-    upButton.setIcon(this.upFolderIcon);
-    upButton.setMargin(new Insets(0, 0, 0, 0));
-    controls.add(upButton);
-
-    JButton homeButton = new JButton(getGoHomeAction());
-    homeButton.setText(null);
-    homeButton.setIcon(this.homeFolderIcon);
-    homeButton.setMargin(new Insets(0, 0, 0, 0));
-    controls.add(homeButton);
-
-    JButton newFolderButton = new JButton(getNewFolderAction());
-    newFolderButton.setText(null);
-    newFolderButton.setIcon(this.newFolderIcon);
-    newFolderButton.setMargin(new Insets(0, 0, 0, 0));
-    controls.add(newFolderButton);
-
-    JToggleButton listButton = new JToggleButton(this.listViewIcon);
-    listButton.setMargin(new Insets(0, 0, 0, 0));
-    listButton.addActionListener(new ListViewActionListener());
-    listButton.setSelected(true);
-    listView = true;
-    controls.add(listButton);
-
-    JToggleButton detailButton = new JToggleButton(this.detailsViewIcon);
-    detailButton.setMargin(new Insets(0, 0, 0, 0));
-    detailButton.addActionListener(new DetailViewActionListener());
-    detailButton.setSelected(false);
-    controls.add(detailButton);
-
-    ButtonGroup buttonGroup = new ButtonGroup();
-    buttonGroup.add(listButton);
-    buttonGroup.add(detailButton);
-  }
-
-  /**
-   * Removes all the buttons from the control panel.
-   */
-  protected void removeControlButtons()
-  {
-    controls.removeAll();
-    controls.revalidate();
-    controls.repaint();
-  }
-
-  /**
-   * Updates the current directory.
-   *
-   * @param fc  the file chooser to update.
-   */
-  public void rescanCurrentDirectory(JFileChooser fc)
-  {
-    directoryModel.setSelectedItem(fc.getCurrentDirectory());
-    getModel().validateFileCache();
-    if (!listView)
-        updateTable();
-    else
-      createList(fc);
-  }
-
-  /**
-   * Returns the file name in the text field.
-   *
-   * @return The file name.
-   */
-  public String getFileName()
-  {
-    String result = null;
-    if (fileTextField != null)
-      result = fileTextField.getText();
-    return result;
-  }
-
-  /**
-   * Sets the file name in the text field.
-   *
-   * @param filename  the file name.
-   */
-  public void setFileName(String filename)
-  {
-    fileTextField.setText(filename);
-  }
-
-  /**
-   * DOCUMENT ME!!
-   *
-   * @param e - DOCUMENT ME!
-   */
-  public void valueChanged(ListSelectionEvent e)
-  {
-    // FIXME: Not sure what we should be doing here, if anything.
-  }
-
-  /**
-   * Returns the approve button.
-   *
-   * @return The approve button.
-   */
-  protected JButton getApproveButton(JFileChooser fc)
-  {
-    return approveButton;
-  }
-
-  /**
-   * A layout manager that is used to arrange the subcomponents of the
-   * {@link JFileChooser}.
-   */
-  class VerticalMidLayout implements LayoutManager
-  {
-    /**
-     * Performs the layout.
-     *
-     * @param parent  the container.
-     */
-    public void layoutContainer(Container parent)
-    {
-      int count = parent.getComponentCount();
-      if (count > 0)
-        {
-          Insets insets = parent.getInsets();
-          Component c = parent.getComponent(0);
-          Dimension prefSize = c.getPreferredSize();
-          int h = parent.getHeight() - insets.top - insets.bottom;
-          int adj = Math.max(0, (h - prefSize.height) / 2);
-          c.setBounds(insets.left, insets.top + adj, parent.getWidth()
-              - insets.left - insets.right,
-              (int) Math.min(prefSize.getHeight(), h));
-        }
-    }
-
-    /**
-     * Returns the minimum layout size.
-     *
-     * @param parent  the container.
-     *
-     * @return The minimum layout size.
-     */
-    public Dimension minimumLayoutSize(Container parent)
-    {
-      return preferredLayoutSize(parent);
-    }
-
-    /**
-     * Returns the preferred layout size.
-     *
-     * @param parent  the container.
-     *
-     * @return The preferred layout size.
-     */
-    public Dimension preferredLayoutSize(Container parent)
-    {
-      if (parent.getComponentCount() > 0)
-        {
-          return parent.getComponent(0).getPreferredSize();
-        }
-      else return null;
-    }
-
-    /**
-     * This layout manager does not need to track components, so this
-     * method does nothing.
-     *
-     * @param name  the name the component is associated with.
-     * @param component  the component.
-     */
-    public void addLayoutComponent(String name, Component component)
-    {
-      // do nothing
-    }
-
-    /**
-     * This layout manager does not need to track components, so this
-     * method does nothing.
-     *
-     * @param component  the component.
-     */
-    public void removeLayoutComponent(Component component)
-    {
-      // do nothing
-    }
-  }
-
-  /**
-   * A layout manager that is used to arrange buttons for the
-   * {@link JFileChooser}.
-   */
-  class ButtonLayout implements LayoutManager
-  {
-    static final int GAP = 4;
-
-    /**
-     * Performs the layout.
-     *
-     * @param parent  the container.
-     */
-    public void layoutContainer(Container parent)
-    {
-      int count = parent.getComponentCount();
-      if (count > 0)
-        {
-          // first find the widest button
-          int maxW = 0;
-          for (int i = 0; i < count; i++)
-            {
-              Component c = parent.getComponent(i);
-              Dimension prefSize = c.getPreferredSize();
-              maxW = Math.max(prefSize.width, maxW);
-            }
-
-          // then position the buttons
-          Insets insets = parent.getInsets();
-          int availableH = parent.getHeight() - insets.top - insets.bottom;
-          int currentX = parent.getWidth() - insets.right;
-          for (int i = count - 1; i >= 0; i--)
-            {
-              Component c = parent.getComponent(i);
-              Dimension prefSize = c.getPreferredSize();
-              int adj = Math.max(0, (availableH - prefSize.height) / 2);
-              currentX = currentX - prefSize.width;
-              c.setBounds(currentX, insets.top + adj, prefSize.width,
-                  (int) Math.min(prefSize.getHeight(), availableH));
-              currentX = currentX - GAP;
-            }
-        }
-    }
-
-    /**
-     * Returns the minimum layout size.
-     *
-     * @param parent  the container.
-     *
-     * @return The minimum layout size.
-     */
-    public Dimension minimumLayoutSize(Container parent)
-    {
-      return preferredLayoutSize(parent);
-    }
-
-    /**
-     * Returns the preferred layout size.
-     *
-     * @param parent  the container.
-     *
-     * @return The preferred layout size.
-     */
-    public Dimension preferredLayoutSize(Container parent)
-    {
-      Insets insets = parent.getInsets();
-      int maxW = 0;
-      int maxH = 0;
-      int count = parent.getComponentCount();
-      if (count > 0)
-        {
-          for (int i = 0; i < count; i++)
-            {
-              Component c = parent.getComponent(i);
-              Dimension d = c.getPreferredSize();
-              maxW = Math.max(d.width, maxW);
-              maxH = Math.max(d.height, maxH);
-            }
-        }
-      return new Dimension(maxW * count + GAP * (count - 1) + insets.left
-              + insets.right, maxH + insets.top + insets.bottom);
-    }
-
-    /**
-     * This layout manager does not need to track components, so this
-     * method does nothing.
-     *
-     * @param name  the name the component is associated with.
-     * @param component  the component.
-     */
-    public void addLayoutComponent(String name, Component component)
-    {
-      // do nothing
-    }
-
-    /**
-     * This layout manager does not need to track components, so this
-     * method does nothing.
-     *
-     * @param component  the component.
-     */
-    public void removeLayoutComponent(Component component)
-    {
-      // do nothing
-    }
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalIconFactory.java b/libjava/classpath/javax/swing/plaf/metal/MetalIconFactory.java
deleted file mode 100644
index 5382577..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalIconFactory.java
+++ /dev/null
@@ -1,2626 +0,0 @@
-/* MetalIconFactory.java --
-   Copyright (C) 2005, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Graphics;
-import java.io.Serializable;
-
-import javax.swing.AbstractButton;
-import javax.swing.Icon;
-import javax.swing.JCheckBox;
-import javax.swing.JCheckBoxMenuItem;
-import javax.swing.JFileChooser;
-import javax.swing.JInternalFrame;
-import javax.swing.JRadioButton;
-import javax.swing.JRadioButtonMenuItem;
-import javax.swing.JSlider;
-import javax.swing.SwingConstants;
-import javax.swing.UIManager;
-import javax.swing.plaf.UIResource;
-
-
-/**
- * Creates icons for the {@link MetalLookAndFeel}.
- */
-public class MetalIconFactory implements Serializable
-{
-
-  /** A constant representing "dark". */
-  public static final boolean DARK = false;
-
-  /** A constant representing "light". */
-  public static final boolean LIGHT = true;
-
-  /** A shared instance of the MenuArrowIcon. */
-  private static Icon menuArrow;
-
-  /** A shared instance of the MenuItemArrowIcon. */
-  private static Icon menuItemArrow;
-
-  /**
-   * An icon displayed for {@link JCheckBoxMenuItem} components.
-   */
-  private static class CheckBoxMenuItemIcon
-    implements Icon, UIResource, Serializable
-  {
-    /**
-     * Creates a new icon instance.
-     */
-    public CheckBoxMenuItemIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon (10 pixels).
-     */
-    public int getIconWidth()
-    {
-      return 10;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon (10 pixels).
-     */
-    public int getIconHeight()
-    {
-      return 10;
-    }
-
-    /**
-     * Paints the icon.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      JCheckBoxMenuItem item = (JCheckBoxMenuItem) c;
-
-      if (item.isArmed())
-        g.setColor(MetalLookAndFeel.getBlack());
-      else
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-      g.drawLine(x, y, x + 8, y);
-      g.drawLine(x, y + 1, x, y + 8);
-      g.drawLine(x + 2, y + 8, x + 8, y + 8);
-      g.drawLine(x + 8, y + 2, x + 8, y + 7);
-
-      g.setColor(MetalLookAndFeel.getWhite());
-      g.drawLine(x + 1, y + 1, x + 7, y + 1);
-      g.drawLine(x + 1, y + 2, x + 1, y + 7);
-      g.drawLine(x + 1, y + 9, x + 9, y + 9);
-      g.drawLine(x + 9, y + 1, x + 9, y + 8);
-
-      // if the item is selected, we should draw a tick
-      if (item.isSelected())
-      {
-        g.setColor(MetalLookAndFeel.getBlack());
-        g.fillRect(x + 2, y + 2, 2, 5);
-        for (int i = 0; i < 6; i++)
-          g.drawLine(x + 8 - i, y + i, x + 9 - i, y + i);
-      }
-
-    }
-  }
-
-  /**
-   * An icon used for the "detail view" button on a {@link JFileChooser} under
-   * the {@link MetalLookAndFeel}.
-   *
-   * @see MetalIconFactory#getFileChooserDetailViewIcon()
-   */
-  private static class FileChooserDetailViewIcon
-    implements Icon, UIResource, Serializable
-  {
-
-    /**
-     * Creates a new icon.
-     */
-    public FileChooserDetailViewIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 18;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 18;
-    }
-
-    /**
-     * Paints the icon using colors from the {@link MetalLookAndFeel}.
-     *
-     * @param c  the component (ignored).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate for the top-left of the icon.
-     * @param y  the y-coordinate for the top-left of the icon.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color savedColor = g.getColor();
-      g.setColor(MetalLookAndFeel.getBlack());
-
-      // file 1 outline
-      g.drawLine(x + 2, y + 2, x + 5, y + 2);
-      g.drawLine(x + 6, y + 3, x + 6, y + 7);
-      g.drawLine(x + 2, y + 7, x + 6, y + 7);
-      g.drawLine(x + 2, y + 2, x + 2, y + 7);
-
-      // file 2 outline
-      g.drawLine(x + 2, y + 10, x + 5, y + 10);
-      g.drawLine(x + 6, y + 11, x + 6, y + 15);
-      g.drawLine(x + 2, y + 15, x + 6, y + 15);
-      g.drawLine(x + 2, y + 10, x + 2, y + 15);
-
-      // detail lines
-      g.drawLine(x + 8, y + 5, x + 15, y + 5);
-      g.drawLine(x + 8, y + 13, x + 15, y + 13);
-
-      // fill files
-      g.setColor(MetalLookAndFeel.getPrimaryControl());
-      g.fillRect(x + 3, y + 3, 3, 4);
-      g.fillRect(x + 3, y + 11, 3, 4);
-
-      // highlight files
-      g.setColor(MetalLookAndFeel.getPrimaryControlHighlight());
-      g.drawLine(x + 4, y + 4, x + 4, y + 5);
-      g.drawLine(x + 4, y + 12, x + 4, y + 13);
-
-      g.setColor(savedColor);
-    }
-  }
-
-  /**
-   * An icon used for the "home folder" button on a {@link JFileChooser} under
-   * the {@link MetalLookAndFeel}.
-   *
-   * @see MetalIconFactory#getFileChooserHomeFolderIcon()
-   */
-  private static class FileChooserHomeFolderIcon
-    implements Icon, UIResource, Serializable
-  {
-
-    /**
-     * Creates a new icon.
-     */
-    public FileChooserHomeFolderIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 18;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 18;
-    }
-
-    /**
-     * Paints the icon using colors from the {@link MetalLookAndFeel}.
-     *
-     * @param c  the component (ignored).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate for the top-left of the icon.
-     * @param y  the y-coordinate for the top-left of the icon.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color savedColor = g.getColor();
-      g.setColor(MetalLookAndFeel.getBlack());
-
-      // roof
-      g.drawLine(x + 1, y + 8, x + 8, y + 1);
-      g.drawLine(x + 8, y + 1, x + 15, y + 8);
-
-      // base of house
-      g.drawLine(x + 3, y + 6, x + 3, y + 15);
-      g.drawLine(x + 3, y + 15, x + 13, y + 15);
-      g.drawLine(x + 13, y + 6, x + 13, y + 15);
-
-      // door frame
-      g.drawLine(x + 6, y + 9, x + 6, y + 15);
-      g.drawLine(x + 6, y + 9, x + 10, y + 9);
-      g.drawLine(x + 10, y + 9, x + 10, y + 15);
-
-      // chimney
-      g.drawLine(x + 11, y + 2, x + 11, y + 4);
-      g.drawLine(x + 12, y + 2, x + 12, y + 5);
-
-      g.setColor(MetalLookAndFeel.getControlDarkShadow());
-
-      // roof paint
-      int xx = x + 8;
-      for (int i = 0; i < 4; i++)
-        g.drawLine(xx - i, y + 2 + i, xx + i, y + 2 + i);
-      g.fillRect(x + 4, y + 6, 9, 2);
-
-      // door knob
-      g.drawLine(x + 9, y + 12, x + 9, y + 12);
-
-      // house paint
-      g.setColor(MetalLookAndFeel.getPrimaryControl());
-      g.drawLine(x + 4, y + 8, x + 12, y + 8);
-      g.fillRect(x + 4, y + 9, 2, 6);
-      g.fillRect(x + 11, y + 9, 2, 6);
-
-      g.setColor(savedColor);
-    }
-  }
-
-  /**
-   * An icon used for the "list view" button on a {@link JFileChooser} under
-   * the {@link MetalLookAndFeel}.
-   *
-   * @see MetalIconFactory#getFileChooserListViewIcon()
-   */
-  private static class FileChooserListViewIcon
-    implements Icon, UIResource, Serializable
-  {
-    /**
-     * Creates a new icon.
-     */
-    public FileChooserListViewIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 18;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 18;
-    }
-
-    /**
-     * Paints the icon using colors from the {@link MetalLookAndFeel}.
-     *
-     * @param c  the component (ignored).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate for the top-left of the icon.
-     * @param y  the y-coordinate for the top-left of the icon.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color savedColor = g.getColor();
-      g.setColor(MetalLookAndFeel.getBlack());
-
-      // file 1 outline
-      g.drawLine(x + 2, y + 2, x + 5, y + 2);
-      g.drawLine(x + 6, y + 3, x + 6, y + 7);
-      g.drawLine(x + 2, y + 7, x + 6, y + 7);
-      g.drawLine(x + 2, y + 2, x + 2, y + 7);
-
-      // file 2 outline
-      g.drawLine(x + 2, y + 10, x + 5, y + 10);
-      g.drawLine(x + 6, y + 11, x + 6, y + 15);
-      g.drawLine(x + 2, y + 15, x + 6, y + 15);
-      g.drawLine(x + 2, y + 10, x + 2, y + 15);
-
-      // file 3 outline
-      g.drawLine(x + 10, y + 2, x + 13, y + 2);
-      g.drawLine(x + 14, y + 3, x + 14, y + 7);
-      g.drawLine(x + 10, y + 7, x + 14, y + 7);
-      g.drawLine(x + 10, y + 2, x + 10, y + 7);
-
-      // file 4 outline
-      g.drawLine(x + 10, y + 10, x + 13, y + 10);
-      g.drawLine(x + 14, y + 11, x + 14, y + 15);
-      g.drawLine(x + 10, y + 15, x + 14, y + 15);
-      g.drawLine(x + 10, y + 10, x + 10, y + 15);
-
-      g.drawLine(x + 8, y + 5, x + 8, y + 5);
-      g.drawLine(x + 8, y + 13, x + 8, y + 13);
-      g.drawLine(x + 16, y + 5, x + 16, y + 5);
-      g.drawLine(x + 16, y + 13, x + 16, y + 13);
-
-      // fill files
-      g.setColor(MetalLookAndFeel.getPrimaryControl());
-      g.fillRect(x + 3, y + 3, 3, 4);
-      g.fillRect(x + 3, y + 11, 3, 4);
-      g.fillRect(x + 11, y + 3, 3, 4);
-      g.fillRect(x + 11, y + 11, 3, 4);
-
-      // highlight files
-      g.setColor(MetalLookAndFeel.getPrimaryControlHighlight());
-      g.drawLine(x + 4, y + 4, x + 4, y + 5);
-      g.drawLine(x + 4, y + 12, x + 4, y + 13);
-      g.drawLine(x + 12, y + 4, x + 12, y + 5);
-      g.drawLine(x + 12, y + 12, x + 12, y + 13);
-
-      g.setColor(savedColor);
-    }
-  }
-
-  /**
-   * An icon used for the "new folder" button on a {@link JFileChooser} under
-   * the {@link MetalLookAndFeel}.
-   *
-   * @see MetalIconFactory#getFileChooserNewFolderIcon()
-   */
-  private static class FileChooserNewFolderIcon
-    implements Icon, UIResource, Serializable
-  {
-    /**
-     * Creates a new icon.
-     */
-    public FileChooserNewFolderIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 18;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 18;
-    }
-
-    /**
-     * Paints the icon using colors from the {@link MetalLookAndFeel}.
-     *
-     * @param c  the component (ignored).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate for the top-left of the icon.
-     * @param y  the y-coordinate for the top-left of the icon.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color savedColor = g.getColor();
-      g.setColor(MetalLookAndFeel.getBlack());
-
-      g.drawLine(x + 2, y + 5, x + 9, y + 5);
-      g.drawLine(x + 10, y + 6, x + 15, y + 6);
-      g.drawLine(x + 15, y + 5, x + 15, y + 14);
-      g.drawLine(x + 2, y + 14, x + 15, y + 14);
-      g.drawLine(x + 1, y + 6, x + 1, y + 14);
-
-      g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-      g.drawLine(x + 11, y + 3, x + 15, y + 3);
-      g.drawLine(x + 10, y + 4, x + 15, y + 4);
-
-      g.setColor(MetalLookAndFeel.getPrimaryControl());
-      g.fillRect(x + 3, y + 7, 7, 7);
-      g.fillRect(x + 10, y + 8, 5, 6);
-      g.drawLine(x + 10, y + 5, x + 14, y + 5);
-
-      g.setColor(MetalLookAndFeel.getPrimaryControlHighlight());
-      g.drawLine(x + 10, y + 7, x + 14, y + 7);
-      g.drawLine(x + 2, y + 6, x + 9, y + 6);
-      g.drawLine(x + 2, y + 6, x + 2, y + 13);
-      g.setColor(savedColor);
-    }
-  }
-
-  /**
-   * An icon used for the "up folder" button on a {@link JFileChooser} under
-   * the {@link MetalLookAndFeel}.
-   *
-   * @see MetalIconFactory#getFileChooserNewFolderIcon()
-   */
-  private static class FileChooserUpFolderIcon extends FileChooserNewFolderIcon
-  {
-    /**
-     * Creates a new icon.
-     */
-    public FileChooserUpFolderIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Paints the icon using colors from the {@link MetalLookAndFeel}.
-     *
-     * @param c  the component (ignored).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate for the top-left of the icon.
-     * @param y  the y-coordinate for the top-left of the icon.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color savedColor = g.getColor();
-
-      // draw the folder
-      super.paintIcon(c, g, x, y);
-
-      // now draw the up arrow
-      g.setColor(MetalLookAndFeel.getBlack());
-      g.drawLine(x + 8, y + 9, x + 8, y + 16);
-      int xx = x + 8;
-      for (int i = 0; i < 4; i++)
-        g.drawLine(xx - i, y + 9 + i, xx + i, y + 9 + i);
-      g.setColor(savedColor);
-    }
-  }
-
-  /**
-   * An icon representing a file (drawn as a piece of paper with the top-right
-   * corner turned down).
-   */
-  public static class FileIcon16 implements Icon, Serializable
-  {
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 16;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.  The height returned is
-     * <code>16</code> plus the value returned by
-     * {@link #getAdditionalHeight()}.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 16 + getAdditionalHeight();
-    }
-
-    /**
-     * Paints the icon at the location (x, y).
-     *
-     * @param c  the component.
-     * @param g  the graphics context.
-     * @param x  the x coordinate.
-     * @param y  the y coordinate.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      y = y + getShift();
-      g.setColor(MetalLookAndFeel.getBlack());
-      g.drawLine(x, y, x + 9, y);
-      g.drawLine(x, y + 1, x, y + 15);
-      g.drawLine(x, y + 15, x + 12, y + 15);
-      g.drawLine(x + 12, y + 15, x + 12, y + 6);
-      g.drawLine(x + 12, y + 6, x + 9, y);
-
-      g.drawLine(x + 7, y + 2, x + 11, y + 6);
-      g.drawLine(x + 8, y + 1, x + 9, y + 1);
-
-      g.setColor(MetalLookAndFeel.getPrimaryControl());
-      g.drawLine(x + 1, y + 1, x + 7, y + 1);
-      g.drawLine(x + 1, y + 1, x + 1, y + 14);
-      g.drawLine(x + 1, y + 14, x + 11, y + 14);
-      g.drawLine(x + 11, y + 14, x + 11, y + 7);
-      g.drawLine(x + 8, y + 2, x + 10, y + 4);
-    }
-
-    /**
-     * Returns the additional height for the icon.  The
-     * {@link #getIconHeight()} method adds this value to the icon height it
-     * returns.  Subclasses can override this method to adjust the icon height.
-     *
-     * @return The additional height (<code>0</code> unless overridden).
-     */
-    public int getAdditionalHeight()
-    {
-      return 0;
-    }
-
-    /**
-     * Returns the vertical shift, in pixels, applied when painting the icon.
-     * The default value is zero, but subclasses may override this (for
-     * example, see {@link TreeLeafIcon}).
-     *
-     * @return The shift.
-     */
-    public int getShift()
-    {
-      return 0;
-    }
-
-  }
-
-  /**
-   * An icon representing a folder.
-   */
-  public static class FolderIcon16 implements Icon, Serializable
-  {
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 16;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.  The height returned is
-     * <code>16</code> plus the value returned by
-     * {@link #getAdditionalHeight()}.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 16 + getAdditionalHeight();
-    }
-
-    /**
-     * Paints the icon at the location (x, y).
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x coordinate.
-     * @param y  the y coordinate.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      y = y + getShift();
-      g.setColor(MetalLookAndFeel.getBlack());
-      g.drawLine(x, y + 6, x, y + 15);
-      g.drawLine(x, y + 15, x + 15, y + 15);
-      g.drawLine(x + 15, y + 15, x + 15, y + 5);
-      g.drawLine(x + 14, y + 6, x + 9, y + 6);
-      g.drawLine(x + 8, y + 5, x + 1, y + 5);
-      g.setColor(MetalLookAndFeel.getPrimaryControl());
-      g.fillRect(x + 2, y + 7, 7, 8);
-      g.fillRect(x + 9, y + 8, 6, 7);
-      g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
-      g.drawLine(x + 9, y + 5, x + 14, y + 5);
-      g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-      g.drawLine(x + 9, y + 4, x + 15, y + 4);
-      g.drawLine(x + 10, y + 3, x + 15, y + 3);
-    }
-
-    /**
-     * Returns the additional height for the icon.  The
-     * {@link #getIconHeight()} method adds this value to the icon height it
-     * returns.  Subclasses can override this method to adjust the icon height.
-     *
-     * @return The additional height (<code>0</code> unless overridden).
-     */
-    public int getAdditionalHeight()
-    {
-      return 0;
-    }
-
-    /**
-     * Returns the vertical shift, in pixels, applied when painting the icon.
-     * The default value is zero, but subclasses may override this (for
-     * example, see {@link TreeFolderIcon}).
-     *
-     * @return The shift.
-     */
-    public int getShift()
-    {
-      return 0;
-    }
-
-  }
-
-  /**
-   * An icon used by the {@link MetalInternalFrameUI} class when the frame
-   * is displayed as a palette.
-   *
-   * @since 1.3
-   */
-  public static class PaletteCloseIcon
-    implements Icon, Serializable, UIResource
-  {
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 7;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 7;
-    }
-
-    /**
-     * Paints the icon using colors from the {@link MetalLookAndFeel}.
-     *
-     * @param c  the component (ignored).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate for the top-left of the icon.
-     * @param y  the y-coordinate for the top-left of the icon.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color savedColor = g.getColor();
-      AbstractButton button = (AbstractButton) c;
-      if (button.getModel().isPressed())
-        g.setColor(MetalLookAndFeel.getBlack());
-      else
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-      g.fillRect(x + 2, y + 2, 3, 3);
-      g.drawLine(x + 1, y, x + 1, y + 2);
-      g.drawLine(x, y + 1, x + 2, y + 1);
-      g.drawLine(x + 5, y, x + 5, y + 2);
-      g.drawLine(x + 4, y + 1, x + 6, y + 1);
-      g.drawLine(x + 1, y + 4, x + 1, y + 6);
-      g.drawLine(x, y + 5, x + 2, y + 5);
-      g.drawLine(x + 5, y + 4, x + 5, y + 6);
-      g.drawLine(x + 4, y + 5, x + 6, y + 5);
-      g.setColor(MetalLookAndFeel.getControlHighlight());
-      g.drawLine(x + 2, y + 6, x + 3, y + 5);
-      g.drawLine(x + 5, y + 3, x + 6, y + 2);
-      g.drawLine(x + 6, y + 6, x + 6, y + 6);
-      g.setColor(savedColor);
-    }
-  }
-
-  /**
-   * An {@link Icon} implementation for {@link JCheckBox}es in the
-   * Metal Look &amp; Feel.
-   *
-   * @author Roman Kennke (roman@kennke.org)
-   */
-  static class RadioButtonIcon implements Icon, UIResource, Serializable
-  {
-
-    /**
-     * This is used as a mask when painting the gradient. See
-     * {@link MetalUtils#paintGradient(java.awt.Graphics, int, int, int, int,
-     *  float, float, java.awt.Color, java.awt.Color, java.awt.Color, int,
-     *  int[][])} for details.
-     */
-    private static int[][] gradientMask = new int[][] {{3, 7}, {1, 9}, {1, 9},
-                                                       {0, 10}, {0, 10}, {0, 10},
-                                                       {0, 10}, {1, 9}, {1, 9},
-                                                       {3, 7}};
-
-    /**
-     * Returns the width of the icon in pixels.
-     *
-     * @return the width of the icon in pixels
-     */
-    public int getIconWidth()
-    {
-      return 13;
-    }
-
-    /**
-     * Returns the height of the icon in pixels.
-     *
-     * @return the height of the icon in pixels
-     */
-    public int getIconHeight()
-    {
-      return 13;
-    }
-
-    /**
-     * Paints the icon, taking into account whether or not the component is
-     * enabled, selected and/or armed.
-     *
-     * @param c the Component to draw on (must be an instance of
-     *          {@link JRadioButton})
-     * @param g the Graphics context to draw with
-     * @param x the X position
-     * @param y the Y position
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      if (UIManager.get("RadioButton.gradient") != null)
-        MetalUtils.paintGradient(g, x + 2, y + 2, 8, 8,
-                              SwingConstants.VERTICAL, "RadioButton.gradient",
-                              gradientMask);
-
-      Color savedColor = g.getColor();
-      JRadioButton b = (JRadioButton) c;
-
-      // draw outer circle
-      if (b.isEnabled())
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-      else
-        g.setColor(MetalLookAndFeel.getControlDisabled());
-      g.drawLine(x + 2, y + 1, x + 3, y + 1);
-      g.drawLine(x + 4, y, x + 7, y);
-      g.drawLine(x + 8, y + 1, x + 9, y + 1);
-      g.drawLine(x + 10, y + 2, x + 10, y + 3);
-      g.drawLine(x + 11, y + 4, x + 11, y + 7);
-      g.drawLine(x + 10, y + 8, x + 10, y + 9);
-      g.drawLine(x + 8, y + 10, x + 9, y + 10);
-      g.drawLine(x + 4, y + 11, x + 7, y + 11);
-      g.drawLine(x + 2, y + 10, x + 3, y + 10);
-      g.drawLine(x + 1, y + 9, x + 1, y + 8);
-      g.drawLine(x, y + 7, x, y + 4);
-      g.drawLine(x + 1, y + 2, x + 1, y + 3);
-
-      if (b.getModel().isArmed())
-        {
-          g.setColor(MetalLookAndFeel.getControlShadow());
-          g.drawLine(x + 4, y + 1, x + 7, y + 1);
-          g.drawLine(x + 4, y + 10, x + 7, y + 10);
-          g.drawLine(x + 1, y + 4, x + 1, y + 7);
-          g.drawLine(x + 10, y + 4, x + 10, y + 7);
-          g.fillRect(x + 2, y + 2, 8, 8);
-        }
-      else
-        {
-          // only draw inner highlight if not filled
-          if (b.isEnabled())
-            {
-              g.setColor(MetalLookAndFeel.getWhite());
-
-              g.drawLine(x + 2, y + 8, x + 2, y + 9);
-              g.drawLine(x + 1, y + 4, x + 1, y + 7);
-              g.drawLine(x + 2, y + 2, x + 2, y + 3);
-              g.drawLine(x + 3, y + 2, x + 3, y + 2);
-              g.drawLine(x + 4, y + 1, x + 7, y + 1);
-              g.drawLine(x + 8, y + 2, x + 9, y + 2);
-            }
-        }
-
-      // draw outer highlight
-      if (b.isEnabled())
-        {
-          g.setColor(MetalLookAndFeel.getWhite());
-
-          // outer
-          g.drawLine(x + 10, y + 1, x + 10, y + 1);
-          g.drawLine(x + 11, y + 2, x + 11, y + 3);
-          g.drawLine(x + 12, y + 4, x + 12, y + 7);
-          g.drawLine(x + 11, y + 8, x + 11, y + 9);
-          g.drawLine(x + 10, y + 10, x + 10, y + 10);
-          g.drawLine(x + 8, y + 11, x + 9, y + 11);
-          g.drawLine(x + 4, y + 12, x + 7, y + 12);
-          g.drawLine(x + 2, y + 11, x + 3, y + 11);
-        }
-
-      if (b.isSelected())
-        {
-          if (b.isEnabled())
-            g.setColor(MetalLookAndFeel.getBlack());
-          else
-            g.setColor(MetalLookAndFeel.getControlDisabled());
-          g.drawLine(x + 4, y + 3, x + 7, y + 3);
-          g.fillRect(x + 3, y + 4, 6, 4);
-          g.drawLine(x + 4, y + 8, x + 7, y + 8);
-        }
-      g.setColor(savedColor);
-    }
-  }
-
-  /**
-   * An icon displayed for {@link JRadioButtonMenuItem} components.
-   */
-  private static class RadioButtonMenuItemIcon
-    implements Icon, UIResource, Serializable
-  {
-    /**
-     * Creates a new icon instance.
-     */
-    public RadioButtonMenuItemIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 10;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 10;
-    }
-
-    /**
-     * Paints the icon.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color savedColor = g.getColor();
-      JRadioButtonMenuItem item = (JRadioButtonMenuItem) c;
-      g.setColor(MetalLookAndFeel.getBlack());
-      g.drawLine(x + 2, y, x + 6, y);
-      g.drawLine(x + 7, y + 1, x + 7, y + 1);
-      g.drawLine(x + 8, y + 2, x + 8, y + 6);
-      g.drawLine(x + 7, y + 7, x + 7, y + 7);
-      g.drawLine(x + 2, y + 8, x + 6, y + 8);
-      g.drawLine(x + 1, y + 7, x + 1, y + 7);
-      g.drawLine(x, y + 2, x, y + 6);
-      g.drawLine(x + 1, y + 1, x + 1, y + 1);
-
-      if (item.isSelected())
-        {
-          g.drawLine(x + 3, y + 2, x + 5, y + 2);
-          g.fillRect(x + 2, y + 3, 5, 3);
-          g.drawLine(x + 3, y + 6, x + 5, y + 6);
-        }
-
-      // highlight
-      g.setColor(MetalLookAndFeel.getControlHighlight());
-      g.drawLine(x + 3, y + 1, x + 6, y + 1);
-      g.drawLine(x + 8, y + 1, x + 8, y + 1);
-      g.drawLine(x + 9, y + 2, x + 9, y + 7);
-      g.drawLine(x + 8, y + 8, x + 8, y + 8);
-      g.drawLine(x + 2, y + 9, x + 7, y + 9);
-      g.drawLine(x + 1, y + 8, x + 1, y + 8);
-      g.drawLine(x + 1, y + 3, x + 1, y + 6);
-      g.drawLine(x + 2, y + 2, x + 2, y + 2);
-      g.setColor(savedColor);
-    }
-  }
-
-  /**
-   * The icon used to display the thumb control on a horizontally oriented
-   * {@link JSlider} component.
-   */
-  private static class HorizontalSliderThumbIcon
-    implements Icon, UIResource, Serializable
-  {
-
-    /**
-     * This mask is used to paint the gradient in the shape of the thumb.
-     */
-    int[][] gradientMask = new int[][] { {0, 12}, {0, 12}, {0, 12}, {0, 12},
-                                         {0, 12}, {0, 12}, {0, 12}, {1, 11},
-                                         {2, 10}, {3, 9}, {4, 8}, {5, 7},
-                                         {6, 6}};
-
-    /**
-     * Creates a new instance.
-     */
-    public HorizontalSliderThumbIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 15;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 16;
-    }
-
-    /**
-     * Paints the icon, taking into account whether or not the component has
-     * the focus.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      boolean enabled = false;
-      boolean focus = false;
-      if (c != null)
-        {
-          enabled = c.isEnabled();
-          focus = c.hasFocus();
-        }
-
-      // draw the outline
-      if (enabled)
-        g.setColor(MetalLookAndFeel.getBlack());
-      else
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-      g.drawLine(x + 1, y, x + 13, y);
-      g.drawLine(x + 14, y + 1, x + 14, y + 7);
-      g.drawLine(x + 14, y + 8, x + 7, y + 15);
-      g.drawLine(x + 6, y + 14, x, y + 8);
-      g.drawLine(x, y + 7, x, y + 1);
-
-// The following is commented out until the masking for the gradient painting
-// is working correctly
-//      // Fill the icon.
-//      if (MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme
-//          && enabled)
-//        {
-//          String gradient;
-//          if (focus)
-//            gradient = "Slider.focusGradient";
-//          else
-//            gradient = "Slider.gradient";
-//          MetalUtils.paintGradient(g, x + 1, y + 2, 12, 13,
-//                                   SwingConstants.VERTICAL, gradient,
-//                                   gradientMask);
-//        }
-//      else
-        {
-          if (focus)
-            g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
-          else
-            g.setColor(MetalLookAndFeel.getControl());
-          g.fillRect(x + 1, y + 2, 13, 7);
-          g.drawLine(x + 2, y + 9, x + 12, y + 9);
-          g.drawLine(x + 3, y + 10, x + 11, y + 10);
-          g.drawLine(x + 4, y + 11, x + 10, y + 11);
-          g.drawLine(x + 5, y + 12, x + 9, y + 12);
-          g.drawLine(x + 6, y + 13, x + 8, y + 13);
-          g.drawLine(x + 7, y + 14, x + 7, y + 14);
-        }
-
-      // If the slider is enabled, draw dots and highlights.
-      if (c.isEnabled()
-          && !(MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme))
-        {
-          if (focus)
-            g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-          else
-            g.setColor(MetalLookAndFeel.getBlack());
-          g.drawLine(x + 3, y + 3, x + 3, y + 3);
-          g.drawLine(x + 7, y + 3, x + 7, y + 3);
-          g.drawLine(x + 11, y + 3, x + 11, y + 3);
-
-          g.drawLine(x + 5, y + 5, x + 5, y + 5);
-          g.drawLine(x + 9, y + 5, x + 9, y + 5);
-
-          g.drawLine(x + 3, y + 7, x + 3, y + 7);
-          g.drawLine(x + 7, y + 7, x + 7, y + 7);
-          g.drawLine(x + 11, y + 7, x + 11, y + 7);
-
-          // Draw highlights
-          if (focus)
-            g.setColor(MetalLookAndFeel.getPrimaryControl());
-          else
-            g.setColor(MetalLookAndFeel.getWhite());
-          g.drawLine(x + 1, y + 1, x + 13, y + 1);
-          g.drawLine(x + 1, y + 2, x + 1, y + 8);
-          g.drawLine(x + 2, y + 2, x + 2, y + 2);
-          g.drawLine(x + 6, y + 2, x + 6, y + 2);
-          g.drawLine(x + 10, y + 2, x + 10, y + 2);
-
-          g.drawLine(x + 4, y + 4, x + 4, y + 4);
-          g.drawLine(x + 8, y + 4, x + 8, y + 4);
-
-          g.drawLine(x + 2, y + 6, x + 2, y + 6);
-          g.drawLine(x + 6, y + 6, x + 6, y + 6);
-          g.drawLine(x + 10, y + 6, x + 10, y + 6);
-        }
-
-    }
-  }
-
-  /**
-   * An icon used for the 'close' button in the title frame of a
-   * {@link JInternalFrame}.
-   */
-  private static class InternalFrameCloseIcon
-    implements Icon, UIResource, Serializable
-  {
-    /** The icon size in pixels. */
-    private int size;
-
-    /**
-     * Creates a new icon.
-     *
-     * @param size  the icon size (width and height) in pixels.
-     */
-    public InternalFrameCloseIcon(int size)
-    {
-      this.size = size;
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return size;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return size;
-    }
-
-    /**
-     * Paints the icon.
-     *
-     * @param c  the component (an {@link JInternalFrame} is expected).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color savedColor = g.getColor();
-      AbstractButton b = (AbstractButton) c;
-
-      // fill the interior
-      if (b.getModel().isPressed())
-        // FIXME: also need to take into account whether the internal frame is
-        // selected
-        g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
-      else
-        g.setColor(MetalLookAndFeel.getPrimaryControl());
-      g.fillRect(x + 2, y + 2, 10, 10);
-
-      // draw the outline box and the cross
-      if (b.getModel().isPressed())
-        g.setColor(MetalLookAndFeel.getBlack());
-      else
-        {
-          // FIXME: also need to take into account whether the internal frame is
-          // selected
-          boolean selected = true;
-          if (selected)
-            g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-          else
-            g.setColor(MetalLookAndFeel.getControlDarkShadow());
-        }
-      g.drawLine(x + 1, y + 1, x + 13, y + 1);
-      g.drawLine(x + 1, y + 2, x + 1, y + 12);
-      g.drawLine(x + 1, y + 13, x + 13, y + 13);
-      g.drawLine(x + 13, y + 2, x + 13, y + 12);
-      g.drawLine(x + 2, y + 12, x + 2, y + 12);
-      g.drawLine(x + 12, y + 2, x + 12, y + 2);
-
-      g.fillRect(x + 4, y + 4, 2, 2);
-      g.fillRect(x + 5, y + 5, 4, 4);
-      g.drawLine(x + 9, y + 4, x + 10, y + 4);
-      g.drawLine(x + 9, y + 4, x + 9, y + 5);
-      g.drawLine(x + 4, y + 9, x + 4, y + 10);
-      g.drawLine(x + 4, y + 9, x + 5, y + 9);
-      g.drawLine(x + 9, y + 8, x + 9, y + 10);
-      g.drawLine(x + 8, y + 9, x + 10, y + 9);
-
-      g.setColor(MetalLookAndFeel.getBlack());
-      g.drawLine(x, y, x + 13, y);
-      g.drawLine(x, y + 1, x, y + 13);
-      g.drawLine(x + 3, y + 4, x + 4, y + 3);
-      g.drawLine(x + 3, y + 9, x + 5, y + 7);
-      g.drawLine(x + 7, y + 5, x + 9, y + 3);
-
-      g.drawLine(x + 12, y + 3, x + 12, y + 11);
-      g.drawLine(x + 3, y + 12, x + 12, y + 12);
-
-      g.setColor(MetalLookAndFeel.getWhite());
-      g.drawLine(x + 1, y + 14, x + 14, y + 14);
-      g.drawLine(x + 14, y + 1, x + 14, y + 14);
-
-      if (!b.getModel().isPressed())
-        {
-          g.drawLine(x + 5, y + 10, x + 5, y + 10);
-          g.drawLine(x + 6, y + 9, x + 7, y + 9);
-          g.drawLine(x + 10, y + 5, x + 10, y + 5);
-          g.drawLine(x + 9, y + 6, x + 9, y + 7);
-          g.drawLine(x + 10, y + 10, x + 11, y + 10);
-          g.drawLine(x + 10, y + 11, x + 10, y + 11);
-        }
-      g.setColor(savedColor);
-    }
-  }
-
-  /**
-   * The icon displayed at the top-left corner of a {@link JInternalFrame}.
-   */
-  private static class InternalFrameDefaultMenuIcon
-    implements Icon, UIResource, Serializable
-  {
-
-    /**
-     * Creates a new instance.
-     */
-    public InternalFrameDefaultMenuIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 16;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 16;
-    }
-
-    /**
-     * Paints the icon at the specified location.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x coordinate.
-     * @param y  the y coordinate.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-      g.fillRect(x + 1, y, 14, 2);
-      g.fillRect(x, y + 1, 2, 14);
-      g.fillRect(x + 1, y + 14, 14, 2);
-      g.fillRect(x + 14, y + 1, 2, 14);
-      g.drawLine(x + 2, y + 5, x + 14, y + 5);
-
-      g.setColor(MetalLookAndFeel.getPrimaryControl());
-      g.fillRect(x + 2, y + 2, 12, 3);
-
-      g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-      g.drawLine(x + 3, y + 3, x + 3, y + 3);
-      g.drawLine(x + 6, y + 3, x + 6, y + 3);
-      g.drawLine(x + 9, y + 3, x + 9, y + 3);
-      g.drawLine(x + 12, y + 3, x + 12, y + 3);
-
-      g.setColor(MetalLookAndFeel.getWhite());
-      g.fillRect(x + 2, y + 6, 12, 8);
-      g.drawLine(x + 2, y + 2, x + 2, y + 2);
-      g.drawLine(x + 5, y + 2, x + 5, y + 2);
-      g.drawLine(x + 8, y + 2, x + 8, y + 2);
-      g.drawLine(x + 11, y + 2, x + 11, y + 2);
-    }
-  }
-
-  /**
-   * An icon used in the title frame of a {@link JInternalFrame}.  When you
-   * maximise an internal frame, this icon will replace the 'maximise' icon to
-   * provide a 'restore' option.
-   */
-  private static class InternalFrameAltMaximizeIcon
-    implements Icon, UIResource, Serializable
-  {
-    /** The icon size in pixels. */
-    private int size;
-
-    /**
-     * Creates a new icon.
-     *
-     * @param size  the icon size in pixels.
-     */
-    public InternalFrameAltMaximizeIcon(int size)
-    {
-      this.size = size;
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return size;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return size;
-    }
-
-    /**
-     * Paints the icon at the specified location.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x coordinate.
-     * @param y  the y coordinate.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color savedColor = g.getColor();
-
-      AbstractButton b = (AbstractButton) c;
-
-      // fill the small box interior
-      if (b.getModel().isPressed())
-        g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
-      else
-        g.setColor(MetalLookAndFeel.getPrimaryControl());
-      g.fillRect(x + 2, y + 6, 7, 7);
-
-
-      if (b.getModel().isPressed())
-        g.setColor(MetalLookAndFeel.getBlack());
-      else
-        g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-
-      g.drawLine(x + 12, y + 1, x + 13, y + 1);
-      g.drawLine(x + 11, y + 2, x + 12, y + 2);
-      g.drawLine(x + 10, y + 3, x + 11, y + 3);
-      g.drawLine(x + 8, y + 2, x + 8, y + 3);
-      g.fillRect(x + 8, y + 4, 3, 3);
-      g.drawLine(x + 11, y + 6, x + 12, y + 6);
-
-      g.drawLine(x + 1, y + 5, x + 5, y + 5);
-      g.drawLine(x + 1, y + 6, x + 1, y + 12);
-      g.drawLine(x + 9, y + 9, x + 9, y + 12);
-      g.drawLine(x + 1, y + 13, x + 9, y + 13);
-
-      g.drawLine(x + 2, y + 12, x + 2, y + 12);
-
-      g.setColor(MetalLookAndFeel.getBlack());
-      g.drawLine(x + 12, y, x + 9, y + 3);
-      g.drawLine(x + 7, y + 1, x + 8, y + 1);
-      g.drawLine(x + 7, y + 2, x + 7, y + 6);
-      g.drawLine(x + 11, y + 5, x + 12, y + 5);
-      g.drawLine(x, y + 4, x + 5, y + 4);
-      g.drawLine(x, y + 5, x, y + 13);
-      g.drawLine(x + 3, y + 12, x + 8, y + 12);
-      g.drawLine(x + 8, y + 8, x + 8, y + 11);
-      g.drawLine(x + 9, y + 8, x + 9, y + 8);
-
-      g.setColor(MetalLookAndFeel.getWhite());
-      g.drawLine(x + 9, y + 2, x + 9, y + 2);
-      g.drawLine(x + 11, y + 4, x + 13, y + 2);
-      g.drawLine(x + 13, y + 6, x + 13, y + 6);
-      g.drawLine(x + 8, y + 7, x + 13, y + 7);
-      g.drawLine(x + 6, y + 5, x + 6, y + 5);
-      g.drawLine(x + 10, y + 8, x + 10, y + 13);
-      g.drawLine(x + 1, y + 14, x + 10, y + 14);
-
-      if (!b.getModel().isPressed())
-        {
-          g.drawLine(x + 2, y + 6, x + 6, y + 6);
-          g.drawLine(x + 2, y + 6, x + 2, y + 11);
-        }
-
-      g.setColor(savedColor);
-    }
-  }
-
-  /**
-   * An icon used for the 'maximize' button in the title frame of a
-   * {@link JInternalFrame}.
-   */
-  private static class InternalFrameMaximizeIcon
-    implements Icon, UIResource, Serializable
-  {
-
-    /**
-     * Creates a new instance.
-     */
-    public InternalFrameMaximizeIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 16;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 16;
-    }
-
-    /**
-     * Paints the icon at the specified location.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x coordinate.
-     * @param y  the y coordinate.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color savedColor = g.getColor();
-
-      AbstractButton b = (AbstractButton) c;
-
-      // fill the interior
-      if (b.getModel().isPressed())
-        g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
-      else
-        g.setColor(MetalLookAndFeel.getPrimaryControl());
-      g.fillRect(x + 2, y + 6, 7, 7);
-
-      if (b.getModel().isPressed())
-        g.setColor(MetalLookAndFeel.getBlack());
-      else
-        g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-
-      g.drawLine(x + 9, y + 1, x + 10, y + 1);
-      g.fillRect(x + 11, y + 1, 3, 3);
-      g.fillRect(x + 12, y + 4, 2, 2);
-      g.drawLine(x + 10, y + 3, x + 10, y + 3);
-      g.drawLine(x + 9, y + 4, x + 10, y + 4);
-      g.drawLine(x + 1, y + 5, x + 9, y + 5);
-      g.drawLine(x + 1, y + 6, x + 1, y + 12);
-      g.drawLine(x + 9, y + 6, x + 9, y + 12);
-      g.drawLine(x + 1, y + 13, x + 9, y + 13);
-
-      // fill
-      g.drawLine(x + 7, y + 6, x + 8, y + 6);
-      g.drawLine(x + 6, y + 7, x + 8, y + 7);
-      g.drawLine(x + 5, y + 8, x + 6, y + 8);
-      g.drawLine(x + 4, y + 9, x + 5, y + 9);
-      g.drawLine(x + 3, y + 10, x + 4, y + 10);
-      g.drawLine(x + 2, y + 11, x + 3, y + 11);
-      g.drawLine(x + 2, y + 12, x + 4, y + 12);
-      g.drawLine(x + 8, y + 8, x + 8, y + 8);
-
-      // draw black
-      g.setColor(MetalLookAndFeel.getBlack());
-      g.drawLine(x + 8, y, x + 13, y);
-      g.drawLine(x + 8, y + 1, x + 8, y + 1);
-      g.drawLine(x + 10, y + 2, x + 9, y + 3);
-      g.drawLine(x, y + 4, x + 8, y + 4);
-      g.drawLine(x, y + 5, x, y + 13);
-
-      g.drawLine(x + 2, y + 10, x + 6, y + 6);
-      g.drawLine(x + 8, y + 9, x + 8, y + 11);
-      g.drawLine(x + 5, y + 12, x + 8, y + 12);
-
-      // draw white
-      g.setColor(MetalLookAndFeel.getWhite());
-      if (!b.getModel().isPressed())
-        {
-          g.drawLine(x + 2, y + 6, x + 5, y + 6);
-          g.drawLine(x + 2, y + 7, x + 2, y + 9);
-          g.drawLine(x + 4, y + 11, x + 7, y + 8);
-        }
-
-      g.drawLine(x + 1, y + 14, x + 10, y + 14);
-      g.drawLine(x + 10, y + 5, x + 10, y + 13);
-
-      g.drawLine(x + 9, y + 2, x + 9, y + 2);
-      g.drawLine(x + 11, y + 4, x + 11, y + 5);
-      g.drawLine(x + 13, y + 6, x + 14, y + 6);
-      g.drawLine(x + 14, y + 1, x + 14, y + 5);
-      g.setColor(savedColor);
-    }
-  }
-
-  /**
-   * An icon used in the title frame of a {@link JInternalFrame}.
-   */
-  private static class InternalFrameMinimizeIcon
-    implements Icon, UIResource, Serializable
-  {
-
-    /**
-     * Creates a new instance.
-     */
-    public InternalFrameMinimizeIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 16;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 16;
-    }
-
-    /**
-     * Paints the icon at the specified location.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x coordinate.
-     * @param y  the y coordinate.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color savedColor = g.getColor();
-
-      AbstractButton b = (AbstractButton) c;
-
-      if (b.getModel().isPressed())
-        g.setColor(MetalLookAndFeel.getBlack());
-      else
-        // FIXME: here the color depends on whether or not the internal frame
-        // is selected
-        g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-
-      g.drawLine(x + 12, y + 1, x + 13, y + 1);
-      g.drawLine(x + 11, y + 2, x + 12, y + 2);
-      g.drawLine(x + 10, y + 3, x + 11, y + 3);
-      g.drawLine(x + 8, y + 2, x + 8, y + 3);
-      g.fillRect(x + 8, y + 4, 3, 3);
-      g.drawLine(x + 11, y + 6, x + 12, y + 6);
-
-      g.drawLine(x + 1, y + 8, x + 6, y + 8);
-      g.drawLine(x + 1, y + 9, x + 1, y + 12);
-      g.drawLine(x + 6, y + 9, x + 6, y + 12);
-      g.drawLine(x + 1, y + 13, x + 6, y + 13);
-
-      g.drawLine(x + 5, y + 9, x + 5, y + 9);
-      g.drawLine(x + 2, y + 12, x + 2, y + 12);
-
-      g.setColor(MetalLookAndFeel.getBlack());
-      g.drawLine(x + 12, y, x + 9, y + 3);
-      g.drawLine(x + 7, y + 1, x + 8, y + 1);
-      g.drawLine(x + 7, y + 2, x + 7, y + 6);
-      g.drawLine(x, y + 7, x + 6, y + 7);
-      g.drawLine(x, y + 8, x, y + 13);
-      g.drawLine(x + 3, y + 12, x + 5, y + 12);
-      g.drawLine(x + 5, y + 10, x + 5, y + 11);
-      g.drawLine(x + 11, y + 5, x + 12, y + 5);
-
-      g.setColor(MetalLookAndFeel.getWhite());
-      g.drawLine(x + 9, y + 2, x + 9, y + 2);
-      g.drawLine(x + 11, y + 4, x + 13, y + 2);
-      g.drawLine(x + 13, y + 6, x + 13, y + 6);
-      g.drawLine(x + 8, y + 7, x + 13, y + 7);
-      g.drawLine(x + 7, y + 9, x + 7, y + 13);
-      g.drawLine(x + 1, y + 14, x + 7, y + 14);
-
-      if (b.getModel().isPressed())
-        {
-          g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
-          g.fillRect(x + 2, y + 9, 3, 3);
-        }
-      else
-        {
-          g.drawLine(x + 2, y + 9, x + 4, y + 9);
-          g.drawLine(x + 2, y + 10, x + 2, y + 11);
-        }
-
-      g.setColor(savedColor);
-    }
-  }
-
-  /**
-   * The icon used to display the thumb control on a horizontally oriented
-   * {@link JSlider} component.
-   */
-  private static class VerticalSliderThumbIcon
-    implements Icon, UIResource, Serializable
-  {
-    /**
-     * This mask is used to paint the gradient in the shape of the thumb.
-     */
-    int[][] gradientMask = new int[][] { {0, 12}, {0, 12}, {0, 12}, {0, 12},
-                                         {0, 12}, {0, 12}, {0, 12}, {1, 11},
-                                         {2, 10}, {3, 9}, {4, 8}, {5, 7},
-                                         {6, 6}};
-
-    /**
-     * Creates a new instance.
-     */
-    public VerticalSliderThumbIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 16;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 15;
-    }
-
-    /**
-     * Paints the icon taking into account whether the slider control has the
-     * focus or not.
-     *
-     * @param c  the slider (must be a non-<code>null</code> instance of
-     *           {@link JSlider}.
-     * @param g  the graphics device.
-     * @param x  the x-coordinate.
-     * @param y  the y-coordinate.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      boolean enabled = false;
-      boolean focus = false;
-      if (c != null)
-        {
-          enabled = c.isEnabled();
-          focus = c.hasFocus();
-        }
-
-      // draw the outline
-      if (enabled)
-        g.setColor(MetalLookAndFeel.getBlack());
-      else
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-      g.drawLine(x + 1, y, x + 7, y);
-      g.drawLine(x + 8, y, x + 15, y + 7);
-      g.drawLine(x + 14, y + 8, x + 8, y + 14);
-      g.drawLine(x + 8, y + 14, x + 1, y + 14);
-      g.drawLine(x, y + 13, x, y + 1);
-
-//    The following is commented out until the masking for the gradient painting
-//    is working correctly
-//      // Fill the icon.
-//      if (MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme
-//          && enabled)
-//        {
-//          String gradient;
-//          if (focus)
-//            gradient = "Slider.focusGradient";
-//          else
-//            gradient = "Slider.gradient";
-//          MetalUtils.paintGradient(g, x + 2, y + 1, 13, 12,
-//                                   SwingConstants.HORIZONTAL, gradient,
-//                                   gradientMask);
-//        }
-//      else
-        {
-          if (focus)
-            g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
-          else
-            g.setColor(MetalLookAndFeel.getControl());
-          g.fillRect(x + 2, y + 1, 7, 13);
-          g.drawLine(x + 9, y + 2, x + 9, y + 12);
-          g.drawLine(x + 10, y + 3, x + 10, y + 11);
-          g.drawLine(x + 11, y + 4, x + 11, y + 10);
-          g.drawLine(x + 12, y + 5, x + 12, y + 9);
-          g.drawLine(x + 13, y + 6, x + 13, y + 8);
-          g.drawLine(x + 14, y + 7, x + 14, y + 7);
-        }
-
-      // if the slider is enabled, draw dots and highlights
-      if (enabled
-          && ! (MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme))
-        {
-          if (focus)
-            g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-          else
-            g.setColor(MetalLookAndFeel.getBlack());
-          g.drawLine(x + 3, y + 3, x + 3, y + 3);
-          g.drawLine(x + 3, y + 7, x + 3, y + 7);
-          g.drawLine(x + 3, y + 11, x + 3, y + 11);
-
-          g.drawLine(x + 5, y + 5, x + 5, y + 5);
-          g.drawLine(x + 5, y + 9, x + 5, y + 9);
-
-          g.drawLine(x + 7, y + 3, x + 7, y + 3);
-          g.drawLine(x + 7, y + 7, x + 7, y + 7);
-          g.drawLine(x + 7, y + 11, x + 7, y + 11);
-
-          // draw highlights
-          if (focus)
-            g.setColor(MetalLookAndFeel.getPrimaryControl());
-          else
-            g.setColor(MetalLookAndFeel.getWhite());
-          g.drawLine(x + 1, y + 1, x + 8, y + 1);
-          g.drawLine(x + 1, y + 2, x + 1, y + 13);
-          g.drawLine(x + 2, y + 2, x + 2, y + 2);
-          g.drawLine(x + 2, y + 6, x + 2, y + 6);
-          g.drawLine(x + 2, y + 10, x + 2, y + 10);
-
-          g.drawLine(x + 4, y + 4, x + 4, y + 4);
-          g.drawLine(x + 4, y + 8, x + 4, y + 8);
-
-          g.drawLine(x + 6, y + 2, x + 6, y + 2);
-          g.drawLine(x + 6, y + 6, x + 6, y + 6);
-          g.drawLine(x + 6, y + 10, x + 6, y + 10);
-
-        }
-    }
-  }
-
-  /**
-   * A tree control icon.  This icon can be in one of two states: expanded and
-   * collapsed.
-   */
-  public static class TreeControlIcon implements Icon, Serializable
-  {
-
-    /** ???. */
-    protected boolean isLight;
-
-    /** A flag that controls whether or not the icon is collapsed. */
-    private boolean collapsed;
-
-    /**
-     * Creates a new icon.
-     *
-     * @param isCollapsed  a flag that controls whether the icon is in the
-     *                     collapsed state or the expanded state.
-     */
-    public TreeControlIcon(boolean isCollapsed)
-    {
-      collapsed = isCollapsed;
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return The width of the icon.
-     */
-    public int getIconWidth()
-    {
-      return 18;
-    }
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return The height of the icon.
-     */
-    public int getIconHeight()
-    {
-      return 18;
-    }
-
-    /**
-     * Paints the icon at the location (x, y).
-     *
-     * @param c the component.
-     * @param g the graphics device.
-     * @param x the x coordinate.
-     * @param y the y coordinate.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      // TODO: pick up appropriate UI colors
-      Color dark = new Color(99, 130, 191);
-      Color light = new Color(163, 184, 204);
-      Color white = Color.white;
-
-      x += 8;
-      y += 6;
-
-      final int w = 6;
-      final int wHalf = (w >> 2);
-      g.setColor(light);
-      g.drawOval(x, y, w, w);
-      g.setColor(dark);
-      g.fillOval(x + 1, y + 1, w - 1, w - 1);
-
-      if (collapsed)
-        g.fillRect(x + w, y + wHalf + 1, w, 2);
-      else
-        g.fillRect(x + wHalf + 1, y + w, 2, w);
-
-      g.setColor(white);
-      g.fillRect(x + wHalf + 1, y + wHalf + 1, 2, 2);
-
-    }
-
-    /**
-     * Simply calls {@link #paintIcon(Component, Graphics, int, int)}.
-     *
-     * @param c  the component.
-     * @param g  the graphics device.
-     * @param x  the x coordinate.
-     * @param y  the y coordinate.
-     */
-    public void paintMe(Component c, Graphics g, int x, int y)
-    {
-      paintIcon(c, g, x, y);
-    }
-  }
-
-  /**
-   * A tree folder icon.
-   */
-  public static class TreeFolderIcon extends FolderIcon16
-  {
-    /**
-     * Creates a new instance.
-     */
-    public TreeFolderIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the additional height for this icon, in this case <code>2</code>
-     * pixels.
-     *
-     * @return <code>2</code>.
-     */
-    public int getAdditionalHeight()
-    {
-      return 2;
-    }
-
-    /**
-     * Returns the vertical shift, in pixels, applied when painting the icon.
-     * This overridden method returns <code>-1</code>.
-     *
-     * @return The shift.
-     */
-    public int getShift()
-    {
-      return -1;
-    }
-  }
-
-  /**
-   * A tree leaf icon.
-   */
-  public static class TreeLeafIcon extends FileIcon16
-  {
-    /**
-     * Creates a new instance.
-     */
-    public TreeLeafIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the additional height for this icon, in this case <code>4</code>
-     * pixels.
-     *
-     * @return <code>4</code>.
-     */
-    public int getAdditionalHeight()
-    {
-      return 4;
-    }
-
-    /**
-     * Returns the vertical shift, in pixels, applied when painting the icon.
-     * This overridden method returns <code>2</code>.
-     *
-     * @return The shift.
-     */
-    public int getShift()
-    {
-      return 2;
-    }
-  }
-
-  /**
-   * An icon representing a hard disk.
-   *
-   * @see MetalIconFactory#getTreeHardDriveIcon()
-   */
-  private static class TreeHardDriveIcon
-    implements Icon, UIResource, Serializable
-  {
-
-    /**
-     * Creates a new icon instance.
-     */
-    public TreeHardDriveIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return <code>16</code>.
-     */
-    public int getIconWidth()
-    {
-      return 16;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return <code>16</code>.
-     */
-    public int getIconHeight()
-    {
-      return 16;
-    }
-
-    /**
-     * Paints the icon at the specified location, using colors from the
-     * current theme.
-     *
-     * @param c  the component (ignored).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate for the top-left of the icon.
-     * @param y  the y-coordinate for the top-left of the icon.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color saved = g.getColor();
-      g.setColor(MetalLookAndFeel.getBlack());
-      g.drawLine(x + 1, y + 4, x + 1, y + 5);
-      g.drawLine(x + 14, y + 4, x + 14, y + 5);
-      g.drawLine(x + 1, y + 7, x + 1, y + 8);
-      g.drawLine(x + 14, y + 7, x + 14, y + 8);
-      g.drawLine(x + 1, y + 10, x + 1, y + 11);
-      g.drawLine(x + 14, y + 10, x + 14, y + 11);
-
-      g.drawLine(x + 2, y + 3, x + 3, y + 3);
-      g.drawLine(x + 12, y + 3, x + 13, y + 3);
-      g.drawLine(x + 2, y + 6, x + 3, y + 6);
-      g.drawLine(x + 12, y + 6, x + 13, y + 6);
-      g.drawLine(x + 2, y + 9, x + 3, y + 9);
-      g.drawLine(x + 12, y + 9, x + 13, y + 9);
-      g.drawLine(x + 2, y + 12, x + 3, y + 12);
-      g.drawLine(x + 12, y + 12, x + 13, y + 12);
-
-      g.drawLine(x + 4, y + 2, x + 11, y + 2);
-      g.drawLine(x + 4, y + 7, x + 11, y + 7);
-      g.drawLine(x + 4, y + 10, x + 11, y + 10);
-      g.drawLine(x + 4, y + 13, x + 11, y + 13);
-
-      g.setColor(MetalLookAndFeel.getWhite());
-      g.fillRect(x + 4, y + 3, 2, 2);
-      g.drawLine(x + 6, y + 4, x + 6, y + 4);
-      g.drawLine(x + 7, y + 3, x + 9, y + 3);
-      g.drawLine(x + 8, y + 4, x + 8, y + 4);
-      g.drawLine(x + 11, y + 3, x + 11, y + 3);
-      g.fillRect(x + 2, y + 4, 2, 2);
-      g.fillRect(x + 2, y + 7, 2, 2);
-      g.fillRect(x + 2, y + 10, 2, 2);
-      g.drawLine(x + 4, y + 6, x + 4, y + 6);
-      g.drawLine(x + 4, y + 9, x + 4, y + 9);
-      g.drawLine(x + 4, y + 12, x + 4, y + 12);
-
-      g.setColor(MetalLookAndFeel.getControlShadow());
-      g.drawLine(x + 13, y + 4, x + 13, y + 4);
-      g.drawLine(x + 12, y + 5, x + 13, y + 5);
-      g.drawLine(x + 13, y + 7, x + 13, y + 7);
-      g.drawLine(x + 12, y + 8, x + 13, y + 8);
-      g.drawLine(x + 13, y + 10, x + 13, y + 10);
-      g.drawLine(x + 12, y + 11, x + 13, y + 11);
-
-      g.drawLine(x + 10, y + 5, x + 10, y + 5);
-      g.drawLine(x + 7, y + 6, x + 7, y + 6);
-      g.drawLine(x + 9, y + 6, x + 9, y + 6);
-      g.drawLine(x + 11, y + 6, x + 11, y + 6);
-
-      g.drawLine(x + 10, y + 8, x + 10, y + 8);
-      g.drawLine(x + 7, y + 9, x + 7, y + 9);
-      g.drawLine(x + 9, y + 9, x + 9, y + 9);
-      g.drawLine(x + 11, y + 9, x + 11, y + 9);
-
-      g.drawLine(x + 10, y + 11, x + 10, y + 11);
-      g.drawLine(x + 7, y + 12, x + 7, y + 12);
-      g.drawLine(x + 9, y + 12, x + 9, y + 12);
-      g.drawLine(x + 11, y + 12, x + 11, y + 12);
-
-      g.setColor(saved);
-    }
-  }
-
-  /**
-   * An icon representing a floppy disk.
-   *
-   * @see MetalIconFactory#getTreeFloppyDriveIcon()
-   */
-  private static class TreeFloppyDriveIcon
-    implements Icon, UIResource, Serializable
-  {
-
-    /**
-     * Creates a new icon instance.
-     */
-    public TreeFloppyDriveIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return <code>16</code>.
-     */
-    public int getIconWidth()
-    {
-      return 16;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return <code>16</code>.
-     */
-    public int getIconHeight()
-    {
-      return 16;
-    }
-
-    /**
-     * Paints the icon at the specified location, using colors from the
-     * current theme.
-     *
-     * @param c  the component (ignored).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate for the top-left of the icon.
-     * @param y  the y-coordinate for the top-left of the icon.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color saved = g.getColor();
-
-      g.setColor(MetalLookAndFeel.getBlack());
-      g.drawLine(x + 1, y + 1, x + 13, y + 1);
-      g.drawLine(x + 1, y + 1, x + 1, y + 14);
-      g.drawLine(x + 1, y + 14, x + 14, y + 14);
-      g.drawLine(x + 14, y + 2, x + 14, y + 14);
-
-      g.setColor(MetalLookAndFeel.getPrimaryControl());
-      g.fillRect(x + 2, y + 2, 12, 12);
-
-      g.setColor(MetalLookAndFeel.getControlShadow());
-      g.fillRect(x + 5, y + 2, 6, 5);
-      g.drawLine(x + 4, y + 8, x + 11, y + 8);
-      g.drawLine(x + 3, y + 9, x + 3, y + 13);
-      g.drawLine(x + 12, y + 9, x + 12, y + 13);
-
-      g.setColor(MetalLookAndFeel.getWhite());
-      g.fillRect(x + 8, y + 3, 2, 3);
-      g.fillRect(x + 4, y + 9, 8, 5);
-
-      g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
-      g.drawLine(x + 5, y + 10, x + 9, y + 10);
-      g.drawLine(x + 5, y + 12, x + 8, y + 12);
-
-      g.setColor(saved);
-    }
-  }
-
-  /**
-   * An icon representing a computer.
-   *
-   * @see MetalIconFactory#getTreeComputerIcon()
-   */
-  private static class TreeComputerIcon
-    implements Icon, UIResource, Serializable
-  {
-
-    /**
-     * Creates a new icon instance.
-     */
-    public TreeComputerIcon()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Returns the width of the icon, in pixels.
-     *
-     * @return <code>16</code>.
-     */
-    public int getIconWidth()
-    {
-      return 16;
-    }
-
-    /**
-     * Returns the height of the icon, in pixels.
-     *
-     * @return <code>16</code>.
-     */
-    public int getIconHeight()
-    {
-      return 16;
-    }
-
-    /**
-     * Paints the icon at the specified location, using colors from the
-     * current theme.
-     *
-     * @param c  the component (ignored).
-     * @param g  the graphics device.
-     * @param x  the x-coordinate for the top-left of the icon.
-     * @param y  the y-coordinate for the top-left of the icon.
-     */
-    public void paintIcon(Component c, Graphics g, int x, int y)
-    {
-      Color saved = g.getColor();
-
-      g.setColor(MetalLookAndFeel.getBlack());
-      g.drawLine(x + 3, y + 1, x + 12, y + 1);
-      g.drawLine(x + 2, y + 2, x + 2, y + 8);
-      g.drawLine(x + 13, y + 2, x + 13, y + 8);
-      g.drawLine(x + 3, y + 9, x + 3, y + 9);
-      g.drawLine(x + 12, y + 9, x + 12, y + 9);
-      g.drawRect(x + 1, y + 10, 13, 4);
-      g.drawLine(x + 5, y + 3, x + 10, y + 3);
-      g.drawLine(x + 5, y + 8, x + 10, y + 8);
-      g.drawLine(x + 4, y + 4, x + 4, y + 7);
-      g.drawLine(x + 11, y + 4, x + 11, y + 7);
-
-      g.setColor(MetalLookAndFeel.getPrimaryControl());
-      g.fillRect(x + 5, y + 4, 6, 4);
-
-      g.setColor(MetalLookAndFeel.getControlShadow());
-      g.drawLine(x + 6, y + 12, x + 8, y + 12);
-      g.drawLine(x + 10, y + 12, x + 12, y + 12);
-      g.setColor(saved);
-    }
-  }
-
-  /** The icon returned by {@link #getCheckBoxIcon()}. */
-  private static Icon checkBoxIcon;
-
-  /** The icon returned by {@link #getCheckBoxMenuItemIcon()}. */
-  private static Icon checkBoxMenuItemIcon;
-
-  /** The icon returned by {@link #getFileChooserDetailViewIcon()}. */
-  private static Icon fileChooserDetailViewIcon;
-
-  /** The icon returned by {@link #getFileChooserHomeFolderIcon()}. */
-  private static Icon fileChooserHomeFolderIcon;
-
-  /** The icon returned by {@link #getFileChooserListViewIcon()}. */
-  private static Icon fileChooserListViewIcon;
-
-  /** The icon returned by {@link #getFileChooserNewFolderIcon()}. */
-  private static Icon fileChooserNewFolderIcon;
-
-  /** The icon returned by {@link #getFileChooserUpFolderIcon()}. */
-  private static Icon fileChooserUpFolderIcon;
-
-  /** The cached RadioButtonIcon instance. */
-  private static RadioButtonIcon radioButtonIcon;
-
-  /** The icon returned by {@link #getRadioButtonMenuItemIcon()}. */
-  private static Icon radioButtonMenuItemIcon;
-
-  /** The icon returned by {@link #getInternalFrameDefaultMenuIcon()}. */
-  private static Icon internalFrameDefaultMenuIcon;
-
-  /** The icon returned by {@link #getTreeComputerIcon()}. */
-  private static Icon treeComputerIcon;
-
-  /** The icon instance returned by {@link #getTreeFloppyDriveIcon()}. */
-  private static Icon treeFloppyDriveIcon;
-
-  /** The icon instance returned by {@link #getTreeHardDriveIcon()}. */
-  private static Icon treeHardDriveIcon;
-
-  /** The icon instance returned by {@link #getHorizontalSliderThumbIcon()}. */
-  private static Icon horizontalSliderThumbIcon;
-
-  /** The icon instance returned by {@link #getVerticalSliderThumbIcon()}. */
-  private static Icon verticalSliderThumbIcon;
-
-  /**
-   * Creates a new instance.  All the methods are static, so creating an
-   * instance isn't necessary.
-   */
-  public MetalIconFactory()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Returns an icon for use when rendering the {@link JCheckBox} component.
-   *
-   * @return A check box icon.
-   *
-   * @since 1.3
-   */
-  public static Icon getCheckBoxIcon()
-  {
-    if (checkBoxIcon == null)
-      checkBoxIcon = new MetalCheckBoxIcon();
-    return checkBoxIcon;
-  }
-
-  /**
-   * Returns an icon for use when rendering the {@link JCheckBoxMenuItem}
-   * component.
-   *
-   * @return An icon.
-   */
-  public static Icon getCheckBoxMenuItemIcon()
-  {
-    if (checkBoxMenuItemIcon == null)
-      checkBoxMenuItemIcon = new CheckBoxMenuItemIcon();
-    return checkBoxMenuItemIcon;
-  }
-
-  /**
-   * Returns an icon for use by the {@link JFileChooser} component.
-   *
-   * @return An icon.
-   */
-  public static Icon getFileChooserDetailViewIcon()
-  {
-    if (fileChooserDetailViewIcon == null)
-      fileChooserDetailViewIcon = new FileChooserDetailViewIcon();
-    return fileChooserDetailViewIcon;
-  }
-
-  /**
-   * Returns an icon for use by the {@link JFileChooser} component.
-   *
-   * @return An icon.
-   */
-  public static Icon getFileChooserHomeFolderIcon()
-  {
-    if (fileChooserHomeFolderIcon == null)
-      fileChooserHomeFolderIcon = new FileChooserHomeFolderIcon();
-    return fileChooserHomeFolderIcon;
-  }
-
-  /**
-   * Returns an icon for use by the {@link JFileChooser} component.
-   *
-   * @return An icon.
-   */
-  public static Icon getFileChooserListViewIcon()
-  {
-    if (fileChooserListViewIcon == null)
-      fileChooserListViewIcon = new FileChooserListViewIcon();
-    return fileChooserListViewIcon;
-  }
-
-  /**
-   * Returns an icon for use by the {@link JFileChooser} component.
-   *
-   * @return An icon.
-   */
-  public static Icon getFileChooserNewFolderIcon()
-  {
-    if (fileChooserNewFolderIcon == null)
-      fileChooserNewFolderIcon = new FileChooserNewFolderIcon();
-    return fileChooserNewFolderIcon;
-  }
-
-  /**
-   * Returns an icon for use by the {@link JFileChooser} component.
-   *
-   * @return An icon.
-   */
-  public static Icon getFileChooserUpFolderIcon()
-  {
-    if (fileChooserUpFolderIcon == null)
-      fileChooserUpFolderIcon = new FileChooserUpFolderIcon();
-    return fileChooserUpFolderIcon;
-  }
-
-  /**
-   * Returns an icon for RadioButtons in the Metal L&amp;F.
-   *
-   * @return an icon for RadioButtons in the Metal L&amp;F
-   */
-  public static Icon getRadioButtonIcon()
-  {
-    if (radioButtonIcon == null)
-      radioButtonIcon = new RadioButtonIcon();
-    return radioButtonIcon;
-  }
-
-  /**
-   * Creates a new instance of the icon used in a {@link JRadioButtonMenuItem}.
-   *
-   * @return A new icon instance.
-   */
-  public static Icon getRadioButtonMenuItemIcon()
-  {
-    if (radioButtonMenuItemIcon == null)
-      radioButtonMenuItemIcon = new RadioButtonMenuItemIcon();
-    return radioButtonMenuItemIcon;
-  }
-
-  /**
-   * Returns the icon used to display the thumb for a horizontally oriented
-   * {@link JSlider}.
-   *
-   * @return The icon.
-   */
-  public static Icon getHorizontalSliderThumbIcon()
-  {
-    if (horizontalSliderThumbIcon == null)
-      horizontalSliderThumbIcon = new HorizontalSliderThumbIcon();
-    return horizontalSliderThumbIcon;
-  }
-
-  /**
-   * Creates a new icon used to represent the 'close' button in the title
-   * pane of a {@link JInternalFrame}.
-   *
-   * @param size  the icon size.
-   *
-   * @return A close icon.
-   */
-  public static Icon getInternalFrameCloseIcon(int size)
-  {
-    return new InternalFrameCloseIcon(size);
-  }
-
-  /**
-   * Creates a new icon for the menu in a {@link JInternalFrame}.  This is the
-   * icon displayed at the top left of the frame.
-   *
-   * @return A menu icon.
-   */
-  public static Icon getInternalFrameDefaultMenuIcon()
-  {
-    if (internalFrameDefaultMenuIcon == null)
-      internalFrameDefaultMenuIcon = new InternalFrameDefaultMenuIcon();
-    return internalFrameDefaultMenuIcon;
-  }
-
-  /**
-   * Creates a new icon for the 'maximize' button in a {@link JInternalFrame}.
-   *
-   * @param size  the icon size in pixels.
-   *
-   * @return The icon.
-   *
-   * @see #getInternalFrameAltMaximizeIcon(int)
-   */
-  public static Icon getInternalFrameMaximizeIcon(int size)
-  {
-    return new InternalFrameMaximizeIcon();
-  }
-
-  /**
-   * Returns the icon used for the minimize button in the frame title for a
-   * {@link JInternalFrame}.
-   *
-   * @param size  the icon size in pixels (ignored by this implementation).
-   *
-   * @return The icon.
-   */
-  public static Icon getInternalFrameMinimizeIcon(int size)
-  {
-    return new InternalFrameMinimizeIcon();
-  }
-
-  /**
-   * Creates a new icon for the 'restore' button in a {@link JInternalFrame}
-   * that has been maximised.
-   *
-   * @param size  the icon size in pixels.
-   *
-   * @return The icon.
-   *
-   * @see #getInternalFrameMaximizeIcon(int)
-   */
-  public static Icon getInternalFrameAltMaximizeIcon(int size)
-  {
-    return new InternalFrameAltMaximizeIcon(size);
-  }
-
-  /**
-   * Returns the icon used to display the thumb for a vertically oriented
-   * {@link JSlider}.
-   *
-   * @return The icon.
-   */
-  public static Icon getVerticalSliderThumbIcon()
-  {
-    if (verticalSliderThumbIcon == null)
-      verticalSliderThumbIcon = new VerticalSliderThumbIcon();
-    return verticalSliderThumbIcon;
-  }
-
-  /**
-   * Creates and returns a new tree folder icon.
-   *
-   * @return A new tree folder icon.
-   */
-  public static Icon getTreeFolderIcon()
-  {
-    return new TreeFolderIcon();
-  }
-
-  /**
-   * Creates and returns a new tree leaf icon.
-   *
-   * @return A new tree leaf icon.
-   */
-  public static Icon getTreeLeafIcon()
-  {
-    return new TreeLeafIcon();
-  }
-
-  /**
-   * Creates and returns a tree control icon.
-   *
-   * @param isCollapsed  a flag that controls whether the icon is in the
-   *                     collapsed or expanded state.
-   *
-   * @return A tree control icon.
-   */
-  public static Icon getTreeControlIcon(boolean isCollapsed)
-  {
-    return new TreeControlIcon(isCollapsed);
-  }
-
-  /**
-   * Returns a <code>16x16</code> icon representing a computer.
-   *
-   * @return The icon.
-   */
-  public static Icon getTreeComputerIcon()
-  {
-    if (treeComputerIcon == null)
-      treeComputerIcon = new TreeComputerIcon();
-    return treeComputerIcon;
-  }
-
-  /**
-   * Returns a <code>16x16</code> icon representing a floppy disk.
-   *
-   * @return The icon.
-   */
-  public static Icon getTreeFloppyDriveIcon()
-  {
-    if (treeFloppyDriveIcon == null)
-      treeFloppyDriveIcon = new TreeFloppyDriveIcon();
-    return treeFloppyDriveIcon;
-  }
-
-  /**
-   * Returns a <code>16x16</code> icon representing a hard disk.
-   *
-   * @return The icon.
-   */
-  public static Icon getTreeHardDriveIcon()
-  {
-    if (treeHardDriveIcon == null)
-      treeHardDriveIcon = new TreeHardDriveIcon();
-    return treeHardDriveIcon;
-  }
-
-  /**
-   * Returns a new instance of a 4 x 8 icon showing a small black triangle that
-   * points to the right.  This is displayed in menu items that have a
-   * sub menu.
-   *
-   * @return The icon.
-   */
-  public static Icon getMenuArrowIcon()
-  {
-    if (menuArrow == null)
-      menuArrow = new Icon()
-      {
-        public int getIconHeight()
-        {
-          return 8;
-        }
-
-        public int getIconWidth()
-        {
-          return 4;
-        }
-
-        public void paintIcon(Component c, Graphics g, int x, int y)
-        {
-          Color saved = g.getColor();
-          g.setColor(Color.BLACK);
-          for (int i = 0; i < 4; i++)
-            g.drawLine(x + i, y + i, x + i, y + 7 - i);
-          g.setColor(saved);
-        }
-      };
-    return menuArrow;
-  }
-
-  /**
-   * Returns a new instance of a 4 x 8 icon showing a small black triangle that
-   * points to the right. This is displayed in menu items that have a sub menu.
-   *
-   * @return The icon.
-   */
-  public static Icon getMenuItemArrowIcon()
-  {
-    if (menuItemArrow == null)
-      menuItemArrow = new Icon()
-      {
-        public int getIconHeight()
-        {
-          return 8;
-        }
-
-        public int getIconWidth()
-        {
-          return 4;
-        }
-
-        public void paintIcon(Component c, Graphics g, int x, int y)
-        {
-          Color saved = g.getColor();
-          g.setColor(Color.BLACK);
-          for (int i = 0; i < 4; i++)
-            g.drawLine(x + i, y + i, x + i, y + 7 - i);
-          g.setColor(saved);
-        }
-      };
-    return menuItemArrow;
-  }
-
-  /**
-   * Returns a new instance of a 13 x 13 icon showing a small black check mark.
-   *
-   * @return The icon.
-   */
-  public static Icon getMenuItemCheckIcon()
-  {
-    return new Icon()
-    {
-      public int getIconHeight()
-      {
-        return 13;
-      }
-
-      public int getIconWidth()
-      {
-        return 13;
-      }
-
-      public void paintIcon(Component c, Graphics g, int x, int y)
-      {
-        Color saved = g.getColor();
-        g.setColor(Color.BLACK);
-        g.drawLine(3 + x, 5 + y, 3 + x, 9 + y);
-        g.drawLine(4 + x, 5 + y, 4 + x, 9 + y);
-        g.drawLine(5 + x, 7 + y, 9 + x, 3 + y);
-        g.drawLine(5 + x, 8 + y, 9 + x, 4 + y);
-        g.setColor(saved);
-      }
-    };
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java b/libjava/classpath/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java
deleted file mode 100644
index 08de774..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java
+++ /dev/null
@@ -1,457 +0,0 @@
-/* MetalInternalFrameTitlePane.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.LayoutManager;
-import java.awt.Rectangle;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.Icon;
-import javax.swing.JInternalFrame;
-import javax.swing.JLabel;
-import javax.swing.JMenu;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.plaf.basic.BasicInternalFrameTitlePane;
-
-
-/**
- * The title pane for a {@link JInternalFrame} (see
- * {@link MetalInternalFrameUI#createNorthPane(JInternalFrame)}).  This can
- * be displayed in two styles: one for regular internal frames, and the other
- * for "palette" style internal frames.
- */
-public class MetalInternalFrameTitlePane extends BasicInternalFrameTitlePane
-{
-
-  /**
-   * A property change handler that listens for changes to the
-   * <code>JInternalFrame.isPalette</code> property and updates the title
-   * pane as appropriate.
-   */
-  class MetalInternalFrameTitlePanePropertyChangeHandler
-    extends PropertyChangeHandler
-  {
-    /**
-     * Creates a new handler.
-     */
-    public MetalInternalFrameTitlePanePropertyChangeHandler()
-    {
-      super();
-    }
-
-    /**
-     * Handles <code>JInternalFrame.isPalette</code> property changes, with all
-     * other property changes being passed to the superclass.
-     *
-     * @param e  the event.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      String propName = e.getPropertyName();
-      if (e.getPropertyName().equals(JInternalFrame.FRAME_ICON_PROPERTY))
-        {
-          title.setIcon(frame.getFrameIcon());
-        }
-      else if (propName.equals("JInternalFrame.isPalette"))
-        {
-          if (e.getNewValue().equals(Boolean.TRUE))
-            setPalette(true);
-          else
-            setPalette(false);
-        }
-      else
-        super.propertyChange(e);
-    }
-  }
-
-  /**
-   * A layout manager for the title pane.
-   *
-   * @see #createLayout()
-   */
-  private class MetalTitlePaneLayout implements LayoutManager
-  {
-    /**
-     * Creates a new <code>TitlePaneLayout</code> object.
-     */
-    public MetalTitlePaneLayout()
-    {
-      // Do nothing.
-    }
-
-    /**
-     * Adds a Component to the Container.
-     *
-     * @param name The name to reference the added Component by.
-     * @param c The Component to add.
-     */
-    public void addLayoutComponent(String name, Component c)
-    {
-      // Do nothing.
-    }
-
-    /**
-     * This method is called to lay out the children of the Title Pane.
-     *
-     * @param c The Container to lay out.
-     */
-    public void layoutContainer(Container c)
-    {
-
-      Dimension size = c.getSize();
-      Insets insets = c.getInsets();
-      int width = size.width - insets.left - insets.right;
-      int height = size.height - insets.top - insets.bottom;
-
-
-      int loc = width - insets.right - 1;
-      int top = insets.top + 2;
-      int buttonHeight = height - 4;
-      if (closeButton.isVisible())
-        {
-          int buttonWidth = closeIcon.getIconWidth();
-          loc -= buttonWidth + 2;
-          closeButton.setBounds(loc, top, buttonWidth, buttonHeight);
-          loc -= 6;
-        }
-
-      if (maxButton.isVisible())
-        {
-          int buttonWidth = maxIcon.getIconWidth();
-          loc -= buttonWidth + 4;
-          maxButton.setBounds(loc, top, buttonWidth, buttonHeight);
-        }
-
-      if (iconButton.isVisible())
-        {
-          int buttonWidth = minIcon.getIconWidth();
-          loc -= buttonWidth + 4;
-          iconButton.setBounds(loc, top, buttonWidth, buttonHeight);
-          loc -= 2;
-        }
-
-      Dimension titlePreferredSize = title.getPreferredSize();
-      title.setBounds(insets.left + 5, insets.top,
-              Math.min(titlePreferredSize.width, loc - insets.left - 10),
-              height);
-
-    }
-
-    /**
-     * This method returns the minimum size of the given Container given the
-     * children that it has.
-     *
-     * @param c The Container to get a minimum size for.
-     *
-     * @return The minimum size of the Container.
-     */
-    public Dimension minimumLayoutSize(Container c)
-    {
-      return preferredLayoutSize(c);
-    }
-
-    /**
-     * Returns the preferred size of the given Container taking
-     * into account the children that it has.
-     *
-     * @param c The Container to lay out.
-     *
-     * @return The preferred size of the Container.
-     */
-    public Dimension preferredLayoutSize(Container c)
-    {
-      if (isPalette)
-        return new Dimension(paletteTitleHeight, paletteTitleHeight);
-      else
-        return new Dimension(22, 22);
-    }
-
-    /**
-     * Removes a Component from the Container.
-     *
-     * @param c The Component to remove.
-     */
-    public void removeLayoutComponent(Component c)
-    {
-      // Nothing to do here.
-    }
-  }
-
-  /** A flag indicating whether the title pane uses the palette style. */
-  protected boolean isPalette;
-
-  /**
-   * The icon used for the close button - this is fetched from the look and
-   * feel defaults using the key <code>InternalFrame.paletteCloseIcon</code>.
-   */
-  protected Icon paletteCloseIcon;
-
-  /**
-   * The height of the title pane when <code>isPalette</code> is
-   * <code>true</code>.  This value is fetched from the look and feel defaults
-   * using the key <code>InternalFrame.paletteTitleHeight</code>.
-   */
-  protected int paletteTitleHeight;
-
-  /** The label used to display the title for the internal frame. */
-  JLabel title;
-
-  /**
-   * Creates a new title pane for the specified frame.
-   *
-   * @param f  the internal frame.
-   */
-  public MetalInternalFrameTitlePane(JInternalFrame f)
-  {
-    super(f);
-    isPalette = false;
-  }
-
-  /**
-   * Fetches the colors used in the title pane.
-   */
-  protected void installDefaults()
-  {
-    super.installDefaults();
-    selectedTextColor = MetalLookAndFeel.getControlTextColor();
-    selectedTitleColor = MetalLookAndFeel.getWindowTitleBackground();
-    notSelectedTextColor = MetalLookAndFeel.getInactiveControlTextColor();
-    notSelectedTitleColor = MetalLookAndFeel.getWindowTitleInactiveBackground();
-
-    paletteTitleHeight = UIManager.getInt("InternalFrame.paletteTitleHeight");
-    paletteCloseIcon = UIManager.getIcon("InternalFrame.paletteCloseIcon");
-    minIcon = MetalIconFactory.getInternalFrameAltMaximizeIcon(16);
-
-    title = new JLabel(frame.getTitle(),
-            MetalIconFactory.getInternalFrameDefaultMenuIcon(),
-            SwingConstants.LEFT);
-  }
-
-  /**
-   * Clears the colors used for the title pane.
-   */
-  protected void uninstallDefaults()
-  {
-    super.uninstallDefaults();
-    selectedTextColor = null;
-    selectedTitleColor = null;
-    notSelectedTextColor = null;
-    notSelectedTitleColor = null;
-    paletteCloseIcon = null;
-    minIcon = null;
-    title = null;
-  }
-
-  /**
-   * Calls the super class to create the buttons, then calls
-   * <code>setBorderPainted(false)</code> and
-   * <code>setContentAreaFilled(false)</code> for each button.
-   */
-  protected void createButtons()
-  {
-    super.createButtons();
-    closeButton.setBorderPainted(false);
-    closeButton.setContentAreaFilled(false);
-    iconButton.setBorderPainted(false);
-    iconButton.setContentAreaFilled(false);
-    maxButton.setBorderPainted(false);
-    maxButton.setContentAreaFilled(false);
-  }
-
-  /**
-   * Overridden to do nothing.
-   */
-  protected void addSystemMenuItems(JMenu systemMenu)
-  {
-    // do nothing
-  }
-
-  /**
-   * Overridden to do nothing.
-   */
-  protected void showSystemMenu()
-  {
-      // do nothing
-  }
-
-  /**
-   * Adds the sub components of the title pane.
-   */
-  protected void addSubComponents()
-  {
-    // FIXME:  this method is probably overridden to only add the required
-    // buttons
-    add(title);
-    add(closeButton);
-    add(iconButton);
-    add(maxButton);
-  }
-
-  /**
-   * Creates a new instance of <code>MetalTitlePaneLayout</code> (not part of
-   * the public API).
-   *
-   * @return A new instance of <code>MetalTitlePaneLayout</code>.
-   */
-  protected LayoutManager createLayout()
-  {
-    return new MetalTitlePaneLayout();
-  }
-
-  /**
-   * Draws the title pane in the palette style.
-   *
-   * @param g  the graphics device.
-   *
-   * @see #paintComponent(Graphics)
-   */
-  public void paintPalette(Graphics g)
-  {
-    Color savedColor = g.getColor();
-    Rectangle b = SwingUtilities.getLocalBounds(this);
-
-    if (UIManager.get("InternalFrame.activeTitleGradient") != null
-        && frame.isSelected())
-      {
-        MetalUtils.paintGradient(g, b.x, b.y, b.width, b.height,
-                                 SwingConstants.VERTICAL,
-                                 "InternalFrame.activeTitleGradient");
-      }
-    MetalUtils.fillMetalPattern(this, g, b.x + 4, b.y + 2, b.width
-            - paletteCloseIcon.getIconWidth() - 13, b.height - 5,
-            MetalLookAndFeel.getPrimaryControlHighlight(),
-            MetalLookAndFeel.getBlack());
-
-    // draw a line separating the title pane from the frame content
-    Dimension d = getSize();
-    g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-    g.drawLine(0, d.height - 1, d.width - 1, d.height - 1);
-
-    g.setColor(savedColor);
-  }
-
-  /**
-   * Paints a representation of the current state of the internal frame.
-   *
-   * @param g  the graphics device.
-   */
-  public void paintComponent(Graphics g)
-  {
-    Color savedColor = g.getColor();
-    if (isPalette)
-      paintPalette(g);
-    else
-      {
-        paintTitleBackground(g);
-        paintChildren(g);
-        Dimension d = getSize();
-        if (frame.isSelected())
-          g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-        else
-          g.setColor(MetalLookAndFeel.getControlDarkShadow());
-
-        // put a dot in each of the top corners
-        g.drawLine(0, 0, 0, 0);
-        g.drawLine(d.width - 1, 0, d.width - 1, 0);
-
-        g.drawLine(0, d.height - 1, d.width - 1, d.height - 1);
-
-        // draw the metal pattern
-        if (UIManager.get("InternalFrame.activeTitleGradient") != null
-            && frame.isSelected())
-          {
-            MetalUtils.paintGradient(g, 0, 0, getWidth(), getHeight(),
-                                     SwingConstants.VERTICAL,
-                                     "InternalFrame.activeTitleGradient");
-          }
-
-        Rectangle b = title.getBounds();
-        int startX = b.x + b.width + 5;
-        int endX = startX;
-        if (iconButton.isVisible())
-          endX = Math.max(iconButton.getX(), endX);
-        else if (maxButton.isVisible())
-          endX = Math.max(maxButton.getX(), endX);
-        else if (closeButton.isVisible())
-          endX = Math.max(closeButton.getX(), endX);
-        endX -= 7;
-        if (endX > startX)
-          MetalUtils.fillMetalPattern(this, g, startX, 3, endX - startX,
-              getHeight() - 6, Color.white, Color.gray);
-      }
-    g.setColor(savedColor);
-  }
-
-  /**
-   * Sets the flag that controls whether the title pane is drawn in the
-   * palette style or the regular style.
-   *
-   * @param b  the new value of the flag.
-   */
-  public void setPalette(boolean b)
-  {
-    isPalette = b;
-    title.setVisible(!isPalette);
-    iconButton.setVisible(!isPalette && frame.isIconifiable());
-    maxButton.setVisible(!isPalette && frame.isMaximizable());
-    if (isPalette)
-      closeButton.setIcon(paletteCloseIcon);
-    else
-      closeButton.setIcon(closeIcon);
-  }
-
-  /**
-   * Creates and returns a property change handler for the title pane.
-   *
-   * @return The property change handler.
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new MetalInternalFrameTitlePanePropertyChangeHandler();
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalInternalFrameUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalInternalFrameUI.java
deleted file mode 100644
index 5eda2ff..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalInternalFrameUI.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/* MetalInternalFrameUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.ActionMap;
-import javax.swing.JComponent;
-import javax.swing.JInternalFrame;
-import javax.swing.SwingUtilities;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicInternalFrameUI;
-
-/**
- * A UI delegate for the {@link JInternalFrame} component.
- */
-public class MetalInternalFrameUI
-  extends BasicInternalFrameUI
-{
-  /**
-   * The key (<code>JInternalFrame.isPalette</code>) for the client property
-   * that controls whether the internal frame is displayed using the palette
-   * style.
-   */
-  protected static String IS_PALETTE = "JInternalFrame.isPalette";
-
-  /**
-   * Constructs a new instance of <code>MetalInternalFrameUI</code>.
-   *
-   * @param frame  the frame.
-   */
-  public MetalInternalFrameUI(JInternalFrame frame)
-  {
-    super(frame);
-  }
-
-  /**
-   * Returns an instance of <code>MetalInternalFrameUI</code>.
-   *
-   * @param component the internal frame.
-   *
-   * @return an instance of <code>MetalInternalFrameUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalInternalFrameUI((JInternalFrame) component);
-  }
-
-  /**
-   * Sets the fields and properties for the component.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    JInternalFrame f = (JInternalFrame) c;
-    boolean isPalette = false;
-    Boolean p = (Boolean) f.getClientProperty(IS_PALETTE);
-    if (p != null)
-      isPalette = p.booleanValue();
-    setPalette(isPalette);
-  }
-
-  /**
-   * Creates and returns the component that will be used for the north pane
-   * of the {@link JInternalFrame}.
-   *
-   * @param w  the internal frame.
-   *
-   * @return A new instance of {@link MetalInternalFrameTitlePane}.
-   */
-  protected JComponent createNorthPane(JInternalFrame w)
-  {
-    titlePane = new MetalInternalFrameTitlePane(w);
-    return titlePane;
-  }
-
-  /**
-   * Sets the state of the {@link JInternalFrame} to reflect whether or not
-   * it is using the palette style.  When a frame is displayed as a palette,
-   * it uses a different border and the title pane is drawn differently.
-   *
-   * @param isPalette  use the palette style?
-   */
-  public void setPalette(boolean isPalette)
-  {
-    MetalInternalFrameTitlePane title = (MetalInternalFrameTitlePane) northPane;
-    title.setPalette(isPalette);
-    if (isPalette)
-      frame.setBorder(new MetalBorders.PaletteBorder());
-    else
-      frame.setBorder(new MetalBorders.InternalFrameBorder());
-  }
-
-  /** A listener that is used to handle IS_PALETTE property changes. */
-  private PropertyChangeListener paletteListener;
-
-  /**
-   * Adds the required listeners.
-   */
-  protected void installListeners()
-  {
-    super.installListeners();
-    paletteListener = new PropertyChangeListener()
-    {
-      public void propertyChange(PropertyChangeEvent e)
-      {
-        if (e.getPropertyName().equals(IS_PALETTE))
-          {
-            if (Boolean.TRUE.equals(e.getNewValue()))
-              setPalette(true);
-            else
-              setPalette(false);
-          }
-      }
-    };
-    frame.addPropertyChangeListener(paletteListener);
-  }
-
-  /**
-   * Removes the listeners used.
-   */
-  protected void uninstallListeners()
-  {
-    super.uninstallListeners();
-    frame.removePropertyChangeListener(IS_PALETTE, paletteListener);
-    paletteListener = null;
-  }
-
-  /**
-   * Installs keyboard actions. This is overridden to remove the
-   * <code>showSystemMenu</code> Action that is installed by the
-   * <code>BasicInternalFrameUI</code>, since Metal JInternalFrames don't have
-   * a system menu.
-   */
-  protected void installKeyboardActions()
-  {
-    super.installKeyboardActions();
-    ActionMap am = SwingUtilities.getUIActionMap(frame);
-    if (am != null)
-      {
-        am.remove("showSystemMenu");
-      }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalLabelUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalLabelUI.java
deleted file mode 100644
index 915e501..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalLabelUI.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/* MetalLabelUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Graphics;
-
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicGraphicsUtils;
-import javax.swing.plaf.basic.BasicLabelUI;
-
-/**
- * A UI delegate for the {@link JLabel} component.
- */
-public class MetalLabelUI
-  extends BasicLabelUI
-{
-
-  /** The shared instance of the UI delegate. */
-  protected static MetalLabelUI metalLabelUI;
-
-  /**
-   * Constructs a new instance of <code>MetalLabelUI</code>.
-   */
-  public MetalLabelUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a shared instance of <code>MetalLabelUI</code>.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return A shared instance of <code>MetalLabelUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    if (metalLabelUI == null)
-      metalLabelUI = new MetalLabelUI();
-    return metalLabelUI;
-  }
-
-  /**
-   * Draws the text for a disabled label, using the color defined in the
-   * {@link UIManager} defaults with the key
-   * <code>Label.disabledForeground</code>.
-   *
-   * @param l  the label.
-   * @param g  the graphics device.
-   * @param s  the label text.
-   * @param textX  the x-coordinate for the label.
-   * @param textY  the y-coordinate for the label.
-   */
-  protected void paintDisabledText(JLabel l, Graphics g, String s, int textX,
-                                 int textY)
-  {
-    Color savedColor = g.getColor();
-    g.setColor(UIManager.getColor("Label.disabledForeground"));
-    int mnemIndex = l.getDisplayedMnemonicIndex();
-    if (mnemIndex != -1)
-      BasicGraphicsUtils.drawStringUnderlineCharAt(g, s, mnemIndex, textX,
-          textY);
-    else
-      g.drawString(s, textX, textY);
-
-    g.setColor(savedColor);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalLookAndFeel.java b/libjava/classpath/javax/swing/plaf/metal/MetalLookAndFeel.java
deleted file mode 100644
index acc3fed..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalLookAndFeel.java
+++ /dev/null
@@ -1,1372 +0,0 @@
-/* MetalLookAndFeel.java
-   Copyright (C) 2002, 2005, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import gnu.classpath.SystemProperties;
-
-import java.awt.Color;
-import java.awt.Font;
-
-import javax.swing.LookAndFeel;
-import javax.swing.UIDefaults;
-import javax.swing.UIManager;
-import javax.swing.plaf.BorderUIResource;
-import javax.swing.plaf.ColorUIResource;
-import javax.swing.plaf.FontUIResource;
-import javax.swing.plaf.InsetsUIResource;
-import javax.swing.plaf.BorderUIResource.LineBorderUIResource;
-import javax.swing.plaf.basic.BasicLookAndFeel;
-
-
-/**
- * A custom look and feel that is designed to look similar across different
- * operating systems.  To install this look and feel, add the following code
- * (or something similar) near the start of your application:</p>
- * <pre>
- * try
- * {
- * &nbsp;&nbsp;UIManager.setLookAndFeel(new MetalLookAndFeel());
- * }
- * catch (UnsupportedLookAndFeelException e)
- * {
- * &nbsp;&nbsp;e.printStackTrace();
- * }</pre>
- */
-public class MetalLookAndFeel extends BasicLookAndFeel
-{
-  private static final long serialVersionUID = 6680646159193457980L;
-
-  /** The current theme. */
-  private static MetalTheme theme;
-
-  /**
-   * Creates a new instance of the Metal look and feel.
-   */
-  public MetalLookAndFeel()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Sets the current theme to a new instance of {@link DefaultMetalTheme}.
-   */
-  protected void createDefaultTheme()
-  {
-    getCurrentTheme();
-  }
-
-  /**
-   * Returns <code>false</code> to indicate that this look and feel does not
-   * attempt to emulate the look and feel of native applications on the host
-   * platform.
-   *
-   * @return <code>false</code>.
-   */
-  public boolean isNativeLookAndFeel()
-  {
-    return false;
-  }
-
-  /**
-   * Returns <code>true</code> to indicate that this look and feel is supported
-   * on all platforms.
-   *
-   * @return <code>true</code>.
-   */
-  public boolean isSupportedLookAndFeel()
-  {
-    return true;
-  }
-
-  /**
-   * Returns a string describing the look and feel.  In this case, the method
-   * returns "Metal look and feel".
-   *
-   * @return A string describing the look and feel.
-   */
-  public String getDescription()
-  {
-    return "The Java(tm) Look and Feel";
-  }
-
-  /**
-   * Returns the look and feel identifier.
-   *
-   * @return "MetalLookAndFeel".
-   */
-  public String getID()
-  {
-    return "Metal";
-  }
-
-  /**
-   * Returns the look and feel name.
-   *
-   * @return "MetalLookAndFeel".
-   */
-  public String getName()
-  {
-    return "Metal";
-  }
-
-  public UIDefaults getDefaults()
-  {
-    createDefaultTheme();
-    UIDefaults def = super.getDefaults();
-
-    theme.addCustomEntriesToTable(def);
-    return def;
-  }
-
-  /**
-   * Returns the accelerator foreground color from the installed theme.
-   *
-   * @return The accelerator foreground color.
-   */
-  public static ColorUIResource getAcceleratorForeground()
-  {
-    if (theme != null)
-      return theme.getAcceleratorForeground();
-    return null;
-  }
-
-  /**
-   * Returns the accelerator selected foreground color from the installed
-   * theme.
-   *
-   * @return The accelerator selected foreground color.
-   */
-  public static ColorUIResource getAcceleratorSelectedForeground()
-  {
-    if (theme != null)
-      return theme.getAcceleratorSelectedForeground();
-    return null;
-  }
-
-  /**
-   * Returns the color black from the installed theme.
-   *
-   * @return The color black.
-   */
-  public static ColorUIResource getBlack()
-  {
-    if (theme != null)
-      return theme.getBlack();
-    return null;
-  }
-
-  /**
-   * Returns the control color from the installed theme.
-   *
-   * @return The control color.
-   */
-  public static ColorUIResource getControl()
-  {
-    if (theme != null)
-      return theme.getControl();
-    return null;
-  }
-
-  /**
-   * Returns the color used for dark shadows on controls, from the installed
-   * theme.
-   *
-   * @return The color used for dark shadows on controls.
-   */
-  public static ColorUIResource getControlDarkShadow()
-  {
-    if (theme != null)
-      return theme.getControlDarkShadow();
-    return null;
-  }
-
-  /**
-   * Returns the color used for disabled controls, from the installed theme.
-   *
-   * @return The color used for disabled controls.
-   */
-  public static ColorUIResource getControlDisabled()
-  {
-    if (theme != null)
-      return theme.getControlDisabled();
-    return null;
-  }
-
-  /**
-   * Returns the color used to draw highlights for controls, from the installed
-   * theme.
-   *
-   * @return The color used to draw highlights for controls.
-   */
-  public static ColorUIResource getControlHighlight()
-  {
-    if (theme != null)
-      return theme.getControlHighlight();
-    return null;
-  }
-
-  /**
-   * Returns the color used to display control info, from the installed
-   * theme.
-   *
-   * @return The color used to display control info.
-   */
-  public static ColorUIResource getControlInfo()
-  {
-    if (theme != null)
-      return theme.getControlInfo();
-    return null;
-  }
-
-  /**
-   * Returns the color used to draw shadows for controls, from the installed
-   * theme.
-   *
-   * @return The color used to draw shadows for controls.
-   */
-  public static ColorUIResource getControlShadow()
-  {
-    if (theme != null)
-      return theme.getControlShadow();
-    return null;
-  }
-
-  /**
-   * Returns the color used for text on controls, from the installed theme.
-   *
-   * @return The color used for text on controls.
-   */
-  public static ColorUIResource getControlTextColor()
-  {
-    if (theme != null)
-      return theme.getControlTextColor();
-    return null;
-  }
-
-  /**
-   * Returns the font used for text on controls, from the installed theme.
-   *
-   * @return The font used for text on controls.
-   */
-  public static FontUIResource getControlTextFont()
-  {
-    if (theme != null)
-      return theme.getControlTextFont();
-    return null;
-  }
-
-  /**
-   * Returns the color used for the desktop background, from the installed
-   * theme.
-   *
-   * @return The color used for the desktop background.
-   */
-  public static ColorUIResource getDesktopColor()
-  {
-    if (theme != null)
-      return theme.getDesktopColor();
-    return null;
-  }
-
-  /**
-   * Returns the color used to draw focus highlights, from the installed
-   * theme.
-   *
-   * @return The color used to draw focus highlights.
-   */
-  public static ColorUIResource getFocusColor()
-  {
-    if (theme != null)
-      return theme.getFocusColor();
-    return null;
-  }
-
-  /**
-   * Returns the color used to draw highlighted text, from the installed
-   * theme.
-   *
-   * @return The color used to draw highlighted text.
-   */
-  public static ColorUIResource getHighlightedTextColor()
-  {
-    if (theme != null)
-      return theme.getHighlightedTextColor();
-    return null;
-  }
-
-  /**
-   * Returns the color used to draw text on inactive controls, from the
-   * installed theme.
-   *
-   * @return The color used to draw text on inactive controls.
-   */
-  public static ColorUIResource getInactiveControlTextColor()
-  {
-    if (theme != null)
-      return theme.getInactiveControlTextColor();
-    return null;
-  }
-
-  /**
-   * Returns the color used to draw inactive system text, from the installed
-   * theme.
-   *
-   * @return The color used to draw inactive system text.
-   */
-  public static ColorUIResource getInactiveSystemTextColor()
-  {
-    if (theme != null)
-      return theme.getInactiveSystemTextColor();
-    return null;
-  }
-
-  /**
-   * Returns the background color for menu items, from the installed theme.
-   *
-   * @return The background color for menu items.
-   *
-   * @see #getMenuSelectedBackground()
-   */
-  public static ColorUIResource getMenuBackground()
-  {
-    if (theme != null)
-      return theme.getMenuBackground();
-    return null;
-  }
-
-  /**
-   * Returns the foreground color for disabled menu items, from the installed
-   * theme.
-   *
-   * @return The foreground color for disabled menu items.
-   *
-   * @see #getMenuForeground()
-   */
-  public static ColorUIResource getMenuDisabledForeground()
-  {
-    if (theme != null)
-      return theme.getMenuDisabledForeground();
-    return null;
-  }
-
-  /**
-   * Returns the foreground color for menu items, from the installed theme.
-   *
-   * @return The foreground color for menu items.
-   *
-   * @see #getMenuDisabledForeground()
-   * @see #getMenuSelectedForeground()
-   */
-  public static ColorUIResource getMenuForeground()
-  {
-    if (theme != null)
-      return theme.getMenuForeground();
-    return null;
-  }
-
-  /**
-   * Returns the background color for selected menu items, from the installed
-   * theme.
-   *
-   * @return The background color for selected menu items.
-   *
-   * @see #getMenuBackground()
-   */
-  public static ColorUIResource getMenuSelectedBackground()
-  {
-    if (theme != null)
-      return theme.getMenuSelectedBackground();
-    return null;
-  }
-
-  /**
-   * Returns the foreground color for selected menu items, from the installed
-   * theme.
-   *
-   * @return The foreground color for selected menu items.
-   *
-   * @see #getMenuForeground()
-   */
-  public static ColorUIResource getMenuSelectedForeground()
-  {
-    if (theme != null)
-      return theme.getMenuSelectedForeground();
-    return null;
-  }
-
-  /**
-   * Returns the font used for text in menus, from the installed theme.
-   *
-   * @return The font used for text in menus.
-   */
-  public static FontUIResource getMenuTextFont()
-  {
-    if (theme != null)
-      return theme.getMenuTextFont();
-    return null;
-  }
-
-  /**
-   * Returns the primary color for controls, from the installed theme.
-   *
-   * @return The primary color for controls.
-   */
-  public static ColorUIResource getPrimaryControl()
-  {
-    if (theme != null)
-      return theme.getPrimaryControl();
-    return null;
-  }
-
-  /**
-   * Returns the primary color for the dark shadow on controls, from the
-   * installed theme.
-   *
-   * @return The primary color for the dark shadow on controls.
-   */
-  public static ColorUIResource getPrimaryControlDarkShadow()
-  {
-    if (theme != null)
-      return theme.getPrimaryControlDarkShadow();
-    return null;
-  }
-
-  /**
-   * Returns the primary color for the highlight on controls, from the
-   * installed theme.
-   *
-   * @return The primary color for the highlight on controls.
-   */
-  public static ColorUIResource getPrimaryControlHighlight()
-  {
-    if (theme != null)
-      return theme.getPrimaryControlHighlight();
-    return null;
-  }
-
-  /**
-   * Returns the primary color for the information on controls, from the
-   * installed theme.
-   *
-   * @return The primary color for the information on controls.
-   */
-  public static ColorUIResource getPrimaryControlInfo()
-  {
-    if (theme != null)
-      return theme.getPrimaryControlInfo();
-    return null;
-  }
-
-  /**
-   * Returns the primary color for the shadow on controls, from the installed
-   * theme.
-   *
-   * @return The primary color for the shadow on controls.
-   */
-  public static ColorUIResource getPrimaryControlShadow()
-  {
-    if (theme != null)
-      return theme.getPrimaryControlShadow();
-    return null;
-  }
-
-  /**
-   * Returns the background color for separators, from the installed theme.
-   *
-   * @return The background color for separators.
-   */
-  public static ColorUIResource getSeparatorBackground()
-  {
-    if (theme != null)
-      return theme.getSeparatorBackground();
-    return null;
-  }
-
-  /**
-   * Returns the foreground color for separators, from the installed theme.
-   *
-   * @return The foreground color for separators.
-   */
-  public static ColorUIResource getSeparatorForeground()
-  {
-    if (theme != null)
-      return theme.getSeparatorForeground();
-    return null;
-  }
-
-  /**
-   * Returns the font used for sub text, from the installed theme.
-   *
-   * @return The font used for sub text.
-   */
-  public static FontUIResource getSubTextFont()
-  {
-    if (theme != null)
-      return theme.getSubTextFont();
-    return null;
-  }
-
-  /**
-   * Returns the color used for system text, from the installed theme.
-   *
-   * @return The color used for system text.
-   */
-  public static ColorUIResource getSystemTextColor()
-  {
-    if (theme != null)
-      return theme.getSystemTextColor();
-    return null;
-  }
-
-  /**
-   * Returns the font used for system text, from the installed theme.
-   *
-   * @return The font used for system text.
-   */
-  public static FontUIResource getSystemTextFont()
-  {
-    if (theme != null)
-      return theme.getSystemTextFont();
-    return null;
-  }
-
-  /**
-   * Returns the color used to highlight text, from the installed theme.
-   *
-   * @return The color used to highlight text.
-   */
-  public static ColorUIResource getTextHighlightColor()
-  {
-    if (theme != null)
-      return theme.getTextHighlightColor();
-    return null;
-  }
-
-  /**
-   * Returns the color used to display user text, from the installed theme.
-   *
-   * @return The color used to display user text.
-   */
-  public static ColorUIResource getUserTextColor()
-  {
-    if (theme != null)
-      return theme.getUserTextColor();
-    return null;
-  }
-
-  /**
-   * Returns the font used for user text, obtained from the current theme.
-   *
-   * @return The font used for user text.
-   */
-  public static FontUIResource getUserTextFont()
-  {
-    if (theme != null)
-      return theme.getUserTextFont();
-    return null;
-  }
-
-  /**
-   * Returns the color used for white, from the installed theme.
-   *
-   * @return The color used for white.
-   */
-  public static ColorUIResource getWhite()
-  {
-    if (theme != null)
-      return theme.getWhite();
-    return null;
-  }
-
-  /**
-   * Returns the window background color, from the installed theme.
-   *
-   * @return The window background color.
-   */
-  public static ColorUIResource getWindowBackground()
-  {
-    if (theme != null)
-      return theme.getWindowBackground();
-    return null;
-  }
-
-  /**
-   * Returns the window title background color, from the installed theme.
-   *
-   * @return The window title background color.
-   */
-  public static ColorUIResource getWindowTitleBackground()
-  {
-    if (theme != null)
-      return theme.getWindowTitleBackground();
-    return null;
-  }
-
-  /**
-   * Returns the window title font from the current theme.
-   *
-   * @return The window title font.
-   *
-   * @see MetalTheme
-   */
-  public static FontUIResource getWindowTitleFont()
-  {
-    if (theme != null)
-      return theme.getWindowTitleFont();
-    return null;
-  }
-
-  /**
-   * Returns the window title foreground color, from the installed theme.
-   *
-   * @return The window title foreground color.
-   */
-  public static ColorUIResource getWindowTitleForeground()
-  {
-    if (theme != null)
-      return theme.getWindowTitleForeground();
-    return null;
-  }
-
-  /**
-   * Returns the background color for an inactive window title, from the
-   * installed theme.
-   *
-   * @return The background color for an inactive window title.
-   */
-  public static ColorUIResource getWindowTitleInactiveBackground()
-  {
-    if (theme != null)
-      return theme.getWindowTitleInactiveBackground();
-    return null;
-  }
-
-  /**
-   * Returns the foreground color for an inactive window title, from the
-   * installed theme.
-   *
-   * @return The foreground color for an inactive window title.
-   */
-  public static ColorUIResource getWindowTitleInactiveForeground()
-  {
-    if (theme != null)
-      return theme.getWindowTitleInactiveForeground();
-    return null;
-  }
-
-  /**
-   * Sets the current theme for the look and feel.  Note that the theme must be
-   * set <em>before</em> the look and feel is installed.  To change the theme
-   * for an already running application that is using the
-   * {@link MetalLookAndFeel}, first set the theme with this method, then
-   * create a new instance of {@link MetalLookAndFeel} and install it in the
-   * usual way (see {@link UIManager#setLookAndFeel(LookAndFeel)}).
-   *
-   * @param theme  the theme (<code>null</code> not permitted).
-   *
-   * @throws NullPointerException if <code>theme</code> is <code>null</code>.
-   *
-   * @see #getCurrentTheme()
-   */
-  public static void setCurrentTheme(MetalTheme theme)
-  {
-    if (theme == null)
-      throw new NullPointerException("Null 'theme' not permitted.");
-    MetalLookAndFeel.theme = theme;
-  }
-
-  /**
-   * Sets the ComponentUI classes for all Swing components to the Metal
-   * implementations.
-   *
-   * In particular this sets the following keys:
-   *
-   * <table>
-   * <tr>
-   * <th>Key</th><th>Value</th>
-   * </tr><tr>
-   * <td>ButtonUI</td><td>{@link MetalButtonUI}</td>
-   * </tr><tr>
-   * <td>CheckBoxUI</td><td>{@link MetalCheckBoxUI}</td>
-   * </tr><tr>
-   * <td>ComboBoxUI</td><td>{@link MetalComboBoxUI}</td>
-   * </tr><tr>
-   * <td>DesktopIconUI</td><td>{@link MetalDesktopIconUI}</td>
-   * </tr><tr>
-   * <td>InternalFrameUI</td><td>{@link MetalInternalFrameUI}</td>
-   * </tr><tr>
-   * <td>LabelUI</td><td>{@link MetalLabelUI}</td>
-   * </tr><tr>
-   * <td>PopupMenuSeparatorUI</td><td>{@link MetalPopupMenuSeparatorUI}</td>
-   * </tr><tr>
-   * <td>ProgressBarUI</td><td>{@link MetalProgressBarUI}</td>
-   * </tr><tr>
-   * <td>RadioButtonUI</td><td>{@link MetalRadioButtonUI}</td>
-   * </tr><tr>
-   * <td>RootPaneUI</td><td>{@link MetalRootPaneUI}</td>
-   * </tr><tr>
-   * <td>ScrollBarUI</td><td>{@link MetalScrollBarUI}</td>
-   * </tr><tr>
-   * <td>ScrollPaneUI</td><td>{@link MetalScrollPaneUI}</td>
-   * </tr><tr>
-   * <td>SeparatorUI</td><td>{@link MetalSeparatorUI}</td>
-   * </tr><tr>
-   * <td>SliderUI</td><td>{@link MetalSliderUI}</td>
-   * </tr><tr>
-   * <td>SplitPaneUI</td><td>{@link MetalSplitPaneUI}</td>
-   * </tr><tr>
-   * <td>TabbedPaneUI</td><td>{@link MetalTabbedPaneUI}</td>
-   * </tr><tr>
-   * <td>TextFieldUI</td><td>{@link MetalTextFieldUI}</td>
-   * </tr><tr>
-   * <td>ToggleButtonUI</td><td>{@link MetalToggleButtonUI}</td>
-   * </tr><tr>
-   * <td>ToolBarUI</td><td>{@link MetalToolBarUI}</td>
-   * </tr><tr>
-   * <td>ToolTipUI</td><td>{@link MetalToolTipUI}</td>
-   * </tr><tr>
-   * <td>TreeUI</td><td>{@link MetalTreeUI}</td>
-   * </tr><tr>
-   * </table>
-   *
-   * @param defaults the UIDefaults where the class defaults are added
-   */
-  protected void initClassDefaults(UIDefaults defaults)
-  {
-    super.initClassDefaults(defaults);
-
-    // Variables
-    Object[] uiDefaults;
-    // Initialize Class Defaults
-    uiDefaults = new Object[] {
-      "ButtonUI", "javax.swing.plaf.metal.MetalButtonUI",
-      "CheckBoxUI", "javax.swing.plaf.metal.MetalCheckBoxUI",
-      "ComboBoxUI", "javax.swing.plaf.metal.MetalComboBoxUI",
-      "DesktopIconUI", "javax.swing.plaf.metal.MetalDesktopIconUI",
-      "FileChooserUI", "javax.swing.plaf.metal.MetalFileChooserUI",
-      "InternalFrameUI", "javax.swing.plaf.metal.MetalInternalFrameUI",
-      "LabelUI", "javax.swing.plaf.metal.MetalLabelUI",
-      "MenuBarUI", "javax.swing.plaf.metal.MetalMenuBarUI",
-      "PopupMenuSeparatorUI",
-      "javax.swing.plaf.metal.MetalPopupMenuSeparatorUI",
-      "ProgressBarUI", "javax.swing.plaf.metal.MetalProgressBarUI",
-      "RadioButtonUI", "javax.swing.plaf.metal.MetalRadioButtonUI",
-      "RootPaneUI", "javax.swing.plaf.metal.MetalRootPaneUI",
-      "ScrollBarUI", "javax.swing.plaf.metal.MetalScrollBarUI",
-      "ScrollPaneUI", "javax.swing.plaf.metal.MetalScrollPaneUI",
-      "SeparatorUI", "javax.swing.plaf.metal.MetalSeparatorUI",
-      "SliderUI", "javax.swing.plaf.metal.MetalSliderUI",
-      "SplitPaneUI", "javax.swing.plaf.metal.MetalSplitPaneUI",
-      "TabbedPaneUI", "javax.swing.plaf.metal.MetalTabbedPaneUI",
-      "TextFieldUI", "javax.swing.plaf.metal.MetalTextFieldUI",
-      "ToggleButtonUI", "javax.swing.plaf.metal.MetalToggleButtonUI",
-      "ToolBarUI", "javax.swing.plaf.metal.MetalToolBarUI",
-      "ToolTipUI", "javax.swing.plaf.metal.MetalToolTipUI",
-      "TreeUI", "javax.swing.plaf.metal.MetalTreeUI",
-    };
-    // Add Class Defaults to UI Defaults table
-    defaults.putDefaults(uiDefaults);
-  }
-
-  /**
-   * Initializes the component defaults for the Metal Look &amp; Feel.
-   *
-   * In particular this sets the following keys (the colors are given
-   * as RGB hex values):
-   *
-   * <table>
-   * <tr>
-   * <th>Key</th><th>Value</th>
-   * </tr><tr>
-   * <td>Button.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>Button.border</td><td>{@link MetalBorders#getButtonBorder()}</td>
-   * </tr><tr>
-   * <td>Button.font</td><td>{@link #getControlTextFont}</td>
-   * </tr><tr>
-   * <td>Button.margin</td><td><code>new java.awt.Insets(2, 14, 2, 14)</code>
-   * </td>
-   * </tr><tr>
-   * <td>CheckBox.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>CheckBoxMenuItem.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>ToolBar.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>Panel.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>Slider.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>OptionPane.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>ProgressBar.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>TabbedPane.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>Label.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>Label.font</td><td>{@link #getControlTextFont}</td>
-   * </tr><tr>
-   * <td>Menu.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>MenuBar.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>MenuItem.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>ScrollBar.background</td><td>0xcccccc</td>
-   * </tr><tr>
-   * <td>PopupMenu.border</td>
-   * <td><code>new javax.swing.plaf.metal.MetalBorders.PopupMenuBorder()</td>
-   * </tr><tr>
-   * </table>
-   *
-   * @param defaults the UIDefaults instance to which the values are added
-   */
-  protected void initComponentDefaults(UIDefaults defaults)
-  {
-    super.initComponentDefaults(defaults);
-    Object[] myDefaults = new Object[] {
-      "Button.background", getControl(),
-      "Button.border", MetalBorders.getButtonBorder(),
-      "Button.darkShadow", getControlDarkShadow(),
-      "Button.disabledText", getInactiveControlTextColor(),
-      "Button.focus", getFocusColor(),
-      "Button.font", getControlTextFont(),
-      "Button.foreground", getControlTextColor(),
-      "Button.highlight", getControlHighlight(),
-      "Button.light", getControlHighlight(),
-      "Button.margin", new InsetsUIResource(2, 14, 2, 14),
-      "Button.select", getControlShadow(),
-      "Button.shadow", getControlShadow(),
-
-      "CheckBox.background", getControl(),
-      "CheckBox.border", MetalBorders.getButtonBorder(),
-      "CheckBox.disabledText", getInactiveControlTextColor(),
-      "CheckBox.focus", getFocusColor(),
-      "CheckBox.font", getControlTextFont(),
-      "CheckBox.foreground", getControlTextColor(),
-      "CheckBox.icon",
-      new UIDefaults.ProxyLazyValue("javax.swing.plaf.metal.MetalCheckBoxIcon"),
-      "CheckBox.checkIcon",
-      new UIDefaults.ProxyLazyValue("javax.swing.plaf.metal.MetalCheckBoxIcon"),
-      "Checkbox.select", getControlShadow(),
-
-      "CheckBoxMenuItem.acceleratorFont", new FontUIResource("Dialog", Font.PLAIN, 10),
-      "CheckBoxMenuItem.acceleratorForeground", getAcceleratorForeground(),
-      "CheckBoxMenuItem.acceleratorSelectionForeground", getAcceleratorSelectedForeground(),
-      "CheckBoxMenuItem.background", getMenuBackground(),
-      "CheckBoxMenuItem.borderPainted", Boolean.TRUE,
-      "CheckBoxMenuItem.commandSound", "sounds/MenuItemCommand.wav",
-      "CheckBoxMenuItem.checkIcon", MetalIconFactory.getCheckBoxMenuItemIcon(),
-      "CheckBoxMenuItem.disabledForeground", getMenuDisabledForeground(),
-      "CheckBoxMenuItem.font", getMenuTextFont(),
-      "CheckBoxMenuItem.foreground", getMenuForeground(),
-      "CheckBoxMenuItem.selectionBackground", getMenuSelectedBackground(),
-      "CheckBoxMenuItem.selectionForeground", getMenuSelectedForeground(),
-
-      "ColorChooser.background", getControl(),
-      "ColorChooser.foreground", getControlTextColor(),
-      "ColorChooser.rgbBlueMnemonic", new Integer(0),
-      "ColorChooser.rgbGreenMnemonic", new Integer(0),
-      "ColorChooser.rgbRedMnemonic", new Integer(0),
-      "ColorChooser.swatchesDefaultRecentColor", getControl(),
-
-      "ComboBox.background", getControl(),
-      "ComboBox.buttonBackground", getControl(),
-      "ComboBox.buttonDarkShadow", getControlDarkShadow(),
-      "ComboBox.buttonHighlight", getControlHighlight(),
-      "ComboBox.buttonShadow", getControlShadow(),
-      "ComboBox.disabledBackground", getControl(),
-      "ComboBox.disabledForeground", getInactiveSystemTextColor(),
-      "ComboBox.font", getControlTextFont(),
-      "ComboBox.foreground", getControlTextColor(),
-      "ComboBox.selectionBackground", getPrimaryControlShadow(),
-      "ComboBox.selectionForeground", getControlTextColor(),
-
-      "Desktop.background", getDesktopColor(),
-
-      "DesktopIcon.background", getControl(),
-      "DesktopIcon.foreground", getControlTextColor(),
-      "DesktopIcon.width", new Integer(160),
-      "DesktopIcon.border", MetalBorders.getDesktopIconBorder(),
-      "DesktopIcon.font", getControlTextFont(),
-
-      "EditorPane.background", getWindowBackground(),
-      "EditorPane.caretForeground", getUserTextColor(),
-      "EditorPane.font", getControlTextFont(),
-      "EditorPane.foreground",  getUserTextColor(),
-      "EditorPane.inactiveForeground",  getInactiveSystemTextColor(),
-      "EditorPane.selectionBackground", getTextHighlightColor(),
-      "EditorPane.selectionForeground", getHighlightedTextColor(),
-
-      "FormattedTextField.background", getWindowBackground(),
-      "FormattedTextField.border",
-      new BorderUIResource(MetalBorders.getTextFieldBorder()),
-      "FormattedTextField.caretForeground", getUserTextColor(),
-      "FormattedTextField.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "FormattedTextField.foreground",  getUserTextColor(),
-      "FormattedTextField.inactiveBackground",  getControl(),
-      "FormattedTextField.inactiveForeground",  getInactiveSystemTextColor(),
-      "FormattedTextField.selectionBackground", getTextHighlightColor(),
-      "FormattedTextField.selectionForeground", getHighlightedTextColor(),
-
-      "FileChooser.upFolderIcon",
-          MetalIconFactory.getFileChooserUpFolderIcon(),
-      "FileChooser.listViewIcon",
-          MetalIconFactory.getFileChooserListViewIcon(),
-      "FileChooser.newFolderIcon",
-          MetalIconFactory.getFileChooserNewFolderIcon(),
-      "FileChooser.homeFolderIcon",
-          MetalIconFactory.getFileChooserHomeFolderIcon(),
-      "FileChooser.detailsViewIcon",
-          MetalIconFactory.getFileChooserDetailViewIcon(),
-      "FileChooser.fileNameLabelMnemonic", new Integer(78),
-      "FileChooser.filesOfTypeLabelMnemonic", new Integer(84),
-      "FileChooser.lookInLabelMnemonic", new Integer(73),
-      "FileView.computerIcon", MetalIconFactory.getTreeComputerIcon(),
-      "FileView.directoryIcon", MetalIconFactory.getTreeFolderIcon(),
-      "FileView.fileIcon", MetalIconFactory.getTreeLeafIcon(),
-      "FileView.floppyDriveIcon", MetalIconFactory.getTreeFloppyDriveIcon(),
-      "FileView.hardDriveIcon", MetalIconFactory.getTreeHardDriveIcon(),
-
-      "InternalFrame.activeTitleBackground", getWindowTitleBackground(),
-      "InternalFrame.activeTitleForeground", getWindowTitleForeground(),
-      "InternalFrame.border", new MetalBorders.InternalFrameBorder(),
-      "InternalFrame.borderColor", getControl(),
-      "InternalFrame.borderDarkShadow", getControlDarkShadow(),
-      "InternalFrame.borderHighlight", getControlHighlight(),
-      "InternalFrame.borderLight", getControlHighlight(),
-      "InternalFrame.borderShadow", getControlShadow(),
-      "InternalFrame.icon", MetalIconFactory.getInternalFrameDefaultMenuIcon(),
-      "InternalFrame.closeIcon",
-        MetalIconFactory.getInternalFrameCloseIcon(16),
-      "InternalFrame.closeSound", "sounds/FrameClose.wav",
-      "InternalFrame.inactiveTitleBackground", getWindowTitleInactiveBackground(),
-      "InternalFrame.inactiveTitleForeground", getWindowTitleInactiveForeground(),
-      "InternalFrame.maximizeIcon",
-        MetalIconFactory.getInternalFrameMaximizeIcon(16),
-      "InternalFrame.maximizeSound", "sounds/FrameMaximize.wav",
-      "InternalFrame.iconifyIcon",
-        MetalIconFactory.getInternalFrameMinimizeIcon(16),
-      "InternalFrame.minimizeSound", "sounds/FrameMinimize.wav",
-      "InternalFrame.paletteBorder", new MetalBorders.PaletteBorder(),
-      "InternalFrame.paletteCloseIcon", new MetalIconFactory.PaletteCloseIcon(),
-      "InternalFrame.paletteTitleHeight", new Integer(11),
-      "InternalFrame.restoreDownSound", "sounds/FrameRestoreDown.wav",
-      "InternalFrame.restoreUpSound", "sounds/FrameRestoreUp.wav",
-
-      "Label.background", getControl(),
-      "Label.disabledForeground", getInactiveSystemTextColor(),
-      "Label.disabledShadow", getControlShadow(),
-      "Label.font", getControlTextFont(),
-      "Label.foreground", getSystemTextColor(),
-
-      "List.font", getControlTextFont(),
-      "List.background", getWindowBackground(),
-      "List.foreground", getUserTextColor(),
-      "List.selectionBackground", getTextHighlightColor(),
-      "List.selectionForeground", getHighlightedTextColor(),
-      "List.focusCellHighlightBorder",
-        new LineBorderUIResource(MetalLookAndFeel.getFocusColor()),
-
-      "Menu.acceleratorFont", new FontUIResource("Dialog", Font.PLAIN, 10),
-      "Menu.acceleratorForeground", getAcceleratorForeground(),
-      "Menu.acceleratorSelectionForeground", getAcceleratorSelectedForeground(),
-      "Menu.arrowIcon", MetalIconFactory.getMenuArrowIcon(),
-      "Menu.background", getMenuBackground(),
-      "Menu.border", new MetalBorders.MenuItemBorder(),
-      "Menu.borderPainted", Boolean.TRUE,
-      "MenuItem.commandSound", "sounds/MenuItemCommand.wav",
-      "Menu.disabledForeground", getMenuDisabledForeground(),
-      "Menu.font", getMenuTextFont(),
-      "Menu.foreground", getMenuForeground(),
-      "Menu.selectionBackground", getMenuSelectedBackground(),
-      "Menu.selectionForeground", getMenuSelectedForeground(),
-      "Menu.submenuPopupOffsetX", new Integer(-4),
-      "Menu.submenuPopupOffsetY", new Integer(-3),
-
-      "MenuBar.background", getMenuBackground(),
-      "MenuBar.border", new MetalBorders.MenuBarBorder(),
-      "MenuBar.font", getMenuTextFont(),
-      "MenuBar.foreground", getMenuForeground(),
-      "MenuBar.highlight", getControlHighlight(),
-      "MenuBar.shadow", getControlShadow(),
-
-      "MenuItem.acceleratorDelimiter", "-",
-      "MenuItem.acceleratorFont", new FontUIResource("Dialog", Font.PLAIN, 10),
-      "MenuItem.acceleratorForeground", getAcceleratorForeground(),
-      "MenuItem.acceleratorSelectionForeground", getAcceleratorSelectedForeground(),
-      "MenuItem.arrowIcon", MetalIconFactory.getMenuItemArrowIcon(),
-      "MenuItem.background", getMenuBackground(),
-      "MenuItem.border", new MetalBorders.MenuItemBorder(),
-      "MenuItem.borderPainted", Boolean.TRUE,
-      "MenuItem.disabledForeground", getMenuDisabledForeground(),
-      "MenuItem.font", getMenuTextFont(),
-      "MenuItem.foreground", getMenuForeground(),
-      "MenuItem.selectionBackground", getMenuSelectedBackground(),
-      "MenuItem.selectionForeground", getMenuSelectedForeground(),
-
-      "OptionPane.background", getControl(),
-      "OptionPane.errorSound", "sounds/OptionPaneError.wav",
-      "OptionPane.informationSound", "sounds/OptionPaneInformation.wav",
-      "OptionPane.questionSound", "sounds/OptionPaneQuestion.wav",
-      "OptionPane.warningSound", "sounds/OptionPaneWarning.wav",
-      "OptionPane.errorDialog.border.background", new ColorUIResource(153, 51, 51),
-      "OptionPane.errorDialog.titlePane.background", new ColorUIResource(255, 153, 153),
-      "OptionPane.errorDialog.titlePane.foreground", new ColorUIResource(51, 0, 0),
-      "OptionPane.errorDialog.titlePane.shadow", new ColorUIResource(204, 102, 102),
-      "OptionPane.foreground", getControlTextColor(),
-      "OptionPane.messageForeground", getControlTextColor(),
-      "OptionPane.questionDialog.border.background", new ColorUIResource(51, 102, 51),
-      "OptionPane.questionDialog.titlePane.background", new ColorUIResource(153, 204, 153),
-      "OptionPane.questionDialog.titlePane.foreground", new ColorUIResource(0, 51, 0),
-      "OptionPane.questionDialog.titlePane.shadow", new ColorUIResource(102, 153, 102),
-      "OptionPane.warningDialog.border.background", new ColorUIResource(153, 102, 51),
-      "OptionPane.warningDialog.titlePane.background", new ColorUIResource(255, 204, 153),
-      "OptionPane.warningDialog.titlePane.foreground", new ColorUIResource(102, 51, 0),
-      "OptionPane.warningDialog.titlePane.shadow", new ColorUIResource(204, 153, 102),
-
-      "Panel.background", getControl(),
-      "Panel.foreground", getUserTextColor(),
-
-      "PasswordField.background", getWindowBackground(),
-      "PasswordField.border",
-      new BorderUIResource(MetalBorders.getTextFieldBorder()),
-      "PasswordField.caretForeground", getUserTextColor(),
-      "PasswordField.foreground", getUserTextColor(),
-      "PasswordField.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "PasswordField.inactiveBackground", getControl(),
-      "PasswordField.inactiveForeground", getInactiveSystemTextColor(),
-      "PasswordField.selectionBackground", getTextHighlightColor(),
-      "PasswordField.selectionForeground", getHighlightedTextColor(),
-
-      "PopupMenu.background", getMenuBackground(),
-      "PopupMenu.border", new MetalBorders.PopupMenuBorder(),
-      "PopupMenu.font", getMenuTextFont(),
-      "PopupMenu.foreground", getMenuForeground(),
-      "PopupMenu.popupSound", "sounds/PopupMenuPopup.wav",
-
-      "ProgressBar.background", getControl(),
-      "ProgressBar.border", new BorderUIResource.LineBorderUIResource(getControlDarkShadow(), 1),
-      "ProgressBar.font", getControlTextFont(),
-      "ProgressBar.foreground", getPrimaryControlShadow(),
-      "ProgressBar.selectionBackground", getPrimaryControlDarkShadow(),
-      "ProgressBar.selectionForeground", getControl(),
-
-      "RadioButton.background", getControl(),
-      "RadioButton.darkShadow", getControlDarkShadow(),
-      "RadioButton.disabledText", getInactiveControlTextColor(),
-      "RadioButton.icon",
-      new UIDefaults.LazyValue()
-      {
-        public Object createValue(UIDefaults def)
-          {
-            return MetalIconFactory.getRadioButtonIcon();
-          }
-      },
-      "RadioButton.focus", MetalLookAndFeel.getFocusColor(),
-      "RadioButton.font", MetalLookAndFeel.getControlTextFont(),
-      "RadioButton.foreground", getControlTextColor(),
-      "RadioButton.highlight", getControlHighlight(),
-      "RadioButton.light", getControlHighlight(),
-      "RadioButton.select", getControlShadow(),
-      "RadioButton.shadow", getControlShadow(),
-
-      "RadioButtonMenuItem.acceleratorFont", new Font("Dialog", Font.PLAIN, 10),
-      "RadioButtonMenuItem.acceleratorForeground", getAcceleratorForeground(),
-      "RadioButtonMenuItem.acceleratorSelectionForeground", getAcceleratorSelectedForeground(),
-      "RadioButtonMenuItem.background", getMenuBackground(),
-      "RadioButtonMenuItem.border", new MetalBorders.MenuItemBorder(),
-      "RadioButtonMenuItem.borderPainted", Boolean.TRUE,
-      "RadioButtonMenuItem.checkIcon",
-        MetalIconFactory.getRadioButtonMenuItemIcon(),
-      "RadioButtonMenuItem.commandSound", "sounds/MenuItemCommand.wav",
-      "RadioButtonMenuItem.disabledForeground", getMenuDisabledForeground(),
-      "RadioButtonMenuItem.font", getMenuTextFont(),
-      "RadioButtonMenuItem.foreground", getMenuForeground(),
-      "RadioButtonMenuItem.margin", new InsetsUIResource(2, 2, 2, 2),
-      "RadioButtonMenuItem.selectionBackground",
-        MetalLookAndFeel.getMenuSelectedBackground(),
-      "RadioButtonMenuItem.selectionForeground",
-        MetalLookAndFeel.getMenuSelectedForeground(),
-
-      "ScrollBar.allowsAbsolutePositioning", Boolean.TRUE,
-      "ScrollBar.background", getControl(),
-      "ScrollBar.darkShadow", getControlDarkShadow(),
-      "ScrollBar.foreground", getControl(),
-      "ScrollBar.highlight", getControlHighlight(),
-      "ScrollBar.shadow", getControlShadow(),
-      "ScrollBar.thumb", getPrimaryControlShadow(),
-      "ScrollBar.thumbDarkShadow", getControlDarkShadow(),
-      "ScrollBar.thumbHighlight", getPrimaryControl(),
-      "ScrollBar.thumbShadow", getPrimaryControlDarkShadow(),
-      "ScrollBar.track", getControl(),
-      "ScrollBar.trackHighlight", getControlDarkShadow(),
-      "ScrollBar.width", new Integer(17),
-
-      "ScrollPane.background", getControl(),
-      "ScrollPane.border", new MetalBorders.ScrollPaneBorder(),
-      "ScrollPane.foreground", getControlTextColor(),
-
-      "Separator.background", getSeparatorBackground(),
-      "Separator.foreground", getSeparatorForeground(),
-      "Separator.highlight", getControlHighlight(),
-      "Separator.shadow", getControlShadow(),
-
-      "Slider.background", getControl(),
-      "Slider.focus", getFocusColor(),
-      "Slider.focusInsets", new InsetsUIResource(0, 0, 0, 0),
-      "Slider.foreground", getPrimaryControlShadow(),
-      "Slider.highlight", getControlHighlight(),
-      "Slider.horizontalThumbIcon",
-      MetalIconFactory.getHorizontalSliderThumbIcon(),
-      "Slider.majorTickLength", new Integer(6),
-      "Slider.shadow", getControlShadow(),
-      "Slider.trackWidth", new Integer(7),
-      "Slider.verticalThumbIcon",
-      MetalIconFactory.getVerticalSliderThumbIcon(),
-
-      "Spinner.arrowButtonInsets", new InsetsUIResource(0, 0, 0, 0),
-      "Spinner.background", getControl(),
-      "Spinner.border", MetalBorders.getTextFieldBorder(),
-      "Spinner.font", getControlTextFont(),
-      "Spinner.foreground", getControl(),
-
-      "SplitPane.background", getControl(),
-      "SplitPane.darkShadow", getControlDarkShadow(),
-      "SplitPane.dividerFocusColor", getPrimaryControl(),
-      "SplitPane.dividerSize", new Integer(10),
-      "SplitPane.highlight", getControlHighlight(),
-      "SplitPane.shadow", getControlShadow(),
-
-      "SplitPaneDivider.draggingColor", Color.DARK_GRAY,
-
-      "TabbedPane.background", getControlShadow(),
-      "TabbedPane.contentBorderInsets", new InsetsUIResource(2, 2, 3, 3),
-      "TabbedPane.contentOpaque", Boolean.TRUE,
-      "TabbedPane.darkShadow", getControlDarkShadow(),
-      "TabbedPane.focus", getPrimaryControlDarkShadow(),
-      "TabbedPane.font", getControlTextFont(),
-      "TabbedPane.foreground", getControlTextColor(),
-      "TabbedPane.highlight", getControlHighlight(),
-      "TabbedPane.light", getControl(),
-      "TabbedPane.selected", getControl(), // overridden in OceanTheme
-      "TabbedPane.selectHighlight", getControlHighlight(),
-      "TabbedPane.selectedTabPadInsets", new InsetsUIResource(2, 2, 2, 1),
-      "TabbedPane.shadow", getControlShadow(),
-      "TabbedPane.tabAreaBackground", getControl(), // overridden in OceanTheme
-      "TabbedPane.tabAreaInsets", new InsetsUIResource(4, 2, 0, 6), // dito
-      "TabbedPane.tabInsets", new InsetsUIResource(0, 9, 1, 9),
-
-      // new properties in OceanTheme:
-      // TabbedPane.contentAreaColor
-      // TabbedPane.unselectedBackground
-
-      "Table.background", getWindowBackground(),
-      "Table.focusCellBackground", getWindowBackground(),
-      "Table.focusCellForeground", getControlTextColor(),
-      "Table.foreground", getControlTextColor(),
-      "Table.focusCellHighlightBorder",
-      new BorderUIResource.LineBorderUIResource(getFocusColor()),
-      "Table.focusCellBackground", getWindowBackground(),
-      "Table.gridColor", getControlDarkShadow(),
-      "Table.selectionBackground", new ColorUIResource(204, 204, 255),
-      "Table.selectionForeground", new ColorUIResource(0, 0, 0),
-
-      "TableHeader.background", getControl(),
-      "TableHeader.cellBorder", new MetalBorders.TableHeaderBorder(),
-      "TableHeader.foreground", getControlTextColor(),
-
-      "TextArea.background", getWindowBackground(),
-      "TextArea.caretForeground", getUserTextColor(),
-      "TextArea.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "TextArea.foreground", getUserTextColor(),
-      "TextArea.inactiveForeground", getInactiveSystemTextColor(),
-      "TextArea.selectionBackground", getTextHighlightColor(),
-      "TextArea.selectionForeground", getHighlightedTextColor(),
-
-      "TextField.background", getWindowBackground(),
-      "TextField.border",
-      new BorderUIResource(MetalBorders.getTextFieldBorder()),
-      "TextField.caretForeground", getUserTextColor(),
-      "TextField.darkShadow", getControlDarkShadow(),
-      "TextField.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "TextField.foreground", getUserTextColor(),
-      "TextField.highlight", getControlHighlight(),
-      "TextField.inactiveBackground", getControl(),
-      "TextField.inactiveForeground", getInactiveSystemTextColor(),
-      "TextField.light", getControlHighlight(),
-      "TextField.selectionBackground", getTextHighlightColor(),
-      "TextField.selectionForeground", getHighlightedTextColor(),
-      "TextField.shadow", getControlShadow(),
-
-      "TextPane.background", getWindowBackground(),
-      "TextPane.caretForeground", getUserTextColor(),
-      "TextPane.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "TextPane.foreground", getUserTextColor(),
-      "TextPane.inactiveForeground", getInactiveSystemTextColor(),
-      "TextPane.selectionBackground", getTextHighlightColor(),
-      "TextPane.selectionForeground", getHighlightedTextColor(),
-
-      "TitledBorder.border", new LineBorderUIResource(getPrimaryControl(), 1),
-      "TitledBorder.font", getControlTextFont(),
-      "TitledBorder.titleColor", getSystemTextColor(),
-
-      "ToggleButton.background", getControl(),
-      "ToggleButton.border", MetalBorders.getToggleButtonBorder(),
-      "ToggleButton.darkShadow", getControlDarkShadow(),
-      "ToggleButton.disabledText", getInactiveControlTextColor(),
-      "ToggleButton.focus", getFocusColor(),
-      "ToggleButton.font", getControlTextFont(),
-      "ToggleButton.foreground", getControlTextColor(),
-      "ToggleButton.highlight", getControlHighlight(),
-      "ToggleButton.light", getControlHighlight(),
-      "ToggleButton.margin", new InsetsUIResource(2, 14, 2, 14),
-      "ToggleButton.select", getControlShadow(),
-      "ToggleButton.shadow", getControlShadow(),
-
-      "ToolBar.background", getMenuBackground(),
-      "ToolBar.darkShadow", getControlDarkShadow(),
-      "ToolBar.dockingBackground", getMenuBackground(),
-      "ToolBar.dockingForeground", getPrimaryControlDarkShadow(),
-      "ToolBar.floatingBackground", getMenuBackground(),
-      "ToolBar.floatingForeground", getPrimaryControl(),
-      "ToolBar.font", getMenuTextFont(),
-      "ToolBar.foreground", getMenuForeground(),
-      "ToolBar.highlight", getControlHighlight(),
-      "ToolBar.light", getControlHighlight(),
-      "ToolBar.shadow", getControlShadow(),
-      "ToolBar.border", new MetalBorders.ToolBarBorder(),
-      "ToolBar.rolloverBorder", MetalBorders.getToolbarButtonBorder(),
-      "ToolBar.nonrolloverBorder", MetalBorders.getToolbarButtonBorder(),
-
-      "ToolTip.background", getPrimaryControl(),
-      "ToolTip.backgroundInactive", getControl(),
-      "ToolTip.border", new BorderUIResource.LineBorderUIResource(getPrimaryControlDarkShadow(), 1),
-      "ToolTip.borderInactive", new BorderUIResource.LineBorderUIResource(getControlDarkShadow(), 1),
-      "ToolTip.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "ToolTip.foreground", getPrimaryControlInfo(),
-      "ToolTip.foregroundInactive", getControlDarkShadow(),
-      "ToolTip.hideAccelerator", Boolean.FALSE,
-
-      "Tree.background", getWindowBackground(),
-      "Tree.closedIcon", MetalIconFactory.getTreeFolderIcon(),
-      "Tree.collapsedIcon", MetalIconFactory.getTreeControlIcon(true),
-      "Tree.expandedIcon", MetalIconFactory.getTreeControlIcon(false),
-      "Tree.font", new FontUIResource("Dialog", Font.PLAIN, 12),
-      "Tree.foreground", getUserTextColor(),
-      "Tree.hash", getPrimaryControl(),
-      "Tree.leafIcon", MetalIconFactory.getTreeLeafIcon(),
-      "Tree.leftChildIndent", new Integer(7),
-      "Tree.line", getPrimaryControl(),
-      "Tree.openIcon", MetalIconFactory.getTreeFolderIcon(),
-      "Tree.rightChildIndent", new Integer(13),
-      "Tree.rowHeight", new Integer(0),
-      "Tree.scrollsOnExpand", Boolean.TRUE,
-      "Tree.selectionBackground", getTextHighlightColor(),
-      "Tree.selectionBorder", new BorderUIResource.LineBorderUIResource(new Color(102, 102, 153)),
-      "Tree.selectionBorderColor", getFocusColor(),
-      "Tree.selectionForeground", getHighlightedTextColor(),
-      "Tree.textBackground", getWindowBackground(),
-      "Tree.textForeground", getUserTextColor(),
-
-      "Viewport.background", getControl(),
-      "Viewport.foreground", getUserTextColor()
-    };
-    defaults.putDefaults(myDefaults);
-  }
-
-  /**
-   * Initializes the system color defaults.
-   *
-   * In particular this sets the following keys:
-   *
-   * <table>
-   * <tr>
-   * <th>Key</th><th>Value</th><th>Description</th>
-   * </tr><tr>
-   * <td>control</td><td>0xcccccc</td><td>The default color for components</td>
-   * </tr>
-   * </table>
-   */
-  protected void initSystemColorDefaults(UIDefaults defaults)
-  {
-    super.initSystemColorDefaults(defaults);
-    Object[] uiDefaults;
-    uiDefaults = new Object[] {
-      "control", new ColorUIResource(getControl()),
-      "desktop", new ColorUIResource(getDesktopColor())
-    };
-    defaults.putDefaults(uiDefaults);
-  }
-
-  /**
-   * Returns the current theme for the Metal look and feel.  The default is
-   * an instance of {@link OceanTheme}.
-   *
-   * @return The current theme (never <code>null</code>).
-   *
-   * @see #setCurrentTheme(MetalTheme)
-   */
-  public static MetalTheme getCurrentTheme()
-  {
-    if (theme == null)
-      {
-        // swing.metalTheme property documented here:
-        // http://java.sun.com/j2se/1.5.0/docs/guide/swing/1.5/index.html
-        if ("steel".equals(SystemProperties.getProperty("swing.metalTheme")))
-          theme = new DefaultMetalTheme();
-        else
-          theme = new OceanTheme();
-      }
-    return theme;
-  }
-
-  /**
-   * Returns <code>true</code> because the Metal look
-   * and feel supports window decorations for toplevel
-   * containers.
-   *
-   * @return <code>true</code>
-   */
-  public boolean getSupportsWindowDecorations()
-  {
-    return true;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalMenuBarUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalMenuBarUI.java
deleted file mode 100644
index 35f2b05..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalMenuBarUI.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/* MetalMenuBarUI.java -- MenuBar UI for the Metal L&F
-   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Graphics;
-
-import javax.swing.JComponent;
-import javax.swing.SwingConstants;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.UIResource;
-import javax.swing.plaf.basic.BasicMenuBarUI;
-
-/**
- * A UI implementation for MenuBar in the Metal Look &amp; Feel.
- *
- * @author Roman Kennke (kennke@aicas.com)
- *
- * @since 1.5
- */
-public class MetalMenuBarUI extends BasicMenuBarUI
-{
-  /**
-   * Creates and returns a new instance of this UI for the specified component.
-   *
-   * @param c the component to create a UI for
-   *
-   * @return the UI for the component
-   */
-  public static ComponentUI createUI(JComponent c)
-  {
-    return new MetalMenuBarUI();
-  }
-
-
-  /**
-   * If the property <code>MenuBar.gradient</code> is set, then a gradient
-   * is painted as background, otherwise the normal superclass behaviour is
-   * called.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    int height = c.getHeight();
-    if (c.isOpaque()
-        && UIManager.get("MenuBar.gradient") != null
-        && c.getBackground() instanceof UIResource
-        && height > 2)
-      {
-        MetalUtils.paintGradient(g, 0, 0, c.getWidth(), height,
-                                 SwingConstants.VERTICAL, "MenuBar.gradient");
-
-        paint(g, c);
-      }
-    else
-      super.update(g, c);
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalPopupMenuSeparatorUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalPopupMenuSeparatorUI.java
deleted file mode 100644
index 7c580f9..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalPopupMenuSeparatorUI.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/* MetalPopupMenuSeparatorUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import javax.swing.JComponent;
-import javax.swing.JPopupMenu;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * A UI delegate for the {@link JPopupMenu.Separator} component.
- */
-public class MetalPopupMenuSeparatorUI
-  extends MetalSeparatorUI
-{
-
-  // FIXME: maybe replace by a Map of instances when this becomes stateful
-  /** The shared UI instance for MetalPopupMenuSeparatorUIs */
-  private static MetalPopupMenuSeparatorUI instance;
-
-  /**
-   * Constructs a new instance of <code>MetalPopupMenuSeparatorUI</code>.
-   */
-  public MetalPopupMenuSeparatorUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a shared instance of <code>MetalPopupMenuSeparatorUI</code>.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return A shared instance of <code>MetalPopupMenuSeparatorUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    if (instance == null)
-      instance = new MetalPopupMenuSeparatorUI();
-    return instance;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalProgressBarUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalProgressBarUI.java
deleted file mode 100644
index 005c5f0..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalProgressBarUI.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/* MetalProgressBarUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.Insets;
-
-import javax.swing.JComponent;
-import javax.swing.JProgressBar;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicProgressBarUI;
-
-/**
- * A UI delegate for the {@link JProgressBar} component.
- */
-public class MetalProgressBarUI extends BasicProgressBarUI
-{
-  /**
-   * Constructs a new instance of <code>MetalProgressBarUI</code>.
-   */
-  public MetalProgressBarUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a new instance of <code>MetalProgressBarUI</code>.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return A new instance of <code>MetalProgressBarUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalProgressBarUI();
-  }
-
-  /**
-   * Performs the painting for determinate progress bars. This calls the
-   * superclass behaviour and then adds some highlighting to the upper and left
-   * edge of the progress bar.
-   *
-   * @param g the graphics context
-   * @param c not used here
-   */
-  public void paintDeterminate(Graphics g, JComponent c)
-  {
-    super.paintDeterminate(g, c);
-    Color saved = g.getColor();
-    Insets i = progressBar.getInsets();
-    int w = progressBar.getWidth();
-    int h = progressBar.getHeight();
-    int orientation = progressBar.getOrientation();
-
-    Color shadow = MetalLookAndFeel.getControlShadow();
-    g.setColor(shadow);
-
-    g.drawLine(i.left, i.top, w - i.right, i.top);
-    g.drawLine(i.left, i.top, i.left, h - i.bottom);
-    int full = getAmountFull(i, w, h);
-    if (full > 0)
-      {
-        Color darkShadow = MetalLookAndFeel.getPrimaryControlDarkShadow();
-        g.setColor(darkShadow);
-        if (orientation == JProgressBar.HORIZONTAL)
-          {
-            g.drawLine(i.left, i.top, i.left, h - i.bottom);
-            g.drawLine(i.left, i.top, i.left + full - 1, i.top);
-          }
-        else
-          {
-            if (full >= (h - i.top - i.bottom))
-              g.drawLine(i.left, i.top, w - i.right, i.top);
-            g.drawLine(i.left, h - i.bottom, i.left, h - i.bottom - full);
-          }
-      }
-    g.setColor(saved);
-  }
-
-  /**
-   * Performs the painting for indeterminate progress bars. This calls the
-   * superclass behaviour and then adds some highlighting to the upper and left
-   * edge of the progress bar.
-   *
-   * @param g the graphics context
-   * @param c not used here
-   */
-  public void paintIndeterminate(Graphics g, JComponent c)
-  {
-    super.paintIndeterminate(g, c);
-    Color saved = g.getColor();
-    Insets i = progressBar.getInsets();
-    int w = progressBar.getWidth();
-    int h = progressBar.getHeight();
-    Color shadow = MetalLookAndFeel.getControlShadow();
-    g.setColor(shadow);
-    g.drawLine(i.left, i.top, w - i.right, i.top);
-    g.drawLine(i.left, i.top, i.left, h - i.bottom);
-
-    boxRect = getBox(boxRect);
-    Color darkShadow = MetalLookAndFeel.getPrimaryControlDarkShadow();
-    g.setColor(darkShadow);
-    int orientation = progressBar.getOrientation();
-    if (orientation == JProgressBar.HORIZONTAL)
-      g.drawLine(boxRect.x, i.top, boxRect.x + boxRect.width - 1, i.top);
-    else
-      g.drawLine(i.left, boxRect.y, i.left, boxRect.y + boxRect.height - 1);
-    g.setColor(saved);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalRadioButtonUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalRadioButtonUI.java
deleted file mode 100644
index 0f7f3b1..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalRadioButtonUI.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/* MetalRadioButtonUI.java
-   Copyright (C) 2005, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-
-import javax.swing.AbstractButton;
-import javax.swing.JComponent;
-import javax.swing.JRadioButton;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicRadioButtonUI;
-
-
-/**
- * A UI delegate for the {@link JRadioButton} component.
- */
-public class MetalRadioButtonUI
-  extends BasicRadioButtonUI
-{
-
-  /** Used to draw the focus rectangle. */
-  protected Color focusColor;
-
-  /** Used to fill the icon when the button is pressed. */
-  protected Color selectColor;
-
-  /** Used to draw disabled text. */
-  protected Color disabledTextColor;
-
-  /**
-   * Constructs a new instance of <code>MetalRadioButtonUI</code>.
-   */
-  public MetalRadioButtonUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a new instance of <code>MetalRadioButtonUI</code>.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return A new instance of <code>MetalRadioButtonUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalRadioButtonUI();
-  }
-
-  /**
-   * Sets the default values for the specified button.
-   *
-   * @param b  the button.
-   */
-  public void installDefaults(AbstractButton b)
-  {
-    super.installDefaults(b);
-    String prefix = getPropertyPrefix();
-    disabledTextColor = UIManager.getColor(prefix + "disabledText");
-    focusColor = UIManager.getColor(prefix + "focus");
-    selectColor = UIManager.getColor(prefix + "select");
-  }
-
-  /**
-   * Clears any defaults set in the installDefaults() method.
-   *
-   * @param b  the {@link JRadioButton}.
-   */
-  protected void uninstallDefaults(AbstractButton b)
-  {
-    super.uninstallDefaults(b);
-    disabledTextColor = null;
-    focusColor = null;
-    selectColor = null;
-  }
-
-  /**
-   * Returns the color used to fill the {@link JRadioButton}'s icon when the
-   * button is pressed.  The default color is obtained from the
-   * {@link UIManager} defaults via an entry with the key
-   * <code>RadioButton.select</code>.
-   *
-   * @return The select color.
-   */
-  protected Color getSelectColor()
-  {
-    return selectColor;
-  }
-
-  /**
-   * Returns the color for the {@link JRadioButton}'s text when the button is
-   * disabled.  The default color is obtained from the {@link UIManager}
-   * defaults via an entry with the key <code>RadioButton.disabledText</code>.
-   *
-   * @return The disabled text color.
-   */
-  protected Color getDisabledTextColor()
-  {
-    return disabledTextColor;
-  }
-
-  /**
-   * Returns the color used to draw the focus rectangle when the
-   * {@link JRadioButton} has the focus.  The default color is obtained from
-   * the {@link UIManager} defaults via an entry with the key
-   * <code>RadioButton.focus</code>.
-   *
-   * @return The color used to draw the focus rectangle.
-   *
-   * @see #paintFocus(Graphics, Rectangle, Dimension)
-   */
-  protected Color getFocusColor()
-  {
-    return focusColor;
-  }
-
-  /**
-   * Paints the {@link JRadioButton}.
-   *
-   * @param g  the graphics device.
-   * @param c  the component (an instance of {@link JRadioButton}).
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    super.paint(g, c);
-    // FIXME:  disabled text isn't being drawn correctly, it's possible that
-    // it could be done here...
-  }
-
-  /**
-   * Paints the focus rectangle for the {@link JRadioButton}.
-   *
-   * @param g  the graphics device.
-   * @param t  the bounding rectangle for the text.
-   * @param d  ???
-   */
-  protected void paintFocus(Graphics g, Rectangle t, Dimension d)
-  {
-    g.setColor(focusColor);
-    g.drawRect(t.x - 1, t.y - 1, t.width + 1, t.height + 1);
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalRootPaneUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalRootPaneUI.java
deleted file mode 100644
index 84f1303..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalRootPaneUI.java
+++ /dev/null
@@ -1,1075 +0,0 @@
-/* MetalRootPaneUI.java
-   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Frame;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.LayoutManager;
-import java.awt.LayoutManager2;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.Window;
-import java.awt.event.ActionEvent;
-import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.Icon;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JLayeredPane;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.JRootPane;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.border.AbstractBorder;
-import javax.swing.event.MouseInputAdapter;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicRootPaneUI;
-
-/**
- * A UI delegate for the {@link JRootPane} component. This implementation
- * supports the JRootPane <code>windowDecorationStyle</code> property.
- *
- * @author Roman Kennke (kennke@aicas.com)
- *
- * @since 1.4
- */
-public class MetalRootPaneUI
-  extends BasicRootPaneUI
-{
-
-  /**
-   * The border that is used on JRootPane when the windowDecorationStyle
-   * property of the JRootPane is set to a different value than NONE.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  private static class MetalFrameBorder
-    extends AbstractBorder
-  {
-    /**
-     * Returns the border insets.
-     *
-     * @param c the component
-     * @param newInsets the insets to be filled with the return value, may be
-     *        <code>null</code> in which case a new object is created
-     *
-     * @return the border insets
-     */
-    public Insets getBorderInsets(Component c, Insets newInsets)
-    {
-      if (newInsets == null)
-        newInsets = new Insets(5, 5, 5, 5);
-      else
-        {
-          newInsets.top = 5;
-          newInsets.left = 5;
-          newInsets.bottom = 5;
-          newInsets.right = 5;
-        }
-      return newInsets;
-    }
-
-    /**
-     * Returns the border insets.
-     *
-     * @param c the component
-     *
-     * @return the border insets
-     */
-    public Insets getBorderInsets(Component c)
-    {
-      return getBorderInsets(c, null);
-    }
-
-    /**
-     * Paints the border for the specified component.
-     *
-     * @param c  the component
-     * @param g  the graphics device
-     * @param x  the x-coordinate
-     * @param y  the y-coordinate
-     * @param w  the width
-     * @param h  the height
-     */
-    public void paintBorder(Component c, Graphics g, int x, int y, int w,
-                            int h)
-    {
-      JRootPane f = (JRootPane) c;
-      Window frame = SwingUtilities.getWindowAncestor(f);
-      if (frame.isActive())
-        g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-      else
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-
-      // Fill the border background.
-      g.fillRect(x, y, w, 5);
-      g.fillRect(x, y, 5, h);
-      g.fillRect(x + w - 5, y, 5, h);
-      g.fillRect(x, y + h - 5, w, 5);
-
-      // Draw a dot in each corner.
-      g.setColor(MetalLookAndFeel.getControl());
-      g.fillRect(x, y, 1, 1);
-      g.fillRect(x + w - 1, y, 1, 1);
-      g.fillRect(x + w - 1, y + h - 1, 1, 1);
-      g.fillRect(x, y + h - 1, 1, 1);
-
-      // Draw the lines.
-      g.setColor(MetalLookAndFeel.getBlack());
-      g.drawLine(x + 14, y + 2, x + w - 15, y + 2);
-      g.drawLine(x + 14, y + h - 3, x + w - 15, y + h - 3);
-      g.drawLine(x + 2, y + 14, x + 2, y + h - 15);
-      g.drawLine(x + w - 3, y + 14, x + w - 3, y + h - 15);
-
-      // Draw the line highlights.
-      if (frame.isActive())
-        g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
-      else
-        g.setColor(MetalLookAndFeel.getControlShadow());
-      g.drawLine(x + 15, y + 3, x + w - 14, y + 3);
-      g.drawLine(x + 15, y + h - 2, x + w - 14, y + h - 2);
-      g.drawLine(x + 3, y + 15, x + 3, y + h - 14);
-      g.drawLine(x + w - 2, y + 15, x + w - 2, y + h - 14);
-    }
-  }
-
-  /**
-   * The component that renders the title bar for frames. This duplicates
-   * most of {@link MetalInternalFrameTitlePane}. It is not reasonably possible
-   * to reuse that class because that is bound to the JInternalFrame and we
-   * need to handle JFrames/JRootPanes here.
-   *
-   * @author Roman Kennke (kennke@aicas.com)
-   */
-  private static class MetalTitlePane extends JComponent
-  {
-
-    /**
-     * Handles dragging of the title pane and moves the window accordingly.
-     */
-    private class MouseHandler
-      extends MouseInputAdapter
-    {
-      /**
-       * The point where the dragging started.
-       */
-      Point lastDragLocation;
-
-      /**
-       * Receives notification when the mouse gets pressed on the title pane.
-       * This updates the lastDragLocation.
-       *
-       * @param ev the mouse event
-       */
-      public void mousePressed(MouseEvent ev)
-      {
-        lastDragLocation = ev.getPoint();
-      }
-
-      /**
-       * Receives notification when the mouse is dragged on the title pane.
-       * This will move the nearest window accordingly.
-       *
-       * @param ev the mouse event
-       */
-      public void mouseDragged(MouseEvent ev)
-      {
-        Point dragLocation = ev.getPoint();
-        int deltaX = dragLocation.x - lastDragLocation.x;
-        int deltaY = dragLocation.y - lastDragLocation.y;
-        Window window = SwingUtilities.getWindowAncestor(rootPane);
-        Point loc = window.getLocation();
-        window.setLocation(loc.x + deltaX, loc.y + deltaY);
-        // Note that we do not update the lastDragLocation. This is because
-        // we move the underlying window while dragging the component, which
-        // results in having the same lastDragLocation under the mouse while
-        // dragging.
-      }
-    }
-
-    /**
-     * The Action responsible for closing the JInternalFrame.
-     */
-    private class CloseAction extends AbstractAction
-    {
-      /**
-       * Creates a new action.
-       */
-      public CloseAction()
-      {
-        super("Close");
-      }
-
-      /**
-       * This method is called when something closes the frame.
-       *
-       * @param e the ActionEvent
-       */
-      public void actionPerformed(ActionEvent e)
-      {
-        Window frame = SwingUtilities.getWindowAncestor(rootPane);
-        if (frame instanceof JFrame)
-          {
-            JFrame jframe = (JFrame) frame;
-            switch (jframe.getDefaultCloseOperation())
-            {
-              case JFrame.EXIT_ON_CLOSE:
-                jframe.setVisible(false);
-                jframe.dispose();
-                System.exit(0);
-                break;
-              case JFrame.DISPOSE_ON_CLOSE:
-                jframe.setVisible(false);
-                jframe.dispose();
-                break;
-              case JFrame.HIDE_ON_CLOSE:
-                jframe.setVisible(false);
-                break;
-              case JFrame.DO_NOTHING_ON_CLOSE:
-              default:
-                  break;
-            }
-          }
-        else if (frame instanceof JDialog)
-          {
-            JDialog jdialog = (JDialog) frame;
-            switch (jdialog.getDefaultCloseOperation())
-            {
-              case JFrame.DISPOSE_ON_CLOSE:
-                jdialog.setVisible(false);
-                jdialog.dispose();
-                break;
-              case JFrame.HIDE_ON_CLOSE:
-                jdialog.setVisible(false);
-                break;
-              case JFrame.DO_NOTHING_ON_CLOSE:
-              default:
-                  break;
-            }
-          }
-      }
-    }
-
-    /**
-     * This action is performed when the iconify button is pressed.
-     */
-    private class IconifyAction
-      extends AbstractAction
-    {
-
-      public void actionPerformed(ActionEvent event)
-      {
-        Window w = SwingUtilities.getWindowAncestor(rootPane);
-        if (w instanceof Frame)
-          {
-            Frame f = (Frame) w;
-            int state = f.getExtendedState();
-            f.setExtendedState(Frame.ICONIFIED);
-          }
-      }
-
-    }
-
-    /**
-     * This action is performed when the maximize button is pressed.
-     */
-    private class MaximizeAction
-      extends AbstractAction
-    {
-
-      public void actionPerformed(ActionEvent event)
-      {
-        Window w = SwingUtilities.getWindowAncestor(rootPane);
-        if (w instanceof Frame)
-          {
-            Frame f = (Frame) w;
-            int state = f.getExtendedState();
-            f.setExtendedState(Frame.MAXIMIZED_BOTH);
-          }
-      }
-    }
-
-    /**
-     * This helper class is used to create the minimize, maximize and close
-     * buttons in the top right corner of the Title Pane. These buttons are
-     * special since they cannot be given focus and have no border.
-     */
-    private class PaneButton extends JButton
-    {
-      /**
-       * Creates a new PaneButton object with the given Action.
-       *
-       * @param a The Action that the button uses.
-       */
-      public PaneButton(Action a)
-      {
-        super(a);
-        setMargin(new Insets(0, 0, 0, 0));
-      }
-
-      /**
-       * This method returns true if the Component can be focused.
-       *
-       * @return false.
-       */
-      public boolean isFocusable()
-      {
-        // These buttons cannot be given focus.
-        return false;
-      }
-
-    }
-
-    /**
-     * The layout for the JRootPane when the <code>windowDecorationStyle</code>
-     * property is set. In addition to the usual JRootPane.RootLayout behaviour
-     * this lays out the titlePane.
-     *
-     * @author Roman Kennke (kennke@aicas.com)
-     */
-    private class MetalTitlePaneLayout implements LayoutManager
-    {
-      /**
-       * Creates a new <code>TitlePaneLayout</code> object.
-       */
-      public MetalTitlePaneLayout()
-      {
-        // Do nothing.
-      }
-
-      /**
-       * Adds a Component to the Container.
-       *
-       * @param name The name to reference the added Component by.
-       * @param c The Component to add.
-       */
-      public void addLayoutComponent(String name, Component c)
-      {
-        // Do nothing.
-      }
-
-      /**
-       * This method is called to lay out the children of the Title Pane.
-       *
-       * @param c The Container to lay out.
-       */
-      public void layoutContainer(Container c)
-      {
-
-        Dimension size = c.getSize();
-        Insets insets = c.getInsets();
-        int width = size.width - insets.left - insets.right;
-        int height = size.height - insets.top - insets.bottom;
-
-        int loc = width - insets.right - 1;
-        int top = insets.top + 2;
-        int buttonHeight = height - 4;
-        if (closeButton.isVisible())
-          {
-            int buttonWidth = closeIcon.getIconWidth();
-            loc -= buttonWidth + 2;
-            closeButton.setBounds(loc, top, buttonWidth, buttonHeight);
-            loc -= 6;
-          }
-
-        if (maxButton.isVisible())
-          {
-            int buttonWidth = maxIcon.getIconWidth();
-            loc -= buttonWidth + 4;
-            maxButton.setBounds(loc, top, buttonWidth, buttonHeight);
-          }
-
-        if (iconButton.isVisible())
-          {
-            int buttonWidth = minIcon.getIconWidth();
-            loc -= buttonWidth + 4;
-            iconButton.setBounds(loc, top, buttonWidth, buttonHeight);
-            loc -= 2;
-          }
-
-        Dimension titlePreferredSize = title.getPreferredSize();
-        title.setBounds(insets.left + 5, insets.top,
-                Math.min(titlePreferredSize.width, loc - insets.left - 10),
-                height);
-
-      }
-
-      /**
-       * This method returns the minimum size of the given Container given the
-       * children that it has.
-       *
-       * @param c The Container to get a minimum size for.
-       *
-       * @return The minimum size of the Container.
-       */
-      public Dimension minimumLayoutSize(Container c)
-      {
-        return preferredLayoutSize(c);
-      }
-
-      /**
-       * Returns the preferred size of the given Container taking
-       * into account the children that it has.
-       *
-       * @param c The Container to lay out.
-       *
-       * @return The preferred size of the Container.
-       */
-      public Dimension preferredLayoutSize(Container c)
-      {
-        return new Dimension(22, 22);
-      }
-
-      /**
-       * Removes a Component from the Container.
-       *
-       * @param c The Component to remove.
-       */
-      public void removeLayoutComponent(Component c)
-      {
-        // Nothing to do here.
-      }
-    }
-
-    JRootPane rootPane;
-
-    /** The button that closes the JInternalFrame. */
-    JButton closeButton;
-
-    /** The button that iconifies the JInternalFrame. */
-    JButton iconButton;
-
-    /** The button that maximizes the JInternalFrame. */
-    JButton maxButton;
-
-    Icon minIcon;
-
-    /** The icon displayed in the maximize button. */
-    Icon maxIcon;
-
-    /** The icon displayed in the iconify button. */
-    private Icon iconIcon;
-
-    /** The icon displayed in the close button. */
-    Icon closeIcon;
-
-    /**
-     * The background color of the TitlePane when the JInternalFrame is not
-     * selected.
-     */
-    private Color notSelectedTitleColor;
-
-    /**
-     * The background color of the TitlePane when the JInternalFrame is
-     * selected.
-     */
-    private Color selectedTitleColor;
-
-    /**
-     * The label used to display the title. This label is not added to the
-     * TitlePane.
-     */
-    JLabel title;
-
-    /** The action associated with closing the JInternalFrame. */
-    private Action closeAction;
-
-    /** The action associated with iconifying the JInternalFrame. */
-    private Action iconifyAction;
-
-    /** The action associated with maximizing the JInternalFrame. */
-    private Action maximizeAction;
-
-    /** The JMenuBar that is located at the top left of the Title Pane. */
-    private JMenuBar menuBar;
-
-    /** The JMenu inside the menuBar. */
-    protected JMenu windowMenu;
-
-    MetalTitlePane(JRootPane rp)
-    {
-      rootPane = rp;
-      setLayout(createLayout());
-      title = new JLabel();
-      title.setHorizontalAlignment(SwingConstants.LEFT);
-      title.setHorizontalTextPosition(SwingConstants.LEFT);
-      title.setOpaque(false);
-      installTitlePane();
-    }
-
-    protected LayoutManager createLayout()
-    {
-      return new MetalTitlePaneLayout();
-    }
-
-    /**
-     * This method installs the TitlePane onto the JInternalFrameTitlePane. It
-     * also creates any children components that need to be created and adds
-     * listeners to the appropriate components.
-     */
-    protected void installTitlePane()
-    {
-      installDefaults();
-      installListeners();
-      createActions();
-      assembleSystemMenu();
-      createButtons();
-      setButtonIcons();
-      addSubComponents();
-      enableActions();
-    }
-
-    private void enableActions()
-    {
-      // TODO: Implement this.
-    }
-
-    private void addSubComponents()
-    {
-      add(menuBar);
-      add(closeButton);
-      add(iconButton);
-      add(maxButton);
-    }
-
-    private void installListeners()
-    {
-      MouseInputAdapter mouseHandler = new MouseHandler();
-      addMouseListener(mouseHandler);
-      addMouseMotionListener(mouseHandler);
-    }
-
-    private void createActions()
-    {
-      closeAction = new CloseAction();
-      iconifyAction = new IconifyAction();
-      maximizeAction = new MaximizeAction();
-    }
-
-    private void assembleSystemMenu()
-    {
-      menuBar = createSystemMenuBar();
-      windowMenu = createSystemMenu();
-      menuBar.add(windowMenu);
-      addSystemMenuItems(windowMenu);
-      enableActions();
-    }
-
-    protected JMenuBar createSystemMenuBar()
-    {
-      if (menuBar == null)
-        menuBar = new JMenuBar();
-      menuBar.removeAll();
-      return menuBar;
-    }
-
-    protected JMenu createSystemMenu()
-    {
-      if (windowMenu == null)
-        windowMenu = new JMenu();
-      windowMenu.removeAll();
-      return windowMenu;
-    }
-
-    private void addSystemMenuItems(JMenu menu)
-    {
-      // TODO: Implement this.
-    }
-
-    protected void createButtons()
-    {
-      closeButton = new PaneButton(closeAction);
-      closeButton.setText(null);
-      iconButton = new PaneButton(iconifyAction);
-      iconButton.setText(null);
-      maxButton = new PaneButton(maximizeAction);
-      maxButton.setText(null);
-      closeButton.setBorderPainted(false);
-      closeButton.setContentAreaFilled(false);
-      iconButton.setBorderPainted(false);
-      iconButton.setContentAreaFilled(false);
-      maxButton.setBorderPainted(false);
-      maxButton.setContentAreaFilled(false);
-    }
-
-    protected void setButtonIcons()
-    {
-      if (closeIcon != null && closeButton != null)
-        closeButton.setIcon(closeIcon);
-      if (iconIcon != null && iconButton != null)
-        iconButton.setIcon(iconIcon);
-      if (maxIcon != null && maxButton != null)
-        maxButton.setIcon(maxIcon);
-    }
-
-    /**
-     * Paints a representation of the current state of the internal frame.
-     *
-     * @param g  the graphics device.
-     */
-    public void paintComponent(Graphics g)
-    {
-      Window frame = SwingUtilities.getWindowAncestor(rootPane);
-      Color savedColor = g.getColor();
-      paintTitleBackground(g);
-      paintChildren(g);
-      Dimension d = getSize();
-      if (frame.isActive())
-        g.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
-      else
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-
-      // put a dot in each of the top corners
-      g.drawLine(0, 0, 0, 0);
-      g.drawLine(d.width - 1, 0, d.width - 1, 0);
-
-      g.drawLine(0, d.height - 1, d.width - 1, d.height - 1);
-
-      // draw the metal pattern
-      if (UIManager.get("InternalFrame.activeTitleGradient") != null
-          && frame.isActive())
-        {
-          MetalUtils.paintGradient(g, 0, 0, getWidth(), getHeight(),
-                                   SwingConstants.VERTICAL,
-          "InternalFrame.activeTitleGradient");
-        }
-
-      Rectangle b = title.getBounds();
-      int startX = b.x + b.width + 5;
-      int endX = startX;
-      if (iconButton.isVisible())
-        endX = Math.max(iconButton.getX(), endX);
-      else if (maxButton.isVisible())
-        endX = Math.max(maxButton.getX(), endX);
-      else if (closeButton.isVisible())
-        endX = Math.max(closeButton.getX(), endX);
-      endX -= 7;
-      if (endX > startX)
-        MetalUtils.fillMetalPattern(this, g, startX, 3, endX - startX, getHeight() - 6, Color.white, Color.gray);
-      g.setColor(savedColor);
-    }
-
-    /**
-     * This method paints the TitlePane's background.
-     *
-     * @param g The Graphics object to paint with.
-     */
-    protected void paintTitleBackground(Graphics g)
-    {
-      Window frame = SwingUtilities.getWindowAncestor(rootPane);
-
-      if (!isOpaque())
-        return;
-
-      Color saved = g.getColor();
-      Dimension dims = getSize();
-
-      Color bg = getBackground();
-      if (frame.isActive())
-        bg = selectedTitleColor;
-      else
-        bg = notSelectedTitleColor;
-      g.setColor(bg);
-      g.fillRect(0, 0, dims.width, dims.height);
-      g.setColor(saved);
-    }
-
-    /**
-     * This method installs the defaults determined by the look and feel.
-     */
-    private void installDefaults()
-    {
-      title.setFont(UIManager.getFont("InternalFrame.titleFont"));
-      selectedTitleColor = UIManager.getColor("InternalFrame.activeTitleBackground");
-      notSelectedTitleColor = UIManager.getColor("InternalFrame.inactiveTitleBackground");
-      closeIcon = UIManager.getIcon("InternalFrame.closeIcon");
-      iconIcon = UIManager.getIcon("InternalFrame.iconifyIcon");
-      maxIcon = UIManager.getIcon("InternalFrame.maximizeIcon");
-      minIcon = MetalIconFactory.getInternalFrameAltMaximizeIcon(16);
-      Frame frame = (Frame) SwingUtilities.getWindowAncestor(rootPane);
-      title = new JLabel(frame.getTitle(),
-              MetalIconFactory.getInternalFrameDefaultMenuIcon(),
-              SwingConstants.LEFT);
-    }
-  }
-
-  private static class MetalRootLayout
-    implements LayoutManager2
-  {
-
-    /**
-     * The cached layout info for the glass pane.
-     */
-    private Rectangle glassPaneBounds;
-
-    /**
-     * The cached layout info for the layered pane.
-     */
-    private Rectangle layeredPaneBounds;
-
-    /**
-     * The cached layout info for the content pane.
-     */
-    private Rectangle contentPaneBounds;
-
-    /**
-     * The cached layout info for the menu bar.
-     */
-    private Rectangle menuBarBounds;
-
-    /**
-     * The cached layout info for the title pane.
-     */
-    private Rectangle titlePaneBounds;
-
-    /**
-     * The cached preferred size.
-     */
-    private Dimension prefSize;
-
-    /**
-     * The title pane for l&f decorated frames.
-     */
-    private MetalTitlePane titlePane;
-
-    /**
-     * Creates a new MetalRootLayout.
-     *
-     * @param tp the title pane
-     */
-    MetalRootLayout(MetalTitlePane tp)
-    {
-      titlePane = tp;
-    }
-
-    public void addLayoutComponent(Component component, Object constraints)
-    {
-      // Nothing to do here.
-    }
-
-    public Dimension maximumLayoutSize(Container target)
-    {
-      return preferredLayoutSize(target);
-    }
-
-    public float getLayoutAlignmentX(Container target)
-    {
-      return 0.0F;
-    }
-
-    public float getLayoutAlignmentY(Container target)
-    {
-      return 0.0F;
-    }
-
-    public void invalidateLayout(Container target)
-    {
-      synchronized (this)
-      {
-        glassPaneBounds = null;
-        layeredPaneBounds = null;
-        contentPaneBounds = null;
-        menuBarBounds = null;
-        titlePaneBounds = null;
-        prefSize = null;
-      }
-    }
-
-    public void addLayoutComponent(String name, Component component)
-    {
-      // Nothing to do here.
-    }
-
-    public void removeLayoutComponent(Component component)
-    {
-      // TODO Auto-generated method stub
-
-    }
-
-    public Dimension preferredLayoutSize(Container parent)
-    {
-      JRootPane rp = (JRootPane) parent;
-      JLayeredPane layeredPane = rp.getLayeredPane();
-      Component contentPane = rp.getContentPane();
-      Component menuBar = rp.getJMenuBar();
-
-      // We must synchronize here, otherwise we cannot guarantee that the
-      // prefSize is still non-null when returning.
-      synchronized (this)
-        {
-          if (prefSize == null)
-            {
-              Insets i = parent.getInsets();
-              prefSize = new Dimension(i.left + i.right, i.top + i.bottom);
-              Dimension contentPrefSize = contentPane.getPreferredSize();
-              prefSize.width += contentPrefSize.width;
-              prefSize.height += contentPrefSize.height
-                                 + titlePane.getPreferredSize().height;
-              if (menuBar != null)
-                {
-                  Dimension menuBarSize = menuBar.getPreferredSize();
-                  if (menuBarSize.width > contentPrefSize.width)
-                    prefSize.width += menuBarSize.width - contentPrefSize.width;
-                  prefSize.height += menuBarSize.height;
-                }
-            }
-          // Return a copy here so the cached value won't get trashed by some
-          // other component.
-          return new Dimension(prefSize);
-      }
-    }
-
-    public Dimension minimumLayoutSize(Container parent)
-    {
-      return preferredLayoutSize(parent);
-    }
-
-    public void layoutContainer(Container parent)
-    {
-      JRootPane rp = (JRootPane) parent;
-      JLayeredPane layeredPane = rp.getLayeredPane();
-      Component contentPane = rp.getContentPane();
-      Component menuBar = rp.getJMenuBar();
-      Component glassPane = rp.getGlassPane();
-
-      if (glassPaneBounds == null || layeredPaneBounds == null
-          || contentPaneBounds == null || menuBarBounds == null)
-        {
-          Insets i = rp.getInsets();
-          int containerWidth = parent.getBounds().width - i.left - i.right;
-          int containerHeight = parent.getBounds().height - i.top - i.bottom;
-
-          // 1. The glassPane fills entire viewable region (bounds - insets).
-          // 2. The layeredPane filles entire viewable region.
-          // 3. The titlePane is placed at the upper edge of the layeredPane.
-          // 4. The menuBar is positioned at the upper edge of layeredPane.
-          // 5. The contentPane fills viewable region minus menuBar minus
-          //    titlePane, if present.
-
-          // +-------------------------------+
-          // |  JLayeredPane                 |
-          // |  +--------------------------+ |
-          // |  | titlePane                + |
-          // |  +--------------------------+ |
-          // |  +--------------------------+ |
-          // |  | menuBar                  | |
-          // |  +--------------------------+ |
-          // |  +--------------------------+ |
-          // |  |contentPane               | |
-          // |  |                          | |
-          // |  |                          | |
-          // |  |                          | |
-          // |  +--------------------------+ |
-          // +-------------------------------+
-
-          // Setup titlePaneBounds.
-          if (titlePaneBounds == null)
-            titlePaneBounds = new Rectangle();
-          titlePaneBounds.width = containerWidth;
-          titlePaneBounds.height = titlePane.getPreferredSize().height;
-
-          // Setup menuBarBounds.
-          if (menuBarBounds == null)
-            menuBarBounds = new Rectangle();
-          menuBarBounds.setBounds(0,
-                                  titlePaneBounds.y + titlePaneBounds.height,
-                                  containerWidth, 0);
-          if (menuBar != null)
-            {
-              Dimension menuBarSize = menuBar.getPreferredSize();
-              if (menuBarSize.height > containerHeight)
-                menuBarBounds.height = containerHeight;
-              else
-                menuBarBounds.height = menuBarSize.height;
-            }
-
-          // Setup contentPaneBounds.
-          if (contentPaneBounds == null)
-            contentPaneBounds = new Rectangle();
-          contentPaneBounds.setBounds(0,
-                                      menuBarBounds.y + menuBarBounds.height,
-                                      containerWidth,
-                                      containerHeight - menuBarBounds.y
-                                      - menuBarBounds.height);
-          glassPaneBounds = new Rectangle(i.left, i.top, containerWidth, containerHeight);
-          layeredPaneBounds = new Rectangle(i.left, i.top, containerWidth, containerHeight);
-        }
-
-      // Layout components.
-      glassPane.setBounds(glassPaneBounds);
-      layeredPane.setBounds(layeredPaneBounds);
-      if (menuBar != null)
-        menuBar.setBounds(menuBarBounds);
-      contentPane.setBounds(contentPaneBounds);
-      titlePane.setBounds(titlePaneBounds);
-    }
-
-  }
-
-  /**
-   * The shared UI instance for MetalRootPaneUIs.
-   */
-  private static MetalRootPaneUI instance;
-
-  /**
-   * Constructs a shared instance of <code>MetalRootPaneUI</code>.
-   */
-  public MetalRootPaneUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a shared instance of <code>MetalRootPaneUI</code>.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return A shared instance of <code>MetalRootPaneUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    if (instance == null)
-      instance = new MetalRootPaneUI();
-    return instance;
-  }
-
-  /**
-   * Installs this UI to the root pane. If the
-   * <code>windowDecorationsStyle</code> property is set on the root pane,
-   * the Metal window decorations are installed on the root pane.
-   *
-   * @param c
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    JRootPane rp = (JRootPane) c;
-    if (rp.getWindowDecorationStyle() != JRootPane.NONE)
-      installWindowDecorations(rp);
-  }
-
-  /**
-   * Uninstalls the UI from the root pane. This performs the superclass
-   * behaviour and uninstalls the window decorations that have possibly been
-   * installed by {@link #installUI}.
-   *
-   * @param c the root pane
-   */
-  public void uninstallUI(JComponent c)
-  {
-    JRootPane rp = (JRootPane) c;
-    if (rp.getWindowDecorationStyle() != JRootPane.NONE)
-      uninstallWindowDecorations(rp);
-    super.uninstallUI(c);
-  }
-
-  /**
-   * Receives notification if any of the JRootPane's property changes. In
-   * particular this catches changes to the <code>windowDecorationStyle</code>
-   * property and installs the window decorations accordingly.
-   *
-   * @param ev the property change event
-   */
-  public void propertyChange(PropertyChangeEvent ev)
-  {
-    super.propertyChange(ev);
-    String propertyName = ev.getPropertyName();
-    if (propertyName.equals("windowDecorationStyle"))
-      {
-        JRootPane rp = (JRootPane) ev.getSource();
-        if (rp.getWindowDecorationStyle() != JRootPane.NONE)
-          installWindowDecorations(rp);
-        else
-          uninstallWindowDecorations(rp);
-      }
-  }
-
-  /**
-   * Installs the window decorations to the root pane. This sets up a border,
-   * a title pane and a layout manager that can layout the root pane with that
-   * title pane.
-   *
-   * @param rp the root pane.
-   */
-  private void installWindowDecorations(JRootPane rp)
-  {
-    rp.setBorder(new MetalFrameBorder());
-    MetalTitlePane titlePane = new MetalTitlePane(rp);
-    rp.setLayout(new MetalRootLayout(titlePane));
-    // We should have a contentPane already.
-    assert rp.getLayeredPane().getComponentCount() > 0
-           : "We should have a contentPane already";
-
-    rp.getLayeredPane().add(titlePane,
-                            JLayeredPane.FRAME_CONTENT_LAYER, 1);
-  }
-
-  /**
-   * Uninstalls the window decorations from the root pane. This should rarely
-   * be necessary, but we do it anyway.
-   *
-   * @param rp the root pane
-   */
-  private void uninstallWindowDecorations(JRootPane rp)
-  {
-    rp.setBorder(null);
-    JLayeredPane lp = rp.getLayeredPane();
-    for (int i = lp.getComponentCount() - 1; i >= 0; --i)
-      {
-        if (lp.getComponent(i) instanceof MetalTitlePane)
-          {
-            lp.remove(i);
-            break;
-          }
-      }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalScrollBarUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalScrollBarUI.java
deleted file mode 100644
index 5f0cbe4..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalScrollBarUI.java
+++ /dev/null
@@ -1,584 +0,0 @@
-/* MetalScrollBarUI.java
-   Copyright (C) 2005, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Rectangle;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JScrollBar;
-import javax.swing.SwingConstants;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicScrollBarUI;
-
-/**
- * A UI delegate for the {@link JScrollBar} component.
- */
-public class MetalScrollBarUI extends BasicScrollBarUI
-{
-
-  /**
-   * A property change handler for the UI delegate that monitors for
-   * changes to the "JScrollBar.isFreeStanding" property, and updates
-   * the buttons and track rendering as appropriate.
-   */
-  class MetalScrollBarPropertyChangeHandler
-    extends BasicScrollBarUI.PropertyChangeHandler
-  {
-    /**
-     * Creates a new handler.
-     *
-     * @see #createPropertyChangeListener()
-     */
-    public MetalScrollBarPropertyChangeHandler()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Handles a property change event.  If the event name is
-     * <code>JSlider.isFreeStanding</code>, this method updates the
-     * delegate, otherwise the event is passed up to the super class.
-     *
-     * @param e  the property change event.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      if (e.getPropertyName().equals(FREE_STANDING_PROP))
-        {
-          Boolean prop = (Boolean) e.getNewValue();
-          isFreeStanding = prop == null ? true : prop.booleanValue();
-          if (increaseButton != null)
-            increaseButton.setFreeStanding(isFreeStanding);
-          if (decreaseButton != null)
-            decreaseButton.setFreeStanding(isFreeStanding);
-        }
-      else
-        super.propertyChange(e);
-    }
-  }
-
-  /** The name for the 'free standing' property. */
-  public static final String FREE_STANDING_PROP = "JScrollBar.isFreeStanding";
-
-  /** The minimum thumb size for a scroll bar that is not free standing. */
-  private static final Dimension MIN_THUMB_SIZE = new Dimension(15, 15);
-
-  /** The minimum thumb size for a scroll bar that is free standing. */
-  private static final Dimension MIN_THUMB_SIZE_FREE_STANDING
-    = new Dimension(17, 17);
-
-  /** The button that increases the value in the scroll bar. */
-  protected MetalScrollButton increaseButton;
-
-  /** The button that decreases the value in the scroll bar. */
-  protected MetalScrollButton decreaseButton;
-
-  /**
-   * The scroll bar width.
-   */
-  protected int scrollBarWidth;
-
-  /**
-   * A flag that indicates whether the scroll bar is "free standing", which
-   * means it has complete borders and can be used anywhere in the UI.  A
-   * scroll bar which is not free standing has borders missing from one
-   * side, and relies on being part of another container with its own borders
-   * to look right visually. */
-  protected boolean isFreeStanding = true;
-
-  /**
-   * The color for the scroll bar shadow (this is read from the UIDefaults in
-   * the installDefaults() method).
-   */
-  Color scrollBarShadowColor;
-
-  /**
-   * Constructs a new instance of <code>MetalScrollBarUI</code>, with no
-   * specific initialisation.
-   */
-  public MetalScrollBarUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a new instance of <code>MetalScrollBarUI</code>.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return An instance of MetalScrollBarUI
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalScrollBarUI();
-  }
-
-  /**
-   * Installs the defaults.
-   */
-  protected void installDefaults()
-  {
-    // need to initialise isFreeStanding before calling the super class,
-    // so that the value is set when createIncreaseButton() and
-    // createDecreaseButton() are called (unless there is somewhere earlier
-    // that we can do this).
-    Boolean prop = (Boolean) scrollbar.getClientProperty(FREE_STANDING_PROP);
-    isFreeStanding = prop == null ? true : prop.booleanValue();
-    scrollBarShadowColor = UIManager.getColor("ScrollBar.shadow");
-    scrollBarWidth = UIManager.getInt("ScrollBar.width");
-    super.installDefaults();
-  }
-
-  /**
-   * Creates a property change listener for the delegate to use.  This
-   * overrides the method to provide a custom listener for the
-   * {@link MetalLookAndFeel} that can handle the
-   * <code>JScrollBar.isFreeStanding</code> property.
-   *
-   * @return A property change listener.
-   */
-  protected PropertyChangeListener createPropertyChangeListener()
-  {
-    return new MetalScrollBarPropertyChangeHandler();
-  }
-
-  /**
-   * Creates a new button to use as the control at the lower end of the
-   * {@link JScrollBar}.  This method assigns the new button (an instance of
-   * {@link MetalScrollButton} to the {@link #decreaseButton} field, and also
-   * returns the button.  The button width is determined by the
-   * <code>ScrollBar.width</code> setting in the UI defaults.
-   *
-   * @param orientation  the orientation of the button ({@link #NORTH},
-   *                     {@link #SOUTH}, {@link #EAST} or {@link #WEST}).
-   *
-   * @return The button.
-   */
-  protected JButton createDecreaseButton(int orientation)
-  {
-    decreaseButton = new MetalScrollButton(orientation, scrollBarWidth,
-            isFreeStanding);
-    return decreaseButton;
-  }
-
-  /**
-   * Creates a new button to use as the control at the upper end of the
-   * {@link JScrollBar}.  This method assigns the new button (an instance of
-   * {@link MetalScrollButton} to the {@link #increaseButton} field, and also
-   * returns the button.  The button width is determined by the
-   * <code>ScrollBar.width</code> setting in the UI defaults.
-   *
-   * @param orientation  the orientation of the button ({@link #NORTH},
-   *                     {@link #SOUTH}, {@link #EAST} or {@link #WEST}).
-   *
-   * @return The button.
-   */
-  protected JButton createIncreaseButton(int orientation)
-  {
-    increaseButton = new MetalScrollButton(orientation, scrollBarWidth,
-            isFreeStanding);
-    return increaseButton;
-  }
-
-  /**
-   * Paints the track for the scrollbar.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   * @param trackBounds  the track bounds.
-   */
-  protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds)
-  {
-    g.setColor(MetalLookAndFeel.getControl());
-    g.fillRect(trackBounds.x, trackBounds.y, trackBounds.width,
-            trackBounds.height);
-    if (scrollbar.getOrientation() == HORIZONTAL)
-      paintTrackHorizontal(g, c, trackBounds.x, trackBounds.y,
-          trackBounds.width, trackBounds.height);
-    else
-      paintTrackVertical(g, c, trackBounds.x, trackBounds.y,
-          trackBounds.width, trackBounds.height);
-
-  }
-
-  /**
-   * Paints the track for a horizontal scrollbar.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   * @param x  the x-coordinate for the track bounds.
-   * @param y  the y-coordinate for the track bounds.
-   * @param w  the width for the track bounds.
-   * @param h  the height for the track bounds.
-   */
-  private void paintTrackHorizontal(Graphics g, JComponent c,
-      int x, int y, int w, int h)
-  {
-    if (c.isEnabled())
-      {
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-        g.drawLine(x, y, x, y + h - 1);
-        g.drawLine(x, y, x + w - 1, y);
-        g.drawLine(x + w - 1, y, x + w - 1, y + h - 1);
-
-        g.setColor(scrollBarShadowColor);
-        g.drawLine(x + 1, y + 1, x + 1, y + h - 1);
-        g.drawLine(x + 1, y + 1, x + w - 2, y + 1);
-
-        if (isFreeStanding)
-          {
-            g.setColor(MetalLookAndFeel.getControlDarkShadow());
-            g.drawLine(x, y + h - 2, x + w - 1, y + h - 2);
-            g.setColor(scrollBarShadowColor);
-            g.drawLine(x, y + h - 1, x + w - 1, y + h - 1);
-          }
-      }
-    else
-      {
-        g.setColor(MetalLookAndFeel.getControlDisabled());
-        if (isFreeStanding)
-          g.drawRect(x, y, w - 1, h - 1);
-        else
-          {
-            g.drawLine(x, y, x + w - 1, y);
-            g.drawLine(x, y, x, y + h - 1);
-            g.drawLine(x + w - 1, y, x + w - 1, y + h - 1);
-          }
-      }
-  }
-
-  /**
-   * Paints the track for a vertical scrollbar.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   * @param x  the x-coordinate for the track bounds.
-   * @param y  the y-coordinate for the track bounds.
-   * @param w  the width for the track bounds.
-   * @param h  the height for the track bounds.
-   */
-  private void paintTrackVertical(Graphics g, JComponent c,
-      int x, int y, int w, int h)
-  {
-    if (c.isEnabled())
-      {
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-        g.drawLine(x, y, x, y + h - 1);
-        g.drawLine(x, y, x + w - 1, y);
-        g.drawLine(x, y + h - 1, x + w - 1, y + h - 1);
-
-        g.setColor(scrollBarShadowColor);
-        g.drawLine(x + 1, y + 1, x + w - 1, y + 1);
-        g.drawLine(x + 1, y + 1, x + 1, y + h - 2);
-
-        if (isFreeStanding)
-          {
-            g.setColor(MetalLookAndFeel.getControlDarkShadow());
-            g.drawLine(x + w - 2, y, x + w - 2, y + h - 1);
-            g.setColor(MetalLookAndFeel.getControlHighlight());
-            g.drawLine(x + w - 1, y, x + w - 1, y + h - 1);
-          }
-      }
-    else
-      {
-        g.setColor(MetalLookAndFeel.getControlDisabled());
-        if (isFreeStanding)
-          g.drawRect(x, y, w - 1, h - 1);
-        else
-          {
-            g.drawLine(x, y, x + w - 1, y);
-            g.drawLine(x, y, x, y + h - 1);
-            g.drawLine(x, y + h - 1, x + w - 1, y + h - 1);
-          }
-      }
-  }
-
-  /**
-   * Paints the slider button of the ScrollBar.
-   *
-   * @param g the Graphics context to use
-   * @param c the JComponent on which we paint
-   * @param thumbBounds the rectangle that is the slider button
-   */
-  protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds)
-  {
-    // a disabled scrollbar has no thumb in the metal look and feel
-    if (!c.isEnabled())
-      return;
-    if (scrollbar.getOrientation() == HORIZONTAL)
-      paintThumbHorizontal(g, c, thumbBounds);
-    else
-      paintThumbVertical(g, c, thumbBounds);
-
-    // Draw the pattern when the theme is not Ocean.
-    if (! (MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme))
-      {
-        MetalUtils.fillMetalPattern(c, g, thumbBounds.x + 3, thumbBounds.y + 3,
-                                    thumbBounds.width - 6,
-                                    thumbBounds.height - 6,
-                                    thumbHighlightColor,
-                                    thumbLightShadowColor);
-      }
-  }
-
-  /**
-   * Paints the thumb for a horizontal scroll bar.
-   *
-   * @param g  the graphics device.
-   * @param c  the scroll bar component.
-   * @param thumbBounds  the thumb bounds.
-   */
-  private void paintThumbHorizontal(Graphics g, JComponent c,
-          Rectangle thumbBounds)
-  {
-    int x = thumbBounds.x;
-    int y = thumbBounds.y;
-    int w = thumbBounds.width;
-    int h = thumbBounds.height;
-
-    // First we fill the background.
-    MetalTheme theme = MetalLookAndFeel.getCurrentTheme();
-    if (theme instanceof OceanTheme
-        && UIManager.get("ScrollBar.gradient") != null)
-      {
-        MetalUtils.paintGradient(g, x + 2, y + 2, w - 4, h - 2,
-                                 SwingConstants.VERTICAL,
-                                 "ScrollBar.gradient");
-      }
-    else
-      {
-        g.setColor(thumbColor);
-        if (isFreeStanding)
-          g.fillRect(x, y, w, h - 1);
-        else
-          g.fillRect(x, y, w, h);
-      }
-
-    // then draw the dark box
-    g.setColor(thumbLightShadowColor);
-    if (isFreeStanding)
-      g.drawRect(x, y, w - 1, h - 2);
-    else
-      {
-        g.drawLine(x, y, x + w - 1, y);
-        g.drawLine(x, y, x, y + h - 1);
-        g.drawLine(x + w - 1, y, x + w - 1, y + h - 1);
-      }
-
-    // then the highlight
-    g.setColor(thumbHighlightColor);
-    if (isFreeStanding)
-      {
-        g.drawLine(x + 1, y + 1, x + w - 3, y + 1);
-        g.drawLine(x + 1, y + 1, x + 1, y + h - 3);
-      }
-    else
-      {
-        g.drawLine(x + 1, y + 1, x + w - 3, y + 1);
-        g.drawLine(x + 1, y + 1, x + 1, y + h - 1);
-      }
-
-    // draw the shadow line
-    g.setColor(UIManager.getColor("ScrollBar.shadow"));
-    g.drawLine(x + w, y + 1, x + w, y + h - 1);
-
-    // For the OceanTheme, draw the 3 lines in the middle.
-    if (theme instanceof OceanTheme)
-      {
-        g.setColor(thumbLightShadowColor);
-        int middle = x + w / 2;
-        g.drawLine(middle - 2, y + 4, middle - 2, y + h - 5);
-        g.drawLine(middle, y + 4, middle, y + h - 5);
-        g.drawLine(middle + 2, y + 4, middle + 2, y + h - 5);
-        g.setColor(UIManager.getColor("ScrollBar.highlight"));
-        g.drawLine(middle - 1, y + 5, middle - 1, y + h - 4);
-        g.drawLine(middle + 1, y + 5, middle + 1, y + h - 4);
-        g.drawLine(middle + 3, y + 5, middle + 3, y + h - 4);
-      }
-  }
-
-  /**
-   * Paints the thumb for a vertical scroll bar.
-   *
-   * @param g  the graphics device.
-   * @param c  the scroll bar component.
-   * @param thumbBounds  the thumb bounds.
-   */
-  private void paintThumbVertical(Graphics g, JComponent c,
-          Rectangle thumbBounds)
-  {
-    int x = thumbBounds.x;
-    int y = thumbBounds.y;
-    int w = thumbBounds.width;
-    int h = thumbBounds.height;
-
-    // First we fill the background.
-    MetalTheme theme = MetalLookAndFeel.getCurrentTheme();
-    if (theme instanceof OceanTheme
-        && UIManager.get("ScrollBar.gradient") != null)
-      {
-        MetalUtils.paintGradient(g, x + 2, y + 2, w - 2, h - 4,
-                                 SwingConstants.HORIZONTAL,
-                                 "ScrollBar.gradient");
-      }
-    else
-      {
-        g.setColor(thumbColor);
-        if (isFreeStanding)
-          g.fillRect(x, y, w - 1, h);
-        else
-          g.fillRect(x, y, w, h);
-      }
-
-    // then draw the dark box
-    g.setColor(thumbLightShadowColor);
-    if (isFreeStanding)
-      g.drawRect(x, y, w - 2, h - 1);
-    else
-      {
-        g.drawLine(x, y, x + w - 1, y);
-        g.drawLine(x, y, x, y + h - 1);
-        g.drawLine(x, y + h - 1, x + w - 1, y + h - 1);
-      }
-
-    // then the highlight
-    g.setColor(thumbHighlightColor);
-    if (isFreeStanding)
-      {
-        g.drawLine(x + 1, y + 1, x + w - 3, y + 1);
-        g.drawLine(x + 1, y + 1, x + 1, y + h - 3);
-      }
-    else
-      {
-        g.drawLine(x + 1, y + 1, x + w - 1, y + 1);
-        g.drawLine(x + 1, y + 1, x + 1, y + h - 3);
-      }
-
-    // draw the shadow line
-    g.setColor(UIManager.getColor("ScrollBar.shadow"));
-    g.drawLine(x + 1, y + h, x + w - 2, y + h);
-
-    // For the OceanTheme, draw the 3 lines in the middle.
-    if (theme instanceof OceanTheme)
-      {
-        g.setColor(thumbLightShadowColor);
-        int middle = y + h / 2;
-        g.drawLine(x + 4, middle - 2, x + w - 5, middle - 2);
-        g.drawLine(x + 4, middle, x + w - 5, middle);
-        g.drawLine(x + 4, middle + 2, x + w - 5, middle + 2);
-        g.setColor(UIManager.getColor("ScrollBar.highlight"));
-        g.drawLine(x + 5, middle - 1, x + w - 4, middle - 1);
-        g.drawLine(x + 5, middle + 1, x + w - 4, middle + 1);
-        g.drawLine(x + 5, middle + 3, x + w - 4, middle + 3);
-      }
-  }
-
-  /**
-   * Returns the minimum thumb size.  For a free standing scroll bar the
-   * minimum size is <code>17 x 17</code> pixels, whereas for a non free
-   * standing scroll bar the minimum size is <code>15 x 15</code> pixels.
-   *
-   * @return The minimum thumb size.
-   */
-  protected Dimension getMinimumThumbSize()
-  {
-    Dimension retVal;
-    if (scrollbar != null)
-      {
-        if (isFreeStanding)
-          retVal = MIN_THUMB_SIZE_FREE_STANDING;
-        else
-          retVal = MIN_THUMB_SIZE;
-      }
-    else
-      retVal = new Dimension(0, 0);
-    return retVal;
-  }
-
-  /**
-   * Returns the <code>preferredSize</code> for the specified scroll bar.
-   * For a vertical scrollbar the height is the sum of the preferred heights
-   * of the buttons plus <code>30</code>. The width is fetched from the
-   * <code>UIManager</code> property <code>ScrollBar.width</code>.
-   *
-   * For horizontal scrollbars the width is the sum of the preferred widths
-   * of the buttons plus <code>30</code>. The height is fetched from the
-   * <code>UIManager</code> property <code>ScrollBar.height</code>.
-   *
-   * @param c the scrollbar for which to calculate the preferred size
-   *
-   * @return the <code>preferredSize</code> for the specified scroll bar
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    int height;
-    int width;
-    height = width = 0;
-
-    if (scrollbar.getOrientation() == SwingConstants.HORIZONTAL)
-      {
-        width += incrButton.getPreferredSize().getWidth();
-        width += decrButton.getPreferredSize().getWidth();
-        width += 30;
-        height = UIManager.getInt("ScrollBar.width");
-      }
-    else
-      {
-        height += incrButton.getPreferredSize().getHeight();
-        height += decrButton.getPreferredSize().getHeight();
-        height += 30;
-        width = UIManager.getInt("ScrollBar.width");
-      }
-
-    Insets insets = scrollbar.getInsets();
-
-    height += insets.top + insets.bottom;
-    width += insets.left + insets.right;
-
-    return new Dimension(width, height);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalScrollButton.java b/libjava/classpath/javax/swing/plaf/metal/MetalScrollButton.java
deleted file mode 100644
index 3273908..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalScrollButton.java
+++ /dev/null
@@ -1,483 +0,0 @@
-/* MetalScrollButton.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-
-import javax.swing.SwingUtilities;
-import javax.swing.plaf.basic.BasicArrowButton;
-
-/**
- * A button used by the {@link MetalScrollBarUI}.  The button appearance
- * varies according to the button direction, whether or not it is part of a
- * "free standing" scroll bar, and the current state of the button.
- */
-public class MetalScrollButton extends BasicArrowButton
-{
-
-  /**
-   * The maximum size for buttons.
-   * @see #getMaximumSize()
-   */
-  private static Dimension maximumSize;
-
-  /** The width of the button. */
-  private int buttonWidth;
-
-  /**
-   * A flag that indicates whether the button is part of a free standing
-   * scroll bar.  This affects how the border is drawn.
-   */
-  private boolean freeStanding;
-
-  /**
-   * Creates a new button.
-   *
-   * @param direction  the direction (this should be one of {@link #NORTH},
-   *                   {@link #SOUTH}, {@link #EAST} and {@link #WEST}, but
-   *                   this is not enforced).
-   * @param width  the button width.
-   * @param freeStanding  a flag indicating whether the scroll button is free
-   *                      standing or not.
-   */
-  public MetalScrollButton(int direction, int width, boolean freeStanding)
-  {
-    super(direction);
-    buttonWidth = width;
-    this.freeStanding = freeStanding;
-    setFocusable(false);
-  }
-
-  /**
-   * Returns the button width.
-   *
-   * @return The button width.
-   */
-  public int getButtonWidth()
-  {
-    return buttonWidth;
-  }
-
-  /**
-   * Sets the free standing flag.  This controls how the button border is
-   * drawn.
-   *
-   * @param freeStanding  the new value of the flag.
-   */
-  public void setFreeStanding(boolean freeStanding)
-  {
-    this.freeStanding = freeStanding;
-  }
-
-  /**
-   * Paints the button.
-   *
-   * @param g  the graphics device.
-   */
-  public void paint(Graphics g)
-  {
-    Rectangle bounds = SwingUtilities.getLocalBounds(this);
-
-    // fill the background
-    if (getModel().isPressed())
-      g.setColor(MetalLookAndFeel.getControlShadow());
-    else
-      g.setColor(MetalLookAndFeel.getControl());
-    g.fillRect(0, 0, bounds.width, bounds.height);
-
-    paintArrow(g, bounds.width, bounds.height);
-
-    // paint a border manually - I tried using a real (custom) Border
-    // but couldn't get it to stay set for the button, something was
-    // overwriting it...
-    if (freeStanding)
-      {
-        if (direction == WEST)
-          paintWestBorderFreeStanding(g, bounds.width, bounds.height);
-        else if (direction == EAST)
-          paintEastBorderFreeStanding(g, bounds.width, bounds.height);
-        else if (direction == SOUTH)
-          paintSouthBorderFreeStanding(g, bounds.width, bounds.height);
-        else // asume NORTH
-          paintNorthBorderFreeStanding(g, bounds.width, bounds.height);
-      }
-    else
-      {
-        if (direction == WEST)
-          paintWestBorder(g, bounds.width, bounds.height);
-        else if (direction == EAST)
-          paintEastBorder(g, bounds.width, bounds.height);
-        else if (direction == SOUTH)
-          paintSouthBorder(g, bounds.width, bounds.height);
-        else // asume NORTH
-          paintNorthBorder(g, bounds.width, bounds.height);
-      }
-  }
-
-  private void paintArrow(Graphics g, int w, int h)
-  {
-    if (isEnabled())
-      g.setColor(MetalLookAndFeel.getBlack());
-    else
-      g.setColor(MetalLookAndFeel.getControlDisabled());
-
-    if (direction == SOUTH)
-      {
-        int x = w / 2;
-        int y = h / 2 + 2;
-        for (int i = 1; i < 5; i++)
-          g.drawLine(x - i, y - i, x + i - 1, y - i);
-      }
-    else if (direction == EAST)
-      {
-        int x = w / 2 + 2;
-        int y = h / 2;
-        for (int i = 1; i < 5; i++)
-          g.drawLine(x - i, y - i, x - i, y + i - 1);
-      }
-    else if (direction == WEST)
-      {
-        int x = w / 2 - 3;
-        int y = h / 2;
-        for (int i = 1; i < 5; i++)
-          g.drawLine(x + i, y - i, x + i, y + i - 1);
-      }
-    else // assume NORTH
-      {
-        int x = w / 2;
-        int y = h / 2 - 3;
-        for (int i = 1; i < 5; i++)
-          g.drawLine(x - i, y + i, x + i - 1, y + i);
-      }
-  }
-  /**
-   * Paints the border for a button with a {@link #NORTH} direction that
-   * belongs to a free standing scroll bar.
-   *
-   * @param g  the graphics device.
-   * @param w  the button width.
-   * @param h  the button height.
-   */
-  private void paintNorthBorderFreeStanding(Graphics g, int w, int h)
-  {
-    if (isEnabled())
-      {
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-        g.drawLine(0, 0, w - 2, 0);
-        g.drawLine(0, 0, 0, h - 1);
-        g.drawLine(2, h - 1, w - 2, h - 1);
-        g.drawLine(w - 2, 2, w - 2, h - 1);
-
-        g.setColor(MetalLookAndFeel.getControlHighlight());
-        g.drawLine(1, 1, 1, h - 2);
-        g.drawLine(1, 1, w - 3, 1);
-        g.drawLine(w - 1, 1, w - 1, h - 1);
-
-        g.setColor(MetalLookAndFeel.getControl());
-        g.drawLine(1, h - 1, 1, h - 1);
-        g.drawLine(w - 2, 1, w - 2, 1);
-      }
-    else
-      {
-        g.setColor(MetalLookAndFeel.getControlDisabled());
-        g.drawLine(0, 0, w - 1, 0);
-        g.drawLine(w - 1, 0, w - 1, h - 1);
-        g.drawLine(0, 0, 0, h - 1);
-      }
-  }
-
-  /**
-   * Paints the border for a button with a {@link #SOUTH} direction that
-   * belongs to a free standing scroll bar.
-   *
-   * @param g  the graphics device.
-   * @param w  the button width.
-   * @param h  the button height.
-   */
-  private void paintSouthBorderFreeStanding(Graphics g, int w, int h)
-  {
-    if (isEnabled())
-      {
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-        g.drawLine(0, 0, w - 2, 0);
-        g.drawLine(0, 0, 0, h - 1);
-        g.drawLine(2, h - 1, w - 2, h - 1);
-        g.drawLine(w - 2, 2, w - 2, h - 1);
-
-        g.setColor(MetalLookAndFeel.getControlHighlight());
-        g.drawLine(1, 1, 1, h - 1);
-        g.drawLine(1, 1, w - 1, 1);
-        g.drawLine(w - 1, 1, w - 1, h - 1);
-
-        g.setColor(MetalLookAndFeel.getControl());
-        g.drawLine(1, h - 1, 1, h - 1);
-        g.drawLine(w - 1, 1, w - 1, 1);
-      }
-    else
-      {
-        g.setColor(MetalLookAndFeel.getControlDisabled());
-        g.drawLine(0, h - 1, w - 1, h - 1);
-        g.drawLine(w - 1, 0, w - 1, h - 1);
-        g.drawLine(0, 0, 0, h - 1);
-      }
-  }
-
-  /**
-   * Paints the border for a button with an {@link #EAST} direction that
-   * belongs to a free standing scroll bar.
-   *
-   * @param g  the graphics device.
-   * @param w  the button width.
-   * @param h  the button height.
-   */
-  private void paintEastBorderFreeStanding(Graphics g, int w, int h)
-  {
-    if (isEnabled())
-      {
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-        g.drawLine(0, 0, w - 2, 0);
-        g.drawLine(w - 2, 0, w - 2, h - 2);
-        g.drawLine(0, h - 2, w - 2, h - 2);
-
-        g.setColor(MetalLookAndFeel.getControlHighlight());
-        g.drawLine(0, 1, w - 1, 1);
-        g.drawLine(w - 1, 1, w - 1, h - 1);
-        g.drawLine(0, h - 1, w - 1, h - 1);
-
-        g.setColor(MetalLookAndFeel.getControl());
-        g.drawLine(w - 2, 1, w - 2, 1);
-      }
-    else
-      {
-        g.setColor(MetalLookAndFeel.getControlDisabled());
-        g.drawLine(0, 0, w - 1, 0);
-        g.drawLine(w - 1, 0, w - 1, h - 1);
-        g.drawLine(0, h - 1, w - 1, h - 1);
-      }
-  }
-
-  /**
-   * Paints the border for a button with a {@link #WEST} direction that
-   * belongs to a free standing scroll bar.
-   *
-   * @param g  the graphics device.
-   * @param w  the button width.
-   * @param h  the button height.
-   */
-  private void paintWestBorderFreeStanding(Graphics g, int w, int h)
-  {
-    if (isEnabled())
-      {
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-        g.drawLine(0, 0, w - 1, 0);
-        g.drawLine(0, 0, 0, h - 2);
-        g.drawLine(0, h - 2, w - 1, h - 2);
-
-        g.setColor(MetalLookAndFeel.getControlHighlight());
-        g.drawLine(1, 1, w - 1, 1);
-        g.drawLine(1, 1, 1, h - 1);
-        g.drawLine(1, h - 1, w - 1, h - 1);
-
-        g.setColor(MetalLookAndFeel.getControl());
-        g.drawLine(1, h - 2, 1, h - 2);
-      }
-    else
-      {
-        g.setColor(MetalLookAndFeel.getControlDisabled());
-        g.drawLine(0, 0, w - 1, 0);
-        g.drawLine(0, 0, 0, h - 1);
-        g.drawLine(0, h - 1, w - 1, h - 1);
-      }
-  }
-
-  /**
-   * Paints the border for a button with a {@link #NORTH} direction that
-   * belongs to a scroll bar that is not free standing.
-   *
-   * @param g  the graphics device.
-   * @param w  the button width.
-   * @param h  the button height.
-   */
-  private void paintNorthBorder(Graphics g, int w, int h)
-  {
-    if (isEnabled())
-      {
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-        g.drawLine(0, 0, 0, h - 1);
-
-        g.setColor(MetalLookAndFeel.getControlHighlight());
-        g.drawLine(1, 0, 1, h - 1);
-        g.drawLine(1, 0, w - 1, 0);
-      }
-    else
-      {
-        g.setColor(MetalLookAndFeel.getControlDisabled());
-        g.drawLine(0, 0, 0, h - 1);
-      }
-  }
-
-  /**
-   * Paints the border for a button with a {@link #SOUTH} direction that
-   * belongs to a scroll bar that is not free standing.
-   *
-   * @param g  the graphics device.
-   * @param w  the button width.
-   * @param h  the button height.
-   */
-  private void paintSouthBorder(Graphics g, int w, int h)
-  {
-    if (isEnabled())
-      {
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-        g.drawLine(0, 0, 0, h - 1);
-        g.drawLine(0, h - 1, w - 1, h - 1);
-
-        g.setColor(MetalLookAndFeel.getControlHighlight());
-        g.drawLine(1, 0, 1, h - 1);
-        g.drawLine(1, 0, w - 1, 0);
-
-        g.setColor(MetalLookAndFeel.getControl());
-        g.drawLine(1, h - 1, 1, h - 1);
-      }
-    else
-      {
-        g.setColor(MetalLookAndFeel.getControlDisabled());
-        g.drawLine(0, 0, 0, h - 1);
-      }
-  }
-
-  /**
-   * Paints the border for a button with an {@link #EAST} direction that
-   * belongs to a scroll bar that is not free standing.
-   *
-   * @param g  the graphics device.
-   * @param w  the button width.
-   * @param h  the button height.
-   */
-  private void paintEastBorder(Graphics g, int w, int h)
-  {
-    if (isEnabled())
-      {
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-        g.drawLine(0, 0, w - 1, 0);
-        g.drawLine(w - 1, 2, w - 1, h - 1);
-        g.setColor(MetalLookAndFeel.getControlHighlight());
-        g.drawLine(0, 1, w - 2, 1);
-        g.drawLine(0, 1, 0, h - 1);
-      }
-    else
-      {
-        g.setColor(MetalLookAndFeel.getControlDisabled());
-        g.drawLine(0, 0, w - 1, 0);
-      }
-  }
-
-  /**
-   * Paints the border for a button with a {@link #WEST} direction that
-   * belongs to a scroll bar that is not free standing.
-   *
-   * @param g  the graphics device.
-   * @param w  the button width.
-   * @param h  the button height.
-   */
-  private void paintWestBorder(Graphics g, int w, int h)
-  {
-    Rectangle bounds = SwingUtilities.getLocalBounds(this);
-    if (isEnabled())
-      {
-        g.setColor(MetalLookAndFeel.getControlDarkShadow());
-        g.drawLine(0, 0, bounds.width - 1, 0);
-        g.setColor(MetalLookAndFeel.getControlHighlight());
-        g.drawLine(0, 1, bounds.width - 1, 1);
-        g.drawLine(0, 1, 0, bounds.height - 1);
-      }
-    else
-      {
-        g.setColor(MetalLookAndFeel.getControlDisabled());
-        g.drawLine(0, 0, bounds.width - 1, 0);
-      }
-  }
-
-  /**
-   * Returns the preferred size for the button, which varies depending on
-   * the direction of the button and whether or not it is free standing.
-   *
-   * @return The preferred size.
-   */
-  public Dimension getPreferredSize()
-  {
-    int adj = 1;
-    if (!freeStanding)
-      adj = 2;
-
-    if (direction == EAST)
-      return new Dimension(buttonWidth - adj, buttonWidth);
-    else if (direction == WEST)
-      return new Dimension(buttonWidth - 2, buttonWidth);
-    else if (direction == SOUTH)
-      return new Dimension(buttonWidth, buttonWidth - adj);
-    else // assume NORTH
-      return new Dimension(buttonWidth, buttonWidth - 2);
-  }
-
-  /**
-   * Returns the minimum size for the button.
-   *
-   * @return The minimum size for the button.
-   */
-  public Dimension getMinimumSize()
-  {
-    return getPreferredSize();
-  }
-
-  /**
-   * Returns the maximum size for the button.
-   *
-   * @return <code>Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE)</code>.
-   */
-  public Dimension getMaximumSize()
-  {
-    if (maximumSize == null)
-      maximumSize = new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
-    return maximumSize;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalScrollPaneUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalScrollPaneUI.java
deleted file mode 100644
index 09a47c3..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalScrollPaneUI.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/* MetalScrollPaneUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.beans.PropertyChangeListener;
-
-import javax.swing.JComponent;
-import javax.swing.JScrollBar;
-import javax.swing.JScrollPane;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicScrollPaneUI;
-
-/**
- * A UI delegate for the {@link JScrollPane} component.
- */
-public class MetalScrollPaneUI
-  extends BasicScrollPaneUI
-{
-  /**
-   * Constructs a new instance of <code>MetalScrollPaneUI</code>.
-   */
-  public MetalScrollPaneUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a shared instance of <code>MetalScrollPaneUI</code>.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return A shared instance of <code>MetalScrollPaneUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalScrollPaneUI();
-  }
-
-  /**
-   * Configures the specified component appropriate for the look and feel.
-   * This method is invoked when the ComponentUI instance is being installed
-   * as the UI delegate on the specified component. This method should
-   * completely configure the component for the look and feel,
-   * including the following:
-   * 1. Install any default property values for color, fonts, borders,
-   * icons, opacity, etc. on the component. Whenever possible, property
-   * values initialized by the client program should not be overridden.
-   * 2. Install a LayoutManager on the component if necessary.
-   * 3. Create/add any required sub-components to the component.
-   * 4. Create/install event listeners on the component.
-   * 5. Create/install a PropertyChangeListener on the component in order
-   * to detect and respond to component property changes appropriately.
-   * 6. Install keyboard UI (mnemonics, traversal, etc.) on the component.
-   * 7. Initialize any appropriate instance data.
-   *
-   * @param c - the component to install the ui on
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    JScrollBar hsb = scrollpane.getHorizontalScrollBar();
-    hsb.putClientProperty(MetalScrollBarUI.FREE_STANDING_PROP, Boolean.FALSE);
-    JScrollBar vsb = scrollpane.getVerticalScrollBar();
-    vsb.putClientProperty(MetalScrollBarUI.FREE_STANDING_PROP, Boolean.FALSE);
-  }
-
-  /**
-   * Reverses configuration which was done on the specified component
-   * during installUI. This method is invoked when this UIComponent
-   * instance is being removed as the UI delegate for the specified
-   * component. This method should undo the configuration performed in
-   * installUI, being careful to leave the JComponent instance in a
-   * clean state (no extraneous listeners, look-and-feel-specific property
-   *  objects, etc.). This should include the following:
-   *  1. Remove any UI-set borders from the component.
-   *  2. Remove any UI-set layout managers on the component.
-   *  3. Remove any UI-added sub-components from the component.
-   *  4. Remove any UI-added event/property listeners from the component.
-   *  5. Remove any UI-installed keyboard UI from the component.
-   *  6. Nullify any allocated instance data objects to allow for GC.
-   *
-   *  @param c - the component to uninstall the ui on
-   */
-  public void uninstallUI(JComponent c)
-  {
-    JScrollBar hsb = scrollpane.getHorizontalScrollBar();
-    hsb.putClientProperty(MetalScrollBarUI.FREE_STANDING_PROP, null);
-    JScrollBar vsb = scrollpane.getVerticalScrollBar();
-    vsb.putClientProperty(MetalScrollBarUI.FREE_STANDING_PROP, null);
-    super.uninstallUI(c);
-  }
-
-  /**
-   * Installs listeners on scrollPane
-   *
-   * @param scrollPane - the component to install the listeners on
-   */
-  public void installListeners(JScrollPane scrollPane)
-  {
-    super.installListeners(scrollPane);
-  }
-
-  /**
-   * Uninstalls listeners on scrollPane
-   *
-   * @param scrollPane - the component to uninstall the listeners on
-   */
-  public void uninstallListeners(JScrollPane scrollPane)
-  {
-    super.uninstallListeners(scrollPane);
-  }
-
-  /**
-   * TODO
-   *
-   * @return TODO
-   */
-  protected PropertyChangeListener createScrollBarSwapListener()
-  {
-    // FIXME: Anything else to do here?
-    return super.createPropertyChangeListener();
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalSeparatorUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalSeparatorUI.java
deleted file mode 100644
index 8afa98c..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalSeparatorUI.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/* MetalSeparatorUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-
-import javax.swing.JComponent;
-import javax.swing.JSeparator;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicSeparatorUI;
-
-/**
- * A UI delegate for the {@link JSeparator} component.
- */
-public class MetalSeparatorUI
-  extends BasicSeparatorUI
-{
-
-  // FIXME: maybe replace by a Map of instances when this becomes stateful
-  /** The shared UI instance for MetalSeparatorUIs */
-  private static MetalSeparatorUI instance;
-
-  /**
-   * Constructs a new instance of <code>MetalSeparatorUI</code>.
-   */
-  public MetalSeparatorUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a shared instance of <code>MetalSeparatorUI</code>.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return A shared instance of <code>MetalSeparatorUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    if (instance == null)
-      instance = new MetalSeparatorUI();
-    return instance;
-  }
-
-  /**
-   * The separator is made of two lines. The top line will be
-   * the Metal theme color separatorForeground (or left line if it's vertical).
-   * The bottom or right line will be the Metal theme color
-   * separatorBackground.
-   * The two lines will
-   * be centered inside the bounds box. If the separator is horizontal,
-   * then it will be vertically centered, or if it's vertical, it will
-   * be horizontally centered.
-   *
-   * @param g The Graphics object to paint with
-   * @param c The JComponent to paint.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Rectangle r = new Rectangle();
-    SwingUtilities.calculateInnerArea(c, r);
-    Color saved = g.getColor();
-    Color c1 = UIManager.getColor("Separator.foreground");
-    Color c2 = UIManager.getColor("Separator.background");
-    JSeparator s;
-    if (c instanceof JSeparator)
-      s = (JSeparator) c;
-    else
-      return;
-
-    if (s.getOrientation() == JSeparator.HORIZONTAL)
-      {
-        int midAB = r.height / 2;
-        g.setColor(c1);
-        g.drawLine(r.x, r.y + midAB - 1, r.x + r.width, r.y + midAB - 1);
-
-        g.setColor(c2);
-        g.fillRect(r.x, r.y + midAB, r.x + r.width, r.y + midAB);
-      }
-      else
-      {
-        int midAD = r.height / 2 + r.y;
-        g.setColor(c1);
-        g.drawLine(r.x, r.y, r.x, r.y + r.height);
-
-        g.setColor(c2);
-        g.fillRect(r.x + midAD, r.y + r.height, r.x + midAD, r.y + r.height);
-      }
-    g.setColor(saved);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalSliderUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalSliderUI.java
deleted file mode 100644
index e85c324..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalSliderUI.java
+++ /dev/null
@@ -1,475 +0,0 @@
-/* MetalSliderUI.java
-   Copyright (C) 2005, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.Icon;
-import javax.swing.JComponent;
-import javax.swing.JSlider;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicGraphicsUtils;
-import javax.swing.plaf.basic.BasicSliderUI;
-
-/**
- * A UI delegate for the {@link JSlider} component.
- */
-public class MetalSliderUI extends BasicSliderUI
-{
-  /**
-   * A property change handler that updates the rendered component in response
-   * to specific property change events.  This custom handler is used to
-   * intercept the "JSlider.isFilled" property, which is only recognised by
-   * the {@link MetalLookAndFeel}.
-   */
-  protected class MetalPropertyListener
-    extends BasicSliderUI.PropertyChangeHandler
-  {
-    /**
-     * Creates a new listener.
-     */
-    protected MetalPropertyListener()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Handles property change events.  Events with the name "JSlider.isFilled"
-     * are handled here, and other events are passed to the superclass.
-     *
-     * @param e  the property change event.
-     */
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      if (e.getPropertyName().equals(SLIDER_FILL))
-      {
-        Boolean b = (Boolean) e.getNewValue();
-        if (b == null)
-          filledSlider = false;
-        else
-          filledSlider = b.booleanValue();
-      }
-      else
-        super.propertyChange(e);
-    }
-  }
-
-  /** The thumb color (unused, because an icon is used to draw the thumb). */
-  protected static Color thumbColor;
-
-  /**
-   * The highlight color used for drawing the track rect when the slider is
-   * enabled.
-   */
-  protected static Color highlightColor;
-
-  /**
-   * The shadow color used for drawing the track rect when the slider is
-   * enabled.
-   */
-  protected static Color darkShadowColor;
-
-  /** The track width. */
-  protected static int trackWidth = UIManager.getInt("Slider.trackWidth");
-
-  /** The length of the major tick marks. */
-  protected static int tickLength = UIManager.getInt("Slider.majorTickLength");
-
-  /** The icon used for the thumb control of horizontally oriented sliders. */
-  protected static Icon horizThumbIcon = UIManager.getIcon(
-          "Slider.horizontalThumbIcon");
-
-  /** The icon used for the thumb control of vertically oriented sliders. */
-  protected static Icon vertThumbIcon = UIManager.getIcon(
-          "Slider.verticalThumbIcon");
-
-  /** The gap between the track and the tick marks. */
-  protected final int TICK_BUFFER = 4;
-
-  /** A key to look up the filledSlider setting in the {@link UIManager}. */
-  protected final String SLIDER_FILL = "JSlider.isFilled";
-
-  /**
-   * A flag that controls whether or not the track is filled up to the value
-   * of the slider.
-   */
-  protected boolean filledSlider;
-
-  /**
-   * Constructs a new instance.
-   */
-  public MetalSliderUI()
-  {
-    super(null);
-    filledSlider = UIManager.getBoolean(SLIDER_FILL);
-    darkShadowColor = MetalLookAndFeel.getControlDarkShadow();
-    highlightColor = MetalLookAndFeel.getControlHighlight();
-  }
-
-  /**
-   * Returns a new instance of <code>MetalSliderUI</code>.
-   *
-   * @param component the component (ignored).
-   *
-   * @return A new instance of <code>MetalSliderUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalSliderUI();
-  }
-
-  /**
-   * Installs the default for this UI delegate in the supplied component.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    Boolean b = (Boolean) c.getClientProperty(SLIDER_FILL);
-    if (b != null)
-      filledSlider = b.booleanValue();
-  }
-
-  /**
-   * Creates a property change listener for the slider.
-   *
-   * @param slider  the slider.
-   *
-   * @return A new instance of {@link MetalPropertyListener}.
-   */
-  protected PropertyChangeListener createPropertyChangeListener(JSlider slider)
-  {
-    return new MetalPropertyListener();
-  }
-
-  /**
-   * Paints the thumb icon for the slider.
-   *
-   * @param g  the graphics device.
-   */
-  public void paintThumb(Graphics g)
-  {
-    Color save = g.getColor();
-    g.setColor(thumbColor);
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      horizThumbIcon.paintIcon(slider, g, thumbRect.x, thumbRect.y);
-    else
-      vertThumbIcon.paintIcon(slider, g, thumbRect.x, thumbRect.y);
-    g.setColor(save);
-  }
-
-  /**
-   * Paints the track along which the thumb control moves.
-   *
-   * @param g  the graphics device.
-   */
-  public void paintTrack(Graphics g)
-  {
-    Color shadowColor = MetalLookAndFeel.getControlShadow();
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      {
-        int trackX = trackRect.x;
-        int trackY = trackRect.y + (trackRect.height - getTrackWidth()) / 2;
-        int trackW = trackRect.width;
-        int trackH = getTrackWidth();
-
-        // draw border
-        if (slider.isEnabled())
-          BasicGraphicsUtils.drawEtchedRect(g, trackX, trackY, trackW, trackH,
-              darkShadowColor, shadowColor, darkShadowColor, highlightColor);
-        else
-          {
-            g.setColor(MetalLookAndFeel.getControlShadow());
-            g.drawRect(trackX, trackY, trackW - 2, trackH - 2);
-          }
-
-        // fill track (if required)
-        if (MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme)
-          {
-            if (slider.isEnabled())
-              {
-                int xPos = xPositionForValue(slider.getValue());
-                int x = slider.getInverted() ? xPos : trackRect.x;
-                int w = slider.getInverted() ? trackX + trackW - xPos
-                                             : xPos - trackRect.x;
-                g.setColor(MetalLookAndFeel.getWhite());
-                g.drawLine(x + 1, trackY + 1, x + w - 3, trackY + 1);
-                g.setColor(UIManager.getColor("Slider.altTrackColor"));
-                g.drawLine(x + 1, trackY + 2, x + w - 3, trackY + 2);
-                g.setColor(MetalLookAndFeel.getControlShadow());
-                g.drawLine(x + 1, trackY + 3, x + w - 3, trackY + 3);
-                g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
-                g.drawLine(x + 1, trackY + 4, x + w - 3, trackY + 4);
-              }
-          }
-        else if (filledSlider)
-          {
-            int xPos = xPositionForValue(slider.getValue());
-            int x = slider.getInverted() ? xPos : trackRect.x;
-            int w = slider.getInverted() ? trackX + trackW - xPos
-                                         : xPos - trackRect.x;
-            g.setColor(MetalLookAndFeel.getControlShadow());
-            g.fillRect(x + 1, trackY + 1, w - 3, getTrackWidth() - 3);
-            if (slider.isEnabled())
-              {
-                g.setColor(MetalLookAndFeel.getControl());
-                g.drawLine(x + 1, trackY + 1, x + w - 3, trackY + 1);
-                g.drawLine(x + 1, trackY + 1, x + 1,
-                           trackY + getTrackWidth() - 3);
-              }
-          }
-      }
-    else
-      {
-        int trackX = trackRect.x  + (trackRect.width - getTrackWidth()) / 2;
-        int trackY = trackRect.y;
-        int trackW = getTrackWidth();
-        int trackH = trackRect.height;
-        if (slider.isEnabled())
-          BasicGraphicsUtils.drawEtchedRect(g, trackX, trackY, trackW, trackH,
-              darkShadowColor, shadowColor, darkShadowColor, highlightColor);
-        else
-          {
-            g.setColor(MetalLookAndFeel.getControlShadow());
-            g.drawRect(trackX, trackY, trackW - 2, trackH - 2);
-          }
-
-        // Fill track if necessary.
-        if (MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme)
-          {
-            if (slider.isEnabled())
-              {
-                int yPos = yPositionForValue(slider.getValue());
-                int y = slider.getInverted() ? trackY : yPos;
-                int h = slider.getInverted() ? yPos - trackY
-                        : trackY + trackH - yPos;
-
-                g.setColor(MetalLookAndFeel.getWhite());
-                g.drawLine(trackX + 1, y + 1, trackX + 1, y + h - 3);
-                g.setColor(UIManager.getColor("Slider.altTrackColor"));
-                g.drawLine(trackX + 2, y + 1, trackX + 2, y + h - 3);
-                g.setColor(MetalLookAndFeel.getControlShadow());
-                g.drawLine(trackX + 3, y + 1, trackX + 3, y + h - 3);
-                g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
-                g.drawLine(trackX + 4, y + 1, trackX + 4, y + h - 3);
-              }
-          }
-        else if (filledSlider)
-          {
-          int yPos = yPositionForValue(slider.getValue());
-          int y = slider.getInverted() ? trackY : yPos;
-          int h = slider.getInverted() ? yPos - trackY
-                  : trackY + trackH - yPos;
-          g.setColor(MetalLookAndFeel.getControlShadow());
-          g.fillRect(trackX + 1, y + 1, getTrackWidth() - 3, h - 3);
-          if (slider.isEnabled())
-            {
-              g.setColor(MetalLookAndFeel.getControl());
-              g.drawLine(trackX + 1, y + 1, trackX + trackW - 3, y + 1);
-              g.drawLine(trackX + 1, y + 1, trackX + 1, y + h - 3);
-            }
-          }
-      }
-  }
-
-  /**
-   * Draws the focus rectangle for the slider.  The Metal look and feel
-   * indicates that the {@link JSlider} has the focus by changing the color of
-   * the thumb control - this is handled elsewhere and so this method is empty
-   * (it overrides the method in the {@link BasicSliderUI} class to prevent
-   * a default focus highlight from being drawn).
-   *
-   * @param g  the graphics device.
-   */
-  public void paintFocus(Graphics g)
-  {
-    thumbColor = getFocusColor();
-    paintThumb(g);
-  }
-
-  /**
-   * Returns the size of the thumb icon.
-   *
-   * @return The size of the thumb icon.
-   */
-  protected Dimension getThumbSize()
-  {
-    if (slider.getOrientation() == JSlider.HORIZONTAL)
-      return new Dimension(horizThumbIcon.getIconWidth(),
-              horizThumbIcon.getIconHeight());
-    else
-      return new Dimension(vertThumbIcon.getIconWidth(),
-              vertThumbIcon.getIconHeight());
-  }
-
-  /**
-   * Returns the length of the major tick marks.
-   *
-   * @return The length of the major tick marks.
-   */
-  public int getTickLength()
-  {
-    int len = tickLength + TICK_BUFFER + 1;
-    if (slider.getOrientation() == JSlider.VERTICAL)
-      len += 2;
-    return len;
-  }
-
-  /**
-   * Returns the track width.
-   *
-   * @return The track width.
-   */
-  protected int getTrackWidth()
-  {
-    return trackWidth;
-  }
-
-  /**
-   * Returns the track length.
-   *
-   * @return The track length.
-   */
-  protected int getTrackLength()
-  {
-    return slider.getOrientation() == JSlider.HORIZONTAL
-           ? tickRect.width : tickRect.height;
-  }
-
-  /**
-   * Returns the thumb overhang.
-   *
-   * @return The thumb overhang.
-   */
-  protected int getThumbOverhang()
-  {
-    // FIXME:  for what might this method be used?
-    return 0;
-  }
-
-  protected void scrollDueToClickInTrack(int dir)
-  {
-    // FIXME:  for what might this method be overridden?
-    super.scrollDueToClickInTrack(dir);
-  }
-
-  /**
-   * Paints the minor ticks for a slider with a horizontal orientation.
-   *
-   * @param g  the graphics device.
-   * @param tickBounds  the tick bounds.
-   * @param x  the x value for the tick.
-   */
-  protected void paintMinorTickForHorizSlider(Graphics g, Rectangle tickBounds,
-                                              int x)
-  {
-    // Note the incoming 'g' has a translation in place to get us to the
-    // start of the tick rect already...
-    if (slider.isEnabled())
-      g.setColor(slider.getForeground());
-    else
-      g.setColor(MetalLookAndFeel.getControlShadow());
-    g.drawLine(x, TICK_BUFFER, x, TICK_BUFFER + tickLength / 2);
-  }
-
-  /**
-   * Paints the major ticks for a slider with a horizontal orientation.
-   *
-   * @param g  the graphics device.
-   * @param tickBounds  the tick bounds.
-   * @param x  the x value for the tick.
-   */
-  protected void paintMajorTickForHorizSlider(Graphics g, Rectangle tickBounds,
-                                              int x)
-  {
-    // Note the incoming 'g' has a translation in place to get us to the
-    // start of the tick rect already...
-    if (slider.isEnabled())
-      g.setColor(slider.getForeground());
-    else
-      g.setColor(MetalLookAndFeel.getControlShadow());
-    g.drawLine(x, TICK_BUFFER, x, TICK_BUFFER + tickLength - 1);
-  }
-
-  /**
-   * Paints the minor ticks for a slider with a vertical orientation.
-   *
-   * @param g  the graphics device.
-   * @param tickBounds  the tick bounds.
-   * @param y  the y value for the tick.
-   */
-  protected void paintMinorTickForVertSlider(Graphics g, Rectangle tickBounds,
-                                             int y)
-  {
-    // Note the incoming 'g' has a translation in place to get us to the
-    // start of the tick rect already...
-    if (slider.isEnabled())
-      g.setColor(slider.getForeground());
-    else
-      g.setColor(MetalLookAndFeel.getControlShadow());
-    g.drawLine(TICK_BUFFER, y, TICK_BUFFER + tickLength / 2, y);
-  }
-
-  /**
-   * Paints the major ticks for a slider with a vertical orientation.
-   *
-   * @param g  the graphics device.
-   * @param tickBounds  the tick bounds.
-   * @param y  the y value for the tick.
-   */
-  protected void paintMajorTickForVertSlider(Graphics g, Rectangle tickBounds,
-                                             int y)
-  {
-    // Note the incoming 'g' has a translation in place to get us to the
-    // start of the tick rect already...
-    if (slider.isEnabled())
-      g.setColor(slider.getForeground());
-    else
-      g.setColor(MetalLookAndFeel.getControlShadow());
-    g.drawLine(TICK_BUFFER, y, TICK_BUFFER + tickLength, y);
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalSplitPaneDivider.java b/libjava/classpath/javax/swing/plaf/metal/MetalSplitPaneDivider.java
deleted file mode 100644
index 0514998..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalSplitPaneDivider.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/* MetalSplitPaneDivider.java
-Copyright (C) 2005, 2006, Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-
-import javax.swing.JButton;
-import javax.swing.JSplitPane;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
-import javax.swing.plaf.basic.BasicSplitPaneDivider;
-
-/**
- * The divider that is used by the {@link MetalSplitPaneUI}.
- *
- * @author Roman Kennke (roman@kennke.org)
- */
-class MetalSplitPaneDivider extends BasicSplitPaneDivider
-{
-  /**
-   * The button pixel data, as indices into the colors array below.
-   * This is the version for 'left' buttons.
-   *
-   * This is slightly different from the icon in Sun's version, it is
-   * one pixel smaller and is more consistent with BUTTON_SPRITE_R.
-   */
-  static final byte[][] BUTTON_SPRITE_L = {{ 0, 0, 0, 2, 0, 0, 0, 0 },
-                                           { 0, 0, 2, 1, 1, 0, 0, 0 },
-                                           { 0, 2, 1, 1, 1, 1, 0, 0 },
-                                           { 2, 1, 1, 1, 1, 1, 1, 0 },
-                                           { 0, 3, 3, 3, 3, 3, 3, 3 }};
-
-  /**
-   * The button pixel data, as indices into the colors array below.
-   * This is the version for 'right' buttons.
-   */
-  static final byte[][] BUTTON_SPRITE_R = {{ 2, 2, 2, 2, 2, 2, 2, 2 },
-                                           { 0, 1, 1, 1, 1, 1, 1, 3 },
-                                           { 0, 0, 1, 1, 1, 1, 3, 0 },
-                                           { 0, 0, 0, 1, 1, 3, 0, 0 },
-                                           { 0, 0, 0, 0, 3, 0, 0, 0 }};
-
-  private class MetalOneTouchButton
-    extends JButton
-  {
-    /**
-     * Denotes a left button.
-     */
-    static final int LEFT = 0;
-
-    /**
-     * Denotes a right button.
-     */
-    static final int RIGHT = 1;
-
-    /**
-     * The colors for the button sprite.
-     */
-    private Color[] colors;
-
-    /**
-     * Either LEFT or RIGHT.
-     */
-    private int direction;
-
-    /**
-     * Creates a new instance.
-     *
-     * @param dir either LEFT or RIGHT
-     */
-    MetalOneTouchButton(int dir)
-    {
-      direction = dir;
-      colors = new Color[4];
-    }
-
-    /**
-     * Never allow borders.
-     */
-    public void setBorder(Border b)
-    {
-    }
-
-    /**
-     * Never allow focus traversal.
-     */
-    public boolean isFocusTraversable()
-    {
-      return false;
-    }
-
-    /**
-     * Paints the one touch button.
-     */
-    public void paint(Graphics g)
-    {
-      if (splitPane != null)
-        {
-          // Update colors here to reflect dynamic changes to the theme.
-          colors[0] = getBackground();
-          colors[1] = MetalLookAndFeel.getPrimaryControlDarkShadow();
-          colors[2] = MetalLookAndFeel.getPrimaryControlInfo();
-          colors[3] = MetalLookAndFeel.getPrimaryControlHighlight();
-
-          // Fill background.
-          g.setColor(getBackground());
-          g.fillRect(0, 0, getWidth(), getHeight());
-
-          // Pressed buttons have slightly different color mapping.
-          if (getModel().isPressed())
-            colors[1] = colors[2];
-
-          byte[][] sprite;
-          if (direction == LEFT)
-            sprite = BUTTON_SPRITE_L;
-          else
-            sprite = BUTTON_SPRITE_R;
-
-          if (orientation == JSplitPane.VERTICAL_SPLIT)
-            {
-              // Draw the sprite as it is.
-              for (int y = 0; y < sprite.length; y++)
-                {
-                  byte[] line = sprite[y];
-                  for (int x = 0; x < line.length; x++)
-                    {
-                      int c = line[x];
-                      if (c != 0)
-                        {
-                          g.setColor(colors[c]);
-                          g.fillRect(x + 1, y + 1, 1, 1);
-                        }
-                    }
-                }
-            }
-          else
-            {
-              // Draw the sprite with swapped X and Y axis.
-              for (int y = 0; y < sprite.length; y++)
-                {
-                  byte[] line = sprite[y];
-                  for (int x = 0; x < line.length; x++)
-                    {
-                      int c = line[x];
-                      if (c != 0)
-                        {
-                          g.setColor(colors[c]);
-                          g.fillRect(y + 1, x + 1, 1, 1);
-                        }
-                    }
-                }
-            }
-        }
-    }
-  }
-
-  /** The dark color in the pattern. */
-  Color dark;
-
-  /** The light color in the pattern. */
-  Color light;
-
-  /** The JSplitPane the divider is on. */
-  JSplitPane splitPane;
-
-  /** The split pane orientation. */
-  int orientation;
-
-  /**
-   * Creates a new instance of <code>MetalSplitPaneDivider</code>.
-   *
-   * @param ui the <code>MetalSplitPaneUI</code> that uses this divider
-   */
-  public MetalSplitPaneDivider(MetalSplitPaneUI ui, Color light, Color dark)
-  {
-    super(ui);
-    this.splitPane = super.splitPane;
-    this.orientation = super.orientation;
-    this.light = light;
-    this.dark = dark;
-  }
-
-  /**
-   * Paints the divider.
-   *
-   * @param g the <code>Graphics</code> context to use for painting
-   */
-  public void paint(Graphics g)
-  {
-    Dimension s = getSize();
-
-    if (splitPane.hasFocus())
-      {
-        g.setColor(UIManager.getColor("SplitPane.dividerFocusColor"));
-        g.fillRect(0, 0, s.width, s.height);
-      }
-
-    // Paint border if one exists.
-    Border border = getBorder();
-    if (border != null)
-      border.paintBorder(this, g, 0, 0, s.width, s.height);
-
-    Insets i = getInsets();
-    MetalUtils.fillMetalPattern(splitPane, g, i.left + 2, i.top + 2,
-                                s.width - i.left - i.right - 4,
-                                s.height - i.top - i.bottom - 4,
-                                light, dark);
-    super.paint(g);
-  }
-
-  protected JButton createLeftOneTouchButton()
-  {
-    JButton b = new MetalOneTouchButton(MetalOneTouchButton.LEFT);
-    b.setMinimumSize(new Dimension(ONE_TOUCH_SIZE, ONE_TOUCH_SIZE));
-    b.setRequestFocusEnabled(false);
-    return b;
-  }
-
-  protected JButton createRightOneTouchButton()
-  {
-    JButton b = new MetalOneTouchButton(MetalOneTouchButton.RIGHT);
-    b.setMinimumSize(new Dimension(ONE_TOUCH_SIZE, ONE_TOUCH_SIZE));
-    b.setRequestFocusEnabled(false);
-    return b;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalSplitPaneUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalSplitPaneUI.java
deleted file mode 100644
index 5b8f2127..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalSplitPaneUI.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/* MetalSplitPaneUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-
-import javax.swing.JComponent;
-import javax.swing.JSplitPane;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicSplitPaneDivider;
-import javax.swing.plaf.basic.BasicSplitPaneUI;
-
-/**
- * A UI delegate for the {@link JSplitPane} component.
- */
-public class MetalSplitPaneUI extends BasicSplitPaneUI
-{
-  /**
-   * Constructs a new instance of <code>MetalSplitPaneUI</code>.
-   */
-  public MetalSplitPaneUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a new instance of <code>MetalSplitPaneUI</code>.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return A new instance of <code>MetalSplitPaneUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalSplitPaneUI();
-  }
-
-  /**
-   * Returns the divider that is used by the <code>JSplitPane</code>.
-   *
-   * The divider returned by this method is a {@link BasicSplitPaneDivider}
-   * that is drawn using the Metal look.
-   *
-   * @return the default divider to use for <code>JSplitPane</code>s.
-   */
-  public BasicSplitPaneDivider createDefaultDivider()
-  {
-    Color light = UIManager.getColor("SplitPane.highlight");
-    Color dark = UIManager.getColor("SplitPane.darkShadow");
-    return new MetalSplitPaneDivider(this, light, dark);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalTabbedPaneUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalTabbedPaneUI.java
deleted file mode 100644
index 77705ba..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalTabbedPaneUI.java
+++ /dev/null
@@ -1,1269 +0,0 @@
-/* MetalTabbedPaneUI.java
-   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.LayoutManager;
-import java.awt.Rectangle;
-
-import javax.swing.JComponent;
-import javax.swing.JTabbedPane;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.UIResource;
-import javax.swing.plaf.basic.BasicTabbedPaneUI;
-
-/**
- * A UI delegate for the {@link JTabbedPane} component.
- */
-public class MetalTabbedPaneUI extends BasicTabbedPaneUI
-{
-
-  /**
-   * A {@link LayoutManager} responsible for placing all the tabs and the
-   * visible component inside the {@link JTabbedPane}. This class is only used
-   * for {@link JTabbedPane#WRAP_TAB_LAYOUT}.
-   *
-   * @specnote Apparently this class was intended to be protected,
-   *           but was made public by a compiler bug and is now
-   *           public for compatibility.
-   */
-  public class TabbedPaneLayout
-    extends BasicTabbedPaneUI.TabbedPaneLayout
-  {
-    /**
-     * Creates a new instance of the layout manager.
-     */
-    public TabbedPaneLayout()
-    {
-      // Nothing to do here.
-    }
-
-    /**
-     * Overridden to do nothing, because tab runs are not rotated in the
-     * {@link MetalLookAndFeel}.
-     *
-     * @param tabPlacement  the tab placement (one of {@link #TOP},
-     *        {@link #BOTTOM}, {@link #LEFT} or {@link #RIGHT}).
-     * @param selectedRun  the index of the selected run.
-     */
-    protected void rotateTabRuns(int tabPlacement, int selectedRun)
-    {
-      // do nothing, because tab runs are not rotated in the MetalLookAndFeel
-    }
-
-    /**
-     * Overridden to do nothing, because the selected tab does not have extra
-     * padding in the {@link MetalLookAndFeel}.
-     *
-     * @param tabPlacement  the tab placement (one of {@link #TOP},
-     *        {@link #BOTTOM}, {@link #LEFT} or {@link #RIGHT}).
-     * @param selectedIndex  the index of the selected tab.
-     */
-    protected void padSelectedTab(int tabPlacement, int selectedIndex)
-    {
-      // do nothing, because the selected tab does not have extra padding in
-      // the MetalLookAndFeel
-    }
-
-    /**
-     * Overridden because tab runs are only normalized for TOP and BOTTOM
-     * tab placement in the Metal L&F.
-     */
-    protected void normalizeTabRuns(int tabPlacement, int tabCount, int start,
-                                    int max)
-    {
-      if (tabPlacement == TOP || tabPlacement == BOTTOM)
-        super.normalizeTabRuns(tabPlacement, tabCount, start, max);
-    }
-  }
-
-  /**
-   * The minimum tab width.
-   */
-  protected int minTabWidth;
-
-  /**
-   * The color for the selected tab.
-   */
-  protected Color selectColor;
-
-  /**
-   * The color for a highlighted selected tab.
-   */
-  protected Color selectHighlight;
-
-  /**
-   * The background color used for the tab area.
-   */
-  protected Color tabAreaBackground;
-
-  /** The graphics to draw the highlight below the tab. */
-  private Graphics hg;
-
-  /**
-   * Indicates if the tabs are having their background filled.
-   */
-  private boolean tabsOpaque;
-
-  /**
-   * Constructs a new instance of MetalTabbedPaneUI.
-   */
-  public MetalTabbedPaneUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns an instance of MetalTabbedPaneUI.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return an instance of MetalTabbedPaneUI
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalTabbedPaneUI();
-  }
-
-  /**
-   * Creates and returns an instance of {@link TabbedPaneLayout}.
-   *
-   * @return A layout manager used by this UI delegate.
-   */
-  protected LayoutManager createLayoutManager()
-  {
-    return (tabPane.getTabLayoutPolicy() == JTabbedPane.WRAP_TAB_LAYOUT)
-           ? new MetalTabbedPaneUI.TabbedPaneLayout()
-           : super.createLayoutManager();
-  }
-
-  /**
-   * Paints the border for a single tab.
-   *
-   * @param g  the graphics device.
-   * @param tabPlacement  the tab placement ({@link #TOP}, {@link #LEFT},
-   *        {@link #BOTTOM} or {@link #RIGHT}).
-   * @param tabIndex  the index of the tab to draw the border for.
-   * @param x  the x-coordinate for the tab's bounding rectangle.
-   * @param y  the y-coordinate for the tab's bounding rectangle.
-   * @param w  the width for the tab's bounding rectangle.
-   * @param h  the height for the tab's bounding rectangle.
-   * @param isSelected  indicates whether or not the tab is selected.
-   */
-  protected void paintTabBorder(Graphics g, int tabPlacement, int tabIndex,
-          int x, int y, int w, int h, boolean isSelected)
-  {
-    int bottom = y + h - 1;
-    int right = x + w - 1;
-
-    switch (tabPlacement)
-    {
-    case LEFT:
-      paintLeftTabBorder(tabIndex, g, x, y, w, h, bottom, right, isSelected);
-      break;
-    case BOTTOM:
-      paintBottomTabBorder(tabIndex, g, x, y, w, h, bottom, right, isSelected);
-      break;
-    case  RIGHT:
-      paintRightTabBorder(tabIndex, g, x, y, w, h, bottom, right, isSelected);
-      break;
-    case TOP:
-    default:
-      paintTopTabBorder(tabIndex, g, x, y, w, h, bottom, right, isSelected);
-    }
-  }
-
-  /**
-   * Paints the border for a tab assuming that the tab position is at the top
-   * ({@link #TOP}).
-   *
-   * @param tabIndex  the tab index.
-   * @param g  the graphics device.
-   * @param x  the x-coordinate for the tab's bounding rectangle.
-   * @param y  the y-coordinate for the tab's bounding rectangle.
-   * @param w  the width for the tab's bounding rectangle.
-   * @param h  the height for the tab's bounding rectangle.
-   * @param btm  the y coordinate of the bottom border
-   * @param rght the x coordinate of the right border
-   * @param isSelected  indicates whether the tab is selected.
-   */
-  protected void paintTopTabBorder(int tabIndex, Graphics g, int x, int y,
-      int w, int h, int btm, int rght, boolean isSelected)
-  {
-    int tabCount = tabPane.getTabCount();
-    int currentRun = getRunForTab(tabCount, tabIndex);
-    int right = w - 1;
-    int bottom = h - 1;
-
-    // Paint gap.
-    if (shouldFillGap(currentRun, tabIndex, x, y))
-      {
-        g.translate(x, y);
-        g.setColor(getColorForGap(currentRun, x, y + 1));
-        g.fillRect(1, 0, 5, 3);
-        g.fillRect(1, 3, 2, 2);
-        g.translate(-x, -y);
-      }
-
-    g.translate(x, y);
-
-    boolean isOcean = MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme;
-    Color oceanSelectedBorder =
-      UIManager.getColor("TabbedPane.borderHightlightColor");
-    if (isOcean && isSelected)
-      g.setColor(oceanSelectedBorder);
-    else
-      g.setColor(darkShadow);
-
-    // Slant
-    g.drawLine(1, 5, 6, 0);
-    // Top.
-    g.drawLine(6, 0, right, 0);
-    // Right.
-    int lastIndex = lastTabInRun(tabCount, currentRun);
-    if (tabIndex == lastIndex)
-      g.drawLine(right, 1, right, bottom);
-    // Left.
-    int selectedIndex = tabPane.getSelectedIndex();
-    if (isOcean && tabIndex - 1 == selectedIndex
-        && currentRun == getRunForTab(tabCount, selectedIndex))
-      {
-        g.setColor(oceanSelectedBorder);
-      }
-    if (tabIndex != tabRuns[runCount - 1])
-      {
-        if (isOcean && isSelected)
-          {
-            g.drawLine(0, 6, 0, bottom);
-            g.setColor(darkShadow);
-            g.drawLine(0, 0, 0, 5);
-          }
-        else
-          {
-            g.drawLine(0, 0, 0, bottom);
-          }
-      }
-    else
-      {
-        g.drawLine(0, 6, 0, bottom);
-      }
-
-    // Paint the highlight.
-    g.setColor(isSelected ? selectHighlight : highlight);
-    // Slant.
-    g.drawLine(1, 6, 6, 1);
-    // Top.
-    g.drawLine(6, 1, right, 1);
-    // Left.
-    g.drawLine(1, 6, 1, bottom);
-    int firstIndex = tabRuns[currentRun];
-    if (tabIndex == firstIndex && tabIndex != tabRuns[runCount - 1])
-      {
-        if (tabPane.getSelectedIndex() == tabRuns[currentRun + 1])
-          g.setColor(selectHighlight);
-        else
-          g.setColor(highlight);
-        g.drawLine(1, 0, 1, 4);
-      }
-
-    g.translate(-x, -y);
-  }
-
-  /**
-   * Paints the border for a tab assuming that the tab position is at the left
-   * ({@link #LEFT}).
-   *
-   * @param tabIndex  the tab index.
-   * @param g  the graphics device.
-   * @param x  the x-coordinate for the tab's bounding rectangle.
-   * @param y  the y-coordinate for the tab's bounding rectangle.
-   * @param w  the width for the tab's bounding rectangle.
-   * @param h  the height for the tab's bounding rectangle.
-   * @param btm  ???
-   * @param rght  ???
-   * @param isSelected  indicates whether the tab is selected.
-   */
-  protected void paintLeftTabBorder(int tabIndex, Graphics g, int x, int y,
-      int w, int h, int btm, int rght, boolean isSelected)
-  {
-    g.translate(x, y);
-    int bottom = h - 1;
-    int right = w - 1;
-
-    int tabCount = tabPane.getTabCount();
-    int currentRun = getRunForTab(tabCount, tabIndex);
-    int firstIndex = tabRuns[currentRun];
-
-    // Paint the part of the above tab.
-    if (tabIndex != firstIndex && tabIndex > 0 && tabsOpaque)
-      {
-        Color c;
-        if (tabPane.getSelectedIndex() == tabIndex - 1)
-          c = selectColor;
-        else
-          c = getUnselectedBackground(tabIndex - 1);
-        g.setColor(c);
-        g.fillRect(2, 0, 4, 3);
-        g.drawLine(2, 3, 2, 3);
-      }
-
-    // Paint the highlight.
-    boolean isOcean = MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme;
-    if (isOcean)
-      {
-        g.setColor(isSelected ? selectHighlight : MetalLookAndFeel.getWhite());
-      }
-    else
-      {
-        g.setColor(isSelected ? selectHighlight : highlight);
-      }
-    // Slant.
-    g.drawLine(1, 6, 6, 1);
-    // Left.
-    g.drawLine(1, 6, 1, bottom);
-    // Top.
-    g.drawLine(6, 1, right, 1);
-    if (tabIndex != firstIndex)
-      {
-        if (isOcean)
-          {
-            g.setColor(MetalLookAndFeel.getWhite());
-          }
-        g.drawLine(1, 0, 1, 4);
-      }
-
-    // Paint border.
-    Color oceanSelectedBorder =
-      UIManager.getColor("TabbedPane.borderHightlightColor");
-    if (isOcean && isSelected)
-      {
-        g.setColor(oceanSelectedBorder);
-      }
-    else
-      {
-        g.setColor(darkShadow);
-      }
-
-    // Slant.
-    g.drawLine(1, 5, 6, 0);
-    // Top.
-    g.drawLine(6, 0, right, 0);
-    // Bottom.
-    int lastIndex = lastTabInRun(tabCount, currentRun);
-    if (tabIndex == lastIndex)
-      {
-        g.drawLine(0, bottom, right, bottom);
-      }
-    // Left.
-    if (isOcean)
-      {
-        if (tabPane.getSelectedIndex() == tabIndex - 1)
-          {
-            g.drawLine(0, 6, 0, bottom);
-            if (tabIndex != firstIndex)
-              {
-                g.setColor(oceanSelectedBorder);
-                g.drawLine(0, 0, 0, 5);
-              }
-          }
-        else if (isSelected)
-          {
-            g.drawLine(0, 5, 0, bottom);
-            if (tabIndex != firstIndex)
-              {
-                g.setColor(darkShadow);
-                g.drawLine(0, 0, 0, 5);
-              }
-          }
-        else if (tabIndex != firstIndex)
-          {
-            g.drawLine(0, 0, 0, bottom);
-          }
-        else
-          {
-            g.drawLine(0, 6, 0, bottom);
-          }
-      }
-    else
-      {
-        if (tabIndex != firstIndex)
-          {
-            g.drawLine(0, 0, 0, bottom);
-          }
-        else
-          {
-            g.drawLine(0, 6, 0, bottom);
-          }
-      }
-
-    g.translate(-x, -y);
-  }
-
-  /**
-   * Paints the border for a tab assuming that the tab position is at the right
-   * ({@link #RIGHT}).
-   *
-   * @param tabIndex  the tab index.
-   * @param g  the graphics device.
-   * @param x  the x-coordinate for the tab's bounding rectangle.
-   * @param y  the y-coordinate for the tab's bounding rectangle.
-   * @param w  the width for the tab's bounding rectangle.
-   * @param h  the height for the tab's bounding rectangle.
-   * @param btm  ???
-   * @param rght  ???
-   * @param isSelected  indicates whether the tab is selected.
-   */
-  protected void paintRightTabBorder(int tabIndex, Graphics g, int x, int y,
-      int w, int h, int btm, int rght, boolean isSelected)
-  {
-    g.translate(x, y);
-    int bottom = h - 1;
-    int right = w - 1;
-
-    int tabCount = tabPane.getTabCount();
-    int currentRun = getRunForTab(tabCount, tabIndex);
-    int firstIndex = tabRuns[currentRun];
-
-    // Paint part of the above tab.
-    if (tabIndex != firstIndex && tabIndex > 0 && tabsOpaque)
-      {
-        Color c;
-        if (tabPane.getSelectedIndex() == tabIndex - 1)
-          c = selectColor;
-        else
-          c = getUnselectedBackground(tabIndex - 1);
-        g.setColor(c);
-        g.fillRect(right - 5, 0, 5, 3);
-        g.fillRect(right - 2, 3, 2, 2);
-      }
-
-    // Paint highlight.
-    g.setColor(isSelected ? selectHighlight : highlight);
-
-    // Slant.
-    g.drawLine(right - 6, 1, right - 1, 6);
-    // Top.
-    g.drawLine(0, 1, right - 6, 1);
-    // Left.
-    if (! isSelected)
-      {
-        g.drawLine(0, 1, 0, bottom);
-      }
-
-    // Paint border.
-    boolean isOcean = MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme;
-    Color oceanSelectedBorder =
-      UIManager.getColor("TabbedPane.borderHightlightColor");
-    if (isOcean && isSelected)
-      {
-        g.setColor(oceanSelectedBorder);
-      }
-    else
-      {
-        g.setColor(darkShadow);
-      }
-
-    // Bottom.
-    int lastIndex = lastTabInRun(tabCount, currentRun);
-    if (tabIndex == lastIndex)
-      {
-        g.drawLine(0, bottom, right, bottom);
-      }
-    // Slant.
-    if (isOcean && tabPane.getSelectedIndex() == tabIndex - 1)
-      {
-        g.setColor(oceanSelectedBorder);
-      }
-    g.drawLine(right - 6, 0, right, 6);
-    // Top.
-    g.drawLine(0, 0, right - 6, 0);
-    // Right.
-    if (isOcean && isSelected)
-      {
-        g.drawLine(right, 6, right, bottom);
-        if (tabIndex != firstIndex)
-          {
-            g.setColor(darkShadow);
-            g.drawLine(right, 0, right, 5);
-          }
-      }
-    else if (isOcean && tabPane.getSelectedIndex() == tabIndex - 1)
-      {
-        if (tabIndex != firstIndex)
-          {
-            g.setColor(oceanSelectedBorder);
-            g.drawLine(right, 0, right, 6);
-          }
-        g.setColor(darkShadow);
-        g.drawLine(right, 7, right, bottom);
-      }
-    else if (tabIndex != firstIndex)
-      {
-        g.drawLine(right, 0, right, bottom);
-      }
-    else
-      {
-        g.drawLine(right, 6, right, bottom);
-      }
-    g.translate(-x, -y);
-  }
-
-  /**
-   * Paints the border for a tab assuming that the tab position is at the bottom
-   * ({@link #BOTTOM}).
-   *
-   * @param tabIndex  the tab index.
-   * @param g  the graphics device.
-   * @param x  the x-coordinate for the tab's bounding rectangle.
-   * @param y  the y-coordinate for the tab's bounding rectangle.
-   * @param w  the width for the tab's bounding rectangle.
-   * @param h  the height for the tab's bounding rectangle.
-   * @param btm  ???
-   * @param rght  ???
-   * @param isSelected  indicates whether the tab is selected.
-   */
-  protected void paintBottomTabBorder(int tabIndex, Graphics g, int x, int y,
-      int w, int h, int btm, int rght, boolean isSelected)
-  {
-    int bottom = h - 1;
-    int right = w - 1;
-
-    int tabCount = tabPane.getTabCount();
-    int currentRun = getRunForTab(tabCount, tabIndex);
-    // Paint gap if necessary.
-    if (shouldFillGap(currentRun, tabIndex, x, y))
-      {
-        g.translate(x, y);
-        g.setColor(getColorForGap(currentRun, x, y));
-        g.fillRect(1, bottom - 4, 3, 5);
-        g.fillRect(4, bottom - 1, 2, 2);
-        g.translate(-x, -y);
-      }
-
-    g.translate(x, y);
-
-    // Paint border.
-    boolean isOcean = MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme;
-    Color oceanSelectedBorder =
-      UIManager.getColor("TabbedPane.borderHightlightColor");
-    if (isOcean && isSelected)
-      {
-        g.setColor(oceanSelectedBorder);
-      }
-    else
-      {
-        g.setColor(darkShadow);
-      }
-    // Slant.
-    g.drawLine(1, bottom - 5, 6, bottom);
-    // Bottom.
-    g.drawLine(6, bottom, right, bottom);
-    // Right.
-    int lastIndex = lastTabInRun(tabCount, currentRun);
-    if (tabIndex == lastIndex)
-      {
-        g.drawLine(right, 0, right, bottom);
-      }
-    // Left.
-    if (isOcean && isSelected)
-      {
-        g.drawLine(0, 0, 0, bottom - 5);
-
-        // Paint a connecting line to the tab below for all
-        // but the first tab in the last run.
-        if (tabIndex != tabRuns[runCount-1])
-          {
-            g.setColor(darkShadow);
-            g.drawLine(0, bottom - 5, 0, bottom);
-          }
-      }
-    else
-      {
-        if (isOcean && tabIndex == tabPane.getSelectedIndex() + 1)
-          {
-            g.setColor(oceanSelectedBorder);
-          }
-        if (tabIndex != tabRuns[runCount - 1])
-          {
-            g.drawLine(0, 0, 0, bottom);
-          }
-        else
-          {
-            g.drawLine(0, 0, 0, bottom - 6);
-          }
-      }
-
-    // Paint highlight.
-    g.setColor(isSelected ? selectHighlight : highlight);
-    // Slant.
-    g.drawLine(1, bottom - 6, 6, bottom - 1);
-    // Left.
-    g.drawLine(1, 0, 1, bottom - 6);
-
-    int firstIndex = tabRuns[currentRun];
-    if (tabIndex == firstIndex && tabIndex != tabRuns[runCount - 1])
-      {
-        if (tabPane.getSelectedIndex() == tabRuns[currentRun + 1])
-          {
-            g.setColor(selectHighlight);
-          }
-        else
-          {
-            g.setColor(highlight);
-          }
-        g.drawLine(1, bottom - 4, 1, bottom);
-      }
-
-    g.translate(-x, -y);
-  }
-
-  /**
-   * Paints the background for a tab.
-   *
-   * @param g  the graphics device.
-   * @param tabPlacement  the tab placement ({@link #TOP}, {@link #LEFT},
-   *        {@link #BOTTOM} or {@link #RIGHT}).
-   * @param tabIndex  the index of the tab to draw the border for.
-   * @param x  the x-coordinate for the tab's bounding rectangle.
-   * @param y  the y-coordinate for the tab's bounding rectangle.
-   * @param w  the width for the tab's bounding rectangle.
-   * @param h  the height for the tab's bounding rectangle.
-   * @param isSelected  indicates whether or not the tab is selected.
-   */
-  protected void paintTabBackground(Graphics g, int tabPlacement,
-      int tabIndex, int x, int y, int w, int h, boolean isSelected)
-  {
-    if (isSelected)
-      g.setColor(selectColor);
-    else
-      g.setColor(getUnselectedBackground(tabIndex));
-
-    switch (tabPlacement)
-    {
-      case LEFT:
-        g.fillRect(x + 5, y + 1, w - 5, h - 1);
-        g.fillRect(x + 2, y + 4, 3, h - 4);
-        break;
-      case BOTTOM:
-        g.fillRect(x + 2, y, w - 2, h - 3);
-        g.fillRect(x + 5, y + h - 4, w - 5, 3);
-        break;
-      case RIGHT:
-        g.fillRect(x, y + 1, w - 4, h - 1);
-        g.fillRect(x + w - 4, y + 5, 3, h - 5);
-        break;
-      case TOP:
-      default:
-        g.fillRect(x + 4, y + 2, w - 4, h - 2);
-        g.fillRect(x + 2, y + 5, 2, h - 5);
-    }
-  }
-
-  /**
-   * This method paints the focus rectangle around the selected tab.
-   *
-   * @param g The Graphics object to paint with.
-   * @param tabPlacement The JTabbedPane's tab placement.
-   * @param rects The array of rectangles keeping track of size and position.
-   * @param tabIndex The tab index.
-   * @param iconRect The icon bounds.
-   * @param textRect The text bounds.
-   * @param isSelected Whether this tab is selected.
-   */
-  protected void paintFocusIndicator(Graphics g, int tabPlacement,
-                                     Rectangle[] rects, int tabIndex,
-                                     Rectangle iconRect, Rectangle textRect,
-                                     boolean isSelected)
-  {
-    if (tabPane.hasFocus() && isSelected)
-      {
-        Rectangle rect = rects[tabIndex];
-
-        g.setColor(focus);
-        g.translate(rect.x, rect.y);
-
-        switch (tabPlacement)
-          {
-          case LEFT:
-            // Top line
-            g.drawLine(7, 2, rect.width-2, 2);
-
-            // Right line
-            g.drawLine(rect.width-1, 2, rect.width-1, rect.height-3);
-
-            // Bottom line
-            g.drawLine(rect.width-2, rect.height-2, 3, rect.height-2);
-
-            // Left line
-            g.drawLine(2, rect.height-3, 2, 7);
-
-            // Slant
-            g.drawLine(2, 6, 6, 2);
-            break;
-          case RIGHT:
-            // Top line
-            g.drawLine(1, 2, rect.width-8, 2);
-
-            // Slant
-            g.drawLine(rect.width-7, 2, rect.width-3, 6);
-
-            // Right line
-            g.drawLine(rect.width-3, 7, rect.width-3, rect.height-3);
-
-            // Bottom line
-            g.drawLine(rect.width-3, rect.height-2, 2, rect.height-2);
-
-            // Left line
-            g.drawLine(1, rect.height-2, 1, 2);
-            break;
-          case BOTTOM:
-            // Top line
-            g.drawLine(2, 1, rect.width-2, 1);
-
-            // Right line
-            g.drawLine(rect.width-1, 2, rect.width-1, rect.height-3);
-
-            // Bottom line
-            g.drawLine(7, rect.height-3, rect.width-2, rect.height-3);
-
-            // Slant
-            g.drawLine(6, rect.height-3, 2, rect.height-7);
-
-            // Left line
-            g.drawLine(2, rect.height-8, 2, 2);
-
-            break;
-          case TOP:
-          default:
-            // Top line
-            g.drawLine(6, 2, rect.width-2, 2);
-
-            // Right line
-            g.drawLine(rect.width-1, 2, rect.width-1, rect.height-3);
-
-            // Bottom line
-            g.drawLine(3, rect.height-3, rect.width-2, rect.height-3);
-
-            // Left line
-            g.drawLine(2, rect.height-3, 2, 7);
-
-            // Slant
-            g.drawLine(2, 6, 6, 2);
-
-          }
-
-        g.translate(-rect.x, -rect.y);
-      }
-  }
-
-  /**
-   * Returns <code>true</code> if the tabs in the specified run should be
-   * padded to make the run fill the width/height of the {@link JTabbedPane}.
-   *
-   * @param tabPlacement  the tab placement for the {@link JTabbedPane} (one of
-   *        {@link #TOP}, {@link #BOTTOM}, {@link #LEFT} and {@link #RIGHT}).
-   * @param run  the run index.
-   *
-   * @return A boolean.
-   */
-  protected boolean shouldPadTabRun(int tabPlacement, int run)
-  {
-    // as far as I can tell, all runs should be padded except the last run
-    // (which is drawn at the very top for tabPlacement == TOP)
-    return run < this.runCount - 1;
-  }
-
-  /**
-   * Installs the defaults for this UI. This method calls super.installDefaults
-   * and then loads the Metal specific defaults for TabbedPane.
-   */
-  protected void installDefaults()
-  {
-    super.installDefaults();
-    selectColor = UIManager.getColor("TabbedPane.selected");
-    selectHighlight = UIManager.getColor("TabbedPane.selectHighlight");
-    tabAreaBackground = UIManager.getColor("TabbedPane.tabAreaBackground");
-    tabsOpaque = UIManager.getBoolean("TabbedPane.tabsOpaque");
-    minTabWidth = 0;
-  }
-
-  /**
-   * Returns the color for the gap.
-   *
-   * @param currentRun - The current run to return the color for
-   * @param x - The x position of the current run
-   * @param y - The y position of the current run
-   *
-   * @return the color for the gap in the current run.
-   */
-  protected Color getColorForGap(int currentRun, int x, int y)
-  {
-    int index = tabForCoordinate(tabPane, x, y);
-    int selected = tabPane.getSelectedIndex();
-    if (selected == index)
-      return selectColor;
-    return tabAreaBackground;
-  }
-
-  /**
-   * Returns true if the gap should be filled in.
-   *
-   * @param currentRun - The current run
-   * @param tabIndex - The current tab
-   * @param x - The x position of the tab
-   * @param y - The y position of the tab
-   *
-   * @return true if the gap at the current run should be filled
-   */
-  protected boolean shouldFillGap(int currentRun, int tabIndex, int x, int y)
-  {
-    // As far as I can tell, the gap is never filled in.
-    return false;
-  }
-
-  /**
-   * Paints the highlight below the tab, if there is one.
-   */
-  protected void paintHighlightBelowTab()
-  {
-    int selected = tabPane.getSelectedIndex();
-    int tabPlacement = tabPane.getTabPlacement();
-    Rectangle bounds = getTabBounds(tabPane, selected);
-
-    hg.setColor(selectColor);
-    int x = bounds.x;
-    int y = bounds.y;
-    int w = bounds.width;
-    int h = bounds.height;
-
-    if (tabPlacement == TOP)
-        hg.fillRect(x, y + h - 2, w, 30);
-    else if (tabPlacement == LEFT)
-        hg.fillRect(x + w - 1, y, 20, h);
-    else if (tabPlacement == BOTTOM)
-        hg.fillRect(x, y - h + 2, w, 30);
-    else if (tabPlacement == RIGHT)
-        hg.fillRect(x - 18, y, 20, h);
-    else
-      throw new AssertionError("Unrecognised 'tabPlacement' argument.");
-    hg = null;
-  }
-
-  /**
-   * Returns true if we should rotate the tab runs.
-   *
-   * @param tabPlacement - The current tab placement.
-   * @param selectedRun - The selected run.
-   *
-   * @return true if the tab runs should be rotated.
-   */
-  protected boolean shouldRotateTabRuns(int tabPlacement,
-                                        int selectedRun)
-  {
-    // false because tab runs are not rotated in the MetalLookAndFeel
-    return false;
-  }
-
-  protected int calculateMaxTabHeight(int tabPlacement)
-  {
-    // FIXME: Why is this overridden?
-    return super.calculateMaxTabHeight(tabPlacement);
-  }
-
-  /**
-   * Returns the amount of overlay among the tabs. In
-   * the Metal L&F the overlay for LEFT and RIGHT placement
-   * is half of the maxTabHeight. For TOP and BOTTOM placement
-   * the tabs do not overlay.
-   *
-   * @param tabPlacement the placement
-   *
-   * @return the amount of overlay among the tabs
-   */
-  protected int getTabRunOverlay(int tabPlacement)
-  {
-    int overlay = 0;
-    if (tabPlacement == LEFT || tabPlacement == RIGHT)
-      {
-        int maxHeight = calculateMaxTabHeight(tabPlacement);
-        overlay = maxTabHeight / 2;
-      }
-    return overlay;
-  }
-
-  /**
-   * Paints the upper edge of the content border.
-   *
-   * @param g the graphics to use for painting
-   * @param tabPlacement the tab placement
-   * @param selectedIndex the index of the selected tab
-   * @param x the upper left coordinate of the content area
-   * @param y the upper left coordinate of the content area
-   * @param w the width of the content area
-   * @param h the height of the content area
-   */
-  protected void paintContentBorderTopEdge(Graphics g, int tabPlacement,
-                                           int selectedIndex, int x, int y,
-                                           int w, int h)
-  {
-    Color oceanSelectedBorder =
-      UIManager.getColor("TabbedPane.borderHightlightColor");
-    boolean isOcean = MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme;
-    if (isOcean)
-      {
-        g.setColor(oceanSelectedBorder);
-      }
-    else
-      {
-        g.setColor(selectHighlight);
-      }
-
-    Rectangle rect = selectedIndex < 0 ? null :
-                                         getTabBounds(selectedIndex, calcRect);
-
-    // If tabs are not placed on TOP, or if the selected tab is not in the
-    // run directly above the content or the selected tab is not visible,
-    // then we draw an unbroken line.
-    if (tabPlacement != TOP || selectedIndex < 0
-        || rect.y  + rect.height + 1 < y || rect.x < x || rect.x > x + w)
-      {
-        g.drawLine(x, y, x + w - 2, y);
-        if (isOcean && tabPlacement == TOP)
-          {
-            g.setColor(MetalLookAndFeel.getWhite());
-            g.drawLine(x, y + 1, x + w - 2, y + 1);
-          }
-      }
-    else
-      {
-        boolean isLast = isLastTabInRun(selectedIndex);
-        if (isLast)
-          {
-            g.drawLine(x, y, rect.x + 1, y);
-          }
-        else
-          {
-            g.drawLine(x, y, rect.x, y);
-          }
-
-        int right = x + w - 1;
-        if (rect.x + rect.width < right - 1)
-          {
-            if (isLast)
-              {
-                g.drawLine(rect.x + rect.width - 1, y, right - 1, y);
-              }
-            else
-              {
-                g.drawLine(rect.x + rect.width, y, right - 1, y);
-              }
-          }
-        else
-          {
-            g.setColor(shadow);
-            g.drawLine(x + w - 2, y, x + w - 2, y);
-          }
-
-        // When in OceanTheme, draw another white line.
-        if (isOcean)
-          {
-            g.setColor(MetalLookAndFeel.getWhite());
-            if (isLast)
-              {
-                g.drawLine(x, y + 1, rect.x + 1, y + 1);
-              }
-            else
-              {
-                g.drawLine(x, y + 1, rect.x, y + 1);
-              }
-
-            if (rect.x + rect.width < right - 1)
-              {
-                if (isLast)
-                  {
-                    g.drawLine(rect.x + rect.width - 1, y + 1, right - 1,
-                               y + 1);
-                  }
-                else
-                  {
-                    g.drawLine(rect.x + rect.width, y + 1, right - 1, y + 1);
-                  }
-              }
-            else
-              {
-                g.setColor(shadow);
-                g.drawLine(x + w - 2, y + 1, x + w - 2, y + 1);
-              }
-          }
-      }
-  }
-
-  /**
-   * Paints the lower edge of the content border.
-   *
-   * @param g the graphics to use for painting
-   * @param tabPlacement the tab placement
-   * @param selectedIndex the index of the selected tab
-   * @param x the upper left coordinate of the content area
-   * @param y the upper left coordinate of the content area
-   * @param w the width of the content area
-   * @param h the height of the content area
-   */
-  protected void paintContentBorderBottomEdge(Graphics g, int tabPlacement,
-                                              int selectedIndex, int x, int y,
-                                              int w, int h)
-  {
-    g.setColor(darkShadow);
-
-    // If tabs are not placed on BOTTOM, or if the selected tab is not in the
-    // run directly below the content or the selected tab is not visible,
-    // then we draw an unbroken line.
-    Rectangle rect = selectedIndex < 0 ? null :
-                                         getTabBounds(selectedIndex, calcRect);
-    boolean isOcean = MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme;
-    Color oceanSelectedBorder =
-      UIManager.getColor("TabbedPane.borderHightlightColor");
-    if (tabPlacement != BOTTOM || selectedIndex < 0 || rect.y - 1 > h
-        || rect.x < x || rect.x > x + w)
-      {
-        if (isOcean && tabPlacement == BOTTOM)
-          {
-            g.setColor(oceanSelectedBorder);
-          }
-        g.drawLine(x, y + h - 1, x + w - 1, y + h - 1);
-      }
-    else
-      {
-        boolean isLast = isLastTabInRun(selectedIndex);
-        if (isOcean)
-          {
-            g.setColor(oceanSelectedBorder);
-          }
-
-        int bottom = y + h - 1;
-        int right = x + w - 1;
-        if (isLast)
-          {
-            g.drawLine(x, bottom, rect.x, bottom);
-          }
-        else
-          {
-            g.drawLine(x, bottom, rect.x - 1, bottom);
-          }
-
-        if (rect.x + rect.width < x + w - 2)
-          {
-            if (isLast)
-              {
-                g.drawLine(rect.x + rect.width - 1, bottom, right, bottom);
-              }
-            else
-              {
-                g.drawLine(rect.x + rect.width, bottom, right, bottom);
-              }
-          }
-      }
-  }
-
-  /**
-   * Paints the left edge of the content border.
-   *
-   * @param g the graphics to use for painting
-   * @param tabPlacement the tab placement
-   * @param selectedIndex the index of the selected tab
-   * @param x the upper left coordinate of the content area
-   * @param y the upper left coordinate of the content area
-   * @param w the width of the content area
-   * @param h the height of the content area
-   */
-  protected void paintContentBorderLeftEdge(Graphics g, int tabPlacement,
-                                            int selectedIndex, int x, int y,
-                                            int w, int h)
-  {
-    boolean isOcean = MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme;
-    Color oceanSelectedBorder =
-      UIManager.getColor("TabbedPane.borderHightlightColor");
-    Rectangle rect = selectedIndex < 0 ? null :
-      getTabBounds(selectedIndex, calcRect);
-
-    if (isOcean)
-      {
-        g.setColor(oceanSelectedBorder);
-      }
-    else
-      {
-        g.setColor(selectHighlight);
-      }
-
-    // If tabs are not placed on LEFT, or if the selected tab is not in the
-    // run directly left to the content or the selected tab is not visible,
-    // then we draw an unbroken line.
-    if (tabPlacement != LEFT || selectedIndex < 0
-        || rect.x + rect.width + 1 < x || rect.y < y || rect.y > y + h)
-      {
-        g.drawLine(x, y + 1, x, y + h - 2);
-        if (isOcean && tabPlacement == LEFT)
-          {
-            g.setColor(MetalLookAndFeel.getWhite());
-            g.drawLine(x, y + 1, x, y + h - 2);
-          }
-      }
-    else
-      {
-        g.drawLine(x, y, x, rect.y + 1);
-        if (rect.y + rect.height < y + h - 2)
-          {
-            g.drawLine(x, rect.y + rect.height + 1, x, y + h + 2);
-          }
-        if (isOcean)
-          {
-            g.setColor(MetalLookAndFeel.getWhite());
-            g.drawLine(x + 1, y + 1, x + 1, rect.y + 1);
-            if (rect.y + rect.height < y + h - 2)
-              {
-                g.drawLine(x + 1, rect.y + rect.height + 1, x + 1, y + h + 2);
-              }
-          }
-      }
-
-  }
-
-  /**
-   * Paints the right edge of the content border.
-   *
-   * @param g the graphics to use for painting
-   * @param tabPlacement the tab placement
-   * @param selectedIndex the index of the selected tab
-   * @param x the upper left coordinate of the content area
-   * @param y the upper left coordinate of the content area
-   * @param w the width of the content area
-   * @param h the height of the content area
-   */
-  protected void paintContentBorderRightEdge(Graphics g, int tabPlacement,
-                                             int selectedIndex, int x, int y,
-                                             int w, int h)
-  {
-    g.setColor(darkShadow);
-    Rectangle rect = selectedIndex < 0 ? null :
-      getTabBounds(selectedIndex, calcRect);
-    boolean isOcean = MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme;
-    Color oceanSelectedBorder =
-      UIManager.getColor("TabbedPane.borderHightlightColor");
-
-    // If tabs are not placed on RIGHT, or if the selected tab is not in the
-    // run directly right to the content or the selected tab is not visible,
-    // then we draw an unbroken line.
-    if (tabPlacement != RIGHT || selectedIndex < 0 || rect.x - 1 > w
-        || rect.y < y || rect.y > y + h)
-      {
-        if (isOcean && tabPlacement == RIGHT)
-          {
-            g.setColor(oceanSelectedBorder);
-          }
-        g.drawLine(x + w - 1, y, x + w - 1, y + h - 1);
-      }
-    else
-      {
-        if (isOcean)
-          {
-            g.setColor(oceanSelectedBorder);
-          }
-        g.drawLine(x + w - 1, y, x + w - 1, rect.y);
-
-        if (rect.y + rect.height < y + h - 2)
-          {
-            g.drawLine(x + w - 1, rect.y + rect.height, x + w - 1, y + h - 2);
-          }
-      }
-  }
-
-  /**
-   * Determines if the specified tab is the last tab in its tab run.
-   *
-   * @param tabIndex the index of the tab
-   *
-   * @return if the specified tab is the last tab in its tab run
-   */
-  private boolean isLastTabInRun(int tabIndex)
-  {
-    int count = tabPane.getTabCount();
-    int run = getRunForTab(count, tabIndex);
-    int lastIndex = lastTabInRun(count, run);
-    return tabIndex == lastIndex;
-  }
-
-  /**
-   * Returns the background for an unselected tab. This first asks the
-   * JTabbedPane for the background at the specified tab index, if this
-   * is an UIResource (that means, it is inherited from the JTabbedPane)
-   * and the TabbedPane.unselectedBackground UI property is not null,
-   * this returns the value of the TabbedPane.unselectedBackground property,
-   * otherwise the value returned by the JTabbedPane.
-   *
-   * @param tabIndex the index of the tab for which we query the background
-   *
-   * @return the background for an unselected tab
-   */
-  private Color getUnselectedBackground(int tabIndex)
-  {
-    Color bg = tabPane.getBackgroundAt(tabIndex);
-    Color unselectedBackground =
-      UIManager.getColor("TabbedPane.unselectedBackground");
-    if (bg instanceof UIResource && unselectedBackground != null)
-      bg = unselectedBackground;
-    return bg;
-  }
-
-  protected int getTabLabelShiftX(int tabPlacement,
-                                  int index,
-                                  boolean isSelected)
-  {
-    return 0;
-  }
-
-  protected int getTabLabelShiftY(int tabPlacement,
-                                  int index,
-                                  boolean isSelected)
-  {
-    return 0;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalTextFieldUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalTextFieldUI.java
deleted file mode 100644
index f7b18db..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalTextFieldUI.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/* MetalTextFieldUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.beans.PropertyChangeEvent;
-
-import javax.swing.JComponent;
-import javax.swing.JTextField;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicTextFieldUI;
-
-/**
- * A UI delegate for the {@link JTextField} component.
- */
-public class MetalTextFieldUI extends BasicTextFieldUI
-{
-  /**
-   * Constructs a new instance of MetalTextFieldUI.
-   */
-  public MetalTextFieldUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a new instance of <code>MetalTextFieldUI</code>.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return A new instance of <code>MetalTextFieldUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalTextFieldUI();
-  }
-
-  /**
-   * This method gets called when a bound property is changed on the associated
-   * JTextComponent. This is a hook which UI implementations may change to
-   * reflect how the UI displays bound properties of JTextComponent subclasses.
-   */
-  public void propertyChange(PropertyChangeEvent evt)
-  {
-    super.propertyChange(evt);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalTheme.java b/libjava/classpath/javax/swing/plaf/metal/MetalTheme.java
deleted file mode 100644
index 209cbbe..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalTheme.java
+++ /dev/null
@@ -1,576 +0,0 @@
-/* MetalTheme.java --
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-
-import javax.swing.UIDefaults;
-import javax.swing.plaf.ColorUIResource;
-import javax.swing.plaf.FontUIResource;
-
-/**
- * The base class for themes used by the {@link MetalLookAndFeel}.  A default
- * theme ({@link DefaultMetalTheme}) is provided, or you can create and use
- * your own.
- *
- * @see MetalLookAndFeel#setCurrentTheme(MetalTheme)
- */
-public abstract class MetalTheme
-{
-  private ColorUIResource BLACK = new ColorUIResource(Color.BLACK);
-  private ColorUIResource WHITE = new ColorUIResource(Color.WHITE);
-
-  /**
-   * Default constructor.
-   */
-  public MetalTheme()
-  {
-    // Do nothing here.
-  }
-
-  /**
-   * Returns the name of the theme.
-   *
-   * @return The name of the theme.
-   */
-  public abstract String getName();
-
-  /**
-   * Adds custom entries to the UI defaults table.  This method is empty.
-   *
-   * @param table  the table.
-   */
-  public void addCustomEntriesToTable(UIDefaults table)
-  {
-    // Do nothing here.
-    // This method needs to be overridden to actually do something.
-    // It is called from MetalLookAndFeel.getDefaults().
-  }
-
-  /**
-   * Returns the accelerator foreground color.  The default implementation
-   * returns the color from {@link #getPrimary1()}.
-   *
-   * @return The accelerator foreground color.
-   */
-  public ColorUIResource getAcceleratorForeground()
-  {
-    return getPrimary1();
-  }
-
-  /**
-   * Returns the accelerator selected foreground color.  The default
-   * implementation returns the color from {@link #getBlack()}.
-   *
-   * @return The accelerator selected foreground color.
-   */
-  public ColorUIResource getAcceleratorSelectedForeground()
-  {
-    return getBlack();
-  }
-
-  /**
-   * Returns the control color.  The default implementation returns the color
-   * from {@link #getSecondary3()}.
-   *
-   * @return The control color.
-   */
-  public ColorUIResource getControl()
-  {
-    return getSecondary3();
-  }
-
-  /**
-   * Returns the color used for dark shadows on controls.  The default
-   * implementation returns the color from  {@link #getSecondary1()}.
-   *
-   * @return The color used for dark shadows on controls.
-   */
-  public ColorUIResource getControlDarkShadow()
-  {
-    return getSecondary1();
-  }
-
-  /**
-   * Returns the color used for disabled controls.  The default implementation
-   * returns the color from {@link #getSecondary1()}.
-   *
-   * @return The color used for disabled controls.
-   */
-  public ColorUIResource getControlDisabled()
-  {
-    return getSecondary2();
-  }
-
-  /**
-   * Returns the color used to draw highlights for controls.  The default
-   * implementation returns the color from {@link #getWhite()}.
-   *
-   * @return The color used to draw highlights for controls.
-   */
-  public ColorUIResource getControlHighlight()
-  {
-    return getWhite();
-  }
-
-  /**
-   * Returns the color used to display control info.  The default
-   * implementation returns the color from {@link #getBlack()}.
-   *
-   * @return The color used to display control info.
-   */
-  public ColorUIResource getControlInfo()
-  {
-    return getBlack();
-  }
-
-  /**
-   * Returns the color used to draw shadows for controls.  The default
-   * implementation returns the color from {@link #getSecondary2()}.
-   *
-   * @return The color used to draw shadows for controls.
-   */
-  public ColorUIResource getControlShadow()
-  {
-    return getSecondary2();
-  }
-
-  /**
-   * Returns the color used for text on controls.  The default implementation
-   * returns the color from {@link #getControlInfo()}.
-   *
-   * @return The color used for text on controls.
-   */
-  public ColorUIResource getControlTextColor()
-  {
-    return getControlInfo();
-  }
-
-  /**
-   * Returns the color used for the desktop background.  The default
-   * implementation returns the color from {@link #getPrimary2()}.
-   *
-   * @return The color used for the desktop background.
-   */
-  public ColorUIResource getDesktopColor()
-  {
-    return getPrimary2();
-  }
-
-  /**
-   * Returns the color used to draw focus highlights.  The default
-   * implementation returns the color from {@link #getPrimary2()}.
-   *
-   * @return The color used to draw focus highlights.
-   */
-  public ColorUIResource getFocusColor()
-  {
-    return getPrimary2();
-  }
-
-  /**
-   * Returns the color used to draw highlighted text.  The default
-   * implementation returns the color from {@link #getHighlightedTextColor()}.
-   *
-   * @return The color used to draw highlighted text.
-   */
-  public ColorUIResource getHighlightedTextColor()
-  {
-    return getControlTextColor();
-  }
-
-  /**
-   * Returns the color used to draw text on inactive controls.  The default
-   * implementation returns the color from {@link #getControlDisabled()}.
-   *
-   * @return The color used to draw text on inactive controls.
-   */
-  public ColorUIResource getInactiveControlTextColor()
-  {
-    return getControlDisabled();
-  }
-
-  /**
-   * Returns the color used to draw inactive system text.  The default
-   * implementation returns the color from {@link #getSecondary2()}.
-   *
-   * @return The color used to draw inactive system text.
-   */
-  public ColorUIResource getInactiveSystemTextColor()
-  {
-    return getSecondary2();
-  }
-
-  /**
-   * Returns the background color for menu items.  The default implementation
-   * returns the color from {@link #getSecondary3()}.
-   *
-   * @return The background color for menu items.
-   *
-   * @see #getMenuSelectedBackground()
-   */
-  public ColorUIResource getMenuBackground()
-  {
-    return getSecondary3();
-  }
-
-  /**
-   * Returns the foreground color for disabled menu items.  The default
-   * implementation returns the color from {@link #getSecondary2()}.
-   *
-   * @return The foreground color for disabled menu items.
-   *
-   * @see #getMenuForeground()
-   */
-  public ColorUIResource getMenuDisabledForeground()
-  {
-    return getSecondary2();
-  }
-
-  /**
-   * Returns the foreground color for menu items.  The default implementation
-   * returns the color from {@link #getBlack()}.
-   *
-   * @return The foreground color for menu items.
-   *
-   * @see #getMenuDisabledForeground()
-   * @see #getMenuSelectedForeground()
-   */
-  public ColorUIResource getMenuForeground()
-  {
-    return getBlack();
-  }
-
-  /**
-   * Returns the background color for selected menu items.  The default
-   * implementation returns the color from {@link #getPrimary2()}.
-   *
-   * @return The background color for selected menu items.
-   *
-   * @see #getMenuBackground()
-   */
-  public ColorUIResource getMenuSelectedBackground()
-  {
-    return getPrimary2();
-  }
-
-  /**
-   * Returns the foreground color for selected menu items.  The default
-   * implementation returns the value from {@link #getBlack()}.
-   *
-   * @return The foreground color for selected menu items.
-   *
-   * @see #getMenuForeground()
-   */
-  public ColorUIResource getMenuSelectedForeground()
-  {
-    return getBlack();
-  }
-
-  /**
-   * Returns the primary color for controls.  The default implementation
-   * returns the color from {@link #getPrimary3()}.
-   *
-   * @return The primary color for controls.
-   */
-  public ColorUIResource getPrimaryControl()
-  {
-    return getPrimary3();
-  }
-
-  /**
-   * Returns the primary color for the dark shadow on controls.  The default
-   * implementation returns the color from {@link #getPrimary1()}.
-   *
-   * @return The primary color for the dark shadow on controls.
-   */
-  public ColorUIResource getPrimaryControlDarkShadow()
-  {
-    return getPrimary1();
-  }
-
-  /**
-   * Returns the primary color for the highlight on controls.  The default
-   * implementation returns the color from {@link #getWhite()}.
-   *
-   * @return The primary color for the highlight on controls.
-   */
-  public ColorUIResource getPrimaryControlHighlight()
-  {
-    return getWhite();
-  }
-
-  /**
-   * Returns the primary color for the information on controls.  The default
-   * implementation returns the color from {@link #getBlack()}.
-   *
-   * @return The primary color for the information on controls.
-   */
-  public ColorUIResource getPrimaryControlInfo()
-  {
-    return getBlack();
-  }
-
-  /**
-   * Returns the primary color for the shadow on controls.  The default
-   * implementation returns the color from {@link #getPrimary2()}.
-   *
-   * @return The primary color for the shadow on controls.
-   */
-  public ColorUIResource getPrimaryControlShadow()
-  {
-    return getPrimary2();
-  }
-
-  /**
-   * Returns the background color for separators.  The default implementation
-   * returns the color from {@link #getWhite()}.
-   *
-   * @return The background color for separators.
-   */
-  public ColorUIResource getSeparatorBackground()
-  {
-    return getWhite();
-  }
-
-  /**
-   * Returns the foreground color for separators.  The default implementation
-   * returns the value from {@link #getPrimary1()}.
-   *
-   * @return The foreground color for separators.
-   */
-  public ColorUIResource getSeparatorForeground()
-  {
-    return getPrimary1();
-  }
-
-  /**
-   * Returns the color used for system text.  The default implementation
-   * returns the color from {@link #getBlack()}.
-   *
-   * @return The color used for system text.
-   */
-  public ColorUIResource getSystemTextColor()
-  {
-    return getBlack();
-  }
-
-  /**
-   * Returns the color used to highlight text.  The default implementation
-   * returns the color from {@link #getPrimary3()}.
-   *
-   * @return The color used to highlight text.
-   */
-  public ColorUIResource getTextHighlightColor()
-  {
-    return getPrimary3();
-  }
-
-  /**
-   * Returns the color used to display user text.  The default implementation
-   * returns the color from {@link #getBlack()}.
-   *
-   * @return The color used to display user text.
-   */
-  public ColorUIResource getUserTextColor()
-  {
-    return getBlack();
-  }
-
-  /**
-   * Returns the window background color.  The default implementation returns
-   * the color from {@link #getWhite()}.
-   *
-   * @return The window background color.
-   */
-  public ColorUIResource getWindowBackground()
-  {
-    return getWhite();
-  }
-
-  /**
-   * Returns the window title background color.  The default implementation
-   * returns the color from {@link #getPrimary3()}.
-   *
-   * @return The window title background color.
-   */
-  public ColorUIResource getWindowTitleBackground()
-  {
-    return getPrimary3();
-  }
-
-  /**
-   * Returns the window title foreground color.  The default implementation
-   * returns the color from {@link #getBlack()}.
-   *
-   * @return The window title foreground color.
-   */
-  public ColorUIResource getWindowTitleForeground()
-  {
-    return getBlack();
-  }
-
-  /**
-   * Returns the background color for an inactive window title.  The default
-   * implementation returns the color from {@link #getSecondary3()}.
-   *
-   * @return The background color for an inactive window title.
-   */
-  public ColorUIResource getWindowTitleInactiveBackground()
-  {
-    return getSecondary3();
-  }
-
-  /**
-   * Returns the foreground color for an inactive window title.  The default
-   * implementation returns the color from {@link #getBlack()}.
-   *
-   * @return The foreground color for an inactive window title.
-   */
-  public ColorUIResource getWindowTitleInactiveForeground()
-  {
-    return getBlack();
-  }
-
-  /**
-   * Returns the color used for black.
-   *
-   * @return The color used for black.
-   */
-  protected ColorUIResource getBlack()
-  {
-    return BLACK;
-  }
-
-  /**
-   * Returns the color used for white.
-   *
-   * @return The color used for white.
-   */
-  protected ColorUIResource getWhite()
-  {
-    return WHITE;
-  }
-
-  /**
-   * Returns the first primary color for this theme.
-   *
-   * @return The first primary color.
-   */
-  protected abstract ColorUIResource getPrimary1();
-
-  /**
-   * Returns the second primary color for this theme.
-   *
-   * @return The second primary color.
-   */
-  protected abstract ColorUIResource getPrimary2();
-
-  /**
-   * Returns the third primary color for this theme.
-   *
-   * @return The third primary color.
-   */
-  protected abstract ColorUIResource getPrimary3();
-
-  /**
-   * Returns the first secondary color for this theme.
-   *
-   * @return The first secondary color.
-   */
-  protected abstract ColorUIResource getSecondary1();
-
-  /**
-   * Returns the second secondary color for this theme.
-   *
-   * @return The second secondary color.
-   */
-  protected abstract ColorUIResource getSecondary2();
-
-  /**
-   * Returns the third secondary color for this theme.
-   *
-   * @return The third secondary color.
-   */
-  protected abstract ColorUIResource getSecondary3();
-
-  /**
-   * Returns the font used for text on controls.
-   *
-   * @return The font used for text on controls.
-   */
-  public abstract FontUIResource getControlTextFont();
-
-  /**
-   * Returns the font used for text in menus.
-   *
-   * @return The font used for text in menus.
-   */
-  public abstract FontUIResource getMenuTextFont();
-
-  /**
-   * Returns the font used for sub text.
-   *
-   * @return The font used for sub text.
-   */
-  public abstract FontUIResource getSubTextFont();
-
-  /**
-   * Returns the font used for system text.
-   *
-   * @return The font used for system text.
-   */
-  public abstract FontUIResource getSystemTextFont();
-
-  /**
-   * Returns the font used for user text.
-   *
-   * @return The font used for user text.
-   */
-  public abstract FontUIResource getUserTextFont();
-
-  /**
-   * Returns the font used for window titles.
-   *
-   * @return The font used for window titles.
-   */
-  public abstract FontUIResource getWindowTitleFont();
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalToggleButtonUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalToggleButtonUI.java
deleted file mode 100644
index 2dacd7f..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalToggleButtonUI.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/* MetalToggleButtonUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-
-import javax.swing.AbstractButton;
-import javax.swing.ButtonModel;
-import javax.swing.JComponent;
-import javax.swing.JToggleButton;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.UIResource;
-import javax.swing.plaf.basic.BasicButtonUI;
-import javax.swing.plaf.basic.BasicToggleButtonUI;
-
-/**
- * A UI delegate for the {@link JToggleButton} component.
- */
-public class MetalToggleButtonUI
-  extends BasicToggleButtonUI
-{
-
-  /** The color for the focus border. */
-  protected Color focusColor;
-
-  /** The color that indicates a selected button. */
-  protected Color selectColor;
-
-  /** The color for disabled button labels. */
-  protected Color disabledTextColor;
-
-  /**
-   * Returns a new instance of <code>MetalToggleButtonUI</code>.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return A new instance of <code>MetalToggleButtonUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalToggleButtonUI();
-  }
-
-  /**
-   * Constructs a new instance of <code>MetalToggleButtonUI</code>.
-   */
-  public MetalToggleButtonUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns the color for the focus border.
-   *
-   * @return the color for the focus border
-   */
-  protected Color getFocusColor()
-  {
-    return focusColor;
-  }
-
-  /**
-   * Returns the color that indicates a selected button.
-   *
-   * @return the color that indicates a selected button
-   */
-  protected Color getSelectColor()
-  {
-    return selectColor;
-  }
-
-  /**
-   * Returns the color for the text label of disabled buttons.  The value
-   * is initialised in the {@link #installDefaults(AbstractButton)} method
-   * by reading the <code>ToggleButton.disabledText</code> item from the UI
-   * defaults.
-   *
-   * @return The color for the text label of disabled buttons.
-   */
-  protected Color getDisabledTextColor()
-  {
-    return disabledTextColor;
-  }
-
-  /**
-   * Updates the button with the defaults for this look and feel.
-   *
-   * @param b  the button.
-   */
-  public void installDefaults(AbstractButton b)
-  {
-    super.installDefaults(b);
-    focusColor = UIManager.getColor(getPropertyPrefix() + "focus");
-    selectColor = UIManager.getColor(getPropertyPrefix() + "select");
-    disabledTextColor = UIManager.getColor(getPropertyPrefix() + "disabledText");
-  }
-
-  /**
-   * Paints the button background when it is pressed/selected.
-   *
-   * @param g  the graphics device.
-   * @param b  the button.
-   */
-  protected void paintButtonPressed(Graphics g, AbstractButton b)
-  {
-    if (b.isContentAreaFilled() && b.isOpaque())
-      {
-        Color saved = g.getColor();
-        Rectangle bounds = SwingUtilities.getLocalBounds(b);
-        g.setColor(selectColor);
-        g.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);
-        g.setColor(saved);
-      }
-  }
-
-  /**
-   * Paints the text for the button.
-   *
-   * As of JDK 1.4 this method is obsolete.
-   * Use {@link BasicButtonUI#paintText(java.awt.Graphics,
-   * javax.swing.AbstractButton, java.awt.Rectangle, java.lang.String)}.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   * @param textRect  the bounds for the text.
-   * @param text  the text.
-   *
-   */
-  protected void paintText(Graphics g, JComponent c, Rectangle textRect,
-                           String text)
-  {
-    Font savedFont = g.getFont();
-    Color savedColor = g.getColor();
-    g.setFont(c.getFont());
-    if (c.isEnabled())
-      g.setColor(c.getForeground());
-    else
-      g.setColor(disabledTextColor);
-    FontMetrics fm = g.getFontMetrics(c.getFont());
-    int ascent = fm.getAscent();
-    g.drawString(text, textRect.x, textRect.y + ascent);
-    g.setFont(savedFont);
-    g.setColor(savedColor);
-  }
-
-  /**
-   * Draws the focus highlight around the text and icon.
-   *
-   * @param g  the graphics device.
-   * @param b  the button.
-   */
-  protected void paintFocus(Graphics g, AbstractButton b, Rectangle viewRect,
-      Rectangle textRect, Rectangle iconRect)
-  {
-    if (!b.hasFocus())
-      return;
-    Color saved = g.getColor();
-    g.setColor(focusColor);
-    Rectangle fr = iconRect.union(textRect);
-    g.drawRect(fr.x - 1, fr.y - 1, fr.width + 1, fr.height + 1);
-    g.setColor(saved);
-  }
-
-  /**
-   * If the property <code>ToggleButton.gradient</code> is set, then a gradient
-   * is painted as background, otherwise the normal superclass behaviour is
-   * called.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    AbstractButton b = (AbstractButton) c;
-    ButtonModel m = b.getModel();
-    if (b.getBackground() instanceof UIResource
-        && b.isContentAreaFilled()
-        && b.isEnabled() && ! m.isArmed() && ! m.isPressed()
-        && UIManager.get(getPropertyPrefix() + "gradient") != null)
-      {
-        MetalUtils.paintGradient(g, 0, 0, c.getWidth(), c.getHeight(),
-                                 SwingConstants.VERTICAL,
-                                 getPropertyPrefix() + "gradient");
-        paint(g, c);
-      }
-    else
-      super.update(g, c);
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalToolBarUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalToolBarUI.java
deleted file mode 100644
index 64e679c..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalToolBarUI.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/* MetalToolBarUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Graphics;
-import java.awt.Point;
-import java.awt.event.ContainerListener;
-import java.awt.event.MouseEvent;
-
-import java.beans.PropertyChangeListener;
-
-import javax.swing.JComponent;
-import javax.swing.JToolBar;
-import javax.swing.SwingConstants;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
-import javax.swing.event.MouseInputListener;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicToolBarUI;
-
-/**
- * A UI delegate for the {@link JToolBar} component.
- */
-public class MetalToolBarUI extends BasicToolBarUI
-{
-
-  /**
-   * A listener (no longer used) that responds when components are added to or
-   * removed from the {@link JToolBar}.  The required behaviour is now
-   * handled in the super class.
-   *
-   * @see MetalToolBarUI#createContainerListener()
-   */
-  protected class MetalContainerListener
-    extends BasicToolBarUI.ToolBarContListener
-  {
-    /**
-     * Creates a new instance.
-     */
-    protected MetalContainerListener()
-    {
-      // Nothing to do here.
-    }
-  }
-
-  /**
-   * A listener (no longer used) that responds to property change events in a
-   * {@link JToolBar} component.  The required behaviour is now handled in the
-   * super class.
-   *
-   * @see MetalToolBarUI#createRolloverListener()
-   */
-  protected class MetalRolloverListener
-    extends BasicToolBarUI.PropertyListener
-  {
-    /**
-     * Creates a new instance.
-     */
-    protected MetalRolloverListener()
-    {
-      // Nothing to do here.
-    }
-  }
-
-  /**
-   * The container listener (an implementation specific field, according to the
-   * spec, and not used in GNU Classpath).
-   */
-  protected ContainerListener contListener;
-
-  /**
-   * The rollover listener (an implementation specific field, according to the
-   * spec, and not used in GNU Classpath).
-   */
-  protected PropertyChangeListener rolloverListener;
-
-  /**
-   * Creates a new instance of this UI delegate.
-   */
-  public MetalToolBarUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a new instance of <code>MetalToolBarUI</code>.
-   *
-   * @param component  the component for which we return an UI instance
-   *
-   * @return A new instance of <code>MetalToolBarUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalToolBarUI();
-  }
-
-  /**
-   * Returns <code>null</code> as permitted by recent versions of the API
-   * specification.  Originally it seems this method returned a new instance of
-   * {@link MetalRolloverListener}, but this is now redundant.
-   *
-   * @return <code>null</code>.
-   */
-  protected PropertyChangeListener createRolloverListener()
-  {
-    return null;
-  }
-
-  /**
-   * Returns <code>null</code> as permitted by recent versions of the API
-   * specification.  Originally it seems this method returned a new instance of
-   * {@link MetalContainerListener}, but this is now redundant.
-   *
-   * @return <code>null</code>.
-   */
-  protected ContainerListener createContainerListener()
-  {
-    return null;
-  }
-
-  /**
-   * Returns a border with no rollover effect for buttons in the tool bar.
-   *
-   * @return A border.
-   *
-   * @see MetalBorders#getToolbarButtonBorder()
-   */
-  protected Border createNonRolloverBorder()
-  {
-    return MetalBorders.getToolbarButtonBorder();
-  }
-
-  /**
-   * Sets the offset for the window used for dragging the toolbar.
-   * It is set as long as the window is not null (it has been installed).
-   */
-  protected void setDragOffset(Point p)
-  {
-    if (dragWindow != null)
-      dragWindow.setOffset(p);
-  }
-
-  /**
-   * Creates and returns an instance of MetalDockingListener.
-   *
-   * @return an instance of MetalDockingListener.
-   */
-  protected MouseInputListener createDockingListener()
-  {
-    return new MetalDockingListener(toolBar);
-  }
-
-  /**
-   * This is the MouseHandler class that allows the user to drag the JToolBar
-   * in and out of the parent and dock it if it can.
-   */
-  protected class MetalDockingListener extends BasicToolBarUI.DockingListener
-  {
-    /**
-     * Creates a new DockingListener object.
-     *
-     * @param t The JToolBar this DockingListener is being used for.
-     */
-    public MetalDockingListener(JToolBar t)
-    {
-      super(t);
-    }
-
-    /**
-     * This method is called when the mouse is pressed in the JToolBar. If the
-     * press doesn't occur in a place where it causes the JToolBar to be
-     * dragged, it returns. Otherwise, it starts a drag session.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mousePressed(MouseEvent e)
-    {
-      super.mousePressed(e);
-      setDragOffset(new Point(e.getX(), e.getY()));
-    }
-
-    /**
-     * This method is called when the mouse is dragged. It delegates the drag
-     * painting to the dragTo method.
-     *
-     * @param e The MouseEvent.
-     */
-    public void mouseDragged(MouseEvent e)
-    {
-      // Does not do anything differently than dragging
-      // BasicToolBarUI.DockingListener
-      super.mouseDragged(e);
-    }
-  }
-
-  /**
-   * Installs the UI on the toolbar. This calls super and sets the rollover
-   * property according to the <code>UIManager</code> property
-   * &quot;ToolBar.isRollover&quot;.
-   *
-   * @param c the component to install the UI on
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    if (c instanceof JToolBar)
-      {
-        JToolBar tb = (JToolBar) c;
-        tb.setRollover(UIManager.getBoolean("ToolBar.isRollover"));
-      }
-  }
-
-  /**
-   * Uninstalls the UI from the toolbar. This calls super and resets the
-   * rollover property.
-   *
-   * @param c the component to uninstall the UI from
-   */
-  public void uninstallUI(JComponent c)
-  {
-    if (c instanceof JToolBar)
-      {
-        JToolBar tb = (JToolBar) c;
-        tb.setRollover(false);
-      }
-    super.uninstallUI(c);
-  }
-
-  /**
-   * Paints the background of the component if necessary and then calls
-   * <code>paint(g, c)</code>.
-   *
-   * This is overridden to implement the OceanTheme gradient when an OceanTheme
-   * is installed.
-   *
-   * @param g the graphics to use
-   * @param c the component to paint.
-   *
-   * @since 1.5
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    // TODO: Sun's implementation uses the MenuBar.gradient here.
-    // I would consider this a bug, but implement it like this
-    // for compatibility.
-    if (MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme
-        && UIManager.get("MenuBar.gradient") != null)
-      {
-        if (c.isOpaque())
-          {
-            MetalUtils.paintGradient(g, 0, 0, c.getWidth(), c.getHeight(),
-                                     SwingConstants.VERTICAL,
-                                     "MenuBar.gradient");
-          }
-        paint(g, c);
-      }
-    else
-      {
-        super.update(g, c);
-      }
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalToolTipUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalToolTipUI.java
deleted file mode 100644
index 742ff22..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalToolTipUI.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/* MetalToolTipUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.event.InputEvent;
-import java.awt.event.KeyEvent;
-
-import javax.swing.AbstractButton;
-import javax.swing.JComponent;
-import javax.swing.JMenuItem;
-import javax.swing.JToolTip;
-import javax.swing.KeyStroke;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.UIResource;
-import javax.swing.plaf.basic.BasicToolTipUI;
-
-/**
- * A UI delegate for the {@link JToolTip} component.
- */
-public class MetalToolTipUI
-  extends BasicToolTipUI
-{
-  /**
-   * The amount of space between the tool tip text and the accelerator
-   * description (if visible).
-   */
-  public static final int padSpaceBetweenStrings = 12;
-
-  /** The shared UI instance. */
-  private static MetalToolTipUI instance;
-
-  /** A flag controlling the visibility of the accelerator (if there is one). */
-  private boolean isAcceleratorHidden;
-
-  /** A string representing the accelerator key for the component. */
-  private String acceleratorString;
-
-  /**
-   * The delimiter for the accelerator string.
-   */
-  private String acceleratorDelimiter;
-
-  /** The font for the accelerator string. */
-  private Font acceleratorFont;
-
-  /** The color for the accelerator string. */
-  private Color acceleratorForeground;
-
-  /** The active border. */
-  private Border activeBorder;
-
-  /** The inactive border. */
-  private Border inactiveBorder;
-
-  /**
-   * Constructs a new instance of <code>MetalToolTipUI</code>.
-   */
-  public MetalToolTipUI()
-  {
-    super();
-    activeBorder = UIManager.getBorder("ToolTip.border");
-    inactiveBorder = UIManager.getBorder("ToolTip.borderInactive");
-    isAcceleratorHidden = UIManager.getBoolean("ToolTip.hideAccelerator");
-    acceleratorFont = UIManager.getFont("MenuItem.acceleratorFont");
-    acceleratorForeground = UIManager.getColor("MenuItem.acceleratorForeground");
-    acceleratorDelimiter = UIManager.getString("MenuItem.acceleratorDelimiter");
-  }
-
-  /**
-   * Returns a shared instance of the <code>MetalToolTipUI</code> class.
-   * Although this UI delegate does maintain state information, there is never
-   * more than one tool tip visible, so it is OK to use a shared instance.
-   *
-   * @param component  the component (a {@link JToolTip}).
-   *
-   * @return A shared instance of the <code>MetalToolTipUI</code> class.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    if (instance == null)
-      instance = new MetalToolTipUI();
-    return instance;
-  }
-
-  /**
-   * Returns a string representing the accelerator key (if there is one) for
-   * the component that the tool tip belongs to.
-   *
-   * @return A string representing the accelerator key.
-   */
-  public String getAcceleratorString()
-  {
-    return acceleratorString;
-  }
-
-  /**
-   * Installs the UI for the specified component (a {@link JToolTip}).
-   *
-   * @param c  the {@link JToolTip} component.
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-    Border existingBorder = c.getBorder();
-    if (existingBorder == null || existingBorder instanceof UIResource)
-      {
-        if (c.isEnabled())
-          c.setBorder(activeBorder);
-        else
-          c.setBorder(inactiveBorder);
-      }
-  }
-
-  /**
-   * Clears the defaults set in {@link #installUI(JComponent)}.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    super.uninstallUI(c);
-    if (c.getBorder() instanceof UIResource)
-      c.setBorder(null);
-  }
-
-  /**
-   * Returns <code>true</code> if the accelerator string is hidden, and
-   * <code>false</code> otherwise.  This setting is controlled by the
-   * <code>ToolTip.hideAccelerator</code> entry in the UI defaults table.
-   *
-   * @return A boolean.
-   */
-  protected boolean isAcceleratorHidden()
-  {
-    return isAcceleratorHidden;
-  }
-
-  /**
-   * Returns the preferred size for the {@link JToolTip} component.
-   *
-   * @param c  the component (a {@link JToolTip}).
-   *
-   * @return The preferred size.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension d = super.getPreferredSize(c);
-    String acc = getAcceleratorString();
-    if (acc != null && ! acc.equals(""))
-      {
-        FontMetrics fm = c.getFontMetrics(c.getFont());
-        d.width += fm.stringWidth(acc);
-      }
-    return d;
-  }
-
-  /**
-   * Paints the tool tip.
-   *
-   * @param g  the graphics context.
-   * @param c  the {@link JToolTip} component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    super.paint(g, c);
-    // Somehow paint accelerator. Keep care for possible HTML rendering.
-  }
-
-  /**
-   * Returns a string representing the accelerator for the component, or
-   * <code>null</code> if the component has no accelerator.
-   *
-   * @param c  the component.
-   *
-   * @return A string representing the accelerator (possibly
-   *         <code>null</code>).
-   */
-  private String fetchAcceleratorString(JComponent c)
-  {
-    String result = null;
-    if (c instanceof JToolTip)
-      {
-        JToolTip toolTip = (JToolTip) c;
-        JComponent component = toolTip.getComponent();
-        KeyStroke ks = null;
-        int mne = 0;
-        if (component instanceof JMenuItem)
-          {
-            JMenuItem item = (JMenuItem) component;
-            ks = item.getAccelerator();
-            if (ks == null)
-                mne = item.getMnemonic();
-          }
-        else if (component instanceof AbstractButton)
-          {
-            AbstractButton button = (AbstractButton) component;
-            mne = button.getMnemonic();
-          }
-        if (mne > 0)
-          ks = KeyStroke.getKeyStroke(Character.toUpperCase((char) mne),
-                InputEvent.ALT_MASK, false);
-        if (ks != null)
-          result = acceleratorToString(ks);
-      }
-    return result;
-  }
-
-  /**
-   * Returns a string representing an accelerator.
-   *
-   * @param accelerator  the accelerator (<code>null</code> not permitted).
-   *
-   * @return A string representing an accelerator.
-   */
-  private String acceleratorToString(KeyStroke accelerator)
-  {
-    // convert keystroke into string format
-    String modifiersText = "";
-    int modifiers = accelerator.getModifiers();
-    char keyChar = accelerator.getKeyChar();
-    int keyCode = accelerator.getKeyCode();
-
-    if (modifiers != 0)
-      modifiersText = KeyEvent.getKeyModifiersText(modifiers)
-          + acceleratorDelimiter;
-
-    if (keyCode == KeyEvent.VK_UNDEFINED)
-      return modifiersText + keyChar;
-    else
-      return modifiersText + KeyEvent.getKeyText(keyCode);
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalTreeUI.java b/libjava/classpath/javax/swing/plaf/metal/MetalTreeUI.java
deleted file mode 100644
index bdfa2d4..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalTreeUI.java
+++ /dev/null
@@ -1,317 +0,0 @@
-/* MetalTreeUI.java
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.metal;
-
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Rectangle;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.JComponent;
-import javax.swing.JTree;
-import javax.swing.UIManager;
-import javax.swing.tree.TreePath;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicTreeUI;
-
-/**
- * A UI delegate for the {@link JTree} component.
- */
-public class MetalTreeUI extends BasicTreeUI
-{
-  /**
-   * Listens for property changes of the line style and updates the
-   * internal setting.
-   */
-  private class LineStyleListener
-    implements PropertyChangeListener
-  {
-
-    public void propertyChange(PropertyChangeEvent e)
-    {
-      if (e.getPropertyName().equals(LINE_STYLE_PROPERTY))
-        decodeLineStyle(e.getNewValue());
-    }
-
-  }
-
-  /**
-   * The key to the lineStyle client property.
-   */
-  private static final String LINE_STYLE_PROPERTY = "JTree.lineStyle";
-
-  /**
-   * The property value indicating no line style.
-   */
-  private static final String LINE_STYLE_VALUE_NONE = "None";
-
-  /**
-   * The property value indicating angled line style.
-   */
-  private static final String LINE_STYLE_VALUE_ANGLED = "Angled";
-
-  /**
-   * The property value indicating horizontal line style.
-   */
-  private static final String LINE_STYLE_VALUE_HORIZONTAL = "Horizontal";
-
-  /**
-   * The line style for None.
-   */
-  private static final int LINE_STYLE_NONE = 0;
-
-  /**
-   * The line style for Angled.
-   */
-  private static final int LINE_STYLE_ANGLED = 1;
-
-  /**
-   * The line style for Horizontal.
-   */
-  private static final int LINE_STYLE_HORIZONTAL = 2;
-
-  /**
-   * The current line style.
-   */
-  private int lineStyle;
-
-  /**
-   * Listens for changes on the line style property and updates the
-   * internal settings.
-   */
-  private PropertyChangeListener lineStyleListener;
-
-  /**
-   * Constructs a new instance of <code>MetalTreeUI</code>.
-   */
-  public MetalTreeUI()
-  {
-    super();
-  }
-
-  /**
-   * Returns a new instance of <code>MetalTreeUI</code>.
-   *
-   * @param component the component for which we return an UI instance
-   *
-   * @return A new instance of <code>MetalTreeUI</code>.
-   */
-  public static ComponentUI createUI(JComponent component)
-  {
-    return new MetalTreeUI();
-  }
-
-  /**
-   * The horizontal element of legs between nodes starts at the right of the
-   * left-hand side of the child node by default. This method makes the
-   * leg end before that.
-   */
-  protected int getHorizontalLegBuffer()
-  {
-    return super.getHorizontalLegBuffer();
-  }
-
-  /**
-   * Configures the specified component appropriate for the look and feel.
-   * This method is invoked when the ComponentUI instance is being installed
-   * as the UI delegate on the specified component. This method should completely
-   * configure the component for the look and feel, including the following:
-   * 1. Install any default property values for color, fonts, borders, icons,
-   *    opacity, etc. on the component. Whenever possible, property values
-   *    initialized by the client program should not be overridden.
-   * 2. Install a LayoutManager on the component if necessary.
-   * 3. Create/add any required sub-components to the component.
-   * 4. Create/install event listeners on the component.
-   * 5. Create/install a PropertyChangeListener on the component in order
-   *    to detect and respond to component property changes appropriately.
-   * 6. Install keyboard UI (mnemonics, traversal, etc.) on the component.
-   * 7. Initialize any appropriate instance data.
-   */
-  public void installUI(JComponent c)
-  {
-    super.installUI(c);
-
-    Object lineStyleProp = c.getClientProperty(LINE_STYLE_PROPERTY);
-    decodeLineStyle(lineStyleProp);
-    if (lineStyleListener == null)
-      lineStyleListener = new LineStyleListener();
-    c.addPropertyChangeListener(lineStyleListener);
-  }
-
-  /**
-   * Reverses configuration which was done on the specified component during
-   * installUI. This method is invoked when this UIComponent instance is being
-   * removed as the UI delegate for the specified component. This method should
-   * undo the configuration performed in installUI, being careful to leave the
-   * JComponent instance in a clean state (no extraneous listeners,
-   * look-and-feel-specific property objects, etc.). This should include
-   * the following:
-   * 1. Remove any UI-set borders from the component.
-   * 2. Remove any UI-set layout managers on the component.
-   * 3. Remove any UI-added sub-components from the component.
-   * 4. Remove any UI-added event/property listeners from the component.
-   * 5. Remove any UI-installed keyboard UI from the component.
-   * 6. Nullify any allocated instance data objects to allow for GC.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    super.uninstallUI(c);
-    if (lineStyleListener != null)
-      c.removePropertyChangeListener(lineStyleListener);
-    lineStyleListener = null;
-  }
-
-  /**
-   * This function converts between the string passed into the client
-   * property and the internal representation (currently an int).
-   *
-   * @param lineStyleFlag - String representation
-   */
-  protected void decodeLineStyle(Object lineStyleFlag)
-  {
-    if (lineStyleFlag == null || lineStyleFlag.equals(LINE_STYLE_VALUE_ANGLED))
-      lineStyle = LINE_STYLE_ANGLED;
-    else if (lineStyleFlag.equals(LINE_STYLE_VALUE_HORIZONTAL))
-      lineStyle = LINE_STYLE_HORIZONTAL;
-    else if (lineStyleFlag.equals(LINE_STYLE_VALUE_NONE))
-      lineStyle = LINE_STYLE_NONE;
-    else
-      lineStyle = LINE_STYLE_ANGLED;
-  }
-
-  /**
-   * Checks if the location is in expand control.
-   *
-   * @param row - current row
-   * @param rowLevel - current level
-   * @param mouseX - current x location of the mouse click
-   * @param mouseY - current y location of the mouse click
-   */
-  protected boolean isLocationInExpandControl(int row, int rowLevel,
-                                          int mouseX, int mouseY)
-  {
-    return super.isLocationInExpandControl(tree.getPathForRow(row),
-                                           mouseX, mouseY);
-  }
-
-  /**
-   * Paints the specified component appropriate for the look and feel.
-   * This method is invoked from the ComponentUI.update method when the
-   * specified component is being painted. Subclasses should override this
-   * method and use the specified Graphics object to render the content of
-   * the component.
-   *
-   * @param g - the current graphics configuration.
-   * @param c - the current component to draw
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    // Calls BasicTreeUI's paint since it takes care of painting all
-    // types of icons.
-    super.paint(g, c);
-
-    if (lineStyle == LINE_STYLE_HORIZONTAL)
-      paintHorizontalSeparators(g, c);
-  }
-
-  /**
-   * Paints the horizontal separators.
-   *
-   * @param g - the current graphics configuration.
-   * @param c - the current component to draw
-   */
-  protected void paintHorizontalSeparators(Graphics g, JComponent c)
-  {
-    g.setColor(UIManager.getColor("Tree.line"));
-    Rectangle clip = g.getClipBounds();
-    int row0 = getRowForPath(tree, getClosestPathForLocation(tree, 0, clip.y));
-    int row1 =
-      getRowForPath(tree, getClosestPathForLocation(tree, 0,
-                                                    clip.y + clip.height - 1));
-    if (row0 >= 0 && row1 >= 0)
-      {
-        for (int i = row0; i <= row1; i++)
-          {
-            TreePath p = getPathForRow(tree, i);
-            if (p != null && p.getPathCount() == 2)
-              {
-                Rectangle r = getPathBounds(tree, getPathForRow(tree, i));
-                if (r != null)
-                  {
-                    g.drawLine(clip.x, r.y, clip.x + clip.width, r.y);
-                  }
-              }
-          }
-      }
-  }
-
-
-  /**
-   * Paints the vertical part of the leg. The receiver should NOT modify
-   * clipBounds, insets.
-   *
-   * @param g - the current graphics configuration.
-   * @param clipBounds -
-   * @param insets -
-   * @param path - the current path
-   */
-  protected void paintVerticalPartOfLeg(Graphics g, Rectangle clipBounds,
-                                    Insets insets, TreePath path)
-  {
-    if (lineStyle == LINE_STYLE_ANGLED)
-      super.paintVerticalPartOfLeg(g, clipBounds, insets, path);
-  }
-
-  /**
-   * Paints the horizontal part of the leg. The receiver should NOT \
-   * modify clipBounds, or insets.
-   * NOTE: parentRow can be -1 if the root is not visible.
-   */
-  protected void paintHorizontalPartOfLeg(Graphics g, Rectangle clipBounds,
-                                        Insets insets, Rectangle bounds,
-                                        TreePath path, int row,
-                                        boolean isExpanded, boolean hasBeenExpanded,
-                                        boolean isLeaf)
-  {
-    if (lineStyle == LINE_STYLE_ANGLED)
-      super.paintHorizontalPartOfLeg(g, clipBounds, insets, bounds, path, row,
-                                     isExpanded, hasBeenExpanded, isLeaf);
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/MetalUtils.java b/libjava/classpath/javax/swing/plaf/metal/MetalUtils.java
deleted file mode 100644
index 247f922..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/MetalUtils.java
+++ /dev/null
@@ -1,597 +0,0 @@
-/* MetalUtils.java
-Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.metal;
-
-import gnu.classpath.SystemProperties;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.GradientPaint;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.TexturePaint;
-import java.awt.geom.Rectangle2D;
-import java.awt.image.BufferedImage;
-import java.util.List;
-
-import javax.swing.SwingConstants;
-import javax.swing.UIManager;
-
-/**
- * Some utility and helper methods for the Metal Look &amp; Feel.
- *
- * @author Roman Kennke (roman@kennke.org)
- */
-class MetalUtils
-{
-
-  /**
-   * The typical metal pattern for use with Graphics2D.
-   */
-  static BufferedImage pattern2D;
-
-  /**
-   * The light color to draw the pattern.
-   */
-  static Color lightColor;
-
-  /**
-   * The dark color to draw to draw the pattern.
-   */
-  static Color darkColor;
-
-  /**
-   * Fills a rectangle with the typical Metal pattern.
-   *
-   * @param g the <code>Graphics</code> context to use
-   * @param x the X coordinate of the upper left corner of the rectangle to
-   *     fill
-   * @param y the Y coordinate of the upper left corner of the rectangle to
-   *     fill
-   * @param w the width of the rectangle to fill
-   * @param h the height of the rectangle to fill
-   * @param light the light color to use
-   * @param dark the dark color to use
-   */
-  static void fillMetalPattern(Component c, Graphics g, int x, int y, int w, int h,
-                                Color light, Color dark)
-  {
-    if (g instanceof Graphics2D
-      && SystemProperties.getProperty("gnu.javax.swing.noGraphics2D") == null)
-      fillMetalPattern2D((Graphics2D) g, x, y, w, h, light, dark);
-    else
-      {
-        int xOff = 0;
-        for (int mY = y; mY < (y + h); mY++)
-          {
-            // set color alternating with every line
-            if (((mY - y) % 2) == 0)
-              g.setColor(light);
-            else
-              g.setColor(dark);
-
-            for (int mX = x + xOff; mX < (x + w); mX += 4)
-              {
-                g.fillRect(mX, mY, 1, 1);
-              }
-
-            // increase x offset
-            xOff++;
-            if (xOff > 3)
-              xOff = 0;
-          }
-        }
-  }
-
-  /**
-   * Fills a rectangle with the typical Metal pattern using Java2D.
-   *
-   * @param g2d the <code>Graphics2D</code> context to use
-   * @param x the X coordinate of the upper left corner of the rectangle to
-   *     fill
-   * @param y the Y coordinate of the upper left corner of the rectangle to
-   *     fill
-   * @param w the width of the rectangle to fill
-   * @param h the height of the rectangle to fill
-   */
-  static void fillMetalPattern2D(Graphics2D g2d,  int x, int y, int w, int h,
-                                 Color light, Color dark)
-  {
-    if (pattern2D == null || !darkColor.equals(dark) || !lightColor.equals(light))
-      initializePattern(light, dark);
-
-    // Prepare the texture.
-    TexturePaint texture =
-      new TexturePaint(pattern2D, new Rectangle2D.Double(0., 0., 4., 4.));
-    g2d.setPaint(texture);
-    g2d.fillRect(x, y, w, h);
-  }
-
-  /**
-   * Initializes the pattern image.
-   */
-  static void initializePattern(Color light, Color dark)
-  {
-    pattern2D = new BufferedImage(4, 4, BufferedImage.TYPE_INT_ARGB);
-    lightColor = light;
-    darkColor = dark;
-    Graphics g = pattern2D.getGraphics();
-    g.setColor(light);
-    g.fillRect(0, 0, 1, 1);
-    g.fillRect(2, 2, 1, 1);
-    g.setColor(dark);
-    g.fillRect(1, 1, 1, 1);
-    g.fillRect(3, 3, 1, 1);
-    g.dispose();
-  }
-
-  /**
-   * Paints the typical Metal gradient. See {@link #paintGradient(Graphics,
-   * int, int, int, int, float, float, Color, Color, Color, int, int[][])}
-   * for more details.
-   *
-   * This variant paints a gradient without a mask.
-   *
-   * @param g the graphics context to use
-   * @param x the X coordinate of the upper left corner of the rectangle
-   * @param y the Y coordinate of the upper left corner of the rectangle
-   * @param w the width of the rectangle
-   * @param h the height of the rectangle
-   * @param dir the direction of the gradient, either
-   * @param uiProp the key of the UIManager property that has the parameters
-   */
-  static void paintGradient(Graphics g, int x, int y, int w, int h,
-                            int dir, String uiProp)
-  {
-    paintGradient(g, x, y, w, h, dir, uiProp, null);
-  }
-
-  /**
-   * Paints the typical Metal gradient. See {@link #paintGradient(Graphics,
-   * int, int, int, int, float, float, Color, Color, Color, int, int[][])}
-   * for more details.
-   *
-   * The parameters are fetched from the UIManager using the key
-   * <code>uiProp</code>. The value is expected to be a {@link List} that
-   * contains 4 values: two {@link Double}s and 3 {@link Color} object that
-   * together make up the parameters passed to the painting method.
-   *
-   * @param g the graphics context to use
-   * @param x the X coordinate of the upper left corner of the rectangle
-   * @param y the Y coordinate of the upper left corner of the rectangle
-   * @param w the width of the rectangle
-   * @param h the height of the rectangle
-   * @param dir the direction of the gradient, either
-   * @param uiProp the key of the UIManager property that has the parameters
-   * @param mask the mask that should be used when painting the gradient as
-   *        described above
-   */
-  static void paintGradient(Graphics g, int x, int y, int w, int h,
-                            int dir, String uiProp, int[][] mask)
-  {
-    List params = (List) UIManager.get(uiProp);
-    float g1 = ((Float) params.get(0)).floatValue();
-    float g2 = ((Float) params.get(1)).floatValue();
-    Color c1 = (Color) params.get(2);
-    Color c2 = (Color) params.get(3);
-    Color c3 = (Color) params.get(4);
-    paintGradient(g, x, y, w, h, g1, g2, c1, c2, c3, dir, mask);
-  }
-
-  /**
-   * Paints the typical Metal gradient. The gradient is painted as follows:
-   * <pre>
-   *
-   * +-------+--------+--------+-----------------------------+
-   * |       |        |        |                             |
-   * +-------+--------+--------+-----------------------------+
-   * c1  ->  c2  --   c2  ->   c1         -------->          c3
-   * < -g1- > < -g2- > < -g1- >
-   * </pre>
-   *
-   * There are 4 distinct areas in this gradient:
-   * <ol>
-   * <li>A gradient from color 1 to color 2 with the relative width specified
-   *   by <code>g1</code></li>
-   * <li>A solid area with the color 2 and the relative width specified by
-   *  <code>g2</code></li>
-   * <li>A gradient from color 2 to color 1 with the relative width specified
-   *   by <code>g1</code></li>
-   *
-   * The <code>mask</code> parameter is an array if int arrays, where the first
-   * index specifies the row (in the gradient direction), and the second index
-   * is the starting and end offset of that line. This way you can specify a
-   * mask that should be laid over the gradient for paintint non-rectangular
-   * gradients. The following example should demonstrate this for painting
-   * a circular shaped gradient (note that the first and last line should not
-   * be drawn at all, they are only here to show the circular shape more
-   * clearly). Everything <em>inside</code> the surrounded area is filled by
-   * the gradient:
-   *
-   * <pre>
-   *     012345678
-   *         xxx
-   * 0      x   x         { {4, 7},
-   * 1     x     x          {3, 8},
-   * 2     x     x          {3, 8},
-   * 3     x     x          {3, 8},
-   * 4      x   x           {4, 7} }
-   *         xxx
-   * </pre>
-   *
-   * The <code>mask</code> array is expected to have <code>w</code> or
-   * <code>h</code> array elements, depending on the direction.
-   *
-   * If the <code>mask</code> parameter is null, then the gradient is painted
-   * without a mask.
-   *
-   * @param g the graphics context to use
-   * @param x the X coordinate of the upper left corner of the rectangle
-   * @param y the Y coordinate of the upper left corner of the rectangle
-   * @param w the width of the rectangle
-   * @param h the height of the rectangle
-   * @param g1 the relative width of the c1->c2 gradients
-   * @param g2 the relative width of the c2 solid area
-   * @param c1 the color 1
-   * @param c2 the color 2
-   * @param c3 the color 3
-   * @param dir the direction of the gradient, either
-   *        {@link SwingConstants#HORIZONTAL} or {@link SwingConstants#VERTICAL}
-   * @param mask the mask that should be used when painting the gradient as
-   *        described above
-   */
-  static void paintGradient(Graphics g, int x, int y, int w, int h, float g1,
-                            float g2, Color c1, Color c2, Color c3, int dir,
-                            int[][] mask)
-  {
-    if (dir == SwingConstants.HORIZONTAL)
-      paintHorizontalGradient(g, x, y, w, h, g1, g2, c1, c2, c3, mask);
-    else
-      paintVerticalGradient(g, x, y, w, h, g1, g2, c1, c2, c3, mask);
-  }
-
-  /**
-   * Paints a horizontal gradient. See {@link #paintGradient(Graphics, int,
-   * int, int, int, float, float, Color, Color, Color, int, int[][])}
-   * for details.
-   *
-   * @param x the X coordinate of the upper left corner of the rectangle
-   * @param y the Y coordinate of the upper left corner of the rectangle
-   * @param w the width of the rectangle
-   * @param h the height of the rectangle
-   * @param g1 the relative width of the c1->c2 gradients
-   * @param g2 the relative width of the c2 solid area
-   * @param c1 the color 1
-   * @param c2 the color 2
-   * @param c3 the color 3
-   * @param mask the mask that should be used when painting the gradient as
-   *        described above
-   */
-  static void paintHorizontalGradient(Graphics g, int x, int y, int w, int h,
-                                      float g1, float g2, Color c1, Color c2,
-                                      Color c3, int[][] mask)
-  {
-
-    if (g instanceof Graphics2D
-        && SystemProperties.getProperty("gnu.javax.swing.noGraphics2D") == null)
-      {
-        paintHorizontalGradient2D((Graphics2D) g, x, y, w, h, g1, g2, c1, c2,
-                                  c3, mask);
-        return;
-      }
-
-    // Calculate the coordinates.
-    int y0 = y;
-    int y1 = y + h;
-    // The size of the first gradient area (c1->2).
-    int w1 = (int) (w * g1);
-    // The size of the solid c2 area.
-    int w2 = (int) (w * g2);
-    int x0 = x;
-    int x1 = x0 + w1;
-    int x2 = x1 + w2;
-    int x3 = x2 + w1;
-    int x4 = x + w;
-
-    // Paint first gradient area (c1->c2).
-    int xc; // The current y coordinate.
-    for (xc = x0; xc < x1; xc++)
-      {
-        if (xc > x + w)
-          break;
-
-        // Perform color interpolation;
-        double factor = (xc - x0) / (double) w1;
-        int rInt = (int) ((c2.getRed() - c1.getRed()) * factor + c1.getRed());
-        int gInt = (int) ((c2.getGreen() - c1.getGreen()) * factor
-            + c1.getGreen());
-        int bInt = (int) ((c2.getBlue() - c1.getBlue()) * factor
-            + c1.getBlue());
-        Color interpolated = new Color(rInt, gInt, bInt);
-        g.setColor(interpolated);
-        if (mask != null)
-          {
-            y0 = mask[xc - x0][0] + y;
-            y1 = mask[xc - x0][1] + y;
-          }
-        g.fillRect(xc, y0, 1, y1 - y0);
-      }
-    // Paint solid c2 area.
-    g.setColor(c2);
-    if (mask == null)
-      {
-        g.fillRect(x1, y, x2 - x1, h);
-      }
-    else
-      {
-        for (xc = x1; xc < x2; xc++)
-          {
-            y0 = mask[xc - x0][0] + y;
-            y1 = mask[xc - x0][1] + y;
-            g.fillRect(xc, y0, 1, y1 - y0);
-          }
-      }
-
-    // Paint second gradient area (c2->c1).
-    for (xc = x2; xc < x3; xc++)
-      {
-        if (xc > x + w)
-          break;
-
-        // Perform color interpolation;
-        double factor = (xc - x2) / (double) w1;
-        int rInt = (int) ((c1.getRed() - c2.getRed()) * factor + c2.getRed());
-        int gInt = (int) ((c1.getGreen() - c2.getGreen()) * factor
-            + c2.getGreen());
-        int bInt = (int) ((c1.getBlue() - c2.getBlue()) * factor
-            + c2.getBlue());
-        Color interpolated = new Color(rInt, gInt, bInt);
-        g.setColor(interpolated);
-        if (mask != null)
-          {
-            y0 = mask[xc - x0][0] + y;
-            y1 = mask[xc - x0][1] + y;
-          }
-        g.fillRect(xc, y0, 1, y1 - y0);
-      }
-
-    // Paint third gradient area (c1->c3).
-    for (xc = x3; xc < x4; xc++)
-      {
-        if (xc > x + w)
-          break;
-
-        // Perform color interpolation;
-        double factor = (xc - x3) / (double) (x4 - x3);
-        int rInt = (int) ((c3.getRed() - c1.getRed()) * factor + c1.getRed());
-        int gInt = (int) ((c3.getGreen() - c1.getGreen()) * factor
-            + c1.getGreen());
-        int bInt = (int) ((c3.getBlue() - c1.getBlue()) * factor
-            + c1.getBlue());
-        Color interpolated = new Color(rInt, gInt, bInt);
-        g.setColor(interpolated);
-        if (mask != null)
-          {
-            y0 = mask[xc - x0][0] + y;
-            y1 = mask[xc - x0][1] + y;
-          }
-        g.drawLine(xc, y0, xc, y1);
-      }
-  }
-
-  /**
-   * Paints a vertical gradient. See {@link #paintGradient(Graphics, int, int,
-   * int, int, float, float, Color, Color, Color, int, int[][])} for details.
-   *
-   * @param x the X coordinate of the upper left corner of the rectangle
-   * @param y the Y coordinate of the upper left corner of the rectangle
-   * @param w the width of the rectangle
-   * @param h the height of the rectangle
-   * @param g1 the relative width of the c1->c2 gradients
-   * @param g2 the relative width of the c2 solid area
-   * @param c1 the color 1
-   * @param c2 the color 2
-   * @param c3 the color 3
-   * @param mask the mask that should be used when painting the gradient as
-   *        described above
-   */
-  static void paintVerticalGradient(Graphics g, int x, int y, int w, int h,
-                                    float g1, float g2, Color c1, Color c2,
-                                    Color c3, int[][] mask)
-  {
-    if (g instanceof Graphics2D
-        && SystemProperties.getProperty("gnu.javax.swing.noGraphics2D") == null)
-       {
-         paintVerticalGradient2D((Graphics2D) g, x, y, w, h, g1, g2, c1, c2,
-                                   c3, mask);
-         return;
-       }
-
-    // Calculate the coordinates.
-    int x0 = x;
-    int x1 = x + w;
-    // The size of the first gradient area (c1->2).
-    int w1 = (int) (h * g1);
-    // The size of the solid c2 area.
-    int w2 = (int) (h * g2);
-    int y0 = y;
-    int y1 = y0 + w1;
-    int y2 = y1 + w2;
-    int y3 = y2 + w1;
-    int y4 = y + h;
-
-    // Paint first gradient area (c1->c2).
-    int yc; // The current y coordinate.
-    for (yc = y0; yc < y1; yc++)
-      {
-        if (yc > y + h)
-          break;
-
-        // Perform color interpolation;
-        double factor = (yc - y0) / (double) w1;
-        int rInt = (int) ((c2.getRed() - c1.getRed()) * factor + c1.getRed());
-        int gInt = (int) ((c2.getGreen() - c1.getGreen()) * factor
-            + c1.getGreen());
-        int bInt = (int) ((c2.getBlue() - c1.getBlue()) * factor
-            + c1.getBlue());
-        Color interpolated = new Color(rInt, gInt, bInt);
-        g.setColor(interpolated);
-        if (mask != null)
-          {
-            x0 = mask[yc - y0][0] + x;
-            x1 = mask[yc - y0][1] + x;
-          }
-        g.fillRect(x0, yc, x1 - x0, 1);
-      }
-    // Paint solid c2 area.
-    g.setColor(c2);
-    if (mask == null)
-      {
-        g.fillRect(x, y1, w, y2 - y1);
-      }
-    else
-      {
-        for (yc = y1; yc < y2; yc++)
-          {
-            x0 = mask[yc - y0][0] + x;
-            x1 = mask[yc - y0][1] + x;
-            g.fillRect(x0, yc, x1 - x0, 1);
-          }
-      }
-
-    // Paint second gradient area (c2->c1).
-    for (yc = y2; yc < y3; yc++)
-      {
-        if (yc > y + h)
-          break;
-
-        // Perform color interpolation;
-        double factor = (yc - y2) / (double) w1;
-        int rInt = (int) ((c1.getRed() - c2.getRed()) * factor + c2.getRed());
-        int gInt = (int) ((c1.getGreen() - c2.getGreen()) * factor
-            + c2.getGreen());
-        int bInt = (int) ((c1.getBlue() - c2.getBlue()) * factor
-            + c2.getBlue());
-        Color interpolated = new Color(rInt, gInt, bInt);
-        g.setColor(interpolated);
-        if (mask != null)
-          {
-            x0 = mask[yc - y0][0] + x;
-            x1 = mask[yc - y0][1] + x;
-          }
-        g.fillRect(x0, yc, x1 - x0, 1);
-      }
-
-    // Paint third gradient area (c1->c3).
-    for (yc = y3; yc < y4; yc++)
-      {
-        if (yc > y + h)
-          break;
-
-        // Perform color interpolation;
-        double factor = (yc - y3) / (double) (y4 - y3);
-        int rInt = (int) ((c3.getRed() - c1.getRed()) * factor + c1.getRed());
-        int gInt = (int) ((c3.getGreen() - c1.getGreen()) * factor
-            + c1.getGreen());
-        int bInt = (int) ((c3.getBlue() - c1.getBlue()) * factor
-            + c1.getBlue());
-        Color interpolated = new Color(rInt, gInt, bInt);
-        g.setColor(interpolated);
-        if (mask != null)
-          {
-            x0 = mask[yc - y0][0] + x;
-            x1 = mask[yc - y0][1] + x;
-          }
-        g.fillRect(x0, yc, x1 - x0, 1);
-      }
-  }
-
-  /**
-   * Paints a horizontal gradient using Graphics2D functionality.
-   *
-   * @param g the Graphics2D instance
-   * @param x the X coordinate of the upper left corner of the rectangle
-   * @param y the Y coordinate of the upper left corner of the rectangle
-   * @param w the width of the rectangle
-   * @param h the height of the rectangle
-   * @param g1 the relative width of the c1->c2 gradients
-   * @param g2 the relative width of the c2 solid area
-   * @param c1 the color 1
-   * @param c2 the color 2
-   * @param c3 the color 3
-   * @param mask the mask that should be used when painting the gradient as
-   *        described above
-   */
-  private static void paintHorizontalGradient2D(Graphics2D g, int x, int y,
-                                                int w, int h, float g1,
-                                                float g2, Color c1,
-                                                Color c2, Color c3,
-                                                int[][] mask)
-  {
-    // FIXME: Handle the mask somehow, or do Graphics2D clipping instead.
-    GradientPaint p1 = new GradientPaint(x, y, c1, x + w * g1, y, c2);
-    g.setPaint(p1);
-    // This fills the first gradient and the solid area in one go.
-    g.fillRect(x, y, (int) (w * (g1 + g2)), h);
-
-    GradientPaint p2 = new GradientPaint(x + (w * (g1 + g2)), y, c2, x + w, y,
-                                         c3);
-    g.setPaint(p2);
-    g.fillRect((int) (x + (w * (g1 + g2))), y,
-               (int) (w * (1. - (g1 + g2))), h);
-  }
-
-  private static void paintVerticalGradient2D(Graphics2D g, int x, int y,
-                                              int w, int h, float g1,
-                                              float g2, Color c1,
-                                              Color c2, Color c3,
-                                              int[][] mask)
-  {
-    // FIXME: Handle the mask somehow, or do Graphics2D clipping instead.
-    GradientPaint p1 = new GradientPaint(x, y, c1, x, y + h * g1, c2);
-    g.setPaint(p1);
-    // This fills the first gradient and the solid area in one go.
-    g.fillRect(x, y, w, (int) (h * (g1 + g2)));
-
-    GradientPaint p2 = new GradientPaint(x, y + (h * (g1 + g2)), c2, x, y + h,
-                                         c3);
-    g.setPaint(p2);
-    g.fillRect(x, (int) (y + (h * (g1 + g2))), w,
-               (int) (h * (1. - (g1 + g2))));
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/OceanTheme.java b/libjava/classpath/javax/swing/plaf/metal/OceanTheme.java
deleted file mode 100644
index 6a6a3f5..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/OceanTheme.java
+++ /dev/null
@@ -1,318 +0,0 @@
-/* DefaultMetalTheme.java -- A modern theme for the Metal L&F
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.metal;
-
-import java.awt.Color;
-import java.awt.Insets;
-import java.util.Arrays;
-
-import javax.swing.UIDefaults;
-import javax.swing.plaf.ColorUIResource;
-import javax.swing.plaf.BorderUIResource.LineBorderUIResource;
-
-/**
- * A modern theme for the Metal Look &amp; Feel.
- * @since 1.5
- *
- * @author Roman Kennke (roman@kennke.org)
- */
-public class OceanTheme extends DefaultMetalTheme
-{
-  /**
-   * The OceanTheme value for black.
-   */
-  static final ColorUIResource BLACK = new ColorUIResource(51, 51, 51);
-
-  /**
-   * The OceanTheme value for primary1.
-   */
-  static final ColorUIResource PRIMARY1 = new ColorUIResource(99, 130, 191);
-
-  /**
-   * The OceanTheme value for primary1.
-   */
-  static final ColorUIResource PRIMARY2 = new ColorUIResource(163, 184, 204);
-
-  /**
-   * The OceanTheme value for primary1.
-   */
-  static final ColorUIResource PRIMARY3 = new ColorUIResource(184, 207, 229);
-
-  /**
-   * The OceanTheme value for secondary1.
-   */
-  static final ColorUIResource SECONDARY1 = new ColorUIResource(122, 138, 153);
-
-  /**
-   * The OceanTheme value for secondary2.
-   */
-  static final ColorUIResource SECONDARY2 = new ColorUIResource(184, 207, 229);
-
-  /**
-   * The OceanTheme value for secondary3.
-   */
-  static final ColorUIResource SECONDARY3 = new ColorUIResource(238, 238, 238);
-
-  /**
-   * The OceanTheme value for inactive control text.
-   */
-  static final ColorUIResource INACTIVE_CONTROL_TEXT =
-    new ColorUIResource(153, 153, 153);
-
-  /**
-   * Returns the name of this theme, &quot;Ocean&quot;
-   */
-  public String getName()
-  {
-    return "Ocean";
-  }
-
-  /**
-   * Returns the color for control text, which is the
-   * value of the theme's black value.
-   */
-  public ColorUIResource getControlTextColor()
-  {
-    return getBlack();
-  }
-
-  /**
-   * Returns the desktop color, which is the theme's white color.
-   */
-  public ColorUIResource getDesktopColor()
-  {
-    return getWhite();
-  }
-
-  /**
-   * Returns the color for inactive control text, which is the
-   * RGB value (153, 153, 153).
-   */
-  public ColorUIResource getInactiveControlTextColor()
-  {
-    return INACTIVE_CONTROL_TEXT;
-  }
-
-  /**
-   * Returns the OceanTheme's color for disabled menu foreground,
-   *
-   */
-  public ColorUIResource getMenuDisabledForeground()
-  {
-    return INACTIVE_CONTROL_TEXT;
-  }
-
-
-  /**
-   * Returns the OceanTheme's color for black, the RGB value
-   * (51, 51, 51).
-   *
-   * @return Returns the OceanTheme's value for black
-   */
-  protected ColorUIResource getBlack()
-  {
-    return BLACK;
-  }
-
-  /**
-   * Return the OceanTheme's value for primary 1, the RGB value
-   * (99, 130, 191).
-   */
-  protected ColorUIResource getPrimary1()
-  {
-    return PRIMARY1;
-  }
-
-  /**
-   * Return the OceanTheme's value for primary 2, the RGB value
-   * (163, 184, 204).
-   */
-  protected ColorUIResource getPrimary2()
-  {
-    return PRIMARY2;
-  }
-
-  /**
-   * Return the OceanTheme's value for primary 1, the RGB value
-   * (184, 207, 229).
-   */
-  protected ColorUIResource getPrimary3()
-  {
-    return PRIMARY3;
-  }
-
-  /**
-   * Return the OceanTheme's value for secondary 1, the RGB value
-   * (122, 138, 153).
-   */
-  protected ColorUIResource getSecondary1()
-  {
-    return SECONDARY1;
-  }
-
-  /**
-   * Return the OceanTheme's value for secondary 2, the RGB value
-   * (184, 207, 229).
-   */
-  protected ColorUIResource getSecondary2()
-  {
-    return SECONDARY2;
-  }
-  /**
-   * Return the OceanTheme's value for secondary 3, the RGB value
-   * (238, 238, 238).
-   */
-  protected ColorUIResource getSecondary3()
-  {
-    return SECONDARY3;
-  }
-
-  /**
-   * Adds customized entries to the UIDefaults table.
-   *
-   * @param defaults the UI defaults table
-   */
-  public void addCustomEntriesToTable(UIDefaults defaults)
-  {
-    // Gradients.
-    defaults.put("Button.gradient", Arrays.asList(new Object[]
-      {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243),
-       new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)}));
-    defaults.put("CheckBox.gradient", Arrays.asList(new Object[]
-      {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243),
-       new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)}));
-    defaults.put("CheckBoxMenuItem.gradient", Arrays.asList(new Object[]
-      {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243),
-       new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)}));
-    defaults.put("MenuBar.gradient", Arrays.asList(new Object[]
-      {new Float(1.0), new Float(0.0), new ColorUIResource(Color.WHITE),
-      new ColorUIResource(218, 218, 218), new ColorUIResource(218, 218, 218)}));
-    defaults.put("RadioButton.gradient", Arrays.asList(new Object[]
-      {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243),
-       new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)}));
-    defaults.put("RadioButtonMenuItem.gradient", Arrays.asList(new Object[]
-      {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243),
-       new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)}));
-    defaults.put("ScrollBar.gradient", Arrays.asList(new Object[]
-      {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243),
-       new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)}));
-    defaults.put("Slider.gradient", Arrays.asList(new Object[]
-      {new Float(0.3), new Float(0.2), new ColorUIResource(200, 221, 242),
-       new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)}));
-    defaults.put("Slider.focusGradient", Arrays.asList(new Object[]
-      {new Float(0.3), new Float(0.2), new ColorUIResource(200, 221, 242),
-       new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)}));
-    defaults.put("ToggleButton.gradient", Arrays.asList(new Object[]
-      {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243),
-       new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)}));
-    defaults.put("InternalFrame.activeTitleGradient", Arrays.asList(new Object[]
-      {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243),
-       new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)}));
-
-    // Colors.
-    ColorUIResource c1 = new ColorUIResource(200, 221, 242);
-    ColorUIResource c2 = new ColorUIResource(153, 153, 153);
-    ColorUIResource c3 = new ColorUIResource(204, 204, 204);
-    ColorUIResource c4 = new ColorUIResource(210, 226, 239);
-    ColorUIResource c5 = new ColorUIResource(218, 218, 218);
-    defaults.put("Button.disabledToolBarBorderBackground", c3);
-    defaults.put("Button.toolBarBorderBackground", c2);
-    defaults.put("Label.disabledForeground", c2);
-    defaults.put("MenuBar.borderColor", c3);
-    defaults.put("Slider.altTrackColor", c4);
-    defaults.put("SplitPane.dividerFocusColor", c1);
-    defaults.put("TabbedPane.contentAreaColor", c1);
-    defaults.put("TabbedPane.borderHightlightColor", PRIMARY1);
-    defaults.put("TabbedPane.selected", c1);
-    defaults.put("TabbedPane.tabAreaBackground", c5);
-    defaults.put("TabbedPane.unselectedBackground", SECONDARY3);
-    defaults.put("Table.gridColor", SECONDARY1);
-    defaults.put("ToolBar.borderColor", c3);
-    defaults.put("Tree.selectionBorderColor", PRIMARY1);
-
-    // Borders.
-    defaults.put("List.focusCellHighlightBorder",
-                 new LineBorderUIResource(getPrimary1()));
-    defaults.put("Table.focusCellHighlightBorder",
-                 new LineBorderUIResource(getPrimary1()));
-
-    // Insets.
-    defaults.put("TabbedPane.contentBorderInsets", new Insets(4, 2, 3, 3));
-    defaults.put("TabbedPane.tabAreaInsets", new Insets(2, 2, 0, 6));
-
-    // Flags.
-    defaults.put("SplitPane.oneTouchButtonsOpaque", Boolean.FALSE);
-    defaults.put("Menu.opaque", Boolean.FALSE);
-    defaults.put("ToolBar.isRollover", Boolean.TRUE);
-    defaults.put("RadioButton.rollover", Boolean.TRUE);
-    defaults.put("CheckBox.rollover", Boolean.TRUE);
-    defaults.put("Button.rollover", Boolean.TRUE);
-
-    // Icons.
-    // FIXME: Add OceanTheme icons.
-//    defaults.put("Tree.leafIcon", XXX);
-//    defaults.put("Tree.expandedIcon", XXX);
-//    defaults.put("Tree.openIcon", XXX);
-//    defaults.put("Tree.closedIcon", XXX);
-//    defaults.put("Tree.collapsedIcon", XXX);
-//    defaults.put("FileChooser.newFolderIcon", XXX);
-//    defaults.put("FileChooser.homeFolderIcon", XXX);
-//    defaults.put("FileChooser.upFolderIcon", XXX);
-//    defaults.put("FileView.hardDriveIcon", XXX);
-//    defaults.put("FileView.floppyDriveIcon", XXX);
-//    defaults.put("FileView.fileIcon", XXX);
-//    defaults.put("FileView.computerIcon", XXX);
-//    defaults.put("FileView.directoryIcon", XXX);
-//    defaults.put("OptionPane.questionIcon", XXX);
-//    defaults.put("OptionPane.errorIcon", XXX);
-//    defaults.put("OptionPane.warningIcon", XXX);
-//    defaults.put("OptionPane.informationIcon", XXX);
-//    defaults.put("InternalFrame.icon", XXX);
-//    defaults.put("InternalFrame.closeIcon", XXX);
-//    defaults.put("InternalFrame.iconifyIcon", XXX);
-//    defaults.put("InternalFrame.minimizeIcon", XXX);
-//    defaults.put("InternalFrame.maximizeIcon", XXX);
-//    defaults.put("InternalFrame.paletteCloseIcon", XXX);
-
-    // UI classes.
-    defaults.put("MenuBarUI", "javax.swing.plaf.metal.MetalMenuBarUI");
-
-    // Others.
-    defaults.put("Button.rolloverIconType", "ocean");
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/metal/package.html b/libjava/classpath/javax/swing/plaf/metal/package.html
deleted file mode 100644
index 8675493..0000000
--- a/libjava/classpath/javax/swing/plaf/metal/package.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!-- package.html - describes classes in javax.swing.plaf.metal package.
-   Copyright (C) 2002, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. -->
-
-<html>
-<head><title>GNU Classpath - javax.swing.plaf.metal</title></head>
-
-<body>
-<p>Provides a cross-platform look and feel known as "Metal".  To install this
-look and feel, add the following code (or something similar) 
-near the start of your application:</p>
-<pre>try
-  {
-&nbsp;&nbsp;UIManager.setLookAndFeel(new MetalLookAndFeel());
-  }
-catch (UnsupportedLookAndFeelException e)
-  {
-&nbsp;&nbsp;e.printStackTrace();
-  }</pre>
-</body>
-</html>
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiButtonUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiButtonUI.java
deleted file mode 100644
index 044f651..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiButtonUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiButtonUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ButtonUI;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link ButtonUI} instances, one
- * from the primary look and feel, and one or more from the auxiliary look and
- * feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiButtonUI extends ButtonUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiButtonUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiButtonUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiButtonUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiButtonUI mui = new MultiButtonUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiButtonUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiButtonUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiButtonUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiButtonUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiButtonUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiButtonUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiButtonUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiButtonUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiButtonUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiButtonUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiButtonUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiColorChooserUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiColorChooserUI.java
deleted file mode 100644
index 1a96849..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiColorChooserUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiColorChooserUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ColorChooserUI;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link ColorChooserUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiColorChooserUI extends ColorChooserUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiColorChooserUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiColorChooserUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiColorChooserUI</code>
-   * is returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiColorChooserUI mui = new MultiColorChooserUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiColorChooserUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiColorChooserUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiColorChooserUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiColorChooserUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiColorChooserUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiColorChooserUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiColorChooserUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiColorChooserUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiColorChooserUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiColorChooserUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiColorChooserUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiComboBoxUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiComboBoxUI.java
deleted file mode 100644
index f169873..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiComboBoxUI.java
+++ /dev/null
@@ -1,430 +0,0 @@
-/* MultiComboBoxUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComboBoxUI;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link ComboBoxUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiComboBoxUI extends ComboBoxUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiComboBoxUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiComboBoxUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiComboBoxUI</code>
-   * is returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiComboBoxUI mui = new MultiComboBoxUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiComboBoxUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiComboBoxUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiComboBoxUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiComboBoxUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiComboBoxUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiComboBoxUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiComboBoxUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiComboBoxUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiComboBoxUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiComboBoxUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiComboBoxUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComboBoxUI#setPopupVisible(JComboBox, boolean)} method
-   * for all the UI delegates managed by this <code>MultiComboBoxUI</code>.
-   *
-   * @param c  the component.
-   * @param visible  the visible state.
-   */
-  public void setPopupVisible(JComboBox c, boolean visible)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComboBoxUI ui = (ComboBoxUI) iterator.next();
-      ui.setPopupVisible(c, visible);
-    }
-  }
-
-  /**
-   * Calls the {@link ComboBoxUI#isPopupVisible(JComboBox)} method for all
-   * the UI delegates managed by this <code>MultiComboBoxUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The result for the UI delegate from the primary look and feel.
-   */
-  public boolean isPopupVisible(JComboBox c)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComboBoxUI ui = (ComboBoxUI) iterator.next();
-        result = ui.isPopupVisible(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComboBoxUI ui = (ComboBoxUI) iterator.next();
-        /* boolean ignored = */ ui.isPopupVisible(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComboBoxUI#isFocusTraversable(JComboBox)} method for all
-   * the UI delegates managed by this <code>MultiComboBoxUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return <code>true</code> if the combo box is traversable according to the
-   *         UI delegate in the primary look and feel, and <code>false</code>
-   *         otherwise.
-   */
-  public boolean isFocusTraversable(JComboBox c)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComboBoxUI ui = (ComboBoxUI) iterator.next();
-        result = ui.isFocusTraversable(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComboBoxUI ui = (ComboBoxUI) iterator.next();
-        /* boolean ignored = */ ui.isFocusTraversable(c);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiDesktopIconUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiDesktopIconUI.java
deleted file mode 100644
index 091566e..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiDesktopIconUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiDesktopIconUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.DesktopIconUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link DesktopIconUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiDesktopIconUI extends DesktopIconUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiDesktopIconUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiDesktopIconUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiDesktopIconUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiDesktopIconUI mui = new MultiDesktopIconUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiDesktopIconUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiDesktopIconUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiDesktopIconUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiDesktopIconUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiDesktopIconUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiDesktopIconUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiDesktopIconUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiDesktopIconUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiDesktopIconUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiDesktopIconUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiDesktopIconUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiDesktopPaneUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiDesktopPaneUI.java
deleted file mode 100644
index fb62257..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiDesktopPaneUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiDesktopIconUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.DesktopPaneUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link DesktopPaneUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiDesktopPaneUI extends DesktopPaneUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiDesktopPaneUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiDesktopPaneUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiDesktopPaneUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiDesktopPaneUI mui = new MultiDesktopPaneUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiDesktopPaneUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiDesktopPaneUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiDesktopPaneUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiDesktopPaneUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiDesktopPaneUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiDesktopPaneUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiDesktopPaneUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiDesktopPaneUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiDesktopPaneUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiDesktopPaneUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiDesktopPaneUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiFileChooserUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiFileChooserUI.java
deleted file mode 100644
index 2ab8841..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiFileChooserUI.java
+++ /dev/null
@@ -1,511 +0,0 @@
-/* MultiFileChooserUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.io.File;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.JFileChooser;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.filechooser.FileFilter;
-import javax.swing.filechooser.FileView;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.FileChooserUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link FileChooserUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiFileChooserUI extends FileChooserUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiFileChooserUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiFileChooserUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiFileChooserUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiFileChooserUI mui = new MultiFileChooserUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiFileChooserUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiFileChooserUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiFileChooserUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiFileChooserUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiFileChooserUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiFileChooserUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiFileChooserUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiFileChooserUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiFileChooserUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiFileChooserUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiFileChooserUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link FileChooserUI#getAcceptAllFileFilter(JFileChooser)} method
-   * for all the UI delegates managed by this <code>MultiFileChooserUI</code>,
-   * returning the filter for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param chooser  the file chooser.
-   *
-   * @return The filter returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public FileFilter getAcceptAllFileFilter(JFileChooser chooser)
-  {
-    FileFilter result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        FileChooserUI ui = (FileChooserUI) iterator.next();
-        result = ui.getAcceptAllFileFilter(chooser);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        FileChooserUI ui = (FileChooserUI) iterator.next();
-        /* FileFilter ignored = */ ui.getAcceptAllFileFilter(chooser);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link FileChooserUI#getFileView(JFileChooser)} method
-   * for all the UI delegates managed by this <code>MultiFileChooserUI</code>,
-   * returning the view for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param chooser  the file chooser.
-   *
-   * @return The view returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public FileView getFileView(JFileChooser chooser)
-  {
-    FileView result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        FileChooserUI ui = (FileChooserUI) iterator.next();
-        result = ui.getFileView(chooser);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        FileChooserUI ui = (FileChooserUI) iterator.next();
-        /* FileView ignored = */ ui.getFileView(chooser);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link FileChooserUI#getApproveButtonText(JFileChooser)} method
-   * for all the UI delegates managed by this <code>MultiFileChooserUI</code>,
-   * returning the text for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param chooser  the file chooser.
-   *
-   * @return The text returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public String getApproveButtonText(JFileChooser chooser)
-  {
-    String result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        FileChooserUI ui = (FileChooserUI) iterator.next();
-        result = ui.getApproveButtonText(chooser);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        FileChooserUI ui = (FileChooserUI) iterator.next();
-        /* String ignored = */ ui.getApproveButtonText(chooser);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link FileChooserUI#getDialogTitle(JFileChooser)} method
-   * for all the UI delegates managed by this <code>MultiFileChooserUI</code>,
-   * returning the title for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param chooser  the file chooser.
-   *
-   * @return The title returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public String getDialogTitle(JFileChooser chooser)
-  {
-    String result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        FileChooserUI ui = (FileChooserUI) iterator.next();
-        result = ui.getDialogTitle(chooser);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        FileChooserUI ui = (FileChooserUI) iterator.next();
-        /* String ignored = */ ui.getDialogTitle(chooser);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link FileChooserUI#rescanCurrentDirectory(JFileChooser)}
-   * method for all the UI delegates managed by this
-   * <code>MultiFileChooserUI</code>.
-   *
-   * @param chooser  the file chooser.
-   */
-  public void rescanCurrentDirectory(JFileChooser chooser)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      FileChooserUI ui = (FileChooserUI) iterator.next();
-      ui.rescanCurrentDirectory(chooser);
-    }
-  }
-
-  /**
-   * Calls the {@link FileChooserUI#ensureFileIsVisible(JFileChooser, File)}
-   * method for all the UI delegates managed by this
-   * <code>MultiFileChooserUI</code>.
-   *
-   * @param chooser  the file chooser.
-   * @param file  the file.
-   */
-  public void ensureFileIsVisible(JFileChooser chooser, File file)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      FileChooserUI ui = (FileChooserUI) iterator.next();
-      ui.ensureFileIsVisible(chooser, file);
-    }
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiInternalFrameUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiInternalFrameUI.java
deleted file mode 100644
index 37b2ee3..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiInternalFrameUI.java
+++ /dev/null
@@ -1,353 +0,0 @@
-/* MultiInternalFrameUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.InternalFrameUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link InternalFrameUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiInternalFrameUI extends InternalFrameUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiInternalFrameUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiInternalFrameUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiInternalFrameUI</code>
-   * is returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiInternalFrameUI mui = new MultiInternalFrameUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiInternalFrameUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiInternalFrameUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiInternalFrameUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiInternalFrameUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiInternalFrameUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiInternalFrameUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiInternalFrameUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiInternalFrameUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiInternalFrameUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiInternalFrameUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiInternalFrameUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiLabelUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiLabelUI.java
deleted file mode 100644
index 2f0e7d0..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiLabelUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiLabelUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.LabelUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link LabelUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiLabelUI extends LabelUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiLabelUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiLabelUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiLabelUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiLabelUI mui = new MultiLabelUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiLabelUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiLabelUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiLabelUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiLabelUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiLabelUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiLabelUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiLabelUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiLabelUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiLabelUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiLabelUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiLabelUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiListUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiListUI.java
deleted file mode 100644
index d6b77f5..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiListUI.java
+++ /dev/null
@@ -1,449 +0,0 @@
-/* MultiListUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.JList;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ListUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link ListUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiListUI extends ListUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiListUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiListUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiListUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiListUI mui = new MultiListUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiListUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiListUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiListUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiListUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiListUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiListUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiListUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiListUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiListUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiListUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiListUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ListUI#locationToIndex(JList, Point)} method for all
-   * the UI delegates managed by this <code>MultiListUI</code>,
-   * returning the index for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param list  the list.
-   * @param location  the location.
-   *
-   * @return The index returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int locationToIndex(JList list, Point location)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ListUI ui = (ListUI) iterator.next();
-        result = ui.locationToIndex(list, location);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ListUI ui = (ListUI) iterator.next();
-        /* int ignored = */ ui.locationToIndex(list, location);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ListUI#indexToLocation(JList, int)} method for all
-   * the UI delegates managed by this <code>MultiListUI</code>,
-   * returning the location for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param list  the list.
-   * @param index  the index.
-   *
-   * @return The location returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Point indexToLocation(JList list, int index)
-  {
-    Point result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ListUI ui = (ListUI) iterator.next();
-        result = ui.indexToLocation(list, index);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ListUI ui = (ListUI) iterator.next();
-        /* Point ignored = */ ui.indexToLocation(list, index);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ListUI#getCellBounds(JList, int, int)} method for all
-   * the UI delegates managed by this <code>MultiListUI</code>,
-   * returning the bounds for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param list  the list.
-   * @param index1  the first index.
-   * @param index2  the second index.
-   *
-   * @return The bounds returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Rectangle getCellBounds(JList list, int index1, int index2)
-  {
-    Rectangle result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ListUI ui = (ListUI) iterator.next();
-        result = ui.getCellBounds(list, index1, index2);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ListUI ui = (ListUI) iterator.next();
-        /* Rectangle ignored = */ ui.getCellBounds(list, index1, index2);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiLookAndFeel.java b/libjava/classpath/javax/swing/plaf/multi/MultiLookAndFeel.java
deleted file mode 100644
index 4e81fd0..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiLookAndFeel.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/* MultiLookAndFeel.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.util.Vector;
-
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIDefaults;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-
-/**
- * A look and feel that provides the ability to use auxiliary look and feels
- * in addition to the primary look and feel.
- */
-public class MultiLookAndFeel extends LookAndFeel
-{
-
-  /**
-   * Creates a new instance of the look and feel.
-   */
-  public MultiLookAndFeel()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Returns the name for the look and feel.
-   *
-   * @return "Multiplexing Look and Feel".
-   */
-  public String getName()
-  {
-    return "Multiplexing Look and Feel";
-  }
-
-  /**
-   * Returns an identifier for the look and feel.
-   *
-   * @return "Multiplex".
-   */
-  public String getID()
-  {
-    return "Multiplex";
-  }
-
-  /**
-   * Returns a description of the look and feel.
-   *
-   * @return A description of the look and feel.
-   */
-  public String getDescription()
-  {
-    return "Allows multiple UI instances per component instance";
-  }
-
-  /**
-   * Returns <code>false</code> to indicate that this look and feel is not
-   * native to any platform.
-   *
-   * @return <code>false</code>.
-   */
-  public boolean isNativeLookAndFeel()
-  {
-    return false;
-  }
-
-  /**
-   * Returns <code>true</code> always, since this look and feel is supported on
-   * all platforms.
-   *
-   * @return <code>true</code>.
-   */
-  public boolean isSupportedLookAndFeel()
-  {
-    return true;
-  }
-
-  /**
-   * Creates and returns the UI defaults for this look and feel.
-   *
-   * @return The UI defaults.
-   */
-  public UIDefaults getDefaults()
-  {
-    UIDefaults defaults = new UIDefaults();
-    defaults.put("ButtonUI", "javax.swing.plaf.multi.MultiButtonUI");
-    defaults.put("CheckBoxUI", "javax.swing.plaf.multi.MultiButtonUI");
-    defaults.put("CheckBoxMenuItemUI", "javax.swing.plaf.multi.MultiMenuItemUI");
-    defaults.put("ColorChooserUI",
-        "javax.swing.plaf.multi.MultiColorChooserUI");
-    defaults.put("ComboBoxUI", "javax.swing.plaf.multi.MultiComboBoxUI");
-    defaults.put("DesktopPaneUI", "javax.swing.plaf.multi.MultiDesktopPaneUI");
-    defaults.put("DesktopIconUI", "javax.swing.plaf.multi.MultiDesktopIconUI");
-    defaults.put("EditorPaneUI", "javax.swing.plaf.multi.MultiTextUI");
-    defaults.put("FileChooserUI", "javax.swing.plaf.multi.MultiFileChooserUI");
-    defaults.put("FormattedTextFieldUI", "javax.swing.plaf.multi.MultiTextUI");
-    defaults.put("InternalFrameUI",
-        "javax.swing.plaf.multi.MultiInternalFrameUI");
-    defaults.put("LabelUI", "javax.swing.plaf.multi.MultiLabelUI");
-    defaults.put("ListUI", "javax.swing.plaf.multi.MultiListUI");
-    defaults.put("MenuItemUI", "javax.swing.plaf.multi.MultiMenuItemUI");
-    defaults.put("MenuUI", "javax.swing.plaf.multi.MultiMenuItemUI");
-    defaults.put("MenuBarUI", "javax.swing.plaf.multi.MultiMenuBarUI");
-    defaults.put("OptionPaneUI", "javax.swing.plaf.multi.MultiOptionPaneUI");
-    defaults.put("PanelUI", "javax.swing.plaf.multi.MultiPanelUI");
-    defaults.put("PasswordFieldUI", "javax.swing.plaf.multi.MultiTextUI");
-    defaults.put("PopupMenuUI", "javax.swing.plaf.multi.MultiPopupMenuUI");
-    defaults.put("PopupMenuSeparatorUI",
-        "javax.swing.plaf.multi.MultiSeparatorUI");
-    defaults.put("ProgressBarUI", "javax.swing.plaf.multi.MultiProgressBarUI");
-    defaults.put("RadioButtonUI", "javax.swing.plaf.multi.MultiButtonUI");
-    defaults.put("RadioButtonMenuItemUI",
-        "javax.swing.plaf.multi.MultiMenuItemUI");
-    defaults.put("RootPaneUI", "javax.swing.plaf.multi.MultiRootPaneUI");
-    defaults.put("ScrollBarUI", "javax.swing.plaf.multi.MultiScrollBarUI");
-    defaults.put("ScrollPaneUI", "javax.swing.plaf.multi.MultiScrollPaneUI");
-    defaults.put("SeparatorUI", "javax.swing.plaf.multi.MultiSeparatorUI");
-    defaults.put("SliderUI", "javax.swing.plaf.multi.MultiSliderUI");
-    defaults.put("SpinnerUI", "javax.swing.plaf.multi.MultiSpinnerUI");
-    defaults.put("SplitPaneUI", "javax.swing.plaf.multi.MultiSplitPaneUI");
-    defaults.put("TabbedPaneUI", "javax.swing.plaf.multi.MultiTabbedPaneUI");
-    defaults.put("TableHeaderUI", "javax.swing.plaf.multi.MultiTableHeaderUI");
-    defaults.put("TableUI", "javax.swing.plaf.multi.MultiTableUI");
-    defaults.put("TextAreaUI", "javax.swing.plaf.multi.MultiTextUI");
-    defaults.put("TextFieldUI", "javax.swing.plaf.multi.MultiTextUI");
-    defaults.put("TextPaneUI", "javax.swing.plaf.multi.MultiTextUI");
-    defaults.put("ToggleButtonUI", "javax.swing.plaf.multi.MultiButtonUI");
-    defaults.put("ToolBarSeparatorUI",
-        "javax.swing.plaf.multi.MultiSeparatorUI");
-    defaults.put("ToolBarUI", "javax.swing.plaf.multi.MultiToolBarUI");
-    defaults.put("ToolTipUI", "javax.swing.plaf.multi.MultiToolTipUI");
-    defaults.put("ViewportUI", "javax.swing.plaf.multi.MultiViewportUI");
-    return defaults;
-  }
-
-  /**
-   * Creates the UI delegates for the <code>target</code> component and
-   * returns a multiplexing UI delegate (<code>mui</code>) if there are
-   * multiple delegates.
-   *
-   * @param mui  a multiplexing UI delegate appropriate for the component.
-   * @param uis  a vector into which the UI delegates will be added.
-   * @param target  the target component.
-   *
-   * @return A UI delegate.
-   */
-  public static ComponentUI createUIs(ComponentUI mui, Vector uis,
-                                      JComponent target)
-  {
-    // get primary UI delegate for 'target', and add it to uis
-    ComponentUI ui = null;
-    LookAndFeel primary = UIManager.getLookAndFeel();
-    if (primary != null)
-    {
-      ui = UIManager.getUI(target);
-      uis.add(ui);
-    }
-    // for any auxiliary look and feels in use, get the UI delegate and add
-    // it to uis
-    LookAndFeel[] auxlafs = UIManager.getAuxiliaryLookAndFeels();
-    for (int i = 0; i < auxlafs.length; i++)
-    {
-      LookAndFeel auxlaf = auxlafs[i];
-      // FIXME: here I call getDefaults() to get the UI delegate from the
-      // auxiliary look and feel.  But getDefaults() creates a new set of
-      // defaults every time it is called, which is wasteful.  Unfortunately
-      // I cannot find another way to get the UI delegate, so I'm doing it
-      // anyway...
-      UIDefaults defaults = auxlaf.getDefaults();
-      ui = defaults.getUI(target);
-      if (ui != null)
-        uis.add(ui);
-    }
-    // if uis contains more than 1 delegate, return mui, otherwise return
-    // the primary delegate
-    if (uis.size() > 1)
-      return mui;
-    else
-      return ui;
-  }
-
-  /**
-   * Returns an array containing the same {@link ComponentUI} instances as
-   * <code>uis</code>.  If <code>uis</code> is <code>null</code>, a zero-length
-   * array is returned.
-   *
-   * @param uis  a list of {@link ComponentUI} references (<code>null</code>
-   *             permitted).
-   *
-   * @return An array containing the same {@link ComponentUI} instances as
-   *         <code>uis</code>, or <code>null</code> if <code>uis</code> is
-   *         empty.
-   */
-  protected static ComponentUI[] uisToArray(Vector uis)
-  {
-    if (uis == null)
-      return new ComponentUI[0];
-    int size = uis.size();
-    if (size == 0)
-      return null;
-    ComponentUI[] result = new ComponentUI[size];
-    uis.copyInto(result);
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiMenuBarUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiMenuBarUI.java
deleted file mode 100644
index 5b43f6b..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiMenuBarUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiMenuBarUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.MenuBarUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link MenuBarUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiMenuBarUI extends MenuBarUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiMenuBarUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiMenuBarUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiMenuBarUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiMenuBarUI mui = new MultiMenuBarUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiMenuBarUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiMenuBarUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiMenuBarUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiMenuBarUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiMenuBarUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiMenuBarUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiMenuBarUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiMenuBarUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiMenuBarUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiMenuBarUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiMenuBarUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiMenuItemUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiMenuItemUI.java
deleted file mode 100644
index 6d361b0..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiMenuItemUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiMenuItemUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.MenuItemUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link MenuItemUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiMenuItemUI extends MenuItemUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiMenuItemUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiMenuItemUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiItemUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiMenuItemUI mui = new MultiMenuItemUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiMenuItemUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiMenuItemUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiMenuItemUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiMenuItemUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiMenuItemUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiMenuItemUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiMenuItemUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiMenuItemUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiMenuItemUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiMenuItemUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiMenuItemUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiOptionPaneUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiOptionPaneUI.java
deleted file mode 100644
index eaa4a42..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiOptionPaneUI.java
+++ /dev/null
@@ -1,398 +0,0 @@
-/* MultiOptionPaneUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.JOptionPane;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.OptionPaneUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link OptionPaneUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiOptionPaneUI extends OptionPaneUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiOptionPaneUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiOptionPaneUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiOptionPaneUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiOptionPaneUI mui = new MultiOptionPaneUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiOptionPaneUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiOptionPaneUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiOptionPaneUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiOptionPaneUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiOptionPaneUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiOptionPaneUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiOptionPaneUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiOptionPaneUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiOptionPaneUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiOptionPaneUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiOptionPaneUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link OptionPaneUI#selectInitialValue(JOptionPane)} method for
-   * all the UI delegates managed by this <code>MultiOptionPaneUI</code>.
-   *
-   * @param pane  the option pane.
-   */
-  public void selectInitialValue(JOptionPane pane)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      OptionPaneUI ui = (OptionPaneUI) iterator.next();
-      ui.selectInitialValue(pane);
-    }
-  }
-
-  /**
-   * Calls the {@link OptionPaneUI#containsCustomComponents(JOptionPane)}
-   * method for all the UI delegates managed by this
-   * <code>MultiOptionPaneUI</code>, returning the result for the UI delegate
-   * from the primary look and feel.
-   *
-   * @param pane  the option pane.
-   *
-   * @return The result for the UI delegate from the primary look and feel.
-   */
-  public boolean containsCustomComponents(JOptionPane pane)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        OptionPaneUI ui = (OptionPaneUI) iterator.next();
-        result = ui.containsCustomComponents(pane);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        OptionPaneUI ui = (OptionPaneUI) iterator.next();
-        /* boolean ignored = */ ui.containsCustomComponents(pane);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiPanelUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiPanelUI.java
deleted file mode 100644
index 7b84599..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiPanelUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiPanelUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.PanelUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link PanelUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiPanelUI extends PanelUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiPanelUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiPanelUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiPanelUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiPanelUI mui = new MultiPanelUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiPanelUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiPanelUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiPanelUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiPanelUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiPanelUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiPanelUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiPanelUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiPanelUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiPanelUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiPanelUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiPanelUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiPopupMenuUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiPopupMenuUI.java
deleted file mode 100644
index 0afaaf7..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiPopupMenuUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiPopupMenuUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.PopupMenuUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link PopupMenuUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiPopupMenuUI extends PopupMenuUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiPopupMenuUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiPopupMenuUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiPopupMenuUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiPopupMenuUI mui = new MultiPopupMenuUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiPopupMenuUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiPopupMenuUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiPopupMenuUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiPopupMenuUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiPopupMenuUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiPopupMenuUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiPopupMenuUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiPopupMenuUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiPopupMenuUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiPopupMenuUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiPopupMenuUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiProgressBarUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiProgressBarUI.java
deleted file mode 100644
index 0395bdd..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiProgressBarUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiProgressBarUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ProgressBarUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link ProgressBarUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiProgressBarUI extends ProgressBarUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiProgressBarUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiProgressBarUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiProgressBarUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiProgressBarUI mui = new MultiProgressBarUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiProgressBarUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiProgressBarUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiProgressBarUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiProgressBarUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiProgressBarUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiProgressBarUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiProgressBarUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiProgressBarUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiProgressBarUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiProgressBarUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiProgressBarUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiRootPaneUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiRootPaneUI.java
deleted file mode 100644
index 69c7ffe..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiRootPaneUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiRootPaneUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.RootPaneUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link RootPaneUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiRootPaneUI extends RootPaneUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiRootPanelUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiRootPaneUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiRootPaneUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiRootPaneUI mui = new MultiRootPaneUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiRootPaneUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiRootPaneUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiRootPaneUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiRootPaneUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiRootPaneUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiRootPaneUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiRootPaneUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiRootPaneUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiRootPaneUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiRootPaneUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiRootPaneUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiScrollBarUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiScrollBarUI.java
deleted file mode 100644
index 4ec8b3f..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiScrollBarUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiScrollBarUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ScrollBarUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link ScrollBarUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiScrollBarUI extends ScrollBarUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiScrollBarUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiScrollBarUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiScrollBarUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiScrollBarUI mui = new MultiScrollBarUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiScrollBarUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiScrollBarUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiScrollBarUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiScrollBarUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiScrollBarUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiScrollBarUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiScrollBarUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiScrollBarUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiScrollBarUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiScrollBarUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiScrollBarUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiScrollPaneUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiScrollPaneUI.java
deleted file mode 100644
index 5a0bc1e..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiScrollPaneUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiScrollPaneUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ScrollPaneUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link ScrollPaneUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiScrollPaneUI extends ScrollPaneUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiScrollPaneUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiScrollPaneUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiScrollPaneUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiScrollPaneUI mui = new MultiScrollPaneUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiScrollPaneUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiScrollPaneUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiScrollPaneUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiScrollPaneUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiScrollPaneUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiScrollPaneUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiScrollPaneUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiScrollPaneUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiScrollPaneUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiScrollPaneUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiScrollPaneUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiSeparatorUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiSeparatorUI.java
deleted file mode 100644
index fbd9712..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiSeparatorUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiSeparatorUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.SeparatorUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link MultiSeparatorUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiSeparatorUI extends SeparatorUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiSeparatorUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiSeparatorUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiSeparatorUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiSeparatorUI mui = new MultiSeparatorUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSeparatorUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSeparatorUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiSeparatorUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiSeparatorUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSeparatorUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiSeparatorUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSeparatorUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSeparatorUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSeparatorUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiSeparatorUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiSeparatorUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiSliderUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiSliderUI.java
deleted file mode 100644
index cb896c5..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiSliderUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiSliderUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.SliderUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link SliderUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiSliderUI extends SliderUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiSliderUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiSliderUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiSliderUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiSliderUI mui = new MultiSliderUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSliderUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSliderUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiSliderUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiSliderUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSliderUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiSliderUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSliderUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSliderUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSliderUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiSliderUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiSliderUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiSpinnerUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiSpinnerUI.java
deleted file mode 100644
index fd805f9..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiSpinnerUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiSpinnerUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.SpinnerUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link SpinnerUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiSpinnerUI extends SpinnerUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiSpinnerUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiSpinnerUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiSpinnerUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiSpinnerUI mui = new MultiSpinnerUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSpinnerUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSpinnerUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiSpinnerUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiSpinnerUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSpinnerUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiSpinnerUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSpinnerUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSpinnerUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSpinnerUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiSpinnerUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiSpinnerUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiSplitPaneUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiSplitPaneUI.java
deleted file mode 100644
index 1eb2e41..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiSplitPaneUI.java
+++ /dev/null
@@ -1,494 +0,0 @@
-/* MultiSplitPaneUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.JSplitPane;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.SplitPaneUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link SplitPaneUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiSplitPaneUI extends SplitPaneUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiSplitPaneUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiSplitPaneUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiSplitPaneUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiSplitPaneUI mui = new MultiSplitPaneUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSplitPaneUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSplitPaneUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiSplitPaneUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiSplitPaneUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSplitPaneUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiSplitPaneUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSplitPaneUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSplitPaneUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiSplitPaneUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiSplitPaneUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiSplitPaneUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link SplitPaneUI#resetToPreferredSizes(JSplitPane)} method
-   * for all the UI delegates managed by this <code>MultiSplitPaneUI</code>.
-   *
-   * @param pane  the component.
-   */
-  public void resetToPreferredSizes(JSplitPane pane)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      SplitPaneUI ui = (SplitPaneUI) iterator.next();
-      ui.resetToPreferredSizes(pane);
-    }
-  }
-
-  /**
-   * Calls the {@link SplitPaneUI#setDividerLocation(JSplitPane, int)} method
-   * for all the UI delegates managed by this <code>MultiSplitPaneUI</code>.
-   *
-   * @param pane  the component.
-   * @param location  the location.
-   */
-  public void setDividerLocation(JSplitPane pane, int location)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      SplitPaneUI ui = (SplitPaneUI) iterator.next();
-      ui.setDividerLocation(pane, location);
-    }
-  }
-
-  /**
-   * Calls the {@link SplitPaneUI#getDividerLocation(JSplitPane)} method for all
-   * the UI delegates managed by this <code>MultiSplitPaneUI</code>,
-   * returning the location for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param pane  the component.
-   *
-   * @return The location returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getDividerLocation(JSplitPane pane)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        SplitPaneUI ui = (SplitPaneUI) iterator.next();
-        result = ui.getDividerLocation(pane);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        SplitPaneUI ui = (SplitPaneUI) iterator.next();
-        /* int ignored = */ ui.getDividerLocation(pane);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link SplitPaneUI#getMinimumDividerLocation(JSplitPane)} method
-   * for all the UI delegates managed by this <code>MultiSplitPaneUI</code>,
-   * returning the location for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param pane  the component.
-   *
-   * @return The location returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getMinimumDividerLocation(JSplitPane pane)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        SplitPaneUI ui = (SplitPaneUI) iterator.next();
-        result = ui.getMinimumDividerLocation(pane);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        SplitPaneUI ui = (SplitPaneUI) iterator.next();
-        /* int ignored = */ ui.getMinimumDividerLocation(pane);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link SplitPaneUI#getMaximumDividerLocation(JSplitPane)} method
-   * for all the UI delegates managed by this <code>MultiSplitPaneUI</code>,
-   * returning the location for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param pane  the component.
-   *
-   * @return The location returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getMaximumDividerLocation(JSplitPane pane)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        SplitPaneUI ui = (SplitPaneUI) iterator.next();
-        result = ui.getMaximumDividerLocation(pane);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        SplitPaneUI ui = (SplitPaneUI) iterator.next();
-        /* int ignored = */ ui.getMaximumDividerLocation(pane);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link SplitPaneUI#finishedPaintingChildren(JSplitPane,
-   * Graphics)} method for all the UI delegates managed by this
-   * <code>MultiSplitPaneUI</code>.
-   *
-   * @param pane  the component.
-   * @param g  the graphics device.
-   */
-  public void finishedPaintingChildren(JSplitPane pane, Graphics g)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      SplitPaneUI ui = (SplitPaneUI) iterator.next();
-      ui.finishedPaintingChildren(pane, g);
-    }
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiTabbedPaneUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiTabbedPaneUI.java
deleted file mode 100644
index 3f9d22a..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiTabbedPaneUI.java
+++ /dev/null
@@ -1,447 +0,0 @@
-/* MultiTabbedPaneUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.JTabbedPane;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.TabbedPaneUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link TabbedPaneUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiTabbedPaneUI extends TabbedPaneUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiTabbedPaneUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiTabbedPaneUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiTabbedPaneUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiTabbedPaneUI mui = new MultiTabbedPaneUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTabbedPaneUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTabbedPaneUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiTabbedPaneUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiTabbedPaneUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTabbedPaneUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiTabbedPaneUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTabbedPaneUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTabbedPaneUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTabbedPaneUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiTabbedPaneUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiTabbedPaneUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TabbedPaneUI#tabForCoordinate(JTabbedPane, int, int)}
-   * method for all the UI delegates managed by this
-   * <code>MultiTabbedPaneUI</code>, returning the tab index for the UI
-   * delegate from the primary look and feel.
-   *
-   * @param pane  the tabbed pane.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return The tab index returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int tabForCoordinate(JTabbedPane pane, int x, int y)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TabbedPaneUI ui = (TabbedPaneUI) iterator.next();
-        result = ui.tabForCoordinate(pane, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TabbedPaneUI ui = (TabbedPaneUI) iterator.next();
-        /* int ignored = */ ui.tabForCoordinate(pane, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TabbedPaneUI#getTabBounds(JTabbedPane, int)}
-   * method for all the UI delegates managed by this
-   * <code>MultiTabbedPaneUI</code>, returning the bounds for the UI
-   * delegate from the primary look and feel.
-   *
-   * @param pane  the tabbed pane.
-   * @param index  the index.
-   *
-   * @return The bounds returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Rectangle getTabBounds(JTabbedPane pane, int index)
-  {
-    Rectangle result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TabbedPaneUI ui = (TabbedPaneUI) iterator.next();
-        result = ui.getTabBounds(pane, index);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TabbedPaneUI ui = (TabbedPaneUI) iterator.next();
-        /* int ignored = */ ui.getTabRunCount(pane);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TabbedPaneUI#getTabRunCount(JTabbedPane)}
-   * method for all the UI delegates managed by this
-   * <code>MultiTabbedPaneUI</code>, returning the nt for the UI
-   * delegate from the primary look and feel.
-   *
-   * @param pane  the tabbed pane.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getTabRunCount(JTabbedPane pane)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TabbedPaneUI ui = (TabbedPaneUI) iterator.next();
-        result = ui.getTabRunCount(pane);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TabbedPaneUI ui = (TabbedPaneUI) iterator.next();
-        /* int ignored = */ ui.getTabRunCount(pane);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiTableHeaderUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiTableHeaderUI.java
deleted file mode 100644
index 972303b..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiTableHeaderUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiTableHeaderUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.TableHeaderUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link TableHeaderUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiTableHeaderUI extends TableHeaderUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiTableHeaderUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiTableHeaderUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiTableHeaderUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiTableHeaderUI mui = new MultiTableHeaderUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTableHeaderUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTableHeaderUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiTableHeaderUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiTableHeaderUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTableHeaderUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiTableHeaderUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTableHeaderUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTableHeaderUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTableHeaderUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiTableHeaderUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiTableHeaderUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiTableUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiTableUI.java
deleted file mode 100644
index 1cd1a4c..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiTableUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiTableUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.TableUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link TableUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiTableUI extends TableUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiTableUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiTableUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiTableUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiTableUI mui = new MultiTableUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTableUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTableUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiTableUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiTableUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTableUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiTableUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTableUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTableUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTableUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiTableUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiTableUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiTextUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiTextUI.java
deleted file mode 100644
index 392fd98..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiTextUI.java
+++ /dev/null
@@ -1,617 +0,0 @@
-/* MultiTextUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.TextUI;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.EditorKit;
-import javax.swing.text.JTextComponent;
-import javax.swing.text.Position;
-import javax.swing.text.View;
-import javax.swing.text.Position.Bias;
-
-/**
- * A UI delegate that that coordinates multiple {@link TextUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiTextUI extends TextUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiTextUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiTextUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiTextUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiTextUI mui = new MultiTextUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTextUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTextUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiTextUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiTextUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTextUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiTextUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTextUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTextUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTextUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiTextUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiTextUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TextUI#modelToView(JTextComponent, int)} method for all
-   * the UI delegates managed by this <code>MultiTextUI</code>,
-   * returning the bounds for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tc  the text component.
-   *
-   * @return The bounds returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Rectangle modelToView(JTextComponent tc, int pos)
-      throws BadLocationException
-  {
-    Rectangle result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        result = ui.modelToView(tc, pos);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        /* Rectangle ignored = */ ui.modelToView(tc, pos);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TextUI#modelToView(JTextComponent, int, Position.Bias)}
-   * method for all the UI delegates managed by this <code>MultiTextUI</code>,
-   * returning the bounds for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tc  the text component.
-   *
-   * @return The bounds returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Rectangle modelToView(JTextComponent tc, int pos, Bias bias)
-          throws BadLocationException
-  {
-    Rectangle result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        result = ui.modelToView(tc, pos, bias);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        /* Rectangle ignored = */ ui.modelToView(tc, pos, bias);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TextUI#viewToModel(JTextComponent, Point)} method for all
-   * the UI delegates managed by this <code>MultiTextUI</code>,
-   * returning the position for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param t  the text component.
-   * @param pt  the point.
-   *
-   * @return The position returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int viewToModel(JTextComponent t, Point pt)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        result = ui.viewToModel(t, pt);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        /* int ignored = */ ui.viewToModel(t, pt);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TextUI#viewToModel(JTextComponent, Point, Bias[])} method
-   * for all the UI delegates managed by this <code>MultiTextUI</code>,
-   * returning the position for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tc  the text component.
-   *
-   * @return The position returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int viewToModel(JTextComponent tc, Point loc, Bias[] outBias)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        result = ui.viewToModel(tc, loc, outBias);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        /* int ignored = */ ui.viewToModel(tc, loc, outBias);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TextUI#getNextVisualPositionFrom(JTextComponent, int,
-   * Position.Bias, int, Position.Bias[])} method for all
-   * the UI delegates managed by this <code>MultiTextUI</code>,
-   * returning the position for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tc  the text component.
-   *
-   * @return The position returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getNextVisualPositionFrom(JTextComponent tc, int pos, Bias bias,
-          int direction, Bias[] outBias) throws BadLocationException
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        result = ui.getNextVisualPositionFrom(tc, pos, bias, direction,
-                outBias);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        /* int ignored = */ ui.getNextVisualPositionFrom(tc, pos, bias,
-            direction, outBias);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TextUI#damageRange(JTextComponent, int, int)} method for
-   * all the UI delegates managed by this <code>MultiTextUI</code>.
-   *
-   * @param tc  the component.
-   * @param start  the start position.
-   * @param end  the end position.
-   */
-  public void damageRange(JTextComponent tc, int start, int end)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      TextUI ui = (TextUI) iterator.next();
-      ui.damageRange(tc, start, end);
-    }
-  }
-
-  /**
-   * Calls the {@link TextUI#damageRange(JTextComponent, int, int,
-   * Position.Bias, Position.Bias)} method for all the UI delegates managed by
-   * this <code>MultiTextUI</code>.
-   *
-   * @param tc  the component.
-   * @param start  the start position.
-   * @param end  the end position.
-   * @param startBias  the start bias.
-   * @param endBias  the end bias.
-   */
-  public void damageRange(JTextComponent tc, int start, int end,
-        Bias startBias, Bias endBias)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      TextUI ui = (TextUI) iterator.next();
-      ui.damageRange(tc, start, end, startBias, endBias);
-    }
-  }
-
-  /**
-   * Calls the {@link TextUI#getEditorKit(JTextComponent)} method for all
-   * the UI delegates managed by this <code>MultiTextUI</code>,
-   * returning the editor kit for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tc  the text component.
-   *
-   * @return The editor kit returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public EditorKit getEditorKit(JTextComponent tc)
-  {
-    EditorKit result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        result = ui.getEditorKit(tc);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        /* EditorKit ignored = */ ui.getEditorKit(tc);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TextUI#getRootView(JTextComponent)} method for all
-   * the UI delegates managed by this <code>MultiTextUI</code>,
-   * returning the view for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tc  the text component.
-   *
-   * @return The view returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public View getRootView(JTextComponent tc)
-  {
-    View result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        result = ui.getRootView(tc);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TextUI ui = (TextUI) iterator.next();
-        /* View ignored = */ ui.getRootView(tc);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiToolBarUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiToolBarUI.java
deleted file mode 100644
index 5f308d9..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiToolBarUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiToolBarUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ToolBarUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link ToolBarUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiToolBarUI extends ToolBarUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiToolBarUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiToolBarUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiToolBarUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiToolBarUI mui = new MultiToolBarUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiToolBarUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiToolBarUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiToolBarUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiToolBarUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiToolBarUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiToolBarUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiToolBarUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiToolBarUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiToolBarUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiToolBarUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiToolBarUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiToolTipUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiToolTipUI.java
deleted file mode 100644
index 9db9efb..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiToolTipUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiToolTipUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ToolTipUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link ToolTipUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiToolTipUI extends ToolTipUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiToolTipUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiToolTipUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiToolTipUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiToolTipUI mui = new MultiToolTipUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiToolTipUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiToolTipUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiToolTipUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiToolTipUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiToolTipUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiToolTipUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiToolTipUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiToolTipUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiToolTipUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiToolTipUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiToolTipUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiTreeUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiTreeUI.java
deleted file mode 100644
index f70decc..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiTreeUI.java
+++ /dev/null
@@ -1,628 +0,0 @@
-/* MultiTreeUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.JTree;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.TreeUI;
-import javax.swing.tree.TreePath;
-
-/**
- * A UI delegate that that coordinates multiple {@link TreeUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiTreeUI extends TreeUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiTreeUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiTreeUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiTreeUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiTreeUI mui = new MultiTreeUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTreeUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTreeUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiTreeUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTreeUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiTreeUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TreeUI#getPathBounds(JTree, TreePath)} method
-   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the bounds for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tree  the tree component.
-   *
-   * @return The bounds returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Rectangle getPathBounds(JTree tree, TreePath path)
-  {
-    Rectangle result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        result = ui.getPathBounds(tree, path);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        /* Rectangle ignored = */ ui.getPathBounds(tree, path);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TreeUI#getPathForRow(JTree, int)} method
-   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the path for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tree  the tree component.
-   *
-   * @return The path returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public TreePath getPathForRow(JTree tree, int row)
-  {
-    TreePath result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        result = ui.getPathForRow(tree, row);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        /* TreePath ignored = */ ui.getPathForRow(tree, row);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TreeUI#getRowForPath(JTree, TreePath)} method
-   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the row index for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tree  the tree component.
-   *
-   * @return The row index returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getRowForPath(JTree tree, TreePath path)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        result = ui.getRowForPath(tree, path);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        /* int ignored = */ ui.getRowForPath(tree, path);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TreeUI#getRowCount(JTree)} method
-   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tree  the tree component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getRowCount(JTree tree)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        result = ui.getRowCount(tree);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        /* int ignored = */ ui.getRowCount(tree);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TreeUI#getClosestPathForLocation(JTree, int, int)} method
-   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the path for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tree  the tree component.
-   *
-   * @return The path returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public TreePath getClosestPathForLocation(JTree tree, int x, int y)
-  {
-    TreePath result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        result = ui.getClosestPathForLocation(tree, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        /* TreePath ignored = */ ui.getClosestPathForLocation(tree, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TreeUI#isEditing(JTree)} method for all
-   * the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tree  the tree component.
-   *
-   * @return The result returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public boolean isEditing(JTree tree)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        result = ui.isEditing(tree);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        /* boolean ignored = */ ui.isEditing(tree);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TreeUI#stopEditing(JTree)} method for all
-   * the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tree  the tree component.
-   *
-   * @return The result returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public boolean stopEditing(JTree tree)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        result = ui.stopEditing(tree);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        /* boolean ignored = */ ui.stopEditing(tree);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link TreeUI#cancelEditing(JTree)} method for
-   * all the UI delegates managed by this <code>MultiTreeUI</code>.
-   *
-   * @param tree  the tree component.
-   */
-  public void cancelEditing(JTree tree)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      TreeUI ui = (TreeUI) iterator.next();
-      ui.cancelEditing(tree);
-    }
-  }
-
-  /**
-   * Calls the {@link TreeUI#startEditingAtPath(JTree, TreePath)} method for
-   * all the UI delegates managed by this <code>MultiTreeUI</code>.
-   *
-   * @param tree  the tree component.
-   * @param path  the path.
-   */
-  public void startEditingAtPath(JTree tree, TreePath path)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      TreeUI ui = (TreeUI) iterator.next();
-      ui.startEditingAtPath(tree, path);
-    }
-  }
-
-  /**
-   * Calls the {@link TreeUI#getEditingPath(JTree)} method for all
-   * the UI delegates managed by this <code>MultiTreeUI</code>,
-   * returning the path for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param tree  the tree component.
-   *
-   * @return The path returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public TreePath getEditingPath(JTree tree)
-  {
-    TreePath result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        result = ui.getEditingPath(tree);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        TreeUI ui = (TreeUI) iterator.next();
-        /* TreePath ignored = */ ui.getEditingPath(tree);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/MultiViewportUI.java b/libjava/classpath/javax/swing/plaf/multi/MultiViewportUI.java
deleted file mode 100644
index 55f9cba..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/MultiViewportUI.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/* MultiViewPortUI.java --
-   Copyright (C) 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.plaf.multi;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.accessibility.Accessible;
-import javax.swing.JComponent;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.ViewportUI;
-
-/**
- * A UI delegate that that coordinates multiple {@link ViewportUI}
- * instances, one from the primary look and feel, and one or more from the
- * auxiliary look and feel(s).
- *
- * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
- */
-public class MultiViewportUI extends ViewportUI
-{
-
-  /** A list of references to the actual component UIs. */
-  protected Vector uis;
-
-  /**
-   * Creates a new <code>MultiViewPortUI</code> instance.
-   *
-   * @see #createUI(JComponent)
-   */
-  public MultiViewportUI()
-  {
-    uis = new Vector();
-  }
-
-  /**
-   * Creates a delegate object for the specified component.  If any auxiliary
-   * look and feels support this component, a <code>MultiViewportUI</code> is
-   * returned, otherwise the UI from the default look and feel is returned.
-   *
-   * @param target  the component.
-   *
-   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
-   */
-  public static ComponentUI createUI(JComponent target)
-  {
-    MultiViewportUI mui = new MultiViewportUI();
-    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiViewportUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void installUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.installUI(c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiViewportUI</code>.
-   *
-   * @param c  the component.
-   */
-  public void uninstallUI(JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.uninstallUI(c);
-    }
-  }
-
-  /**
-   * Returns an array containing the UI delegates managed by this
-   * <code>MultiViewportUI</code>.  The first item in the array is always
-   * the UI delegate from the installed default look and feel.
-   *
-   * @return An array of UI delegates.
-   */
-  public ComponentUI[] getUIs()
-  {
-    return MultiLookAndFeel.uisToArray(uis);
-  }
-
-  /**
-   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
-   * the UI delegates managed by this <code>MultiViewportUI</code>,
-   * returning the result for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   * @param x  the x-coordinate.
-   * @param y  the y-coordinate.
-   *
-   * @return <code>true</code> if the specified (x, y) coordinate falls within
-   *         the bounds of the component as rendered by the UI delegate in the
-   *         primary look and feel, and <code>false</code> otherwise.
-   */
-  public boolean contains(JComponent c, int x, int y)
-  {
-    boolean result = false;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.contains(c, x, y);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* boolean ignored = */ ui.contains(c, x, y);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
-   * the UI delegates managed by this <code>MultiViewportUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void update(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.update(g, c);
-    }
-  }
-
-  /**
-   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
-   * delegates managed by this <code>MultiViewportUI</code>.
-   *
-   * @param g  the graphics device.
-   * @param c  the component.
-   */
-  public void paint(Graphics g, JComponent c)
-  {
-    Iterator iterator = uis.iterator();
-    while (iterator.hasNext())
-    {
-      ComponentUI ui = (ComponentUI) iterator.next();
-      ui.paint(g, c);
-    }
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiViewportUI</code>,
-   * returning the preferred size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The preferred size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getPreferredSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getPreferredSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getPreferredSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiViewportUI</code>,
-   * returning the minimum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The minimum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMinimumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMinimumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMinimumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
-   * the UI delegates managed by this <code>MultiViewportUI</code>,
-   * returning the maximum size for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The maximum size returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Dimension getMaximumSize(JComponent c)
-  {
-    Dimension result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getMaximumSize(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Dimension ignored = */ ui.getMaximumSize(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
-   * for all the UI delegates managed by this <code>MultiViewportUI</code>,
-   * returning the count for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component.
-   *
-   * @return The count returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public int getAccessibleChildrenCount(JComponent c)
-  {
-    int result = 0;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChildrenCount(c);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* int ignored = */ ui.getAccessibleChildrenCount(c);
-      }
-    return result;
-  }
-
-  /**
-   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
-   * for all the UI delegates managed by this <code>MultiViewportUI</code>,
-   * returning the child for the UI delegate from the primary look and
-   * feel.
-   *
-   * @param c  the component
-   * @param i  the child index.
-   *
-   * @return The child returned by the UI delegate from the primary
-   *         look and feel.
-   */
-  public Accessible getAccessibleChild(JComponent c, int i)
-  {
-    Accessible result = null;
-    Iterator iterator = uis.iterator();
-    // first UI delegate provides the return value
-    if (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        result = ui.getAccessibleChild(c, i);
-      }
-    // return values from auxiliary UI delegates are ignored
-    while (iterator.hasNext())
-      {
-        ComponentUI ui = (ComponentUI) iterator.next();
-        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
-      }
-    return result;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/multi/package.html b/libjava/classpath/javax/swing/plaf/multi/package.html
deleted file mode 100644
index 568a7d0..0000000
--- a/libjava/classpath/javax/swing/plaf/multi/package.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!-- package.html - describes classes in javax.swing.plaf.metal package.
-   Copyright (C) 2002, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. -->
-
-<html>
-<head><title>GNU Classpath - javax.swing.plaf.multi</title></head>
-
-<body>
-<p>Provides a look and feel that can combine a primary look and feel with one or more auxiliary look and feels.</p>
-
-</body>
-</html>
diff --git a/libjava/classpath/javax/swing/plaf/package.html b/libjava/classpath/javax/swing/plaf/package.html
deleted file mode 100644
index c266074..0000000
--- a/libjava/classpath/javax/swing/plaf/package.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!-- package.html - describes classes in javax.swing.plaf package.
-   Copyright (C) 2002, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. -->
-
-<html>
-<head><title>GNU Classpath - javax.swing.plaf</title></head>
-
-<body>
-<p>A base package for the "pluggable look and feel" (plaf) mechanism used by 
-the <code>javax.swing</code> classes.</p>
-
-</body>
-</html>
diff --git a/libjava/classpath/javax/swing/plaf/synth/ColorType.java b/libjava/classpath/javax/swing/plaf/synth/ColorType.java
deleted file mode 100644
index ced1efc..0000000
--- a/libjava/classpath/javax/swing/plaf/synth/ColorType.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/* ColorType.java -- En enumeration of color types
-   Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.synth;
-
-/**
- * A typesafe enumeration of color types.
- *
- * @author Roman Kennke (kennke@aicas.com)
- *
- * @since 1.5
- */
-public class ColorType
-{
-
-  /**
-   * A constant used to identify the foreground color of a component.
-   */
-  public static final ColorType FOREGROUND = new ColorType("Foreground");
-
-  /**
-   * A constant used to identify the background color of a component.
-   */
-  public static final ColorType BACKGROUND = new ColorType("Background");
-
-  /**
-   * A constant used to identify the foreground color of text of a component.
-   */
-  public static final ColorType TEXT_FOREGROUND
-                                           = new ColorType("TextForeground");
-
-  /**
-   * A constant used to identify the background color of text of a component.
-   */
-  public static final ColorType TEXT_BACKGROUND
-                                           = new ColorType("TextBackground");
-
-  /**
-   * A constant used to identify the focus color of a component.
-   */
-  public static final ColorType FOCUS = new ColorType("Focus");
-
-  /**
-   * The maximum number of color types.
-   */
-  public static final int MAX_COUNT;
-  static
-  {
-    // This is not a constant in the JDK.
-    MAX_COUNT = 5;
-  }
-
-  /**
-   * A counter used to assign an ID to the created color types.
-   */
-  private static int count = 0;
-
-  /**
-   * The ID of the color type.
-   */
-  private int id;
-
-  /**
-   * The description of the color type.
-   */
-  private String description;
-
-  /**
-   * Creates a new <code>Color</code> color type with the specified
-   * description.
-   *
-   * @param desc the textual description of the color type
-   */
-  protected ColorType(String desc)
-  {
-    description = desc;
-    id = count;
-    count++;
-  }
-
-  /**
-   * Returns the unique ID of the color type.
-   *
-   * @return the unique ID of the color type
-   */
-  public final int getID()
-  {
-    return id;
-  }
-
-  /**
-   * Returns the textual description of the color type.
-   *
-   * @return the textual description of the color type
-   */
-  public String toString()
-  {
-    return description;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/synth/Region.java b/libjava/classpath/javax/swing/plaf/synth/Region.java
deleted file mode 100644
index 25d1a11..0000000
--- a/libjava/classpath/javax/swing/plaf/synth/Region.java
+++ /dev/null
@@ -1,474 +0,0 @@
-/* Region.java -- Describes a region within a component
-   Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.synth;
-
-/**
- * Describes a region of a component or the complete component.
- *
- * @author Roman Kennke (kennke@aicas.com)
- *
- * @since 1.5
- */
-public class Region
-{
-
-  // FIXME: What should ui be for the non-component regions that have
-  // subregion==false?
-
-  /**
-   * Specifies an arrow button region.
-   */
-  public static final Region ARROW_BUTTON =
-    new Region("ArrowButton", null, false);
-
-  /**
-   * Specifies the region of a standard button.
-   */
-  public static final Region BUTTON =
-    new Region("Button", "ButtonUI", false);
-
-  /**
-   * Specifies the region of a check box.
-   */
-  public static final Region CHECK_BOX =
-    new Region("CheckBox", "CheckBoxUI", false);
-
-  /**
-   * Specifies the region of a check box menu item.
-   */
-  public static final Region CHECK_BOX_MENU_ITEM =
-    new Region("CheckBoxMenuItem", "CheckBoxMenuItemUI", false);
-
-  /**
-   * Specifies the region of a colorchooser.
-   */
-  public static final Region COLOR_CHOOSER =
-    new Region("ColorChooser", "ColorChooserUI", false);
-
-  /**
-   * Specifies the region of a combo box.
-   */
-  public static final Region COMBO_BOX =
-    new Region("ComboBox", "ComboBoxUI", false);
-
-  /**
-   * Specifies the region of a desktop pane.
-   */
-  public static final Region DESKTOP_PANE =
-    new Region("DesktopPane", "DesktopPaneUI", false);
-
-  /**
-   * Specifies the region of a desktop icon.
-   */
-  public static final Region DESKTOP_ICON =
-    new Region("DesktopIcon", "DesktopIconUI", false);
-
-  /**
-   * Specifies the region of an editor pane.
-   */
-  public static final Region EDITOR_PANE =
-    new Region("EditorPane", "EditorPaneUI", false);
-
-  /**
-   * Specifies the region of a file chooser.
-   */
-  public static final Region FILE_CHOOSER =
-    new Region("FileChooser", "FileChooserUI", false);
-
-  /**
-   * Specifies the region of a formatted text field.
-   */
-  public static final Region FORMATTED_TEXT_FIELD =
-    new Region("FormattedTextField", "FormattedTextFieldUI", false);
-
-  /**
-   * Specifies the region of an internal frame.
-   */
-  public static final Region INTERNAL_FRAME =
-    new Region("InternalFrame", "InternalFrameUI", false);
-
-  /**
-   * Specifies the region of the title pane of an internal frame.
-   */
-  public static final Region INTERNAL_FRAME_TITLE_PANE =
-    new Region("InternalFrameTitlePane", "InternalFrameTitlePaneUI", false);
-
-  /**
-   * Specifies the region of a label.
-   */
-  public static final Region LABEL =
-    new Region("Label", "LabelUI", false);
-
-  /**
-   * Specifies the region of a list.
-   */
-  public static final Region LIST =
-    new Region("List", "ListUI", false);
-
-  /**
-   * Specifies the region of a menu.
-   */
-  public static final Region MENU =
-    new Region("Menu", "MenuUI", false);
-
-  /**
-   * Specifies the region of a menu bar.
-   */
-  public static final Region MENU_BAR =
-    new Region("MenuBar", "MenuBarUI", false);
-
-  /**
-   * Specifies the region of a menu item.
-   */
-  public static final Region MENU_ITEM =
-    new Region("MenuItem", "MenuItemUI", false);
-
-  /**
-   * Specifies the region of a menu item accelerator. This is a subregion
-   * of menu item.
-   */
-  public static final Region MENU_ITEM_ACCELERATOR =
-    new Region("MenuItemAccelerator", null, true);
-
-  /**
-   * Specifies the region of an option pane.
-   */
-  public static final Region OPTION_PANE =
-    new Region("OptionPane", "OptionPaneUI", false);
-
-  /**
-   * Specifies the region of a panel.
-   */
-  public static final Region PANEL =
-    new Region("Panel", "PanelUI", false);
-
-  /**
-   * Specifies the region of a password field.
-   */
-  public static final Region PASSWORD_FIELD =
-    new Region("PasswordField", "PasswordFieldUI", false);
-
-  /**
-   * Specifies the region of a popup menu.
-   */
-  public static final Region POPUP_MENU =
-    new Region("PopupMenu", "PopupMenuUI", false);
-
-  /**
-   * Specifies the region of a popup menu separator.
-   */
-  public static final Region POPUP_MENU_SEPARATOR =
-    new Region("PopupMenuSeparator", null, false);
-
-  /**
-   * Specifies the region of a progress bar.
-   */
-  public static final Region PROGRESS_BAR =
-    new Region("ProgressBar", "ProgressBarUI", false);
-
-  /**
-   * Specifies the region of a radio button.
-   */
-  public static final Region RADIO_BUTTON =
-    new Region("RadioButton", "RadioButtonUI", false);
-
-  /**
-   * Specifies the region of a radio button menu item.
-   */
-  public static final Region RADIO_BUTTON_MENU_ITEM =
-    new Region("RadioButtonMenuItem", "RadioButtonMenuItemUI", false);
-
-  /**
-   * Specifies the region of a root pane.
-   */
-  public static final Region ROOT_PANE =
-    new Region("RootPane", "RootPaneUI", false);
-
-  /**
-   * Specifies the region of a scroll bar.
-   */
-  public static final Region SCROLL_BAR =
-    new Region("ScrollBar", "ScrollBarUI", false);
-
-  /**
-   * Specifies the region of a scroll bar track. This is a subregion of
-   * scroll bars.
-   */
-  public static final Region SCROLL_BAR_TRACK =
-    new Region("ScrollBarTrack", null, true);
-
-  /**
-   * Specifies the region of a scroll bar thumb. This is a subregion of
-   * scroll bars.
-   */
-  public static final Region SCROLL_BAR_THUMB =
-    new Region("ScrollBarThumb", null, true);
-
-  /**
-   * Specifies the region of a scroll pane.
-   */
-  public static final Region SCROLL_PANE =
-    new Region("ScrollPane", "ScrollPaneUI", false);
-
-  /**
-   * Specifies the region of a separator.
-   */
-  public static final Region SEPARATOR =
-    new Region("Separator", "SeparatorUI", false);
-
-  /**
-   * Specifies the region of a slider.
-   */
-  public static final Region SLIDER =
-    new Region("Slider", "SliderUI", false);
-
-  /**
-   * Specifies the region of a slider track. This is a subregion of a slider.
-   */
-  public static final Region SLIDER_TRACK =
-    new Region("SliderTrack", null, true);
-
-  /**
-   * Specifies the region of a slider thumb. This is a subregion of a slider.
-   */
-  public static final Region SLIDER_THUMB =
-    new Region("SliderThumb", null, true);
-
-  /**
-   * Specifies the region of a spinner.
-   */
-  public static final Region SPINNER =
-    new Region("Spinner", "SpinnerUI", false);
-
-  /**
-   * Specifies the region of a split pane.
-   */
-  public static final Region SPLIT_PANE =
-    new Region("SplitPane", "SplitPaneUI", false);
-
-  /**
-   * Specifies the region of a split pane divider. This is a subregion of
-   * a split pane.
-   */
-  public static final Region SPLIT_PANE_DIVIDER =
-    new Region("SplitPaneDivider", null, true);
-
-  /**
-   * Specifies the region of a tabbed pane.
-   */
-  public static final Region TABBED_PANE =
-    new Region("TabbedPane", "TabbedPaneUI", false);
-
-  /**
-   * This specifies the region of a tab of a tabbed pane. This is a subregion
-   * of a tabbed pane.
-   */
-  public static final Region TABBED_PANE_TAB =
-    new Region("TabbedPaneTab", null, true);
-
-  /**
-   * This specifies the region underneath the tabs of a tabbed pane. This is a
-   * subregion of a tabbed pane.
-   */
-  public static final Region TABBED_PANE_TAB_AREA =
-    new Region("TabbedPaneTabArea", null, true);
-
-  /**
-   * This specifies the region for the content of a tabbed pane. This is a
-   * subregion of a tabbed pane.
-   */
-  public static final Region TABBED_PANE_CONTENT =
-    new Region("TabbedPaneContent", null, true);
-
-  /**
-   * Specifies the region of a table.
-   */
-  public static final Region TABLE =
-    new Region("Table", "TableUI", false);
-
-  /**
-   * Specifies the region of a table header.
-   */
-  public static final Region TABLE_HEADER =
-    new Region("TableHeader", "TableHeaderUI", false);
-
-  /**
-   * Specifies the region of a text area.
-   */
-  public static final Region TEXT_AREA =
-    new Region("TextArea", "TextAreaUI", false);
-
-  /**
-   * Specifies the region of a text field.
-   */
-  public static final Region TEXT_FIELD =
-    new Region("TextField", "TextFieldUI", false);
-
-  /**
-   * Specifies the region of a text pane.
-   */
-  public static final Region TEXT_PANE =
-    new Region("TextPane", "TextPaneUI", false);
-
-  /**
-   * Specifies the region of a toggle button.
-   */
-  public static final Region TOGGLE_BUTTON =
-    new Region("ToggleButton", "ToggleButtonUI", false);
-
-  /**
-   * Specifies the region of a tool bar.
-   */
-  public static final Region TOOL_BAR =
-    new Region("ToolBar", "ToolBarUI", false);
-
-  /**
-   * Specifies the content region of a tool bar. This is a subregion of a tool
-   * bar.
-   */
-  public static final Region TOOL_BAR_CONTENT =
-    new Region("ToolBarContent", null, true);
-
-  /**
-   * Specifies the drag window region of a tool bar. This is a subregion of a
-   * tool bar.
-   */
-  public static final Region TOOL_BAR_DRAG_WINDOW =
-    new Region("ToolBarDragWindow", null, false);
-
-  /**
-   * Specifies the region of a tool tip.
-   */
-  public static final Region TOOL_TIP =
-    new Region("ToolTip", "ToolTipUI", false);
-
-  /**
-   * Specifies the region of a separator of a tool bar. This is a subregion of
-   * a tool bar.
-   */
-  public static final Region TOOL_BAR_SEPARATOR =
-    new Region("ToolBarSeparator", null, false);
-
-  /**
-   * Specifies the region of a tree.
-   */
-  public static final Region TREE =
-    new Region("Tree", "TreeUI", false);
-
-  /**
-   * Specifies the region of a tree cell. This is a subregion of a tree.
-   */
-  public static final Region TREE_CELL =
-    new Region("TreeCell", null, true);
-
-  /**
-   * Specifies the region of a viewport.
-   */
-  public static final Region VIEWPORT =
-    new Region("Viewport", "ViewportUI", false);
-
-
-  /**
-   * The UI class id for the region. This is package private because this will
-   * be used by other classes in that package.
-   */
-  String ui;
-
-  /**
-   * The name of the region.
-   */
-  private String name;
-
-  /**
-   * If this region is a subregion or not.
-   */
-  private boolean subregion;
-
-  /**
-   * Creates a new <code>Region</code> with the specified name and ui ID.
-   * The <code>ui</code> must be the same what
-   * {@link javax.swing.JComponent#getUIClassID()} returns for toplevel regions. For
-   * subregions this should be <code>null</code>.
-   *
-   * @param name the name of the region
-   * @param ui the UI class ID of the region or <code>null</code> for
-   *        subregions
-   * @param subregion <code>true</code> if this region is a subregion,
-   *        <code>false</code> otherwise
-   */
-  protected Region(String name, String ui, boolean subregion)
-  {
-    this.name = name;
-    this.ui = ui;
-    this.subregion = subregion;
-  }
-
-  /**
-   * Returns <code>true</code> if this region describes a subregion of a
-   * component, <code>false</code> if it describes a component region itself.
-   *
-   * @return <code>true</code> if this region describes a subregion of a
-   *         component, <code>false</code> if it describes a component region
-   *         itself
-   */
-  public boolean isSubregion()
-  {
-    return subregion;
-  }
-
-  /**
-   * Returns the name of the region.
-   *
-   * @return the name of the region
-   */
-  public String getName()
-  {
-    return name;
-  }
-
-  /**
-   * Returns the name of the region.
-   *
-   * @return  the name of the region
-   */
-  public String toString()
-  {
-    return name;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/synth/SynthConstants.java b/libjava/classpath/javax/swing/plaf/synth/SynthConstants.java
deleted file mode 100644
index 306024c..0000000
--- a/libjava/classpath/javax/swing/plaf/synth/SynthConstants.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/* SynthConstants.java -- A couple of constants used by Synth
-   Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.synth;
-
-/**
- * A couple of constants used by the Synth Look and Feel.
- *
- * @author Roman Kennke (kennke@aicas.com)
- *
- * @since 1.5
- */
-public interface SynthConstants
-{
-  /**
-   * A primary state indicating that a component is enabled.
-   */
-  static final int ENABLED = 1;
-
-  /**
-   * A primary state indicating that a component is disabled.
-   */
-  static final int DISABLED = 8;
-
-  /**
-   * A primary state indicating that the mouse is over a region.
-   */
-  static final int MOUSE_OVER = 2;
-
-  /**
-   * A primary state indicating that the component is in a pressed state (which
-   * does not necessarily mean that the mouse is pressed over the component).
-   */
-  static final int PRESSED = 4;
-
-  /**
-   * Indicates that a region has focus.
-   */
-  static final int FOCUSED = 256;
-
-  /**
-   * Indicates that a region is selected.
-   */
-  static final int SELECTED = 512;
-
-  /**
-   * Indicates that a region is in its default state.
-   */
-  static final int DEFAULT = 1024;
-}
diff --git a/libjava/classpath/javax/swing/plaf/synth/SynthContext.java b/libjava/classpath/javax/swing/plaf/synth/SynthContext.java
deleted file mode 100644
index 83536da..0000000
--- a/libjava/classpath/javax/swing/plaf/synth/SynthContext.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/* SynthContext.java -- Contextual information about a region
-   Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.synth;
-
-import javax.swing.JComponent;
-
-/**
- * Contains some contextual information about a region. The information passed
- * in objects of this class can only be considered valid during the method call
- * that it was passed to.
- *
- * @author Roman Kennke (kennke@aicas.com)
- *
- * @since 1.5
- */
-public class SynthContext
-{
-
-  /**
-   * The component.
-   */
-  private JComponent component;
-
-  /**
-   * The region of the component.
-   */
-  private Region region;
-
-  /**
-   * The style of the component.
-   */
-  private SynthStyle style;
-
-  /**
-   * The state of the component.
-   */
-  private int state;
-
-  /**
-   * Creates a new <code>SynthContext</code> object.
-   *
-   * @param component the component for which this context is used
-   * @param region the region of the component
-   * @param style the style associated with the component
-   * @param state a or'ed bitmask of the constants from {@link SynthConstants}
-   */
-  public SynthContext(JComponent component, Region region, SynthStyle style,
-                      int state)
-  {
-    this.component = component;
-    this.region = region;
-    this.style = style;
-    this.state = state;
-  }
-
-  /**
-   * Returns the component that contains the region.
-   *
-   * @return the component that contains the region
-   */
-  public JComponent getComponent()
-  {
-    return component;
-  }
-
-  /**
-   * Returns the region that identifies this state.
-   *
-   * @return the region that identifies this state
-   */
-  public Region getRegion()
-  {
-    return region;
-  }
-
-  /**
-   * Returns the style of the region.
-   *
-   * @return the style of the region
-   */
-  public SynthStyle getStyle()
-  {
-    return style;
-  }
-
-  /**
-   * Returns the state of the component. This is a or'ed bitmask of the
-   * constants defined in {@link SynthConstants}.
-   *
-   * @return the state of the component
-   *
-   * @see SynthConstants
-   */
-  public int getComponentState()
-  {
-    return state;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/synth/SynthGraphicsUtils.java b/libjava/classpath/javax/swing/plaf/synth/SynthGraphicsUtils.java
deleted file mode 100644
index 76a46cb..0000000
--- a/libjava/classpath/javax/swing/plaf/synth/SynthGraphicsUtils.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/* SynthGraphicsUtils.java -- Wrapper for graphics primitives used in Synth
-   Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.synth;
-
-import gnu.classpath.NotImplementedException;
-
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-
-import javax.swing.Icon;
-import javax.swing.SwingUtilities;
-
-/**
- * Wrapper for graphics primitives used in Synth.
- *
- * @author Roman Kennke (kennke@aicas.com)
- *
- * @since 1.5
- */
-public class SynthGraphicsUtils
-
-{
-  /**
-   * Creates a new <code>SynthGraphicsUtils</code> object.
-   */
-  public SynthGraphicsUtils()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Draws a line from (x1,y1) to (x2,y2).
-   *
-   * @param ctx the synth context, identifies the region
-   * @param paintKey identifies the portion of the component to be painted, may
-   *        be <code>null</code>
-   * @param g the graphics context to use for painting
-   * @param x1 the x coordinate of the start point
-   * @param y1 the y coordinate of the start point
-   * @param x2 the x coordinate of the end point
-   * @param y2 the y coordinate of the end point
-   */
-  public void drawLine(SynthContext ctx, Object paintKey, Graphics g, int x1,
-                       int y1, int x2, int y2)
-  {
-    // TODO: Correct?
-    g.drawLine(x1, y1, x2, y2);
-  }
-
-  /**
-   * Lays out a label and (if non-null) an icon. The calculated coordinates are
-   * then stored in <code>viewR</code>, <code>iconR</code> and
-   * <code>textR</code>.
-   *
-   * The alignment and position parameters may be one of the alignment or
-   * position constants defined in {@link javax.swing.SwingConstants}.
-   *
-   * @param ctx the synth context, identifies the current region
-   * @param fm the font metrics to use to fetch the text measures
-   * @param text the text to lay out, may be <code>null</code>
-   * @param icon the icon to lay out, may be <code>null</code>
-   * @param hAlign the horizontal alignment of the label
-   * @param vAlign the vertical alignment of the label
-   * @param hTextPos the horizontal text position
-   * @param vTextPos the vertical text position
-   * @param viewR the view rectangle (return parameter)
-   * @param iconR the icon rectangle (return parameter)
-   * @param textR the text rectangle (return parameter)
-   * @param iconTextGap the gap between text and label
-   *
-   * @return the label text, may be shortened
-   */
-  public String layoutText(SynthContext ctx, FontMetrics fm, String text,
-                           Icon icon, int hAlign, int vAlign, int hTextPos,
-                           int vTextPos, Rectangle viewR, Rectangle iconR,
-                           Rectangle textR, int iconTextGap)
-  {
-    return SwingUtilities.layoutCompoundLabel(fm, text, icon, vAlign, hAlign,
-                                              vTextPos, hTextPos, viewR, iconR,
-                                              textR, iconTextGap);
-  }
-
-  /**
-   * Returns the width of the string <code>text</code> for the specified font
-   * and font metrics.
-   *
-   * @param ctx identifies the current region
-   * @param font the font
-   * @param fm the font metrics to use
-   * @param text the text to be measured
-   *
-   * @return the width of the string <code>text</code> for the specified font
-   *         and font metrics
-   */
-  public int computeStringWidth(SynthContext ctx, Font font, FontMetrics fm,
-                                String text)
-  {
-    return fm.stringWidth(text);
-  }
-
-  /**
-   * Calculates the minimums size that is needed to render the label with
-   * <code>text</code> and <code>icon</code> correctly.
-   *
-   * @param ctx identifies the current region
-   * @param font the font to use
-   * @param text the label text
-   * @param icon the label icon
-   * @param hAlign the horizontal alignment
-   * @param vAlign the vertical alignment
-   * @param hTextPosition the horizontal text position
-   * @param vTextPosition the vertical text position
-   * @param iconTextGap the gap between icon and text
-   * @param mnemonicIndex index to the mnemonic character within
-   *        <code>text</code>
-   *
-   * @return the minimums size that is needed to render the label with
-   *         <code>text</code> and <code>icon</code> correctly
-   */
-  public Dimension getMinimumSize(SynthContext ctx, Font font, String text,
-                                  Icon icon, int hAlign, int vAlign,
-                                  int hTextPosition,int vTextPosition,
-                                  int iconTextGap,int mnemonicIndex)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-    return new Dimension(0, 0);
-  }
-
-  /**
-   * Calculates the preferred size that is needed to render the label with
-   * <code>text</code> and <code>icon</code> correctly.
-   *
-   * @param ctx identifies the current region
-   * @param font the font to use
-   * @param text the label text
-   * @param icon the label icon
-   * @param hAlign the horizontal alignment
-   * @param vAlign the vertical alignment
-   * @param hTextPosition the horizontal text position
-   * @param vTextPosition the vertical text position
-   * @param iconTextGap the gap between icon and text
-   * @param mnemonicIndex index to the mnemonic character within
-   *        <code>text</code>
-   *
-   * @return the preferred size that is needed to render the label with
-   *         <code>text</code> and <code>icon</code> correctly
-   */
-  public Dimension getPreferredSize(SynthContext ctx, Font font, String text,
-                                    Icon icon, int hAlign, int vAlign,
-                                    int hTextPosition,int vTextPosition,
-                                    int iconTextGap,int mnemonicIndex)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-    return new Dimension(0, 0);
-  }
-
-  /**
-   * Calculates the maximum size that is needed to render the label with
-   * <code>text</code> and <code>icon</code> correctly.
-   *
-   * @param ctx identifies the current region
-   * @param font the font to use
-   * @param text the label text
-   * @param icon the label icon
-   * @param hAlign the horizontal alignment
-   * @param vAlign the vertical alignment
-   * @param hTextPosition the horizontal text position
-   * @param vTextPosition the vertical text position
-   * @param iconTextGap the gap between icon and text
-   * @param mnemonicIndex index to the mnemonic character within
-   *        <code>text</code>
-   *
-   * @return the maximum size that is needed to render the label with
-   *         <code>text</code> and <code>icon</code> correctly
-   */
-  public Dimension getMaximumSize(SynthContext ctx, Font font, String text,
-                                  Icon icon, int hAlign, int vAlign,
-                                  int hTextPosition,int vTextPosition,
-                                  int iconTextGap,int mnemonicIndex)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-    return new Dimension(0, 0);
-  }
-
-  /**
-   * Returns the maximum character height of the font from the component of the
-   * passed in <code>context</code>.
-   *
-   * @param context identifies the current component and region
-   *
-   * @return the maximum character height of the font from the component of the
-   *         passed in <code>context</code>
-   */
-  public int getMaximumCharHeight(SynthContext context)
-  {
-    Component comp = context.getComponent();
-    Font font = comp.getFont();
-    return comp.getFontMetrics(font).getHeight();
-  }
-
-  /**
-   * Renders the specified <code>text</code> within the <code>bounds</code>.
-   *
-   * @param ctx identifies the component and region
-   * @param g the graphics context for drawing the tetx
-   * @param text the text to be rendered
-   * @param bounds the bounds within which the text should be rendered
-   * @param mnemonicIndex the index of the mnemonic character within
-   *        <code>text</code>
-   */
-  public void paintText(SynthContext ctx, Graphics g, String text,
-                        Rectangle bounds, int mnemonicIndex)
-  {
-    // FIXME: This is very primitive and should be improved to paint the
-    // mnemonic char.
-    g.drawString(text, bounds.x, bounds.y);
-  }
-
-  /**
-   * Renders the specified <code>text</code> at the specified location.
-   *
-   * @param ctx identifies the component and region
-   * @param g the graphics context for drawing the tetx
-   * @param text the text to be rendered
-   * @param x the X location where the text should be rendered
-   * @param y the Y location where the text should be rendered
-   * @param mnemonicIndex the index of the mnemonic character within
-   *        <code>text</code>
-   */
-  public void paintText(SynthContext ctx, Graphics g, String text,
-                        int x, int y, int mnemonicIndex)
-  {
-    // FIXME: This is very primitive and should be improved to paint the
-    // mnemonic char.
-    g.drawString(text, x, y);
-  }
-
-  public void paintText(SynthContext ctx, Graphics g, String text, Icon icon,
-                        int hAlign, int vAlign, int hTextPosition,
-                        int vTextPosition, int iconTextGap, int mnemonicIndex,
-                        int textOffset)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/synth/SynthLookAndFeel.java b/libjava/classpath/javax/swing/plaf/synth/SynthLookAndFeel.java
deleted file mode 100644
index ac24dd4..0000000
--- a/libjava/classpath/javax/swing/plaf/synth/SynthLookAndFeel.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/* SynthLookAndFeel.java -- A skinnable Swing look and feel
-   Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.synth;
-
-import gnu.classpath.NotImplementedException;
-
-import java.awt.Component;
-import java.io.InputStream;
-import java.text.ParseException;
-
-import javax.swing.JComponent;
-import javax.swing.UIDefaults;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.basic.BasicLookAndFeel;
-
-
-/**
- * A look and feel that can be customized either by providing a file to
- * {@link #load} or by setting a {@link SynthStyleFactory} using
- * {@link #setStyleFactory}.
- *
- * @author Roman Kennke (kennke@aicas.com)
- *
- * @since 1.5
- */
-public class SynthLookAndFeel
-  extends BasicLookAndFeel
-{
-
-  /**
-   * The style factory that will be used by the UI classes to load their
-   * style sets from.
-   */
-  private static SynthStyleFactory styleFactory;
-
-  /**
-   * Creates a new instance of <code>SynthLookAndFeel</code>. In order to use
-   * the Synth look and feel you either need to call {@link #load} to load a
-   * set of styles from an XML file, or you need to call
-   * {@link #setStyleFactory} to provide your own style factory.
-   */
-  public SynthLookAndFeel()
-  {
-    // FIXME: What to do here, if anything?
-  }
-
-  /**
-   * Sets the style factory that the UI classes of Synth will use to load their
-   * sets of styles.
-   *
-   * @param sf the style factory to set
-   */
-  public static void setStyleFactory(SynthStyleFactory sf)
-  {
-    styleFactory = sf;
-  }
-
-  /**
-   * Returns the current style factory that the UI classes of Synth will use to
-   * load their sets of styles.
-   *
-   * @return the current style factory
-   */
-  public static SynthStyleFactory getStyleFactory()
-  {
-    return styleFactory;
-  }
-
-  /**
-   * Returns the style for the specified component and region.
-   *
-   * @param c the component for which to return the style
-   * @param r the region of the component for which to return the style
-   *
-   * @return the style for the specified component and region
-   */
-  public static SynthStyle getStyle(JComponent c, Region r)
-  {
-    return getStyleFactory().getStyle(c, r);
-  }
-
-  /**
-   * Updates all style information of the component and it's children.
-   *
-   * @param c the componenent for which to update the style
-   */
-  public static void updateStyles(Component c)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this properly.
-  }
-
-  /**
-   * Returns the region for a given Swing component.
-   *
-   * @param c the Swing component for which to fetch the region
-   *
-   * @return the region for a given Swing component
-   */
-  public static Region getRegion(JComponent c)
-    throws NotImplementedException
-  {
-    // FIXME: This can be implemented as soon as we have the component UI
-    // classes in place, since this region will be matched via the UI classes.
-    return null;
-  }
-
-  /**
-   * Creates the Synth look and feel component UI instance for the given
-   * component.
-   *
-   * @param c the component for which to create a UI instance
-   *
-   * @return the Synth look and feel component UI instance for the given
-   *         component
-   */
-  public static ComponentUI createUI(JComponent c)
-    throws NotImplementedException
-  {
-    // FIXME: This can be implemented as soon as we have the component UI
-    // classes in place.
-    return null;
-  }
-
-  /**
-   * Initializes this look and feel.
-   */
-  public void initialize()
-    throws NotImplementedException
-  {
-    super.initialize();
-    // TODO: Implement at least the following here:
-    // if (styleFactory != null)
-    //   styleFactory = new DefaultStyleFactory();
-  }
-
-  /**
-   * Uninitializes the look and feel.
-   */
-  public void uninitialize()
-    throws NotImplementedException
-  {
-    super.uninitialize();
-    // TODO: What to do here?
-  }
-
-  /**
-   * Returns the UI defaults of this look and feel.
-   *
-   * @return the UI defaults of this look and feel
-   */
-  public UIDefaults getDefaults()
-    throws NotImplementedException
-  {
-    // FIXME: This is certainly wrong. The defaults should be fetched/merged
-    // from the file from which the l&f is loaded.
-    return super.getDefaults();
-  }
-
-  /**
-   * FIXME: DOCUMENT ME!
-   *
-   * @return FIXME
-   */
-  public boolean shouldUpdateStyleOnAncestorChanged()
-    throws NotImplementedException
-  {
-    return false;
-  }
-
-  /**
-   * Loads a set of {@link SynthStyle}s that are used for the look and feel of
-   * the components. The <code>resourceBase</code> parameter is used to resolve
-   * references against, like icons and other files.
-   *
-   * @param in the input stream from where to load the styles
-   * @param resourceBase the base against which references are resolved.
-   *
-   * @throws ParseException if the input stream cannot be parsed
-   * @throws IllegalArgumentException if one of the parameters is
-   *         <code>null</code>
-   */
-  public void load(InputStream in, Class<?> resourceBase)
-    throws ParseException, IllegalArgumentException, NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-  }
-
-  /**
-   * Returns a textual description of the Synth look and feel. This returns
-   * &quot;Synth look and feel&quot;.
-   *
-   * @return a textual description of the Synth look and feel
-   */
-  public String getDescription()
-  {
-    return "Synth look and feel";
-  }
-
-  /**
-   * Returns the ID of the Synth look and feel. This returns &quot;Synth&quot;.
-   *
-   * @return the ID of the Synth look and feel
-   */
-  public String getID()
-  {
-    return "Synth";
-  }
-
-  /**
-   * Returns the name of the Synth look and feel. This returns
-   * &quot;Synth look and feel&quot;.
-   *
-   * @return the name of the Synth look and feel
-   */
-  public String getName()
-  {
-    return "Synth look and feel";
-  }
-
-  /**
-   * Returns <code>false</code> since the Synth look and feel is not a native
-   * look and feel.
-   *
-   * @return <code>false</code>
-   */
-  public boolean isNativeLookAndFeel()
-  {
-    return false;
-  }
-
-  /**
-   * Returns <code>true</code> since the Synth look and feel is always a
-   * supported look and feel.
-   *
-   * @return <code>true</code>
-   */
-  public boolean isSupportedLookAndFeel()
-  {
-    return true;
-  }
-
-}
diff --git a/libjava/classpath/javax/swing/plaf/synth/SynthPainter.java b/libjava/classpath/javax/swing/plaf/synth/SynthPainter.java
deleted file mode 100644
index 6a57dad..0000000
--- a/libjava/classpath/javax/swing/plaf/synth/SynthPainter.java
+++ /dev/null
@@ -1,1999 +0,0 @@
-/* SynthPainter.java -- An abstract painter for synth components
-   Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.synth;
-
-import java.awt.Graphics;
-
-/**
- * The abstract definition of a delegate that takes the responsibility of
- * painting for the components.
- *
- * This class is defined to be abstract and all methods are no-ops.
- *
- * @author Roman Kennke (kennke@aicas.com)
- *
- * @since 1.5
- */
-public abstract class SynthPainter
-{
-
-  /**
-   * Creates a new <code>SynthPainter</code> object.
-   */
-  public SynthPainter()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the foreground of an arrow button.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   * @param dir the orientation of the arrow
-   */
-  public void paintArrowButtonForeground(SynthContext ctx, Graphics g, int x,
-                                         int y, int w, int h, int dir)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the foreground of a progress bar.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   * @param dir the orientation of the progress bar
-   */
-  public void paintProgressBarForeground(SynthContext ctx, Graphics g,
-                                         int x, int y, int w, int h,
-                                         int dir)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the foreground of a separator.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   * @param dir the orientation of the separator
-   */
-  public void paintSeparatorForeground(SynthContext ctx, Graphics g,
-                                       int x, int y, int w, int h,
-                                       int dir)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the foreground of a split pane's divider.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   * @param dir the orientation of the divider
-   */
-  public void paintSplitPaneDividerForeground(SynthContext ctx, Graphics g,
-                                              int x, int y, int w, int h,
-                                              int dir)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints a split pane's divider, when it is being dragged.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   * @param dir the orientation of the divider
-   */
-  public void paintSplitPaneDragDivider(SynthContext ctx, Graphics g,
-                                        int x, int y, int w, int h,
-                                        int dir)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the indicator for a tree cell which has the focus.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTreeCellFocus(SynthContext ctx, Graphics g,
-                                 int x, int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of an arrow button.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintArrowButtonBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of an arrow button.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintArrowButtonBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a button.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintButtonBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a button.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintButtonBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a check box.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintCheckBoxBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a check box.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintCheckBoxBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a check box menu item.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintCheckBoxMenuItemBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a check box menu item.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintCheckBoxMenuItemBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a color chooser.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintColorChooserBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a color chooser.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintColorChooserBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a combo box.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintComboBoxBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a combo box.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintComboBoxBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a desktop icon.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintDesktopIconBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a desktop icon.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintDesktopIconBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a desktop pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintDesktopPaneBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a desktop pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintDesktopPaneBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of an editor pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintEditorPaneBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of an editor pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintEditorPaneBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a file chooser.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintFileChooserBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a file chooser.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintFileChooserBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a formatted text field.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintFormattedTextFieldBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a formatted text field.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintFormattedTextFieldBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of an internal frame.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintInternalFrameBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of an internal frame.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintInternalFrameBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of an internal frame's title pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintInternalFrameTitlePaneBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of an internal frame's title pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintInternalFrameTitlePaneBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a label.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintLabelBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a label.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintLabelBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a list.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintListBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a list.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintListBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a menu.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintMenuBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a menu.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintMenuBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a menu bar.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintMenuBarBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a menu bar.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintMenuBarBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a menu item.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintMenuItemBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a menu item.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintMenuItemBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of an option pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintOptionPaneBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of an option pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintOptionPaneBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a panel.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintPanelBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a panel.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintPanelBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a password field.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintPasswordFieldBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a password field.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintPasswordFieldBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a popup menu.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintPopupMenuBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a popup menu.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintPopupMenuBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a progress bar.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintProgressBarBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a progress bar.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintProgressBarBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a radio button.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintRadioButtonBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a radio button.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintRadioButtonBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a radio button menu item.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintRadioButtonMenuItemBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a radio button menu item.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintRadioButtonMenuItemBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a root pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintRootPaneBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a root pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintRootPaneBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a scrollbar.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintScrollBarBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a scrollbar.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintScrollBarBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a scrollbar's thumb.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   * @param orientation orientation of the scrollbar
-   */
-  public void paintScrollBarThumbBackground(SynthContext ctx, Graphics g, int x,
-                                            int y, int w, int h, int orientation)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a scrollbar's thumb.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   * @param orientation orientation of the scrollbar
-   */
-  public void paintScrollBarThumbBorder(SynthContext ctx, Graphics g, int x,
-                                        int y, int w, int h, int orientation)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a scrollbar's track.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintScrollBarTrackBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a scrollbar's track.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintScrollBarTrackBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a scroll pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintScrollPaneBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a scroll pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintScrollPaneBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a separator.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintSeparatorBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a separator.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintSeparatorBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a slider.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintSliderBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a slider.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintSliderBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a slider's thumb.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   * @param orientation orientation of the slider
-   */
-  public void paintSliderThumbBackground(SynthContext ctx, Graphics g, int x,
-                                         int y, int w, int h, int orientation)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a slider's thumb.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   * @param orientation orientation of the slider
-   */
-  public void paintSliderThumbBorder(SynthContext ctx, Graphics g, int x,
-                                     int y, int w, int h, int orientation)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a slider's track.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintSliderTrackBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a slider's track.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintSliderTrackBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a spinner.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintSpinnerBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a spinner.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintSpinnerBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a split pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintSplitPaneBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a split pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintSplitPaneBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a split pane's divider.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintSplitPaneDividerBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a tabbed pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTabbedPaneBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a tabbed pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTabbedPaneBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of the contents of a tabbed pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTabbedPaneContentBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of the contents of a tabbed pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTabbedPaneContentBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of the tab area of a tabbed pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTabbedPaneTabAreaBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of the tab area of a tabbed pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTabbedPaneTabAreaBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a tab of a tabbed pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   * @param index the index of the tab to paint
-   */
-  public void paintTabbedPaneTabBackground(SynthContext ctx, Graphics g, int x,
-                                           int y, int w, int h, int index)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a tab of a tabbed pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   * @param index the index of the tab to paint
-   */
-  public void paintTabbedPaneTabBorder(SynthContext ctx, Graphics g, int x,
-                                       int y, int w, int h, int index)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a table.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTableBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a table.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTableBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a table's header.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTableHeaderBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a table's header.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTableHeaderBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a text area.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTextAreaBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a text area.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTextAreaBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a text field.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTextFieldBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a text field.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTextFieldBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a text pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTextPaneBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a text pane.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTextPaneBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a toggle button.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintToggleButtonBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a toggle button.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintToggleButtonBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a toolbar.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintToolBarBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a toolbar.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintToolBarBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of the contents of a toolbar.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintToolBarContentBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of the contents of a toolbar.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintToolBarContentBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of the window of a detached toolbar.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintToolBarDragWindowBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of the window of a detached toolbar.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintToolBarDragWindowBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a tool tip.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintToolTipBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a tool tip.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintToolTipBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a tree.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTreeBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a tree.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTreeBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a cell in a tree.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTreeCellBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a cell in a tree.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintTreeCellBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the background of a viewport.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintViewportBackground(SynthContext ctx, Graphics g, int x,
-                                   int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Paints the border of a viewport.
-   *
-   * @param ctx the synth context identifying the component and region for
-   *        painting
-   * @param g the graphics context to use for painting
-   * @param x the X coordinate of the area to paint
-   * @param y the Y coordinate of the area to paint
-   * @param w the width of the area to paint
-   * @param h the height of the area to paint
-   */
-  public void paintViewportBorder(SynthContext ctx, Graphics g, int x,
-                               int y, int w, int h)
-  {
-    // Nothing to do here.
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/synth/SynthStyle.java b/libjava/classpath/javax/swing/plaf/synth/SynthStyle.java
deleted file mode 100644
index f5ab3df..0000000
--- a/libjava/classpath/javax/swing/plaf/synth/SynthStyle.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/* SynthStyle.java -- A set of style properties
-   Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.synth;
-
-import gnu.classpath.NotImplementedException;
-
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.Insets;
-
-import javax.swing.Icon;
-
-/**
- * A set of style properties that can be installed on a component.
- *
- * @author Roman Kennke (kennke@aicas.com)
- *
- * @since 1.5
- */
-public abstract class SynthStyle
-{
-
-  /**
-   * Creates a new <code>SynthStyle</code> object.
-   */
-  public SynthStyle()
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-  }
-
-  public SynthGraphicsUtils getGraphicsUtils(SynthContext ctx)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-    return null;
-  }
-
-  public Color getColor(SynthContext ctx, ColorType type)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-    return null;
-  }
-
-  protected abstract Color getColorForState(SynthContext ctx, ColorType type);
-
-  public Font getFont(SynthContext ctx)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-    return null;
-  }
-
-  protected abstract Font getFontForState(SynthContext ctx);
-
-  public Insets getInsets(SynthContext ctx, Insets result)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-    return null;
-  }
-
-  public SynthPainter getPainter(SynthContext ctx)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-    return null;
-  }
-
-  public boolean isOpaque(SynthContext ctx)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-    return true;
-  }
-
-  public Object get(SynthContext ctx, Object key)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-    return null;
-  }
-
-  public void installDefaults(SynthContext ctx)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-  }
-
-  public void uninstallDefaults(SynthContext ctx)
-    throws NotImplementedException
-  {
-    // FIXME: Implement this correctly.
-  }
-
-  /**
-   * A convenience method to fetch an integer property.
-   * If the property's value is a {@link Number}, then the
-   * integer value is returned.  Otherwise, the default value
-   * is returned.
-   * @param ctx the context
-   * @param key the key to fetch
-   * @param defaultValue the default value
-   * @return the integer value of the property, or the default value
-   */
-  public int getInt(SynthContext ctx, Object key, int defaultValue)
-  {
-    Object obj = get(ctx, key);
-    if (obj instanceof Number)
-      return ((Number) obj).intValue();
-    return defaultValue;
-  }
-
-  /**
-   * A convenience method to fetch an integer property.
-   * If the property's value is a {@link Boolean}, then the
-   * value is returned.  Otherwise, the default value
-   * is returned.
-   * @param ctx the context
-   * @param key the key to fetch
-   * @param defaultValue the default value
-   * @return the boolean value of the property, or the default value
-   */
-  public boolean getBoolean(SynthContext ctx, Object key,
-                            boolean defaultValue)
-  {
-    Object obj = get(ctx, key);
-    if (obj instanceof Boolean)
-      return ((Boolean) obj).booleanValue();
-    return defaultValue;
-  }
-
-  /**
-   * A convenience method to fetch an Icon-valued property.
-   * If the property's value is an {@link Icon}, then the
-   * value is returned.  Otherwise, null is returned.
-   * @param ctx the context
-   * @param key the key to fetch
-   * @return the icon, or null
-   */
-  public Icon getIcon(SynthContext ctx, Object key)
-  {
-    Object obj = get(ctx, key);
-    if (key instanceof Icon)
-      return (Icon) obj;
-    return null;
-  }
-
-  /**
-   * A convenience method to fetch a String property.
-   * If the property's value is a {@link String}, then the
-   * value is returned.  Otherwise, the default value
-   * is returned.
-   * @param ctx the context
-   * @param key the key to fetch
-   * @param defaultValue the default value
-   * @return the String value of the property, or the default value
-   */
-  public String getString(SynthContext ctx, Object key, String defaultValue)
-  {
-    Object obj = get(ctx, key);
-    if (obj instanceof String)
-      return (String) obj;
-    return defaultValue;
-  }
-}
diff --git a/libjava/classpath/javax/swing/plaf/synth/SynthStyleFactory.java b/libjava/classpath/javax/swing/plaf/synth/SynthStyleFactory.java
deleted file mode 100644
index 569753d..0000000
--- a/libjava/classpath/javax/swing/plaf/synth/SynthStyleFactory.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/* SynthStyleFactory.java -- A factory for SynthStyles
-   Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.synth;
-
-import javax.swing.JComponent;
-
-public abstract class SynthStyleFactory
-{
-
-  /**
-   * Creates a new <code>SynthStyleFactory</code>.
-   */
-  public SynthStyleFactory()
-  {
-    // Nothing to do here.
-  }
-
-  /**
-   * Returns a {@link SynthStyle} for the specified region of the specified
-   * component.
-   *
-   * @param c the component for which to create a style
-   * @param id the region of the component
-   *
-   * @return a style for the specified region of the specified component
-   */
-  public abstract SynthStyle getStyle(JComponent c, Region id);
-}
diff --git a/libjava/classpath/javax/swing/plaf/synth/package.html b/libjava/classpath/javax/swing/plaf/synth/package.html
deleted file mode 100644
index b977e46..0000000
--- a/libjava/classpath/javax/swing/plaf/synth/package.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!-- package.html - describes classes in javax.swing.plaf.metal package.
-   Copyright (C) 2002, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. -->
-
-<html>
-<head><title>GNU Classpath - javax.swing.plaf.synth</title></head>
-
-<body>
-<p>Provides a look and feel that can be customized by and XML file or by
-  providing a custom {@link SynthStyleFactory}.
-</p>
-</body>
-</html>
-- 
cgit v1.1