Index: modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSplitPaneUI.java =================================================================== --- modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSplitPaneUI.java (revision 490473) +++ modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSplitPaneUI.java (working copy) @@ -14,12 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -/** - * @author Sergey Burlak - * @version $Revision$ - */ - package javax.swing.plaf.basic; import java.awt.Canvas; @@ -48,7 +42,6 @@ import org.apache.harmony.x.swing.Utilities; - public class BasicSplitPaneUI extends SplitPaneUI { public class BasicHorizontalLayoutManager implements LayoutManager2 { @@ -391,10 +384,12 @@ } public class FocusHandler extends FocusAdapter { + @Override public void focusGained(final FocusEvent ev) { divider.repaint(); } + @Override public void focusLost(final FocusEvent ev) { divider.repaint(); } @@ -502,7 +497,7 @@ private boolean isContinuousLayout; private int orientation; - private int lastDragLocation = -1; + private int lastDragLocation; private int dividerLocation; private boolean isDisplayed; @@ -510,6 +505,7 @@ return new BasicSplitPaneUI(); } + @Override public void installUI(final JComponent c) { splitPane = (JSplitPane)c; @@ -524,6 +520,8 @@ divider.oneTouchExpandableChanged(); resetToPreferredSizes(getSplitPane()); + + setLastDragLocation(-1); } protected void installDefaults() { @@ -564,6 +562,7 @@ BasicSplitPaneKeyboardActions.installKeyboardActions(splitPane); } + @Override public void uninstallUI(final JComponent c) { splitPane = (JSplitPane)c; @@ -657,6 +656,11 @@ protected Component createDefaultNonContinuousLayoutDivider() { return new Canvas() { + // Note: this is not a guaratee for correct serialization/deserialization + // but rather a performace optimization + private static final long serialVersionUID = 1L; + + @Override public void paint(final Graphics g) { Color oldColor = g.getColor(); g.setColor(Color.DARK_GRAY); @@ -704,19 +708,23 @@ return new BasicSplitPaneDivider(this); } + @Override public void resetToPreferredSizes(final JSplitPane jc) { layoutManager.resetToPreferredSizes(); splitPane.repaint(); } + @Override public void setDividerLocation(final JSplitPane jc, final int location) { splitPane.revalidate(); } + @Override public int getDividerLocation(final JSplitPane jc) { return dividerLocation; } + @Override public int getMinimumDividerLocation(final JSplitPane jc) { if (getOrientation() == JSplitPane.HORIZONTAL_SPLIT) { return jc.getLeftComponent() == null ? 0 : jc.getLeftComponent().getMinimumSize().width + jc.getInsets().left; @@ -725,6 +733,7 @@ } } + @Override public int getMaximumDividerLocation(final JSplitPane jc) { Insets insets = jc.getInsets(); if (getOrientation() == JSplitPane.HORIZONTAL_SPLIT) { @@ -738,6 +747,7 @@ } } + @Override public void finishedPaintingChildren(final JSplitPane jc, final Graphics g) { g.setClip(0, 0, jc.getWidth(), jc.getHeight()); if (!isContinuousLayout() && lastDragLocation != -1) { @@ -745,18 +755,22 @@ } } + @Override public void paint(final Graphics g, final JComponent jc) { isDisplayed = true; } + @Override public Dimension getPreferredSize(final JComponent jc) { return layoutManager.preferredLayoutSize(jc); } + @Override public Dimension getMinimumSize(final JComponent jc) { return layoutManager.minimumLayoutSize(jc); } + @Override public Dimension getMaximumSize(final JComponent jc) { return layoutManager.maximumLayoutSize(jc); }