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: classpath / libgcj comparison


I'm checking this in.

Another classpath comparison update.

Tom

Index: ChangeLog
from  Tom Tromey  <tromey@redhat.com>
	* libgcj-classpath-compare.html: Rebuilt.

Index: libgcj-classpath-compare.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/java/libgcj-classpath-compare.html,v
retrieving revision 1.26
diff -u -r1.26 libgcj-classpath-compare.html
--- libgcj-classpath-compare.html 2002/01/13 22:11:18 1.26
+++ libgcj-classpath-compare.html 2002/01/16 04:25:56
@@ -9,7 +9,7 @@
 cvs Classpath.  It was generated using the <a
 href="scripts/gen-classpath-compare"><code>gen-classpath-compare</code></a>
 script on
-2002-01-13.
+2002-01-15.
 This table intentionally omits certain classes which are not of
 interest.  If the third column shows a "Diff" link, then that means
 the script believes that the class has been merged, but a difference
@@ -20,13 +20,10 @@
 <table border=1 width="100%">
 <tr><th>Class</th> <th>libgcj</th> <th>Classpath</th> <th>Merge Status</th> </tr>
 <tr> <td>java.awt.AWTError</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.AWTEvent</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.AWTEventMulticaster</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.AWTException</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.AWTPermission</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.ActiveEvent</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.Adjustable</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.BorderLayout</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.Button</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.Canvas</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.CardLayout</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
@@ -35,24 +32,13 @@
 <tr> <td>java.awt.CheckboxMenuItem</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.Choice</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.Color</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.Component</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#aaaaee"><a href="compare/java.awt.Component.diff">Diff</a></td> </tr>
-<tr> <td>java.awt.ComponentOrientation</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.Container</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.Cursor</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.Dialog</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.Dimension</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.Event</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.EventDispatchThread</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.EventDispatcher</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.EventQueue</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.FileDialog</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.FlowLayout</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.Font</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.FontMetrics</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.Frame</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.Graphics</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.Graphics2D</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.GraphicsConfiguration</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.GridBagConstraints</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.GridBagLayout</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.GridBagLayoutInfo</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
@@ -74,7 +60,6 @@
 <tr> <td>java.awt.MenuContainer</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.MenuItem</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.MenuShortcut</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.Paint</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.PaintContext</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.Panel</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.Point</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
@@ -82,8 +67,6 @@
 <tr> <td>java.awt.PopupMenu</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.PrintGraphics</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.PrintJob</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.Rectangle</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.RenderingHints</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.ScrollPane</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.ScrollPaneAdjustable</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.Scrollbar</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
@@ -93,11 +76,6 @@
 <tr> <td>java.awt.TextComponent</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.TextField</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.Toolkit</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.Transparency</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.Window</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.color.ColorSpace</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.color.ICC_ColorSpace</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.color.ICC_Profile</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.datatransfer.Clipboard</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.datatransfer.ClipboardOwner</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.datatransfer.DataFlavor</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
@@ -126,10 +104,6 @@
 <tr> <td>java.awt.event.FocusAdapter</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.event.FocusEvent</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.event.FocusListener</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.event.HierarchyBoundsAdapter</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.event.HierarchyBoundsListener</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.event.HierarchyEvent</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.event.HierarchyListener</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.event.InputEvent</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.event.InputMethodEvent</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.event.InputMethodListener</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
@@ -151,30 +125,10 @@
 <tr> <td>java.awt.event.WindowEvent</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.event.WindowListener</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.font.TextHitInfo</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.geom.AffineTransform</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.geom.Arc2D</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.geom.Area</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.geom.Dimension2D</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.geom.Ellipse2D</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.geom.IllegalPathStateException</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.geom.Line2D</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.geom.NoninvertibleTransformException</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.geom.PathIterator</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.geom.Point2D</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.geom.Rectangle2D</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.geom.RectangularShape</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.geom.RoundRectangle2D</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.image.AreaAveragingScaleFilter</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.BufferedImage</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.ColorModel</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.ComponentColorModel</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.ComponentSampleModel</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.image.CropImageFilter</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.DataBuffer</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.DataBufferByte</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.DataBufferInt</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.DataBufferUShort</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.DirectColorModel</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.image.FilteredImageSource</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.image.ImageConsumer</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.image.ImageFilter</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
@@ -182,15 +136,9 @@
 <tr> <td>java.awt.image.ImageProducer</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.image.IndexColorModel</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.image.MemoryImageSource</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.PackedColorModel</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.image.PixelGrabber</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.image.RGBImageFilter</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.Raster</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.RasterOp</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.image.ReplicateScaleFilter</td> <td bgcolor="#eeeeaa">No</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.SampleModel</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.SinglePixelPackedSampleModel</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
-<tr> <td>java.awt.image.WritableRaster</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.peer.ButtonPeer</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.peer.CanvasPeer</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.awt.peer.CheckboxMenuItemPeer</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
@@ -244,7 +192,9 @@
 <tr> <td>java.lang.Character</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.lang.Class</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.lang.ClassLoader</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
+<tr> <td>java.lang.Double</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#aaaaee"><a href="compare/java.lang.Double.diff">Diff</a></td> </tr>
 <tr> <td>java.lang.EcosProcess</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> <td bgcolor="#eeeeaa">No</td> </tr>
+<tr> <td>java.lang.Float</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#aaaaee"><a href="compare/java.lang.Float.diff">Diff</a></td> </tr>
 <tr> <td>java.lang.Math</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.lang.Object</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#eeeeaa">No</td> </tr>
 <tr> <td>java.lang.Package</td> <td>Yes</td> <td>Yes</td> <td bgcolor="#aaaaee"><a href="compare/java.lang.Package.diff">Diff</a></td> </tr>
