From 5ee8128f1b139e4e1e6330acca7c014aee28abc7 Mon Sep 17 00:00:00 2001 From: Michael Koch Date: Sat, 21 Jun 2003 12:02:11 +0000 Subject: [PATCH] SpinnerModel.java: New file from classpath. 2003-06-21 Michael Koch * javax/swing/SpinnerModel.java: New file from classpath. * javax/swing/border/LineBorder.java, javax/swing/border/SoftBevelBorder.java, javax/swing/plaf/BorderUIResource.java, javax/swing/plaf/basic/BasicBorders.java: New versions from classpath. * javax/swing/plaf/basic/doc-files/BasicBorders.MenuBarBorder-1.png, javax/swing/plaf/basic/doc-files/BasicBorders.RadioButtonBorder-1.png, javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-1.png, javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-2.png, javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneDividerBorder-1.png, javax/swing/plaf/basic/doc-files/BasicBorders.ToggleButtonBorder-1.png: New binary files from classpath. From-SVN: r68299 --- libjava/ChangeLog | 17 + libjava/javax/swing/SpinnerModel.java | 54 ++ libjava/javax/swing/border/LineBorder.java | 9 + .../javax/swing/border/SoftBevelBorder.java | 6 +- .../javax/swing/plaf/BorderUIResource.java | 6 +- .../javax/swing/plaf/basic/BasicBorders.java | 569 +++++++++++++++++- .../BasicBorders.MenuBarBorder-1.png | Bin 0 -> 3180 bytes .../BasicBorders.RadioButtonBorder-1.png | Bin 0 -> 2667 bytes .../BasicBorders.SplitPaneBorder-1.png | Bin 0 -> 8803 bytes .../BasicBorders.SplitPaneBorder-2.png | Bin 0 -> 5976 bytes .../BasicBorders.SplitPaneDividerBorder-1.png | Bin 0 -> 7169 bytes .../BasicBorders.ToggleButtonBorder-1.png | Bin 0 -> 1874 bytes 12 files changed, 649 insertions(+), 12 deletions(-) create mode 100644 libjava/javax/swing/SpinnerModel.java create mode 100644 libjava/javax/swing/plaf/basic/doc-files/BasicBorders.MenuBarBorder-1.png create mode 100644 libjava/javax/swing/plaf/basic/doc-files/BasicBorders.RadioButtonBorder-1.png create mode 100644 libjava/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-1.png create mode 100644 libjava/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-2.png create mode 100644 libjava/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneDividerBorder-1.png create mode 100644 libjava/javax/swing/plaf/basic/doc-files/BasicBorders.ToggleButtonBorder-1.png diff --git a/libjava/ChangeLog b/libjava/ChangeLog index d00354d257b7..34a9282883ad 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,20 @@ +2003-06-21 Michael Koch + + * javax/swing/SpinnerModel.java: + New file from classpath. + * javax/swing/border/LineBorder.java, + javax/swing/border/SoftBevelBorder.java, + javax/swing/plaf/BorderUIResource.java, + javax/swing/plaf/basic/BasicBorders.java: + New versions from classpath. + * javax/swing/plaf/basic/doc-files/BasicBorders.MenuBarBorder-1.png, + javax/swing/plaf/basic/doc-files/BasicBorders.RadioButtonBorder-1.png, + javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-1.png, + javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-2.png, + javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneDividerBorder-1.png, + javax/swing/plaf/basic/doc-files/BasicBorders.ToggleButtonBorder-1.png: + New binary files from classpath. + 2003-06-21 Michael Koch * java/util/logging/LogRecord.java, diff --git a/libjava/javax/swing/SpinnerModel.java b/libjava/javax/swing/SpinnerModel.java new file mode 100644 index 000000000000..87d593068d6f --- /dev/null +++ b/libjava/javax/swing/SpinnerModel.java @@ -0,0 +1,54 @@ +/* SpinnerModel.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., 59 Temple Place, Suite 330, Boston, MA +02111-1307 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; + +import javax.swing.event.ChangeListener; + +/** + * @since 1.4 + */ +public interface SpinnerModel +{ + public void setValue (Object value); + public Object getValue (); + public Object getNextValue (); + public Object getPreviousValue (); + public void addChangeListener (ChangeListener listener); + public void removeChangeListener (ChangeListener listener); +} diff --git a/libjava/javax/swing/border/LineBorder.java b/libjava/javax/swing/border/LineBorder.java index 17ba26ef641a..3c85c29dfdba 100644 --- a/libjava/javax/swing/border/LineBorder.java +++ b/libjava/javax/swing/border/LineBorder.java @@ -296,6 +296,15 @@ public class LineBorder } + /** + * Returns the color of the line. + */ + public Color getLineColor() + { + return lineColor; + } + + /** * Returns the thickness of the line in pixels. */ diff --git a/libjava/javax/swing/border/SoftBevelBorder.java b/libjava/javax/swing/border/SoftBevelBorder.java index 7b2fca71be49..c08fb00d259f 100644 --- a/libjava/javax/swing/border/SoftBevelBorder.java +++ b/libjava/javax/swing/border/SoftBevelBorder.java @@ -60,9 +60,11 @@ public class SoftBevelBorder { /** * Determined using the serialver tool - * of Apple/Sun JDK 1.3.1 on MacOS X 10.1.5. + * of Sun JDK 1.4.1_01 on GNU/Linux 2.4.20. Interestingly, + * the Apple/Sun JDK 1.3.1 on MacOS X 10.1.5 gives a different + * value, namely -6658357140774549493L. */ - static final long serialVersionUID = -6658357140774549493L; + static final long serialVersionUID = 5248789787305979975L; /** diff --git a/libjava/javax/swing/plaf/BorderUIResource.java b/libjava/javax/swing/plaf/BorderUIResource.java index 22d7d5c0944e..9f87a8dd35f1 100644 --- a/libjava/javax/swing/plaf/BorderUIResource.java +++ b/libjava/javax/swing/plaf/BorderUIResource.java @@ -623,10 +623,8 @@ public class BorderUIResource * 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. - * It currently is under review, its "review ID" is 188305. - * - * -- Sascha Brawer (brawer@dandelis.ch) + * A request for enhancing the Swing API has been filed with Sun: + * http://developer.java.sun.com/developer/bugParade/bugs/4879999.html */ } diff --git a/libjava/javax/swing/plaf/basic/BasicBorders.java b/libjava/javax/swing/plaf/basic/BasicBorders.java index 85782388534f..a543302d5216 100644 --- a/libjava/javax/swing/plaf/basic/BasicBorders.java +++ b/libjava/javax/swing/plaf/basic/BasicBorders.java @@ -72,7 +72,7 @@ public class BasicBorders /** - * Returns a border that is suitable for a button. + * Returns a border for drawing push buttons. * *

The colors of the border are retrieved from the * UIDefaults of the currently active look and feel @@ -121,6 +121,136 @@ public class BasicBorders } + /** + * Returns a border for drawing radio buttons. + * + *

The colors of the border are retrieved from the + * UIDefaults of the currently active look and feel + * using the keys “RadioButton.shadow”, + * “RadioButton.darkShadow”, + * “RadioButton.light”, and + * “RadioButton.highlight”. + * + *

[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() + { + UIDefaults defaults; + Border outer; + + defaults = UIManager.getLookAndFeelDefaults(); + + /* 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( + defaults.getColor("RadioButton.shadow"), + defaults.getColor("RadioButton.darkShadow"), + defaults.getColor("RadioButton.light"), + defaults.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. + * + *

The colors of the border are retrieved from the + * UIDefaults of the currently active look and feel + * using the keys “ToggleButton.shadow”, + * “ToggleButton.darkShadow”, + * “ToggleButton.light”, and + * “ToggleButton.highlight”. + * + *

[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() + { + UIDefaults defaults; + Border outer; + + defaults = UIManager.getLookAndFeelDefaults(); + + /* 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( + defaults.getColor("ToggleButton.shadow"), + defaults.getColor("ToggleButton.darkShadow"), + defaults.getColor("ToggleButton.light"), + defaults.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. + * + *

The colors of the border are retrieved from the + * UIDefaults of the currently active look and feel + * using the keys “MenuBar.shadow” and + * “MenuBar.highlight”. + * + *

[A screen shot of a JMenuBar with this border] + * + * @return a {@link #MenuBarBorder}. + * + * @see javax.swing.JMenuBar + */ + public static Border getMenuBarBorder() + { + UIDefaults defaults; + + defaults = UIManager.getLookAndFeelDefaults(); + return new MenuBarBorder(defaults.getColor("MenuBar.shadow"), + defaults.getColor("MenuBar.highlight")); + } + + /** * Returns a shared MarginBorder. */ @@ -421,16 +551,317 @@ public class BasicBorders } } - + + /** + * A border for drawing a separator line below JMenuBar. + * + *

[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 serialver 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. + * + *

[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 left, + * right, top and + * bottom 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); } - } // class MenuBarBorder + + + /** + * 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 left, + * right, top and + * bottom fields indicate the width of the + * border at the respective edge. + * + * @return the same object that was passed for insets. + * + * @see #getBorderInsets() + */ + 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. + * + *

