This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Re: [gui][PATCH] Fixing the BasicArrowButtons
- From: Kim Ho <kho at redhat dot com>
- To: java-patches <java-patches at gcc dot gnu dot org>
- Date: Sat, 11 Sep 2004 16:19:48 -0400
- Subject: Re: [gui][PATCH] Fixing the BasicArrowButtons
- References: <1094933813.1298.10.camel@localhost>
On Sat, 2004-09-11 at 16:16, Kim Ho wrote:
> Hi,
>
> This patch reimplements BasicArrowButton.
Sorry, just noticed there was a println in the last one.
New one attached.
? javax/swing/colorchooser/DefaultHSBChooserPanel.java.back
? javax/swing/plaf/basic/.BasicArrowButton.java.swp
? javax/swing/plaf/basic/.BasicScrollBarUI.java.swp
Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/libjava/ChangeLog,v
retrieving revision 1.2660.2.374
diff -u -r1.2660.2.374 ChangeLog
--- ChangeLog 11 Sep 2004 09:17:24 -0000 1.2660.2.374
+++ ChangeLog 11 Sep 2004 20:19:18 -0000
@@ -1,3 +1,17 @@
+2004-09-11 Kim Ho <kho@redhat.com>
+
+ * javax/swing/plaf/basic/BasicArrowButton.java:
+ Jalopy. Reimplement.
+ * javax/swing/plaf/basic/BasicScrollBarUI.java:
+ Jalopy.
+ (arrowIcon, upIcon, downIcon, leftIcon,
+ rightIcon): Removed.
+ (createIncreaseButton): Use BasicArrowButton.
+ (createDecreaseButton): Ditto.
+ * javax/swing/plaf/basic/BasicSplitPaneDivider.java:
+ (createRightOneTouchButton): Remove button border.
+ (createLeftOneTouchButton): Ditto.
+
2004-09-11 Michael Koch <konqueror@gmx.de>
* javax/swing/JSpinner.java
Index: javax/swing/plaf/basic/BasicArrowButton.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/javax/swing/plaf/basic/BasicArrowButton.java,v
retrieving revision 1.1.2.5
diff -u -r1.1.2.5 BasicArrowButton.java
--- javax/swing/plaf/basic/BasicArrowButton.java 25 Aug 2004 21:49:48 -0000 1.1.2.5
+++ javax/swing/plaf/basic/BasicArrowButton.java 11 Sep 2004 20:19:27 -0000
@@ -40,14 +40,14 @@
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
-import java.awt.Insets;
import java.awt.Graphics;
+import java.awt.Insets;
import java.awt.Polygon;
import java.awt.Rectangle;
-import javax.swing.border.Border;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.SwingConstants;
+import javax.swing.border.Border;
/**
@@ -55,163 +55,78 @@
*/
public class BasicArrowButton extends JButton implements SwingConstants
{
- /**
- * A private helper class that draws icons.
- */
- private class arrowIcon implements Icon
- {
- /** The polygon that describes the icon. */
- private Polygon arrow;
-
- /** The size of the icon. */
- private int size = 10;
-
- /**
- * Creates a new arrowIcon object using the given arrow polygon.
- *
- * @param arrow The polygon that describes the arrow.
- */
- public arrowIcon(Polygon arrow)
- {
- this.arrow = arrow;
- }
-
- /**
- * Returns the height of the icon.
- *
- * @return The height of the icon.
- */
- public int getIconHeight()
- {
- return size;
- }
-
- /**
- * Returns the width of the icon.
- *
- * @return The width of the icon.
- */
- public int getIconWidth()
- {
- return size;
- }
-
- /**
- * Sets the size of the icon.
- *
- * @param size The size of the icon.
- */
- public void setSize(int size)
- {
- this.size = size;
- }
-
- /**
- * Sets the arrow polygon.
- *
- * @param arrow The arrow polygon.
- */
- public void setArrow(Polygon arrow)
- {
- this.arrow = arrow;
- }
-
- /**
- * Paints the icon.
- *
- * @param c The Component to paint for.
- * @param g The Graphics object to draw with.
- * @param x The X coordinate to draw at.
- * @param y The Y coordinate to draw at.
- */
- public void paintIcon(Component c, Graphics g, int x, int y)
- {
- Color arrowColor;
- if (c.isEnabled())
- arrowColor = darkShadow;
- else
- arrowColor = shadow;
-
- paintIconImpl(g, x, y, arrowColor);
- }
-
- /**
- * This method does the actual painting work.
- *
- * @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 arrowColor The color to paint the arrow with.
- */
- public void paintIconImpl(Graphics g, int x, int y, Color arrowColor)
- {
- g.translate(x, y);
+ /** The default size of the Arrow buttons. */
+ private static int defaultSize = 10;
- Color saved = g.getColor();
-
- g.setColor(arrowColor);
-
- g.fillPolygon(arrow);
-
- g.setColor(saved);
- g.translate(-x, -y);
- }
- }
+ /** The Polygon that points up. */
+ private static Polygon upIcon = new Polygon(new int[] { 0, 5, 9 },
+ new int[] { 7, 2, 7 }, 3);
+
+ /** The Polygon that points down. */
+ private static Polygon downIcon = new Polygon(new int[] { 1, 5, 9 },
+ new int[] { 3, 7, 3 }, 3);
+
+ /** The Polygon that points left. */
+ private static Polygon leftIcon = new Polygon(new int[] { 7, 3, 7 },
+ new int[] { 1, 5, 9 }, 3);
+
+ /** The Polygon that points right. */
+ private static Polygon rightIcon = new Polygon(new int[] { 3, 7, 3 },
+ new int[] { 1, 5, 9 }, 3);
/** The direction to point in. */
protected int direction;
- /** The color the arrow is painted in if disabled and the bottom and
- * right edges of the button. */
- private transient Color shadow = Color.gray;
-
- /** The color the arrow is painted in if enabled and the bottom and
- * right edges of the button. */
- private transient Color darkShadow = Color.BLACK;
+ /**
+ * The color the arrow is painted in if disabled and the bottom and right
+ * edges of the button.
+ */
+ private transient Color shadow = Color.GRAY;
+
+ /**
+ * The color the arrow is painted in if enabled and the bottom and right
+ * edges of the button.
+ */
+ private transient Color darkShadow = Color.DARK_GRAY;
/** The top and left edges of the button. */
- private transient Color highlight = Color.BLACK;
-
+ private transient Color highlight = Color.WHITE;
+
/** The border around the ArrowButton. */
- private transient Border tmpBorder = new Border()
- {
- public Insets getBorderInsets(Component c)
+ private transient Border buttonBorder = new Border()
{
- return new Insets(0, 0, 0, 0);
- }
-
- public boolean isBorderOpaque()
- {
- return false;
- }
-
- public void paintBorder(Component c, Graphics g, int x, int y, int w, int h)
- {
- Rectangle bounds = getBounds();
+ public Insets getBorderInsets(Component c)
+ {
+ return new Insets(2, 2, 2, 2);
+ }
+
+ public boolean isBorderOpaque()
+ {
+ return true;
+ }
- Color saved = g.getColor();
- g.setColor(highlight);
+ public void paintBorder(Component c, Graphics g, int x, int y, int w,
+ int h)
+ {
+ Color saved = g.getColor();
+ g.setColor(highlight);
- g.drawLine(bounds.x, bounds.y, bounds.x, bounds.y + bounds.height);
- g.drawLine(bounds.x, bounds.y, bounds.x + bounds.width, bounds.y);
+ g.drawLine(x + 1, y + 1, x + w - 1, y + 1);
+ g.drawLine(x + 1, y + 1, x + 1, y + h - 1);
- g.setColor(shadow);
+ g.setColor(shadow);
- g.drawLine(bounds.x + 1, bounds.y + bounds.height - 1,
- bounds.x + bounds.width - 1, bounds.y + bounds.height - 1);
- g.drawLine(bounds.x + bounds.width - 1, bounds.y + 1,
- bounds.x + bounds.width - 1, bounds.y + bounds.height - 1);
+ 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);
- g.setColor(darkShadow);
+ g.setColor(darkShadow);
- g.drawLine(bounds.x, bounds.y + bounds.height, bounds.x + bounds.width,
- bounds.y + bounds.height);
- g.drawLine(bounds.x + bounds.width, bounds.y, bounds.x + bounds.width,
- bounds.y + bounds.height);
+ g.drawLine(x, y + h, x + w, y + h);
+ g.drawLine(x + w, y, x + w, y + h);
- g.setColor(saved);
- }
- };
+ g.setColor(saved);
+ }
+ };
/**
* Creates a new BasicArrowButton object.
@@ -221,12 +136,12 @@
public BasicArrowButton(int direction)
{
super();
+ setBorder(buttonBorder);
setDirection(direction);
- setBorder(tmpBorder);
}
/**
- * Creates a new BasicArrowButton object with the given colors and
+ * Creates a new BasicArrowButton object with the given colors and
* direction.
*
* @param direction The direction to point in.
@@ -246,6 +161,16 @@
}
/**
+ * This method returns whether the focus can traverse to this component.
+ *
+ * @return Whether the focus can traverse to this component.
+ */
+ public boolean isFocusTraversable()
+ {
+ return false;
+ }
+
+ /**
* This method returns the direction of the arrow.
*
* @return The direction of the arrow.
@@ -262,22 +187,25 @@
*/
public void setDirection(int dir)
{
- Polygon arrow = getArrow(dir, 10);
- if (getIcon() == null)
- setIcon(new arrowIcon(arrow));
- else
- ((arrowIcon) getIcon()).setArrow(arrow);
this.direction = dir;
}
/**
- * This method paints the arrow button.
+ * This method 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);
+ Insets insets = getInsets();
+ Rectangle bounds = getBounds();
+ int x = insets.left
+ + (bounds.width - insets.left - insets.right - defaultSize) / 2;
+ int y = insets.top
+ + (bounds.height - insets.left - insets.right - defaultSize) / 2;
+ paintTriangle(g, x, y, defaultSize, direction, isEnabled());
}
/**
@@ -287,7 +215,11 @@
*/
public Dimension getPreferredSize()
{
- return new Dimension(getIcon().getIconWidth(), getIcon().getIconHeight());
+ Insets insets = getInsets();
+ int w = defaultSize + insets.left + insets.right;
+ int h = defaultSize + insets.top + insets.bottom;
+
+ return new Dimension(w, h);
}
/**
@@ -311,8 +243,8 @@
}
/**
- * The method paints a triangle with the given size and direction at
- * the given x and y coordinates.
+ * The method paints a triangle with the given size and direction at the
+ * given x and y coordinates.
*
* @param g The Graphics object to paint with.
* @param x The x coordinate to paint at.
@@ -324,61 +256,90 @@
public void paintTriangle(Graphics g, int x, int y, int size, int direction,
boolean isEnabled)
{
- Polygon arrow = getArrow(direction, size);
- arrowIcon arrowI = new arrowIcon(arrow);
- arrowI.setSize(size);
-
- Color arrowColor;
- if (isEnabled())
- arrowColor = darkShadow;
- else
- arrowColor = shadow;
-
- arrowI.paintIconImpl(g, x, y, arrowColor);
- }
-
- /**
- * This is a private helper that creates polygons for a given size
- * and direction.
- *
- * @param direction The direction of the arrow.
- * @param size The size of the arrow.
- *
- * @return A new arrow polygon.
- */
- private Polygon getArrow(int direction, int size)
- {
- Polygon arrow;
- double dsize = (double) size;
-
- int one = (int) (dsize * 1 / 10);
- int two = (int) (dsize * 2 / 10);
- int five = (int) (dsize * 5 / 10);
- int eight = (int) (dsize * 8 / 10);
-
+ Polygon arrow = null;
switch (direction)
{
case NORTH:
- arrow = new Polygon(new int[] { eight, five, one },
- new int[] { eight, one, eight }, 3);
+ arrow = upIcon;
break;
case SOUTH:
- arrow = new Polygon(new int[] { eight, five, two },
- new int[] { two, eight, two }, 3);
+ arrow = downIcon;
break;
case EAST:
case RIGHT:
- arrow = new Polygon(new int[] { two, eight, two },
- new int[] { two, five, eight }, 3);
+ arrow = rightIcon;
break;
case WEST:
case LEFT:
- arrow = new Polygon(new int[] { eight, two, eight },
- new int[] { two, five, eight }, 3);
+ arrow = leftIcon;
break;
- default:
- throw new IllegalArgumentException("Invalid direction given.");
}
- return arrow;
+
+ int[] xPoints = arrow.xpoints;
+ int[] yPoints = arrow.ypoints;
+ int x1;
+ int y1;
+ int x2;
+ int y2;
+ x1 = y1 = x2 = y2 = 0;
+
+ if (size != defaultSize)
+ {
+ float scale = size * 1f / defaultSize;
+ for (int i = 0; i < 3; i++)
+ {
+ xPoints[i] *= scale;
+ yPoints[i] *= scale;
+ }
+ }
+ g.translate(x, y);
+
+ switch (direction)
+ {
+ case NORTH:
+ x1 = xPoints[0] + 2;
+ y1 = yPoints[0];
+ y2 = y1;
+ x2 = xPoints[2] - 1;
+ break;
+ case SOUTH:
+ x1 = xPoints[1];
+ y1 = yPoints[1] + 1;
+ x2 = xPoints[2] - 1;
+ y2 = yPoints[2];
+ break;
+ case LEFT:
+ case WEST:
+ x1 = xPoints[0] + 1;
+ y1 = yPoints[0] + 1;
+ x2 = x1;
+ y2 = yPoints[2] + 1;
+ break;
+ case RIGHT:
+ case EAST:
+ x1 = xPoints[2];
+ y1 = yPoints[2] + 1;
+ x2 = xPoints[1] - 1;
+ y2 = yPoints[1] + 1;
+ break;
+ }
+ Color saved = g.getColor();
+
+ if (isEnabled)
+ {
+ g.setColor(Color.DARK_GRAY);
+
+ if (arrow != null)
+ g.fillPolygon(xPoints, yPoints, 3);
+ }
+ else
+ {
+ g.setColor(Color.GRAY);
+ g.fillPolygon(xPoints, yPoints, 3);
+ g.setColor(Color.WHITE);
+ g.drawLine(x1, y1, x2, y2);
+ }
+ g.setColor(saved);
+ g.translate(-x, -y);
}
}
Index: javax/swing/plaf/basic/BasicScrollBarUI.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/javax/swing/plaf/basic/BasicScrollBarUI.java,v
retrieving revision 1.1.2.10
diff -u -r1.1.2.10 BasicScrollBarUI.java
--- javax/swing/plaf/basic/BasicScrollBarUI.java 30 Jul 2004 21:34:35 -0000 1.1.2.10
+++ javax/swing/plaf/basic/BasicScrollBarUI.java 11 Sep 2004 20:19:27 -0000
@@ -54,7 +54,6 @@
import java.awt.event.MouseMotionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
-
import javax.swing.BoundedRangeModel;
import javax.swing.Icon;
import javax.swing.JButton;
@@ -78,15 +77,14 @@
SwingConstants
{
/**
- * A helper class that listens to the two JButtons on each end
- * of the JScrollBar.
+ * 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.
+ * 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.
*/
@@ -113,8 +111,7 @@
}
/**
- * A helper class that listens to the ScrollBar's model
- * for ChangeEvents.
+ * A helper class that listens to the ScrollBar's model for ChangeEvents.
*/
protected class ModelListener implements ChangeListener
{
@@ -127,7 +124,7 @@
{
// System.err.println(this + ".stateChanged()");
calculatePreferredSize();
- layoutContainer(scrollbar);
+ layoutContainer(scrollbar);
getThumbBounds();
scrollbar.repaint();
}
@@ -157,19 +154,19 @@
decrButton.removeMouseListener(buttonListener);
incrButton = createIncreaseButton(scrollbar.getOrientation());
decrButton = createDecreaseButton(scrollbar.getOrientation());
- incrButton.addMouseListener(buttonListener);
- decrButton.addMouseListener(buttonListener);
- calculatePreferredSize();
- layoutContainer(scrollbar);
- }
+ incrButton.addMouseListener(buttonListener);
+ decrButton.addMouseListener(buttonListener);
+ calculatePreferredSize();
+ layoutContainer(scrollbar);
+ }
layoutContainer(scrollbar);
scrollbar.repaint();
}
}
/**
- * A helper class that listens for events from
- * the timer that is used to move the thumb.
+ * A helper class that listens for events from the timer that is used to
+ * move the thumb.
*/
protected class ScrollListener implements ActionListener
{
@@ -180,8 +177,8 @@
private transient boolean block;
/**
- * Creates a new ScrollListener object.
- * The default is scrolling positively with block movement.
+ * Creates a new ScrollListener object. The default is scrolling
+ * positively with block movement.
*/
public ScrollListener()
{
@@ -190,8 +187,8 @@
}
/**
- * Creates a new ScrollListener object using
- * the given direction and block.
+ * 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.
@@ -234,8 +231,7 @@
// 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))
+ if (! trackListener.shouldScroll(direction))
{
trackHighlight = NO_HIGHLIGHT;
scrollbar.repaint();
@@ -260,13 +256,14 @@
/** The current Y coordinate of the mouse. */
protected int currentMouseY;
- /** The offset between the current mouse cursor and the
- current value of the scrollbar. */
+ /**
+ * 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.
+ * This method is called when the mouse is being dragged.
*
* @param e The MouseEvent given.
*/
@@ -275,15 +272,15 @@
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);
- }
+ {
+ int value;
+ if (scrollbar.getOrientation() == SwingConstants.HORIZONTAL)
+ value = valueForXPosition(currentMouseX) - offset;
+ else
+ value = valueForYPosition(currentMouseY) - offset;
+
+ scrollbar.setValue(value);
+ }
}
/**
@@ -298,9 +295,8 @@
}
/**
- * This method is called when the mouse is
- * pressed. When it is pressed, the thumb should
- * move in blocks towards the cursor.
+ * 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.
*/
@@ -318,7 +314,7 @@
if (value == scrollbar.getValue())
return;
- if (!thumbRect.contains(e.getPoint()))
+ if (! thumbRect.contains(e.getPoint()))
{
scrollTimer.stop();
scrollListener.setScrollByBlock(true);
@@ -344,13 +340,13 @@
// to that value.
scrollbar.setValueIsAdjusting(true);
offset = value - scrollbar.getValue();
- }
- scrollbar.repaint();
+ }
+ scrollbar.repaint();
}
/**
- * This method is called when the mouse is released.
- * It should stop movement on the thumb
+ * This method is called when the mouse is released. It should stop
+ * movement on the thumb
*
* @param e The MouseEvent given.
*/
@@ -358,32 +354,32 @@
{
trackHighlight = NO_HIGHLIGHT;
scrollTimer.stop();
-
+
if (scrollbar.getValueIsAdjusting())
- scrollbar.setValueIsAdjusting(false);
+ scrollbar.setValueIsAdjusting(false);
scrollbar.repaint();
}
-
+
/**
- * A helper method that decides whether we should
- * keep scrolling in the given direction.
+ * 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.
*/
- public boolean shouldScroll (int direction)
+ public boolean shouldScroll(int direction)
{
int value;
if (scrollbar.getOrientation() == HORIZONTAL)
- value = valueForXPosition(currentMouseX);
+ value = valueForXPosition(currentMouseX);
else
- value = valueForYPosition(currentMouseY);
+ value = valueForYPosition(currentMouseY);
if (direction == POSITIVE_SCROLL)
- return (value > scrollbar.getValue());
+ return (value > scrollbar.getValue());
else
- return (value < scrollbar.getValue());
+ return (value < scrollbar.getValue());
}
}
@@ -393,8 +389,7 @@
/** The listener that listens to the model. */
protected ModelListener modelListener;
- /** The listener that listens to the scrollbar for property
- changes. */
+ /** The listener that listens to the scrollbar for property changes. */
protected PropertyChangeListener propertyChangeListener;
/** The listener that listens to the timer. */
@@ -427,8 +422,7 @@
/** The outer light shadow for the thumb. */
protected Color thumbLightShadowColor;
- /** The color that is used when the mouse press
- occurs in the track. */
+ /** The color that is used when the mouse press occurs in the track. */
protected Color trackHighlightColor;
/** The color of the track. */
@@ -471,88 +465,6 @@
protected JScrollBar scrollbar;
/**
- * A helper class that allows us to draw icons for
- * the JButton.
- */
- private static class arrowIcon implements Icon
- {
- /** The polygon that describes the icon. */
- private Polygon arrow;
-
- /**
- * Creates a new arrowIcon object.
- *
- * @param arrow The polygon that describes the arrow.
- */
- public arrowIcon(Polygon arrow)
- {
- this.arrow = arrow;
- }
-
- /**
- * Returns the height of the icon.
- *
- * @return The height of the icon.
- */
- public int getIconHeight()
- {
- return 10;
- }
-
- /**
- * Returns the width of the icon.
- *
- * @return The width of the icon.
- */
- public int getIconWidth()
- {
- return 10;
- }
-
- /**
- * Paints the icon.
- *
- * @param c The Component to paint for.
- * @param g The Graphics object to draw with.
- * @param x The X coordinate to draw at.
- * @param y The Y coordinate to draw at.
- */
- public void paintIcon(Component c, Graphics g, int x, int y)
- {
- g.translate(x, y);
-
- Color saved = g.getColor();
-
- g.setColor(Color.BLACK);
-
- g.fillPolygon(arrow);
-
- g.setColor(saved);
- g.translate(-x, -y);
- }
- }
-
- /** The Icon that points up. */
- private static Icon upIcon = new arrowIcon(new Polygon(new int[] { 2, 5, 8 },
- new int[] { 7, 3, 7 },
- 3));
-
- /** The Icon that points down. */
- private static Icon downIcon = new arrowIcon(new Polygon(new int[] { 2, 5, 8 },
- new int[] { 3, 7, 3 },
- 3));
-
- /** The Icon that points left. */
- private static Icon leftIcon = new arrowIcon(new Polygon(new int[] { 7, 3, 7 },
- new int[] { 2, 5, 8 },
- 3));
-
- /** The Icon that points right. */
- private static Icon rightIcon = new arrowIcon(new Polygon(new int[] { 3, 7, 3},
- new int[] { 2, 5, 8},
- 3));
-
- /**
* This method adds a component to the layout.
*
* @param name The name to associate with the component that is added.
@@ -565,19 +477,19 @@
}
/**
- * This method configures the scrollbar's colors. This can be
- * done by looking up the standard colors from the Look and Feel defaults.
+ * 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()
{
UIDefaults defaults = UIManager.getLookAndFeelDefaults();
-
+
trackColor = defaults.getColor("ScrollBar.track");
trackHighlightColor = defaults.getColor("ScrollBar.trackHighlight");
thumbColor = defaults.getColor("ScrollBar.thumb");
thumbHighlightColor = defaults.getColor("ScrollBar.thumbHighlight");
thumbDarkShadowColor = defaults.getColor("ScrollBar.thumbDarkShadow");
- thumbLightShadowColor = defaults.getColor("ScrollBar.thumbLightShadow");
+ thumbLightShadowColor = defaults.getColor("ScrollBar.thumbLightShadow");
}
/**
@@ -590,9 +502,9 @@
return new ArrowButtonListener();
}
- /**
- * This method creates a new JButton with the appropriate
- * icon for the orientation.
+ /**
+ * This method creates a new JButton with the appropriate icon for the
+ * orientation.
*
* @param orientation The orientation this JButton uses.
*
@@ -601,26 +513,22 @@
protected JButton createIncreaseButton(int orientation)
{
if (incrButton == null)
+ incrButton = new BasicArrowButton((orientation == SwingConstants.HORIZONTAL)
+ ? SwingConstants.EAST
+ : SwingConstants.SOUTH);
+ else
{
- incrButton = new JButton();
- incrButton.setMargin(new Insets(0,0,0,0));
- incrButton.setHorizontalAlignment(SwingConstants.CENTER);
- incrButton.setHorizontalTextPosition(SwingConstants.CENTER);
- incrButton.setVerticalAlignment(SwingConstants.CENTER);
- incrButton.setVerticalTextPosition(SwingConstants.CENTER);
+ if (orientation == SwingConstants.HORIZONTAL)
+ ((BasicArrowButton) incrButton).setDirection(SwingConstants.EAST);
+ else
+ ((BasicArrowButton) incrButton).setDirection(SwingConstants.SOUTH);
}
-
- if (orientation == SwingConstants.HORIZONTAL)
- incrButton.setIcon(rightIcon);
- else
- incrButton.setIcon(downIcon);
-
return incrButton;
}
/**
- * This method creates a new JButton with the appropriate
- * icon for the orientation.
+ * This method creates a new JButton with the appropriate icon for the
+ * orientation.
*
* @param orientation The orientation this JButton uses.
*
@@ -629,20 +537,16 @@
protected JButton createDecreaseButton(int orientation)
{
if (decrButton == null)
+ decrButton = new BasicArrowButton((orientation == SwingConstants.HORIZONTAL)
+ ? SwingConstants.WEST
+ : SwingConstants.NORTH);
+ else
{
- decrButton = new JButton();
- decrButton.setMargin(new Insets(0,0,0,0));
- decrButton.setHorizontalAlignment(SwingConstants.CENTER);
- decrButton.setHorizontalTextPosition(SwingConstants.CENTER);
- decrButton.setVerticalAlignment(SwingConstants.CENTER);
- decrButton.setVerticalTextPosition(SwingConstants.CENTER);
+ if (orientation == SwingConstants.HORIZONTAL)
+ ((BasicArrowButton) decrButton).setDirection(SwingConstants.WEST);
+ else
+ ((BasicArrowButton) decrButton).setDirection(SwingConstants.NORTH);
}
-
- if (orientation == SwingConstants.HORIZONTAL)
- decrButton.setIcon(leftIcon);
- else
- decrButton.setIcon(upIcon);
-
return decrButton;
}
@@ -743,13 +647,12 @@
}
/**
- * This method calculates the preferred size since
- * calling getPreferredSize() returns a cached value.
+ * This method calculates the preferred size since calling
+ * getPreferredSize() returns a cached value.
*/
private void calculatePreferredSize()
{
// System.err.println(this + ".calculatePreferredSize()");
-
int height;
int width;
height = width = 0;
@@ -790,11 +693,11 @@
}
/**
- * 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).
+ * 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.
*
@@ -807,9 +710,8 @@
}
/**
- * This method returns the thumb's bounds based on the
- * current value of the scrollbar. This method updates the
- * cached value and returns that.
+ * 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.
*/
@@ -821,24 +723,22 @@
int extent = scrollbar.getVisibleAmount();
// System.err.println(this + ".getThumbBounds()");
-
if (max == min)
- {
- thumbRect.x = trackRect.x;
- thumbRect.y = trackRect.y;
- if (scrollbar.getOrientation() == HORIZONTAL)
{
- thumbRect.width = getMinimumThumbSize().width;
- thumbRect.height = trackRect.height;
- }
- else
- {
- thumbRect.width = trackRect.width;
- thumbRect.height = getMinimumThumbSize().height;
+ thumbRect.x = trackRect.x;
+ thumbRect.y = trackRect.y;
+ if (scrollbar.getOrientation() == HORIZONTAL)
+ {
+ thumbRect.width = getMinimumThumbSize().width;
+ thumbRect.height = trackRect.height;
+ }
+ else
+ {
+ thumbRect.width = trackRect.width;
+ thumbRect.height = getMinimumThumbSize().height;
+ }
+ return thumbRect;
}
- return thumbRect;
- }
-
if (scrollbar.getOrientation() == HORIZONTAL)
{
@@ -852,8 +752,7 @@
else
{
thumbRect.x = trackRect.x;
- thumbRect.y = trackRect.y
- + value * trackRect.height / (max - min);
+ thumbRect.y = trackRect.y + value * trackRect.height / (max - min);
thumbRect.width = trackRect.width;
thumbRect.height = extent * trackRect.height / (max - min);
@@ -862,8 +761,8 @@
}
/**
- * This method calculates the bounds of the track. This method
- * updates the cached value and returns it.
+ * This method calculates the bounds of the track. This method updates the
+ * cached value and returns it.
*
* @return The track's bounds.
*/
@@ -889,8 +788,8 @@
}
/**
- * This method installs any addition Components that
- * are a part of or related to this scrollbar.
+ * This method installs any addition Components that are a part of or
+ * related to this scrollbar.
*/
protected void installComponents()
{
@@ -901,8 +800,8 @@
}
/**
- * This method installs the defaults for the scrollbar specified
- * by the Basic Look and Feel.
+ * This method installs the defaults for the scrollbar specified by the
+ * Basic Look and Feel.
*/
protected void installDefaults()
{
@@ -926,9 +825,8 @@
}
/**
- * This method installs any listeners for the scrollbar.
- * This method also installs listeners for things such as
- * the JButtons and the timer.
+ * 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()
{
@@ -951,10 +849,9 @@
}
/**
- * This method installs the UI for the component.
- * This can include setting up listeners, defaults,
- * and components. This also includes initializing any data
- * objects.
+ * 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.
*/
@@ -977,7 +874,7 @@
configureScrollBarColors();
calculatePreferredSize();
- layoutContainer(scrollbar);
+ layoutContainer(scrollbar);
}
}
@@ -1073,9 +970,9 @@
}
/**
- * 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.
+ * 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.
*/
@@ -1088,15 +985,15 @@
g.fillRect(trackRect.x, trackRect.y, thumbRect.x - trackRect.x,
trackRect.height);
else
- g.fillRect(trackRect.x, trackRect.y, trackRect.width,
+ 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.
+ * 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.
*/
@@ -1109,11 +1006,10 @@
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);
+ else
+ g.fillRect(trackRect.x, thumbRect.y + thumbRect.height, trackRect.width,
+ trackRect.y + trackRect.height - thumbRect.y
+ - thumbRect.height);
g.setColor(saved);
}
@@ -1217,25 +1113,25 @@
}
/**
- * The method scrolls the thumb by a block in the
- * direction specified.
+ * The method scrolls the thumb by a block in the direction specified.
*
* @param direction The direction to scroll.
*/
protected void scrollByBlock(int direction)
{
- scrollbar.setValue(scrollbar.getValue() + scrollbar.getBlockIncrement(direction));
+ scrollbar.setValue(scrollbar.getValue()
+ + scrollbar.getBlockIncrement(direction));
}
/**
- * The method scrolls the thumb by a unit in the
- * direction specified.
+ * The method scrolls the thumb by a unit in the direction specified.
*
* @param direction The direction to scroll.
*/
protected void scrollByUnit(int direction)
{
- scrollbar.setValue(scrollbar.getValue() + scrollbar.getUnitIncrement(direction));
+ scrollbar.setValue(scrollbar.getValue()
+ + scrollbar.getUnitIncrement(direction));
}
/**
@@ -1255,8 +1151,8 @@
}
/**
- * This method uninstalls any components that
- * are a part of or related to this scrollbar.
+ * This method uninstalls any components that are a part of or related to
+ * this scrollbar.
*/
protected void uninstallComponents()
{
@@ -1267,8 +1163,8 @@
}
/**
- * This method uninstalls any defaults that this
- * scrollbar acquired from the Basic Look and Feel defaults.
+ * This method uninstalls any defaults that this scrollbar acquired from the
+ * Basic Look and Feel defaults.
*/
protected void uninstallDefaults()
{
@@ -1278,8 +1174,8 @@
}
/**
- * This method uninstalls any keyboard
- * actions this scrollbar acquired during install.
+ * This method uninstalls any keyboard actions this scrollbar acquired
+ * during install.
*/
protected void uninstallKeyboardActions()
{
@@ -1287,22 +1183,21 @@
}
/**
- * This method uninstalls any listeners that
- * were registered during install.
+ * This method uninstalls any listeners that were registered during install.
*/
protected void uninstallListeners()
{
scrollTimer.removeActionListener(scrollListener);
-
+
scrollbar.getModel().removeChangeListener(modelListener);
scrollbar.removePropertyChangeListener(propertyChangeListener);
-
+
decrButton.removeMouseListener(buttonListener);
incrButton.removeMouseListener(buttonListener);
-
+
scrollbar.removeMouseListener(trackListener);
scrollbar.removeMouseMotionListener(trackListener);
-
+
propertyChangeListener = null;
modelListener = null;
buttonListener = null;
@@ -1311,10 +1206,9 @@
}
/**
- * 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.
+ * 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.
*/
@@ -1323,19 +1217,19 @@
uninstallDefaults();
uninstallListeners();
uninstallComponents();
-
+
scrollTimer = null;
-
+
thumbRect = null;
trackRect = null;
-
+
trackColor = null;
trackHighlightColor = null;
thumbColor = null;
thumbHighlightColor = null;
thumbDarkShadowColor = null;
thumbLightShadowColor = null;
-
+
scrollbar = null;
}
Index: javax/swing/plaf/basic/BasicSplitPaneDivider.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/javax/swing/plaf/basic/BasicSplitPaneDivider.java,v
retrieving revision 1.1.26.3
diff -u -r1.1.26.3 BasicSplitPaneDivider.java
--- javax/swing/plaf/basic/BasicSplitPaneDivider.java 12 Jul 2004 19:52:46 -0000 1.1.26.3
+++ javax/swing/plaf/basic/BasicSplitPaneDivider.java 11 Sep 2004 20:19:28 -0000
@@ -153,32 +153,36 @@
// left (top), middle, right(bottom)
// 0 1 2
- /** Keeps track of where the divider should be placed when using one touch expand
- * buttons. */
+ /**
+ * Keeps track of where the divider should be placed when using one touch
+ * expand buttons.
+ */
private transient int currentDividerLocation = 1;
-
+
+ /** DOCUMENT ME! */
private transient Border tmpBorder = new Border()
- {
- public Insets getBorderInsets(Component c)
- {
- return new Insets(2, 2, 2, 2);
- }
-
- public boolean isBorderOpaque()
{
- return false;
- }
-
- public void paintBorder(Component c, Graphics g, int x, int y, int width, int height)
- {
- Color saved = g.getColor();
- g.setColor(Color.BLACK);
-
- g.drawRect(x + 2, y + 2, width - 4, height - 4);
-
- g.setColor(saved);
- }
- };
+ public Insets getBorderInsets(Component c)
+ {
+ return new Insets(2, 2, 2, 2);
+ }
+
+ public boolean isBorderOpaque()
+ {
+ return false;
+ }
+
+ public void paintBorder(Component c, Graphics g, int x, int y,
+ int width, int height)
+ {
+ Color saved = g.getColor();
+ g.setColor(Color.BLACK);
+
+ g.drawRect(x + 2, y + 2, width - 4, height - 4);
+
+ g.setColor(saved);
+ }
+ };
/**
* Constructs a new divider.
@@ -420,7 +424,7 @@
if (orientation == JSplitPane.VERTICAL_SPLIT)
dir = SwingConstants.NORTH;
JButton button = new BasicArrowButton(dir);
- button.setBorderPainted(false);
+ button.setBorder(null);
return button;
}
@@ -437,7 +441,7 @@
if (orientation == JSplitPane.VERTICAL_SPLIT)
dir = SwingConstants.SOUTH;
JButton button = new BasicArrowButton(dir);
- button.setBorderPainted(false);
+ button.setBorder(null);
return button;
}
@@ -484,11 +488,10 @@
}
/**
- * 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 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.
*
* @param locationIndex The location to move to.
*/
@@ -612,8 +615,10 @@
*/
protected class DragController
{
- /** The difference between where the mouse is clicked and the
- * initial divider location. */
+ /**
+ * The difference between where the mouse is clicked and the initial
+ * divider location.
+ */
transient int offset;
/**
@@ -650,8 +655,8 @@
}
/**
- * This method returns one of the two paramters
- * for the orientation. In this case, it returns x.
+ * 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.
@@ -664,8 +669,8 @@
}
/**
- * This method is called to pass on the drag information
- * to the UI through dragDividerTo.
+ * 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.
@@ -677,8 +682,8 @@
}
/**
- * This method is called to pass on the drag information
- * to the UI through dragDividerTo.
+ * This method is called to pass on the drag information to the UI
+ * through dragDividerTo.
*
* @param e The MouseEvent.
*/
@@ -689,8 +694,8 @@
}
/**
- * This method is called to finish the drag session
- * by calling finishDraggingTo.
+ * 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.
@@ -701,8 +706,8 @@
}
/**
- * This method is called to finish the drag session
- * by calling finishDraggingTo.
+ * This method is called to finish the drag session by calling
+ * finishDraggingTo.
*
* @param e The MouseEvent.
*/
@@ -710,10 +715,10 @@
{
finishDraggingTo(positionForMouseEvent(e));
}
-
+
/**
- * This is a helper method that includes the offset
- * in the needed location.
+ * 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.
@@ -727,8 +732,8 @@
}
/**
- * This is a helper class that controls dragging when
- * the orientation is VERTICAL_SPLIT.
+ * This is a helper class that controls dragging when the orientation is
+ * VERTICAL_SPLIT.
*/
protected class VerticalDragController extends DragController
{
@@ -744,8 +749,8 @@
}
/**
- * This method returns one of the two parameters given
- * the orientation. In this case, it returns y.
+ * 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.
@@ -758,8 +763,7 @@
}
/**
- * This method returns the new location of the divider
- * given a MouseEvent.
+ * This method returns the new location of the divider given a MouseEvent.
*
* @param e The MouseEvent.
*
@@ -771,8 +775,8 @@
}
/**
- * This is a helper method that includes the offset
- * in the needed location.
+ * 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.
@@ -782,12 +786,11 @@
int adjust(int x, int y)
{
return getNeededLocation(x, y) + getY() - offset;
- }
+ }
}
/**
- * This helper class acts as the Layout Manager for
- * the divider.
+ * This helper class acts as the Layout Manager for the divider.
*/
protected class DividerLayout implements LayoutManager
{
@@ -858,8 +861,8 @@
}
/**
- * This method changes the button orientation when
- * the orientation of the SplitPane changes.
+ * This method changes the button orientation when the orientation of the
+ * SplitPane changes.
*/
private void changeButtonOrientation()
{