This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Patch: FYI: More AWT merging


I'm checking this in.

This is another jumbo AWT merge patch.  It also fixes a couple bugs in
an earlier merge that Bryce pointed out.

I've replaced our peer interfaces with the Classpath peers.  My
current plan is to finish merging using these interfaces.  Then I'll
(probably slowly) start to make AWT work using the existing Classpath
JNI Gtk+ peers.  Once that is working we can remove the redundant
methods from the interfaces, cleaning up both the interfaces and the
existing peer code.

My main reason for doing it this way is that it makes the patches a
bit easier to keep track of.  We know the existing JNI peers work
(Paul Fisher showed me a demo of them a couple years ago).  So I'd
prefer to leave these untouched until the Java side has been debugged.

Tom

Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/libjava/ChangeLog,v
retrieving revision 1.1098
diff -u -r1.1098 ChangeLog
--- ChangeLog	2002/01/22 00:20:22	1.1098
+++ ChangeLog	2002/01/22 21:54:03
@@ -1,3 +1,72 @@
+2002-01-20  Tom Tromey  <tromey@redhat.com>
+
+	* java/awt/peer/ButtonPeer.java: Replace with Classpath version.
+	* java/awt/peer/CanvasPeer.java: Replace with Classpath version.
+	* java/awt/peer/CheckboxMenuItemPeer.java: Replace with Classpath
+	version.
+	* java/awt/peer/CheckboxPeer.java: Replace with Classpath version.
+	* java/awt/peer/ChoicePeer.java: Replace with Classpath version.
+	* java/awt/peer/ComponentPeer.java: Replace with Classpath version.
+	* java/awt/peer/ContainerPeer.java: Replace with Classpath version.
+	* java/awt/peer/DialogPeer.java: Replace with Classpath version.
+	* java/awt/peer/FileDialogPeer.java: Replace with Classpath version.
+	* java/awt/peer/FontPeer.java: Replace with Classpath version.
+	* java/awt/peer/FramePeer.java: Replace with Classpath version.
+	* java/awt/peer/LabelPeer.java: Replace with Classpath version.
+	* java/awt/peer/LightweightPeer.java: Replace with Classpath version.
+	* java/awt/peer/ListPeer.java: Replace with Classpath version.
+	* java/awt/peer/MenuBarPeer.java: Replace with Classpath version.
+	* java/awt/peer/MenuComponentPeer.java: Replace with Classpath version.
+	* java/awt/peer/MenuItemPeer.java: Replace with Classpath version.
+	* java/awt/peer/MenuPeer.java: Replace with Classpath version.
+	* java/awt/peer/PanelPeer.java: Replace with Classpath version.
+	* java/awt/peer/PopupMenuPeer.java: Replace with Classpath version.
+	* java/awt/peer/ScrollPanePeer.java: Replace with Classpath version.
+	* java/awt/peer/ScrollbarPeer.java: Replace with Classpath version.
+	* java/awt/peer/TextAreaPeer.java: Replace with Classpath version.
+	* java/awt/peer/TextComponentPeer.java: Replace with Classpath version.
+	* java/awt/peer/TextFieldPeer.java: Replace with Classpath version.
+	* java/awt/peer/WindowPeer.java: Replace with Classpath version.
+	* gnu/awt/xlib/XPanelPeer.java (insets): New method.
+	* gnu/awt/xlib/XCanvasPeer.java (show, hide): New methods.
+	(minimumSize, preferredSize, reshape): Likewise.
+	* gnu/awt/xlib/XFramePeer.java (insets, enable, disable,
+	getColorModel): New methods.
+	* java/awt/PopupMenu.java: Merged with Classpath.
+	* java/awt/MenuBar.java: Merged with Classpath.
+	* java/awt/SystemColor.java: Replace with Classpath version.
+	* java/awt/Panel.java: Merged with Classpath.
+	* java/awt/PaintContext.java: Updated copyright.
+	* java/awt/MenuShortcut.java: Merged with Classpath.
+	* java/awt/MenuContainer.java: Merged with Classpath.
+	* java/awt/Menu.java: Merged with Classpath.
+	* java/awt/MediaEntry.java: New file from Classpath.
+	* java/awt/MediaTracker.java: New file from Classpath.
+	* java/awt/List.java: Merged with Classpath version.
+	* java/awt/Insets.java: Merged with Classpath version.
+	* java/awt/ImageMediaEntry.java: New file from Classpath.
+	* java/awt/Image.java: Replaced with Classpath version.
+	* java/awt/FontMetrics.java: Merged with Classpath version.
+	* java/awt/Cursor.java (getDefaultCursor): Use DEFAULT_CURSOR
+	constant.
+	* java/awt/Font.java: Merged with Classpath version.
+	* java/awt/Dialog.java: Merged with Classpath version.
+	* java/awt/Color.java: Merged with Classpath version.
+	* java/awt/Choice.java: Merged with Classpath version.
+	* java/awt/CheckboxMenuItem.java: Merged with Classpath version.
+	* java/awt/Adjustable.java: Replace with Classpath version.
+	* java/awt/MenuItem.java (paramString): Don't include class name
+	or brackets.  Call superclass paramString.
+	* java/awt/MenuComponent.java (toString): Call paramString.
+	(paramString): Compute string; don't call toString.
+	* java/awt/Label.java (paramString): Don't include class name
+	or brackets.  Call superclass paramString.
+	* java/awt/Checkbox.java (paramString): Don't include class name
+	or brackets.  Call superclass paramString.
+	* java/awt/Button.java (paramString): Don't include class name or
+	brackets.  Call superclass paramString.
+	* java/awt/MenuComponent.java (getTreeLock): Now protected.
+
 2002-01-20  Andreas Schwab  <schwab@suse.de>
 
 	* java/net/natPlainSocketImpl.cc (_Jv_recv): Change return type of
Index: gnu/awt/xlib/XCanvasPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/awt/xlib/XCanvasPeer.java,v
retrieving revision 1.1
diff -u -r1.1 XCanvasPeer.java
--- XCanvasPeer.java	2000/10/22 17:46:09	1.1
+++ XCanvasPeer.java	2002/01/22 21:54:03
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* Copyright (C) 2000, 2002  Free Software Foundation
 
    This file is part of libgcj.
 
@@ -230,6 +230,11 @@
     throw new UnsupportedOperationException("FIXME, not implemented");
   }
 
+  public ColorModel getColorModel ()
+  {
+    return null;
+  }
+
   public Graphics getGraphics()
   {
     DirectRasterGraphics gfxDevice = new XGraphics(window, config);
@@ -251,11 +256,21 @@
     return MIN_SIZE;
   }
 
+  public Dimension minimumSize ()
+  {
+    return getMinimumSize ();
+  }
+
   public Dimension getPreferredSize ()
   {
     return component.getSize();
   }
     
+  public Dimension preferredSize ()
+  {
+    return getPreferredSize();
+  }
+    
   public Toolkit getToolkit()
   {
     return getXToolkit();
@@ -318,6 +333,11 @@
     ensureFlush();	    
   }
     
+  public void reshape (int x, int y, int width, int height)
+  {
+    setBounds (x, y, width, height);
+  }
+
   public void setCursor(Cursor cursor)
   {
     throw new UnsupportedOperationException("FIXME, not implemented");
@@ -328,6 +348,16 @@
     throw new UnsupportedOperationException("FIXME, not implemented");
   }
 
+  public void enable ()
+  {
+    setEnabled (true);
+  }
+
+  public void disable ()
+  {
+    setEnabled (false);
+  }
+
   public void setEventMask(long eventMask)
   {
     WindowAttributes attributes = new WindowAttributes();
@@ -371,6 +401,16 @@
       }
   }
 	
+  public void show ()
+  {
+    setVisible (true);
+  }
+
+  public void hide ()
+  {
+    setVisible (false);
+  }
+
   static class DoMap implements Runnable 
   {
     Window window;
Index: gnu/awt/xlib/XFramePeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/awt/xlib/XFramePeer.java,v
retrieving revision 1.1
diff -u -r1.1 XFramePeer.java
--- XFramePeer.java	2000/10/22 17:46:09	1.1
+++ XFramePeer.java	2002/01/22 21:54:03
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* Copyright (C) 2000, 2002  Free Software Foundation
 
    This file is part of libgcj.
 
@@ -91,6 +91,11 @@
   public Insets getInsets()
   {
     return (Insets) INSETS_0_PROTOTYPE.clone();
+  }
+
+  public Insets insets ()
+  {
+    return getInsets ();
   }
 
   public void beginValidate()
Index: gnu/awt/xlib/XPanelPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/awt/xlib/XPanelPeer.java,v
retrieving revision 1.1
diff -u -r1.1 XPanelPeer.java
--- XPanelPeer.java	2000/10/22 17:46:09	1.1
+++ XPanelPeer.java	2002/01/22 21:54:03
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* Copyright (C) 2000, 2002  Free Software Foundation
 
    This file is part of libgcj.
 
@@ -38,6 +38,11 @@
   public Insets getInsets()
   {
     return (Insets) INSETS_0_PROTOTYPE.clone();
+  }
+
+  public Insets insets()
+  {
+    return getInsets();
   }
 
   public void beginValidate()
Index: java/awt/Adjustable.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Adjustable.java,v
retrieving revision 1.2
diff -u -r1.2 Adjustable.java
--- Adjustable.java	2000/07/23 00:24:14	1.2
+++ Adjustable.java	2002/01/22 21:54:05
@@ -1,39 +1,212 @@
-/* Copyright (C) 1999, 2000  Free Software Foundation
+/* Adjustable.java -- Objects with a numeric adjustment scale.
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libjava.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libjava License.  Please consult the file "LIBJAVA_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
-import java.awt.event.*;
+
+import java.awt.event.AdjustmentListener;
 
 /**
- * @author Tom Tromey <tromey@cygnus.com>
- * @date April 8, 2000
+  * This interface is for objects that take a numeric value that
+  * can be adjusted within a bounded range.  For example, a scroll bar.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
+public interface Adjustable
+{
+
+/*
+ * Static Variables
  */
 
-/* Status: Believed complete and correct to JDK 1.2.  */
+/**
+  * Constant for a horizontal orientation
+  */
+public static final int HORIZONTAL = 0;
 
-public interface Adjustable
-{
-  public static final int HORIZONTAL = 0;
-  public static final int VERTICAL = 1;
+/**
+  * Constant for a vertical orientation
+  */
+public static final int VERTICAL = 1;
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
+ */
+
+/**
+  * Returns the current value of the object.
+  *
+  * @return The current value of the object.
+  */
+public abstract int
+getValue();
+
+/*************************************************************************/
+
+/**
+  * Sets the current value of the object.
+  *
+  * @param value The current value of the object.
+  */
+public abstract void
+setValue(int value);
+
+/*************************************************************************/
+
+/**
+  * Returns the orientation of the object, either <code>HORIZONTAL</code>
+  * or <code>VERTICAL</code>.
+  *
+  * @return The orientation of this object.
+  */
+public abstract int
+getOrientation();
+
+/*************************************************************************/
+
+/**
+  * Returns the minimum value this object can take.
+  *
+  * @return The minimum value this object can take.
+  */
+public abstract int
+getMinimum();
+
+/*************************************************************************/
+
+/**
+  * Sets the minimum value this object can take to the specified value.
+  *
+  * @param minimum The new minimum value for this object.
+  */
+public abstract void
+setMinimum(int minimum);
+
+/*************************************************************************/
+
+/**
+  * Returns the maximum value this object can take.
+  *
+  * @return The maximum value this object can take.
+  */
+public abstract int
+getMaximum();
+
+/*************************************************************************/
+
+/**
+  * Sets the maximum value this object can take to the specified value.
+  *
+  * @param maximum The new maximum value for this object.
+  */
+public abstract void
+setMaximum(int maximum);
+
+/*************************************************************************/
+
+/**
+  * Returns the increment value for incrementing by units.
+  *
+  * @return The unit increment value.
+  */
+public abstract int
+getUnitIncrement();
+
+/*************************************************************************/
+
+/**
+  * Sets the increment value for incrementing by units to the specified value.
+  *
+  * @param increment The unit increment value.
+  */
+public abstract void
+setUnitIncrement(int increment);
+
+/*************************************************************************/
+
+/**
+  * Returns the increment value for incrementing by blocks.
+  *
+  * @return The block increment value.
+  */
+public abstract int
+getBlockIncrement();
+
+/*************************************************************************/
+
+/**
+  * Sets the increment value for incrementing by blocks to the specified value.
+  *
+  * @param increment The block increment value.
+  */
+public abstract void
+setBlockIncrement(int increment);
+
+/*************************************************************************/
+
+/**
+  * Returns the length of the indicator for this object.
+  *
+  * @return The indicator length.
+  */
+public abstract int
+getVisibleAmount();
+
+/*************************************************************************/
+
+/**
+  * Sets the length of the indicator for this object to the specified value.
+  *
+  * @param length The indicator length
+  */
+public abstract void
+setVisibleAmount(int length);
+
+/*************************************************************************/
+
+/**
+  * Adds a listener that will receive adjustment events for this object.
+  * 
+  * @param listener The adjustment listener to add.
+  */
+public abstract void
+addAdjustmentListener(AdjustmentListener listener);
+
+/*************************************************************************/
+
+/**
+  * Removes an adjustment listener from this object.  It will no longer
+  * receive adjustment events.
+  *
+  * @param listener The adjustment listener to remove.
+  */
+public abstract void
+removeAdjustmentListener(AdjustmentListener listener);
+
+} // interface Adjustable
 
-  public void addAdjustmentListener (AdjustmentListener l);
-  public int getBlockIncrement ();
-  public int getMaximum ();
-  public int getMinimum ();
-  public int getOrientation ();
-  public int getUnitIncrement ();
-  public int getValue ();
-  public int getVisibleAmount ();
-  public void removeAdjustmentListener (AdjustmentListener l);
-  public void setBlockIncrement (int b);
-  public void setMaximum (int max);
-  public void setMinimum (int min);
-  public void setUnitIncrement (int u);
-  public void setValue (int v);
-  public void setVisibleAmount (int v);
-}
Index: java/awt/Button.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Button.java,v
retrieving revision 1.5
diff -u -r1.5 Button.java
--- Button.java	2002/01/18 01:01:58	1.5
+++ Button.java	2002/01/22 21:54:05
@@ -269,8 +269,8 @@
 protected String
 paramString()
 {
-  return(getClass().getName() + "(label=" + getLabel() + ",actionCommand=" +
-         getActionCommand() + ")");
+  return ("label=" + getLabel() + ",actionCommand=" + getActionCommand()
+	  + "," + super.paramString());
 }
 
 } // class Button 
Index: java/awt/Checkbox.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Checkbox.java,v
retrieving revision 1.4
diff -u -r1.4 Checkbox.java
--- Checkbox.java	2002/01/16 23:40:04	1.4
+++ Checkbox.java	2002/01/22 21:54:05
@@ -362,8 +362,8 @@
 protected String
 paramString()
 {
-  return(getClass().getName() + "[label=" + label + ",state=" + state
-	 + ",group=" + group + "]");
+  return ("label=" + label + ",state=" + state + ",group=" + group
+	  + "," + super.paramString());
 }
 
 } // class Checkbox 
