* java/awt/peer/ButtonPeer.java: Replace with Classpath version.
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 Jan 2002 22:03:04 +0000 (22:03 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 Jan 2002 22:03:04 +0000 (22:03 +0000)
* java/awt/peer/CanvasPeer.java: Replace with Classpath version.
* java/awt/peer/CheckboxMenuItemPeer.java: Replace with Classpath
version.
* java/awt/peer/CheckboxPeer.java: Replace with Classpath version.
* java/awt/peer/ChoicePeer.java: Replace with Classpath version.
* java/awt/peer/ComponentPeer.java: Replace with Classpath version.
* java/awt/peer/ContainerPeer.java: Replace with Classpath version.
* java/awt/peer/DialogPeer.java: Replace with Classpath version.
* java/awt/peer/FileDialogPeer.java: Replace with Classpath version.
* java/awt/peer/FontPeer.java: Replace with Classpath version.
* java/awt/peer/FramePeer.java: Replace with Classpath version.
* java/awt/peer/LabelPeer.java: Replace with Classpath version.
* java/awt/peer/LightweightPeer.java: Replace with Classpath version.
* java/awt/peer/ListPeer.java: Replace with Classpath version.
* java/awt/peer/MenuBarPeer.java: Replace with Classpath version.
* java/awt/peer/MenuComponentPeer.java: Replace with Classpath version.
* java/awt/peer/MenuItemPeer.java: Replace with Classpath version.
* java/awt/peer/MenuPeer.java: Replace with Classpath version.
* java/awt/peer/PanelPeer.java: Replace with Classpath version.
* java/awt/peer/PopupMenuPeer.java: Replace with Classpath version.
* java/awt/peer/ScrollPanePeer.java: Replace with Classpath version.
* java/awt/peer/ScrollbarPeer.java: Replace with Classpath version.
* java/awt/peer/TextAreaPeer.java: Replace with Classpath version.
* java/awt/peer/TextComponentPeer.java: Replace with Classpath version.
* java/awt/peer/TextFieldPeer.java: Replace with Classpath version.
* java/awt/peer/WindowPeer.java: Replace with Classpath version.
* gnu/awt/xlib/XPanelPeer.java (insets): New method.
* gnu/awt/xlib/XCanvasPeer.java (show, hide): New methods.
(minimumSize, preferredSize, reshape): Likewise.
* gnu/awt/xlib/XFramePeer.java (insets, enable, disable,
getColorModel): New methods.
* java/awt/PopupMenu.java: Merged with Classpath.
* java/awt/MenuBar.java: Merged with Classpath.
* java/awt/SystemColor.java: Replace with Classpath version.
* java/awt/Panel.java: Merged with Classpath.
* java/awt/PaintContext.java: Updated copyright.
* java/awt/MenuShortcut.java: Merged with Classpath.
* java/awt/MenuContainer.java: Merged with Classpath.
* java/awt/Menu.java: Merged with Classpath.
* java/awt/MediaEntry.java: New file from Classpath.
* java/awt/MediaTracker.java: New file from Classpath.
* java/awt/List.java: Merged with Classpath version.
* java/awt/Insets.java: Merged with Classpath version.
* java/awt/ImageMediaEntry.java: New file from Classpath.
* java/awt/Image.java: Replaced with Classpath version.
* java/awt/FontMetrics.java: Merged with Classpath version.
* java/awt/Cursor.java (getDefaultCursor): Use DEFAULT_CURSOR
constant.
* java/awt/Font.java: Merged with Classpath version.
* java/awt/Dialog.java: Merged with Classpath version.
* java/awt/Color.java: Merged with Classpath version.
* java/awt/Choice.java: Merged with Classpath version.
* java/awt/CheckboxMenuItem.java: Merged with Classpath version.
* java/awt/Adjustable.java: Replace with Classpath version.
* java/awt/MenuItem.java (paramString): Don't include class name
or brackets.  Call superclass paramString.
* java/awt/MenuComponent.java (toString): Call paramString.
(paramString): Compute string; don't call toString.
* java/awt/Label.java (paramString): Don't include class name
or brackets.  Call superclass paramString.
* java/awt/Checkbox.java (paramString): Don't include class name
or brackets.  Call superclass paramString.
* java/awt/Button.java (paramString): Don't include class name or
brackets.  Call superclass paramString.
* java/awt/MenuComponent.java (getTreeLock): Now protected.

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

58 files changed:
libjava/ChangeLog
libjava/gnu/awt/xlib/XCanvasPeer.java
libjava/gnu/awt/xlib/XFramePeer.java
libjava/gnu/awt/xlib/XPanelPeer.java
libjava/java/awt/Adjustable.java
libjava/java/awt/Button.java
libjava/java/awt/Checkbox.java
libjava/java/awt/CheckboxMenuItem.java
libjava/java/awt/Choice.java
libjava/java/awt/Color.java
libjava/java/awt/Cursor.java
libjava/java/awt/Dialog.java
libjava/java/awt/FileDialog.java
libjava/java/awt/Font.java
libjava/java/awt/FontMetrics.java
libjava/java/awt/Image.java
libjava/java/awt/ImageMediaEntry.java [new file with mode: 0644]
libjava/java/awt/Insets.java
libjava/java/awt/Label.java
libjava/java/awt/List.java
libjava/java/awt/MediaEntry.java [new file with mode: 0644]
libjava/java/awt/MediaTracker.java [new file with mode: 0644]
libjava/java/awt/Menu.java
libjava/java/awt/MenuBar.java
libjava/java/awt/MenuComponent.java
libjava/java/awt/MenuContainer.java
libjava/java/awt/MenuItem.java
libjava/java/awt/MenuShortcut.java
libjava/java/awt/PaintContext.java
libjava/java/awt/Panel.java
libjava/java/awt/PopupMenu.java
libjava/java/awt/SystemColor.java
libjava/java/awt/peer/ButtonPeer.java
libjava/java/awt/peer/CanvasPeer.java
libjava/java/awt/peer/CheckboxMenuItemPeer.java
libjava/java/awt/peer/CheckboxPeer.java
libjava/java/awt/peer/ChoicePeer.java
libjava/java/awt/peer/ComponentPeer.java
libjava/java/awt/peer/ContainerPeer.java
libjava/java/awt/peer/DialogPeer.java
libjava/java/awt/peer/FileDialogPeer.java
libjava/java/awt/peer/FontPeer.java
libjava/java/awt/peer/FramePeer.java
libjava/java/awt/peer/LabelPeer.java
libjava/java/awt/peer/LightweightPeer.java
libjava/java/awt/peer/ListPeer.java
libjava/java/awt/peer/MenuBarPeer.java
libjava/java/awt/peer/MenuComponentPeer.java
libjava/java/awt/peer/MenuItemPeer.java
libjava/java/awt/peer/MenuPeer.java
libjava/java/awt/peer/PanelPeer.java
libjava/java/awt/peer/PopupMenuPeer.java
libjava/java/awt/peer/ScrollPanePeer.java
libjava/java/awt/peer/ScrollbarPeer.java
libjava/java/awt/peer/TextAreaPeer.java
libjava/java/awt/peer/TextComponentPeer.java
libjava/java/awt/peer/TextFieldPeer.java
libjava/java/awt/peer/WindowPeer.java

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