Index: compare/java.awt.Component.diff
===================================================================
RCS file: java.awt.Component.diff
diff -N java.awt.Component.diff
--- compare/java.awt.Component.diff Tue Jan 15 20:26:02 2002
+++ /dev/null	Tue May  5 13:32:27 1998
@@ -1,3769 +0,0 @@
---- /home/tromey/gnu/egcs/classpath/classpath/java/awt/Component.java	Sun Jan 13 11:32:39 2002
-+++ java/awt/Component.java	Fri Apr 20 21:21:49 2001
-@@ -1,2273 +1,1615 @@
--/* Component.java -- Superclass of all AWT components
--   Copyright (C) 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 2001  Free Software Foundation
- 
--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. */
-+   This file is part of libgcj.
- 
-+This software is copyrighted work licensed under the terms of the
-+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-+details.  */
- 
- package java.awt;
--
- import java.awt.event.*;
- import java.awt.image.*;
--import java.awt.peer.ComponentPeer;
- import java.io.PrintStream;
- import java.io.PrintWriter;
-+import java.lang.reflect.*;
-+import java.util.EventListener;
- import java.util.Locale;
-+import java.util.ResourceBundle;
-+import java.util.Vector;
-+import java.awt.peer.ComponentPeer;
-+import java.awt.peer.LightweightPeer;
-+import java.beans.PropertyChangeSupport;
-+import java.beans.PropertyChangeListener;
-+// import javax.accessibility.AccessibleContext;
-+
-+/**
-+  * The root of all evil.
-+  *
-+  * Status: Incomplete. The event dispatch mechanism is implemented. All 
-+  * other methods defined in the J2SE 1.3 API javadoc exist, but are mostly 
-+  * incomplete or only stubs; except for methods relating to the Drag and Drop, 
-+  * Input Method, and Accessibility frameworks: These methods are present but 
-+  * commented out.
-+  */
-+public abstract class Component implements ImageObserver, MenuContainer, 
-+					   java.io.Serializable
-+{
-+
-+  /* Constants for use with getAlignmentX()/getAlignmentY(). */
-+  public static final float BOTTOM_ALIGNMENT = 1.0f,
-+			    CENTER_ALIGNMENT = 0.5f,
-+			    LEFT_ALIGNMENT   = 0.0f,
-+			    RIGHT_ALIGNMENT  = 1.0f,
-+			    TOP_ALIGNMENT    = 0.0f;
-+
-+  /* Make the treelock a String so that it can easily be identified
-+     in debug dumps. We clone the String in order to avoid a conflict in 
-+     the unlikely event that some other package uses exactly the same string
-+     as a lock object. */
-+  static Object treeLock = new String("AWT_TREE_LOCK");
-+
-+  /* Serialized fields from the serialization spec. */
-+  // FIXME: Default values?
-+  int x;
-+  int y;
-+  int width;
-+  int height;
-+  Color foreground;
-+  Color background;
-+  Font font;
-+  Font peerFont;
-+  Cursor cursor;
-+  Locale locale;
-+  boolean visible = true; // default (except for Window)
-+  boolean enabled = true;
-+  boolean valid;
-+  boolean hasFocus;
-+  //DropTarget dropTarget;
-+  Vector popups;
-+  String name;
-+  boolean nameExplicitlySet;
-+  Dimension minSize;
-+  Dimension prefSize;
-+  boolean newEventsOnly;  
-+  long eventMask = AWTEvent.PAINT_EVENT_MASK;
-+  PropertyChangeSupport changeSupport;
-+  boolean isPacked;
-+  int componentSerializedDataVersion;
-+  /* AccessibleContext accessibleContext; */
-+
-+  /* Anything else is non-serializable, and should be declared "transient". */
-+  transient Container parent;
-+  transient java.awt.peer.ComponentPeer peer;
-+
-+  transient ComponentListener componentListener;
-+  transient FocusListener focusListener;
-+  transient KeyListener keyListener;
-+  transient MouseListener mouseListener;
-+  transient MouseMotionListener mouseMotionListener;
-+  transient InputMethodListener inputMethodListener;
-+  transient HierarchyListener hierarchyListener;
-+  transient HierarchyBoundsListener hierarchyBoundsListener;
- 
--// FIXME: Java 1.0 event model unimplemented
--
--// FIXME: This isn't even close to serialization compatible with the JDK.
--
--/**
--  * This is the superclass of all non-menu AWT widgets. 
--  *
--  * @author Aaron M. Renn (arenn@urbanophile.com)
--  */
--public abstract class Component implements ImageObserver, MenuContainer,
--                                           java.io.Serializable
--{
-+  transient ComponentOrientation orientation = ComponentOrientation.UNKNOWN;
- 
--/*
-- * Static Variables
-- */
-+  protected Component()
-+  {
-+  }
- 
--/**
--  * Constant returned by the <code>getAlignmentY</code> method to indicate
--  * that the component wishes to be aligned to the bottom relative to
--  * other components.
-+  public String getName()
-+  {
-+    if (name == null && !nameExplicitlySet)
-+      name = generateName();
-+    return name;
-+  }
-+  
-+  public void setName(String name)
-+  {
-+    nameExplicitlySet = true;
-+    this.name = name;
-+  }
-+  
-+  /** Subclasses should override this to return unique component names like 
-+    * "menuitem0".
-+    */
-+  String generateName()
-+  {
-+    // Component is abstract.
-+    return null;
-+  }
-+  
-+  public Container getParent()
-+  {
-+    return parent;  
-+  }
-+  
-+  /** @deprecated */
-+  // However, Classpath's Gtk peers rely on it.
-+  public java.awt.peer.ComponentPeer getPeer()
-+  {
-+    return peer;
-+  }
-+  
-+  // FIXME: java.awt.dnd classes not yet implemented
-+  /*
-+  public void setDropTarget(DropTarget dt)
-+  {
-+    this.dropTarget = dt;
-+  }
-+  
-+  public DropTarget getDropTarget()
-+  {
-+    return dropTarget;
-+  }
-   */
--public static final float BOTTOM_ALIGNMENT = (float)1.0;
-+  
-+  /** @since 1.3 */
-+  public GraphicsConfiguration getGraphicsConfiguration()
-+  {
-+    return getGraphicsConfigurationImpl();
-+  }
- 
--/**
--  * Constant returned by the <code>getAlignmentY</code> and 
--  * <code>getAlignmentX</code> methods to indicate
--  * that the component wishes to be aligned to the center relative to
--  * other components.
--  */
--public static final float CENTER_ALIGNMENT = (float)0.5;
-+  /** Implementation method that allows classes such as Canvas and
-+      Window to override the graphics configuration without violating
-+      the published API. */
-+  GraphicsConfiguration getGraphicsConfigurationImpl()
-+  {
-+    if (peer != null)
-+      {
-+	GraphicsConfiguration config = peer.getGraphicsConfiguration();
-+	if (config != null)
-+	  return config;
-+      }
- 
--/**
--  * Constant returned by the <code>getAlignmentY</code> method to indicate
--  * that the component wishes to be aligned to the top relative to
--  * other components.
--  */
--public static final float TOP_ALIGNMENT = (float)0.0;
-+    if (parent != null)
-+      return parent.getGraphicsConfiguration();
- 
--/**
--  * Constant returned by the <code>getAlignmentX</code> method to indicate
--  * that the component wishes to be aligned to the right relative to
--  * other components.
--  */
--public static final float RIGHT_ALIGNMENT = (float)1.0;
-+    return null;
-+  }
- 
--/**
--  * Constant returned by the <code>getAlignmentX</code> method to indicate
--  * that the component wishes to be aligned to the left relative to
--  * other components.
--  */
--public static final float LEFT_ALIGNMENT = (float)0.0;
-+  public final Object getTreeLock()
-+  {
-+    return treeLock;
-+  }
- 
--/*************************************************************************/
-+  public Toolkit getToolkit()
-+  {
-+    if (peer != null)
-+      {
-+	Toolkit tk = peer.getToolkit();
-+	if (tk != null)
-+	  return tk;
-+      }
-+    if (parent != null)
-+      return parent.getToolkit ();
-+    return Toolkit.getDefaultToolkit ();
-+  }
- 
--/*
-- * Instance Variables
-- */
-+  public boolean isValid()
-+  {
-+    return valid;
-+  }
-+  
-+  /** @since 1.2 */
-+  public boolean isDisplayable()
-+  {
-+    if (parent != null)
-+      return parent.isDisplayable();
-+    return false;
-+  }
-+  
-+  public boolean isVisible()
-+  {
-+    return visible;
-+  }
-+  
-+  public boolean isShowing()
-+  {
-+    if (! visible || peer == null)
-+      return false;
- 
--// The background color of this component.
--private Color background_color;
-+    return parent == null ? true : parent.isShowing ();
-+  }
-+  
-+  public boolean isEnabled()
-+  {
-+    return enabled;
-+  }
-+  
-+  public void setEnabled(boolean b)
-+  {
-+    this.enabled = b;
-+    if (peer != null)
-+      peer.setEnabled(b);
-+  }
-+  
-+  /** @deprecated */
-+  public void enable()
-+  {
-+    setEnabled(true);
-+  }
-+  
-+  /** @deprecated */
-+  public void enable(boolean b)
-+  {
-+    setEnabled(b);
-+  }
-+  
-+  /** @deprecated */
-+  public void disable()
-+  {
-+    setEnabled(false);
-+  }
-+  
-+  public boolean isDoubleBuffered()
-+  {
-+    return false;
-+  }
-+  
-+  /** @since 1.2 */
-+  public void enableInputMethods(boolean enable)
-+  {
-+    // FIXME
-+  }
-+  
-+  /** @specnote  Inspection by subclassing shows that Sun's implementation
-+                 calls show(boolean) which then calls show() or hide(). It is
-+		 the show() method that is overriden in subclasses like Window.
-+		 We do the same to preserve compatibility for subclasses. */
-+  public void setVisible(boolean b)
-+  {
-+    show (b);
-+  }
-+  
-+  /** @deprecated */
-+  public void show()
-+  {
-+    if (peer != null)
-+      peer.setVisible(true);
-+    this.visible = true;
-+  }
-+  
-+  /** @deprecated */
-+  public void show(boolean b)
-+  {
-+    if (b)
-+      show();
-+    else
-+      hide();
-+  }
-+  
-+  /** @deprecated */
-+  public void hide()
-+  {
-+    if (peer != null)
-+      peer.setVisible(false);
-+    this.visible = false;
-+  }
-+  
-+  public Color getForeground()
-+  {
-+    if (foreground != null)
-+      return foreground;
-+    if (parent != null)
-+      return parent.getForeground();
-+    return null;
-+  }
-+  
-+  public void setForeground(Color c)
-+  {
-+    if (peer != null)
-+      peer.setForeground(c);
-+    this.foreground = c;
-+  }
- 
--// The foreground color of this component.
--private Color foreground_color;
-+  /** @return the background color of the component. null may be
-+      returned instead of the actual background color, if this
-+      method is called before the component is added to the
-+      component hierarchy. */
-+  public Color getBackground()
-+  {
-+    if (background != null)
-+      return background;
-+    if (parent != null)
-+      return parent.getBackground();
-+    return null;
-+  }
-+  
-+  public void setBackground(Color c)
-+  {
-+    if (peer != null)
-+      peer.setBackground(c);
-+    this.background = c;
-+  }
-+  
-+  public Font getFont()
-+  {
-+    if (font != null)
-+      return font;
-+    if (parent != null)
-+      return parent.getFont();
-+    return null;
-+  }
-+  
-+  public void setFont(Font f)
-+  {
-+    if (peer != null)
-+      peer.setFont(f);
-+    this.font = f;
-+  }
- 
--// The bounding rectangle of this component.
--private Rectangle bounding_rectangle = new Rectangle(0, 0, 100, 100);
-+  public Locale getLocale() throws IllegalComponentStateException
-+  {
-+    if (locale != null)
-+      return locale;
-+    if (parent == null)
-+      throw new IllegalComponentStateException
-+        ("Component has no parent: Can not determine Locale");
-+    return parent.getLocale();
-+  }
-+  
-+  public void setLocale(Locale l)  
-+  {
-+    this.locale = l;
-+    
-+    /* new writing/layout direction perhaps, or make more/less
-+       room for localized text labels */
-+    invalidate();
-+  }
-+  
-+  public ColorModel getColorModel()
-+  {
-+    GraphicsConfiguration config = getGraphicsConfiguration();
- 
--// The cursor for this component
--private Cursor cursor;
-+    if (config != null)
-+      return config.getColorModel();
- 
--// The font for this component
--private Font font;
-+    return getToolkit().getColorModel();    
-+  }
- 
--// The locale for this component
--private Locale locale;
-+  public Point getLocation()
-+  {
-+    return new Point(x, y);
-+  }
- 
--// The name of the component
--private String name;
-+  public Point getLocationOnScreen()
-+  {
-+    if (! isShowing ())
-+      throw new IllegalComponentStateException ("component not showing");
- 
--// The parent of this component
--private Container parent;
-+    // We know peer != null here.
-+    return peer.getLocationOnScreen ();
-+  }
- 
--// The native peer for this componet
--ComponentPeer peer;
-+  /** @deprecated Use getLocation() instead. */
-+  public Point location()
-+  {
-+    return getLocation();
-+  }
- 
--// Indicates whether or not this component is valid.
--private boolean valid;
-+  public void setLocation (int x, int y)
-+  {
-+    if ((this.x == x) && (this.y == y))
-+      return;
-+    
-+    invalidate();
-+    
-+    this.x = x;
-+    this.y = y;
-+    if (peer != null)
-+      peer.setBounds(x, y, width, height);
-+  }
- 
--// Indicates whether or not this component is visible
--private boolean visible = true;
-+  /** @deprecated */
-+  public void move(int x, int y)
-+  {
-+    setLocation(x,y);
-+  }
-+  
-+  public void setLocation(Point p)
-+  {
-+    setLocation(p.x, p.y);
-+  }
-+  
-+  public Dimension getSize()
-+  {
-+    return new Dimension(width, height);
-+  }
-+  
-+  /** @deprecated */
-+  public Dimension size()
-+  {
-+    return getSize();
-+  }
-+  
-+  public void setSize(int width, int height)
-+  {
-+    if ((this.width == width) && (this.height == height))
-+      return;
-+
-+    invalidate();
-+
-+    this.width = width;
-+    this.height = height;
-+    if (peer != null)
-+      peer.setBounds(x, y, width, height);
-+  }
-+  
-+  /** @deprecated */
-+  public void resize(int width, int height)
-+  {
-+    setSize(width, height);
-+  }
-+  
-+  public void setSize(Dimension d)
-+  {
-+    setSize(d.width, d.height);
-+  }
- 
--// Indicates whether or not this component is enabled.
--private boolean enabled = true;
-+  /** @deprecated */
-+  public void resize(Dimension d)
-+  {
-+    setSize(d.width, d.height);
-+  }
- 
--// The toolkit for this componet
--private Toolkit toolkit = Toolkit.getDefaultToolkit();
-+  public Rectangle getBounds()
-+  {
-+    return new Rectangle (x, y, width, height);
-+  }
- 
--// The synchronization locking object for this component
--private Object tree_lock = this;
-+  /** @deprecated */
-+  public Rectangle bounds()
-+  {
-+    return getBounds();
-+  }
-+  
-+  public void setBounds(int x, int y, int w, int h)
-+  {
-+    if (this.x == x
-+	&& this.y == y
-+	&& this.width == w
-+	&& this.height == h)
-+      return;
-+
-+    invalidate();
-+
-+    this.x = x;
-+    this.y = y;
-+    this.width = w;
-+    this.height = h;
- 
--// The mask for all events that are enabled for this component
--private long enabled_events = 0L;
-+    if (peer != null)
-+      peer.setBounds(x, y, w, h);
-+  }
-+  
-+  /** @deprecated */
-+  public void reshape(int x, int y, int width, int height)
-+  {
-+    setBounds(x, y, width, height);
-+  }
-+  
-+  public void setBounds(Rectangle r)
-+  { 
-+    setBounds(r.x, r.y, r.width, r.height);
-+  }
-+  
-+  /** @since 1.2 */
-+  public int getX()
-+  {
-+    return x;
-+  }
-+  
-+  /** @since 1.2 */
-+  public int getY()
-+  {
-+    return y;
-+  }
-+  
-+  /** @since 1.2 */
-+  public int getWidth()
-+  {
-+    return width;
-+  }
-+  
-+  /** @since 1.2 */
-+  public int getHeight()
-+  {
-+    return height;
-+  }
-+  
-+  public Rectangle getBounds(Rectangle r)
-+  {
-+    r.x = this.x;
-+    r.y = this.y;
-+    r.width = this.width;
-+    r.height = this.height;
-+    return r;
-+  }
-+  
-+  public Dimension getSize(Dimension d)
-+  {
-+    d.width = this.width;
-+    d.height = this.height;
-+    return d;
-+  }
-+  
-+  public Point getLocation(Point p)
-+  {
-+    p.x = x;
-+    p.y = y;
-+    return p;
-+  }
-+  
-+  /** @since 1.2 */
-+  public boolean isOpaque()
-+  {
-+    return !isLightweight();
-+  }
-+  
-+  /** 
-+   * Return whether the component is lightweight.
-+   *
-+   * @return true if component has a peer and and the peer is lightweight.
-+   *
-+   * @since 1.2
-+   */  
-+  public boolean isLightweight()
-+  {
-+    return (peer != null) && (peer instanceof LightweightPeer);
-+  }
-+  
-+  public Dimension getPreferredSize()
-+  {
-+    if (peer == null)
-+      return new Dimension(width, height);
-+    else
-+      return peer.getPreferredSize();
-+  }
- 
--// Listeners for dispatching events
--private ComponentListener component_listener;
--private FocusListener focus_listener;
--private KeyListener key_listener;
--private MouseListener mouse_listener;
--private MouseMotionListener mouse_motion_listener;
-+  /** @deprecated */
-+  public Dimension preferredSize()
-+  {
-+    return getPreferredSize();
-+  }
-+  
-+  public Dimension getMinimumSize()
-+  {
-+    if (peer == null)
-+      return new Dimension(width, height);
-+    else
-+      return peer.getMinimumSize();
-+  }
- 
--/*************************************************************************/
-+  /** @deprecated */
-+  public Dimension minimumSize()
-+  {
-+    return getMinimumSize();
-+  }
- 
--/*
-- * Constructors
-- */
-+  public Dimension getMaximumSize()
-+  {
-+    return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
-+  }
- 
--/**
--  * Default constructor for subclasses.
--  */
--protected
--Component()
--{
--}
-+  public float getAlignmentX()
-+  {
-+    return CENTER_ALIGNMENT;
-+  }
- 
--/*************************************************************************/
-+  public float getAlignmentY()
-+  {
-+    return CENTER_ALIGNMENT;
-+  }
- 
--/*
-- * Instance Methods
-- */
-+  public void doLayout()
-+  {
-+    // nothing to do unless we're a container
-+  }
-+  
-+  /** @deprecated */
-+  public void layout()
-+  {
-+    doLayout();
-+  }
-+  
-+  public void validate()
-+  {
-+    // nothing to do unless we're a container
-+  }
-+  
-+  public void invalidate()
-+  {
-+    valid = false;
- 
--/**
--  * Returns the preferred horizontal alignment of this component.  The
--  * value returned will be one of the constants defined in this class.
--  *
--  * @return The preferred horizontal alignment of this component.
--  */
--public float
--getAlignmentX()
--{
--  return(CENTER_ALIGNMENT);
--}
-+    if ((parent != null) && parent.valid)
-+      parent.invalidate ();
-+  }
- 
--/*************************************************************************/
-+  public Graphics getGraphics()
-+  {
-+    if (peer != null)
-+      {
-+	Graphics gfx = peer.getGraphics();
-+	if (gfx != null)
-+	  return gfx;
-+      
-+	// create graphics for lightweight:
-+	Container parent = getParent();
-+	if (parent != null)
-+	  {
-+	    gfx = parent.getGraphics();
-+	    Rectangle bounds = getBounds();
-+	    gfx.setClip(bounds);
-+	    gfx.translate(bounds.x, bounds.y);
-+	    return gfx;
-+	  }
-+      }
-+    return null;
-+  }
-+  
-+  public FontMetrics getFontMetrics(Font font)
-+  {
-+    if (peer == null)
-+      return getToolkit().getFontMetrics(font);
-+    return peer.getFontMetrics (font);
-+  }
- 
--/**
--  * Returns the preferred vertical alignment of this component.  The
--  * value returned will be one of the constants defined in this class.
--  *
--  * @return The preferred vertical alignment of this component.
--  */
--public float
--getAlignmentY()
--{
--  return(CENTER_ALIGNMENT);
--}
-+  public void setCursor(Cursor cursor)
-+  {
-+    this.cursor = cursor;
-+    if (peer != null)
-+      peer.setCursor (cursor);
-+  }
- 
--/*************************************************************************/
-+  public Cursor getCursor()
-+  {
-+    return this.cursor;
-+  }
-+  
-+  public void paint(Graphics g)
-+  {  
-+  }
-+  
-+  public void update(Graphics g)
-+  {
-+    paint(g);
-+  }
-+  
-+  public void paintAll(Graphics g)
-+  {    
-+    if (!visible)
-+      return;
-+	
-+    if (peer != null)
-+      peer.paint(g);
-+    paint(g);
-+  }
-+  
-+  public void repaint()
-+  {
-+    repaint(0, 0, 0, getWidth(), getHeight());
-+  }
-+  
-+  public void repaint(long tm)
-+  {
-+    repaint(tm, 0, 0, getWidth(), getHeight());
-+  }
-+  
-+  public void repaint(int x, int y, int width, int height)
-+  {
-+    repaint(0, x, y, width, height);
-+  }
-+  
-+  public void repaint(long tm, int x, int y, int width, int height)
-+  {    
-+    // Handle lightweight repainting by forwarding to native parent
-+    if (isLightweight() && (parent != null))
-+      {
-+	if (parent != null)
-+	  parent.repaint(tm, x+getX(), y+getY(), width, height);
-+	return;
-+      }
- 
--/**
--  * Returns this component's background color.
--  *
--  * @return The component's background color.
--  */
--public Color
--getBackground()
--{
--  return(background_color);
--}
-+    if (peer != null)
-+      peer.repaint(tm, x, y, width, height);
-+  }
- 
--/*************************************************************************/
-+  public void print(Graphics g)
-+  {
-+    paint(g);
-+  }
- 
--/**
--  * Sets this component's background color to the specified color.
--  *
--  * @param background_color The new background color
--  */
--public void
--setBackground(Color background_color)
--{
--  this.background_color = background_color;
--  getPeer().setBackground(background_color);
--}
-+  public void printAll(Graphics g)
-+  {
-+    paintAll(g);
-+  }
- 
--/*************************************************************************/
-+  public boolean imageUpdate (Image img, int infoflags, int x, int y,
-+			      int w, int h)
-+  {
-+    // FIXME
-+    return false;
-+  }
- 
--/**
--  * Returns this component's foreground color.
--  *
--  * @return This component's foreground color.
--  */
--public Color
--getForeground()
--{
--  return(foreground_color);
--}
-+  public Image createImage(ImageProducer producer)
-+  {
-+    // FIXME
-+    return null;
-+  }
- 
--/*************************************************************************/
-+  public Image createImage(int width, int height)
-+  {
-+    return getGraphicsConfiguration().createCompatibleImage(width, height);
-+  }
- 
--/**
--  * Sets this component's foreground color to the specified color.
--  *
--  * @param foreground_color The new foreground color.
--  */
--public void
--setForeground(Color foreground_color)
--{
--  this.foreground_color = foreground_color;
--  getPeer().setForeground(foreground_color);
--}
-+  public boolean prepareImage(Image image, ImageObserver observer)
-+  {
-+    // FIXME
-+    return false;
-+  }
- 
--/*************************************************************************/
-+  public boolean prepareImage(Image image, int width, int height, ImageObserver observer)
-+  {
-+    // FIXME
-+    return false;
-+  }
- 
--/**
--  * Returns a bounding rectangle for this component.  Note that the
--  * returned rectange is relative to this component's parent, not to
--  * the screen.
--  *
--  * @return The bounding rectangle for this component.
--  */
--public Rectangle
--getBounds()
--{
--  return(bounding_rectangle);
--}
-+  public int checkImage(Image image, ImageObserver observer)
-+  {
-+    // FIXME
-+    return 0;
-+  }
- 
--/*************************************************************************/
-+  public int checkImage (Image image, int width, int height, ImageObserver observer)
-+  {
-+    if (peer != null)
-+      return peer.checkImage (image, width, height, observer);
-+    return getToolkit ().checkImage (image, width, height, observer);
-+  }
- 
--/**
--  * Returns a bounding rectangle for this component.  Note that the
--  * returned rectange is relative to this component's parent, not to
--  * the screen.
--  *
--  * @return The bounding rectangle for this component.
--  *
--  * @deprecated Deprecated in favor of <code>getBounds()</code>.
--  */
--public Rectangle
--bounds()
--{
--  return(bounding_rectangle);
--}
-+  public boolean contains (int x, int y)
-+  {
-+    return (x >= 0) && (y >= 0) && (x < width) && (y < height);
-+  }
- 
--/*************************************************************************/
-+  /** @deprecated */
-+  public boolean inside(int x, int y)
-+  {
-+    return contains(x,y);
-+  }
- 
--/**
--  * Sets the bounding rectangle for this component to the specified
--  * rectangle.  Note that these coordinates are relative to the parent,
--  * not to the screen.
--  *
--  * @param bounding_rectangle The new bounding rectangle.
--  */
--public void
--setBounds(Rectangle bounding_rectangle)
--{
--  setBounds(bounding_rectangle.x, bounding_rectangle.y,
--            bounding_rectangle.width, bounding_rectangle.height);
--}
-+  public boolean contains(Point p)
-+  {
-+    return contains(p.x, p.y);
-+  }
- 
--/*************************************************************************/
-+  public Component getComponentAt(int x, int y)
-+  {
-+    if (contains(x,y))
-+      return this;
-+    return null;
-+  }
- 
--/**
--  * Sets the bounding rectangle for this component to the specified
--  * values.  Note that these coordinates are relative to the parent,
--  * not to the screen.
--  *
--  * @param x The X coordinate of the upper left corner of the rectangle.
--  * @param y The Y coordinate of the upper left corner of the rectangle.
--  * @param width The width of the rectangle.
--  * @param height The height of the rectangle.
--  */
--public void
--setBounds(int x, int y, int width, int height)
--{
--  bounding_rectangle = new Rectangle(x, y, width, height);
--  if(getPeer() == null)
--      {
--	  System.out.println("The peer object is null in " + this);
--      }
--  else
--      getPeer().setBounds(x, y, width, height);
--}
-+  /** @deprecated */
-+  public Component locate(int x, int y)
-+  {
-+    return getComponentAt(x, y);
-+  }
- 
--/*************************************************************************/
-+  public Component getComponentAt(Point p)
-+  {
-+    return getComponentAt(p.x, p.y);
-+  }
- 
--/**
--  * Sets the bounding rectangle for this component to the specified
--  * values.  Note that these coordinates are relative to the parent,
--  * not to the screen.
--  *
--  * @param x The X coordinate of the upper left corner of the rectangle.
--  * @param y The Y coordinate of the upper left corner of the rectangle.
--  * @param width The width of the rectangle.
--  * @param height The height of the rectangle.
--  *
--  * @deprecated This method is deprecated in favor of
--  * <code>setBounds(int, int, int, int)</code>.
--  */
--public void
--reshape(int x, int y, int width, int height)
--{
--  setBounds(new Rectangle(x, y, width, height));
--}
-+  /** @deprecated */
-+  public void deliverEvent(Event e)
-+  {
-+    
-+  }
- 
--/*************************************************************************/
-+  /** Forward AWT events to processEvent() if:
-+    *     - Events have been enabled for this type of event via enableEvents(),
-+    *   OR:
-+    *	 - There is at least one registered listener for this type of event
-+    * 
-+    * @specnote This method is final, but we need to be able to 
-+    *           override it in order to handle other event types in our 
-+    *	        subclasses. The solution is to define a second, non-final
-+    *           method - dispatchEventImpl() - to actually do the work. 
-+    *           Investigations with Thread.dumpStack() on the dispatch thread 
-+    *           in JDK 1.3 show Sun's implementation is doing the same 
-+    *           thing.
-+    */
-+  public final void dispatchEvent(AWTEvent e)
-+  {
-+    dispatchEventImpl(e);
-+
-+    /* Give the peer a chance to handle the event. */
-+    if (peer != null)
-+      peer.handleEvent(e);
-+  }
- 
--/**
--  * Returns the color model of the device this componet is displayed on.
--  *
--  * @return This object's color model.
--  */
--public ColorModel
--getColorModel()
--{
--  return(getPeer().getColorModel());
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the component occupying the position (x,y).  This will either
--  * be this component, an immediate child component, or <code>null</code>
--  * if neither of the first two occupies the specified location.
--  *
--  * @param x The X coordinate to search for components at.
--  * @param y The Y coordinate to search for components at.
--  *
--  * @return The component at the specified location, for <code>null</code>
--  * if there is none.
--  */
--public Component
--getComponentAt(int x, int y)
--{
--  if (getBounds().contains(x,y))
--    return(this);
--  else
--    return(null);
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the component occupying the specified point  This will either
--  * be this component, an immediate child component, or <code>null</code>
--  * if neither of the first two occupies the specified location.
--  *
--  * @param point The point to search for components at.
--  *
--  * @return The component at the specified location, for <code>null</code>
--  * if there is none.
--  */
--public Component
--getComponentAt(Point point)
--{
--  return(getComponentAt(point.x, point.y));
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the component occupying the position (x,y).  This will either
--  * be this component, an immediate child component, or <code>null</code>
--  * if neither of the first two occupies the specified location.
--  *
--  * @param x The X coordinate to search for components at.
--  * @param y The Y coordinate to search for components at.
--  *
--  * @return The component at the specified location, for <code>null</code>
--  * if there is none.
--  *
--  * @deprecated The method is deprecated in favor of 
--  * <code>getComponentAt()</code>.
--  */
--public Component
--locate(int x, int y)
--{
--  return(getComponentAt(x, y));
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the cursor for this component.
--  *
--  * @return The cursor for this component.
--  */
--public Cursor
--getCursor()
--{
--  return(cursor);
--}
--
--/*************************************************************************/
--
--/**
--  * Sets the cursor for this component to the specified cursor.
--  *
--  * @param cursor The new cursor for this component.
--  */
--public void
--setCursor(Cursor cursor)
--{
--  this.cursor = cursor;
--  getPeer().setCursor(cursor);
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the font in use for this component.
--  *
--  * @return The font for this component.
--  */
--public Font
--getFont()
--{
--  return(font);
--}
--
--/*************************************************************************/
--
--/**
--  * Sets the font for this component to the specified font.
--  *
--  * @param font The new font for this component.
--  */
--public void
--setFont(Font font)
--{
--  this.font = font;
--  getPeer().setFont(font);
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the font metrics for the specified font in this component.
--  *
--  * @param font The font to retrieve metrics for.
--  *
--  * @return The font metrics for the specified font.
--  */
--public FontMetrics
--getFontMetrics(Font font)
--{
--  return(getPeer().getFontMetrics(font));
--}
--
--/*************************************************************************/
--
--/**
--  * Returns a graphics object for this component.  Returns <code>null</code>
--  * if this component is not currently displayed on the screen.
--  *
--  * @return A graphics object for this component.
--  */
--public Graphics
--getGraphics()
--{
--  return(getPeer().getGraphics());
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the locale for this component.  If this component does not
--  * have a locale, the locale of the parent component is returned.  If the
--  * component has no parent, the system default locale is returned.
--  *
--  * @return The locale for this component.
--  */
--public Locale
--getLocale()
--{
--  if (locale != null)
--    return(locale);
--
--  Component p = getParent();
--  if (p != null)
--    return(p.getLocale());
--  else
--    return(Locale.getDefault());
--}
--
--/*************************************************************************/
--
--/**
--  * Sets the locale for this component to the specified locale.
--  *
--  * @param locale The new locale for this component.
--  */
--public void
--setLocale(Locale locale)
--{
--  this.locale = locale;
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the location of this component's top left corner relative to
--  * its parent component.
--  *
--  * @return The location of this component.
--  */
--public Point
--getLocation()
--{
--  return(getBounds().getLocation());
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the location of this component's top left corner relative to
--  * its parent component.
--  *
--  * @return The location of this component.
--  *
--  * @deprecated This method is deprecated in favor of 
--  * <code>getLocation()</code>.
--  */
--public Point
--location()
--{
--  return(getLocation());
--}
--
--/*************************************************************************/
--
--/**
--  * Moves this component to the specified location.  The coordinates are
--  * the new upper left corner of this component.
--  *
--  * @param x The new X coordinate of this component.
--  * @param y The new Y coordinate of this component.
--  */
--public void
--setLocation(int x, int y)
--{
--  setBounds(x, y, getBounds().width, getBounds().y);
--}
--
--/*************************************************************************/
--
--/**
--  * Moves this component to the specified location.  The coordinates are
--  * the new upper left corner of this component.
--  *
--  * @param p New coordinates for this component.
--  */
--public void
--setLocation(Point p)
--{
--  setBounds(p.x, p.y, getBounds().width, getBounds().y);
--}
--
--/*************************************************************************/
--
--/**
--  * Moves this component to the specified location.  The coordinates are
--  * the new upper left corner of this component.
--  *
--  * @param x The new X coordinate of this component.
--  * @param y The new Y coordinate of this component.
--  *
--  * @deprecated Deprecated in favor for <code>setLocation</code>.
--  */
--public void
--move(int x, int y)
--{
--  setLocation(x, y);
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the location of this component's top left corner in screen
--  * coordinates.
--  *
--  * @return The location of this component in screen coordinates.
--  */
--public Point
--getLocationOnScreen()
--{
--  return(getPeer().getLocationOnScreen());
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the component's maximum size.
--  *
--  * @return The component's maximum size.
--  */
--public Dimension
--getMaximumSize()
--{
--  // FIXME: Is this right?
--  return(getPeer().getPreferredSize()); 
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the component's minimum size.
--  *
--  * @return The component's minimum size.
--  */
--public Dimension
--getMinimumSize()
--{
--  return(getPeer().getMinimumSize());
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the component's minimum size.
--  *
--  * @return The component's minimum size.
--  *
--  * @deprecated Deprecated in favor of <code>getMinimumSize()</code>
--  */
--public Dimension
--minimumSize()
--{
--  return(getPreferredSize());
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the component's preferred size.
--  *
--  * @return The component's preferred size.
--  */
--public Dimension
--getPreferredSize()
--{
--  return(getPeer().getPreferredSize());
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the component's preferred size.
--  *
--  * @return The component's preferred size.
--  *
--  * @deprecated Deprecated in favor of <code>getPreferredSize()</code>.
--  */
--public Dimension
--preferredSize()
--{
--  return(getPreferredSize());
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the name of this component.
--  *
--  * @return The name of this component.
--  */
--public String
--getName()
--{
--  return(name);
--}
--
--/*************************************************************************/
--
--/**
--  * Sets the name of this component to the specified name.
--  *
--  * @param name The new name of this component.
--  */
--public void
--setName(String name)
--{
--  this.name = name;
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the parent of this component.
--  * 
--  * @return The parent of this component.
--  */
--public Container
--getParent()
--{
--  return(parent);
--} 
--
--/*************************************************************************/
--
--// Sets the parent of this component.
--final void
--setParent(Container parent)
--{
--  this.parent = parent;
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the native windowing system peer for this component.
--  *
--  * @return The peer for this component.
--  */
--public ComponentPeer
--getPeer()
--{
--  return(peer);
--}
--
--/*************************************************************************/
--
--// Sets the peer for this component.
--final void
--setPeer(ComponentPeer peer)
--{
--  this.peer = peer;
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the size of this object.
--  *
--  * @return The size of this object.
--  */
--public Dimension
--getSize()
--{
--  return(getBounds().getSize());
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the size of this object.
--  *
--  * @return The size of this object.
--  *
--  * @deprecated This method is deprecated in favor of <code>getSize</code>.
--  */
--public Dimension
--size()
--{
--  return(getSize());
--}
--
--/*************************************************************************/
--
--/**
--  * Sets the size of this component to the specified value.
--  * 
--  * @param dim The new size of this component.
--  */
--public void
--setSize(Dimension dim)
--{
--  Rectangle rect = getBounds();
--  setBounds(rect.x, rect.y, dim.width, dim.height);
--}
--
--/*************************************************************************/
--
--/**
--  * Sets the size of this component to the specified width and height.
--  * 
--  * @param width The new width of this component.
--  * @param height The new height of this component.
--  */
--public void
--setSize(int width, int height)
--{
--  Rectangle rect = getBounds();
--  setBounds(rect.x, rect.y, width, height);
--}
--
--/*************************************************************************/
--
--/**
--  * Sets the size of this component to the specified value.
--  * 
--  * @param dim The new size of this component.
--  *
--  * @deprecated This method is deprecated in favor of <code>setSize</code>.
--  */
--public void
--resize(Dimension dim)
--{
--  setSize(dim);
--}
--
--/*************************************************************************/
--
--/**
--  * Sets the size of this component to the specified value.
--  * 
--  * @param width The new width of the component.
--  * @param height The new height of the component.
--  *
--  * @deprecated This method is deprecated in favor of <code>setSize</code>.
--  */
--public void
--resize(int width, int height)
--{
--  setSize(new Dimension(width, height));
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the toolkit in use for this component.
--  *
--  * @return The toolkit for this component.
--  */
--public Toolkit
--getToolkit()
--{
--  return(toolkit);
--}
--
--/*************************************************************************/
--
--/**
--  * Returns the object used for synchronization locks on this component
--  * when performing tree and layout functions.
--  *
--  * @return The synchronization lock for this component.
--  */
--public final Object
--getTreeLock()
--{
--  return(tree_lock);
--}
--
--/*************************************************************************/
--
--// The sync lock object for this component.
--final void
--setTreeLock(Object tree_lock)
--{
--  this.tree_lock = tree_lock;
--}
--
--/*************************************************************************/
--
--/**
--  * Tests whether or not this component is visible.
--  *
--  * @return <code>true</code> if the component is visible,
--  * <code>false</code> otherwise.
--  */
--public boolean
--isVisible()
--{
--  return(visible);
--}
--
--/*************************************************************************/
--
--/**
--  * Tests whether or not this component is actually being shown on
--  * the screen.  This will be true if and only if it this component is
--  * visible and its parent components are all visible.
--  *
--  * @return <code>true</code> if the component is showing on the screen,
--  * <code>false</code> otherwise.
--  */
--public boolean
--isShowing()
--{
--  if (!visible)
--    return(false);
--
--  Component c = getParent();
--  if (c != null)
--    return(c.isShowing());
--  else
--    return(true);
--}
--
--/*************************************************************************/
--
--/**
--  * Makes this component visible or invisible.
--  *
--  * @param visible <code>true</code> to make this component visible,
--  * </code>false</code> to make it invisible.
--  */
--public void
--setVisible(boolean visible)
--{
--  this.visible = visible;
--  getPeer().setVisible(visible);
--}
--
--/*************************************************************************/
--
--/**
--  * Makes this component visible on the screen.
--  *
--  * @deprecated Deprecated in favor of <code>setVisible()</code>.
--  */
--public void
--show()
--{
--  setVisible(true);
--}
--
--/*************************************************************************/
--
--/**
--  * Makes this component visible or invisible.
--  *
--  * @param visible <code>true</code> to make this component visible,
--  * </code>false</code> to make it invisible.
--  *
--  * @deprecated Deprecated in favor of <code>setVisible()</code>.
--  */
--public void
--show(boolean visible)
--{
--  setVisible(visible);
--}
--
--/*************************************************************************/
--
--/**
--  * Hides this component so that it is no longer shown on the screen.
--  *
--  * @deprecated Deprecated in favor of <code>setVisible()</code>.
--  */
--public void
--hide()
--{
--  setVisible(false);
--}
--
--/*************************************************************************/
--
--/**
--  * Tests whether or not this component is enabled.
--  *
--  * @return <code>true</code> if the component is enabled,
--  * <code>false</code> otherwise.
--  */
--public boolean
--isEnabled()
--{
--  return(enabled);
--}
--
--/*************************************************************************/
--
--/**
--  * Enables or disables this component.
--  *
--  * @param enabled <code>true</code> to enable this component, 
--  * <code>false</code> to disable it.
--  *
--  * @deprecated Deprecated in favor of <code>setEnabled()</code>.
--  */
--public void
--setEnabled(boolean enabled)
--{
--  this.enabled = enabled;
--  getPeer().setEnabled(enabled);
--}
--
--
--/*************************************************************************/
--
--/**
--  * Disables this component.
--  *
--  * @deprecated Deprecated in favor of <code>setEnabled()</code>.
--  */
--public void
--disable()
--{
--  setEnabled(false);
--}
--
--/*************************************************************************/
--
--/**
--  * Enables this component.
--  *
--  * @deprecated Deprecated in favor of <code>setEnabled()</code>.
--  */
--public void
--enable()
--{
--  setEnabled(true);
--}
--
--/*************************************************************************/
--
--/**
--  * Enables or disables this component.
--  *
--  * @param enabled <code>true</code> to enable this component, 
--  * <code>false</code> to disable it.
--  *
--  * @deprecated Deprecated in favor of <code>setEnabled()</code>.
--  */
--public void
--enable(boolean enabled)
--{
--  setEnabled(enabled);
--}
--
--/*************************************************************************/
--
--/**
--  * Tests whether or not the specified point is contained within this
--  * component.  Coordinates are relative to this component.
--  *
--  * @param x The X coordinate of the point to test.
--  * @param y The Y coordinate of the point to test.
--  *
--  * @return <code>true</code> if the point is within this component,
--  * <code>false</code> otherwise.
--  */
--public boolean
--contains(int x, int y)
--{
--  // FIXME: Is the origin the upper left of this component, or the upper
--  // left of the parent component?
--  return(getBounds().contains(x, y));
--}
--
--/*************************************************************************/
--
--/**
--  * Tests whether or not the specified point is contained within this
--  * component.  Coordinates are relative to this component.
--  *
--  * @param point The point to test.
--  *
--  * @return <code>true</code> if the point is within this component,
--  * <code>false</code> otherwise.
--  */
--public boolean
--contains(Point point)
--{
--  // FIXME: Is the origin the upper left of this component, or the upper
--  // left of the parent component?
--  return(getBounds().contains(point.x, point.y));
--}
--
--/*************************************************************************/
--
--/**
--  * Tests whether or not the specified point is contained within this
--  * component.  Coordinates are relative to this component.
--  *
--  * @param x The X coordinate of the point to test.
--  * @param y The Y coordinate of the point to test.
--  *
--  * @return <code>true</code> if the point is within this component,
--  * <code>false</code> otherwise.
--  *
--  * @deprecated Deprecated in favor of <code>contains(int, int)</code>.
--  */
--public boolean
--inside(int x, int y)
--{
--  return(contains(x, y));
--}
--
--/*************************************************************************/
--
--/**
--  * AWT 1.0 focus event processor.
--  *
--  * @deprecated Deprecated in favor of <code>processFocusEvent</code>.
--  
--public boolean
--gotFocus(Event event, Object what)
--{
--  return(true);
--}
--*/
--
--/*************************************************************************/
--
--/**
--  * AWT 1.0 focus event processor.
--  *
--  * @deprecated Deprecated in favor of <code>processFocusEvent</code>.
--  
--public boolean
--lostFocus(Event event, Object what)
--{
--  return(true);
--}
--*/
--/*************************************************************************/
--
--/**
--  * Tests whether or not this component is in the group that can
--  * be traversed using the keyboard traversal mechanism (such as the TAB
--  * key).
--  *
--  * @return <code>true</code> if the component is traversed via the TAB
--  * key, <code>false</code> otherwise.
--  */
--public boolean
--isFocusTraversable()
--{
--  return(getPeer().isFocusTraversable());
--}
--
--/*************************************************************************/
--
--/**
--  * Requests that this component be given focus.  The <code>gotFocus()</code>
--  * method on this event will be called when and if this request was
--  * successful.
--  */
--public void
--requestFocus()
--{
--  getPeer().requestFocus();
--}
--
--/*************************************************************************/
--
--/**
--  * Transfers focus to the next component in the focus traversal order.
--  */
--public void
--transferFocus()
--{
--}
--
--/*************************************************************************/
--
--/**
--  * AWT 1.0 focus event processor.
--  *
--  * @deprecated Deprecated in favor of <code>transferFocus()</code>.
--  */
--public void
--nextFocus()
--{
--  transferFocus();
--}
--
--/*************************************************************************/
--
--/**
--  * AWT 1.0 event processor.
--  *
--  * @deprecated Deprecated in favor of <code>processEvent</code>.
--  
--public boolean 
--handleEvent(Event event)
--{
--  return(true);
--}
--*/
--/*************************************************************************/
--
--/**
--  * AWT 1.0 action event processor.
--  *
--  * @deprecated Deprecated in favor of the <code>ActionListener</code>
--  * interface.
--  
--public boolean
--action(Event event, Object what)
--{
--  return(true);
--}
--*/
--/*************************************************************************/
--
--/**
--  * AWT 1.0 event dispatcher.
--  *
--  * @deprecated Deprecated in favor of <code>dispatchEvent()</code>.
--
--public void
--deliverEvent(Event event)
--{
--}
--  */
--/*************************************************************************/
--
--/**
--  * AWT 1.0 event dispatcher.
--  *
--  * @deprecated Deprecated in favor of <code>dispatchEvent()</code>.
--
--public boolean
--postEvent(Event event)
--{
--  return(true);
--}
--  */
--/*************************************************************************/
--
--/**
--  * AWT 1.0 key press event.
--  *
--  * @deprecated Deprecated in favor of <code>processKeyEvent</code>.
--
--public boolean
--keyDown(Event event, int key)
--{
--  return(true);
--}
--  */
--/*************************************************************************/
--
--/**
--  * AWT 1.0 key press event.
--  *
--  * @deprecated Deprecated in favor of <code>processKeyEvent</code>.
--
--public boolean
--keyUp(Event event, int key)
--{
--  return(true);
--}
--  */
--/*************************************************************************/
--
--/**
--  * AWT 1.0 mouse event.
--  *
--  * @deprecated Deprecated in favor of <code>processMouseEvent()</code>.
--
--public boolean
--mouseDown(Event event, int x, int y)
--{
--  return(true);
--}
--  */
--/*************************************************************************/
--
--/**
--  * AWT 1.0 mouse event.
--  *
--  * @deprecated Deprecated in favor of <code>processMouseEvent()</code>.
--
--public boolean
--mouseUp(Event event, int x, int y)
--{
--  return(true);
--}
--  */
--/*************************************************************************/
--
--/**
--  * AWT 1.0 mouse event.
--  *
--  * @deprecated Deprecated in favor of <code>processMouseEvent()</code>.
--
--public boolean
--mouseEnter(Event event, int x, int y)
--{
--  return(true);
--}
--  */
--/*************************************************************************/
--
--/**
--  * AWT 1.0 mouse event.
--  *
--  * @deprecated Deprecated in favor of <code>processMouseEvent()</code>.
--
--public boolean
--mouseExit(Event event, int x, int y)
--{
--  return(true);
--}
--  */
--/*************************************************************************/
--
--/**
--  * AWT 1.0 mouse event.
--  *
--  * @deprecated Deprecated in favor of <code>processMouseMotionEvent()</code>.
--
--public boolean
--mouseDrag(Event event, int x, int y)
--{
--  return(true);
--}
--  */
--/*************************************************************************/
--
--/**
--  * AWT 1.0 mouse event.
--  *
--  * @deprecated Deprecated in favor of <code>processMouseMotionEvent()</code>.
--
--public boolean
--mouseMove(Event event, int x, int y)
--{
--  return(true);
--}
--  */
--/*************************************************************************/
--
--/**
--  * Enables the specified events.  The events to enable are specified
--  * by OR-ing together the desired masks from <code>AWTEvent</code>.
--  * <p>
--  * Events are enabled by default when a listener is attached to the
--  * component for that event type.  This method can be used by subclasses
--  * to ensure the delivery of a specified event regardless of whether
--  * or not a listener is attached.
--  *
--  * @param enable_events The desired events to enable.
--  */
--protected final void
--enableEvents(long enable_events)
--{
--  enabled_events |= enable_events;
--}
--
--/*************************************************************************/
--
--/**
--  * Disables the specified events.  The events to disable are specified
--  * by OR-ing together the desired masks from <code>AWTEvent</code>.
--  *
--  * @param disable_events The desired events to disable.
--  */
--protected final void
--disableEvents(long disable_events)
--{
--  enabled_events &= ~disable_events;
--}
--
--/*************************************************************************/
--
--/**
--  * Adds the specified listener to this component.
--  *
--  * @param listener The new listener to add.
--  */
--public synchronized void
--addComponentListener(ComponentListener listener)
--{
--  component_listener = AWTEventMulticaster.add(component_listener, listener);
--  enableEvents(AWTEvent.COMPONENT_EVENT_MASK);
--}
--
--/*************************************************************************/
--
--/**
--  * Removes the specified listener from the component.
--  *
--  * @param listener The listener to remove.
--  */
--public synchronized void
--removeComponentListener(ComponentListener listener)
--{
--  component_listener = AWTEventMulticaster.remove(component_listener, listener);
--}
--
--/*************************************************************************/
--
--/**
--  * Adds the specified listener to this component.
--  *
--  * @param listener The new listener to add.
--  */
--public synchronized void
--addFocusListener(FocusListener listener)
--{
--  focus_listener = AWTEventMulticaster.add(focus_listener, listener);
--  enableEvents(AWTEvent.FOCUS_EVENT_MASK);
--}
--
--/*************************************************************************/
--
--/**
--  * Removes the specified listener from the component.
--  *
--  * @param listener The listener to remove.
--  */
--public synchronized void
--removeFocusListener(FocusListener listener)
--{
--  focus_listener = AWTEventMulticaster.remove(focus_listener, listener);
--}
--
--/*************************************************************************/
--
--/**
--  * Adds the specified listener to this component.
--  *
--  * @param listener The new listener to add.
--  */
--public synchronized void
--addKeyListener(KeyListener listener)
--{
--  key_listener = AWTEventMulticaster.add(key_listener, listener);
--  enableEvents(AWTEvent.KEY_EVENT_MASK);
--}
--
--/*************************************************************************/
--
--/**
--  * Removes the specified listener from the component.
--  *
--  * @param listener The listener to remove.
--  */
--public synchronized void
--removeKeyListener(KeyListener listener)
--{
--  key_listener = AWTEventMulticaster.remove(key_listener, listener);
--}
--
--/*************************************************************************/
--
--/**
--  * Adds the specified listener to this component.
--  *
--  * @param listener The new listener to add.
--  */
--public synchronized void
--addMouseListener(MouseListener listener)
--{
--  mouse_listener = AWTEventMulticaster.add(mouse_listener, listener);
--  enableEvents(AWTEvent.MOUSE_EVENT_MASK);
--}
--
--/*************************************************************************/
--
--/**
--  * Removes the specified listener from the component.
--  *
--  * @param listener The listener to remove.
--  */
--public synchronized void
--removeMouseListener(MouseListener listener)
--{
--  mouse_listener = AWTEventMulticaster.remove(mouse_listener, listener);
--}
--
--/*************************************************************************/
--
--/**
--  * Adds the specified listener to this component.
--  *
--  * @param listener The new listener to add.
--  */
--public synchronized void
--addMouseMotionListener(MouseMotionListener listener)
--{
--  mouse_motion_listener = AWTEventMulticaster.add(mouse_motion_listener, 
--                                                  listener);
--  enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
--}
--
--/*************************************************************************/
--
--/**
--  * Removes the specified listener from the component.
--  *
--  * @param listener The listener to remove.
--  */
--public synchronized void
--removeMouseMotionListener(MouseMotionListener listener)
--{
--  mouse_motion_listener = AWTEventMulticaster.remove(mouse_motion_listener, 
--                                                     listener);
--}
--
--/*************************************************************************/
--
--/**
--  * Sends this event to this component or a subcomponent for processing.
--  *
--  * @param event The event to dispatch
--  */
--public final void
--dispatchEvent(AWTEvent event)
--{
--  // FIXME: What is this really supposed to do?
--
--  // Only dispatch enabled events
--  if (!isEventEnabled(event))
--    return;
--
--  ((Component)event.getSource()).processEvent(event);
--}
--
--private boolean isEventEnabled(ActionEvent e) 
--  { return((enabled_events & AWTEvent.ACTION_EVENT_MASK) != 0); }
--private boolean isEventEnabled(AdjustmentEvent e) 
--  { return((enabled_events & AWTEvent.ADJUSTMENT_EVENT_MASK) != 0); }
--private boolean isEventEnabled(ComponentEvent e) 
--  { return((enabled_events & AWTEvent.COMPONENT_EVENT_MASK) != 0); }
--private boolean isEventEnabled(ContainerEvent e) 
--  { return((enabled_events & AWTEvent.CONTAINER_EVENT_MASK) != 0); }
--private boolean isEventEnabled(FocusEvent e) 
--  { return((enabled_events & AWTEvent.FOCUS_EVENT_MASK) != 0); }
--private boolean isEventEnabled(ItemEvent e) 
--  { return((enabled_events & AWTEvent.ITEM_EVENT_MASK) != 0); }
--private boolean isEventEnabled(KeyEvent e) 
--  { return((enabled_events & AWTEvent.KEY_EVENT_MASK) != 0); }
--private boolean isEventEnabled(MouseEvent e) 
--  { 
--    if ((e.getID() == MouseEvent.MOUSE_MOVED) ||
--        (e.getID() == MouseEvent.MOUSE_DRAGGED))
--      return((enabled_events & AWTEvent.MOUSE_MOTION_EVENT_MASK) != 0); 
--    else
--      return((enabled_events & AWTEvent.MOUSE_EVENT_MASK) != 0); 
--  }
--private boolean isEventEnabled(TextEvent e) 
--  { return((enabled_events & AWTEvent.TEXT_EVENT_MASK) != 0); }
--private boolean isEventEnabled(WindowEvent e) 
--  { return((enabled_events & AWTEvent.WINDOW_EVENT_MASK) != 0); }
--private boolean isEventEnabled(Object e)
--  {  return(false); }
--
--/*************************************************************************/
--
--/**
--  * Processes the specified event.  In this class, this method simply
--  * calls one of the more specific event handlers.
--  * 
--  * @param event The event to process.
--  */
--protected void
--processEvent(AWTEvent event)
--{
--  processEventInternal(event);
--}
--
--private void processEventInternal(ComponentEvent e) 
--  { processComponentEvent(e); }
--private void processEventInternal(FocusEvent e) 
--  { processFocusEvent(e); }
--private void processEventInternal(KeyEvent e) 
--  { processKeyEvent(e); }
--private void processEventInternal(MouseEvent e) 
--  { 
--    if ((e.getID() == MouseEvent.MOUSE_MOVED) ||
--        (e.getID() == MouseEvent.MOUSE_DRAGGED))
--      processMouseMotionEvent(e); 
--    else
--      processMouseEvent(e); 
-+  void dispatchEventImpl(AWTEvent e)
-+  {
-+    // Make use of event id's in order to avoid multiple instanceof tests.
-+    if (e.id <= ComponentEvent.COMPONENT_LAST 
-+        && e.id >= ComponentEvent.COMPONENT_FIRST
-+        && (componentListener != null 
-+	    || (eventMask & AWTEvent.COMPONENT_EVENT_MASK) != 0))
-+      processEvent(e);
-+    else if (e.id <= KeyEvent.KEY_LAST
-+             && e.id >= KeyEvent.KEY_FIRST
-+	     && (keyListener != null
-+		 || (eventMask & AWTEvent.KEY_EVENT_MASK) != 0))
-+      processEvent(e);
-+    else if (e.id <= MouseEvent.MOUSE_LAST
-+             && e.id >= MouseEvent.MOUSE_FIRST
-+	     && (mouseListener != null
-+		 || mouseMotionListener != null
-+		 || (eventMask & AWTEvent.MOUSE_EVENT_MASK) != 0))
-+      processEvent(e);
-+    else if (e.id <= FocusEvent.FOCUS_LAST
-+             && e.id >= FocusEvent.FOCUS_FIRST
-+	     && (focusListener != null
-+		 || (eventMask & AWTEvent.FOCUS_EVENT_MASK) != 0))
-+      processEvent(e);
-+    else if (e.id <= InputMethodEvent.INPUT_METHOD_LAST
-+             && e.id >= InputMethodEvent.INPUT_METHOD_FIRST
-+	     && (inputMethodListener != null
-+		 || (eventMask & AWTEvent.INPUT_METHOD_EVENT_MASK) != 0))
-+      processEvent(e);
-+    else if (e.id <= HierarchyEvent.HIERARCHY_LAST
-+             && e.id >= HierarchyEvent.HIERARCHY_FIRST
-+	     && (hierarchyListener != null
-+		 || hierarchyBoundsListener != null
-+		 || (eventMask & AWTEvent.HIERARCHY_EVENT_MASK) != 0))
-+      processEvent(e);
-+    else if (e.id <= PaintEvent.PAINT_LAST
-+	     && e.id >= PaintEvent.PAINT_FIRST
-+	     && (eventMask & AWTEvent.PAINT_EVENT_MASK) != 0)      
-+      processEvent(e);
-+  }
-+  
-+  /** @deprecated */
-+  public boolean postEvent(Event e)
-+  {
-+    return false;
-+  }
-+  
-+  public synchronized void addComponentListener(ComponentListener l)
-+  {
-+    componentListener = AWTEventMulticaster.add(componentListener, l);
-+    if (componentListener != null)
-+      enableEvents(AWTEvent.COMPONENT_EVENT_MASK);
-+  }
-+  
-+  public synchronized void removeComponentListener(ComponentListener l)
-+  {
-+    componentListener = AWTEventMulticaster.remove(componentListener, l);
-+  }
-+  
-+  public synchronized void addFocusListener(FocusListener l)
-+  {
-+    focusListener = AWTEventMulticaster.add(focusListener, l);
-+    if (focusListener != null)
-+      enableEvents(AWTEvent.FOCUS_EVENT_MASK);    
-+  }
-+  
-+  public synchronized void removeFocusListener(FocusListener l)
-+  {
-+    focusListener = AWTEventMulticaster.remove(focusListener, l);
-+  }
-+  
-+  /** @since 1.3 */
-+  public synchronized void addHierarchyListener(HierarchyListener l)
-+  {
-+    hierarchyListener = AWTEventMulticaster.add(hierarchyListener, l);
-+    if (hierarchyListener != null)
-+      enableEvents(AWTEvent.HIERARCHY_EVENT_MASK);    
-+  }
-+  
-+  /** @since 1.3 */
-+  public synchronized void removeHierarchyListener(HierarchyListener l)
-+  {
-+    hierarchyListener = AWTEventMulticaster.remove(hierarchyListener, l);
-   }
--private void processEventInternal(Object e) {  }
--
--/*************************************************************************/
--
--/**
--  * Called when a component event is dispatched and component events are
--  * enabled.  This method passes the event along to any listeners
--  * that are attached.
--  *
--  * @param event The <code>ComponentEvent</code> to process.
--  */
--protected void
--processComponentEvent(ComponentEvent event)
--{
--  if (component_listener != null)
--    {
--      switch(event.getID())
--        {
--          case ComponentEvent.COMPONENT_HIDDEN:
--            component_listener.componentHidden(event);
--            break;
--
--          case ComponentEvent.COMPONENT_SHOWN:
--            component_listener.componentShown(event);
--            break;
--
--          case ComponentEvent.COMPONENT_MOVED:
--            component_listener.componentMoved(event);
--            break;
--
--          case ComponentEvent.COMPONENT_RESIZED:
--            component_listener.componentResized(event);
--            break;
--
--          default:
--            break;
--        }
--    }
--}
--
--/*************************************************************************/
--
--/**
--  * Called when a focus event is dispatched and component events are
--  * enabled.  This method passes the event along to any listeners
--  * that are attached.
--  *
--  * @param event The <code>FocusEvent</code> to process.
--  */
--protected void
--processFocusEvent(FocusEvent event)
--{
--  if (focus_listener != null)
--    {
--      switch(event.getID())
--        {
--          case FocusEvent.FOCUS_GAINED:
--            focus_listener.focusGained(event);
--            break;
--
--          case FocusEvent.FOCUS_LOST:
--            focus_listener.focusLost(event);
--            break;
--
--          default:
--            break;
--        }
--    }
--}
--
--/*************************************************************************/
--
--/**
--  * Called when a key event is dispatched and component events are
--  * enabled.  This method passes the event along to any listeners
--  * that are attached.
--  *
--  * @param event The <code>KeyEvent</code> to process.
--  */
--protected void
--processKeyEvent(KeyEvent event)
--{
--  if (key_listener != null)
--    {
--      switch(event.getID())
--        {
--          case KeyEvent.KEY_PRESSED:
--            key_listener.keyPressed(event);
--            break;
--
--          case KeyEvent.KEY_RELEASED:
--            key_listener.keyReleased(event);
--            break;
--
--          case KeyEvent.KEY_TYPED:
--            key_listener.keyTyped(event);
--            break;
--
--          default:
--            break;
--        }
--    }
--}
--
--/*************************************************************************/
--
--/**
--  * Called when a regular mouse event is dispatched and component events are
--  * enabled.  This method passes the event along to any listeners
--  * that are attached.
--  *
--  * @param event The <code>MouseEvent</code> to process.
--  */
--protected void
--processMouseEvent(MouseEvent event)
--{
--  if (mouse_listener != null)
--    {
--      switch(event.getID())
--        {
--          case MouseEvent.MOUSE_PRESSED:
--            mouse_listener.mousePressed(event);
--            break;
--
--          case MouseEvent.MOUSE_RELEASED:
--            mouse_listener.mouseReleased(event);
--
--          case MouseEvent.MOUSE_CLICKED:
--            mouse_listener.mouseClicked(event);
--            break;
--
--          case MouseEvent.MOUSE_ENTERED:
--            mouse_listener.mouseEntered(event);
--            break;
--
--          case MouseEvent.MOUSE_EXITED:
--            mouse_listener.mouseExited(event);
--            break;
--
--          default:
--            break;
--        }
--    }
--}
--
--/*************************************************************************/
--
--/**
--  * Called when a mouse motion event is dispatched and component events are
--  * enabled.  This method passes the event along to any listeners
--  * that are attached.
--  *
--  * @param event The <code>MouseMotionEvent</code> to process.
--  */
--protected void
--processMouseMotionEvent(MouseEvent event)
--{
--  if (mouse_motion_listener != null)
--    {
--      switch(event.getID())
--        {
--          case MouseEvent.MOUSE_DRAGGED:
--            mouse_motion_listener.mouseDragged(event);
--            break;
--
--          case MouseEvent.MOUSE_MOVED:
--            mouse_motion_listener.mouseMoved(event);
--            break;
--
--          default:
--            break;
--        }
--    }
--}
--
--/*************************************************************************/
--
--/**
--  * Called to inform this component it has been added to a container.
--  * A native peer - if any - is created at this time.  This method is
--  * called automatically by the AWT system and should not be called by
--  * user level code.
--  */
--public void
--addNotify()
--{
--}
--
--/*************************************************************************/
--
--/**
--  * Called to inform this component is has been removed from its
--  * container.  Its native peer - if any - is destroyed at this time.
--  * This method is called automatically by the AWT system and should
--  * not be called by user level code.
--  */
--public void
--removeNotify()
--{
--  getPeer().dispose();
--}
--
--/*************************************************************************/
--
--/**
--  * Tests whether or not this component is valid.  A invalid component needs
--  * to have its layout redone.
--  *
--  * @return <code>true</code> if this component is valid, <code>false</code>
--  * otherwise.
--  */
--public boolean
--isValid()
--{
--  return(valid);
--}
--
--/*************************************************************************/
--
--/**
--  * Invalidates this component and all of its parent components.  This will
--  * cause them to have their layout redone.
--  */
--public void
--invalidate()
--{
--  valid = false;
--  Component c = getParent();
--  if (c != null)
--    c.invalidate(); 
--}
--
--/*************************************************************************/
--
--/**
--  * Called to ensure that the layout for this component is valid.
--  */
--public void
--validate()
--{
--  valid = true;
--} 
- 
--/*************************************************************************/
-+  /** @since 1.3 */
-+  public synchronized void addHierarchyBoundsListener(HierarchyBoundsListener l)
-+  {
-+    hierarchyBoundsListener = 
-+      AWTEventMulticaster.add(hierarchyBoundsListener, l);
-+    if (hierarchyBoundsListener != null)
-+      enableEvents(AWTEvent.HIERARCHY_EVENT_MASK);    
-+  }
- 
--/**
--  * Calls the layout manager to re-layout the component.  This is called
--  * during validation of a container in most cases.
--  */
--public void
--doLayout()
--{
--}
-+  /** @since 1.3 */
-+  public synchronized void 
-+    removeHierarchyBoundsListener(HierarchyBoundsListener l)
-+  {
-+    hierarchyBoundsListener = 
-+      AWTEventMulticaster.remove(hierarchyBoundsListener, l);
-+  }
- 
--/*************************************************************************/
-+  public synchronized void addKeyListener(KeyListener l)
-+  {
-+    keyListener = AWTEventMulticaster.add(keyListener, l);
-+    if (keyListener != null)
-+      enableEvents(AWTEvent.KEY_EVENT_MASK);    
-+  }
- 
--/**
--  * Calls the layout manager to re-layout the component.  This is called
--  * during validation of a container in most cases.
--  *
--  * @deprecated This method is deprecated in favor of <code>doLayout()</code>.
--  */
--public void
--layout()
--{
--  doLayout();
--}
-+  public synchronized void removeKeyListener(KeyListener l)
-+  {
-+    keyListener = AWTEventMulticaster.remove(keyListener, l);
-+  }
- 
--/*************************************************************************/
-+  public synchronized void addMouseListener(MouseListener l)
-+  {
-+    mouseListener = AWTEventMulticaster.add(mouseListener, l);
-+    if (mouseListener != null)
-+      enableEvents(AWTEvent.MOUSE_EVENT_MASK);    
-+  }
- 
--/**
--  * Adds the specified popup menu to this component.
--  *
--  * @param menu The popup menu to be added.
--  */
--public synchronized void
--add(PopupMenu menu)
--{
--  // FIXME: Implement
--}
-+  public synchronized void removeMouseListener(MouseListener l)
-+  {
-+    mouseListener = AWTEventMulticaster.remove(mouseListener, l);    
-+  }
- 
--/*************************************************************************/
-+  public synchronized void addMouseMotionListener(MouseMotionListener l)
-+  {
-+    mouseMotionListener = AWTEventMulticaster.add(mouseMotionListener, l);
-+    if (mouseMotionListener != null)
-+      enableEvents(AWTEvent.MOUSE_EVENT_MASK);    
-+  }
- 
--/**
--  * Removes the specified popup menu from this component.
--  *
--  * @param menu The popup menu to remove.
--  */
--public synchronized void
--remove(MenuComponent menu)
--{
--  // FIXME: Implement
--}
-+  public synchronized void removeMouseMotionListener(MouseMotionListener l)
-+  {
-+    mouseMotionListener = AWTEventMulticaster.remove(mouseMotionListener, l);
-+  }
- 
--/*************************************************************************/
-+  /** @since 1.2 */
-+  public synchronized void addInputMethodListener(InputMethodListener l)
-+  {
-+    inputMethodListener = AWTEventMulticaster.add(inputMethodListener, l);
-+    if (inputMethodListener != null)
-+      enableEvents(AWTEvent.INPUT_METHOD_EVENT_MASK);    
-+  }
- 
--/**
--  * Returns the status of the loading of the specified image. The value
--  * returned will be those flags defined in <code>ImageObserver</code>.
--  *
--  * @param image The image to check on.
--  * @param observer The observer to be notified as the image loading
--  * progresses.
--  *
--  * @return The image observer flags indicating the status of the load.
--  */
--public int
--checkImage(Image image, ImageObserver observer)
--{
--  return(checkImage(image, image.getWidth(observer), 
--         image.getHeight(observer), observer));
--}
-+  /** @since 1.2 */
-+  public synchronized void removeInputMethodListener(InputMethodListener l)
-+  {
-+    inputMethodListener = AWTEventMulticaster.remove(inputMethodListener, l);
-+  }
- 
--/*************************************************************************/
-+  /** Returns all registered EventListers of the given listenerType. 
-+    * listenerType must be a subclass of EventListener, or a 
-+    * ClassClassException is thrown.
-+    * @since 1.3 
-+    */
-+  public EventListener[] getListeners(Class listenerType)
-+  {
-+    if (listenerType == ComponentListener.class)
-+      return getListenersImpl(listenerType, componentListener);
-+    else if (listenerType == FocusListener.class)
-+      return getListenersImpl(listenerType, focusListener);
-+    else if (listenerType == KeyListener.class)
-+      return getListenersImpl(listenerType, keyListener);
-+    else if (listenerType == MouseListener.class)
-+      return getListenersImpl(listenerType, mouseListener);
-+    else if (listenerType == MouseMotionListener.class)
-+      return getListenersImpl(listenerType, mouseMotionListener);
-+    else if (listenerType == InputMethodListener.class)
-+      return getListenersImpl(listenerType, inputMethodListener);
-+    else if (listenerType == HierarchyListener.class)
-+      return getListenersImpl(listenerType, hierarchyListener);
-+    else if (listenerType == HierarchyBoundsListener.class)
-+      return getListenersImpl(listenerType, hierarchyBoundsListener);
-+    else
-+      return getListenersImpl(listenerType, null);
-+  }
-+  
-+  static EventListener[] getListenersImpl(Class listenerType, EventListener el)
-+  {
-+    if (! EventListener.class.isAssignableFrom(listenerType))
-+      throw new ClassCastException();
-+    
-+    Vector v = new Vector();
-+    if (el != null)
-+      getListenerList (el, v);    
-+    EventListener[] el_a = (EventListener[]) Array.newInstance(listenerType, 
-+							       v.size());
-+    v.copyInto(el_a);
-+    return el_a;
-+  }
- 
--/**
--  * Returns the status of the loading of the specified image. The value
--  * returned will be those flags defined in <code>ImageObserver</code>.
--  *
--  * @param image The image to check on.
--  * @param width The scaled image width.
--  * @param height The scaled image height.
--  * @param observer The observer to be notified as the image loading
--  * progresses.
--  *
--  * @return The image observer flags indicating the status of the load.
--  */
--public int
--checkImage(Image image, int width, int height, ImageObserver observer)
--{
--  return(getPeer().checkImage(image, width, height, observer));
--}
-+  static void getListenerList(EventListener el, Vector v)
-+  {
-+    if (el instanceof AWTEventMulticaster)
-+      {
-+        AWTEventMulticaster mc = (AWTEventMulticaster) el;
-+        getListenerList(mc.a, v);
-+	getListenerList(mc.b, v);
-+      }
-+    else
-+      v.addElement(el);      
-+  }
- 
--/*************************************************************************/
-+  // The input method framework is currently unimplemented.  
-+  // /** @since 1.2 */
-+  //
-+  //public InputMethodRequests getInputMethodRequests()
-+  //
-+  // /** @since 1.2 */
-+  //
-+  // public InputContext getInputContext()
-+
-+  protected final void enableEvents(long eventsToEnable)
-+  {
-+    eventMask |= eventsToEnable;
-+    // TODO: Unlike Sun's implementation, I think we should try and 
-+    // enable/disable events at the peer (gtk/X) level. This will avoid 
-+    // clogging the event pipeline with useless mousemove events that 
-+    // we arn't interested in, etc. This will involve extending the peer 
-+    // interface, but thats okay because the peer interfaces have been
-+    // deprecated for a long time, and no longer feature in the 
-+    // API specification at all.
-+
-+    if (isLightweight() && (parent != null))
-+      parent.enableEvents(eventsToEnable);
-+    else if (peer != null)
-+      peer.setEventMask (eventMask);
-+  }
- 
--/**
--  * Creates an image from the specified producer.
--  *
--  * @param producer The image procedure to create the image from.
--  *
--  * @return The resulting image.
--  */
--public Image
--createImage(ImageProducer producer)
--{
--  return(getPeer().createImage(producer));
--}
-+  protected final void disableEvents(long eventsToDisable)
-+  {
-+    eventMask &= ~eventsToDisable;
-+    // forward new event mask to peer?
-+  }
- 
--/*************************************************************************/
-+  /** coalesceEvents is called by the EventQueue if two events with the same 
-+    * event id are queued. Returns a new combined event, or null if no 
-+    * combining is done. 
-+    */
-+  protected AWTEvent coalesceEvents(AWTEvent existingEvent, AWTEvent newEvent)
-+  {
-+    switch (existingEvent.id)
-+      {
-+      case MouseEvent.MOUSE_MOVED:
-+      case MouseEvent.MOUSE_DRAGGED:
-+	// Just drop the old (intermediate) event and return the new one.
-+	return newEvent;
-+      case PaintEvent.PAINT:
-+      case PaintEvent.UPDATE:
-+	return coalescePaintEvents((PaintEvent) existingEvent,
-+				   (PaintEvent) newEvent);
-+      }
-+    return null;
-+  }
-+  
-+  /**
-+   * Coalesce paint events. Current heuristic is: Merge if the union of
-+   * areas is less than twice that of the sum of the areas. The X server
-+   * tend to create a lot of paint events that are adjacent but not
-+   * overlapping.
-+   *
-+   * <pre>
-+   * +------+
-+   * |      +-----+  ...will be merged
-+   * |      |     |
-+   * |      |     |
-+   * +------+     |
-+   *        +-----+
-+   * 
-+   * +---------------+--+
-+   * |               |  |  ...will not be merged
-+   * +---------------+  |
-+   *                 |  |
-+   *                 |  |
-+   *                 |  |
-+   *                 |  |
-+   *                 |  |
-+   *                 +--+
-+   * </pre>
-+   */
-+
-+  private PaintEvent coalescePaintEvents(PaintEvent queuedEvent,
-+					 PaintEvent newEvent)
-+  {
-+    Rectangle r1 = queuedEvent.getUpdateRect();
-+    Rectangle r2 = newEvent.getUpdateRect();
-+    Rectangle union = r1.union(r2);
-+    
-+    int r1a = r1.width * r1.height;
-+    int r2a = r2.width * r2.height;
-+    int ua  = union.width * union.height;
-+    
-+    if (ua > (r1a+r2a)*2)
-+      return null;
-+    /* The 2 factor should maybe be reconsidered. Perhaps 3/2
-+       would be better? */
- 
--/**
--  * Creates an image with the specified width and height for use in
--  * double buffering.
--  *
--  * @param width The width of the image.
--  * @param height The height of the image.
--  *
--  * @return The requested image.
--  */
--public Image
--createImage(int width, int height)
--{
--  return(getPeer().createImage(width, height));
--}
-+    newEvent.setUpdateRect(union);
-+    return newEvent;
-+  }
- 
--/*************************************************************************/
- 
--/**
--  * Prepares the specified image for rendering on this component.
--  *
--  * @param image The image to prepare for rendering.
--  * @param observer The image observer to notify of the status of the
--  * image preparation.
--  *
--  * @return <code>true</code> if the image is already fully prepared
--  * for rendering, <code>false</code> otherwise.
--  */
--public boolean
--prepareImage(Image image, ImageObserver observer)
--{
--  return(prepareImage(image, image.getWidth(observer), 
--         image.getHeight(observer), observer));
--}
- 
--/*************************************************************************/
- 
--/**
--  * Prepares the specified image for rendering on this component at the
--  * specified scaled width and height
--  *
--  * @param image The image to prepare for rendering.
--  * @param width The scaled width of the image.
--  * @param height The scaled height of the image.
--  * @param observer The image observer to notify of the status of the
--  * image preparation.
--  *
--  * @return <code>true</code> if the image is already fully prepared
--  * for rendering, <code>false</code> otherwise.
--  */
--public boolean
--prepareImage(Image image, int width, int height, ImageObserver observer)
--{
--  return(getPeer().prepareImage(image, width, height, observer));
--}
-+  /** Forward event to the appropriate processXXXEvent method based on the
-+    * event type.
-+    */
-+  protected void processEvent(AWTEvent e)
-+  {
-+
-+    /* Note: the order of these if statements are
-+       important. Subclasses must be checked first. Eg. MouseEvent
-+       must be checked before ComponentEvent, since a MouseEvent
-+       object is also an instance of a ComponentEvent. */
-+
-+    if (e instanceof FocusEvent)
-+      processFocusEvent((FocusEvent) e);
-+    else if (e instanceof PaintEvent)
-+      processPaintEvent((PaintEvent) e);
-+    else if (e instanceof MouseEvent)
-+      {
-+        if (e.id == MouseEvent.MOUSE_MOVED 
-+	    || e.id == MouseEvent.MOUSE_DRAGGED)
-+	  processMouseMotionEvent((MouseEvent) e);
-+	else
-+	  processMouseEvent((MouseEvent) e);
-+      }
-+    else if (e instanceof ComponentEvent)
-+      processComponentEvent((ComponentEvent) e);
-+    else if (e instanceof KeyEvent)
-+      processKeyEvent((KeyEvent) e);
-+    else if (e instanceof InputMethodEvent)
-+      processInputMethodEvent((InputMethodEvent) e);
-+    else if (e instanceof HierarchyEvent)
-+      {
-+        if (e.id == HierarchyEvent.HIERARCHY_CHANGED)
-+	  processHierarchyEvent((HierarchyEvent) e);
-+	else
-+	  processHierarchyBoundsEvent((HierarchyEvent) e);
-+      }
-+  }
-+  
-+  protected void processComponentEvent(ComponentEvent e)
-+  {
-+    if (componentListener == null)
-+      return;
-+    switch (e.id)
-+      {
-+        case ComponentEvent.COMPONENT_HIDDEN:
-+	  componentListener.componentHidden(e);
-+	break;
-+		
-+        case ComponentEvent.COMPONENT_MOVED:
-+	  componentListener.componentMoved(e);
-+	break;
-+	
-+	case ComponentEvent.COMPONENT_RESIZED:
-+	  componentListener.componentResized(e);
-+	break;
-+	
-+	case ComponentEvent.COMPONENT_SHOWN:
-+	  componentListener.componentShown(e);
-+	break;
-+      }
-+  }
-+  
-+  protected void processFocusEvent(FocusEvent e)
-+  {
-+    if (focusListener == null)
-+      return;
-+    switch (e.id)
-+      {
-+        case FocusEvent.FOCUS_GAINED:
-+	  focusListener.focusGained(e);
-+	break;
-+        case FocusEvent.FOCUS_LOST:
-+	  focusListener.focusLost(e);
-+	break;
-+      }    
-+  }
-+  
-+  protected void processKeyEvent(KeyEvent e)
-+  {
-+    if (keyListener == null)
-+      return;
-+    switch (e.id)
-+      {
-+	case KeyEvent.KEY_PRESSED:
-+	  keyListener.keyPressed(e);
-+	break;
-+	case KeyEvent.KEY_RELEASED:
-+	  keyListener.keyReleased(e);
-+	break;
-+	case KeyEvent.KEY_TYPED:
-+	  keyListener.keyTyped(e);
-+	break;
-+      }
-+  }
-+  
-+  protected void processMouseEvent(MouseEvent e)
-+  {
-+    if (mouseListener == null)
-+      return;
-+    switch (e.id)
-+      {
-+	case MouseEvent.MOUSE_CLICKED:
-+	  mouseListener.mouseClicked(e);
-+	break;
-+        case MouseEvent.MOUSE_ENTERED:
-+	  mouseListener.mouseEntered(e);
-+	break;
-+	case MouseEvent.MOUSE_EXITED:
-+	  mouseListener.mouseExited(e);
-+	break;
-+	case MouseEvent.MOUSE_PRESSED:
-+	  mouseListener.mousePressed(e);
-+	break;
-+	case MouseEvent.MOUSE_RELEASED:
-+	  mouseListener.mouseReleased(e);
-+	break;
-+      }
-+  }
- 
--/*************************************************************************/
-+  protected void processMouseMotionEvent(MouseEvent e)
-+  {
-+    if (mouseMotionListener == null)
-+      return;
-+    switch (e.id)
-+      {
-+	case MouseEvent.MOUSE_DRAGGED:
-+	  mouseMotionListener.mouseDragged(e);
-+	break;
-+        case MouseEvent.MOUSE_MOVED:
-+	  mouseMotionListener.mouseMoved(e);
-+	break;
-+      }	
-+  }
-+  
-+  /** @since 1.2 */
-+  protected void processInputMethodEvent(InputMethodEvent e)
-+  {
-+    if (inputMethodListener == null)
-+      return;
-+    switch (e.id)
-+      {
-+	case InputMethodEvent.CARET_POSITION_CHANGED:
-+          inputMethodListener.caretPositionChanged(e);
-+	break;
-+	case InputMethodEvent.INPUT_METHOD_TEXT_CHANGED:
-+          inputMethodListener.inputMethodTextChanged(e);
-+	break;
-+      }	
-+  }
-+  
-+  /** @since 1.3 */
-+  protected void processHierarchyEvent(HierarchyEvent e)
-+  {
-+    if (hierarchyListener == null)
-+      return;
-+    if (e.id == HierarchyEvent.HIERARCHY_CHANGED)
-+      hierarchyListener.hierarchyChanged(e);
-+  }
-+  
-+  /** @since 1.3 */
-+  protected void processHierarchyBoundsEvent(HierarchyEvent e)
-+  {
-+    if (hierarchyBoundsListener == null)
-+      return;
-+    switch (e.id)
-+      {
-+        case HierarchyEvent.ANCESTOR_MOVED:
-+	  hierarchyBoundsListener.ancestorMoved(e);
-+	break;
-+	case HierarchyEvent.ANCESTOR_RESIZED:
-+	  hierarchyBoundsListener.ancestorResized(e);
-+	break;
-+      }
-+  }
- 
--/**
--  * Called when an image has changed so that this component is
--  * repainted.
--  *
--  * @param image The image that has been updated.
--  * @param flags Flags as specified in <code>ImageObserver</code>.
--  * @param x The X coordinate 
--  * @param y The Y coordinate
--  * @param width The width
--  * @param height The height
--  *
--  * @return <code>true</code> if the image has been fully loaded,
--  * <code>false</code> otherwise.
--  */
--public boolean
--imageUpdate(Image image, int flags, int x, int y, int width, int height)
--{
--  // FIXME: Implement
--  return(false);
--}
-+  private void processPaintEvent(PaintEvent event)
-+  {
-+    // Can't do graphics without peer
-+    if (peer == null)
-+      return;
-+
-+    Graphics gfx = getGraphics();
-+    Shape clip = event.getUpdateRect();
-+    gfx.setClip(clip);
- 
--/*************************************************************************/
-+    switch (event.id)
-+      {
-+      case PaintEvent.PAINT:
-+	paint(gfx);
-+	break;
-+      case PaintEvent.UPDATE:
-+	update(gfx);
-+	break;
-+      default:
-+	throw new IllegalArgumentException("unknown paint event");
-+      }
-+  }
-+  
-+  /** @deprecated */
-+  public boolean handleEvent(Event evt)
-+  {
-+    return false;
-+  }
-+  
-+  /** @deprecated */
-+  public boolean mouseDown(Event evt, int x, int y)
-+  {
-+    return false;
-+  }
-+  
-+  /** @deprecated */
-+  public boolean mouseDrag(Event evt, int x, int y)
-+  {
-+    return false;
-+  }
- 
--/**
--  * Paints this component on the screen.  The clipping region in the
--  * graphics context will indicate the region that requires painting.
--  *
--  * @param graphics The graphics context for this paint job.
--  */
--public void
--paint(Graphics graphics)
--{
--}
-+  /** @deprecated */
-+  public boolean mouseUp(Event evt, int x, int y)
-+  {
-+    return false;
-+  }
- 
--/*************************************************************************/
-+  /** @deprecated */
-+  public boolean mouseMove(Event evt, int x, int y)
-+  {
-+    return false;
-+  }
- 
--/**
--  * Paints this entire component, including any sub-components.
--  *
--  * @param graphics The graphics context for this paint job.
--  */
--public void
--paintAll(Graphics graphics)
--{
--}
-+  /** @deprecated */
-+  public boolean mouseEnter(Event evt, int x, int y)
-+  {
-+    return false;
-+  }
- 
--/*************************************************************************/
-+  /** @deprecated */
-+  public boolean mouseExit(Event evt, int x, int y)
-+  {
-+    return false;
-+  }
- 
--/**
--  * Repaint this entire component.  The <code>update()</code> method
--  * on this component will be called as soon as possible.
--  * // FIXME: What are the coords relative to?
--  */
--public void
--repaint()
--{
--  repaint(0, 0, 0, bounding_rectangle.width, bounding_rectangle.height);
--}
-+  /** @deprecated */
-+  public boolean keyDown(Event evt, int key)
-+  {
-+    return false;
-+  }
- 
--/*************************************************************************/
-+  /** @deprecated */
-+  public boolean keyUp(Event evt, int key)
-+  {
-+    return false;
-+  }
- 
--/**
--  * Repaint this entire component.  The <code>update()</code> method
--  * on this component will be called in approximate the specified number
--  * of milliseconds.
--  * // FIXME: What are the coords relative to?
--  *
--  * @param tm The number of milliseconds before this component should
--  * be repainted.
--  */
--public void
--repaint(long tm)
--{
--  repaint(tm, 0, 0, bounding_rectangle.width, bounding_rectangle.height);
--}
-+  /** @deprecated */
-+  public boolean action(Event evt, Object what)
-+  {
-+    return false;
-+  }
- 
--/*************************************************************************/
-+  public void addNotify()
-+  {
-+    if (peer == null)
-+      peer = getToolkit().createComponent(this);
-+
-+    /* Add notify children using a template method, so that it is
-+       possible to ensure that the new event mask delivered to the
-+       peer. */
-+    addNotifyContainerChildren();
-+
-+    /* Now that all the children has gotten their peers, we should
-+       have the event mask needed for this component and its
-+       lightweight subcomponents. */
-+
-+    peer.setEventMask(eventMask);
-+
-+    /* We do not invalidate here, but rather leave that job up to
-+       the peer. For efficiency, the peer can choose not to
-+       invalidate if it is happy with the current dimensions,
-+       etc. */
-+  }
- 
--/**
--  * Repaints the specified rectangular region within this component.
--  * This <code>update</code> method on this component will be called as
--  * soon as possible.
--  * // FIXME: What are the coords relative to?
--  *
--  * @param x The X coordinate of the upper left of the region to repaint
--  * @param y The Y coordinate of the upper left of the region to repaint
--  * @param width The width of the region to repaint.
--  * @param height The height of the region to repaint.
--  */
--public void
--repaint(int x, int y, int width, int height)
--{
--  repaint(0, x, y, width, height);
--}
-+  void addNotifyContainerChildren() 
-+  {
-+    // nothing to do unless we're a container
-+  }
- 
--/*************************************************************************/
-+  public void removeNotify()
-+  {    
-+    if (peer != null)
-+      peer.dispose();
-+    peer = null;
-+  }
-+  
-+  /** @deprecated */
-+  public boolean gotFocus(Event evt, Object what)
-+  {
-+    return false;
-+  }
-+  
-+  /** @deprecated */
-+  public boolean lostFocus(Event evt, Object what)
-+  {
-+    return false;
-+  }
- 
--/**
--  * Repaints the specified rectangular region within this component.
--  * This <code>update</code> method on this component will be called in
--  * approximately the specified number of milliseconds.
--  * // FIXME: What are the coords relative to?
--  *
--  * @param tm The number of milliseconds before this component should
--  * be repainted.
--  * @param x The X coordinate of the upper left of the region to repaint
--  * @param y The Y coordinate of the upper left of the region to repaint
--  * @param width The width of the region to repaint.
--  * @param height The height of the region to repaint.
--  */
--public void
--repaint(long tm, int x, int y, int width, int height)
--{
--  Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(new PaintEvent(
--    this, PaintEvent.UPDATE, new Rectangle(x, y, width, height)));
--}
-+  public boolean isFocusTraversable()
-+  {
-+    return enabled && visible && (peer == null || peer.isFocusTraversable ());
-+  }
- 
--/*************************************************************************/
-+  public void requestFocus()
-+  {
-+    // If there's no peer then this component can't get the focus.  We
-+    // treat it as a silent rejection of the request.
-+    if (peer != null)
-+      peer.requestFocus ();
-+  }
- 
--/**
--  * Updates this component.  This method fills the component
--  * with the background color, then sets the foreground color of the
--  * specified graphics context to the foreground color of this component
--  * and calls the <code>paint()</code> method.
--  * // FIXME: What are the coords relative to?
--  *
--  * @param graphics The graphics context for this update.
--  */
--public void
--update(Graphics graphics)
--{
--  graphics.clearRect(0, 0, bounding_rectangle.width, 
--                     bounding_rectangle.height);
--  graphics.setColor(getForeground());
--  paint(graphics);
--}
-+  // This method is used to implement transferFocus().
-+  // CHILD is the child making the request.
-+  // This is overridden by Container; when called for an ordinary
-+  // component there is no child and so we always return null.
-+  Component findNextFocusComponent (Component child)
-+  {
-+    return null;
-+  }
- 
--/*************************************************************************/
-+  public void transferFocus()
-+  {
-+    Component next;
-+    if (parent == null)
-+      next = findNextFocusComponent (null);
-+    else
-+      next = parent.findNextFocusComponent (this);
-+    if (next != null && next != this)
-+      next.requestFocus ();
-+  }
- 
--/**
--  * Prints this component.  This method is
--  * provided so that printing can be done in a different manner from
--  * painting.  However, the implementation in this class simply calls
--  * the <code>paint()</code> method.
--  *
--  * @param graphics The graphics context of the print device.
--  */
--public void
--print(Graphics graphics)
--{
--  paint(graphics);
--}
-+  /** @deprecated */
-+  public void nextFocus()
-+  {
-+    transferFocus();
-+  }
- 
--/*************************************************************************/
-+  /** @since 1.2 */
-+  public boolean hasFocus()
-+  {
-+    return hasFocus;
-+  }
- 
--/**
--  * Prints this component, including all sub-components.  This method is
--  * provided so that printing can be done in a different manner from
--  * painting.  However, the implementation in this class simply calls
--  * the <code>paintAll()</code> method.
--  *
--  * @param graphics The graphics context of the print device.
--  */
--public void
--printAll(Graphics graphics)
--{
--  paintAll(graphics);
--}
-+  public synchronized void add(PopupMenu popup)
-+  {
-+    if (popups == null)
-+      popups = new Vector();
-+    popups.addElement(popup);    
-+  }
- 
--/*************************************************************************/
-+  public synchronized void remove(MenuComponent popup)
-+  {
-+    popups.removeElement(popup);
-+  }
- 
--/**
--  * Prints a listing of this component to the standard output.
--  */
--public void
--list()
--{
--  System.out.println(toString());
--}
-+  protected String paramString()
-+  {
-+    StringBuffer param = new StringBuffer();
-+    String name = getName();
-+    if (name != null)
-+      {
-+	param.append(name);
-+	param.append(",");
-+      }
-+    param.append(width);
-+    param.append("x");
-+    param.append(height);
-+    param.append("+");
-+    param.append(x);
-+    param.append("+");
-+    param.append(y);
-+    
-+    if (!isValid())
-+      param.append(",invalid");
-+    if (!isVisible())
-+      param.append(",invisible");
-+    if (!isEnabled())
-+      param.append(",disabled");
-+    if (!isOpaque())
-+      param.append(",translucent");
-+    if (isDoubleBuffered())
-+      param.append(",doublebuffered");
-+    
-+    return param.toString();
-+  }
- 
--/*************************************************************************/
-+  public String toString()
-+  {
-+    return this.getClass().getName() + "[" + paramString() + "]";
-+  }
- 
--/**
--  * Prints a listing of this component to the specified print stream.
--  *
--  * @param stream The <code>PrintStream</code> to print to.
--  */
--public void
--list(PrintStream stream)
--{
--  stream.println(toString());
--}
-+  public void list ()
-+  {
-+    list (System.out, 0);
-+  }
- 
--/*************************************************************************/
-+  public void list (PrintStream out)
-+  {
-+    list (out, 0);
-+  }
- 
--/**
--  * Prints a listing of this component to the specified print stream,
--  * starting at the specified indentation point.
--  *
--  * @param stream The <code>PrintStream</code> to print to.
--  * @param indent The indentation point.
--  */
--public void
--list(PrintStream stream, int indent)
--{
--  for(int i = 0; i < indent; i++)
--    stream.print(" ");
-+  public void list (PrintStream out, int indent)
-+  {
-+    for (int i = 0; i < indent; ++i)
-+      out.print (' ');
-+    out.println (toString ());
-+  }
- 
--  stream.println(toString());
--}
-+  public void list (PrintWriter out)
-+  {
-+    list (out, 0);
-+  }
- 
--/*************************************************************************/
-+  public void list (PrintWriter out, int indent)
-+  {
-+    for (int i = 0; i < indent; ++i)
-+      out.print (' ');
-+    out.println (toString ());
-+  }
- 
--/**
--  * Prints a listing of this component to the specified print writer.
--  *
--  * @param writer The <code>PrintWrinter</code> to print to.
--  */
--public void
--list(PrintWriter writer)
--{
--  writer.println(toString());
--}
-+  public void addPropertyChangeListener(PropertyChangeListener listener)
-+  {
-+    if (changeSupport == null)
-+      changeSupport = new PropertyChangeSupport(this);
-+    changeSupport.addPropertyChangeListener(listener);
-+  }
- 
--/*************************************************************************/
-+  public void removePropertyChangeListener(PropertyChangeListener listener)
-+  {
-+    if (changeSupport != null)
-+      changeSupport.removePropertyChangeListener(listener);         
-+  }
- 
--/**
--  * Prints a listing of this component to the specified print writer,
--  * starting at the specified indentation point.
--  *
--  * @param writer The <code>PrintWriter</code> to print to.
--  * @param indent The indentation point.
--  */
--public void
--list(PrintWriter writer, int indent)
--{
--  for(int i = 0; i < indent; i++)
--    writer.print(" ");
-+  public void addPropertyChangeListener(String propertyName,
-+                                	PropertyChangeListener listener)
-+  {
-+    if (changeSupport == null)
-+      changeSupport = new PropertyChangeSupport(this);
-+    changeSupport.addPropertyChangeListener(propertyName, listener);  
-+  }
- 
--  writer.println(toString());
--}
-+  public void removePropertyChangeListener(String propertyName,
-+                                           PropertyChangeListener listener)
-+  {
-+    if (changeSupport != null)
-+      changeSupport.removePropertyChangeListener(propertyName, listener);
-+  }
- 
--/*************************************************************************/
-+  protected void firePropertyChange(String propertyName, Object oldValue, 
-+                                    Object newValue)
-+  {
-+    if (changeSupport != null)
-+      changeSupport.firePropertyChange(propertyName, oldValue, newValue);    
-+  }
- 
--/**
--  * Returns a debugging string representing this component.
--  *
--  * @return A string representing this component.
--  */
--protected String
--paramString()
--{
--  return(toString());
--} 
-+  public void setComponentOrientation(ComponentOrientation o)
-+  {
-+    orientation = o;
-+  }
- 
--/*************************************************************************/
-+  public ComponentOrientation getComponentOrientation()
-+  {
-+    return orientation;
-+  }
- 
--/**
--  * Returns a string representation of this component.
--  *
--  * @return A string representation of this component
-+  /*
-+  public AccessibleContext getAccessibleContext()
-+  {
-+    return accessibleContext;
-+  }
-   */
--public String
--toString()
--{
--  return(getClass().getName() + "(" + getName() + ")");
- }
--
--} // class Component
--
Index: compare/java.lang.Double.diff
===================================================================
RCS file: java.lang.Double.diff
diff -N java.lang.Double.diff
--- /dev/null	Tue May  5 13:32:27 1998
+++ compare/java.lang.Double.diff Tue Jan 15 20:25:57 2002
@@ -0,0 +1,36 @@
+--- /home/tromey/gnu/egcs/classpath/classpath/java/lang/Double.java	Tue Jan 15 21:34:47 2002
++++ java/lang/Double.java	Tue Jan 15 21:11:59 2002
+@@ -44,8 +44,7 @@
+  *
+  * @author Paul Fisher
+  * @author Andrew Haley <aph@cygnus.com>
+- * @author Eric Blake <ebb9@email.byu.edu>
+- * @since 1.0
++ * @since JDK 1.0
+  */
+ public final class Double extends Number implements Comparable
+ {
+@@ -166,10 +165,10 @@
+ 
+     double d = ((Double) obj).value;
+ 
+-    // common case first, then check NaN and 0
+-    if (value == d)
+-      return (value != 0) || (1 / value == 1 / d);
+-    return isNaN(value) && isNaN(d);
++    // GCJ LOCAL: this implementation is probably faster than
++    // Classpath's, especially once we inline doubleToLongBits.
++    return doubleToLongBits (value) == doubleToLongBits (d);
++    // END GCJ LOCAL
+   }
+ 
+   /**
+@@ -238,8 +237,6 @@
+    */
+   public static Double valueOf (String s) throws NumberFormatException
+   {
+-    if (s == null)
+-	throw new NullPointerException (s);
+     return new Double (s);
+   }
+ 
Index: compare/java.lang.Float.diff
===================================================================
RCS file: java.lang.Float.diff
diff -N java.lang.Float.diff
--- /dev/null	Tue May  5 13:32:27 1998
+++ compare/java.lang.Float.diff Tue Jan 15 20:25:57 2002
@@ -0,0 +1,27 @@
+--- /home/tromey/gnu/egcs/classpath/classpath/java/lang/Float.java	Tue Jan 15 12:16:02 2002
++++ java/lang/Float.java	Tue Jan 15 21:11:14 2002
+@@ -44,8 +44,7 @@
+  *
+  * @author Paul Fisher
+  * @author Andrew Haley <aph@cygnus.com>
+- * @author Eric Blake <ebb9@email.byu.edu>
+- * @since 1.0
++ * @since JDK 1.0
+  */
+ public final class Float extends Number implements Comparable
+ {
+@@ -235,10 +234,10 @@
+ 
+     float f = ((Float) obj).value;
+ 
+-    // common case first, then check NaN and 0
+-    if (value == f)
+-      return (value != 0) || (1 / value == 1 / f);
+-    return isNaN(value) && isNaN(f);
++    // GCJ LOCAL: this implementation is probably faster than
++    // Classpath's, especially once we inline floatToIntBits.
++    return floatToIntBits (value) == floatToIntBits (f);
++    // END GCJ LOCAL
+   }
+ 
+   /**


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