Index: java/awt/CheckboxMenuItem.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/CheckboxMenuItem.java,v
retrieving revision 1.3
diff -u -r1.3 CheckboxMenuItem.java
--- CheckboxMenuItem.java	2001/04/22 03:05:38	1.3
+++ CheckboxMenuItem.java	2002/01/22 21:54:05
@@ -1,134 +1,265 @@
-/* Copyright (C) 2000, 2001  Free Software Foundation
+/* CheckboxMenuItem.java -- A menu option with a checkbox on it.
+   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
+
 import java.awt.peer.CheckboxMenuItemPeer;
-import java.awt.event.ItemListener;
+import java.awt.peer.MenuItemPeer;
+import java.awt.peer.MenuComponentPeer;
 import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+/**
+  * This class implements a menu item that has a checkbox on it indicating
+  * the selected state of some option.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  * @author Tom Tromey <tromey@redhat.com>
+  */
+public class CheckboxMenuItem extends MenuItem implements ItemSelectable,
+                                                          java.io.Serializable
+{
+
+/*
+ * Static Variables
+ */
+
+// Serialization constant
+private static final long serialVersionUID = 6190621106981774043L;
 
-/** This implements a menu item which keeps track of a boolean state.
- * @author Tom Tromey <tromey@redhat.com>
- * @date December 25, 2000
+/*
+ * Instance Variables
  */
-public class CheckboxMenuItem extends MenuItem implements ItemSelectable
+
+/**
+  * @serial The state of the checkbox, with <code>true</code> being on and
+  * <code>false</code> being off.
+  */
+private boolean state;
+
+// List of registered ItemListeners
+private transient ItemListener item_listeners;
+
+/*************************************************************************/
+
+/*
+ * Constructors
+ */
+
+/**
+  * Initializes a new instance of <code>CheckboxMenuItem</code> with no
+  * label and an initial state of off.
+  */
+public
+CheckboxMenuItem()
+{
+  this("", false);
+}
+
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>CheckboxMenuItem</code> with the
+  * specified label and an initial state of off.
+  *
+  * @param label The label of the menu item.
+  */
+public
+CheckboxMenuItem(String label)
+{
+  this(label, false);
+}
+
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>CheckboxMenuItem</code> with the
+  * specified label and initial state.
+  *
+  * @param label The label of the menu item.
+  * @param state The initial state of the menu item, where <code>true</code>
+  * is on, and <code>false</code> is off.
+  */
+public
+CheckboxMenuItem(String label, boolean state)
+{
+  super(label);
+  this.state = state;
+}
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
+ */
+
+/**
+  * Returns the state of this menu item.
+  *
+  * @return The state of this menu item.
+  */
+public boolean
+getState()
+{
+  return(state);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the state of this menu item.
+  *
+  * @param state The initial state of the menu item, where <code>true</code>
+  * is on, and <code>false</code> is off.
+  */
+public synchronized void
+setState(boolean state)
 {
-  /** Create a new CheckboxMenuItem.
-   * @param label The checkbox label.  A null value is the same as "";
-   *              null is the default.
-   * @param state The initial check state; defaults to false.
-   */
-  public CheckboxMenuItem ()
-  {
-    this (null, false);
-  }
-
-  public CheckboxMenuItem (String label)
-  {
-    this (label, false);
-  }
-
-  public CheckboxMenuItem (String label, boolean state)
-  {
-    this.label = label;
-    this.state = state;
-  }
-
-  /** Add a listener for item events.
-   * @param listener The listener to add.
-   */
-  public synchronized void addItemListener (ItemListener listener)
-  {
-    listeners = AWTEventMulticaster.add (listeners, listener);
-  }
-
-  /** This creates the component's peer.  */
-  public void addNotify ()
-  {
-    if (peer != null)
-      {
-	// This choice of toolkit seems unsatisfying, but I'm not sure
-	// what else to do.
-	peer = Toolkit.getDefaultToolkit ().createCheckboxMenuItem (this);
-      }
-    super.addNotify ();
-  }
-
-  /** Returns this checkbox's label if this checkbox is selected.  */
-  public Object[] getSelectedObjects ()
-  {
-    Object[] r;
-    if (state)
-      {
-	r = new Object[1];
-	r[0] = label;
-      }
-    else
-      r = new Object[0];
-    return r;
-  }
-
-  /** Returns the current state of this checkbox.  */
-  public boolean getState ()
-  {
-    return state;
-  }
-
-  /** Generates a String representation of this Checkbox's state.  */
-  public String paramString ()
-  {
-    return ("[" + getClass ().getName ()
-	    + "state=" + state + ","
-	    + "label=" + label + "]");
-  }
-
-  /** Process an event for this Checkbox.
-   * @param event The event the process.
-   */
-  protected void processEvent (AWTEvent event) 
-  {
-    if (event instanceof ItemEvent)
-      processItemEvent ((ItemEvent) event);
-    else
-      super.processEvent (event);
-  }
-
-  /** Process an item event for this Checkbox.
-   * @param event The ItemEvent to process
-   */
-  protected void processItemEvent (ItemEvent event)
-  {
-    if (listeners != null)
-      listeners.itemStateChanged (event);
-  }
-
-  /** Remove an item listener.
-   * @param listener Item listener to remove.
-   */
-  public synchronized void removeItemListener (ItemListener listener)
-  {
-    listeners = AWTEventMulticaster.remove (listeners, listener);
-  }
-
-  /** Set the checkbox's state.
-   * @param state The new state.
-   */
-  public void setState (boolean state)
-  {
-    this.state = state;
-    if (peer != null)
-      {
-	CheckboxMenuItemPeer cp = (CheckboxMenuItemPeer) peer;
-	cp.setState (state);
-      }
-  }
-
-  // Private state.
-  String label;
-  boolean state;
-  ItemListener listeners;
+  this.state = state;
+  if (peer != null)
+    {
+      CheckboxMenuItemPeer cp = (CheckboxMenuItemPeer) peer;
+      cp.setState (state);
+    }
 }
+
+/*************************************************************************/
+
+/**
+  * Returns an array of length 1 with the menu item label for this object
+  * if the state is on.  Otherwise <code>null</code> is returned.
+  *
+  * @param An array with this menu item's label if it has a state of on,
+  * or <code>null</code> otherwise.
+  */
+public Object[]
+getSelectedObjects()
+{
+  if (state == false)
+    return(null);
+
+  Object[] obj = new Object[1];
+  obj[0] = getLabel();
+
+  return(obj);
+}
+
+/*************************************************************************/
+
+/**
+  * Create's this object's native peer
+  */
+public synchronized void
+addNotify()
+{
+  if (peer != null)
+    {
+      // This choice of toolkit seems unsatisfying, but I'm not sure
+      // what else to do.
+      peer = getToolkit().createCheckboxMenuItem(this);
+    }
+  super.addNotify ();
+}
+
+/*************************************************************************/
+
+/**
+  * Adds the specified listener to the list of registered item listeners
+  * for this object.
+  *
+  * @param listener The listener to add.
+  */
+public synchronized void
+addItemListener(ItemListener listener)
+{
+  item_listeners = AWTEventMulticaster.add(item_listeners, listener);
+
+  enableEvents(AWTEvent.ITEM_EVENT_MASK);
+}
+
+/*************************************************************************/
+
+/**
+  * Removes the specified listener from the list of registered item
+  * listeners for this object.
+  *
+  * @param listener The listener to remove.
+  */
+public synchronized void
+removeItemListener(ItemListener listener)
+{
+  item_listeners = AWTEventMulticaster.remove(item_listeners, listener);
+}
+
+/*************************************************************************/
+
+/**
+  * Processes the specified event by calling <code>processItemEvent()</code>
+  * if it is an instance of <code>ItemEvent</code> or calling the superclass
+  * method otherwise.
+  *
+  * @param event The event to process.
+  */
+protected void
+processEvent(AWTEvent event)
+{
+  if (event instanceof ItemEvent)
+    processItemEvent((ItemEvent)event);
+  else
+    super.processEvent(event);
+}
+
+/*************************************************************************/
+
+/**
+  * Processes the specified event by dispatching it to any registered listeners.
+  *
+  * @param event The event to process.
+  */
+protected void
+processItemEvent(ItemEvent event)
+{
+  if (item_listeners != null)
+    item_listeners.itemStateChanged(event);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a debugging string for this object.
+  *
+  * @return A debugging string for this object.
+  */
+public String
+paramString()
+{
+  return ("label=" + getLabel() + ",state=" + state
+	  + "," + super.paramString());
+}
+
+} // class CheckboxMenuItem
+
Index: java/awt/Choice.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Choice.java,v
retrieving revision 1.3
diff -u -r1.3 Choice.java
--- Choice.java	2001/04/22 03:05:38	1.3
+++ Choice.java	2002/01/22 21:54:05
@@ -1,276 +1,436 @@
-/* Copyright (C) 2000, 2001  Free Software Foundation
+/* Choice.java -- Java choice button widget.
+   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
-import java.awt.event.*;
+
 import java.awt.peer.ChoicePeer;
-import java.util.ArrayList;
+import java.awt.peer.ComponentPeer;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.io.Serializable;
+import java.util.Vector;
+
+/**
+  * This class implements a drop down choice list.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
+public class Choice extends Component implements ItemSelectable, Serializable
+{
+
+/*
+ * Static Variables
+ */
+
+// Serialization constant
+private static final long serialVersionUID = -4075310674757313071L;
+
+/*************************************************************************/
+
+/*
+ * Instance Variables
+ */
+
+/**
+  * @serial A list of items for the choice box, which can be <code>null</code>.
+  */
+private Vector pItems = new Vector();
+
+/**
+  * @serial The index of the selected item in the choice box.
+  */
+private int selectedIndex = -1;
+
+// Listener chain
+private ItemListener item_listeners;
+
+/*************************************************************************/
+
+/*
+ * Constructors
+ */
+
+/**
+  * Initializes a new instance of <code>Choice</code>.
+  */
+public
+Choice()
+{
+}
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
+ */
+
+/**
+  * Returns the number of items in the list.
+  *
+  * @return The number of items in the list.
+  */
+public int
+getItemCount()
+{
+  return(pItems.size());
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the number of items in the list.
+  *
+  * @return The number of items in the list.
+  *
+  * @deprecated This method is deprecated in favor of <code>getItemCount</code>.
+  */
+public int
+countItems()
+{
+  return(pItems.size());
+}
 
-/** This component lets the user choose an item from a list of
- * Strings.
- * @author Tom Tromey <tromey@redhat.com>
- * @date December 25, 2000
+/*************************************************************************/
+
+/**
+  * Returns the item at the specified index in the list.
+  *
+  * @param index The index into the list to return the item from.
+  *
+  * @exception ArrayIndexOutOfBoundsException If the index is invalid.
+  */
+public String
+getItem(int index)
+{
+  return((String)pItems.elementAt(index));
+}
+
+/*************************************************************************/
+
+/**
+  * Adds the specified item to this choice box.
+  *
+  * @param item The item to add.
+  */
+public synchronized void
+add(String item)
+{
+  if (item == null)
+    throw new IllegalArgumentException ("item must be non-null");
+
+  pItems.addElement(item);
+
+  int i = pItems.size () - 1;
+  if (peer != null)
+    {
+      ChoicePeer cp = (ChoicePeer) peer;
+      cp.add (item, i);
+    }
+
+  if (i == 0)
+    select (0);
+}
+
+/*************************************************************************/
+
+/**
+  * Adds the specified item to this choice box.
+  *
+  * @param item The item to add.
+  */
+public synchronized void
+addItem(String item)
+{
+  add(item);
+}
+
+/*************************************************************************/
+
+/** Inserts an item into this Choice.  Existing items are shifted
+ * upwards.  If the new item is the only item, then it is selected.
+ * If the currently selected item is shifted, then the first item is
+ * selected.  If the currently selected item is not shifted, then it
+ * remains selected.
+ *
+ * @param item The item to add.
+ * @param index The index at which the item should be inserted.
  */
-public class Choice extends Component implements ItemSelectable
+public synchronized void
+insert(String item, int index)
+{
+  if (index > getItemCount ())
+    index = getItemCount ();
+
+  pItems.insertElementAt(item, index);
+
+  if (peer != null)
+    {
+      ChoicePeer cp = (ChoicePeer) peer;
+      cp.add (item, index);
+    }
+
+  if (getItemCount () == 1 || selectedIndex >= index)
+    select (0);
+}
+
+/*************************************************************************/
+
+/**
+  * Removes the specified item from the choice box.
+  *
+  * @param item The item to remove.
+  *
+  * @param IllegalArgumentException If the specified item doesn't exist.
+  */
+public synchronized void
+remove(String item)
+{
+  int index = pItems.indexOf(item);
+  if (index == -1)
+    throw new IllegalArgumentException ("item \""
+					+ item + "\" not found in Choice");
+  remove(index);
+}
+
+/*************************************************************************/
+
+/**
+  * Removes the item at the specified index from the choice box.
+  *
+  * @param index The index of the item to remove.
+  *
+  * @exception ArrayIndexOutOfBoundException If the index is not valid.
+  */
+public synchronized void
+remove(int index)
 {
-  /** Create a new Choice object.  */
-  public Choice ()
-  {
-    items = new ArrayList ();
-    selected = -1;
-  }
-
-  /** Add a new item to this Choice object.  If the item is the first
-   * item on the list, then it is selected.
-   * @param item The new item; must be non-null.
-   */
-  public synchronized void add (String item)
-  {
-    if (item == null)
-      throw new IllegalArgumentException ("item must be non-null");
-    items.add (item);
-
-    int i = items.size () - 1;
-    if (peer != null)
-      {
-	ChoicePeer cp = (ChoicePeer) peer;
-	cp.add (item, i);
-      }
-
-    if (i == 0)
-      select (0);
-  }
-
-  /** Add a new item to this Choice object.  This is the same as the
-   * add method.  */
-  public void addItem (String item)
-  {
-    add (item);
-  }
-
-  /** Add a listener for item events.
-   * @param listener The listener to add.
-   */
-  public synchronized void addItemListener (ItemListener listener)
-  {
-    listeners = AWTEventMulticaster.add (listeners, listener);
-  }
-
-  /** This creates the component's peer.  */
-  public void addNotify ()
-  {
-    if (peer == null)
-      peer = getToolkit ().createChoice (this);
-    super.addNotify ();
-  }
-
-  /** Returns number of items.
-   * @deprecated
-   */
-  public int countItems ()
-  {
-    return getItemCount ();
-  }
-
-  /** Returns an item from this choice.
-   * @param index Index of the item.  Indices start at zero.
-   */
-  public String getItem (int index)
-  {
-    return (String) items.get (index);
-  }
-
-  /** Returns number of items in Choice.  */
-  public int getItemCount ()
-  {
-    return items.size ();
-  }
-
-  /** Returns index of selected item; -1 if no item is selected.  */
-  public int getSelectedIndex ()
-  {
-    return selected;
-  }
-
-  /** Returns currently selected item; null if no item is selected.  */
-  public synchronized String getSelectedItem ()
-  {
-    return selected == -1 ? null : (String) items.get (selected);
-  }
-
-  /** Returns the currently selected item.  */
-  public synchronized Object[] getSelectedObjects ()
-  {
-    // The JCL says this can return null but that breaks the contract
-    // for ItemSelectable.
-    Object[] r;
-    if (selected != -1)
-      {
-	r = new Object[1];
-	r[0] = items.get (selected);
-      }
-    else
-      r = new Object[0];
-    return r;
-  }
-
-  /** Inserts an item into this Choice.  Existing items are shifted
-   * upwards.  If the new item is the only item, then it is selected.
-   * If the currently selected item is shifted, then the first item is
-   * selected.  If the currently selected item is not shifted, then it
-   * remains selected.
-   * @param item The new item
-   * @param index The position at which to insert it.
-   */
-  public synchronized void insert (String item, int index)
-  {
-    if (index > items.size ())
-      index = items.size ();
-    items.add (index, item);
-
-    if (peer != null)
-      {
-	ChoicePeer cp = (ChoicePeer) peer;
-	cp.add (item, index);
-      }
-
-    if (items.size () == 1 || selected >= index)
-      select (0);
-  }
-
-  /** Generates a String representation of this Choice's state.  */
-  protected String paramString ()
-  {
-    return ("Choice["
-	    + "selected=" + selected
-	    + "]");
-  }
-
-  /** Process an event for this Choice
-   * @param event The event the process.
-   */
-  protected void processEvent (AWTEvent event)
-  {
-    if (event instanceof ItemEvent)
-      processItemEvent ((ItemEvent) event);
-    else
-      super.processEvent (event);
-  }
-
-  /** Process an item event for this Choice.
-   * @param event The ItemEvent to process
-   */
-  protected void processItemEvent (ItemEvent event)
-  {
-    if (listeners != null)
-      listeners.itemStateChanged (event);
-  }
-
-  /** Remove an item from this Choice.  If several matches exist, the
-   * first one is removed.  If the removed item is selected, the the
-   * first item is selected.
-   * @param item The item string.
-   */
-  public synchronized void remove (String item)
-  {
-    int size = items.size ();
-    for (int i = 0; i < size; ++i)
-      {
-	if (item.equals (items.get (i)))
-	  {
-	    remove (i);
-	    break;
-	  }
-      }
-    throw new IllegalArgumentException ("item \"" + item + "\" not in Choice");
-  }
-
-  /** Remove an item from this Choice.  If the removed item is
-   * selected, the the first item is selected.
-   * @param index Index of the item to remove
-   */
-  public synchronized void remove (int index)
-  {
-    items.remove (index);
-
-    if (peer != null)
-      {
-	ChoicePeer cp = (ChoicePeer) peer;
-	cp.remove (index);
-      }
-
-    if (index == selected)
-      select (0);
-    else if (selected > index)
-      --selected;
-  }
-
-  /** Remove all items from this choice.  */
-  public synchronized void removeAll ()
-  {
-    int oldsize = items.size ();
-    items.clear ();
-    selected = -1;
-
-    if (peer != null)
-      {
-	ChoicePeer cp = (ChoicePeer) peer;
-	for (int i = 0; i < oldsize; ++i)
-	  {
-	    // Always remove item 0.
-	    cp.remove (0);
-	  }
-      }
-  }
-
-  /** Remove an item listener.
-   * @param listener Item listener to remove.
-   */
-  public synchronized void removeItemListener (ItemListener listener)
-  {
-    listeners = AWTEventMulticaster.remove (listeners, listener);
-  }
-
-  /** Select an item in this Choice.
-   * @param item Name of the item to select.
-   */
-  public synchronized void select (String item)
-  {
-    int size = items.size ();
-    for (int i = 0; i < size; ++i)
-      {
-	if (item.equals (items.get (i)))
-	  {
-	    select (i);
-	    break;
-	  }
-      }
-  }
-
-  /** Select an item in this choice.
-   * @param index Index of item to select.
-   */
-  public synchronized void select (int index)
-  {
-    if (index < 0 || index > items.size ())
-      throw new IllegalArgumentException ("index out of range");
-    selected = index;
-    if (peer != null)
-      {
-	ChoicePeer cp = (ChoicePeer) peer;
-	cp.select (index);
-      }
-  }
-
-  private ItemListener listeners;
-
-  // List of items.
-  ArrayList items;
-  // Index of selected item.
-  int selected;
+  pItems.removeElementAt(index);
+
+  if (peer != null)
+    {
+      ChoicePeer cp = (ChoicePeer) peer;
+      cp.remove (index);
+    }
+
+  if (index == selectedIndex)
+    select (0);
+  else if (selectedIndex > index)
+    --selectedIndex;
+}
+
+/*************************************************************************/
+
+/**
+  * Removes all of the objects from this choice box.
+  */
+public synchronized void
+removeAll()
+{
+  int count = getItemCount();
+
+  for (int i = 0; i < count; i++)
+    {
+      // Always remove 0.
+      remove(0);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the currently selected item, or null if no item is
+  * selected.
+  *
+  * @return The currently selected item.
+  */
+public synchronized String
+getSelectedItem()
+{
+  return (selectedIndex == -1
+	  ? null
+	  : ((String)pItems.elementAt(selectedIndex)));
+}
+
+/*************************************************************************/
+
+/**
+  * Returns an array with one row containing the selected item.
+  *
+  * @return An array containing the selected item.
+  */
+public synchronized Object[]
+getSelectedObjects()
+{
+  if (selectedIndex == -1)
+    return null;
+
+  Object[] objs = new Object[1];
+  objs[0] = pItems.elementAt(selectedIndex);
+
+  return(objs);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the index of the selected item.
+  *
+  * @return The index of the selected item.
+  */
+public int
+getSelectedIndex()
+{
+  return(selectedIndex);
+}
+
+/*************************************************************************/
+
+/**
+  * Forces the item at the specified index to be selected.
+  *
+  * @param index The index of the row to make selected.
+  *
+  * @param IllegalArgumentException If the specified index is invalid.
+  */
+public synchronized void
+select(int index)
+{
+  if ((index < 0) || (index > getItemCount()))
+    throw new IllegalArgumentException("Bad index: " + index);
+
+  this.selectedIndex = index;
+  if (peer != null)
+    {
+      ChoicePeer cp = (ChoicePeer) peer;
+      cp.select (index);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Forces the named item to be selected.
+  *
+  * @param item The item to be selected.
+  *
+  * @exception IllegalArgumentException If the specified item does not exist.
+  */
+public synchronized void
+select(String item)
+{
+  int index = pItems.indexOf(item);
+  if (index >= 0)
+    select(index);
+}
+
+/*************************************************************************/
+
+/**
+  * Creates the native peer for this object.
+  */
+public void
+addNotify()
+{
+  if (peer == null)
+    peer = getToolkit ().createChoice (this);
+  super.addNotify ();
+}
+
+/*************************************************************************/
+
+/**
+  * Adds the specified listener to the list of registered listeners for
+  * this object.
+  *
+  * @param listener The listener to add.
+  */
+public synchronized void
+addItemListener(ItemListener listener)
+{
+  item_listeners = AWTEventMulticaster.add(item_listeners, listener);
+}
+
+/*************************************************************************/
+
+/**
+  * Removes the specified listener from the list of registered listeners for
+  * this object.
+  *
+  * @param listener The listener to remove.
+  */
+public synchronized void
+removeItemListener(ItemListener listener)
+{
+  item_listeners = AWTEventMulticaster.remove(item_listeners, listener);
 }
+
+/*************************************************************************/
+
+/**
+  * Processes this event by invoking <code>processItemEvent()</code> if the
+  * event is an instance of <code>ItemEvent</code>, otherwise the event
+  * is passed to the superclass.
+  *
+  * @param event The event to process.
+  */
+protected void
+processEvent(AWTEvent event)
+{
+  if (event instanceof ItemEvent)
+    processItemEvent((ItemEvent)event);
+  else
+    super.processEvent(event);
+}
+
+/*************************************************************************/
+
+/**
+  * Processes item event by dispatching to any registered listeners.
+  *
+  * @param event The event to process.
+  */
+protected void
+processItemEvent(ItemEvent event)
+{
+  if (item_listeners != null)
+    item_listeners.itemStateChanged(event);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a debugging string for this object.
+  *
+  * @return A debugging string for this object.
+  */
+protected String
+paramString()
+{
+  return ("selectedIndex=" + selectedIndex + "," + super.paramString());
+}
+
+} // class Choice 
Index: java/awt/Color.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Color.java,v
retrieving revision 1.6
diff -u -r1.6 Color.java
--- Color.java	2000/12/26 00:25:12	1.6
+++ Color.java	2002/01/22 21:54:06
@@ -1,122 +1,522 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* Color.java -- Class representing a color in Java
+   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
 
 /**
- * @author Warren Levy <warrenl@cygnus.com>
- * @date March 15, 2000.
+  * This class represents a color value in the AWT system.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
+public class Color implements java.io.Serializable
+{
+
+/*
+ * Static Variables
  */
 
+/**
+  * Constant for the color white
+  */
+public static final Color white = new Color(255,255,255,255);
+
+/**
+  * Constant for the color light gray
+  */
+public static final Color lightGray = new Color(192,192,192,255);
+
+/**
+  * Constant for the color gray
+  */
+public static final Color gray = new Color(128,128,128,255);
+
+/**
+  * Constant for the color dark gray
+  */
+public static final Color darkGray = new Color(64,64,64,255);
+
+/**
+  * Constant for the color black
+  */
+public static final Color black = new Color(0,0,0,255);
+
+/**
+  * Constant for the color red
+  */
+public static final Color red = new Color(255,0,0,255);
+
 /**
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status:  Stubbed; A very incomplete implementation.
+  * Constant for the color pink
+  */
+public static final Color pink = new Color(255, 175, 175,255);
+
+/**
+  * Constant for the color orange
+  */
+public static final Color orange = new Color(255, 200, 0,255);
+
+/**
+  * Constant for the color yellow
+  */
+public static final Color yellow = new Color(255,255,0,255);
+
+/**
+  * Constant for the color green
+  */
+public static final Color green = new Color(0,255,0,255);
+
+/**
+  * Constant for the color magenta
+  */
+public static final Color magenta = new Color(255,0,255,255);
+
+/**
+  * Constant for the color cyan
+  */
+public static final Color cyan = new Color(0,255,255,255);
+
+/**
+  * Constant for the color blue
+  */
+public static final Color blue = new Color(0,0,255,255);
+
+// Serialization Constant
+private static final long serialVersionUID = 118526816881161077L;
+
+// Masks for individual color components
+private static final int redmask = 255 << 16;
+private static final int greenmask = 255 << 8;
+private static final int bluemask = 255;
+private static final int alphamask = 255 << 24;
+
+private static final int BRIGHT_STEP = 0x30;
+
+/*************************************************************************/
+
+/*
+ * Instance Variables
  */
+
+/**
+  * @serial The RGB value of the color.
+  */
+private int value = 0xFFFFFFFF;
+
+/*************************************************************************/
 
-public class Color extends Object implements Paint, java.io.Serializable
+/*
+ * Static Methods
+ */
+
+/**
+  * Converts the specified string to a number and creates a new instance
+  * of <code>Color</code> from the value.
+  *
+  * @param str The numeric color string.
+  *
+  * @return A new instance of <code>Color</code> for the string.
+  *
+  * @exception NumberFormatException If the string cannot be parsed.
+  */
+public static Color
+decode(String str) throws NumberFormatException
 {
-  public static final Color white =	new Color(0xFFFFFFFF, true);
-  public static final Color lightGray =	new Color(0xFFC0C0C0, true);
-  public static final Color gray =	new Color(0xFF808080, true);
-  public static final Color darkGray =	new Color(0xFF404040, true);
-  public static final Color black =	new Color(0xFF000000, true);
-  public static final Color red =	new Color(0xFFFF0000, true);
-  public static final Color pink =	new Color(0xFFFFAFAF, true);
-  public static final Color orange =	new Color(0xFFFFC800, true);
-  public static final Color yellow =	new Color(0xFFFFFF00, true);
-  public static final Color green =	new Color(0xFF00FF00, true);
-  public static final Color magenta =	new Color(0xFFFF00FF, true);
-  public static final Color cyan =	new Color(0xFF00FFFF, true);
-  public static final Color blue =	new Color(0xFF0000FF, true);
-  
-  // The internal sRGB representation.
-  // Alpha is bits 24-31, if hasalpha is true.
-  // Red is bits 16-23; Green is bits 8-15; Blue is bits 0-7.
-  int rgba = 0xFFFFFFFF;
-
-  public Color(int rgb)
-  {
-    this(rgb, false);
-  } 
-
-  public Color(int rgba, boolean hasalpha)
-  {
-    this.rgba = rgba;
-    if (!hasalpha)
-      rgba |= 0xFF000000;
-  }
-
-  public Color(int r, int g, int b)
-  {
-    this(r, g, b, 0xFF);
-  }
-
-  public Color(int r, int g, int b, int a)
-  {
-    rgba = a << 24 | ((r << 16) & 0x00FF0000) | ((g << 8) & 0x0000FF00) |
-    	   (b & 0x000000FF);
-  }
-
-  public int getRed()
-  {
-    return (rgba >> 16) & 0xFF;
-  }
-
-  public int getGreen()
-  {
-    return (rgba >> 8) & 0xFF;
-  }
-
-  public int getBlue()
-  {
-    return rgba & 0xFF;
-  }
-
-  public int getAlpha()
-  {
-    return (rgba >> 24) & 0xFF;
-  }
-
-  public int getRGB()
-  {
-    return rgba;
-  }
-
-  static final int BRIGHT_STEP = 0x30;
-
-  public Color brighter()
-  {
-    return new Color(Math.min(255, getRed()   + BRIGHT_STEP),
-		     Math.min(255, getGreen() + BRIGHT_STEP),
-		     Math.min(255, getBlue()  + BRIGHT_STEP),
-		     getAlpha());
-  }
-    
-  public Color darker()
-  {
-    return new Color(Math.max(0, getRed()   - BRIGHT_STEP),
-		     Math.max(0, getGreen() - BRIGHT_STEP),
-		     Math.max(0, getBlue()  - BRIGHT_STEP),
-		     getAlpha());
-  }
-    
-  public int hashCode()
-  {
-    return rgba;
-  }
-  
-  public int getTransparency()
-  {
-    if (getAlpha() == 0xFF)
-      return Transparency.OPAQUE;
-    else
-      return Transparency.TRANSLUCENT;
-  }
+  Integer i = Integer.decode(str);
+  return(new Color(i.intValue()));
 }
+
+/*************************************************************************/
+
+/**
+  * Returns a new instance of <code>Color</code> from the value of
+  * the system property named by the specified string.  If the property
+  * does not exist, or cannot be parsed, then <code>null</code> will be
+  * returned.
+  *
+  * @param prop The system property to retrieve.
+  */
+public static Color
+getColor(String prop)
+{
+  return(getColor(prop, null));
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a new instance of <code>Color</code> from the value of the
+  * system property named by the specified string.  If the property does
+  * not exist, or cannot be parsed, then the default RGB value will be
+  * used to create a return value.
+  *
+  * @param prop The system property to retrieve.
+  * @param defrgb The default RGB value.
+  */
+public static Color
+getColor(String prop, int defrgb)
+{
+  return(getColor(prop, new Color(defrgb)));
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a new instance of <code>Color</code> from the value of the
+  * system property named by the specified string.  If the property does
+  * not exist, or cannot be parsed, then the default color value will be
+  * returned
+  *
+  * @param prop The system property to retrieve.
+  * @param defcolor The default color
+  */
+public static Color
+getColor(String prop, Color defcolor)
+{
+  String val = System.getProperty(prop);
+  if (val == null)
+    return(defcolor);
+
+  try
+    {
+      return(decode(val));
+    }
+  catch(NumberFormatException e)
+    {
+      return(defcolor);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Converts from the HSB (hue, saturation, brightness) color model to
+  * the RGB (red, green, blue) color model.
+  *
+  * @param hue The hue of the HSB value.
+  * @param saturation The saturation of the HSB value.
+  * @param brightness The brightness of the HSB value.
+  *
+  * @return The RGB value.
+  */
+public static int
+HSBtoRGB(float hue, float saturation, float brightness)
+{
+  // FIXME: Implement
+  throw new RuntimeException("Not implemented yet");
+}
+
+/*************************************************************************/
+
+/**
+  * Converts from the RGB (red, green, blue) color model to the HSB
+  * (hue, saturation, brightness) color model.
+  *
+  * @param red The red part of the RGB value.
+  * @param green The green part of the RGB value.
+  * @param blue The blue part of the RGB value.
+  * @param hsbvals An array of three floats used for storing the HSB values,
+  * or <code>null</code> if this return mechanism is not used.
+  *
+  * @return The HSB value.
+  */
+public static float[]
+RGBtoHSB(int red, int green, int blue, float hsbvals[])
+{
+  // FIXME: Implement
+  throw new RuntimeException("Not implemented yet");
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a new instance of <code>Color</code> based on the specified
+  * HSB values.
+  *
+  * @param hue The hue of the HSB value.
+  * @param saturation The saturation of the HSB value.
+  * @param brightness The brightness of the HSB value.
+  *
+  * @return The new <code>Color</code> object.
+  */
+public static Color
+getHSBColor(float hue, float saturation, float brightness)
+{
+  return(new Color(HSBtoRGB(hue, saturation, brightness)));
+}
+
+/*************************************************************************/
+
+/*
+ * Constructors
+ */
+
+/**
+  * Initializes a new instance of <code>Color</code> using the specified
+  * red, green, and blue values, which must be given as integers in the
+  * range of 0-255.
+  *
+  * @param red The red component of the RGB value.
+  * @param green The green component of the RGB value.
+  * @param blue The blue component of the RGB value.
+  *
+  * @exception IllegalArgumentException If the values are out of range.
+  */
+public
+Color(int red, int green, int blue)
+{
+  if ((red < 0) || (red > 255) || (green < 0) || (green > 255) ||
+      (blue < 0) || (blue > 255))
+    throw new IllegalArgumentException("Bad RGB values");
+
+  value = blue + (green << 8) + (red << 16);
+}
+
+public
+Color(int red, int green, int blue, int alpha)
+{
+  if ((red < 0) || (red > 255) || (green < 0) || (green > 255) ||
+      (blue < 0) || (blue > 255))
+    throw new IllegalArgumentException("Bad RGB values");
+
+  value = blue + (green << 8) + (red << 16) + (alpha << 24);
+}
+
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>Color</code> using the specified
+  * RGB value.  The blue value is in bits 0-7, green in bits 8-15, and 
+  * red in bits 16-23.  The other bits are ignored.
+  *
+  * @param value The RGB value
+  */
+public
+Color(int value)
+{
+  this.value = value;
+}
+
+public
+Color(int value, boolean hasalpha)
+{
+  this.value = value;
+  if (! hasalpha)
+    this.value |= 0xFF000000;
+}
+
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>Color</code> using the specified
+  * RGB values.  These must be in the range of 0.0-1.0.
+  *
+  * @param red The red component of the RGB value.
+  * @param green The green component of the RGB value.
+  * @param blue The blue component of the RGB value.
+  *
+  * @exception IllegalArgumentException If the values are out of range.
+  */
+public
+Color(float red, float green, float blue)
+{
+  if ((red < 0.0) || (red > 1.0) || (green < 0.0) || (green > 1.0) ||
+      (blue < 0.0) || (blue > 1.0))
+    throw new IllegalArgumentException("Bad RGB values");
+
+  int redval = (int)(255 * red);
+  int greenval = (int)(255 * green);
+  int blueval = (int)(255 * blue);
+
+  value = blueval + (greenval << 8) + (redval << 16);
+}
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
+ */
+
+/**
+  * Returns the red value for this color.
+  *
+  * @return The red value for this color.
+  */
+public int
+getRed()
+{
+  int redval = (value & redmask) >> 16;
+
+  return(redval);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the green value for this color.
+  *
+  * @return The green value for this color.
+  */
+public int
+getGreen()
+{
+  int greenval = (value & greenmask) >> 8;
+
+  return(greenval);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the blue value for this color.
+  *
+  * @return The blue value for this color.
+  */
+public int
+getBlue()
+{
+  int blueval = (value & bluemask);
+
+  return(blueval);
+}
+
+public int
+getAlpha()
+{
+  int alphaval = (value & alphamask);
+
+  return(alphaval);
+}
+
+public int
+getTransparency()
+{
+  if (getAlpha() == 0xFF)
+    return Transparency.OPAQUE;
+  else
+    return Transparency.TRANSLUCENT;
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the RGB value for this color.  The blue value will be in bits
+  * 0-7, green in 8-15, and red in 6-23.  The upper bits should be ignored.
+  *
+  * @return The RGB value for this color.
+  */
+public int
+getRGB()
+{
+  return(value);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a brighter version of this color.  This is done by increasing
+  * the RGB values by an arbitrary scale factor.  Note that this method
+  * and the <code>darker()</code> method are not necessarily inverses.
+  *
+  * @return A brighter version of this color.
+  */
+public Color
+brighter()
+{
+  return new Color(Math.min(255, getRed()   + BRIGHT_STEP),
+		   Math.min(255, getGreen() + BRIGHT_STEP),
+		   Math.min(255, getBlue()  + BRIGHT_STEP),
+		   getAlpha());
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a darker version of this color.  This is done by decreasing
+  * the RGB values by an arbitrary scale factor.  Note that this method
+  * and the <code>brighter()</code> method are not necessarily inverses.
+  *
+  * @return A darker version of this color.
+  */
+public Color
+darker()
+{
+  return new Color(Math.max(0, getRed()   - BRIGHT_STEP),
+		   Math.max(0, getGreen() - BRIGHT_STEP),
+		   Math.max(0, getBlue()  - BRIGHT_STEP),
+		   getAlpha());
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a hash value for this color.
+  *
+  * @return A hash value for this color.
+  */
+public int
+hashCode()
+{
+  return(value);
+}
+
+/*************************************************************************/
+
+/**
+  * Tests this object for equality against the specified object.  This will
+  * be true if and only if the specified object is an instance of
+  * <code>Color</code> and has the same red, green, and blue values as
+  * this object.
+  *
+  * @return <code>true</code> if the specified object is equal to this one,
+  * <code>false</code> otherwise.
+  */
+public boolean
+equals(Object obj)
+{
+  if (!(obj instanceof Color))
+    return(false);
+
+  Color c = (Color)obj;
+  return value == c.value;
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a string representation of this object.
+  * 
+  * @return A string representation of this object.
+  */
+public String
+toString()
+{
+  return(getClass().getName() + "(red=" + getRed() + ",green=" + getGreen() +
+         ",blue=" + getBlue() + ")");
+}
+
+} // class Color
 
Index: java/awt/Cursor.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Cursor.java,v
retrieving revision 1.3
diff -u -r1.3 Cursor.java
--- Cursor.java	2001/01/11 17:49:47	1.3
+++ Cursor.java	2002/01/22 21:54:06
@@ -1,39 +1,126 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* Copyright (C) 1999, 2000, 2002  Free Software Foundation
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
-package java.awt;
 
-/* A somewhat incomplete placeholder. */
+package java.awt;
 
+/**
+  * This class represents various predefined cursor types.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
 public class Cursor implements java.io.Serializable
 {
-  public static final int DEFAULT_CURSOR   = 0,
-			  CROSSHAIR_CURSOR = 1,
-			  TEXT_CURSOR      = 2,
-			  WAIT_CURSOR      = 3,
-			  SW_RESIZE_CURSOR = 4,
-			  SE_RESIZE_CURSOR = 5,
-			  NW_RESIZE_CURSOR = 6,
-			  NE_RESIZE_CURSOR = 7,
-			  N_RESIZE_CURSOR  = 8,
-			  S_RESIZE_CURSOR  = 9,
-			  W_RESIZE_CURSOR  = 10,
-			  E_RESIZE_CURSOR  = 11,
-			  HAND_CURSOR      = 12,
-			  MOVE_CURSOR      = 13,
-			  CUSTOM_CURSOR    = 0xFFFFFFFF;
+  /**
+  * Constant for the system default cursor type
+  */
+  public static final int DEFAULT_CURSOR = 0;
+
+  /**
+  * Constant for a cross-hair cursor.
+  */
+  public static final int CROSSHAIR_CURSOR = 1;
+
+  /**
+  * Constant for a cursor over a text field.
+  */
+  public static final int TEXT_CURSOR = 2;
+
+  /**
+  * Constant for a cursor to display while waiting for an action to complete.
+  */
+  public static final int WAIT_CURSOR = 3;
+
+  /**
+  * Cursor used over SW corner of window decorations.
+  */
+  public static final int SW_RESIZE_CURSOR = 4;
+
+  /**
+  * Cursor used over SE corner of window decorations.
+  */
+  public static final int SE_RESIZE_CURSOR = 5;
+
+  /**
+  * Cursor used over NW corner of window decorations.
+  */
+  public static final int NW_RESIZE_CURSOR = 6;
+
+  /**
+  * Cursor used over NE corner of window decorations.
+  */
+  public static final int NE_RESIZE_CURSOR = 7;
+
+  /**
+  * Cursor used over N edge of window decorations.
+  */
+  public static final int N_RESIZE_CURSOR = 8;
+
+  /**
+  * Cursor used over S edge of window decorations.
+  */
+  public static final int S_RESIZE_CURSOR = 9;
+
+  /**
+  * Cursor used over W edge of window decorations.
+  */
+  public static final int W_RESIZE_CURSOR = 10;
+
+  /**
+  * Cursor used over E edge of window decorations.
+  */
+  public static final int E_RESIZE_CURSOR = 11;
+
+  /**
+  * Constant for a hand cursor.
+  */
+  public static final int HAND_CURSOR = 12;
+
+  /**
+  * Constant for a cursor used during window move operations.
+  */
+  public static final int MOVE_CURSOR = 13;
 
+  public static final int CUSTOM_CURSOR    = 0xFFFFFFFF;
+
   private static final int PREDEFINED_COUNT = 14;
 
   protected static Cursor[] predefined = new Cursor[PREDEFINED_COUNT];
   protected String name;
+
+  /**
+   * @serial The numeric id of this cursor.
+   */
   int type;
 
+  /**
+   * Initializes a new instance of <code>Cursor</code> with the specified
+   * type.
+   *
+   * @param type The cursor type.
+   */
   public Cursor(int type)
   {
     if (type < 0 || type >= PREDEFINED_COUNT)
@@ -43,14 +130,25 @@
   }
 
   /** This constructor is used internally only. 
-    * Application code should call Toolkit.createCustomCursor().
-    */
+   * Application code should call Toolkit.createCustomCursor().
+   */
   protected Cursor(String name)
   {
     this.name = name;
     this.type = CUSTOM_CURSOR;
   }
 
+  /**
+   * Returns an instance of <code>Cursor</code> for one of the specified
+   * predetermined types.
+   *
+   * @param type The type contant from this class.
+   *
+   * @return The requested predefined cursor.
+   *
+   * @exception IllegalArgumentException If the constant is not one of the
+   * predefined cursor type constants from this class.
+   */
   public static Cursor getPredefinedCursor(int type)
   {
     if (type < 0 || type >= PREDEFINED_COUNT)
@@ -67,11 +165,21 @@
     return null;
   }
 
+  /**
+   * Returns an instance of the system default cursor type.
+   *
+   * @return The system default cursor.
+   */
   public static Cursor getDefaultCursor()
   {
-    return getPredefinedCursor(0);
+    return getPredefinedCursor(DEFAULT_CURSOR);
   }
 
+  /**
+   * Returns the numeric type identifier for this cursor.
+   *
+   * @return The cursor id.
+   */
   public int getType()
   {
     return type;
Index: java/awt/Dialog.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Dialog.java,v
retrieving revision 1.3
diff -u -r1.3 Dialog.java
--- Dialog.java	2001/04/22 03:05:38	1.3
+++ Dialog.java	2002/01/22 21:54:06
@@ -1,163 +1,303 @@
-/* Copyright (C) 2000, 2001  Free Software Foundation
+/* Dialog.java -- An AWT dialog box
+   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
 
 import java.awt.peer.DialogPeer;
+import java.awt.peer.WindowPeer;
+import java.awt.peer.ContainerPeer;
+import java.awt.peer.ComponentPeer;
+
+/**
+  * A dialog box widget class.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  * @author Tom Tromey <tromey@redhat.com>
+  */
+public class Dialog extends Window implements java.io.Serializable
+{
+
+/*
+ * Static Variables
+ */
+
+// Serialization constant
+private static final long serialVersionUID = 5920926903803293709L;
+
+/*************************************************************************/
+
+/*
+ * Instance Variables
+ */
+
+/**
+  * @serial Indicates whether or not this dialog box is modal.
+  */
+private boolean modal;
+
+/**
+  * @serial Indicates whether or not this dialog box is resizable.
+  */
+private boolean resizable;
+
+/**
+  * @serial The title string for this dialog box, which can be
+  * <code>null</code>.
+  */
+private String title;
+
+/*************************************************************************/
+
+/*
+ * Constructors
+ */
+
+/**
+  * Initializes a new instance of <code>Dialog</code> with the specified
+  * parent, that is not resizable and not modal, and which has no title.
+  *
+  * @param parent The parent frame of this dialog box.
+  */
+public
+Dialog(Frame parent)
+{
+  this(parent, "", false);
+}
 
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>Dialog</code> with the specified
+  * parent and modality, that is not resizable and which has no title.
+  *
+  * @param parent The parent frame of this dialog box.
+  * @param modal <true> if this dialog box is modal, <code>false</code>
+  * otherwise.
+  */
+public
+Dialog(Frame parent, boolean modal)
+{
+  this(parent, "", modal);
+}
+
+/*************************************************************************/
+
 /**
- * @author Tom Tromey <tromey@redhat.com>
- * @date April 17, 2001
+  * Initializes a new instance of <code>Dialog</code> with the specified
+  * parent, that is not resizable and not modal, and which has the specified
+  * title.
+  *
+  * @param parent The parent frame of this dialog box.
+  * @param title The title string for this dialog box.
+  */
+public
+Dialog(Frame parent, String title)
+{
+  this(parent, title, false);
+}
+
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>Dialog</code> with the specified,
+  * parent, title, and modality, that is not resizable.
+  *
+  * @param parent The parent frame of this dialog box.
+  * @param title The title string for this dialog box.
+  * @param modal <true> if this dialog box is modal, <code>false</code>
+  * otherwise.
+  */
+public
+Dialog(Frame parent, String title, boolean modal)
+{
+  super(parent);
+
+  this.title = title;
+  this.modal = modal;
+  resizable = false;
+
+  setLayout(new BorderLayout());
+}
+
+public
+Dialog (Dialog owner)
+{
+  this (owner, "", false);
+}
+
+public
+Dialog (Dialog owner, String title)
+{
+  this (owner, title, false);
+}
+
+public
+Dialog (Dialog owner, String title, boolean modal)
+{
+  super (owner);
+  this.modal = modal;
+  this.title = title;
+  setLayout (new BorderLayout ());
+}
+
+/*************************************************************************/
+
+/*
+ * Instance Variables
  */
+
+/**
+  * Returns the title of this dialog box.
+  * 
+  * @return The title of this dialog box.
+  */
+public String
+getTitle()
+{
+  return(title);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the title of this dialog box to the specified string.
+  *
+  * @param title The new title.
+  */
+public synchronized void
+setTitle(String title)
+{
+  this.title = title;
+  if (peer != null)
+    {
+      DialogPeer d = (DialogPeer) peer;
+      d.setTitle (title);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Tests whether or not this dialog box is modal.
+  *
+  * @return <code>true</code> if this dialog box is modal,
+  * <code>false</code> otherwise.
+  */
+public boolean
+isModal()
+{
+  return(modal);
+}
+
+/*************************************************************************/
+
+/**
+  * Changes the modality of this dialog box.  This can only be done before
+  * the peer is created.
+  *
+  * @param modal <code>true</code> to make this dialog box modal,
+  * <code>false</code> to make it non-modal.
+  */
+public void
+setModal(boolean modal)
+{
+  this.modal = modal;
+}
+
+/*************************************************************************/
 
-public class Dialog extends Window
+/**
+  * Tests whether or not this dialog box is resizable.
+  *
+  * @return <code>true</code> if this dialog is resizable, <code>false</code>,
+  * otherwise.
+  */
+public boolean
+isResizable()
+{
+  return(resizable);
+}
+
+/*************************************************************************/
+
+/**
+  * Changes the resizability of this dialog box.
+  *
+  * @param resizable <code>true</code> to make this dialog resizable,
+  * <code>false</code> to make it non-resizable.
+  */
+public synchronized void
+setResizable(boolean resizable)
 {
-  public Dialog (Dialog owner)
-  {
-    this (owner, "", false);
-  }
-
-  public Dialog (Dialog owner, String title)
-  {
-    this (owner, title, false);
-  }
-
-  public Dialog (Dialog owner, String title, boolean modal)
-  {
-    super (owner);
-    this.modal = modal;
-    this.title = title;
-    setLayout (new BorderLayout ());
-  }
-
-  public Dialog (Frame owner)
-  {
-    this (owner, "", false);
-  }
-
-  public Dialog (Frame owner, boolean modal)
-  {
-    this (owner, "", modal);
-  }
-
-  public Dialog (Frame owner, String title)
-  {
-    this (owner, title, false);
-  }
-
-  public Dialog (Frame owner, String title, boolean modal)
-  {
-    super (owner);
-    this.modal = modal;
-    this.title = title;
-    setLayout (new BorderLayout ());
-  }
-
-  /** Create the peer if it does not already exist.  */
-  public void addNotify ()
-  {
-    if (peer == null)
-      peer = getToolkit ().createDialog (this);
-    super.addNotify ();
-  }
-
-  public boolean isModal ()
-  {
-    return modal;
-  }
-
-  public void setModal (boolean modal)
-  {
-    this.modal = modal;
-  }
-
-  public String getTitle ()
-  {
-    return title;
-  }
-
-  public void setTitle (String title)
-  {
-    this.title = title;
-    if (peer != null)
-      {
-	DialogPeer d = (DialogPeer) peer;
-	d.setTitle (title);
-      }
-  }
-
-  public void show ()
-  {
-    boolean vis = isVisible ();
-    super.show ();
-    if (modal && vis)
-      {
-	// Don't return until something happens.  We lock on the peer
-	// instead of `this' so that we don't interfere with whatever
-	// locks the caller might want to use.
-	synchronized (peer)
-	  {
-	    try
-	      {
-		peer.wait ();
-	      }
-	    catch (InterruptedException _)
-	      {
-	      }
-	  }
-      }
-  }
-
-  public void hide ()
-  {
-    super.hide ();
-    synchronized (peer)
-      {
-	peer.notify ();
-      }
-  }
-
-  public void dispose ()
-  {
-    super.dispose ();
-    synchronized (peer)
-      {
-	peer.notify ();
-      }
-  }
-
-  public boolean isResizable ()
-  {
-    return resizable;
-  }
-
-  public void setResizable (boolean resizable)
-  {
-    this.resizable = resizable;
-    if (peer != null)
-      {
-	DialogPeer d = (DialogPeer) peer;
-	d.setResizable (resizable);
-      }
-  }
-
-  protected String paramString ()
-  {
-    return ("Dialog["
-	    + title + ","
-	    + modal + ","
-	    + resizable + "]");
-  }
-
-  // True if dialog is modal.
-  private boolean modal;
-  // True if dialog is resizable by the user.
-  private boolean resizable = false;
-  // Dialog title.
-  private String title;
+  this.resizable = resizable;
+  if (peer != null)
+    {
+      DialogPeer d = (DialogPeer) peer;
+      d.setResizable (resizable);
+    }
 }
+
+/*************************************************************************/
+
+/**
+  * Creates this object's native peer.
+  */
+public synchronized void
+addNotify()
+{
+  if (peer == null)
+    peer = getToolkit ().createDialog (this);
+  super.addNotify ();
+}
+
+/*************************************************************************/
+
+/**
+  * Makes this dialog visible and brings it to the front.
+  */
+public void
+show()
+{
+  super.show();
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a debugging string for this component.
+  * 
+  * @return A debugging string for this component.
+  */
+protected String
+paramString()
+{
+  return ("title+" + title + ",modal=" + modal +
+	  ",resizable=" + resizable + "," + super.paramString());
+}
+
+} // class Dialog
+
Index: java/awt/FileDialog.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/FileDialog.java,v
retrieving revision 1.2
diff -u -r1.2 FileDialog.java
--- FileDialog.java	2001/04/22 03:05:38	1.2
+++ FileDialog.java	2002/01/22 21:54:06
@@ -1,119 +1,303 @@
-/* Copyright (C) 2000, 2001  Free Software Foundation
+/* FileDialog.java -- A filename selection dialog box
+   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
 
 import java.awt.peer.FileDialogPeer;
+import java.awt.peer.DialogPeer;
+import java.awt.peer.WindowPeer;
+import java.awt.peer.ContainerPeer;
+import java.awt.peer.ComponentPeer;
 import java.io.FilenameFilter;
 
+/**
+  * This class implements a file selection dialog box widget.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  * @author Tom Tromey <tromey@redhat.com>
+  */
+public class FileDialog extends Dialog implements java.io.Serializable
+{
+
+/*
+ * Static Variables
+ */
+
 /**
- * @author Tom Tromey <tromey@redhat.com>
- * @date April 20, 2001
+  * Indicates that the purpose of the dialog is for opening a file.
+  */
+public static final int LOAD = 0;
+
+/**
+  * Indicates that the purpose of the dialog is for saving a file.
+  */
+public static final int SAVE = 1;
+
+// Serialization constant
+private static final long serialVersionUID = 5035145889651310422L;
+
+/*************************************************************************/
+
+/*
+ * Instance Variables
  */
 
-public class FileDialog extends Dialog
+/**
+  * @serial The directory for this file dialog.
+  */
+private String dir;
+
+/**
+  * @serial The filename for this file dialog
+  */
+private String file;
+
+/**
+  * @serial The filter for selecting filenames to display
+  */
+private FilenameFilter filter;
+
+/**
+  * @serial The mode of this dialog, either <code>LOAD</code> or 
+  * <code>SAVE</code>.
+  */
+private int mode;
+
+/*************************************************************************/
+
+/*
+ * Constructors
+ */
+
+/**
+  * Initializes a new instance of <code>FileDialog</code> with the 
+  * specified parent.  This dialog will have no title and will be for
+  * loading a file.
+  *
+  * @param parent The parent frame for this dialog.
+  */
+public
+FileDialog(Frame parent)
 {
-  public static int LOAD = 0;
-  public static int SAVE = 1;
+  this(parent, "", LOAD);
+}
+
+/*************************************************************************/
+
+/**
+  * Initialized a new instance of <code>FileDialog</code> with the
+  * specified parent and title.  This dialog will be for opening a file.
+  *
+  * @param parent The parent frame for this dialog.
+  * @param title The title for this dialog.
+  */
+public
+FileDialog(Frame parent, String title)
+{
+  this(parent, title, LOAD);
+}
+
+/*************************************************************************/
+
+/**
+  * Initialized a new instance of <code>FileDialog</code> with the
+  * specified parent, title, and mode.
+  *
+  * @param parent The parent frame for this dialog.
+  * @param title The title for this dialog.
+  * @param mode The mode of the dialog, either <code>LOAD</code> or
+  * <code>SAVE</code>.
+  */
+public
+FileDialog(Frame parent, String title, int mode)
+{
+  super(parent, title, true);
+
+  if ((mode != LOAD) && (mode != SAVE))
+    throw new IllegalArgumentException("Bad mode: " + mode);
 
-  public FileDialog (Frame parent)
-  {
-    this (parent, "", LOAD);
-  }
-
-  public FileDialog (Frame parent, String title)
-  {
-    this (parent, title, LOAD);
-  }
-
-  public FileDialog (Frame parent, String title, int mode)
-  {
-    super (parent, title, true);
-    if (mode != LOAD && mode != SAVE)
-      throw new IllegalArgumentException ("unknown mode: " + mode);
-    this.mode = mode;
-  }
-
-  public void addNotify ()
-  {
-    if (peer == null)
-      peer = getToolkit ().createFileDialog (this);
-    super.addNotify ();
-  }
-
-  public String getDirectory ()
-  {
-    return dir;
-  }
-
-  public String getFile ()
-  {
-    return file;
-  }
-
-  public FilenameFilter getFilenameFilter ()
-  {
-    return filter;
-  }
-
-  public int getMode ()
-  {
-    return mode;
-  }
-
-  protected String paramString ()
-  {
-    return ("FileDialog[mode=" + mode
-	    + ",dir=" + dir
-	    + ",file=" + file + "]");
-  }
-
-  public void setDirectory (String dir)
-  {
-    this.dir = dir;
-    if (peer != null)
-      {
-	FileDialogPeer f = (FileDialogPeer) peer;
-	f.setDirectory (dir);
-      }
-  }
-
-  public void setFile (String file)
-  {
-    this.file = file;
-    if (peer != null)
-      {
-	FileDialogPeer f = (FileDialogPeer) peer;
-	f.setFile (file);
-      }
-  }
-
-  public void setFilenameFilter (FilenameFilter filter)
-  {
-    this.filter = filter;
-    if (peer != null)
-      {
-	FileDialogPeer f = (FileDialogPeer) peer;
-	f.setFilenameFilter (filter);
-      }
-  }
-
-  public void setMode (int mode)
-  {
-    if (mode != LOAD && mode != SAVE)
-      throw new IllegalArgumentException ("unknown mode: " + mode);
-    this.mode = mode;
-    // FIXME: update peer?
-  }
-
-  // Names here from serialization spec.
-  private int mode;
-  private String dir;
-  private String file;
-  private FilenameFilter filter;
+  this.mode = mode;
 }
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
+ */
+
+/**
+  * Returns the mode of this dialog, either <code>LOAD</code> or
+  * <code>SAVE</code>.
+  *
+  * @return The mode of this dialog.
+  */
+public int
+getMode()
+{
+  return(mode);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the mode of this dialog to either <code>LOAD</code> or
+  * <code>SAVE</code>.  This method is only effective before the native
+  * peer is created.
+  *
+  * @param mode The new mode of this file dialog.
+  */
+public void
+setMode(int mode)
+{
+  if ((mode != LOAD) && (mode != SAVE))
+    throw new IllegalArgumentException("Bad mode: " + mode);
+
+  this.mode = mode;
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the directory for this file dialog.
+  *
+  * @return The directory for this file dialog.
+  */
+public String
+getDirectory()
+{
+  return(dir);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the directory for this file dialog.
+  *
+  * @param dir The new directory for this file dialog.
+  */
+public synchronized void
+setDirectory(String dir)
+{
+  this.dir = dir;
+  if (peer != null)
+    {
+      FileDialogPeer f = (FileDialogPeer) peer;
+      f.setDirectory (dir);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the file that is selected in this dialog.
+  *
+  * @return The file that is selected in this dialog.
+  */
+public String
+getFile()
+{
+  return(file);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the selected file for this dialog.
+  *
+  * @param file The selected file for this dialog.
+  */
+public synchronized void
+setFile(String file)
+{
+  this.file = file;
+  if (peer != null)
+    {
+      FileDialogPeer f = (FileDialogPeer) peer;
+      f.setFile (file);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the filename filter being used by this dialog.
+  *
+  * @param The filename filter being used by this dialog.
+  */
+public FilenameFilter
+getFilenameFilter()
+{
+  return(filter);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the filename filter used by this dialog.
+  *
+  * @param filter The new filename filter for this file dialog box.
+  */
+public synchronized void
+setFilenameFilter(FilenameFilter filter)
+{
+  this.filter = filter;
+  if (peer != null)
+    {
+      FileDialogPeer f = (FileDialogPeer) peer;
+      f.setFilenameFilter (filter);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Creates the native peer for this file dialog box.
+  */
+public void
+addNotify()
+{
+  if (peer == null)
+    peer = getToolkit ().createFileDialog (this);
+  super.addNotify ();
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a debugging string for this object.
+  *
+  * @return A debugging string for this object.
+  */
+protected String
+paramString()
+{
+  return ("dir=" + dir + ",file=" + file +
+	  ",mode=" + mode + "," + super.paramString());
+}
+
+} // class FileDialog 
+
Index: java/awt/Font.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Font.java,v
retrieving revision 1.6
diff -u -r1.6 Font.java
--- Font.java	2000/07/12 03:32:06	1.6
+++ Font.java	2002/01/22 21:54:06
@@ -1,120 +1,414 @@
-/* Copyright (C) 1999, 2000  Free Software Foundation
+/* Font.java -- Font object
+   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
 
-   This file is part of libjava.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libjava License.  Please consult the file "LIBJAVA_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
+
+import java.awt.peer.FontPeer;
+import java.util.StringTokenizer;
+
+/**
+  * This class represents a windowing system font.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  * @author Warren Levy <warrenl@cygnus.com>
+  */
+public class Font implements java.io.Serializable
+{
+
+/*
+ * Static Variables
+ */
+
+/**
+  * Constant indicating a "plain" font.
+  */
+public static final int PLAIN = 0;
+
+/**
+  * Constant indicating a "bold" font.
+  */
+public static final int BOLD = 1;
+
+/**
+  * Constant indicating an "italic" font.
+  */
+public static final int ITALIC = 2;
+
+public static final int ROMAN_BASELINE = 0;
+public static final int CENTER_BASELINE = 1;
+public static final int HANGING_BASELINE = 2;
+
+// Serialization constant
+private static final long serialVersionUID = -4206021311591459213L;
+
+/*************************************************************************/
+
+/*
+ * Instance Variables
+ */
+
+/**
+  * The name of this font
+  */
+protected String name;
+
+/**
+  * The font style, which is a combination (by summing, not OR-ing) of
+  * the font style constants in this class.
+  */
+protected int style;
+
+/**
+  * The font point size.
+  */
+protected int size;
+
+protected float pointSize;
+
+// The native peer for this font
+private FontPeer peer;
+
+/*************************************************************************/
 
-import java.util.Locale;
+/*
+ * Static Methods
+ */
+
+/**
+  * Creates a <code>Font</code> object from the specified string, which
+  * is in one of the following formats:
+  * <p>
+  * <ul>
+  * <li>fontname-style-pointsize
+  * <li>fontname-style
+  * <li>fontname-pointsize
+  * <li>fontname
+  * </ul>
+  * <p>
+  * The style should be one of BOLD, ITALIC, or BOLDITALIC.  The default
+  * style if none is specified is PLAIN.  The default size if none
+  * is specified is 12.
+  */
+public static Font
+decode(String fontspec)
+{
+  String name = null;
+  int style = PLAIN;
+  int size = 12;
+
+  StringTokenizer st = new StringTokenizer(fontspec, "-");
+  while (st.hasMoreTokens())
+    {
+      String token = st.nextToken();
+      if (name == null)
+        {
+          name = token;
+          continue;
+        }
+
+      if (token.toUpperCase().equals("BOLD"))
+        {
+          style = BOLD;
+          continue;
+        }
+      if (token.toUpperCase().equals("ITALIC"))
+        {
+          style = ITALIC;
+          continue;
+        }
+      if (token.toUpperCase().equals("BOLDITALIC"))
+        {
+          style = BOLD + ITALIC;
+          continue;
+        }
+
+      int tokenval = 0;
+      try
+        {
+          tokenval = Integer.parseInt(token);
+        }
+      catch(Exception e) { ; }
+
+      if (tokenval != 0)
+        size = tokenval;
+    }
+
+  return(new Font(name, style, size));
+}
+
+/*************************************************************************/
 
 /**
- * @author Warren Levy <warrenl@cygnus.com>
- * @date March 16, 2000.
+  * Returns a <code>Font</code> object from the passed property name.
+  *
+  * @param propname The name of the system property.
+  * @param default Value to use if the property is not found.
+  *
+  * @return The requested font, or <code>default</code> if the property 
+  * not exist or is malformed.
+  */
+public static Font
+getFont(String propname, Font defval)
+{
+  String propval = System.getProperty(propname);
+  if (propval != null)
+    return(decode(propval));
+
+  return(defval);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a <code>Font</code> object from the passed property name.
+  *
+  * @param propname The name of the system property.
+  *
+  * @return The requested font, or <code>null</code> if the property 
+  * not exist or is malformed.
+  */
+public static Font
+getFont(String propname)
+{
+  return(getFont(propname, null));
+}
+
+/*************************************************************************/
+
+/*
+ * Constructors
  */
 
 /**
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status:  Stubbed; A very incomplete implementation.
+  * Initializes a new instance of <code>Font</code> with the specified
+  * attributes.
+  *
+  * @param name The name of the font.
+  * @param style The font style.
+  * @param size The font point size.
+  */
+public
+Font(String name, int style, int size)
+{
+  this.name = name;
+  this.style = style;
+  this.size = size;
+  this.pointSize = size;
+}
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
  */
 
-public class Font
+/**
+  * Returns the name of the font.
+  *
+  * @return The name of the font.
+  */
+public String
+getName()
 {
-  // FIXME
+  return(name);
+}
+
+/*************************************************************************/
 
-  public static final int PLAIN = 0;
-  public static final int BOLD = 1;
-  public static final int ITALIC = 2;
-  public static final int ROMAN_BASELINE = 0;
-  public static final int CENTER_BASELINE = 1;
-  public static final int HANGING_BASELINE = 2;
-  protected String name;
-  protected int style;
-  protected int size;
-  protected float pointSize;
-
-  public Font(String name, int style, int size)
-  {
-    this.name = name;
-    this.style = style & 0x3;	// Only use lowest 2 bits.
-    this.size = size;
-    pointSize = size;		// Assume some subclass can set a different val.
-  }
-
-  public boolean isPlain()
-  {
-    if (style == PLAIN)
-      return true;
-
-    return false;
-  }
-
-  public boolean isBold()
-  {
-    if ((style & BOLD) == BOLD)
-      return true;
-
-    return false;
-  }
-
-  public boolean isItalic()
-  {
-    if ((style & ITALIC) == ITALIC)
-      return true;
-
-    return false;
-  }
-  
-  public String getName()
-  {
-    return name;
-  }
-
-  public String getFamily()
-  {
-    // FIXME
-    return null;
-  }
-
-  public String getFamily(Locale l)
-  {
-    // FIXME
-    return null;
-  }
-
-  public int getStyle()
-  {
-    return style;
-  }
-
-  public int getSize()
-  {
-    return size;
-  }
-
-  public float getSize2D()
-  {
-    return pointSize;
-  }
-
-  public static Font decode(String str) { return null; } // FIXME
-  
-  public String toString()
-  {
-    String style_str = "";
-    if (isPlain())
-      style_str = "plain";
-    else 
-      {
-        if (isBold())
-	  style_str += "bold";	
-	if (isItalic())
-	  style_str += "italic";
-      }
-    return getClass().getName() + "[family=" + getFamily() + ",name=" + 
-           getName() + ",style=" + style_str + ",size=" + getSize() + "]";
-  }
+/**
+  * Returns the style of the font.
+  * 
+  * @return The font style.
+  */
+public int
+getSize()
+{
+  return(size);
 }
+
+public float
+getSize2D()
+{
+  return pointSize;
+}
+
+/*************************************************************************/
+
+/**
+  * Tests whether or not this is a plain font.  This will be true if
+  * and only if neither the bold nor the italics style is set.
+  *
+  * @return <code>true</code> if this is a plain font, <code>false</code>
+  * otherwise.
+  */
+public boolean
+isPlain()
+{
+  if (style == PLAIN)
+    return(true);
+  else
+    return(false);
+}
+
+/*************************************************************************/
+
+/**
+  * Tests whether or not this font is bold.
+  *
+  * @return <code>true</code> if this font is bold, <code>false</code>
+  * otherwise.
+  */
+public boolean
+isBold()
+{
+  if ((style == BOLD) || (style == (BOLD+ITALIC)))
+    return(true);
+  else
+    return(false);
+}
+
+/*************************************************************************/
+
+/**
+  * Tests whether or not this font is italic.
+  *
+  * @return <code>true</code> if this font is italic, <code>false</code>
+  * otherwise.
+  */
+public boolean
+isItalic()
+{
+  if ((style == ITALIC) || (style == (BOLD+ITALIC)))
+    return(true);
+  else
+    return(false);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the system specific font family name.
+  *
+  * @return The system specific font family name.
+  */
+public String
+getFamily()
+{
+  // FIXME: How do I implement this?
+  return(name);
+}
+
+public int
+getStyle()
+{
+  return style;
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a native peer object for this font.
+  *
+  * @return A native peer object for this font.
+  */
+public FontPeer
+getPeer()
+{
+  if (peer != null)
+    return(peer);
+
+  peer = Toolkit.getDefaultToolkit().getFontPeer(name, style);
+  return(peer);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a hash value for this font.
+  * 
+  * @return A hash for this font.
+  */
+public int
+hashCode()
+{
+  return((new String(name + size + style)).hashCode());
+}
+
+/*************************************************************************/
+
+/**
+  * Tests whether or not the specified object is equal to this font.  This
+  * will be true if and only if:
+  * <P>
+  * <ul>
+  * <li>The object is not <code>null</code>.
+  * <li>The object is an instance of <code>Font</code>.
+  * <li>The object has the same name, style, and size as this object.
+  * </ul>
+  *
+  * @return <code>true</code> if the specified object is equal to this
+  * object, <code>false</code> otherwise.
+  */
+public boolean
+equals(Object obj)
+{
+  if (obj == null)
+    return(false);
+
+  if (!(obj instanceof Font))
+    return(false);
+
+  Font f = (Font)obj;
+
+  if (!f.name.equals(name))
+    return(false);
+
+  if (f.size != size)
+    return(false);
+
+  if (f.style != style)
+    return(false);
+
+  return(true);
+} 
+
+/*************************************************************************/
+
+/**
+  * Returns a string representation of this font.
+  *
+  * @return A string representation of this font.
+  */
+public String
+toString()
+{
+  return(getClass().getName() + "(name=" + name + ",style=" + style +
+         ",size=" + size + ")");
+}
+
+} // class Font 
+
Index: java/awt/FontMetrics.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/FontMetrics.java,v
retrieving revision 1.2
diff -u -r1.2 FontMetrics.java
--- FontMetrics.java	2000/08/16 18:03:47	1.2
+++ FontMetrics.java	2002/01/22 21:54:06
@@ -1,146 +1,338 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* FontMetrics.java -- Information about about a fonts display characteristics
+   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
 
+// FIXME: I leave many methods basically unimplemented.  This
+// should be reviewed.
+
+/**
+  * This class returns information about the display characteristics of
+  * a font.  It is abstract, and concrete subclasses should implement at
+  * least the following methods:
+  * <p>
+  * <ul>
+  * <li>getAscent
+  * <li>getDescent
+  * <li>getLeading()
+  * <li>getMaxAdvance()
+  * <li>charWidth(char)
+  * <li>charsWidth(char[], int, int)
+  * </ul>
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
+public abstract class FontMetrics implements java.io.Serializable
+{
+
+/*
+ * Static Variables
+ */
+
+// Serialization constant
+private static final long serialVersionUID = 1681126225205050147L;
+
+/*************************************************************************/
+
+/*
+ * Instance Variables
+ */
+
+/**
+  * This is the font for which metrics will be returned.
+  */
+protected Font font;
+
+/*************************************************************************/
+
+/*
+ * Constructors
+ */
+
 /**
- * Status:  Stubbed; A very incomplete implementation.
+  * Initializes a new instance of <code>FontMetrics</code> for the
+  * specified font.
+  *
+  * @param font The font to return metric information for.
+  */
+protected
+FontMetrics(Font font)
+{
+  this.font = font;
+}
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
  */
+
+/**
+  * Returns the font that this object is creating metric information fo.
+  *
+  * @return The font for this object.
+  */
+public Font
+getFont()
+{
+  return(font);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the leading, or spacing between lines, for this font.
+  *
+  * @return The font leading.
+  */
+public int
+getLeading()
+{
+  return(0);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the ascent of the font, which is the distance from the base
+  * to the top of the majority of characters in the set.  Some characters
+  * can exceed this value however.
+  *
+  * @return The font ascent.
+  */
+public int
+getAscent()
+{
+  return(1);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the descent of the font, which is the distance from the base
+  * to the bottom of the majority of characters in the set.  Some characters
+  * can exceed this value however.
+  *
+  * @return The font descent.
+  */
+public int
+getDescent()
+{
+  return(1);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the height of a line in this font.  This will be the sum
+  * of the leading, the ascent, and the descent.
+  *
+  * @return The height of the font.
+  */
+public int
+getHeight()
+{
+  return(getAscent() + getDescent() + getLeading());
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the maximum ascent value.  This is the maximum distance any
+  * character in the font rised above the baseline.
+  *
+  * @return The maximum ascent for this font.
+  */
+public int
+getMaxAscent()
+{
+  return(getAscent());
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the maximum descent value.  This is the maximum distance any
+  * character in the font extends below the baseline.
+  *
+  * @return The maximum descent for this font.
+  */
+public int
+getMaxDescent()
+{
+  return(getDescent());
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the maximum descent value.  This is the maximum distance any
+  * character in the font extends below the baseline.
+  *
+  * @return The maximum descent for this font.
+  *
+  * @deprecated This method is deprecated in favor of
+  * <code>getMaxDescent()</code>.
+  */
+public int
+getMaxDecent()
+{
+  return(getMaxDescent());
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the width of the widest character in the font.
+  *
+  * @return The width of the widest character in the font.
+  */
+public int
+getMaxAdvance()
+{
+  return(-1);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the width of the specified character.
+  *
+  * @param ch The character to return the width of.
+  *
+  * @return The width of the specified character.
+  */
+public int
+charWidth(int ch)
+{
+  return(charWidth((char)ch));
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the width of the specified character.
+  *
+  * @param ch The character to return the width of.
+  *
+  * @return The width of the specified character.
+  */
+public int
+charWidth(char ch)
+{
+  return(1);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the total width of the specified string
+  *
+  * @param str The string to return the width of.
+  *
+  * @return The width of the string.
+  */
+public int
+stringWidth(String str)
+{
+  char[] buf = new char[str.length()];
+  str.getChars(0, str.length(), buf, 0);
+
+  return(charsWidth(buf, 0, buf.length));
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the total width of the specified character array.
+  *
+  * @param buf The character array containing the data.
+  * @param offset The offset into the array to start calculating from.
+  * @param len The total number of bytes to process.
+  *
+  * @return The width of the requested characters.
+  */
+public int
+charsWidth(char buf[], int offset, int len)
+{
+  int total_width = 0;
+  for (int i = offset; i < len; i++)
+    total_width = charWidth(buf[i]);
+
+  return(total_width);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the total width of the specified byte array.
+  *
+  * @param buf The byte array containing the data.
+  * @param offset The offset into the array to start calculating from.
+  * @param len The total number of bytes to process.
+  *
+  * @return The width of the requested characters.
+  */
+public int
+bytesWidth(byte buf[], int offset, int len)
+{
+  int total_width = 0;
+  for (int i = offset; i < len; i++)
+    total_width = charWidth((char)buf[i]);
+
+  return(total_width);
+}
 
-public class FontMetrics implements java.io.Serializable
+/*************************************************************************/
+
+/**
+  * Returns the widths of the first 256 characters in the font.
+  *
+  * @return The widths of the first 256 characters in the font.
+  */
+public int[]
+getWidths()
 {
-  protected Font font;
-  
-  protected FontMetrics(Font font)
-  {
-    this.font = font;
-  }
-
-  public Font getFont()
-  {
-    return font;
-  }
-
-  public int getLeading()
-  {
-    return getMaxAscent() + getMaxDescent() - (getAscent() + getDescent());
-  }
-
-  public int getAscent()
-  {
-    return getHeight() - (getDescent() + getLeading());
-  }
-
-  public int getDescent()
-  {
-    return getHeight() - (getLeading() + getDescent());
-  }
-
-  public int getHeight()
-  {
-    return getLeading() + getAscent() + getDescent();
-  }
-
-  public int getMaxAscent()
-  {
-    return getAscent();
-  }
-
-  public int getMaxDescent()
-  {
-    return getDescent();
-  }
-
-  /* @deprecated Use getMaxDescent() instead. */
-  public int getMaxDecent()
-  {
-    return getMaxDescent();
-  }
-
-  /** @return max advance, or -1 if unknown. */
-  public int getMaxAdvance()
-  {
-    return -1;
-  }
-
-
-  public int charWidth(int ch)
-  {
-    return charWidth((char) ch);
-  }
-
-  public int charWidth(char ch)
-  {
-    Character chObj = new Character(ch);
-    return stringWidth(chObj.toString());
-  }
-    
-  public int stringWidth(String str)
-  {
-    return charsWidth(str.toCharArray(), 0, str.length());
-  }
-
-  public int charsWidth(char[] data, int off, int len)
-  {
-    return stringWidth(new String(data, off, len));
-  }
-
-  public int bytesWidth(byte[] data, int off, int len)
-  {
-    return stringWidth(new String(data, off, len));
-  }
-    
-  public int[] getWidths()
-  {
-    int[] widths = new int[256];
-    for (char c=0; c<256; c++) widths[c] = charWidth(c);
-    return widths;
-  }
-
-  public boolean hasUniformLineMetrics()
-  {
-    // FIXME
-    return false;
-  }
-
-  // Don't have LineMetrics yet...
-  /*
-  public LineMetrics getLineMetrics(String str, Graphics context)
-
-  public LineMetrics getLineMetrics(String str, int beginIndex, int limit,
-                                    Graphics context)
-
-  public LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit,
-                                    Graphics context)
-
-  public LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex,
-				    int limit, Graphics context)
-  */
-
-  // Don't have Java2D yet.
-  /*
-  public Rectangle2D getStringBounds(String str, Graphics context)
-
-  public Rectangle2D getStringBounds(String str, int beginIndex, int limit,
-                                     Graphics context)
-
-  public Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit,
-                                     Graphics context)
-
-  public Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex,
-                                     int limit, Graphics context)
-
-  public Rectangle2D getMaxCharBounds(Graphics context)
-  */
-
-  public String toString()
-  {
-    return this.getClass() + "[font=" + font + ",ascent=" + getAscent() 
-	   + ",descent=" + getDescent() + ",height=" + getHeight() + "]";
-  }
+  return(new int[256]);
 }
+
+/*************************************************************************/
+
+/**
+  * Returns a string representation of this object.
+  *
+  * @return A string representation of this object.
+  */
+public String
+toString()
+{
+  return (this.getClass() + "[font=" + font + ",ascent=" + getAscent() 
+	  + ",descent=" + getDescent() + ",height=" + getHeight() + "]");
+}
+
+} // class FontMetrics 
+
Index: java/awt/Image.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Image.java,v
retrieving revision 1.3
diff -u -r1.3 Image.java
--- Image.java	2000/10/02 05:14:25	1.3
+++ Image.java	2002/01/22 21:54:06
@@ -1,51 +1,186 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* Image.java -- Java class for images
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
 
-import java.awt.image.ImageObserver;
-import java.awt.image.ImageProducer;
+import java.awt.image.*;
 
 /**
- * @author Warren Levy <warrenl@cygnus.com>
- * @date March 15, 2000.
+  * This is the abstract superclass of all image objects in Java.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
+public abstract class Image
+{
+
+/*
+ * Static Variables
  */
 
+/**
+  * Constant indicating that the default scaling algorithm should be used.
+  */
+public static final int SCALE_DEFAULT = 1;
+
+/**
+  * Constant indicating that a fast scaling algorithm should be used.
+  */
+public static final int SCALE_FAST = 2;
+
+/**
+  * Constant indicating that a smooth scaling algorithm should be used.
+  */
+public static final int SCALE_SMOOTH = 4;
+
 /**
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status:  Mostly complete, but look for FIXMEs.
+  * Constant indicating that the <code>ReplicateScaleFilter</code> class
+  * algorithm should be used for scaling.
+  */
+public static final int SCALE_REPLICATE = 8; 
+
+/**
+  * Constant indicating that the area averaging scaling algorithm should be
+  * used.
+  */
+public static final int SCALE_AREA_AVERAGING = 16;
+
+/**
+  * This variable is returned whenever a property that is not defined
+  * is requested.
+  */
+public static final Object UndefinedProperty = Image.class;
+
+/*************************************************************************/
+
+/*
+ * Constructors
  */
 
-public abstract class Image extends Object
+/**
+  * A default constructor for subclasses.
+  */
+public 
+Image()
 {
-  public static final Object UndefinedProperty = new Object();
+}
+
+/*************************************************************************/
 
-  public static final int SCALE_DEFAULT        = 1<<0,
-                          SCALE_FAST           = 1<<1,
-                          SCALE_SMOOTH         = 1<<2,
-                          SCALE_REPLICATE      = 1<<3,
-                          SCALE_AREA_AVERAGING = 1<<4;
+/*
+ * Instance Methods
+ */
+
+/**
+  * Returns the width of the image, or -1 if it is unknown.  If the
+  * image width is unknown, the observer object will be notified when
+  * the value is known.
+  *
+  * @param observer The image observer for this object.
+  */
+public abstract int
+getWidth(ImageObserver observer);
+
+/*************************************************************************/
+
+/**
+  * Returns the height of the image, or -1 if it is unknown.  If the
+  * image height is unknown, the observer object will be notified when
+  * the value is known.
+  *
+  * @param observer The image observer for this object.
+  */
+public abstract int
+getHeight(ImageObserver observer);
+
+/*************************************************************************/
+
+/**
+  * Returns the image producer object for this object.
+  *
+  * @return The image producer for this object.
+  */
+public abstract ImageProducer
+getSource();
 
-  public abstract int getWidth(ImageObserver observer);
+/*************************************************************************/
 
-  public abstract int getHeight(ImageObserver observer);
+/**
+  * Returns a graphics context object for drawing an off-screen object.
+  * This method is only valid for off-screen objects.
+  *
+  * @return A graphics context object for an off-screen object.
+  */
+public abstract Graphics
+getGraphics();
+
+/*************************************************************************/
 
-  public abstract ImageProducer getSource();
-  
-  public abstract Graphics getGraphics();
+/**
+  * This method requests a named property for an object.  The value of the
+  * property is returned. The value <code>UndefinedProperty</code> is
+  * returned if there is no property with the specified name.  The value
+  * <code>null</code> is returned if the properties for the object are
+  * not yet known.  In this case, the specified image observer is notified
+  * when the properties are known.
+  *
+  * @param name The requested property name.
+  * @param observer The image observer for this object.
+  */
+public abstract Object
+getProperty(String name, ImageObserver observer);
 
-  public abstract Object getProperty(String name, ImageObserver observer);
+/*************************************************************************/
 
-  public Image getScaledInstance(int width, int height, int hints)
+/**
+  * Scales the image to the requested dimension.
+  * 
+  * XXX: FIXME
+  * 
+  * @param width The width of the scaled image.
+  * @param height The height of the scaled image.
+  * @param flags A value indicating the algorithm to use, which will be
+  * set from contants defined in this class.
+  *
+  * @return The scaled <code>Image</code> object.
+  */
+public Image
+getScaledInstance(int width, int height, int flags)
   {
-    throw new UnsupportedOperationException("FIXME: not implemented yet");
+    return null;
   }
 
-  public abstract void flush();
-}
+/*************************************************************************/
+
+/**
+  * Flushes (that is, destroys) any resources used for this image.  This
+  * includes the actual image data.
+  */
+public abstract void
+flush();
+
+} // class Image
+
Index: java/awt/ImageMediaEntry.java
===================================================================
RCS file: ImageMediaEntry.java
diff -N ImageMediaEntry.java
--- /dev/null	Tue May  5 13:32:27 1998
+++ ImageMediaEntry.java	Tue Jan 22 13:54:06 2002
@@ -0,0 +1,75 @@
+/* ImageMediaEntry.java -- A media entry type for images.
+   Copyright (C) 1999 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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
+package java.awt;
+
+import java.awt.image.ImageObserver;
+import java.io.Serializable;
+
+/**
+  * A concrete MediaEntry subtype for images.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
+class ImageMediaEntry extends MediaEntry implements ImageObserver,
+                                                                 Serializable
+{
+
+private Image image;
+private int width;
+private int height;
+
+ImageMediaEntry(MediaTracker tracker, Image image, int ID, int width, int height)
+{
+  super(tracker, ID);
+  this.image = image;
+  this.width = width;
+  this.height = height; 
+}
+
+public Object
+getMedia()
+{
+  return(image.getSource()); // FIXME: Is this really right?
+}
+
+public void
+startLoad()
+{
+  int status = getStatus();
+//  status |= MediaEntry.LOADSTARTED;
+}
+
+public boolean
+imageUpdate(Image image, int flags, int x, int y, int width, int height)
+{
+  // implement me
+  return true;
+}
+
+} // class ImageMediaEntry
+
Index: java/awt/Insets.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Insets.java,v
retrieving revision 1.1
diff -u -r1.1 Insets.java
--- Insets.java	2000/07/12 03:32:06	1.1
+++ Insets.java	2002/01/22 21:54:06
@@ -1,56 +1,163 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* Insets.java -- Information about a container border.
+   Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
 
+/**
+  * This class represents the "margin" or space around a container.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
 public class Insets implements Cloneable, java.io.Serializable
+{
+
+/*
+ * Instance Variable
+ */
+
+/**
+  * @serial The top inset
+  */
+public int top;
+
+/**
+  * @serial This bottom inset
+  */
+public int bottom;
+
+/**
+  * @serial The left inset
+  */
+public int left;
+
+/**
+  * @serial The right inset
+  */
+public int right;
+
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>Inset</code> with the specified
+  * inset values.
+  *
+  * @param top The top inset
+  * @param left The left inset
+  * @param bottom The bottom inset
+  * @param right The right inset
+  */
+public
+Insets(int top, int left, int bottom, int right)
+{
+  this.top = top;
+  this.left = left;
+  this.bottom = bottom;
+  this.right = right;
+}
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
+ */
+
+/**
+  * Tests whether this object is equal to the specified object.  This will
+  * be true if and only if the specified object:
+  * <p>
+  * <ul>
+  * <li>Is not <code>null</code>.
+  * <li>Is an instance of <code>Insets</code>.
+  * <li>Has the same top, bottom, left, and right inset values as this object.
+  * </ul>
+  *
+  * @param obj The object to test against.
+  *
+  * @return <code>true</code> if the specified object is equal to this
+  * one, <code>false</code> otherwise.
+  */
+public boolean
+equals(Object obj)
+{
+  if (!(obj instanceof Insets))
+    return(false);
+
+  Insets i = (Insets)obj;
+
+  if (i.top != top)
+    return(false);
+  if (i.bottom != bottom)
+    return(false);
+  if (i.left != left)
+    return(false);
+  if (i.right != right)
+    return(false);
+
+  return(true);
+}
+
+public int
+hashCode()
+{
+  return top + bottom + left + right;
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a string representation of this object.
+  *
+  * @return A string representation of this object.
+  */
+public String
+toString()
 {
-  public int top;
-  public int left;
-  public int bottom;
-  public int right;
-  
-  public Insets(int top, int left, int bottom, int right)
-  {
-    this.top = top;
-    this.left = left;
-    this.bottom = bottom;
-    this.right = right;  
-  }
-
-  public boolean equals(Object obj)
-  {
-    if (obj instanceof Insets)
-      {
-        Insets i = (Insets) obj;
-	return (i.top == top 
-        	&& i.left == left 
-		&& i.bottom == bottom 
-		&& i.right == right);    
-      }
-    return false;
-  }
-
-  public int hashCode()
-  {
-    // FIXME: what is the correct algorithm for this?
-    return (top * (2 * left) * (3 * right) * (4 * bottom));
-  }
-
-  public String toString()
-  {
-    return (getClass() + "[top=" + top + ",left=" + left + ",bottom=" 
-            + bottom + ",right=" + right + "]");
-  }
-  
-  public Object clone()
-  {
-    Insets r = new Insets(top, left, bottom, right);
-    return r;
-  }
+  return(getClass().getName() + "(top=" + top + ",bottom=" + bottom +
+         ",left=" + left + ",right=" + right + ")");
 }
+
+/*************************************************************************/
+
+/**
+  * Returns a copy of this object.
+  *
+  * @return A copy of this object.
+  */
+public Object
+clone()
+{
+  try
+    {
+      return(super.clone());
+    }
+  catch(Exception e)
+    {
+      return(null);
+    }
+}
+
+} // class Insets 
Index: java/awt/Label.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Label.java,v
retrieving revision 1.6
diff -u -r1.6 Label.java
--- Label.java	2002/01/16 16:50:03	1.6
+++ Label.java	2002/01/22 21:54:07
@@ -225,8 +225,8 @@
 protected String
 paramString()
 {
-  return(getClass().getName() + "(text=" + getText() + ",alignment=" +
-         getAlignment() + ")");
+  return ("text=" + getText() + ",alignment=" +
+	  getAlignment() + "," + super.paramString());
 }
 
 } // class Label
Index: java/awt/List.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/List.java,v
retrieving revision 1.3
diff -u -r1.3 List.java
--- List.java	2001/04/22 03:05:38	1.3
+++ List.java	2002/01/22 21:54:07
@@ -1,443 +1,994 @@
-/* Copyright (C) 2000, 2001  Free Software Foundation
+/* List.java -- A listbox widget
+   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
 
+import java.io.Serializable;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
 import java.awt.peer.ListPeer;
-import java.awt.event.*;
+import java.awt.peer.ComponentPeer;
 import java.util.Vector;
 
+/**
+  * Class that implements a listbox widget
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
+public class List extends Component implements ItemSelectable, Serializable
+{
+
+/*
+ * Static Variables
+ */
+
+// Serialization constant
+private static final long serialVersionUID = -3304312411574666869L;
+
+/*************************************************************************/
+
+/*
+ * Instance Variables
+ */
+
+// FIXME: Need read/writeObject
+
+/**
+  * @serial The items in the list.
+  */
+private Vector items = new Vector();
+
+/**
+  * @serial Indicates whether or not multiple items can be selected
+  * simultaneously.
+  */
+private boolean multipleMode;
+
+/**
+  * @serial The number of rows in the list.  This is set on creation
+  * only and cannot be modified.
+  */
+private int rows;
+
+/**
+  * @serial An array of the item indices that are selected.
+  */
+private int[] selected;
+
 /**
- * @author Tom Tromey <tromey@redhat.com>
- * @date April 17, 2001
- * Status: incomplete
+  * @serial An index value used by <code>makeVisible()</code> and
+  * <code>getVisibleIndex</code>.
+  */
+private int visibleIndex;
+
+// The list of ItemListeners for this object.
+private ItemListener item_listeners;
+
+// The list of ActionListeners for this object.
+private ActionListener action_listeners;
+
+/*************************************************************************/
+
+/*
+ * Constructors
+ */
+
+/**
+  * Initializes a new instance of <code>List</code> with no visible lines
+  * and multi-select disabled.
+  */
+public
+List()
+{
+  this(4, false);
+}
+
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>List</code> with the specified
+  * number of visible lines and multi-select disabled.
+  *
+  * @param lines The number of visible lines in the list.
+  */
+public
+List(int rows)
+{
+  this(rows, false);
+}
+
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>List</code> with the specified
+  * number of lines and the specified multi-select setting.
+  *
+  * @param lines The number of visible lines in the list.
+  * @param multipleMode <code>true</code> if multiple lines can be selected
+  * simultaneously, <code>false</code> otherwise.
+  */
+public 
+List(int rows, boolean multipleMode)
+{
+  this.rows = rows;
+  this.multipleMode = multipleMode;
+}
+
+/*************************************************************************/
+
+/*
+ * Instance Variables
  */
+
+/**
+  * Returns the number of items in this list.
+  *
+  * @return The number of items in this list.
+  */
+public int
+getItemCount()
+{
+  return(items.size());
+}
+
+/*************************************************************************/
 
-public class List extends Component implements ItemSelectable
+/**
+  * Returns the number of items in this list.
+  *
+  * @return The number of items in this list.
+  *
+  * @deprecated This method is deprecated in favor of
+  * <code>getItemCount()</code>
+  */
+public int
+countItems()
+{
+  return(getItemCount());
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the complete list of items.
+  *
+  * @return The complete list of items in the list.
+  */
+public synchronized String[]
+getItems()
+{
+  String[] l_items = new String[getItemCount()];
+ 
+  items.copyInto(l_items);
+  return(l_items);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the item at the specified index.
+  *
+  * @param index The index of the item to retrieve.
+  *
+  * @exception IndexOutOfBoundsException If the index value is not valid.
+  */
+public String
+getItem(int index)
 {
-  /** Creates a new scrolling list with four rows.
-   * Initially, multiple selections are not allowed.
-   */
-  public List ()
-  {
-    this (4, false);
-  }
-
-  /** Create a new scrolling list with the indicated number of rows.
-   * Initially, multiple selections are not allowed.
-   * @param rows Number of rows
-   */
-  public List (int rows)
-  {
-    this (rows, false);
-  }
-
-  /** Create a new scrolling list with the indicated number of rows.
-   * @param rows Number of rows
-   * @param multiple True if multiple selections allowed
-   */
-  public List (int rows, boolean multiple)
-  {
-    this.rows = rows;
-    this.multipleMode = multiple;
-  }
-
-  /** Create the peer if it does not already exist.  */
-  public void addNotify ()
-  {
-    if (peer != null)
-      peer = getToolkit ().createList (this);
-    super.addNotify ();
-  }
-
-  public int getItemCount ()
-  {
-    return items.size ();
-  }
-
-  /** @deprecated Use getItemCount() instead.  */
-  public int countItems ()
-  {
-    return getItemCount ();
-  }
-
-  public String getItem (int index)
-  {
-    return (String) items.elementAt (index);
-  }
-
-  public String[] getItems ()
-  {
-    String[] els = new String[items.size ()];
-    items.copyInto (els);
-    return els;
-  }
-
-  public void add (String item)
-  {
-    add (item, items.size ());
-  }
-
-  /** @deprecated Use add() instead.  */
-  public void addItem (String item)
-  {
-    add (item);
-  }
-
-  public void add (String item, int index)
-  {
-    items.insertElementAt (item, index);
-    if (peer != null)
-      {
-	ListPeer l = (ListPeer) peer;
-	l.add (item, index);
-      }
-  }
-
-  /** @deprecated Use add() instead.  */
-  public void addItem (String item, int index)
-  {
-    add (item, index);
-  }
-
-  public void replaceItem (String item, int index)
-  {
-    items.setElementAt (item, index);
-    if (peer != null)
-      {
-	ListPeer l = (ListPeer) peer;
-	l.delItems (index, index);
-	l.add (item, index);
-      }
-  }
-
-  public void removeAll ()
-  {
-    items.clear ();
-    if (peer != null)
-      {
-	ListPeer l = (ListPeer) peer;
-	l.removeAll ();
-      }
-  }
-
-  /** @deprecated Use removeAll() instead.  */
-  public void clear ()
-  {
-    removeAll ();
-  }
-
-  public void remove (String item)
-  {
-    remove (items.indexOf (item));
-  }
-
-  public void remove (int index)
-  {
-    items.removeElementAt (index);
-    if (peer != null)
-      {
-	ListPeer l = (ListPeer) peer;
-	l.delItems (index, index);
-      }
-  }
-
-  /** @deprecated Use remove() instead.  */
-  public void delItem (int index)
-  {
-    remove (index);
-  }
-
-  public int getSelectedIndex ()
-  {
-    if (peer != null)
-      {
-	ListPeer l = (ListPeer) peer;
-	selected = l.getSelectedIndexes ();
-      }
-
-    if (selected == null || selected.length > 1)
-      return -1;
-    return selected[0];
-  }
-
-  public int[] getSelectedIndexes ()
-  {
-    if (peer != null)
-      {
-	ListPeer l = (ListPeer) peer;
-	selected = l.getSelectedIndexes ();
-      }
-    return selected;
-  }
-
-  public String getSelectedItem ()
-  {
-    int i = getSelectedIndex ();
-    return i == -1 ? null : (String) items.elementAt (i);
-  }
-
-  public String[] getSelectedItems ()
-  {
-    int[] is = getSelectedIndexes ();
-    if (is == null)
-      return null;
-    String[] r = new String[is.length];
-    for (int i = 0; i < is.length; ++i)
-      r[i] = (String) items.elementAt (is[i]);
-    return r;
-  }
-
-  public Object[] getSelectedObjects ()
-  {
-    return getSelectedItems ();
-  }
-
-  public void select (int index)
-  {
-    if (peer != null)
-      {
-	ListPeer l = (ListPeer) peer;
-	l.select (index);
-      }
-    else if (selected == null)
-      {
-	selected = new int[1];
-	selected[0] = index;
-      }
-    else
-      {
-	int i;
-	for (i = 0; i < selected.length; ++i)
-	  {
-	    if (selected[i] == index)
-	      return;
-	    if (selected[i] > index)
-	      break;
-	  }
-
-	int[] ns = new int[selected.length + 1];
-	System.arraycopy (selected, 0, ns, 0, i);
-	ns[i] = index;
-	System.arraycopy (selected, i, ns, i + 1, selected.length - i);
-
-	selected = ns;
-      }
-  }
-
-  public void deselect (int index)
-  {
-    if (peer != null)
-      {
-	ListPeer l = (ListPeer) peer;
-	l.deselect (index);
-      }
-    else if (selected != null)
-      {
-	int i;
-	for (i = 0; i < selected.length; ++i)
-	  {
-	    if (selected[i] == index)
-	      break;
-	  }
-	if (i < selected.length)
-	  {
-	    int[] ns = new int[selected.length - 1];
-	    System.arraycopy (selected, 0, ns, 0, i);
-	    System.arraycopy (selected, i + 1, ns, i, selected.length - i);
-	    selected = ns;
-	  }
-      }
-  }
-
-  public boolean isIndexSelected (int index)
-  {
-    int[] is = getSelectedIndexes ();
-    for (int i = 0; i < is.length; ++i)
-      {
-	if (is[i] == index)
-	  return true;
-      }
-    return false;
-  }
-
-  /** @deprecated Use isIndexSelected().  */
-  public boolean isSelected (int index)
-  {
-    return isIndexSelected (index);
-  }
-
-  public int getRows ()
-  {
-    return rows;
-  }
-
-  public boolean isMultipleMode ()
-  {
-    return multipleMode;
-  }
-
-  /** @deprecated Use isMultipleMode().  */
-  public boolean allowsMultipleSelections ()
-  {
-    return isMultipleMode ();
-  }
-
-  public void setMultipleMode (boolean multiple)
-  {
-    this.multipleMode = multiple;
-    if (peer != null)
-      {
-	ListPeer l = (ListPeer) peer;
-	l.setMultipleMode (multiple);
-      }
-  }
-
-  /** @deprecated Use setMultipleMode().  */
-  public void setMultipleSelections (boolean multiple)
-  {
-    setMultipleMode (multiple);
-  }
-
-  public int getVisibleIndex ()
-  {
-    return visibleIndex;
-  }
-
-  public void makeVisible (int index)
-  {
-    visibleIndex = index;
-    if (peer != null)
-      {
-	ListPeer l = (ListPeer) peer;
-	l.makeVisible (index);
-      }
-  }
-
-  public Dimension getPreferredSize (int rows)
-  {
-    return null;		// FIXME
-  }
-
-  /** @deprecated Use getPreferredSize(int).  */
-  public Dimension preferredSize (int rows)
-  {
-    return getPreferredSize (rows);
-  }
-
-  public Dimension getPreferredSize ()
-  {
-    return null;		// FIXME
-  }
-
-  /** @deprecated Use getPreferredSize().  */
-  public Dimension preferredSize ()
-  {
-    return getPreferredSize ();
-  }
-
-  public Dimension getMinimumSize (int rows)
-  {
-    return null;		// FIXME
-  }
-
-  /** @deprecated Use getMinimumSize(int).  */
-  public Dimension minimumSize (int rows)
-  {
-    return getMinimumSize (rows);
-  }
-  
-  public Dimension getMinimumSize ()
-  {
-    return null;		// FIXME
-  }
-
-  /** @deprecated Use getMinimumSize().  */
-  public Dimension minimumSize ()
-  {
-    return getMinimumSize ();
-  }
-
-  public void addItemListener (ItemListener listen)
-  {
-    item_listeners = AWTEventMulticaster.add (item_listeners, listen);
-  }
-
-  public void removeItemListener (ItemListener listen)
-  {
-    item_listeners = AWTEventMulticaster.remove (item_listeners, listen);
-  }
-
-  public void addActionListener (ActionListener listen)
-  {
-    action_listeners = AWTEventMulticaster.add (action_listeners, listen);
-  }
-
-  public void removeActionListener (ActionListener listen)
-  {
-    action_listeners = AWTEventMulticaster.remove (action_listeners, listen);
-  }
-
-  protected void processEvent (AWTEvent e)
-  {
-    if (e instanceof ItemEvent)
-      processItemEvent ((ItemEvent) e);
-    else if (e instanceof ActionEvent)
-      processActionEvent ((ActionEvent) e);
-    else
-      super.processEvent (e);
-  }
-
-  protected void processItemEvent (ItemEvent e)
-  {
-    if (item_listeners != null)
-      item_listeners.itemStateChanged (e);
-  }
-
-  protected void processActionEvent (ActionEvent e)
-  {
-    if (action_listeners != null)
-      action_listeners.actionPerformed (e);
-  }
-
-  protected String paramString ()
-  {
-    return ("List[multiple=" + multipleMode
-	    + ",rows=" + rows
-	    + "]");
-  }
-
-  /** @deprecated */
-  public void delItems (int start, int end)
-  {
-    for (int i = end; i >= start; --i)
-      items.removeElementAt (i);
-    if (peer != null)
-      {
-	ListPeer l = (ListPeer) peer;
-	l.delItems (start, end);
-      }
-  }
-
-  // Vector of items in the list.
-  private Vector items;
-  // True if multiple selection mode enabled.
-  private boolean multipleMode;
-  // Number of rows.
-  private int rows;
-  // Array of indices of selected items.  When there is no peer, we
-  // maintain this in place.  When there is a peer, the peer maintains
-  // the list and we ask for it whenever needed.
-  private int[] selected;
-  // Value used by makeVisible().
-  private int visibleIndex;
-
-  // Listeners.
-  private ActionListener action_listeners;
-  private ItemListener item_listeners;
+  return((String)items.elementAt(index));
 }
+
+/*************************************************************************/
+
+/**
+  * Returns the number of visible rows in the list.
+  *
+  * @return The number of visible rows in the list.
+  */
+public int
+getRows()
+{
+  return(rows);
+}
+
+/*************************************************************************/
+
+/**
+  * Tests whether or not multi-select mode is enabled.
+  *
+  * @return <code>true</code> if multi-select mode is enabled,
+  * <code>false</code> otherwise.
+  */
+public boolean
+isMultipleMode()
+{
+  return(multipleMode);
+}
+
+/*************************************************************************/
+
+/**
+  * Tests whether or not multi-select mode is enabled.
+  *
+  * @return <code>true</code> if multi-select mode is enabled,
+  * <code>false</code> otherwise.
+  *
+  * @deprecated This method is deprecated in favor of 
+  * <code>isMultipleMode()</code>.
+  */
+public boolean
+allowsMultipleSelections()
+{
+  return(multipleMode);
+}
+
+/*************************************************************************/
+
+/**
+  * This method enables or disables multiple selection mode for this
+  * list.
+  *
+  * @param multipleMode <code>true</code> to enable multiple mode,
+  * <code>false</code> otherwise.
+  */
+public void
+setMultipleMode(boolean multipleMode)
+{
+  this.multipleMode = multipleMode;
+  if (peer != null)
+    {
+      ListPeer l = (ListPeer) peer;
+      l.setMultipleMode (multipleMode);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * This method enables or disables multiple selection mode for this
+  * list.
+  *
+  * @param multipleMode <code>true</code> to enable multiple mode,
+  * <code>false</code> otherwise.
+  */
+public void
+setMultipleSelections(boolean multipleMode)
+{
+  setMultipleMode(multipleMode);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the minimum size of this component.
+  *
+  * @return The minimum size of this component.
+  */
+public Dimension
+getMinimumSize()
+{
+  return(getMinimumSize(rows));
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the minimum size of this component.
+  *
+  * @return The minimum size of this component.
+  *
+  * @deprecated This method is deprecated in favor of
+  * <code>getMinimumSize</code>.
+  */
+public Dimension
+minimumSize()
+{
+  return(getMinimumSize(rows));
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the minimum size of this component assuming it had the specified
+  * number of rows.
+  *
+  * @param rows The number of rows to size for.
+  *
+  * @return The minimum size of this component.
+  */
+public Dimension
+getMinimumSize(int rows)
+{
+  ListPeer lp = (ListPeer)getPeer();
+  if (lp != null)
+    return(lp.minimumSize(rows));
+  else
+    return(new Dimension(0,0));
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the minimum size of this component assuming it had the specified
+  * number of rows.
+  *
+  * @param rows The number of rows to size for.
+  *
+  * @return The minimum size of this component.
+  *
+  * @deprecated This method is deprecated in favor of 
+  * <code>getMinimumSize(int)</code>>
+  */
+public Dimension
+minimumSize(int rows)
+{
+  return(getMinimumSize(rows));
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the preferred size of this component.
+  *
+  * @return The preferred size of this component.
+  */
+public Dimension
+getPreferredSize()
+{
+  return(getPreferredSize(rows));
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the preferred size of this component.
+  *
+  * @return The preferred size of this component.
+  *
+  * @deprecated This method is deprecated in favor of
+  * <code>getPreferredSize</code>.
+  */
+public Dimension
+preferredSize()
+{
+  return(getPreferredSize(rows));
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the preferred size of this component assuming it had the specified
+  * number of rows.
+  *
+  * @param rows The number of rows to size for.
+  *
+  * @return The preferred size of this component.
+  */
+public Dimension
+getPreferredSize(int rows)
+{
+  ListPeer lp = (ListPeer)getPeer();
+  if (lp != null)
+    return(lp.preferredSize(rows));
+  else
+    return(new Dimension(0,0));
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the preferred size of this component assuming it had the specified
+  * number of rows.
+  *
+  * @param rows The number of rows to size for.
+  *
+  * @return The preferred size of this component.
+  *
+  * @deprecated This method is deprecated in favor of 
+  * <code>getPreferredSize(int)</code>>
+  */
+public Dimension
+preferredSize(int rows)
+{
+  return(getPreferredSize(rows));
+}
+
+/*************************************************************************/
+
+/**
+  * This method adds the specified item to the end of the list.
+  *
+  * @param item The item to add to the list.
+  */
+public void
+add(String item)
+{
+  add(item, -1);
+}
+
+/*************************************************************************/
+
+/**
+  * This method adds the specified item to the end of the list.
+  *
+  * @param item The item to add to the list.
+  *
+  * @deprecated Use add() instead.
+  */
+public void
+addItem(String item)
+{
+  addItem(item, -1);
+}
+
+/*************************************************************************/
+
+/**
+  * Adds the specified item to the specified location in the list.
+  * If the desired index is -1 or greater than the number of rows
+  * in the list, then the item is added to the end.
+  *
+  * @param item The item to add to the list.
+  * @param index The location in the list to add the item, or -1 to add
+  * to the end.
+  */
+public void
+add(String item, int index)
+{
+  if ((index == -1) || (index >= items.size()))
+    items.addElement(item);
+  else
+    items.insertElementAt(item, index);
+
+  if (peer != null)
+    {
+      ListPeer l = (ListPeer) peer;
+      l.add (item, index);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Adds the specified item to the specified location in the list.
+  * If the desired index is -1 or greater than the number of rows
+  * in the list, then the item is added to the end.
+  *
+  * @param item The item to add to the list.
+  * @param index The location in the list to add the item, or -1 to add
+  * to the end.
+  *
+  * @deprecated Use add() instead.
+  */
+public void
+addItem(String item, int index)
+{
+  add(item, index);
+}
+
+/*************************************************************************/
+
+/**
+  * Deletes the item at the specified index.
+  *
+  * @param index The index of the item to delete.
+  *
+  * @exception IllegalArgumentException If the index is not valid
+  */
+public void
+delItem(int index) throws IllegalArgumentException
+{
+  remove(index);
+}
+
+/*************************************************************************/
+
+/**
+  * Deletes the item at the specified index.
+  *
+  * @param index The index of the item to delete.
+  *
+  * @exception IllegalArgumentException If the index is not valid
+  */
+public void
+remove(int index) throws IllegalArgumentException
+{
+  items.removeElementAt (index);
+  if (peer != null)
+    {
+      ListPeer l = (ListPeer) peer;
+      l.delItems (index, index);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Deletes all items in the specified index range.
+  *
+  * @param start The beginning index of the range to delete.
+  * @param end The ending index of the range to delete.
+  *
+  * @exception IllegalArgumentException If the indexes are not valid
+  *
+  * @deprecated This method is deprecated for some unknown reason.
+  */
+public synchronized void
+delItems(int start, int end) throws IllegalArgumentException
+{
+  if ((start < 0) || (start >= items.size()))
+    throw new IllegalArgumentException("Bad list start index value: " + start);
+
+  if ((start < 0) || (start >= items.size()))
+    throw new IllegalArgumentException("Bad list start index value: " + start);
+
+  if (start > end)
+    throw new IllegalArgumentException("Start is greater than end!");
+
+  // We must run the loop in reverse direction.
+  for (int i = end; i >= start; --i)
+    items.removeElementAt (i);
+  if (peer != null)
+    {
+      ListPeer l = (ListPeer) peer;
+      l.delItems (start, end);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Deletes the first occurrence of the specified item from the list.
+  *
+  * @param item The item to delete.
+  *
+  * @exception IllegalArgumentException If the specified item does not exist.
+  */
+public synchronized void
+remove(String item) throws IllegalArgumentException
+{
+  int index = items.indexOf(item);
+  if (index == -1)
+    throw new IllegalArgumentException("List element to delete not found");
+
+  remove(index);
+}
+
+/*************************************************************************/
+
+/**
+  * Deletes all of the items from the list.
+  */
+public synchronized void
+removeAll()
+{
+  items.clear();
+  if (peer != null)
+    {
+      ListPeer l = (ListPeer) peer;
+      l.removeAll ();
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Deletes all of the items from the list.
+  * 
+  * @deprecated This method is deprecated in favor of <code>removeAll()</code>.
+  */
+public void
+clear()
+{
+  removeAll();
+}
+
+/*************************************************************************/
+
+/**
+  * Replaces the item at the specified index with the specified item.
+  *
+  * @param item The new item value.
+  * @param index The index of the item to replace.
+  *
+  * @exception IllegalArgumentException If the index is not valid.
+  */
+public synchronized void
+replaceItem(String item, int index) throws IllegalArgumentException
+{
+  remove(index);
+  addItem(item, index);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the index of the currently selected item.  -1 will be returned
+  * if there are no selected rows or if there are multiple selected rows.
+  *
+  * @return The index of the selected row.
+  */
+public synchronized int
+getSelectedIndex()
+{
+  if (peer != null)
+    {
+      ListPeer l = (ListPeer) peer;
+      selected = l.getSelectedIndexes ();
+    }
+
+  if (selected == null || selected.length > 1)
+    return -1;
+  return selected[0];
+}
+
+/*************************************************************************/
+
+/**
+  * Returns an array containing the indexes of the rows that are 
+  * currently selected.
+  *
+  * @return A list of indexes of selected rows.
+  */
+public synchronized int[]
+getSelectedIndexes()
+{
+  if (peer != null)
+    {
+      ListPeer l = (ListPeer) peer;
+      selected = l.getSelectedIndexes ();
+    }
+  return selected;
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the item that is currently selected, or <code>null</code> if there 
+  * is no item selected.  FIXME: What happens if multiple items selected?
+  *
+  * @return The selected item, or <code>null</code> if there is no
+  * selected item.
+  */
+public synchronized String
+getSelectedItem()
+{
+  int index = getSelectedIndex();
+  if (index == -1)
+    return(null);
+
+  return((String)items.elementAt(index));
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the list of items that are currently selected in this list.
+  *
+  * @return The list of currently selected items.
+  */
+public synchronized String[]
+getSelectedItems()
+{
+  int[] indexes = getSelectedIndexes();
+  if (indexes == null)
+    return(new String[0]);
+
+  String[] retvals = new String[indexes.length];
+  if (retvals.length > 0)
+    for (int i = 0 ; i < retvals.length; i++)
+       retvals[i] = (String)items.elementAt(indexes[i]);
+
+  return(retvals);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the list of items that are currently selected in this list as
+  * an array of type <code>Object[]</code> instead of <code>String[]</code>.
+  *
+  * @return The list of currently selected items.
+  */
+public synchronized Object[]
+getSelectedObjects()
+{
+  int[] indexes = getSelectedIndexes();
+  if (indexes == null)
+    return(new Object[0]);
+
+  Object[] retvals = new Object[indexes.length];
+  if (retvals.length > 0)
+    for (int i = 0 ; i < retvals.length; i++)
+       retvals[i] = items.elementAt(indexes[i]);
+
+  return(retvals);
+}
+
+/*************************************************************************/
+
+/**
+  * Tests whether or not the specified index is selected.
+  *
+  * @param index The index to test.
+  *
+  * @return <code>true</code> if the index is selected, <code>false</code>
+  * otherwise.
+  */
+public boolean
+isIndexSelected(int index)
+{
+  int[] indexes = getSelectedIndexes();
+
+  for (int i = 0; i < indexes.length; i++)
+    if (indexes[i] == index)
+      return(true);
+
+  return(false);
+}
+
+/*************************************************************************/
+
+/**
+  * Tests whether or not the specified index is selected.
+  *
+  * @param index The index to test.
+  *
+  * @return <code>true</code> if the index is selected, <code>false</code>
+  * otherwise.
+  *
+  * @deprecated This method is deprecated in favor of
+  * <code>isIndexSelected(int)</code>.
+  */
+public boolean
+isSelected(int index)
+{
+  return(isIndexSelected(index));
+}
+
+/*************************************************************************/
+
+/**
+  * This method ensures that the item at the specified index is visible.
+  *
+  * @exception IllegalArgumentException If the specified index is out of
+  * range.
+  */
+public synchronized void
+makeVisible(int index) throws IllegalArgumentException
+{
+  if ((index < 0) || (index >= items.size()))
+    throw new IllegalArgumentException("Bad list index: " + index);
+
+  visibleIndex = index;
+  if (peer != null)
+    {
+      ListPeer l = (ListPeer) peer;
+      l.makeVisible (index);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the index of the last item that was made visible via the
+  * <code>makeVisible()</code> method.
+  *
+  * @return The index of the last item made visible via the 
+  * <code>makeVisible()</code> method.
+  */
+public int
+getVisibleIndex()
+{
+  return(visibleIndex);
+}
+
+/*************************************************************************/
+
+/**
+  * Makes the item at the specified index selected.
+  *
+  * @param index The index of the item to select.
+  */
+public synchronized void
+select(int index)
+{
+  ListPeer lp = (ListPeer)getPeer();
+  if (lp != null)
+    lp.select(index);
+}
+
+/*************************************************************************/
+
+/**
+  * Makes the item at the specified index not selected.
+  *
+  * @param index The index of the item to unselect.
+  */
+public synchronized void
+deselect(int index)
+{
+  ListPeer lp = (ListPeer)getPeer();
+  if (lp != null)
+    lp.deselect(index);
+}
+
+/*************************************************************************/
+
+/**
+  * Notifies this object to create its native peer.
+  */
+public void
+addNotify()
+{
+  if (peer != null)
+    peer = getToolkit ().createList (this);
+  super.addNotify ();
+}
+
+/*************************************************************************/
+
+/**
+  * Notifies this object to destroy its native peer.
+  */
+public void
+removeNotify()
+{
+  super.removeNotify();
+}
+
+/*************************************************************************/
+
+/**
+  * Adds the specified <code>ActionListener</code> to the list of
+  * registered listeners for this object.
+  *
+  * @param listener The listener to add.
+  */
+public synchronized void
+addActionListener(ActionListener listener)
+{
+  action_listeners = AWTEventMulticaster.add(action_listeners, listener);
+}
+
+/*************************************************************************/
+
+/**
+  * Removes the specified <code>ActionListener</code> from the list of
+  * registers listeners for this object.
+  *
+  * @param listener The listener to remove.
+  */
+public synchronized void
+removeActionListener(ActionListener listener)
+{
+  action_listeners = AWTEventMulticaster.remove(action_listeners, listener);
+}
+
+/*************************************************************************/
+
+/**
+  * Adds the specified <code>ItemListener</code> to the list of
+  * registered listeners for this object.
+  *
+  * @param listener The listener to add.
+  */
+public synchronized void
+addItemListener(ItemListener listener)
+{
+  item_listeners = AWTEventMulticaster.add(item_listeners, listener);
+}
+
+/*************************************************************************/
+
+/**
+  * Removes the specified <code>ItemListener</code> from the list of
+  * registers listeners for this object.
+  *
+  * @param listener The listener to remove.
+  */
+public synchronized void
+removeItemListener(ItemListener listener)
+{
+  item_listeners = AWTEventMulticaster.remove(item_listeners, listener);
+}
+
+/*************************************************************************/
+
+/**
+  * Processes the specified event for this object.  If the event is an
+  * instance of <code>ActionEvent</code> then the
+  * <code>processActionEvent()</code> method is called.  Similarly, if the
+  * even is an instance of <code>ItemEvent</code> then the
+  * <code>processItemEvent()</code> method is called.  Otherwise the
+  * superclass method is called to process this event.
+  *
+  * @param event The event to process.
+  */
+protected void
+processEvent(AWTEvent event)
+{
+  if (event instanceof ActionEvent)
+    processActionEvent((ActionEvent)event);
+  if (event instanceof ItemEvent)
+    processItemEvent((ItemEvent)event);
+
+  super.processEvent(event);
+}
+
+/*************************************************************************/
+
+/**
+  * This method processes the specified event by dispatching it to any
+  * registered listeners.  Note that this method will only get called if
+  * action events are enabled.  This will happen automatically if any
+  * listeners are added, or it can be done "manually" by calling
+  * the <code>enableEvents()</code> method.
+  *
+  * @param event The event to process.
+  */
+protected void 
+processActionEvent(ActionEvent event)
+{
+  if (action_listeners != null)
+    action_listeners.actionPerformed(event);
+}
+
+/*************************************************************************/
+
+/**
+  * This method processes the specified event by dispatching it to any
+  * registered listeners.  Note that this method will only get called if
+  * item events are enabled.  This will happen automatically if any
+  * listeners are added, or it can be done "manually" by calling
+  * the <code>enableEvents()</code> method.
+  *
+  * @param event The event to process.
+  */
+protected void 
+processItemEvent(ItemEvent event)
+{
+  if (item_listeners != null)
+    item_listeners.itemStateChanged(event);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a debugging string for this object.
+  *
+  * @return A debugging string for this object.
+  */
+protected String
+paramString()
+{
+  return "multiple=" + multipleMode + ",rows=" + rows + super.paramString();
+}
+
+} // class List
Index: java/awt/MediaEntry.java
===================================================================
RCS file: MediaEntry.java
diff -N MediaEntry.java
--- /dev/null	Tue May  5 13:32:27 1998
+++ MediaEntry.java	Tue Jan 22 13:54:07 2002
@@ -0,0 +1,106 @@
+/* MediaEntry.java -- An entry in a MediaTracker
+   Copyright (C) 1999 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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
+package java.awt;
+
+/**
+  * This is an entry in the media tracker
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
+abstract class MediaEntry implements java.io.Serializable
+{
+
+protected static final int LOADING = 1;
+protected static final int ABORTED = 2;
+protected static final int ERRORED = 4;
+protected static final int COMPLETE = 8;
+protected static final int LOADSTARTED = 16;
+protected static final int DONE = 32;
+
+private MediaTracker tracker;
+private int ID;
+private int status;
+private boolean cancelled;
+private MediaEntry next;
+
+static MediaEntry
+insert(MediaEntry a, MediaEntry b)
+{
+  while (a.next != null)
+    a = a.next;
+
+  a.next = b;
+  return(b);
+}
+
+MediaEntry(MediaTracker tracker, int ID)
+{
+  this.tracker = tracker;
+  this.ID = ID;
+}
+
+public int
+getID()
+{
+  return(ID);
+}
+
+public int
+getStatus()
+{
+  return(status);
+}
+
+public void
+setStatus(int status)
+{
+  this.status = status;
+}
+
+public MediaEntry
+getNext()
+{
+  return(next);
+}
+
+public void
+cancel()
+{
+  cancelled = true;
+  if ((status == LOADING) || (status == LOADSTARTED))
+    setStatus(ABORTED);
+}
+
+abstract void
+startLoad();
+
+abstract Object
+getMedia();
+
+} // class MediaEntry 
+
Index: java/awt/MediaTracker.java
===================================================================
RCS file: MediaTracker.java
diff -N MediaTracker.java
--- /dev/null	Tue May  5 13:32:27 1998
+++ MediaTracker.java	Tue Jan 22 13:54:07 2002
@@ -0,0 +1,40 @@
+/* MediaTracker.java -- Class used for keeping track of images
+   Copyright (C) 1999 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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
+package java.awt;
+
+/**
+  * This class is used for keeping track of the status of various media
+  * objects.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
+public class MediaTracker implements java.io.Serializable
+{
+
+} // class MediaTracker 
+
Index: java/awt/Menu.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Menu.java,v
retrieving revision 1.7
diff -u -r1.7 Menu.java
--- Menu.java	2001/04/22 03:05:38	1.7
+++ Menu.java	2002/01/22 21:54:07
@@ -1,141 +1,398 @@
-/* Copyright (C) 1999, 2000, 2001  Free Software Foundation
+/* Menu.java -- A Java AWT Menu
+   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
 
-   This file is part of libjava.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libjava License.  Please consult the file "LIBJAVA_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
 
+import java.awt.peer.MenuPeer;
+import java.awt.peer.MenuItemPeer;
+import java.awt.peer.MenuComponentPeer;
+import java.io.Serializable;
 import java.util.Vector;
+import java.util.Enumeration;
+
+/**
+  * This class represents a pull down or tear off menu in Java's AWT.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
+public class Menu extends MenuItem implements MenuContainer, Serializable
+{
+
+/*
+ * Static Variables
+ */
+
+// Serialization Constant
+private static final long serialVersionUID = -8809584163345499784L;
+
+/*************************************************************************/
+
+/*
+ * Instance Variables
+ */
+
+/**
+  * @serial The actual items in the menu
+  */
+private Vector items = new Vector();
+
+/**
+  * @serial Flag indicating whether or not this menu is a tear off
+  */
+private boolean isTearOff;
+
+/**
+  * @serial Indicates whether or not this is a help menu.
+  */
+private boolean isHelpMenu;
+
+// From the serialization spec.  FIXME: what should it be?
+private int menuSerializedDataVersion;
+
+static final MenuItem separator = new MenuItem("-");
+
+/*************************************************************************/
+
+/*
+ * Constructors
+ */
+
+/**
+  * Initializes a new instance of <code>Menu</code> with no label and that
+  * is not a tearoff;
+  */
+public
+Menu()
+{
+}
 
-/* Status: Incomplete. */
+/*************************************************************************/
 
-public class Menu extends MenuItem implements MenuContainer
+/**
+  * Initializes a new instance of <code>Menu</code> that is not a tearoff and
+  * that has the specified label.
+  *
+  * @param label The menu label.
+  */
+public
+Menu(String label)
 {
-  // Fields from the serialization spec. Decalare others "transient".
-  Vector items = new Vector();
-  boolean tearOff;
-  boolean isHelpMenu;
-  int menuSerializedDataVersion;
-  
-  static final MenuItem separator = new MenuItem("-");
-
-  public Menu()
-  {
-    this(null, false);
-  }
-  
-  public Menu(String label)
-  {
-    this(label, false);
-  }
-  
-  public Menu(String label, boolean tearOff)
-  {
-    super(label);
-    this.tearOff = tearOff;
-  }
-
-  public void addNotify()
-  {
-    if (peer != null)
-      {
-	// This choice of toolkit seems unsatisfying, but I'm not sure
-	// what else to do.
-	peer = Toolkit.getDefaultToolkit ().createMenu (this);
-      }
-    super.addNotify ();
-  }
-
-  public void removeNotify()
-  {
-    // FIXME
-  }
-
-  public boolean isTearOff()
-  {
-    return tearOff;
-  }
-
-  public int getItemCount()
-  {
-    return items.size();
-  }
-
-  /** @deprecated Use getItemCount() instead. */
-  public int countItems()
-  {
-    return getItemCount();
-  }
-
-  public MenuItem getItem(int index)
-  {
-    return (MenuItem) items.elementAt(index);
-  }
-
-  public synchronized MenuItem add(MenuItem mi)
-  {
-    items.addElement(mi);
-    if (mi.parent != null)
-      {
-	mi.parent.remove(mi);
-      }
-    mi.parent = this;
-    return mi;
-  }
-
-  public void add(String label)
-  {
-    MenuItem mi = new MenuItem(label);
-    this.add(mi);
-  }
-
-  public synchronized void insert(MenuItem menuitem, int index)
-  {
-    if (index < 0)
-      throw new IllegalArgumentException();
-    items.insertElementAt(menuitem, index);
-  }
-
-  public void insert(String label, int index)
-  {
-    MenuItem mi = new MenuItem(label);
-    this.insert(mi, index);
-  }
-
-  public void addSeparator()
-  {
-    this.add(separator);
-  }
-
-  public void insertSeparator(int index)
-  {
-    this.insert(separator, index);    
-  }
-
-  public synchronized void remove(int index)
-  {
-    items.removeElementAt(index);
-  }
-
-  public synchronized void remove(MenuComponent item)
-  {
-    items.removeElement(item);
-  }
-
-  public synchronized void removeAll()
-  {
-    items.removeAllElements();
-  }
-
-  public String paramString()
-  {
-    return getName() + ",label" + label + ",tearOff=" + tearOff + 
-           ",isHelpMenu=" + isHelpMenu;
-  }
-  
-  // Accessibility API not yet implemented.
-  // public AccessibleContext getAccessibleContext()
+  this(label, false);
+}
+
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>Menu</code> with the specified
+  * label and tearoff status.
+  *
+  * @param label The label for this menu
+  * @param isTearOff <code>true</code> if this menu is a tear off menu,
+  * <code>false</code> otherwise.
+  */
+public
+Menu(String label, boolean isTearOff)
+{
+  super(label);
+
+  this.isTearOff = isTearOff;
+
+  if (label.equals("Help"))
+    isHelpMenu = true;
+}
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
+ */
+
+/**
+  * Tests whether or not this menu is a tearoff.
+  *
+  * @return <code>true</code> if this menu is a tearoff, <code>false</code>
+  * otherwise.
+  */
+public boolean
+isTearOff()
+{
+  return(isTearOff);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the number of items in this menu.
+  *
+  * @return The number of items in this menu.
+  */
+public int
+getItemCount()
+{
+  return(items.size());
+}
+ 
+/*************************************************************************/
+
+/**
+  * Returns the number of items in this menu.
+  *
+  * @return The number of items in this menu.
+  *
+  * @deprecated This method is deprecated in favor of <code>getItemCount()</code>.
+  */
+public int
+count()
+{
+  return(items.size());
+}
+ 
+/*************************************************************************/
+
+/**
+  * Returns the item at the specified index.
+  *
+  * @return The item at the specified index.
+  *
+  * @exception ArrayIndexOutOfBoundsException If the index value is not valid.
+  */
+public MenuItem
+getItem(int index)
+{
+  return((MenuItem)items.elementAt(index));
+}
+
+/*************************************************************************/
+
+/**
+  * Adds the specified item to this menu.  If it was previously part of
+  * another menu, it is first removed from that menu.
+  *
+  * @param item The new item to add.
+  *
+  * @return The item that was added.
+  */
+public MenuItem
+add(MenuItem item)
+{
+  items.addElement(item);
+  if (item.parent != null)
+    {
+      item.parent.remove(item);
+    }
+  item.parent = this;
+
+  if (peer != null)
+    {
+      MenuPeer mp = (MenuPeer) peer;
+      mp.addItem(item);
+    }
+
+  return item;
+}
+
+/*************************************************************************/
+
+/**
+  * Add an item with the specified label to this menu.
+  *
+  * @param label The label of the menu item to add.
+  */
+public void
+add(String label)
+{
+  add(new MenuItem(label));
+}
+
+/*************************************************************************/
+
+/**
+  * Inserts the specified menu item into this menu at the specified index.
+  *
+  * @param item The menu item to add.
+  * @param index The index of the menu item.
+  *
+  * XXX: FIXME
+  *
+  * @exception IllegalArgumentException If the index is less than zero.
+  * @exception ArrayIndexOutOfBoundsException If the index is otherwise invalid.
+  */
+public void
+insert(MenuItem item, int index)
+{
+  if (index < 0)
+    throw new IllegalArgumentException("Index is less than zero");
+
+  items.insertElementAt(item, index);
+
+  MenuPeer mp = (MenuPeer)getPeer();
+  // FIXME: Need to add a peer method here.
+//    if (mp != null)
+//      mp.insertItem(item, index);
 }
+
+/*************************************************************************/
+
+/**
+  * Inserts an item with the specified label into this menu at the specified index.
+  *
+  * @param label The label of the item to add.
+  * @param index The index of the menu item.
+  *
+  * @exception IllegalArgumentException If the index is less than zero.
+  * @exception ArrayIndexOutOfBoundsException If the index is otherwise invalid.
+  */
+public void
+insert(String label, int index)
+{
+  insert(new MenuItem(label), index);
+}
+
+/*************************************************************************/
+
+/**
+  * Adds a separator bar at the current menu location.
+  */
+public void
+addSeparator()
+{
+  add(separator);
+}
+
+/*************************************************************************/
+
+/**
+  * Inserts a separator bar at the specified index value.
+  *
+  * @param index The index at which to insert a separator bar.
+  *
+  * XXX: FIXME
+  *
+  * @exception IllegalArgumentException If the index is less than zero.
+  * @exception ArrayIndexOutOfBoundsException If the index is otherwise invalid.
+  */
+public void
+insertSeparator(int index)
+{
+  insert(separator, index);
+}
+
+/*************************************************************************/
+
+/**
+  * Deletes the item at the specified index from this menu.
+  *
+  * @param index The index of the item to remove.
+  * 
+  * @exception ArrayIndexOutOfBoundsException If the index is otherwise invalid.
+  */
+public synchronized void
+remove(int index)
+{
+  items.removeElementAt(index);
+
+  MenuPeer mp = (MenuPeer)getPeer();
+  if (mp != null)
+    mp.delItem(index);
+}
+
+/*************************************************************************/
+
+/**
+  * Removes the specifed item from the menu.  If the specified component
+  * does not exist, this method does nothing. // FIXME: Right?
+  *
+  * @param item The component to remove.
+  */
+public void
+remove(MenuComponent item)
+{
+  int index = items.indexOf(item);
+  if (index == -1)
+    return;
+
+  remove(index);
+}
+
+/*************************************************************************/
+
+/**
+  * Removes all the elements from this menu.
+  */
+public synchronized void
+removeAll()
+{
+  int count = getItemCount();
+  for(int i = 0; i < count; i++)
+    {
+      // We must always remove item 0.
+      remove(0);
+    }
+}
+
+/*************************************************************************/
+
+/**
+  * Creates the native peer for this object.
+  */
+public void
+addNotify()
+{
+  if (peer != null)
+    peer = getToolkit().createMenu(this);
+  super.addNotify ();
+}
+
+/*************************************************************************/
+
+/**
+  * Destroys the native peer for this object.
+  */
+public void
+removeNotify()
+{
+  super.removeNotify();
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a debugging string for this menu.
+  *
+  * @return A debugging string for this menu.
+  */
+public String
+paramString()
+{
+  return (",isTearOff=" + isTearOff + ",isHelpMenu=" + isHelpMenu
+	  + super.paramString());
+}
+
+// Accessibility API not yet implemented.
+// public AccessibleContext getAccessibleContext()
+
+} // class Menu
Index: java/awt/MenuBar.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/MenuBar.java,v
retrieving revision 1.7
diff -u -r1.7 MenuBar.java
--- MenuBar.java	2001/04/22 03:05:38	1.7
+++ MenuBar.java	2002/01/22 21:54:07
@@ -1,288 +1,329 @@
-/* Copyright (C) 1999, 2000, 2001  Free Software Foundation
+/* MenuBar.java -- An AWT menu bar class
+   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
-   This file is part of libjava.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libjava License.  Please consult the file "LIBJAVA_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
 
 import java.awt.peer.MenuBarPeer;
-import java.util.Vector;
+import java.awt.peer.MenuComponentPeer;
+
+import java.io.Serializable;
 import java.util.Enumeration;
-import java.util.NoSuchElementException;
+import java.util.Vector;
+
+/**
+  * This class implements a menu bar in the AWT system.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  * @author Tom Tromey <tromey@redhat.com>
+  */
+public class MenuBar extends MenuComponent
+  implements MenuContainer, Serializable
+{
+
+/*
+ * Static Variables
+ */
+
+// Serialization Constant
+private static final long serialVersionUID = -4930327919388951260L;
+
+/*************************************************************************/
 
-/** This class implements a MenuBar, such as might appear across the
- * top of a window.
- * @author Tom Tromey <tromey@redhat.com>
- * @date December 25, 2000
+/*
+ * Instance Variables
  */
-public class MenuBar extends MenuComponent implements MenuContainer
+
+/**
+  * @serial The menu used for providing help information
+  */
+private Menu helpMenu;
+
+/**
+  * @serial The menus contained in this menu bar.
+  */
+private Vector menus = new Vector();
+
+/*************************************************************************/
+
+/*
+ * Constructors
+ */
+
+/**
+  * Initializes a new instance of <code>MenuBar</code>.
+  */
+public
+MenuBar()
 {
-  /** Create a new MenuBar.  */
-  public MenuBar ()
-  {
-    menus = new Vector ();
-  }
-
-  /** Add a menu to this MenuBar.  If the menu has already has a
-   * parent, it is first removed from its old parent before being
-   * added.
-   * @param menu The menu to add.
-   * @returns menu
-   */
-  public synchronized Menu add (Menu menu)
-  {
-    if (menu.parent != null)
-      menu.parent.remove (menu);
-
-    menu.parent = this;
-    menus.add (menu);
-
-    if (peer != null)
-      {
-	MenuBarPeer mp = (MenuBarPeer) peer;
-	mp.add (menu);
-      }
-
-    return menu;
-  }
-
-  /** This creates the component's peer.  */
-  public void addNotify ()
-  {
-    if (peer != null)
-      {
-	// This choice of toolkit seems unsatisfying, but I'm not sure
-	// what else to do.
-	peer = Toolkit.getDefaultToolkit ().createMenuBar (this);
-      }
-  }
-
-  /** @deprecated  Use getMenuCount() instead.  */
-  public int countMenus ()
-  {
-    return getMenuCount ();
-  }
-
-  /** Delete a keyboard shortcut.
-   * @param shortcut The short cut which should be deleted from all
-   *                 menus on this MenuBar.
-   */
-  public void deleteShortcut (MenuShortcut shortcut)
-  {
-    MenuItem it;
-    // This is a slow implementation, but it probably doesn't matter.
-    while ((it = getShortcutMenuItem (shortcut)) != null)
-      it.deleteShortcut ();
-  }
-
-  /** Returns the current Help menu.  */
-  public Menu getHelpMenu ()
-  {
-    return help_menu;
-  }
-
-  /** Returns a menu from this object.
-   * @param index Index of menu to return.
-   */
-  public Menu getMenu (int index)
-  {
-    return (Menu) menus.get (index);
-  }
-
-  /** Returns the number of menus on this MenuBar.  */
-  public int getMenuCount ()
-  {
-    return menus.size ();
-  }
-
-  /** Returns the menu item on this MenuBar with the specified
-   * shortcut.
-   * @param shortcut Shortcut to look for
-   */
-  public MenuItem getShortcutMenuItem (MenuShortcut shortcut)
-  {
-    Enumeration m = new MenuEnumeration (this);
-    while (m.hasMoreElements ())
-      {
-	MenuItem item = (MenuItem) m.nextElement ();
-	if (item.getShortcut () == shortcut)
-	  return item;
-      }
-    return null;
-  }
-
-  /** Remove a menu from the menu bar.  If the menu is specified by
-   * component (and not index), and does not exist on the menu, then
-   * the method does nothing.  If the removed menu has a peer, it is
-   * destroyed.
-   * @param menu The menu to remove
-   * @param index The index of the menu to remove
-   */
-  public synchronized void remove (MenuComponent menu)
-  {
-    int s = menus.size ();
-    for (int i = 0; i < s; ++i)
-      {
-	if (menus.get (i) == menu)
-	  {
-	    remove (i);
-	    break;
-	  }
-      }
-  }
-
-  public synchronized void remove (int index)
-  {
-    Menu m = (Menu) menus.get (index);
-    menus.remove (index);
-    m.removeNotify ();
-    m.parent = null;
-
-    if (peer != null)
-      {
-	MenuBarPeer mp = (MenuBarPeer) peer;
-	mp.remove (index);
-      }
-  }
-
-  /** Set the Help menu for this MenuBar.  If a Help menu already
-   * exists, it is first removed.
-   * @param menu The new Help menu.
-   */
-  public synchronized void setHelpMenu (Menu menu)
-  {
-    if (help_menu != null)
-      {
-	help_menu.removeNotify ();
-	help_menu.parent = null;
-      }
-
-    if (menu.parent != null)
-      menu.parent.remove (menu);
-    if (menu.parent != null)
-      menu.parent.remove (menu);
-    menu.parent = this;
-
-    if (peer != null)
-      {
-	MenuBarPeer mp = (MenuBarPeer) peer;
-	mp.addHelpMenu (menu);
-      }
-  }
-
-  /** Returns an Enumeration which lists the keyboard shortcuts
-   * associated with menu items on this MenuBar.
-   */
-  public synchronized Enumeration shortcuts ()
-  {
-    return new ShortcutEnumeration (new MenuEnumeration (this));
-  }
-
-  // Iterate over the items of a menu.
-  private static class MenuEnumeration implements Enumeration
-  {
-    // Enumerate over the menu's items.
-    Enumeration main;
-    // Enumerate over a submenu.
-    Enumeration sub;
-    // Menubar so we can keep track of help menu too.
-    MenuBar menubar;
+}
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
+ */
 
-    MenuEnumeration (Menu m)
+/**
+  * Returns the help menu for this menu bar.  This may be <code>null</code>.
+  *
+  * @return The help menu for this menu bar.
+  */
+public Menu
+getHelpMenu()
+{
+  return(helpMenu);
+}
+
+/*************************************************************************/
+
+/**
+  * Sets the help menu for this menu bar.
+  *
+  * @param helpMenu The new help menu for this menu bar.
+  */
+public synchronized void
+setHelpMenu(Menu menu)
+{
+  if (helpMenu != null)
     {
-      sub = null;
-      menubar = null;
-      main = m.items.elements ();
+      helpMenu.removeNotify ();
+      helpMenu.parent = null;
     }
 
-    MenuEnumeration (MenuBar mb)
+  if (menu.parent != null)
+    menu.parent.remove (menu);
+  if (menu.parent != null)
+    menu.parent.remove (menu);
+  menu.parent = this;
+
+  if (peer != null)
     {
-      sub = null;
-      menubar = mb;
-      main = mb.menus.elements ();
+      MenuBarPeer mp = (MenuBarPeer) peer;
+      mp.addHelpMenu (menu);
     }
+}
+
+/*************************************************************************/
+
+/** Add a menu to this MenuBar.  If the menu has already has a
+ * parent, it is first removed from its old parent before being
+ * added.
+ *
+ * @param menu The menu to add.
+ *
+ * @return The menu that was added.
+ */
+public synchronized Menu
+add(Menu menu)
+{
+  if (menu.parent != null)
+    menu.parent.remove (menu);
+
+  menu.parent = this;
+  menus.addElement(menu);
 
-    public boolean hasMoreElements ()
+  if (peer != null)
     {
-      boolean r = false;
-      if (sub != null)
-	r = sub.hasMoreElements ();
-      if (! r)
-	r = main.hasMoreElements ();
-      if (! r && menubar != null)
-	{
-	  if (menubar.help_menu != null)
-	    {
-	      main = new MenuEnumeration (menubar.help_menu);
-	      r = main.hasMoreElements ();
-	    }
-	  menubar = null;
-	}
-      return r;
+      MenuBarPeer mp = (MenuBarPeer) peer;
+      mp.addMenu (menu);
     }
 
-    public Object nextElement () throws NoSuchElementException
-    {
-      while (true)
-	{
-	  if (! sub.hasMoreElements ())
-	    sub = null;
-	  else
-	    return sub.nextElement ();
-
-	  if (! main.hasMoreElements () && menubar != null
-	      && menubar.help_menu != null)
-	    {
-	      main = new MenuEnumeration (menubar.help_menu);
-	      menubar = null;
-	    }
-
-	  Object r = main.nextElement ();
-	  if (r instanceof Menu)
-	    {
-	      sub = new MenuEnumeration ((Menu) r);
-	      continue;
-	    }
+  return(menu);
+}
 
-	  return r;
-	}
-    }
-  }
+/*************************************************************************/
 
-  // This is an enumeration that shadows another enumeration and
-  // returns the shortcut for each item returned.  I wonder if we're
-  // only supposed to return unique shortcuts?  If so then we could
-  // keep a hash table here and remove duplicates.
-  private static class ShortcutEnumeration implements Enumeration
-  {
-    Enumeration back;
+/**
+  * Removes the menu at the specified index.
+  *
+  * @param index The index of the menu to remove from the menu bar.
+  */
+public synchronized void
+remove(int index)
+{
+  Menu m = (Menu) menus.get (index);
+  menus.remove (index);
+  m.removeNotify ();
+  m.parent = null;
 
-    ShortcutEnumeration (Enumeration back)
+  if (peer != null)
     {
-      this.back = back;
+      MenuBarPeer mp = (MenuBarPeer) peer;
+      mp.delMenu (index);
     }
+}
+
+/*************************************************************************/
 
-    public boolean hasMoreElements ()
+/**
+  * Removes the specified menu from the menu bar.
+  *
+  * @param menu The menu to remove from the menu bar.
+  */
+public void
+remove(MenuComponent menu)
+{
+  int index = menus.indexOf(menu);
+  if (index == -1)
+    return;
+
+  remove(index);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the number of elements in this menu bar.
+  *
+  * @return The number of elements in the menu bar.
+  */
+public int
+getMenuCount()
+{
+  // FIXME: How does the help menu fit in here?
+  return(menus.size());
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the number of elements in this menu bar.
+  *
+  * @return The number of elements in the menu bar.
+  *
+  * @deprecated This method is deprecated in favor of <code>getMenuCount()</code>.
+  */
+public int
+countMenus()
+{
+  return(getMenuCount());
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the menu at the specified index.
+  *
+  * @return The requested menu.
+  *
+  * @exception ArrayIndexOutOfBoundsException If the index is not valid.
+  */
+public Menu
+getMenu(int index)
+{
+  return((Menu)menus.elementAt(index));
+}
+
+/*************************************************************************/
+
+/**
+  * Creates this object's native peer.
+  */
+public void
+addNotify()
+{
+  if (getPeer() == null)
+    setPeer((MenuComponentPeer)getToolkit().createMenuBar(this));
+}
+
+/*************************************************************************/
+
+/**
+  * Destroys this object's native peer.
+  */
+public void
+removeNotify()
+{
+  super.removeNotify();
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a list of all shortcuts for the menus in this menu bar.
+  *
+  * @return A list of all shortcuts for the menus in this menu bar.
+  */
+public synchronized Enumeration
+shortcuts()
+{
+  Vector shortcuts = new Vector();
+  Enumeration e = menus.elements();
+
+  while (e.hasMoreElements())
     {
-      return back.hasMoreElements ();
+      Menu menu = (Menu)e.nextElement();
+      if (menu.getShortcut() != null)
+        shortcuts.addElement(menu.getShortcut());
     }
+
+  return(shortcuts.elements());
+}
+
+/*************************************************************************/
 
-    public Object nextElement () throws NoSuchElementException
+/**
+  * Returns the menu item for the specified shortcut, or <code>null</code>
+  * if no such item exists.
+  *
+  * @param shortcut The shortcut to return the menu item for.
+  *
+  * @return The menu item for the specified shortcut.
+  */
+public MenuItem
+getShortcutMenuItem(MenuShortcut shortcut)
+{
+  Enumeration e = menus.elements();
+
+  while (e.hasMoreElements())
     {
-      while (true)
-	{
-	  MenuItem item = (MenuItem) back.nextElement ();
-	  if (item.getShortcut () != null)
-	    return item.getShortcut ();
-	}
+      Menu menu = (Menu)e.nextElement();
+      MenuShortcut s = menu.getShortcut();
+      if ((s != null) && (s.equals(shortcut)))
+        return(menu);
     }
-  }
 
-  // We use Vector because it makes enumerating easier than ArrayList
-  // in this case.
-  Vector menus;
-  Menu help_menu;
+  return(null);
 }
+
+/*************************************************************************/
+
+/**
+  * Deletes the specified menu shortcut.
+  *
+  * @param shortcut The shortcut to delete.
+  */
+public void
+deleteShortcut(MenuShortcut shortcut)
+{
+  MenuItem it;
+  // This is a slow implementation, but it probably doesn't matter.
+  while ((it = getShortcutMenuItem (shortcut)) != null)
+    it.deleteShortcut ();
+}
+
+} // class MenuBar
Index: java/awt/MenuComponent.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/MenuComponent.java,v
retrieving revision 1.6
diff -u -r1.6 MenuComponent.java
--- MenuComponent.java	2002/01/18 01:01:58	1.6
+++ MenuComponent.java	2002/01/22 21:54:07
@@ -221,7 +221,7 @@
   *
   * @return The synchronization lock for this component.
   */
-public final Object
+protected final Object
 getTreeLock()
 {
   return(tree_lock);
@@ -292,7 +292,7 @@
 public String
 toString()
 {
-  return(getClass().getName() + "(" + getName() + ")");
+  return this.getClass().getName() + "[" + paramString() + "]";
 }
 
 /*************************************************************************/
@@ -303,7 +303,7 @@
 protected String
 paramString()
 {
-  return(toString());
+  return "name=" + getName();
 }
 
 // Accessibility API not yet implemented.
Index: java/awt/MenuContainer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/MenuContainer.java,v
retrieving revision 1.4
diff -u -r1.4 MenuContainer.java
--- MenuContainer.java	2000/12/26 00:25:12	1.4
+++ MenuContainer.java	2002/01/22 21:54:07
@@ -1,27 +1,69 @@
-/* Copyright (C) 1999, 2000  Free Software Foundation
+/* MenuContainer.java -- Container for menu items.
+   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
 
-   This file is part of libjava.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libjava License.  Please consult the file "LIBJAVA_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
-package java.awt;
 
-/* Written using "Java Class Libraries", 2nd edition, plus online
- * API docs for JDK 1.2 beta from http://www.javasoft.com.
- * Status:  Believed complete and correct.
- */
+package java.awt;
 
+/**
+  * This interface is a container for menu components.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
 public interface MenuContainer
 {
-  public Font getFont();
-
-  /**
-   * @deprecated
-   */
-  public boolean postEvent(Event evt);
 
-  public void remove(MenuComponent comp);
-}
+/**
+  * Returns the font in use by this container.
+  *
+  * @return The font in use by this container.
+  */
+public abstract Font
+getFont();
+
+/*************************************************************************/
+
+/**
+  * Removes the specified menu component from the menu.
+  *
+  * @param component The menu component to remove.
+  */
+public abstract void
+remove(MenuComponent component);
+
+/*************************************************************************/
+
+/**
+  * Posts and event to the listeners.  This is replaced by 
+  * <code>dispatchEvent</code>.
+  *
+  * @param event The event to dispatch.
+  *
+  * @deprecated
+  */  
+public abstract boolean
+postEvent(Event event);
 
+} // interface MenuContainer
Index: java/awt/MenuItem.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/MenuItem.java,v
retrieving revision 1.8
diff -u -r1.8 MenuItem.java
--- MenuItem.java	2002/01/18 01:01:58	1.8
+++ MenuItem.java	2002/01/22 21:54:08
@@ -437,8 +437,8 @@
 public String
 paramString()
 {
-  return(getClass().getName() + "(label+" + label + ",enabled=" + enabled +
-         ",actionCommand=" + actionCommand + ")");
+  return ("label=" + label + ",enabled=" + enabled +
+	  ",actionCommand=" + actionCommand + "," + super.paramString());
 }
 
 // Accessibility API not yet implemented.
Index: java/awt/MenuShortcut.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/MenuShortcut.java,v
retrieving revision 1.2
diff -u -r1.2 MenuShortcut.java
--- MenuShortcut.java	2000/12/26 07:18:16	1.2
+++ MenuShortcut.java	2002/01/22 21:54:08
@@ -1,75 +1,196 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* MenuShortcut.java -- A class for menu accelerators
+   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
 
-import java.awt.event.KeyEvent;
+/**
+  * This class implements a keyboard accelerator for a menu item.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
+public class MenuShortcut implements java.io.Serializable
+{
+
+/*
+ * Static Variables
+ */
+
+// Serialization Constant
+private static final long serialVersionUID = 143448358473180225L;
+
+/*************************************************************************/
+
+/*
+ * Instance Variables
+ */
+
+/**
+  * @serial The virtual keycode for the shortcut.
+  */
+private int key;
+
+/**
+  * @serial <code>true</code> if the shift key was used with this shortcut,
+  * or <code>false</code> otherwise.
+  */
+private boolean usesShift;
+
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>MenuShortcut</code> with the
+  * specified virtual key value.
+  *
+  * @param key The virtual keycode for the shortcut.
+  */
+public
+MenuShortcut(int key)
+{
+  this(key, false);
+}
 
-/* Status: Complete, except for hashCode(). Untested. */
+/*************************************************************************/
 
-public class MenuShortcut implements java.io.Serializable
+/**
+  * Initializes a new instance of <code>MenuShortcut</code> with the
+  * specified virtual key value and shift setting.
+  *
+  * @param key The virtual keycode for the shortcut.
+  * @param usesShift <code>true</code> if the shift key was pressed,
+  * <code>false</code> otherwise.
+  */
+public
+MenuShortcut(int key, boolean usesShift)
 {
-  // Fields from the serialization spec. Decalare others "transient".
-  int key;
-  boolean usesShift;
-
-  public MenuShortcut(int key)
-  {
-    this.key = key;
-  }
-
-  public MenuShortcut(int key, boolean useShiftModifier)
-  {
-    this.key = key;
-    this.usesShift = useShiftModifier;
-  }
-
-  public int getKey()
-  {
-    return key;
-  }
-
-  public boolean usesShiftModifier()
-  {
-    return usesShift;
-  }
-
-  public boolean equals(MenuShortcut ms)
-  {
-    return (ms.key == key && ms.usesShift == usesShift);
-  }
-
-  public boolean equals(Object obj)
-  {
-    if (obj instanceof MenuShortcut)
-      {
-        MenuShortcut ms = (MenuShortcut) obj;
-	return (ms.key == key && ms.usesShift == usesShift);
-      }      
-    return false;
-  }
-
-  public int hashCode()
-  {
-    // FIXME: find/implement the correct algorithm for this
-    if (usesShift)
-      return (2 * key);
-    else
-      return key;
-  }
-
-  public String toString()
-  {
-    return paramString(); // ?
-  }
-  
-  protected String paramString()
-  {
-    return KeyEvent.getKeyText(key);
-  }
+  this.key = key;
+  this.usesShift = usesShift;
 }
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
+ */
+
+/**
+  * Returns the virtual keycode for this shortcut.
+  *
+  * @return The virtual keycode for this shortcut.
+  */
+public int
+getKey()
+{
+  return(key);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns the shift setting for this shortcut.
+  *
+  * @return <code>true</code> if the shift key was pressed, <code>false</code>
+  * otherwise.
+  */
+public boolean
+usesShiftModifier()
+{
+  return(usesShift);
+}
+
+/*************************************************************************/
+
+/**
+  * Tests this object for equality against the specified object.  The two
+  * objects will be considered equal if and only if the specified object
+  * is an instance of <code>MenuShortcut</code> and has the same key value
+  * and shift setting as this object.
+  *
+  * @param obj The object to test for equality against.
+  *
+  * @return <code>true</code> if the two objects are equal, <code>false</code>
+  * otherwise.
+  */
+public boolean
+equals(MenuShortcut obj)
+{
+  if (obj == null)
+    return(false);
+
+  if (obj.key != this.key)
+    return(false);
+
+  if (obj.usesShift != this.usesShift)
+    return(false);
+
+  return(true);
+}
+
+public boolean
+equals(Object obj)
+{
+  if (obj instanceof MenuShortcut)
+    {
+      MenuShortcut ms = (MenuShortcut) obj;
+      return (ms.key == key && ms.usesShift == usesShift);
+    }      
+  return false;
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a string representation of this shortcut.
+  *
+  * @return A string representation of this shortcut.
+  */
+public String
+toString()
+{
+  return(getClass().getName() + "[" + paramString () + "]");
+}
+
+public int
+hashCode()
+{
+  // Arbitrary.
+  return key + (usesShift ? 23 : 57);
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a debugging string for this object.
+  *
+  * @return A debugging string for this object.
+  */
+protected String
+paramString()
+{
+  return "key=" + key + ",usesShift=" + usesShift;
+}
+
+} // class MenuShortcut 
Index: java/awt/PaintContext.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/PaintContext.java,v
retrieving revision 1.1
diff -u -r1.1 PaintContext.java
--- PaintContext.java	2000/03/17 00:45:06	1.1
+++ PaintContext.java	2002/01/22 21:54:08
@@ -1,10 +1,28 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* Copyright (C) 2000, 2002  Free Software Foundation
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
 
 package java.awt;
 
Index: java/awt/Panel.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Panel.java,v
retrieving revision 1.4
diff -u -r1.4 Panel.java
--- Panel.java	2001/01/03 00:07:13	1.4
+++ Panel.java	2002/01/22 21:54:08
@@ -1,36 +1,88 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* Panel.java -- Simple container object.
+   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
 
+import java.awt.peer.PanelPeer;
+import java.awt.peer.ContainerPeer;
 import java.awt.peer.ComponentPeer;
+
+/**
+  * A panel is a simple container class. 
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
+public class Panel extends Container implements java.io.Serializable
+{
+
+/*
+ * Constructors
+ */
+
+/**
+  * Initializes a new instance of <code>Panel</code> that has a default
+  * layout manager of <code>FlowLayout</code>.
+  */
+public
+Panel()
+{
+  this(new FlowLayout());
+}
 
-/* This class is complete to 1.2.  */
+/*************************************************************************/
 
-public class Panel extends Container
+/**
+  * Initializes a new instance of <code>Panel</code> with the specified
+  * layout manager.
+  *
+  * @param layoutManager The layout manager for this object.
+  */
+public
+Panel(LayoutManager layoutManager)
 {
-  public Panel()
-  { 
-    this (new FlowLayout ());
-  }
-
-  public Panel(LayoutManager layout)
-  {
-    super();
-    setLayout (layout);    
-  }
-
-  //public AccessibleContext getAccessibleContext()
-
-  public void addNotify()
-  {
-    if (peer == null)
-      peer = getToolkit().createPanel(this);
-    super.addNotify();
-  }
+  setLayout(layoutManager);
 }
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
+ */
+
+/**
+  * Notifies this object to create its native peer.
+  */
+public void
+addNotify()
+{
+  if (peer == null)
+    peer = getToolkit().createPanel(this);
+  super.addNotify();
+}
+
+} // class Panel 
+
Index: java/awt/PopupMenu.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/PopupMenu.java,v
retrieving revision 1.2
diff -u -r1.2 PopupMenu.java
--- PopupMenu.java	2001/04/22 03:05:38	1.2
+++ PopupMenu.java	2002/01/22 21:54:08
@@ -1,56 +1,119 @@
-/* Copyright (C) 2000, 2001  Free Software Foundation
+/* PopupMenu.java -- An AWT popup menu
+   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
-   This file is part of libjava.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libjava License.  Please consult the file "LIBJAVA_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt;
 
 import java.awt.peer.PopupMenuPeer;
+import java.awt.peer.MenuPeer;
+import java.awt.peer.MenuItemPeer;
+import java.awt.peer.MenuComponentPeer;
+/**
+  * This class implement an AWT popup menu widget
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
+public class PopupMenu extends Menu implements java.io.Serializable
+{
+
+/*
+ * Static Variables
+ */
+
+// Serialization Constant
+private static final long serialVersionUID = -4620452533522760060L;
+
+/*************************************************************************/
+
+/*
+ * Constructors
+ */
+
+/**
+  * Initializes a new instance of <code>PopupMenu</code>.
+  */
+public
+PopupMenu()
+{
+}
+
+/*************************************************************************/
+
+/**
+  * Initializes a new instance of <code>PopupMenu</code> with the specified
+  * label.
+  *
+  * @param label The label for this popup menu.
+  */
+public
+PopupMenu(String label)
+{
+  super(label);
+}
 
-/* Status: Incomplete. */
+/*************************************************************************/
 
-public class PopupMenu extends Menu
+/*
+ * Instance Methods
+ */
+
+/**
+  * Creates this object's native peer.
+  */
+public void
+addNotify()
 {
-  public PopupMenu()
-  {
-    super();
-  }
-
-  public PopupMenu(String label)
-  {
-    super(label);
-  }
-
-  public void addNotify()
-  {
-    if (peer != null)
-      {
-	// This choice of toolkit seems unsatisfying, but I'm not sure
-	// what else to do.
-	peer = Toolkit.getDefaultToolkit ().createPopupMenu (this);
-      }
-    super.addNotify ();
-  }
-
-  public void show(Component origin, int x, int y)
-  {
-    if (! origin.isShowing ()
-	// FIXME: or ! parent is showing -- but how?
-	)
-      {
-	// This is an invalid call which we choose to ignore.
-	return;
-      }
-	
-    addNotify ();		// FIXME?
-    Event e = new Event (origin, 0, 0, x, y, 0, 0);
-    PopupMenuPeer p = (PopupMenuPeer) peer;
-    p.show (e);
-  }
+  if (peer != null)
+    peer = getToolkit ().createPopupMenu (this);
+  super.addNotify ();
+}
+
+/*************************************************************************/
 
-  // Accessibility API not yet implemented.
-  // public AccessibleContext getAccessibleContext()
+/**
+  * Displays this popup menu at the specified coordinates relative to
+  * the specified component.
+  *
+  * @param component The component to which the display coordinates are relative.
+  * @param x The X coordinate of the menu.
+  * @param y The Y coordinate of the menu.
+  */
+public void
+show(Component component, int x, int y)
+{
+  PopupMenuPeer pmp = (PopupMenuPeer)getPeer();
+  if (pmp != null)
+    {
+      /* XXX
+      Event e = new Event (component, Event.ACTION_EVENT, component);
+      e.x = x;
+      e.y = y;*/
+      pmp.show (component, x, y);
+    }
 }
+
+} // class PopupMenu
+
Index: java/awt/SystemColor.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/SystemColor.java,v
retrieving revision 1.1
diff -u -r1.1 SystemColor.java
--- SystemColor.java	2000/12/26 00:25:12	1.1
+++ SystemColor.java	2002/01/22 21:54:08
@@ -1,158 +1,419 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* SystemColor.java -- Class to access system color values.
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt;
 
-/** This class contains most of the colors used by the native
- * windowing sytem to draw native components.
- * @author Tom Tromey <tromey@redhat.com>
- * @date December 25, 2000
- */
+/**
+  * This class contains the various "system colors" in use by the
+  * native windowing system.
+  *
+  * @author Aaron M. Renn (arenn@urbanophile.com)
+  */
 public final class SystemColor extends Color implements java.io.Serializable
+{
+
+/*
+ * Static Variables
+ */
+
+/**
+  * Array index of the desktop color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int DESKTOP = 0;
+
+/**
+  * Array index of the active caption color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int ACTIVE_CAPTION = 1;
+
+/**
+  * Array index of the active caption text color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int ACTIVE_CAPTION_TEXT = 2;
+
+/**
+  * Array index of the active caption border color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int ACTIVE_CAPTION_BORDER = 3;
+
+/**
+  * Array index of the inactive caption color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int INACTIVE_CAPTION = 4;
+
+/**
+  * Array index of the inactive caption text color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int INACTIVE_CAPTION_TEXT = 5;
+
+/**
+  * Array index of the inactive caption border color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int INACTIVE_CAPTION_BORDER = 6;
+
+/**
+  * Array index of the window background color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int WINDOW = 7;
+
+/**
+  * Array index of the window border color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int WINDOW_BORDER = 8;
+
+/**
+  * Array index of the window text color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int WINDOW_TEXT = 9;
+
+/**
+  * Array index of the menu background color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int MENU = 10;
+
+/**
+  * Array index of the menu text color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int MENU_TEXT = 11;
+
+/**
+  * Array index of the text background color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int TEXT = 12;
+
+/**
+  * Array index of the text foreground color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int TEXT_TEXT = 13;
+
+/**
+  * Array index of the highlighted text background color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int TEXT_HIGHLIGHT = 14;
+
+/**
+  * Array index of the highlighted text foreground color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int TEXT_HIGHLIGHT_TEXT = 15;
+
+/**
+  * Array index of the inactive text foreground color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int TEXT_INACTIVE_TEXT = 16;
+
+/**
+  * Array index of the control background color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int CONTROL = 17;
+
+/**
+  * Array index of the control text color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int CONTROL_TEXT = 18;
+
+/**
+  * Array index of the highlighted control background color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int CONTROL_HIGHLIGHT = 19;
+
+/**
+  * Array index of the lightly highlighted control background color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int CONTROL_LT_HIGHLIGHT = 20;
+
+/**
+  * Array index of the shadowed control background color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int CONTROL_SHADOW = 21;
+
+/**
+  * Array index of the darkly shadowed control background color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int CONTROL_DK_SHADOW = 22;
+
+/**
+  * Array index of the scrollbar background color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int SCROLLBAR = 23;
+
+/**
+  * Array index of the info background color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int INFO = 24;
+
+/**
+  * Array index of the info text color.  Used by 
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int INFO_TEXT = 25;
+
+/**
+  * The number of system colors. Used by
+  * <code>Toolkit.loadSystemColors()</code>.
+  */
+public static final int NUM_COLORS = 26;
+
+/**
+  * The desktop color.
+  */
+public static final SystemColor desktop;
+
+/**
+  * The active caption background color.
+  */
+public static final SystemColor activeCaption;
+
+/**
+  * The active caption text color.
+  */
+public static final SystemColor activeCaptionText;
+
+/**
+  * The active caption border color.
+  */
+public static final SystemColor activeCaptionBorder;
+
+/**
+  * The inactive caption background color.
+  */
+public static final SystemColor inactiveCaption;
+
+/**
+  * The inactive caption text color.
+  */
+public static final SystemColor inactiveCaptionText;
+
+/**
+  * The inactive caption border color.
+  */
+public static final SystemColor inactiveCaptionBorder;
+
+/**
+  * The window background color.
+  */
+public static final SystemColor window;
+
+/**
+  * The window border color.
+  */
+public static final SystemColor windowBorder;
+
+/**
+  * The window text color.
+  */
+public static final SystemColor windowText;
+
+/**
+  * The menu background color.
+  */
+public static final SystemColor menu;
+
+/**
+  * The menu text color.
+  */
+public static final SystemColor menuText;
+
+/**
+  * The text background color.
+  */
+public static final SystemColor text;
+
+/**
+  * The text foreground color.
+  */
+public static final SystemColor textText;
+
+/**
+  * The highlighted text background color.
+  */
+public static final SystemColor textHighlight;
+
+/**
+  * The highlighted text foreground color.
+  */
+public static final SystemColor textHighlightText;
+
+/**
+  * The inactive text color.
+  */
+public static final SystemColor textInactiveText;
+
+/**
+  * The control background color.
+  */
+public static final SystemColor control;
+
+/**
+  * The control text color.
+  */
+public static final SystemColor controlText;
+
+/**
+  * The control highlight color.
+  */
+public static final SystemColor controlHighlight;
+
+/**
+  * The control light highlight color.
+  */
+public static final SystemColor controlLtHighlight; 
+
+/**
+  * The control shadow color.
+  */
+public static final SystemColor controlShadow;
+
+/**
+  * The control dark shadow color.
+  */
+public static final SystemColor controlDkShadow;
+
+/**
+  * The scrollbar color.
+  */
+public static final SystemColor scrollbar;
+
+/**
+  * The info text background color.
+  */
+public static final SystemColor info;
+
+/**
+  * The info text foreground color.
+  */
+public static final SystemColor infoText;
+
+// Serialization version constant
+private static final long serialVersionUID = 4503142729533789064L;
+
+static
+{
+  int[] sys_color_rgbs = new int[NUM_COLORS];
+  Toolkit.getDefaultToolkit().loadSystemColors(sys_color_rgbs);
+
+  desktop = new SystemColor(sys_color_rgbs[DESKTOP]);
+  activeCaption= new SystemColor(sys_color_rgbs[ACTIVE_CAPTION]);
+  activeCaptionText= new SystemColor(sys_color_rgbs[ACTIVE_CAPTION_TEXT]);
+  activeCaptionBorder = new SystemColor(sys_color_rgbs[ACTIVE_CAPTION_BORDER]);
+  inactiveCaption = new SystemColor(sys_color_rgbs[INACTIVE_CAPTION]);
+  inactiveCaptionText = new SystemColor(sys_color_rgbs[INACTIVE_CAPTION_TEXT]);
+  inactiveCaptionBorder = 
+    new SystemColor(sys_color_rgbs[INACTIVE_CAPTION_BORDER]);
+  window = new SystemColor(sys_color_rgbs[WINDOW]);
+  windowBorder = new SystemColor(sys_color_rgbs[WINDOW_BORDER]);
+  windowText = new SystemColor(sys_color_rgbs[WINDOW_TEXT]);
+  menu = new SystemColor(sys_color_rgbs[MENU]);
+  menuText = new SystemColor(sys_color_rgbs[MENU_TEXT]);
+  text = new SystemColor(sys_color_rgbs[TEXT]);
+  textText = new SystemColor(sys_color_rgbs[TEXT_TEXT]);
+  textHighlight = new SystemColor(sys_color_rgbs[TEXT_HIGHLIGHT]);
+  textHighlightText = new SystemColor(sys_color_rgbs[TEXT_HIGHLIGHT_TEXT]);
+  textInactiveText = new SystemColor(sys_color_rgbs[TEXT_INACTIVE_TEXT]);
+  control = new SystemColor(sys_color_rgbs[CONTROL]);
+  controlText = new SystemColor(sys_color_rgbs[CONTROL_TEXT]);
+  controlHighlight = new SystemColor(sys_color_rgbs[CONTROL_HIGHLIGHT]);
+  controlLtHighlight = new SystemColor(sys_color_rgbs[CONTROL_LT_HIGHLIGHT]);
+  controlShadow = new SystemColor(sys_color_rgbs[CONTROL_SHADOW]);
+  controlDkShadow = new SystemColor(sys_color_rgbs[CONTROL_DK_SHADOW]);
+  scrollbar = new SystemColor(sys_color_rgbs[SCROLLBAR]);
+  info = new SystemColor(sys_color_rgbs[INFO]);
+  infoText = new SystemColor(sys_color_rgbs[INFO_TEXT]);
+}
+
+/*************************************************************************/
+
+/*
+ * Constructors
+ */
+
+private
+SystemColor(int rgb)
+{
+  super(rgb);
+}
+
+/*************************************************************************/
+
+/*
+ * Instance Methods
+ */
+
+/**
+  * Returns the RGB value for this color as an <code>int</code>.  The first
+  * byte is the blue value, the second the green value, the third the
+  * red value and the fourth is set to 0xFF.
+  *
+  * @return The RGB value.
+  */
+public int
+getRGB()
+{
+  // Override only to be spec consistent.
+  return(super.getRGB());
+}
+
+/*************************************************************************/
+
+/**
+  * Returns a string describing this color.
+  *
+  * @return A string describing this color.
+  */
+public String
+toString()
 {
-  /** The background color for the title bar of an active window.  */
-  public static final SystemColor activeCaption
-      = new SystemColor (ACTIVE_CAPTION);
-  /** The border color of an active window.  */
-  public static final SystemColor activeCaptionBorder
-      = new SystemColor (ACTIVE_CAPTION_BORDER);
-  /** The color of text in the title bar of an active window.  */
-  public static final SystemColor activeCaptionText
-      = new SystemColor (ACTIVE_CAPTION_TEXT);
-  /** The background color.  */
-  public static final SystemColor control = new SystemColor (CONTROL);
-  /** The darkest color of an outline.  */
-  public static final SystemColor controlDkShadow
-      = new SystemColor (CONTROL_DK_SHADOW);
-  /** The second brightest color of an outline.  */
-  public static final SystemColor controlHighlight
-      = new SystemColor (CONTROL_HIGHLIGHT);
-  /** The brightest color of an outline.  */
-  public static final SystemColor controlLtHighlight
-      = new SystemColor (CONTROL_LT_HIGHLIGHT);
-  /** The second darkest color of an outline.  */
-  public static final SystemColor controlShadow
-      = new SystemColor (CONTROL_SHADOW);
-  /** The color of text in a label.  */
-  public static final SystemColor controlText = new SystemColor (CONTROL_TEXT);
-  /** The background color of the desktop.  */
-  public static final SystemColor desktop = new SystemColor (DESKTOP);
-  /** The background color for the title bar of an inactive window.  */
-  public static final SystemColor inactiveCaption
-      = new SystemColor (INACTIVE_CAPTION);
-  /** The border color of an inactive window.  */
-  public static final SystemColor inactiveCaptionBorder
-      = new SystemColor (INACTIVE_CAPTION_BORDER);
-  /** The color of text in the title ar of an inactive window.  */
-  public static final SystemColor inactiveCaptionText
-      = new SystemColor (INACTIVE_CAPTION_TEXT);
-  /** The background color of tooltips. */
-  public static final SystemColor info = new SystemColor (INFO);
-  /** The color of text in tooltips.  */
-  public static final SystemColor infoText = new SystemColor (INFO_TEXT);
-  /** The background color of a menu.  */
-  public static final SystemColor menu = new SystemColor (MENU);
-  /** The color of text in a menu.  */
-  public static final SystemColor menuText = new SystemColor (MENU_TEXT);
-  /** The background color of a scrollbar.  */
-  public static final SystemColor scrollbar = new SystemColor (SCROLLBAR);
-  /** The background color of text components.  */
-  public static final SystemColor text = new SystemColor (TEXT);
-  /** The background color of highlighted text.  */
-  public static final SystemColor textHighlight
-      = new SystemColor (TEXT_HIGHLIGHT);
-  /** The color of highlighted text.  */
-  public static final SystemColor textHighlightText
-      = new SystemColor (TEXT_HIGHLIGHT_TEXT);
-  /** The color of inactive text.  */
-  public static final SystemColor textInactiveText
-      = new SystemColor (TEXT_INACTIVE_TEXT);
-  /** The color of text in text components.  */
-  public static final SystemColor textText = new SystemColor (TEXT_TEXT);
-  /** The background color of a window.  */
-  public static final SystemColor window = new SystemColor (WINDOW);
-  /** The border color of a window.  */
-  public static final SystemColor windowBorder
-      = new SystemColor (WINDOW_BORDER);
-  /** The color of text in a window.  */
-  public static final SystemColor windowText = new SystemColor (WINDOW_TEXT);
-
-  public static final int DESKTOP = 0;
-  public static final int ACTIVE_CAPTION = 1;
-  public static final int ACTIVE_CAPTION_TEXT = 2;
-  public static final int ACTIVE_CAPTION_BORDER = 3;
-  public static final int INACTIVE_CAPTION = 4;
-  public static final int INACTIVE_CAPTION_TEXT = 5;
-  public static final int INACTIVE_CAPTION_BORDER = 6;
-  public static final int WINDOW = 7;
-  public static final int WINDOW_BORDER = 8;
-  public static final int WINDOW_TEXT = 9;
-  public static final int MENU = 10;
-  public static final int MENU_TEXT = 11;
-  public static final int TEXT = 12;
-  public static final int TEXT_TEXT = 13;
-  public static final int TEXT_HIGHLIGHT = 14;
-  public static final int TEXT_HIGHLIGHT_TEXT = 15;
-  public static final int TEXT_INACTIVE_TEXT = 16;
-  public static final int CONTROL = 17;
-  public static final int CONTROL_TEXT = 18;
-  public static final int CONTROL_HIGHLIGHT = 19;
-  public static final int CONTROL_LT_HIGHLIGHT = 20;
-  public static final int CONTROL_SHADOW = 21;
-  public static final int CONTROL_DK_SHADOW = 22;
-  public static final int SCROLLBAR = 23;
-  public static final int INFO = 24;
-  public static final int INFO_TEXT = 25;
-
-  public static final int NUM_COLORS = 26;
-
-  private static final int rgbs[] =
-  {
-    0x005c5c,
-    0x000080,
-    0xffffff,
-    0xc0c0c0,
-    0x808080,
-    0xc0c0c0,
-    0xc0c0c0,
-    0xffffff,
-    0x000000,
-    0x000000,
-    0xc0c0c0,
-    0x000000,
-    0xc0c0c0,
-    0x000000,
-    0x000080,
-    0xffffff,
-    0x808080,
-    0xc0c0c0,
-    0x000000,
-    0xffffff,
-    0xe0e0e0,
-    0x808080,
-    0x000000,
-    0xe0e0e0,
-    0xe0e000,
-    0x000000
-  };
-
-  public int getRGB ()
-  {
-    return rgbs[rgba];
-  }
-
-  public String toString ()
-  {
-    return "[" + getClass ().getName () + " " + rgba + "]";
-  }
-
-  private SystemColor (int index)
-  {
-    super (index, true);
-  }
+  return("SystemColor(R=" + getRed() + ",G=" + getGreen() + ",B=" +
+         getBlue() + ")");
 }
+
+} // class SystemColor 
+
Index: java/awt/peer/ButtonPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/ButtonPeer.java,v
retrieving revision 1.1
diff -u -r1.1 ButtonPeer.java
--- ButtonPeer.java	2000/07/12 03:32:07	1.1
+++ ButtonPeer.java	2002/01/22 21:54:08
@@ -1,15 +1,36 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* ButtonPeer.java -- Peer interface for buttons
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface ButtonPeer extends ComponentPeer
 {
-  void setLabel(String label);
-}
+
+public abstract void setLabel(String label);
+
+} // interface ButtonPeer
 
Index: java/awt/peer/CanvasPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/CanvasPeer.java,v
retrieving revision 1.1
diff -u -r1.1 CanvasPeer.java
--- CanvasPeer.java	2000/07/12 03:32:07	1.1
+++ CanvasPeer.java	2002/01/22 21:54:08
@@ -1,13 +1,34 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* CanvasPeer.java -- Peer interface for a canvas
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface CanvasPeer extends ComponentPeer
 {
-}
+
+} // interface CanvasPeer 
+
Index: java/awt/peer/CheckboxMenuItemPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/CheckboxMenuItemPeer.java,v
retrieving revision 1.1
diff -u -r1.1 CheckboxMenuItemPeer.java
--- CheckboxMenuItemPeer.java	2000/07/12 03:32:07	1.1
+++ CheckboxMenuItemPeer.java	2002/01/22 21:54:08
@@ -1,15 +1,36 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* CheckboxMenuItemPeer.java -- Peer interface for checkbox menu items
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface CheckboxMenuItemPeer extends MenuItemPeer
 {
-  void setState(boolean state);
-}
+
+public abstract void setState(boolean state);
+
+} // interface CheckboxMenuItemPeer
 
Index: java/awt/peer/CheckboxPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/CheckboxPeer.java,v
retrieving revision 1.1
diff -u -r1.1 CheckboxPeer.java
--- CheckboxPeer.java	2000/07/12 03:32:07	1.1
+++ CheckboxPeer.java	2002/01/22 21:54:08
@@ -1,16 +1,38 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* CheckboxPeer.java -- Interface for checkbox peer
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface CheckboxPeer extends ComponentPeer
 {
-  void setCheckboxGroup(java.awt.CheckboxGroup group);
-  void setLabel(String label);
-  void setState(boolean state);
-}
+
+public abstract void setCheckboxGroup(java.awt.CheckboxGroup group);
+public abstract void setLabel(String label);
+public abstract void setState(boolean state);
+
+} // interface CheckboxPeer
+
Index: java/awt/peer/ChoicePeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/ChoicePeer.java,v
retrieving revision 1.2
diff -u -r1.2 ChoicePeer.java
--- ChoicePeer.java	2000/10/11 09:47:25	1.2
+++ ChoicePeer.java	2002/01/22 21:54:08
@@ -1,17 +1,39 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* ChoicePeer.java -- Peer for choice box
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface ChoicePeer extends ComponentPeer
 {
-  void add(String item, int index);
-  void remove(int index);
-  void select(int index);
-}
+
+public abstract void add(String item, int index);
+public abstract void addItem(String item, int index);
+public abstract void remove(int index);
+public abstract void select(int index);
+
+} // interface ChoicePeer 
 
Index: java/awt/peer/ComponentPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/ComponentPeer.java,v
retrieving revision 1.7
diff -u -r1.7 ComponentPeer.java
--- ComponentPeer.java	2001/01/03 00:07:13	1.7
+++ ComponentPeer.java	2002/01/22 21:54:08
@@ -1,11 +1,30 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* ComponentPeer.java -- Toplevel component peer
+   Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
 
+
 package java.awt.peer;
 
 import java.awt.*;
@@ -13,10 +32,42 @@
 
 public interface ComponentPeer
 {
-  int checkImage(Image img, int width, int height, ImageObserver o);
-  Image createImage(ImageProducer prod);
-  Image createImage(int width, int height);
-  void dispose();
+  public int checkImage(Image img, int width, int height, 
+			ImageObserver ob);
+  public Image createImage(ImageProducer prod);
+  public Image createImage(int width, int height);
+  public void disable();
+  public void dispose();
+  public void enable();
+  public ColorModel getColorModel();
+  public FontMetrics getFontMetrics(Font f);
+  public Graphics getGraphics();
+  public Point getLocationOnScreen();
+  public Dimension getMinimumSize();
+  public Dimension getPreferredSize();
+  public Toolkit getToolkit();
+  // The JCL says that handleEvent returns boolean.  However, we've
+  // experimentally determined that it in fact actually returns void.
+  public void handleEvent(AWTEvent e);
+  public void hide();
+  public boolean isFocusTraversable();
+  public Dimension minimumSize();
+  public Dimension preferredSize();
+  public void paint(Graphics graphics);
+  public boolean prepareImage(Image img, int width, int height,
+				       ImageObserver ob);
+  public void print(Graphics graphics);
+  public void repaint(long tm, int x, int y, int width, int height);
+  public void requestFocus();
+  public void reshape(int x, int y, int width, int height);
+  public void setBackground(Color color);
+  public void setBounds(int x, int y, int width, int height);
+  public void setCursor(Cursor cursor);
+  public void setEnabled(boolean enabled);
+  public void setFont(Font font);
+  public void setForeground(Color color);
+  public void setVisible(boolean visible);
+  public void show();
 
   /** 
    * Get the graphics configuration of the component. The color model
@@ -24,27 +75,5 @@
    */
   GraphicsConfiguration getGraphicsConfiguration();
 
-  FontMetrics getFontMetrics(Font f);
-  Graphics getGraphics();
-  Point getLocationOnScreen();
-  Dimension getMinimumSize();
-  Dimension getPreferredSize();
-  Toolkit getToolkit();
-  // The JCL says that handleEvent returns boolean.  However, we've
-  // experimentally determined that it in fact actually returns void.
-  void handleEvent(AWTEvent e);
-  boolean isFocusTraversable();
-  void paint(Graphics graphics);
-  boolean prepareImage(Image img, int width, int height, ImageObserver o);
-  void print(Graphics graphics);
-  void repaint(long tm, int x, int y, int width, int height);
-  void requestFocus();
-  void setBackground(Color color);
-  void setBounds(int x, int y, int width, int height);
-  void setCursor(Cursor cursor);
-  void setEnabled(boolean enabled);
-  void setEventMask(long eventMask);
-  void setFont(Font font);
-  void setForeground(Color color);
-  void setVisible(boolean visible);
+  public void setEventMask (long mask);
 }
Index: java/awt/peer/ContainerPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/ContainerPeer.java,v
retrieving revision 1.5
diff -u -r1.5 ContainerPeer.java
--- ContainerPeer.java	2000/10/02 05:14:25	1.5
+++ ContainerPeer.java	2002/01/22 21:54:08
@@ -1,18 +1,41 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* ContainerPeer.java -- Interface for container peers
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 import java.awt.Insets;
 
 public interface ContainerPeer extends ComponentPeer
 {
-  Insets getInsets();
-  void beginValidate();
-  void endValidate();
-}
+
+public abstract Insets insets();
+public abstract Insets getInsets();
+public abstract void beginValidate();
+public abstract void endValidate();
+
+} // interface ContainerPeer 
+
Index: java/awt/peer/DialogPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/DialogPeer.java,v
retrieving revision 1.1
diff -u -r1.1 DialogPeer.java
--- DialogPeer.java	2000/07/12 03:32:07	1.1
+++ DialogPeer.java	2002/01/22 21:54:08
@@ -1,15 +1,37 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* DialogPeer.java -- Interface for dialog box peer
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface DialogPeer extends WindowPeer
 {
-  void setResizable(boolean resizeable);
-  void setTitle(String title);
-}
+
+public abstract void setResizable(boolean resizeable);
+public abstract void setTitle(String title);
+
+} // interface DialogPeer 
+
Index: java/awt/peer/FileDialogPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/FileDialogPeer.java,v
retrieving revision 1.1
diff -u -r1.1 FileDialogPeer.java
--- FileDialogPeer.java	2000/07/12 03:32:07	1.1
+++ FileDialogPeer.java	2002/01/22 21:54:08
@@ -1,18 +1,40 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* FileDialogPeer.java -- Interface for file selection dialog box peer
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 import java.io.FilenameFilter;
 
 public interface FileDialogPeer extends DialogPeer
 {
-  void setDirectory(String dir);
-  void setFile(String file);
-  void setFilenameFilter(FilenameFilter filter);
-}
+
+public abstract void setFile(String file);
+public abstract void setDirectory(String dir);
+public abstract void setFilenameFilter(FilenameFilter ff);
+
+} // interface FileDialogPeer 
+
Index: java/awt/peer/FontPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/FontPeer.java,v
retrieving revision 1.1
diff -u -r1.1 FontPeer.java
--- FontPeer.java	2000/07/12 03:32:07	1.1
+++ FontPeer.java	2002/01/22 21:54:08
@@ -1,13 +1,34 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* FontPeer.java -- Interface for font peers
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface FontPeer
 {
-}
+
+} // interface FontPeer
+
Index: java/awt/peer/FramePeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/FramePeer.java,v
retrieving revision 1.4
diff -u -r1.4 FramePeer.java
--- FramePeer.java	2000/07/12 03:32:07	1.4
+++ FramePeer.java	2002/01/22 21:54:08
@@ -1,11 +1,30 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* FramePeer.java -- Interface for frame peers
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 import java.awt.Image;
@@ -13,8 +32,11 @@
 
 public interface FramePeer extends WindowPeer
 {
-  void setIconImage(Image image);
-  void setMenuBar(MenuBar mb);
-  void setResizable(boolean resizable);
-  void setTitle(String title);
-}
+
+public abstract void setIconImage(Image image);
+public abstract void setMenuBar(MenuBar mb);
+public abstract void setResizable(boolean resizable);
+public abstract void setTitle(String title);
+
+} // interface FramePeer
+
Index: java/awt/peer/LabelPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/LabelPeer.java,v
retrieving revision 1.1
diff -u -r1.1 LabelPeer.java
--- LabelPeer.java	2000/07/12 03:32:07	1.1
+++ LabelPeer.java	2002/01/22 21:54:08
@@ -1,15 +1,37 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* LabelPeer.java -- Interface for simple text lable peer
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface LabelPeer extends ComponentPeer
 {
-  void setAlignment(int alignment);
-  void setText(String text);
-}
+
+public abstract void setAlignment(int alignment);
+public abstract void setText(String text);
+
+} // interface LabelPeer 
+
Index: java/awt/peer/LightweightPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/LightweightPeer.java,v
retrieving revision 1.1
diff -u -r1.1 LightweightPeer.java
--- LightweightPeer.java	2000/07/12 03:32:07	1.1
+++ LightweightPeer.java	2002/01/22 21:54:08
@@ -1,13 +1,34 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* LightweightPeer.java -- Interface for lightweight peers
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface LightweightPeer extends ComponentPeer
 {
-}
+
+} // interface LightweightPeer
+
Index: java/awt/peer/ListPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/ListPeer.java,v
retrieving revision 1.2
diff -u -r1.2 ListPeer.java
--- ListPeer.java	2000/10/11 09:47:25	1.2
+++ ListPeer.java	2002/01/22 21:54:08
@@ -1,23 +1,50 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* ListPeer.java -- Interface for list box peer
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 import java.awt.Dimension;
 
 public interface ListPeer extends ComponentPeer
 {
-  void add(String item, int index);
-  void delItems(int start_index, int end_index);
-  void deselect(int index);
-  int[] getSelectedIndexes();
-  void makeVisible(int index);
-  void removeAll();
-  void select(int index);
-  void setMultipleMode(boolean multipleMode);
-}
+
+public abstract void add(String item, int index);
+public abstract void addItem(String item, int index);
+public abstract void clear();
+public abstract void delItems(int start_index, int end_index);
+public abstract void deselect(int index);
+public abstract int[] getSelectedIndexes();
+public abstract void makeVisible(int index);
+public abstract Dimension minimumSize(int s);
+public abstract Dimension preferredSize(int s);
+public abstract void removeAll();
+public abstract void select(int index);
+public abstract void setMultipleMode(boolean multi);
+public abstract void setMultipleSelections(boolean multi);
+
+} // interface ListPeer 
+
Index: java/awt/peer/MenuBarPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/MenuBarPeer.java,v
retrieving revision 1.2
diff -u -r1.2 MenuBarPeer.java
--- MenuBarPeer.java	2000/10/11 09:47:25	1.2
+++ MenuBarPeer.java	2002/01/22 21:54:08
@@ -1,18 +1,40 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* MenuBarPeer.java -- Interface for menu bar peer
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 import java.awt.Menu;
 
 public interface MenuBarPeer extends MenuComponentPeer
 {
-  void addHelpMenu(Menu menu);
-  void add(Menu menu);
-  void remove(int index);
-}
+
+public abstract void addHelpMenu(Menu menu);
+public abstract void addMenu(Menu menu);
+public abstract void delMenu(int index);
+
+} // interface MenuBarPeer 
+
Index: java/awt/peer/MenuComponentPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/MenuComponentPeer.java,v
retrieving revision 1.1
diff -u -r1.1 MenuComponentPeer.java
--- MenuComponentPeer.java	2000/07/12 03:32:07	1.1
+++ MenuComponentPeer.java	2002/01/22 21:54:08
@@ -1,14 +1,36 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* MenuComponentPeer.java -- 
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface MenuComponentPeer
 {
-  void dispose();
-}
+
+public abstract void dispose();
+
+} // interface MenuComponentPeer
+
Index: java/awt/peer/MenuItemPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/MenuItemPeer.java,v
retrieving revision 1.2
diff -u -r1.2 MenuItemPeer.java
--- MenuItemPeer.java	2000/10/11 09:47:25	1.2
+++ MenuItemPeer.java	2002/01/22 21:54:08
@@ -1,15 +1,39 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* MenuItemPeer.java -- Interface for menu item peers
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface MenuItemPeer extends MenuComponentPeer
 {
-  void setEnabled(boolean enabled);
-  void setLabel(String text);
-}
+
+public abstract void disable();
+public abstract void enable();
+public abstract void setEnabled(boolean enabled);
+public abstract void setLabel(String text);
+
+} // interface MenuItemPeer 
+
Index: java/awt/peer/MenuPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/MenuPeer.java,v
retrieving revision 1.2
diff -u -r1.2 MenuPeer.java
--- MenuPeer.java	2000/10/11 09:47:25	1.2
+++ MenuPeer.java	2002/01/22 21:54:08
@@ -1,18 +1,38 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* MenuPeer.java -- Interface for menu peers
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 import java.awt.MenuItem;
 
 public interface MenuPeer extends MenuItemPeer
 {
-  void add(MenuItem item);
-  void addSeparator();
-  void remove(int index);
+  public abstract void addItem (MenuItem item);
+  public abstract void addSeparator ();
+  public abstract void delItem (int index);
 }
+
Index: java/awt/peer/PanelPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/PanelPeer.java,v
retrieving revision 1.1
diff -u -r1.1 PanelPeer.java
--- PanelPeer.java	2000/07/12 03:32:07	1.1
+++ PanelPeer.java	2002/01/22 21:54:08
@@ -1,13 +1,34 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* PanelPeer.java -- Interface for panel peers
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface PanelPeer extends ContainerPeer
 {
-}
+
+} // interface PanelPeer
+
Index: java/awt/peer/PopupMenuPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/PopupMenuPeer.java,v
retrieving revision 1.1
diff -u -r1.1 PopupMenuPeer.java
--- PopupMenuPeer.java	2000/07/12 03:32:07	1.1
+++ PopupMenuPeer.java	2002/01/22 21:54:08
@@ -1,16 +1,37 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* PopupMenuPeer.java -- Interface for popup menu peers
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
 
-package java.awt.peer;
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
 
-import java.awt.Event;
+package java.awt.peer;
 
+import java.awt.Component;
 public interface PopupMenuPeer extends MenuPeer
 {
-  void show(Event e);
-}
+
+public abstract void show (Component origin, int x, int y);
+
+} // interface PopupMenuPeer
+
Index: java/awt/peer/ScrollPanePeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/ScrollPanePeer.java,v
retrieving revision 1.3
diff -u -r1.3 ScrollPanePeer.java
--- ScrollPanePeer.java	2001/01/03 20:34:44	1.3
+++ ScrollPanePeer.java	2002/01/22 21:54:08
@@ -1,21 +1,43 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* ScrollPanePeer.java -- Interface for scrollable panes
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 import java.awt.Adjustable;
 
 public interface ScrollPanePeer extends ContainerPeer
 {
-  void childResized(int width, int height);
-  int getHScrollbarHeight();
-  int getVScrollbarWidth();
-  void setScrollPosition(int x, int y);
-  void setUnitIncrement(Adjustable adj, int increment);
-  void setValue(Adjustable adj, int value);
-}
+
+public abstract int getHScrollbarHeight();
+public abstract int getVScrollbarWidth();
+public abstract void setScrollPosition(int h, int v);
+public abstract void childResized(int width, int height);
+public abstract void setUnitIncrement(Adjustable item, int inc);
+public abstract void setValue(Adjustable item, int value);
+
+} // interface ScollPanePeer
+
Index: java/awt/peer/ScrollbarPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/ScrollbarPeer.java,v
retrieving revision 1.1
diff -u -r1.1 ScrollbarPeer.java
--- ScrollbarPeer.java	2000/07/12 03:32:07	1.1
+++ ScrollbarPeer.java	2002/01/22 21:54:08
@@ -1,16 +1,38 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* ScrollbarPeer.java -- Interface for scrollbar peers
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface ScrollbarPeer extends ComponentPeer
 {
-  void setLineIncrement(int increment);
-  void setPageIncrement(int increment);
-  void setValues(int value, int visible, int minimum, int maximum);
-}
+
+public abstract void setLineIncrement(int inc);
+public abstract void setPageIncrement(int inc);
+public abstract void setValues(int value, int visible, int min, int max);
+
+} // interface ScrollbarPeer 
+
Index: java/awt/peer/TextAreaPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/TextAreaPeer.java,v
retrieving revision 1.2
diff -u -r1.2 TextAreaPeer.java
--- TextAreaPeer.java	2000/10/11 09:47:25	1.2
+++ TextAreaPeer.java	2002/01/22 21:54:08
@@ -1,17 +1,44 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* TextAreaPeer.java -- Interface for text area peers
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 import java.awt.Dimension;
 
 public interface TextAreaPeer extends TextComponentPeer
 {
-  void insert(String text, int pos);
-  void replaceRange(String text, int start, int end);
-}
+
+public abstract void insert(String text, int pos);
+public abstract void insertText(String text, int pos);
+public abstract Dimension minimumSize(int rows, int cols);
+public abstract Dimension getMinimumSize(int rows, int cols);
+public abstract Dimension preferredSize(int rows, int cols);
+public abstract Dimension getPreferredSize(int rows, int cols);
+public abstract void replaceRange(String text, int start_pos, int end_pos);
+public abstract void replaceText(String text, int start_pos, int end_pos);
+
+} // interface TextAreaPeer
Index: java/awt/peer/TextComponentPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/TextComponentPeer.java,v
retrieving revision 1.1
diff -u -r1.1 TextComponentPeer.java
--- TextComponentPeer.java	2000/07/12 03:32:07	1.1
+++ TextComponentPeer.java	2002/01/22 21:54:08
@@ -1,21 +1,43 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* TextComponentPeer.java -- Superclass interface for text components
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface TextComponentPeer extends ComponentPeer
 {
-  int getCaretPosition();
-  int getSelectionEnd();
-  int getSelectionStart();
-  String getText();
-  void select(int start, int end);
-  void setCaretPosition(int pos);
-  void setEditable(boolean editable);
-  void setText(String text);
-}
+
+public abstract int getSelectionEnd();
+public abstract int getSelectionStart();
+public abstract String getText();
+public abstract void setText(String text);
+public abstract void select(int start_pos, int end_pos);
+public abstract void setEditable(boolean editable);
+public abstract int getCaretPosition();
+public abstract void setCaretPosition(int pos);
+
+} // interface TextComponentPeer 
+
Index: java/awt/peer/TextFieldPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/TextFieldPeer.java,v
retrieving revision 1.2
diff -u -r1.2 TextFieldPeer.java
--- TextFieldPeer.java	2000/10/11 09:47:25	1.2
+++ TextFieldPeer.java	2002/01/22 21:54:08
@@ -1,16 +1,43 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* TextFieldPeer.java -- Interface for text field peers
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 import java.awt.Dimension;
 
 public interface TextFieldPeer extends TextComponentPeer
 {
-  void setEchoChar(char echo);
-}
+
+public abstract Dimension minimumSize(int len);
+public abstract Dimension preferredSize(int len);
+public abstract Dimension getMinimumSize(int len);
+public abstract Dimension getPreferredSize(int len);
+public abstract void setEchoChar(char echo_char);
+public abstract void setEchoCharacter(char echo_char);
+
+} // interface TextFieldPeer 
+
Index: java/awt/peer/WindowPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/peer/WindowPeer.java,v
retrieving revision 1.4
diff -u -r1.4 WindowPeer.java
--- WindowPeer.java	2000/07/12 03:32:07	1.4
+++ WindowPeer.java	2002/01/22 21:54:08
@@ -1,15 +1,37 @@
-/* Copyright (C) 2000  Free Software Foundation
+/* WindowPeer.java -- Interface for window peers
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
-   This file is part of libgcj.
+This file is part of GNU Classpath.
 
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
+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.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
 package java.awt.peer;
 
 public interface WindowPeer extends ContainerPeer
 {
-  void toBack();
-  void toFront();
-}
+
+public abstract void toBack();
+public abstract void toFront();
+
+} // interface WindowPeer 
+


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]