summaryrefslogtreecommitdiffstats
path: root/libjava/javax/swing/border/AbstractBorder.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/javax/swing/border/AbstractBorder.java')
-rw-r--r--libjava/javax/swing/border/AbstractBorder.java194
1 files changed, 129 insertions, 65 deletions
diff --git a/libjava/javax/swing/border/AbstractBorder.java b/libjava/javax/swing/border/AbstractBorder.java
index fad3aa288ef..663fb1130e0 100644
--- a/libjava/javax/swing/border/AbstractBorder.java
+++ b/libjava/javax/swing/border/AbstractBorder.java
@@ -1,5 +1,5 @@
/* AbstractBorder.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -44,85 +44,149 @@ import java.awt.Insets;
import java.awt.Rectangle;
import java.io.Serializable;
-public abstract class AbstractBorder implements Border, Serializable
+
+/**
+ * An invisible zero-width border, serving as a base class for
+ * implementing more interesting borders.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ * @author Ronald Veldema (rveldema@cs.vu.nl)
+ */
+public abstract class AbstractBorder
+ implements Border, Serializable
{
static final long serialVersionUID = -545885975315191844L;
+
+ /**
+ * Constructs a new AbstractBorder.
+ */
public AbstractBorder ()
{
}
- public void paintBorder(Component c,
- Graphics g,
- int x,
- int y,
- int width,
- int height)
- {
- System.out.println("HMMMMM, abstract-border.paintBorder");
- }
+ /**
+ * Performs nothing, because the default implementation provided by
+ * this class is an invisible, zero-width border. Subclasses will
+ * likely want to override this method, but they are not required
+ * for doing so.
+ *
+ * @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)
+ {
+ /* A previous version of Classpath had emitted a warning when
+ * this method was called. The warning was removed because it is
+ * perfectly legal for a subclass to not override the paintBorder
+ * method. An example would be EmptyBorder.
+ */
+ }
- public Insets getBorderInsets(Component c, Insets insets)
- {
- if (insets == null)
- insets = new Insets(0,0,0,0);
-
- insets.left = insets.top = insets.right = insets.bottom = 5;
- return insets;
- }
+ /**
+ * Determines the insets of this border. The implementation provided
+ * by AbstractButton returns Insets for a zero-width border, whose
+ * <code>left</code>, <code>right</code>, <code>top</code> and
+ * <code>bottom</code> fields are all zero.
+ *
+ * @param c the component whose border is to be measured.
+ *
+ * @return a newly created Insets object, indicating a zero-width
+ * border.
+ */
+ public Insets getBorderInsets (Component c)
+ {
+ return new Insets (0, 0, 0, 0);
+ }
- public Insets getBorderInsets(Component c)
- {
- return getBorderInsets(c, new Insets(0,0,0,0));
- }
+ /**
+ * Determines the insets of this border. The implementation provided
+ * by AbstractButton sets the <code>left</code>, <code>right</code>,
+ * <code>top</code> and <code>bottom</code> fields of the passed
+ * <code>insets</code> parameter to zero.
+ *
+ * @param c the component in the center of this border.
+ *
+ * @param insets an Insets object for holding the insets of this
+ * border.
+ *
+ * @return the <code>insets</code> object.
+ */
+ public Insets getBorderInsets (Component c, Insets insets)
+ {
+ insets.left = insets.right = insets.top = insets.bottom = 0;
+ return insets;
+ }
- public boolean isBorderOpaque()
- { return false; }
- public Rectangle getInteriorRectangle(Component c,
- int x,
- int y,
- int width,
- int height)
- {
- return getInteriorRectangle(c,
- this,
- x,
- y,
- width,
- height);
- }
+ /**
+ * Determines whether or not this border is opaque. An opaque border
+ * fills every pixel in its area when painting. Partially
+ * translucent borders must return <code>false</code>, or ugly
+ * artifacts can appear on screen. The default implementation
+ * provided by AbstractBorder always returns <code>false</code>.
+ *
+ * @return <code>false</code>.
+ */
+ public boolean isBorderOpaque ()
+ {
+ return false;
+ }
-
- public static Rectangle getInteriorRectangle(Component c,
- Border b,
- int x,
- int y,
- int width,
- int height)
+
+ /**
+ * Returns a rectangle that covers the specified area minus this
+ * border. Components that wish to determine an area into which
+ * they can safely draw without intersecting with a border might
+ * want to use this helper method.
+ *
+ * @param c the component in the center of this border.
+ * @param x the horizontal position of the border.
+ * @param y the vertical position of the border.
+ * @param width the width of the available area for the border.
+ * @param height the height of the available area for the border.
+ */
+ public Rectangle getInteriorRectangle (Component c,
+ int x, int y, int width, int height)
+ {
+ return getInteriorRectangle (c, this, x, y, width, height);
+ }
+
+
+ /**
+ * Returns a rectangle that covers the specified area minus a
+ * border. Components that wish to determine an area into which
+ * they can safely draw without intersecting with a border might
+ * want to use this helper method.
+ *
+ * @param c the component in the center of this border.
+ * @param x the horizontal position of the border.
+ * @param y the vertical position of the border.
+ * @param width the width of the available area for the border.
+ * @param height the height of the available area for the border.
+ */
+ public static Rectangle getInteriorRectangle (Component c, Border b,
+ int x, int y, int width, int height)
+ {
+ Insets borderInsets;
+
+ if (b != null)
{
- if(b != null)
- {
- Insets insets = b.getBorderInsets(c);
-
- int w = insets.right - insets.left;
- int h = insets.top - insets.bottom;
-
- return new Rectangle(x + insets.left,
- y + insets.top,
- width - w,
- height - h);
- }
- else
- {
- return new Rectangle(x,
- y,
- width,
- height);
- }
+ borderInsets = b.getBorderInsets (c);
+ x += borderInsets.left;
+ y += borderInsets.top;
+ width -= borderInsets.left + borderInsets.right;
+ height -= borderInsets.top + borderInsets.bottom;
}
-}
+ return new Rectangle (x, y, width, height);
+ }
+}
OpenPOWER on IntegriCloud