OSDN Git Service

* java/awt/Shape.java: Merged with Classpath.
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Jan 2002 07:06:06 +0000 (07:06 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Jan 2002 07:06:06 +0000 (07:06 +0000)
* java/awt/Scrollbar.java: Merged with Classpath.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49208 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/awt/Scrollbar.java
libjava/java/awt/Shape.java

index cf63255..e8ab774 100644 (file)
@@ -1,5 +1,8 @@
 2002-01-24  Tom Tromey  <tromey@redhat.com>
 
+       * java/awt/Shape.java: Merged with Classpath.
+       * java/awt/Scrollbar.java: Merged with Classpath.
+
        * java/awt/Container.java (addNotify): Unconditionally call
        addNotifyContainerChildren and superclass addNotify.
 
index 186a7c3..d8915b7 100644 (file)
-/* Copyright (C) 2000, 2001  Free Software Foundation
+/* Scrollbar.java -- AWT Scrollbar widget
+   Copyright (C) 1999, 2000, 2001, 2002 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. */
 
-   This file is part of libjava.
-
-This software is copyrighted work licensed under the terms of the
-Libjava License.  Please consult the file "LIBJAVA_LICENSE" for
-details.  */
 
 package java.awt;
-import java.awt.event.*;
+
 import java.awt.peer.ScrollbarPeer;
 import java.awt.peer.ComponentPeer;
 
+import java.awt.event.AdjustmentListener;
+import java.awt.event.AdjustmentEvent;
+
+/**
+  * This class implements a scrollbar widget.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  * @author Tom Tromey <tromey@cygnus.com>
+  */
+public class Scrollbar extends Component implements Adjustable,
+                                                    java.io.Serializable
+{
+
+// FIXME: Serialization readObject/writeObject
+
+/*
+ * Static Variables
+ */
+
+/**
+  * Constant indicating that a scrollbar is horizontal.
+  */
+public static final int HORIZONTAL = 0;
+
+/**
+  * Constant indicating that a scrollbar is vertical.
+  */
+public static final int VERTICAL = 1;
+
+// Serialization Constant
+private static final long serialVersionUID = 8451667562882310543L;
+
+/*************************************************************************/
+
+/**
+  * @serial The amount by which the value of the scrollbar is changed
+  * when incrementing in line mode.
+  */
+private int lineIncrement;
+
+/**
+  * @serial The amount by which the value of the scrollbar is changed
+  * when incrementing in page mode.
+  */
+private int pageIncrement;
+
+/**
+  * @serial The maximum value for this scrollbar
+  */
+private int maximum;
+
+/**
+  * @serial The minimum value for this scrollbar
+  */
+private int minimum;
+
 /**
- * @author Tom Tromey <tromey@cygnus.com>
- * @date April 12, 2000
+  * @serial The orientation of this scrollbar, which will be either
+  * the <code>HORIZONTAL</code> or <code>VERTICAL</code> constant
+  * from this class.
+  */
+private int orientation;
+
+/**
+  * @serial The current value of this scrollbar.
+  */
+private int value;
+
+/**
+  * @serial The width of the scrollbar's thumb, which is relative
+  * to the minimum and maximum value of the scrollbar.
+  */
+private int visibleAmount;
+
+// List of AdjustmentListener's.
+private AdjustmentListener adjustment_listeners;
+
+/*************************************************************************/
+
+/*
+ * Constructors
  */
 
-public class Scrollbar extends Component implements Adjustable
-{
-  public Scrollbar ()
-  {
-    this (VERTICAL, 0, 10, 0, 100);
-  }
-
-  public Scrollbar (int orientation)
-  {
-    this (orientation, 0, 10, 0, 100);
-  }
-
-  public Scrollbar (int orientation, int value, int visible,
-                   int minimum, int maximum)
-  {
-    if (orientation != HORIZONTAL && orientation != VERTICAL)
-      throw new IllegalArgumentException ();
-
-    if (maximum < minimum)
-      maximum = minimum;
-    if (value < minimum)
-      value = minimum;
-    if (value > maximum)
-      value = maximum;
-
-    this.orientation = orientation;
-    this.value = value;
-    this.visible = visible;
-    this.minimum = minimum;
-    this.maximum = maximum;
-    this.unit = 1;
-
-    this.block = 0; // FIXME
-  }
-
-  public void addNotify ()
-  {
-    if (peer == null)
-      peer = getToolkit ().createScrollbar (this);
-    super.addNotify ();
-  }
-
-  public int getOrientation ()
-  {
-    return orientation;
-  }
-
-  public void setOrientation (int orientation)
-  {
-    if (orientation != HORIZONTAL && orientation != VERTICAL)
-      throw new IllegalArgumentException ();
-    this.orientation = orientation;
-  }
-
-  public int getValue ()
-  {
-    return value;
-  }
-
-  public void setValue (int value)
-  {
-    setValues (value, visible, minimum, maximum);
-  }
-
-  public int getMinimum ()
-  {
-    return minimum;
-  }
-
-  public void setMinimum (int minimum)
-  {
-    setValues (value, visible, minimum, maximum);
-  }
-
-  public int getMaximum ()
-  {
-    return maximum;
-  }
-
-  public void setMaximum (int maximum)
-  {
-    setValues (value, visible, minimum, maximum);
-  }
-
-  public int getVisibleAmount ()
-  {
-    return visible;
-  }
-
-  public int getVisible ()
-  {
-    return visible;
-  }
-
-  public void setVisibleAmount (int visible)
-  {
-    setValues (value, visible, minimum, maximum);
-  }
-
-  public void setUnitIncrement (int v)
-  {
-    unit = v;
-    if (peer != null)
-      {
-       ScrollbarPeer sp = (ScrollbarPeer) peer;
-       sp.setLineIncrement (v);
-      }
-  }
-
-  /** @deprecated */
-  public void setLineIncrement (int v)
-  {
-    setUnitIncrement (v);
-  }
-
-  public int getUnitIncrement ()
-  {
-    return unit;
-  }
-
-  public int getLineIncrement ()
-  {
-    return unit;
-  }
-
-  public void setBlockIncrement (int v)
-  {
-    block = v;
-    if (peer != null)
-      {
-       ScrollbarPeer sp = (ScrollbarPeer) peer;
-       sp.setPageIncrement (v);
-      }
-  }
-
-  public void setPageIncrement (int v)
-  {
-    setBlockIncrement (v);
-  }
-
-  public int getBlockIncrement ()
-  {
-    return block;
-  }
-
-  public int getPageIncrement ()
-  {
-    return block;
-  }
-
-  public synchronized void setValues (int value, int visible,
-                                     int minimum, int maximum)
-  {
-    if (maximum < minimum)
-      maximum = minimum;
-    if (value < minimum)
-      value = minimum;
-    if (value > maximum)
-      value = maximum;
-
-    this.value = value;
-    this.visible = visible;
-    this.minimum = minimum;
-    this.maximum = maximum;
-
-    if (peer != null)
-      {
-       ScrollbarPeer sp = (ScrollbarPeer) peer;
-       sp.setValues (value, visible, minimum, maximum);
-      }
-  }
-
-  public void addAdjustmentListener (AdjustmentListener l)
-  {
-    listeners = AWTEventMulticaster.add (listeners, l);
-  }
-
-  public void removeAdjustmentListener (AdjustmentListener l)
-  {
-    listeners = AWTEventMulticaster.remove (listeners, l);
-  }
-
-  protected void processEvent (AWTEvent e)
-  {
-    if (e instanceof AdjustmentEvent)
-      processAdjustmentEvent ((AdjustmentEvent) e);
-    else
-      super.processEvent (e);
-  }
-
-  protected void processAdjustmentEvent (AdjustmentEvent e)
-  {
-    if (listeners != null)
-      listeners.adjustmentValueChanged (e);
-  }
-
-  protected String paramString ()
-  {
-    return ("Scrollbar["
-           + ((orientation == VERTICAL) ? "VERTICAL" : "HORIZONTAL") + ","
-           + value + ","
-           + visible + ","
-           + minimum + ","
-           + maximum + ","
-           + unit + ","
-           + block + "]");
-  }
-
-  private AdjustmentListener listeners;
-  private int orientation;
-  private int value;
-  private int visible;
-  private int minimum;
-  private int maximum;
-  private int unit;
-  private int block;
+/**
+  * Initializes a new instance of <code>Scrollbar</code> with a
+  * veritical orientation and default values for all other parameters.
+  */
+public
+Scrollbar()
+{
+  this(VERTICAL);
+}
+
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>Scrollbar</code> with the
+  * specified orientation and default values for all other parameters.
+  * The orientation must be either the constant <code>HORIZONTAL</code> or
+  * <code>VERTICAL</code> from this class.  An incorrect value will throw
+  * an exception.
+  *
+  * @param orientation The orientation of this scrollbar.
+  *
+  * @exception IllegalArgumentException If the orientation value is not valid.
+  */
+public
+Scrollbar(int orientation) throws IllegalArgumentException
+{
+  this(orientation, 0, 10, 0, 100);
+}
+
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>Scrollbar</code> with the
+  * specified parameters.  The orientation must be either the constant
+  * <code>HORIZONTAL</code> or <code>VERTICAL</code>.  An incorrect value
+  * will throw an exception.  Inconsistent values for other parameters
+  * are silently corrected to valid values.
+  *
+  * @param orientation The orientation of this scrollbar.
+  * @param value The initial value of the scrollbar.
+  * @param visibleAmount The width of the scrollbar thumb.
+  * @param minimum The minimum value of the scrollbar.
+  * @param maximum The maximum value of the scrollbar.
+  *
+  * @exception IllegalArgumentException If the orientation value is not valid.
+  */
+public 
+Scrollbar(int orientation, int value, int visibleAmount, int minimum, 
+          int maximum) throws IllegalArgumentException
+{
+  if ((orientation != HORIZONTAL) && (orientation != VERTICAL))
+    throw new IllegalArgumentException("Bad orientation value: "
+                                      + orientation);
+
+  this.orientation = orientation;
+
+  setValues(value, visibleAmount, minimum, maximum);
+
+  // Default is 1 according to online docs.
+  lineIncrement = 1;
+
+  pageIncrement = (maximum - minimum) / 5;
+  if (pageIncrement == 0)
+    pageIncrement = 1;
 }
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
+ */
+
+/**
+  * Returns the orientation constant for this object.
+  *
+  * @return The orientation constant for this object.
+  */
+public int
+getOrientation()
+{
+  return(orientation);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the orientation of this scrollbar to the specified value.  This
+  * value must be either the constant <code>HORIZONTAL</code> or
+  * <code>VERTICAL</code> from this class or an exception will be thrown.
+  *
+  * @param orientation The new orientation value.
+  *
+  * @exception IllegalArgumentException If the orientation value is not valid.
+  */
+public void
+setOrientation(int orientation)
+{
+  if ((orientation != HORIZONTAL) && (orientation != VERTICAL))
+    throw new IllegalArgumentException("Bad orientation value: "
+                                      + orientation);
+
+  // FIXME: Communicate to peer?  Or must this be called before peer creation?
+  this.orientation = orientation;
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the current value for this scrollbar.
+  *
+  * @return The current value for this scrollbar.
+  */
+public int
+getValue()
+{
+  return(value);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the current value for this scrollbar to the specified value.
+  * If this is inconsistent with the minimum and maximum values for this
+  * scrollbar, the value is silently adjusted.
+  *
+  * @param value The new value for this scrollbar.
+  */
+public void
+setValue(int value)
+{
+  setValues(value, visibleAmount, minimum, maximum);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the maximum value for this scrollbar.
+  *
+  * @return The maximum value for this scrollbar.
+  */
+public int
+getMaximum()
+{
+  return(maximum);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the maximum value for this scrollbar to the specified value.
+  * If the value is less than the current minimum value, it is silent
+  * set to equal the minimum value.
+  *
+  * @param maximum The new maximum value for this scrollbar.
+  */
+public void
+setMaximum(int maximum)
+{
+  setValues(value, visibleAmount, minimum, maximum);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the minimum value for this scrollbar.
+  *
+  * @return The minimum value for this scrollbar.
+  */
+public int
+getMinimum()
+{
+  return(minimum);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the minimum value for this scrollbar to the specified value.  If
+  * this is not consistent with the current value and maximum, it is
+  * silently adjusted to be consistent.
+  *
+  * @param minimum The new minimum value for this scrollbar.
+  */
+public void
+setMinimum(int minimum)
+{
+  setValues(value, visibleAmount, minimum, maximum);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the width of the scrollbar's thumb, in units relative to the
+  * maximum and minimum value of the scrollbar.
+  *
+  * @return The width of the scrollbar's thumb.
+  */
+public int
+getVisibleAmount()
+{
+  return(visibleAmount);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the width of the scrollbar's thumb, in units relative to the
+  * maximum and minimum value of the scrollbar.
+  *
+  * @return The width of the scrollbar's thumb.
+  *
+  * @deprecated This method is deprecated in favor of 
+  * <code>getVisibleAmount()</code>.
+  */
+public int
+getVisible()
+{
+  return(getVisibleAmount());
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the width of the scrollbar's thumb, in units relative to the
+  * maximum and minimum value of the scrollbar.
+  *
+  * @param visibileAmount The new visible amount value of the scrollbar.
+  */
+public void
+setVisibleAmount(int visibleAmount)
+{
+  setValues(value, visibleAmount, minimum, maximum);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the current value, visible amount, minimum, and maximum for this
+  * scrollbar.  These values are adjusted to be internally consistent
+  * if necessary.
+  *
+  * @param value The new value for this scrollbar.
+  * @param visibleAmount The new visible amount for this scrollbar.
+  * @param minimum The new minimum value for this scrollbar.
+  * @param maximum The new maximum value for this scrollbar.
+  */
+public synchronized void
+setValues(int value, int visibleAmount, int minimum, int maximum)
+{
+  if (maximum < minimum)
+    maximum = minimum;
+
+  if (value < minimum)
+    value = minimum;
+
+  if (value > maximum)
+    value = maximum;
+
+  if (visibleAmount > value)
+    visibleAmount = value;
+
+  this.value = value;
+  this.visibleAmount = visibleAmount;
+  this.minimum = minimum;
+  this.maximum = maximum;
+
+  ScrollbarPeer sp = (ScrollbarPeer)getPeer();
+  if (sp != null)
+    sp.setValues(value, visibleAmount, minimum, maximum);
+
+  int range = maximum - minimum;
+  if (lineIncrement > range)
+    {
+      if (range == 0)
+        lineIncrement = 1;
+      else
+        lineIncrement = range;
+
+      if (sp != null)
+        sp.setLineIncrement(lineIncrement);
+    }
+
+  if (pageIncrement > range)
+    {
+      if (range == 0)
+        pageIncrement = 1;
+      else
+        pageIncrement = range;
+
+      if (sp != null)
+        sp.setPageIncrement(pageIncrement);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the value added or subtracted when the user activates the scrollbar
+  * scroll by a "unit" amount.
+  *
+  * @return The unit increment value.
+  */
+public int
+getUnitIncrement()
+{
+  return(lineIncrement);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the value added or subtracted when the user selects the scrollbar
+  * scroll by a "unit" amount control.
+  *
+  * @return The unit increment value.
+  *
+  * @deprecated This method is deprecated in favor of 
+  * <code>getUnitIncrement()</code>.
+  */
+public int
+getLineIncrement()
+{
+  return(lineIncrement);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the value added or subtracted to the scrollbar value when the
+  * user selects the scroll by a "unit" amount control.
+  *
+  * @param unitIncrement The new unit increment amount.
+  */
+public synchronized void
+setUnitIncrement(int unitIncrement)
+{
+  if (unitIncrement < 0)
+    throw new IllegalArgumentException("Unit increment less than zero.");
+
+  int range = maximum - minimum;
+  if (unitIncrement > range)
+    {
+      if (range == 0)
+        unitIncrement = 1;
+      else
+        unitIncrement = range;
+    }
+
+  if (unitIncrement == lineIncrement)
+    return;
+
+  lineIncrement = unitIncrement;
+
+  ScrollbarPeer sp = (ScrollbarPeer)getPeer();
+  if (sp != null)
+    sp.setLineIncrement(lineIncrement);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the value added or subtracted to the scrollbar value when the
+  * user selects the scroll by a "unit" amount control.
+  *
+  * @param lineIncrement The new unit increment amount.
+  *
+  * @deprecated This method is deprecated in favor of
+  * <code>setUnitIncrement()</code>.
+  */
+public void
+setLineIncrement(int lineIncrement)
+{
+  setUnitIncrement(lineIncrement);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the value added or subtracted when the user activates the scrollbar
+  * scroll by a "block" amount.
+  *
+  * @return The block increment value.
+  */
+public int
+getBlockIncrement()
+{
+  return(pageIncrement);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the value added or subtracted when the user selects the scrollbar
+  * scroll by a "block" amount control.
+  *
+  * @return The block increment value.
+  *
+  * @deprecated This method is deprecated in favor of 
+  * <code>getBlockIncrement()</code>.
+  */
+public int
+getPageIncrement()
+{
+  return(pageIncrement);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the value added or subtracted to the scrollbar value when the
+  * user selects the scroll by a "block" amount control.
+  *
+  * @param blockIncrement The new block increment amount.
+  */
+public synchronized void
+setBlockIncrement(int blockIncrement)
+{
+  if (blockIncrement < 0)
+    throw new IllegalArgumentException("Block increment less than zero.");
+
+  int range = maximum - minimum;
+  if (blockIncrement > range)
+    {
+      if (range == 0)
+        blockIncrement = 1;
+      else
+        blockIncrement = range;
+    }
+
+  if (blockIncrement == pageIncrement)
+    return;
+
+  pageIncrement = blockIncrement;
+
+  ScrollbarPeer sp = (ScrollbarPeer)getPeer();
+  if (sp != null)
+    sp.setPageIncrement(pageIncrement);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the value added or subtracted to the scrollbar value when the
+  * user selects the scroll by a "block" amount control.
+  *
+  * @param pageIncrement The new block increment amount.
+  *
+  * @deprecated This method is deprecated in favor of
+  * <code>setBlockIncrement()</code>.
+  */
+public void
+setPageIncrement(int pageIncrement)
+{
+  setBlockIncrement(pageIncrement);
+}
+
+/*************************************************************************/
+
+/**
+  * Notifies this object to create its native peer.
+  */
+public synchronized void
+addNotify()
+{
+  if (peer == null)
+    peer = getToolkit ().createScrollbar (this);
+  super.addNotify ();
+}
+
+/*************************************************************************/
+
+/**
+  * Adds a new adjustment listener to the list of registered listeners
+  * for this object.
+  *
+  * @param listener The listener to add.
+  */
+public synchronized void
+addAdjustmentListener(AdjustmentListener listener)
+{
+  adjustment_listeners = AWTEventMulticaster.add(adjustment_listeners, listener);
+  enableEvents(AWTEvent.ADJUSTMENT_EVENT_MASK);
+}
+
+/*************************************************************************/
+
+/**
+  * Removes the specified listener from the list of registered listeners
+  * for this object.
+  *
+  * @param listener The listener to remove.
+  */
+public synchronized void
+removeAdjustmentListener(AdjustmentListener listener)
+{
+  adjustment_listeners = AWTEventMulticaster.remove(adjustment_listeners, 
+                                                    listener);
+}
+
+/*************************************************************************/
+
+/**
+  * Processes events for this scrollbar.  It does this by calling
+  * <code>processAdjustmentEvent()</code> if the event is an instance of
+  * <code>AdjustmentEvent</code>, otherwise it calls the superclass to
+  * process the event.
+  *
+  * @param event The event to process.
+  */
+protected void
+processEvent(AWTEvent event)
+{
+  if (event instanceof AdjustmentEvent)
+    processAdjustmentEvent((AdjustmentEvent)event);
+  else
+    super.processEvent(event);
+}
+
+/*************************************************************************/
+
+/**
+  * Processes adjustment events for this object by dispatching them to
+  * any registered listeners.  Note that this method will only be called
+  * if adjustment events are enabled.  This will happen automatically if
+  * any listeners are registered.  Otherwise, it can be enabled by a
+  * call to <code>enableEvents()</code>.
+  *
+  * @param event The event to process.
+  */
+protected void
+processAdjustmentEvent(AdjustmentEvent event)
+{
+  if (adjustment_listeners != null)
+    adjustment_listeners.adjustmentValueChanged(event);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a debugging string for this object.
+  *
+  * @return A debugging string for this object.
+  */
+protected String
+paramString()
+{
+  return("value=" + getValue() + ",visibleAmount=" +
+         getVisibleAmount() + ",minimum=" + getMinimum()
+        + ",maximum=" + getMaximum()
+        + ",pageIncrement=" + pageIncrement
+        + ",lineIncrement=" + lineIncrement
+        + ",orientation=" + (orientation == HORIZONTAL
+                             ? "HORIZONTAL" : "VERTICAL")
+        + super.paramString());
+}
+
+} // class Scrollbar 
+
index a5cc730..7f2fda0 100644 (file)
@@ -1,33 +1,75 @@
-/* Copyright (C) 1999, 2000  Free Software Foundation
+/* Shape.java -- Interface for shape abstractions.
+   Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
 
-   This file is part of libjava.
+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. */
 
-This software is copyrighted work licensed under the terms of the
-Libjava License.  Please consult the file "LIBJAVA_LICENSE" for
-details.  */
 
 package java.awt;
-import java.awt.geom.*;
 
-/**
- * @author Per Bothner <bothner@cygnus.com>
- * @date February 8, 1999.
- */
+import java.awt.geom.*;
 
 /* Written using "Java Class Libraries", 2nd edition.
  * Status:  Believed complete and correct to JDK 1.2.
  */
 
+/**
+  * This interface represents an abstract shape.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  * @author Per Bothner <bothner@cygnus.com>
+  */
 public interface Shape
 {
+
+/**
+  * Returns a <code>Rectange</code> that bounds the shape.
+  *
+  * @return A <code>Rectange</code> that bounds the shape.
+  */
+public abstract Rectangle
+getBounds();
+
   public boolean contains (double x, double y);
   public boolean contains (double x, double y, double w, double h);
   public boolean contains (Point2D p);
   public boolean contains (Rectangle2D r);
-  public Rectangle getBounds ();
   public Rectangle2D getBounds2D ();
   public PathIterator getPathIterator (AffineTransform at);
   public PathIterator getPathIterator (AffineTransform at, double flatness);
   public boolean intersects (double x, double y, double w, double h);
   public boolean intersects (Rectangle2D r);
-}
+
+} // interface Shape
+