summaryrefslogtreecommitdiff
path: root/java/awt
diff options
context:
space:
mode:
Diffstat (limited to 'java/awt')
-rw-r--r--java/awt/Button.java4
-rw-r--r--java/awt/Checkbox.java4
-rw-r--r--java/awt/CheckboxMenuItem.java26
-rw-r--r--java/awt/Choice.java110
-rw-r--r--java/awt/Color.java121
-rw-r--r--java/awt/Cursor.java250
-rw-r--r--java/awt/Dialog.java51
-rw-r--r--java/awt/FileDialog.java41
-rw-r--r--java/awt/Font.java24
-rw-r--r--java/awt/FontMetrics.java7
-rw-r--r--java/awt/GridBagConstraints.java109
-rw-r--r--java/awt/Insets.java12
-rw-r--r--java/awt/Label.java4
-rw-r--r--java/awt/List.java124
-rw-r--r--java/awt/Menu.java64
-rw-r--r--java/awt/MenuBar.java77
-rw-r--r--java/awt/MenuComponent.java6
-rw-r--r--java/awt/MenuContainer.java6
-rw-r--r--java/awt/MenuItem.java4
-rw-r--r--java/awt/MenuShortcut.java26
-rw-r--r--java/awt/PaintContext.java46
-rw-r--r--java/awt/Panel.java9
-rw-r--r--java/awt/PopupMenu.java9
23 files changed, 720 insertions, 414 deletions
diff --git a/java/awt/Button.java b/java/awt/Button.java
index 1626047bb..64c55cb5c 100644
--- a/java/awt/Button.java
+++ b/java/awt/Button.java
@@ -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
diff --git a/java/awt/Checkbox.java b/java/awt/Checkbox.java
index 60795ae74..a7d12ad5f 100644
--- a/java/awt/Checkbox.java
+++ b/java/awt/Checkbox.java
@@ -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
diff --git a/java/awt/CheckboxMenuItem.java b/java/awt/CheckboxMenuItem.java
index 1966058d1..bdede7b85 100644
--- a/java/awt/CheckboxMenuItem.java
+++ b/java/awt/CheckboxMenuItem.java
@@ -1,5 +1,5 @@
/* CheckboxMenuItem.java -- A menu option with a checkbox on it.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -38,6 +38,7 @@ import java.awt.event.ItemListener;
* 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
@@ -139,10 +140,11 @@ public synchronized void
setState(boolean state)
{
this.state = state;
-
- CheckboxMenuItemPeer cmip = (CheckboxMenuItemPeer)getPeer();
- if (cmip != null)
- cmip.setState(state);
+ if (peer != null)
+ {
+ CheckboxMenuItemPeer cp = (CheckboxMenuItemPeer) peer;
+ cp.setState (state);
+ }
}
/*************************************************************************/
@@ -174,8 +176,13 @@ getSelectedObjects()
public synchronized void
addNotify()
{
- if (getPeer() == null)
- setPeer((MenuComponentPeer)getToolkit().createCheckboxMenuItem(this));
+ if (peer != null)
+ {
+ // This choice of toolkit seems unsatisfying, but I'm not sure
+ // what else to do.
+ peer = getToolkit().createCheckboxMenuItem(this);
+ }
+ super.addNotify ();
}
/*************************************************************************/
@@ -222,6 +229,8 @@ processEvent(AWTEvent event)
{
if (event instanceof ItemEvent)
processItemEvent((ItemEvent)event);
+ else
+ super.processEvent(event);
}
/*************************************************************************/
@@ -248,7 +257,8 @@ processItemEvent(ItemEvent event)
public String
paramString()
{
- return(getClass().getName() + "(label=" + getLabel() + ",state=" + state + ")");
+ return ("label=" + getLabel() + ",state=" + state
+ + "," + super.paramString());
}
} // class CheckboxMenuItem
diff --git a/java/awt/Choice.java b/java/awt/Choice.java
index f26a74bc6..68064356d 100644
--- a/java/awt/Choice.java
+++ b/java/awt/Choice.java
@@ -1,5 +1,5 @@
/* Choice.java -- Java choice button widget.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -63,7 +63,7 @@ private Vector pItems = new Vector();
/**
* @serial The index of the selected item in the choice box.
*/
-private int selectedIndex;
+private int selectedIndex = -1;
// Listener chain
private ItemListener item_listeners;
@@ -139,11 +139,20 @@ getItem(int index)
public synchronized void
add(String item)
{
+ if (item == null)
+ throw new IllegalArgumentException ("item must be non-null");
+
pItems.addElement(item);
- ChoicePeer cp = (ChoicePeer)getPeer();
- if (cp != null)
- cp.add(item, getItemCount());
+ int i = pItems.size () - 1;
+ if (peer != null)
+ {
+ ChoicePeer cp = (ChoicePeer) peer;
+ cp.add (item, i);
+ }
+
+ if (i == 0)
+ select (0);
}
/*************************************************************************/
@@ -156,29 +165,36 @@ add(String item)
public synchronized void
addItem(String item)
{
- pItems.addElement(item);
-
- ChoicePeer cp = (ChoicePeer)getPeer();
- if (cp != null)
- cp.addItem(item, getItemCount());
+ add(item);
}
/*************************************************************************/
-/**
- * Inserts the specified item to this choice box at the specified index.
- *
- * @param item The item to add.
- * @param index The index at which the item should be inserted.
- */
+/** 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 synchronized void
insert(String item, int index)
{
+ if (index > getItemCount ())
+ index = getItemCount ();
+
pItems.insertElementAt(item, index);
- ChoicePeer cp = (ChoicePeer)getPeer();
- if (cp != null)
- cp.addItem(item, getItemCount());
+ if (peer != null)
+ {
+ ChoicePeer cp = (ChoicePeer) peer;
+ cp.add (item, index);
+ }
+
+ if (getItemCount () == 1 || selectedIndex >= index)
+ select (0);
}
/*************************************************************************/
@@ -194,6 +210,9 @@ 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);
}
@@ -211,9 +230,16 @@ remove(int index)
{
pItems.removeElementAt(index);
- ChoicePeer cp = (ChoicePeer)getPeer();
- if (cp != null)
- cp.remove(index);
+ if (peer != null)
+ {
+ ChoicePeer cp = (ChoicePeer) peer;
+ cp.remove (index);
+ }
+
+ if (index == selectedIndex)
+ select (0);
+ else if (selectedIndex > index)
+ --selectedIndex;
}
/*************************************************************************/
@@ -226,24 +252,27 @@ removeAll()
{
int count = getItemCount();
- if (count > 0)
- for (int i = 0; i < count; i++)
- remove(i);
-
- pItems = new Vector();
+ for (int i = 0; i < count; i++)
+ {
+ // Always remove 0.
+ remove(0);
+ }
}
/*************************************************************************/
/**
- * Returns the currently selected item.
+ * Returns the currently selected item, or null if no item is
+ * selected.
*
* @return The currently selected item.
*/
public synchronized String
getSelectedItem()
{
- return((String)pItems.elementAt(selectedIndex));
+ return (selectedIndex == -1
+ ? null
+ : ((String)pItems.elementAt(selectedIndex)));
}
/*************************************************************************/
@@ -256,6 +285,9 @@ getSelectedItem()
public synchronized Object[]
getSelectedObjects()
{
+ if (selectedIndex == -1)
+ return null;
+
Object[] objs = new Object[1];
objs[0] = pItems.elementAt(selectedIndex);
@@ -291,10 +323,11 @@ select(int index)
throw new IllegalArgumentException("Bad index: " + index);
this.selectedIndex = index;
-
- ChoicePeer cp = (ChoicePeer)getPeer();
- if (cp != null)
- cp.select(index);
+ if (peer != null)
+ {
+ ChoicePeer cp = (ChoicePeer) peer;
+ cp.select (index);
+ }
}
/*************************************************************************/
@@ -310,7 +343,8 @@ public synchronized void
select(String item)
{
int index = pItems.indexOf(item);
- select(index);
+ if (index >= 0)
+ select(index);
}
/*************************************************************************/
@@ -321,8 +355,9 @@ select(String item)
public void
addNotify()
{
- if (getPeer() == null)
- setPeer((ComponentPeer)getToolkit().createChoice(this));
+ if (peer == null)
+ peer = getToolkit ().createChoice (this);
+ super.addNotify ();
}
/*************************************************************************/
@@ -395,8 +430,7 @@ processItemEvent(ItemEvent event)
protected String
paramString()
{
- return(getClass().getName() + "(selectedIndex=" + selectedIndex + ")");
+ return ("selectedIndex=" + selectedIndex + "," + super.paramString());
}
} // class Choice
-
diff --git a/java/awt/Color.java b/java/awt/Color.java
index ac1cc51e8..52db41c8f 100644
--- a/java/awt/Color.java
+++ b/java/awt/Color.java
@@ -1,5 +1,5 @@
/* Color.java -- Class representing a color in Java
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -42,67 +42,67 @@ public class Color implements java.io.Serializable
/**
* Constant for the color white
*/
-public static final Color white = new Color(255,255,255);
+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);
+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);
+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);
+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);
+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);
+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);
+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);
+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);
+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);
+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);
+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);
+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);
+public static final Color blue = new Color(0,0,255,255);
// Serialization Constant
private static final long serialVersionUID = 118526816881161077L;
@@ -111,6 +111,9 @@ private static final long serialVersionUID = 118526816881161077L;
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;
/*************************************************************************/
@@ -121,7 +124,7 @@ private static final int bluemask = 255;
/**
* @serial The RGB value of the color.
*/
-private int value;
+private int value = 0xFFFFFFFF;
/*************************************************************************/
@@ -292,6 +295,16 @@ Color(int red, int green, int blue)
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);
+}
+
/*************************************************************************/
/**
@@ -307,6 +320,14 @@ Color(int value)
this.value = value;
}
+public
+Color(int value, boolean hasalpha)
+{
+ this.value = value;
+ if (! hasalpha)
+ this.value |= 0xFF000000;
+}
+
/*************************************************************************/
/**
@@ -382,6 +403,23 @@ getBlue()
return(blueval);
}
+public int
+getAlpha()
+{
+ int alphaval = (value & alphamask);
+
+ return(alphaval);
+}
+
+public int
+getTransparency()
+{
+ if (getAlpha() == 0xFF)
+ return Transparency.OPAQUE;
+ else
+ return Transparency.TRANSLUCENT;
+}
+
/*************************************************************************/
/**
@@ -408,22 +446,10 @@ getRGB()
public Color
brighter()
{
- int red = getRed();
- int green = getGreen();
- int blue = getBlue();
-
- red += 10;
- green += 10;
- blue += 10;
-
- if (red > 255)
- red = 255;
- if (green > 255)
- green = 255;
- if (blue > 255)
- blue = 255;
-
- return(new Color(red, green, blue));
+ return new Color(Math.min(255, getRed() + BRIGHT_STEP),
+ Math.min(255, getGreen() + BRIGHT_STEP),
+ Math.min(255, getBlue() + BRIGHT_STEP),
+ getAlpha());
}
/*************************************************************************/
@@ -438,22 +464,10 @@ brighter()
public Color
darker()
{
- int red = getRed();
- int green = getGreen();
- int blue = getBlue();
-
- red -= 10;
- green -= 10;
- blue -= 10;
-
- if (red < 0)
- red = 0;
- if (green < 0)
- green = 0;
- if (blue < 0)
- blue = 0;
-
- return(new Color(red, green, blue));
+ return new Color(Math.max(0, getRed() - BRIGHT_STEP),
+ Math.max(0, getGreen() - BRIGHT_STEP),
+ Math.max(0, getBlue() - BRIGHT_STEP),
+ getAlpha());
}
/*************************************************************************/
@@ -483,22 +497,11 @@ hashCode()
public boolean
equals(Object obj)
{
- if (obj == null)
- return(false);
-
if (!(obj instanceof Color))
return(false);
Color c = (Color)obj;
-
- if (c.getRed() != getRed())
- return(false);
- if (c.getGreen() != getGreen())
- return(false);
- if (c.getBlue() != getBlue())
- return(false);
-
- return(true);
+ return value == c.value;
}
/*************************************************************************/
diff --git a/java/awt/Cursor.java b/java/awt/Cursor.java
index 948c412e9..79b1d6c52 100644
--- a/java/awt/Cursor.java
+++ b/java/awt/Cursor.java
@@ -1,5 +1,4 @@
-/* Cursor.java -- Mouse pointer class
- Copyright (C) 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002 Free Software Foundation
This file is part of GNU Classpath.
@@ -34,168 +33,165 @@ package java.awt;
*/
public class Cursor implements java.io.Serializable
{
-
-/*
- * Static Variables
- */
-
-/**
+ /**
* Constant for the system default cursor type
*/
-public static final int DEFAULT_CURSOR = 0;
+ public static final int DEFAULT_CURSOR = 0;
-/**
+ /**
* Constant for a cross-hair cursor.
*/
-public static final int CROSSHAIR_CURSOR = 1;
+ public static final int CROSSHAIR_CURSOR = 1;
-/**
+ /**
* Constant for a cursor over a text field.
*/
-public static final int TEXT_CURSOR = 2;
+ 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;
+ public static final int WAIT_CURSOR = 3;
-/**
+ /**
* Cursor used over SW corner of window decorations.
*/
-public static final int SW_RESIZE_CURSOR = 4;
+ public static final int SW_RESIZE_CURSOR = 4;
-/**
+ /**
* Cursor used over SE corner of window decorations.
*/
-public static final int SE_RESIZE_CURSOR = 5;
+ public static final int SE_RESIZE_CURSOR = 5;
-/**
+ /**
* Cursor used over NW corner of window decorations.
*/
-public static final int NW_RESIZE_CURSOR = 6;
+ public static final int NW_RESIZE_CURSOR = 6;
-/**
+ /**
* Cursor used over NE corner of window decorations.
*/
-public static final int NE_RESIZE_CURSOR = 7;
+ public static final int NE_RESIZE_CURSOR = 7;
-/**
+ /**
* Cursor used over N edge of window decorations.
*/
-public static final int N_RESIZE_CURSOR = 8;
+ public static final int N_RESIZE_CURSOR = 8;
-/**
+ /**
* Cursor used over S edge of window decorations.
*/
-public static final int S_RESIZE_CURSOR = 9;
+ public static final int S_RESIZE_CURSOR = 9;
-/**
- * Cursor used over E edge of window decorations.
+ /**
+ * Cursor used over W edge of window decorations.
*/
-public static final int E_RESIZE_CURSOR = 10;
+ public static final int W_RESIZE_CURSOR = 10;
-/**
- * Cursor used over W edge of window decorations.
+ /**
+ * Cursor used over E edge of window decorations.
*/
-public static final int W_RESIZE_CURSOR = 11;
+ public static final int E_RESIZE_CURSOR = 11;
-/**
+ /**
* Constant for a hand cursor.
*/
-public static final int HAND_CURSOR = 12;
+ public static final int HAND_CURSOR = 12;
-/**
+ /**
* Constant for a cursor used during window move operations.
*/
-public static final int MOVE_CURSOR = 13;
-
-// Serialization constant
-private static final long serialVersionUID = 8028237497568985504L;
-
-/*************************************************************************/
-
-/*
- * Instance Variables
- */
-
-/**
- * @serial The numeric id of this cursor.
- */
-private int type;
-
-/*************************************************************************/
-
-/*
- * Static Methods
- */
-
-/**
- * Returns an instance of the system default cursor type.
- *
- * @return The system default cursor.
- */
-public static Cursor
-getDefaultCursor()
-{
- return(new Cursor(DEFAULT_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) throws IllegalArgumentException
-{
- if ((type < DEFAULT_CURSOR) || (type > MOVE_CURSOR))
- throw new IllegalArgumentException("Bad predefined cursor type: " + type);
-
- return(new Cursor(type));
+ 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)
+ throw new IllegalArgumentException ("invalid cursor " + type);
+ this.type = type;
+ // FIXME: lookup and set name?
+ }
+
+ /** This constructor is used internally only.
+ * 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)
+ throw new IllegalArgumentException ("invalid cursor " + type);
+ if (predefined[type] == null)
+ predefined[type] = new Cursor(type);
+ return predefined[type];
+ }
+
+ public static Cursor getSystemCustomCursor(String name)
+ throws AWTException
+ {
+ // FIXME
+ return null;
+ }
+
+ /**
+ * Returns an instance of the system default cursor type.
+ *
+ * @return The system default cursor.
+ */
+ public static Cursor getDefaultCursor()
+ {
+ return getPredefinedCursor(DEFAULT_CURSOR);
+ }
+
+ /**
+ * Returns the numeric type identifier for this cursor.
+ *
+ * @return The cursor id.
+ */
+ public int getType()
+ {
+ return type;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public String toString()
+ {
+ return (this.getClass() + "[" + getName() + "]");
+ }
}
-
-/*************************************************************************/
-
-/*
- * Constructors
- */
-
-/**
- * Initializes a new instance of <code>Cursor</code> with the specified
- * type.
- *
- * @param type The cursor type.
- */
-public
-Cursor(int type)
-{
- this.type = type;
-}
-
-/*************************************************************************/
-
-/**
- * Instance Variables
- */
-
-/**
- * Returns the numeric type identifier for this cursor.
- *
- * @return The cursor id.
- */
-public int
-getType()
-{
- return(type);
-}
-
-} // class Cursor
-
diff --git a/java/awt/Dialog.java b/java/awt/Dialog.java
index f38105a7f..5469d8de9 100644
--- a/java/awt/Dialog.java
+++ b/java/awt/Dialog.java
@@ -1,5 +1,5 @@
/* Dialog.java -- An AWT dialog box
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -36,6 +36,7 @@ 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
{
@@ -142,6 +143,27 @@ Dialog(Frame parent, String title, boolean modal)
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 ());
+}
+
/*************************************************************************/
/*
@@ -170,10 +192,11 @@ public synchronized void
setTitle(String title)
{
this.title = title;
-
- DialogPeer dp = (DialogPeer)getPeer();
- if (dp != null)
- dp.setTitle(title);
+ if (peer != null)
+ {
+ DialogPeer d = (DialogPeer) peer;
+ d.setTitle (title);
+ }
}
/*************************************************************************/
@@ -231,10 +254,11 @@ public synchronized void
setResizable(boolean resizable)
{
this.resizable = resizable;
-
- DialogPeer dp = (DialogPeer)getPeer();
- if (dp != null)
- dp.setResizable(resizable);
+ if (peer != null)
+ {
+ DialogPeer d = (DialogPeer) peer;
+ d.setResizable (resizable);
+ }
}
/*************************************************************************/
@@ -245,8 +269,9 @@ setResizable(boolean resizable)
public synchronized void
addNotify()
{
- if (getPeer() == null)
- setPeer((ComponentPeer)getToolkit().createDialog(this));
+ if (peer == null)
+ peer = getToolkit ().createDialog (this);
+ super.addNotify ();
}
/*************************************************************************/
@@ -270,8 +295,8 @@ show()
protected String
paramString()
{
- return(getClass().getName() + "(title+" + title + ",modal=" + modal +
- ",resizable=" + resizable + ")");
+ return ("title+" + title + ",modal=" + modal +
+ ",resizable=" + resizable + "," + super.paramString());
}
} // class Dialog
diff --git a/java/awt/FileDialog.java b/java/awt/FileDialog.java
index a32e7a6b4..247ee596d 100644
--- a/java/awt/FileDialog.java
+++ b/java/awt/FileDialog.java
@@ -1,5 +1,5 @@
/* FileDialog.java -- A filename selection dialog box
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -38,6 +38,7 @@ import java.io.FilenameFilter;
* This class implements a file selection dialog box widget.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
+ * @author Tom Tromey <tromey@redhat.com>
*/
public class FileDialog extends Dialog implements java.io.Serializable
{
@@ -202,10 +203,11 @@ public synchronized void
setDirectory(String dir)
{
this.dir = dir;
-
- FileDialogPeer fdp = (FileDialogPeer)getPeer();
- if (fdp != null)
- fdp.setDirectory(dir);
+ if (peer != null)
+ {
+ FileDialogPeer f = (FileDialogPeer) peer;
+ f.setDirectory (dir);
+ }
}
/*************************************************************************/
@@ -232,10 +234,11 @@ public synchronized void
setFile(String file)
{
this.file = file;
-
- FileDialogPeer fdp = (FileDialogPeer)getPeer();
- if (fdp != null)
- fdp.setFile(file);
+ if (peer != null)
+ {
+ FileDialogPeer f = (FileDialogPeer) peer;
+ f.setFile (file);
+ }
}
/*************************************************************************/
@@ -262,10 +265,11 @@ public synchronized void
setFilenameFilter(FilenameFilter filter)
{
this.filter = filter;
-
- FileDialogPeer fdp = (FileDialogPeer)getPeer();
- if (fdp != null)
- fdp.setFilenameFilter(filter);
+ if (peer != null)
+ {
+ FileDialogPeer f = (FileDialogPeer) peer;
+ f.setFilenameFilter (filter);
+ }
}
/*************************************************************************/
@@ -276,10 +280,9 @@ setFilenameFilter(FilenameFilter filter)
public void
addNotify()
{
- if (getPeer() != null)
- return;
-
- setPeer((ComponentPeer)getToolkit().createFileDialog(this));
+ if (peer == null)
+ peer = getToolkit ().createFileDialog (this);
+ super.addNotify ();
}
/*************************************************************************/
@@ -292,8 +295,8 @@ addNotify()
protected String
paramString()
{
- return(getClass().getName() + "(dir=" + dir + ",file=" + file +
- ",mode=" + mode + ")");
+ return ("dir=" + dir + ",file=" + file +
+ ",mode=" + mode + "," + super.paramString());
}
} // class FileDialog
diff --git a/java/awt/Font.java b/java/awt/Font.java
index c9b2c8e8c..266a358e3 100644
--- a/java/awt/Font.java
+++ b/java/awt/Font.java
@@ -1,5 +1,5 @@
/* Font.java -- Font object
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -34,6 +34,7 @@ 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
{
@@ -57,6 +58,10 @@ 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;
+
// Serialization constant
private static final long serialVersionUID = -4206021311591459213L;
@@ -82,6 +87,8 @@ protected int style;
*/
protected int size;
+protected float pointSize;
+
// The native peer for this font
private FontPeer peer;
@@ -204,12 +211,13 @@ getFont(String propname)
* @param style The font style.
* @param size The font point size.
*/
-public
+public
Font(String name, int style, int size)
{
this.name = name;
this.style = style;
this.size = size;
+ this.pointSize = size;
}
/*************************************************************************/
@@ -242,6 +250,12 @@ getSize()
return(size);
}
+public float
+getSize2D()
+{
+ return pointSize;
+}
+
/*************************************************************************/
/**
@@ -308,6 +322,12 @@ getFamily()
return(name);
}
+public int
+getStyle()
+{
+ return style;
+}
+
/*************************************************************************/
/**
diff --git a/java/awt/FontMetrics.java b/java/awt/FontMetrics.java
index 90d175ece..890ffd164 100644
--- a/java/awt/FontMetrics.java
+++ b/java/awt/FontMetrics.java
@@ -1,5 +1,5 @@
/* FontMetrics.java -- Information about about a fonts display characteristics
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -214,7 +214,7 @@ getMaxDecent()
public int
getMaxAdvance()
{
- return(1);
+ return(-1);
}
/*************************************************************************/
@@ -330,7 +330,8 @@ getWidths()
public String
toString()
{
- return(getClass().getName() + "(font=" + font.getName() + ")");
+ return (this.getClass() + "[font=" + font + ",ascent=" + getAscent()
+ + ",descent=" + getDescent() + ",height=" + getHeight() + "]");
}
} // class FontMetrics
diff --git a/java/awt/GridBagConstraints.java b/java/awt/GridBagConstraints.java
new file mode 100644
index 000000000..27e66587e
--- /dev/null
+++ b/java/awt/GridBagConstraints.java
@@ -0,0 +1,109 @@
+// GridBagConstraints.java - Constraints for GridBag layout manager
+
+/* Copyright (C) 2000, 2001 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt;
+
+import java.io.Serializable;
+
+/** This specifies the constraints for a component managed by the
+ * GridBagLayout layout manager. */
+public class GridBagConstraints implements Cloneable, Serializable
+{
+ /** Fill in both directions. */
+ public static final int BOTH = 1;
+ /** Don't fill. */
+ public static final int NONE = 0;
+ /** Fill horizontally. */
+ public static final int HORIZONTAL = 2;
+ /** Fill vertically. */
+ public static final int VERTICAL = 3;
+
+ /** Position in the center. */
+ public static final int CENTER = 10;
+ /** Position to the east. */
+ public static final int EAST = 13;
+ /** Position to the north. */
+ public static final int NORTH = 11;
+ /** Position to the northeast. */
+ public static final int NORTHEAST = 12;
+ /** Position to the northwest. */
+ public static final int NORTHWEST = 18;
+ /** Position to the south. */
+ public static final int SOUTH = 15;
+ /** Position to the southeast. */
+ public static final int SOUTHEAST = 14;
+ /** Position to the southwest. */
+ public static final int SOUTHWEST = 16;
+ /** Position to the west. */
+ public static final int WEST = 17;
+
+ /** Occupy all remaining cells except last cell. */
+ public static final int RELATIVE = -1;
+ /** Occupy all remaining cells. */
+ public static final int REMAINDER = 0;
+
+ public int anchor;
+ public int fill;
+ public int gridheight;
+ public int gridwidth;
+ public int gridx;
+ public int gridy;
+ public Insets insets;
+ public int ipadx;
+ public int ipady;
+ public double weightx;
+ public double weighty;
+
+ /** Create a copy of this object. */
+ public Object clone ()
+ {
+ GridBagConstraints g = (GridBagConstraints) super.clone ();
+ g.insets = (Insets) insets.clone ();
+ return g;
+ }
+
+ /** Create a new GridBagConstraints object with the default
+ * parameters. */
+ public GridBagConstraints ()
+ {
+ this.anchor = CENTER;
+ this.fill = NONE;
+ this.gridx = RELATIVE;
+ this.gridy = RELATIVE;
+ this.gridwidth = 1;
+ this.gridheight = 1;
+ this.ipadx = 0;
+ this.ipady = 0;
+ this.insets = new Insets (0, 0, 0, 0);
+ this.weightx = 0;
+ this.weighty = 0;
+ }
+
+ /** Create a new GridBagConstraints object with the indicated
+ * parameters. */
+ public GridBagConstraints (int gridx, int gridy,
+ int gridwidth, int gridheight,
+ double weightx, double weighty,
+ int anchor, int fill,
+ Insets insets, int ipadx, int ipady)
+ {
+ this.anchor = anchor;
+ this.fill = fill;
+ this.gridx = gridx;
+ this.gridy = gridy;
+ this.gridwidth = gridwidth;
+ this.gridheight = gridheight;
+ this.ipadx = ipadx;
+ this.ipady = ipady;
+ this.insets = insets;
+ this.weightx = weightx;
+ this.weighty = weighty;
+ }
+}
diff --git a/java/awt/Insets.java b/java/awt/Insets.java
index 4fdef89aa..20857d560 100644
--- a/java/awt/Insets.java
+++ b/java/awt/Insets.java
@@ -1,5 +1,5 @@
/* Insets.java -- Information about a container border.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -103,9 +103,6 @@ Insets(int top, int left, int bottom, int right)
public boolean
equals(Object obj)
{
- if (obj == null)
- return(false);
-
if (!(obj instanceof Insets))
return(false);
@@ -123,6 +120,12 @@ equals(Object obj)
return(true);
}
+public int
+hashCode()
+{
+ return top + bottom + left + right;
+}
+
/*************************************************************************/
/**
@@ -158,4 +161,3 @@ clone()
}
} // class Insets
-
diff --git a/java/awt/Label.java b/java/awt/Label.java
index 637348a33..3f972aa29 100644
--- a/java/awt/Label.java
+++ b/java/awt/Label.java
@@ -225,8 +225,8 @@ addNotify()
protected String
paramString()
{
- return(getClass().getName() + "(text=" + getText() + ",alignment=" +
- getAlignment() + ")");
+ return ("text=" + getText() + ",alignment=" +
+ getAlignment() + "," + super.paramString());
}
} // class Label
diff --git a/java/awt/List.java b/java/awt/List.java
index ac8d21552..c4fa0aa87 100644
--- a/java/awt/List.java
+++ b/java/awt/List.java
@@ -1,5 +1,5 @@
/* List.java -- A listbox widget
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -106,7 +106,7 @@ private ActionListener action_listeners;
public
List()
{
- this(0, false);
+ this(4, false);
}
/*************************************************************************/
@@ -261,10 +261,11 @@ public void
setMultipleMode(boolean multipleMode)
{
this.multipleMode = multipleMode;
-
- ListPeer lp = (ListPeer)getPeer();
- if (lp != null)
- lp.setMultipleMode(multipleMode);
+ if (peer != null)
+ {
+ ListPeer l = (ListPeer) peer;
+ l.setMultipleMode (multipleMode);
+ }
}
/*************************************************************************/
@@ -428,7 +429,7 @@ preferredSize(int rows)
public void
add(String item)
{
- addItem(item, -1);
+ add(item, -1);
}
/*************************************************************************/
@@ -437,6 +438,8 @@ add(String item)
* 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)
@@ -458,7 +461,16 @@ addItem(String item)
public void
add(String item, int index)
{
- addItem(item, 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);
+ }
}
/*************************************************************************/
@@ -471,18 +483,13 @@ add(String item, int index)
* @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)
{
- if ((index == -1) || (index >= items.size()))
- items.addElement(item);
- else
- items.insertElementAt(item, index);
-
- ListPeer lp = (ListPeer)getPeer();
- if (lp != null)
- lp.add(item, index);
+ add(item, index);
}
/*************************************************************************/
@@ -497,7 +504,7 @@ addItem(String item, int index)
public void
delItem(int index) throws IllegalArgumentException
{
- delItems(index, index);
+ remove(index);
}
/*************************************************************************/
@@ -512,7 +519,12 @@ delItem(int index) throws IllegalArgumentException
public void
remove(int index) throws IllegalArgumentException
{
- delItems(index, index);
+ items.removeElementAt (index);
+ if (peer != null)
+ {
+ ListPeer l = (ListPeer) peer;
+ l.delItems (index, index);
+ }
}
/*************************************************************************/
@@ -539,12 +551,14 @@ delItems(int start, int end) throws IllegalArgumentException
if (start > end)
throw new IllegalArgumentException("Start is greater than end!");
- for (int i = start; i <= end; i++)
- items.removeElementAt(i);
-
- ListPeer lp = (ListPeer)getPeer();
- if (lp != null)
- lp.delItems(start, 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);
+ }
}
/*************************************************************************/
@@ -563,7 +577,7 @@ remove(String item) throws IllegalArgumentException
if (index == -1)
throw new IllegalArgumentException("List element to delete not found");
- delItem(index);
+ remove(index);
}
/*************************************************************************/
@@ -574,11 +588,12 @@ remove(String item) throws IllegalArgumentException
public synchronized void
removeAll()
{
- items = new Vector();
-
- ListPeer lp = (ListPeer)getPeer();
- if (lp != null)
- lp.removeAll();
+ items.clear();
+ if (peer != null)
+ {
+ ListPeer l = (ListPeer) peer;
+ l.removeAll ();
+ }
}
/*************************************************************************/
@@ -607,7 +622,7 @@ clear()
public synchronized void
replaceItem(String item, int index) throws IllegalArgumentException
{
- delItem(index);
+ remove(index);
addItem(item, index);
}
@@ -622,17 +637,15 @@ replaceItem(String item, int index) throws IllegalArgumentException
public synchronized int
getSelectedIndex()
{
- ListPeer lp = (ListPeer)getPeer();
- if (lp == null)
- return(-1);
-
- int[] idxs = lp.getSelectedIndexes();
- if (idxs == null)
- return(-1);
- if (idxs.length > 1)
- return(-1);
+ if (peer != null)
+ {
+ ListPeer l = (ListPeer) peer;
+ selected = l.getSelectedIndexes ();
+ }
- return(idxs[0]);
+ if (selected == null || selected.length > 1)
+ return -1;
+ return selected[0];
}
/*************************************************************************/
@@ -646,11 +659,12 @@ getSelectedIndex()
public synchronized int[]
getSelectedIndexes()
{
- ListPeer lp = (ListPeer)getPeer();
- if (lp == null)
- return(new int[0]);
-
- return(lp.getSelectedIndexes());
+ if (peer != null)
+ {
+ ListPeer l = (ListPeer) peer;
+ selected = l.getSelectedIndexes ();
+ }
+ return selected;
}
/*************************************************************************/
@@ -731,8 +745,6 @@ public boolean
isIndexSelected(int index)
{
int[] indexes = getSelectedIndexes();
- if (indexes.length == 0)
- return(false);
for (int i = 0; i < indexes.length; i++)
if (indexes[i] == index)
@@ -775,10 +787,11 @@ makeVisible(int index) throws IllegalArgumentException
throw new IllegalArgumentException("Bad list index: " + index);
visibleIndex = index;
-
- ListPeer lp = (ListPeer)getPeer();
- if (lp != null)
- lp.makeVisible(index);
+ if (peer != null)
+ {
+ ListPeer l = (ListPeer) peer;
+ l.makeVisible (index);
+ }
}
/*************************************************************************/
@@ -834,7 +847,9 @@ deselect(int index)
public void
addNotify()
{
- setPeer((ComponentPeer)getToolkit().createList(this));
+ if (peer != null)
+ peer = getToolkit ().createList (this);
+ super.addNotify ();
}
/*************************************************************************/
@@ -973,8 +988,7 @@ processItemEvent(ItemEvent event)
protected String
paramString()
{
- return(getClass().getName());
+ return "multiple=" + multipleMode + ",rows=" + rows + super.paramString();
}
} // class List
-
diff --git a/java/awt/Menu.java b/java/awt/Menu.java
index c0c276296..ab73a233a 100644
--- a/java/awt/Menu.java
+++ b/java/awt/Menu.java
@@ -1,5 +1,5 @@
/* Menu.java -- A Java AWT Menu
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -70,6 +70,11 @@ private boolean isTearOff;
*/
private boolean isHelpMenu;
+// From the serialization spec. FIXME: what should it be?
+private int menuSerializedDataVersion;
+
+static final MenuItem separator = new MenuItem("-");
+
/*************************************************************************/
/*
@@ -194,15 +199,20 @@ getItem(int index)
public MenuItem
add(MenuItem item)
{
- // FIXME: How do I remove from previous menu's?
-
items.addElement(item);
-
- MenuPeer mp = (MenuPeer)getPeer();
- if (mp != null)
- mp.addItem(item);
-
- return(item);
+ if (item.parent != null)
+ {
+ item.parent.remove(item);
+ }
+ item.parent = this;
+
+ if (peer != null)
+ {
+ MenuPeer mp = (MenuPeer) peer;
+ mp.addItem(item);
+ }
+
+ return item;
}
/*************************************************************************/
@@ -240,6 +250,7 @@ insert(MenuItem item, int index)
items.insertElementAt(item, index);
MenuPeer mp = (MenuPeer)getPeer();
+ // FIXME: Need to add a peer method here.
// if (mp != null)
// mp.insertItem(item, index);
}
@@ -269,10 +280,7 @@ insert(String label, int index)
public void
addSeparator()
{
- // FIXME: How do we note in the items array what this is?
- MenuPeer mp = (MenuPeer)getPeer();
- if (mp != null)
- mp.addSeparator();
+ add(separator);
}
/*************************************************************************/
@@ -290,13 +298,7 @@ addSeparator()
public void
insertSeparator(int index)
{
- if (index < 0)
- throw new IllegalArgumentException("Index is less than zero");
-
- // FIXME: How do we note in the items array what this is?
-// MenuPeer mp = (MenuPeer)getPeer();
-// if (mp != null)
-// mp.insertSeparator(index);
+ insert(separator, index);
}
/*************************************************************************/
@@ -345,9 +347,11 @@ public synchronized void
removeAll()
{
int count = getItemCount();
- if (count > 0)
- for(int i = 0; i < count; i++)
- remove(i);
+ for(int i = 0; i < count; i++)
+ {
+ // We must always remove item 0.
+ remove(0);
+ }
}
/*************************************************************************/
@@ -358,10 +362,9 @@ removeAll()
public void
addNotify()
{
- if (getPeer() != null)
- return;
-
- setPeer((MenuComponentPeer)getToolkit().createMenu(this));
+ if (peer != null)
+ peer = getToolkit().createMenu(this);
+ super.addNotify ();
}
/*************************************************************************/
@@ -385,8 +388,11 @@ removeNotify()
public String
paramString()
{
- return(getClass().getName() + "(label=" + getLabel() + ")");
+ return (",isTearOff=" + isTearOff + ",isHelpMenu=" + isHelpMenu
+ + super.paramString());
}
-} // class Menu
+// Accessibility API not yet implemented.
+// public AccessibleContext getAccessibleContext()
+} // class Menu
diff --git a/java/awt/MenuBar.java b/java/awt/MenuBar.java
index fd245ef82..7ad688b65 100644
--- a/java/awt/MenuBar.java
+++ b/java/awt/MenuBar.java
@@ -1,5 +1,5 @@
/* MenuBar.java -- An AWT menu bar class
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -38,8 +38,10 @@ 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
+public class MenuBar extends MenuComponent
+ implements MenuContainer, Serializable
{
/*
@@ -104,33 +106,51 @@ getHelpMenu()
* @param helpMenu The new help menu for this menu bar.
*/
public synchronized void
-setHelpMenu(Menu helpMenu)
+setHelpMenu(Menu menu)
{
- // FIXME: Does this need to be added to the vector of items?
- this.helpMenu = helpMenu;
+ if (helpMenu != null)
+ {
+ helpMenu.removeNotify ();
+ helpMenu.parent = null;
+ }
- MenuBarPeer mbp = (MenuBarPeer)getPeer();
- if (mbp != null)
- mbp.addHelpMenu(helpMenu);
+ 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);
+ }
}
/*************************************************************************/
-/**
- * Adds the specified menu to this menu bar.
- *
- * @param menu The menu to add.
- *
- * @return The menu that was added.
- */
+/** 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);
- MenuBarPeer mbp = (MenuBarPeer)getPeer();
- if (mbp != null)
- mbp.addMenu(menu);
+ if (peer != null)
+ {
+ MenuBarPeer mp = (MenuBarPeer) peer;
+ mp.addMenu (menu);
+ }
return(menu);
}
@@ -145,11 +165,16 @@ add(Menu menu)
public synchronized void
remove(int index)
{
- menus.removeElementAt(index);
+ Menu m = (Menu) menus.get (index);
+ menus.remove (index);
+ m.removeNotify ();
+ m.parent = null;
- MenuBarPeer mbp = (MenuBarPeer)getPeer();
- if (mbp != null)
- mbp.delMenu(index);
+ if (peer != null)
+ {
+ MenuBarPeer mp = (MenuBarPeer) peer;
+ mp.delMenu (index);
+ }
}
/*************************************************************************/
@@ -295,10 +320,10 @@ getShortcutMenuItem(MenuShortcut shortcut)
public void
deleteShortcut(MenuShortcut shortcut)
{
- MenuItem mi = getShortcutMenuItem(shortcut);
- if (mi != null)
- mi.setShortcut(null);
+ MenuItem it;
+ // This is a slow implementation, but it probably doesn't matter.
+ while ((it = getShortcutMenuItem (shortcut)) != null)
+ it.deleteShortcut ();
}
} // class MenuBar
-
diff --git a/java/awt/MenuComponent.java b/java/awt/MenuComponent.java
index 41a085ffb..d856b7592 100644
--- a/java/awt/MenuComponent.java
+++ b/java/awt/MenuComponent.java
@@ -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.
diff --git a/java/awt/MenuContainer.java b/java/awt/MenuContainer.java
index 4f53848ef..09fe0f046 100644
--- a/java/awt/MenuContainer.java
+++ b/java/awt/MenuContainer.java
@@ -1,5 +1,5 @@
/* MenuContainer.java -- Container for menu items.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -62,10 +62,8 @@ remove(MenuComponent component);
* @param event The event to dispatch.
*
* @deprecated
-
+ */
public abstract boolean
postEvent(Event event);
-*/
} // interface MenuContainer
-
diff --git a/java/awt/MenuItem.java b/java/awt/MenuItem.java
index 538dbcfe1..742b23d43 100644
--- a/java/awt/MenuItem.java
+++ b/java/awt/MenuItem.java
@@ -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.
diff --git a/java/awt/MenuShortcut.java b/java/awt/MenuShortcut.java
index 5a2c8548a..c79635d30 100644
--- a/java/awt/MenuShortcut.java
+++ b/java/awt/MenuShortcut.java
@@ -1,5 +1,5 @@
/* MenuShortcut.java -- A class for menu accelerators
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -149,6 +149,17 @@ equals(MenuShortcut obj)
return(true);
}
+public boolean
+equals(Object obj)
+{
+ if (obj instanceof MenuShortcut)
+ {
+ MenuShortcut ms = (MenuShortcut) obj;
+ return (ms.key == key && ms.usesShift == usesShift);
+ }
+ return false;
+}
+
/*************************************************************************/
/**
@@ -159,8 +170,14 @@ equals(MenuShortcut obj)
public String
toString()
{
- return(getClass().getName() + "(key=" + key + ",usesShift=" + usesShift +
- ")");
+ return(getClass().getName() + "[" + paramString () + "]");
+}
+
+public int
+hashCode()
+{
+ // Arbitrary.
+ return key + (usesShift ? 23 : 57);
}
/*************************************************************************/
@@ -173,8 +190,7 @@ toString()
protected String
paramString()
{
- return(toString());
+ return "key=" + key + ",usesShift=" + usesShift;
}
} // class MenuShortcut
-
diff --git a/java/awt/PaintContext.java b/java/awt/PaintContext.java
new file mode 100644
index 000000000..203772002
--- /dev/null
+++ b/java/awt/PaintContext.java
@@ -0,0 +1,46 @@
+/* Copyright (C) 2000, 2002 Free Software Foundation
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+
+package java.awt;
+
+/**
+ * @author Warren Levy <warrenl@cygnus.com>
+ * @date March 16, 2000.
+ */
+
+/**
+ * Written using on-line Java Platform 1.2 API Specification, as well
+ * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
+ * Status: Partially stubbed.
+ */
+
+public interface PaintContext
+{
+ public void dispose();
+ // FIXME
+ // public ColorModel getColorModel();
+ // public Raster getRaster(int x, int y, int w, int h);
+}
diff --git a/java/awt/Panel.java b/java/awt/Panel.java
index f544aa3b1..47b0b95d9 100644
--- a/java/awt/Panel.java
+++ b/java/awt/Panel.java
@@ -1,5 +1,5 @@
/* Panel.java -- Simple container object.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -79,10 +79,9 @@ Panel(LayoutManager layoutManager)
public void
addNotify()
{
- if (getPeer() != null)
- return;
-
- setPeer((ComponentPeer)getToolkit().createPanel(this));
+ if (peer == null)
+ peer = getToolkit().createPanel(this);
+ super.addNotify();
}
} // class Panel
diff --git a/java/awt/PopupMenu.java b/java/awt/PopupMenu.java
index 17f27cba6..7ec2ad515 100644
--- a/java/awt/PopupMenu.java
+++ b/java/awt/PopupMenu.java
@@ -1,5 +1,5 @@
/* PopupMenu.java -- An AWT popup menu
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -86,10 +86,9 @@ PopupMenu(String label)
public void
addNotify()
{
- if (getPeer() != null)
- return;
-
- setPeer((MenuComponentPeer)getToolkit().createPopupMenu(this));
+ if (peer != null)
+ peer = getToolkit ().createPopupMenu (this);
+ super.addNotify ();
}
/*************************************************************************/