[A screen shot of this border] + * + *

Note about the screen shot: Normally, the + * borderPainted property is false for + * JRadioButtons. For this screen shot, it has been set to + * true so the borders get drawn. Also, a + * concretization of the Basic look and would typically provide + * icons for the various states of radio buttons. + * + *

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 { - } // class RadioButtonBorder + /** + * Determined using the serialver 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. + * + *

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 left, + * right, top and + * bottom 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 left, + * right, top and + * bottom fields indicate the width of the + * border at the respective edge. + * + * @return the same object that was passed for insets. + * + * @see #getBorderInsets() + */ + 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; + } + } + + public static class RolloverButtonBorder { } // class RolloverButtonBorder @@ -440,7 +871,133 @@ public class BasicBorders { } } // class SplitPaneBorder + + + /** + * A border for toggle buttons in the Basic look and feel. + * + *

[A screen shot of this border] + * + *

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 { - } // class ToggleButtonBorder -} // class BasicBorders + /** + * Determined using the serialver 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. + * + *

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 left, + * right, top and + * bottom 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 left, + * right, top and + * bottom fields indicate the width of the + * border at the respective edge. + * + * @return the same object that was passed for insets. + * + * @see #getBorderInsets() + */ + 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/javax/swing/plaf/basic/doc-files/BasicBorders.MenuBarBorder-1.png b/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.MenuBarBorder-1.png new file mode 100644 index 0000000000000000000000000000000000000000..13a9fa4e90f406245917b5a10be7326c4084325f GIT binary patch literal 3180 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 ppU(ZK2?YP}PagmO1V2Jp{cAd&z8 literal 0 Hc-jL100001 diff --git a/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.RadioButtonBorder-1.png b/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.RadioButtonBorder-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a6408ec7e1d1e40f1fcf71c4d27117d068392725 GIT binary patch literal 2667 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 literal 0 Hc-jL100001 diff --git a/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-1.png b/libjava/javax/swing/plaf/basic/doc-files/BasicBorders.SplitPaneBorder-1.png new file mode 100644 index 0000000000000000000000000000000000000000..db283c29a06ce3ba2a9be2d6f87c11ba9c3a217c GIT binary patch literal 8803 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