summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog81
-rw-r--r--libjava/Makefile.am46
-rw-r--r--libjava/Makefile.in173
-rw-r--r--libjava/java/awt/AWTEvent.java67
-rw-r--r--libjava/java/awt/AWTEventMulticaster.java463
-rw-r--r--libjava/java/awt/CheckboxGroup.java18
-rw-r--r--libjava/java/awt/ColorModel.java20
-rw-r--r--libjava/java/awt/Component.java1329
-rw-r--r--libjava/java/awt/ComponentOrientation.java84
-rw-r--r--libjava/java/awt/Container.java334
-rw-r--r--libjava/java/awt/Cursor.java87
-rw-r--r--libjava/java/awt/Event.java9
-rw-r--r--libjava/java/awt/EventDispatchThread.java45
-rw-r--r--libjava/java/awt/EventQueue.java259
-rw-r--r--libjava/java/awt/Font.java30
-rw-r--r--libjava/java/awt/FontMetrics.java153
-rw-r--r--libjava/java/awt/GraphicsConfiguration.java28
-rw-r--r--libjava/java/awt/Insets.java56
-rw-r--r--libjava/java/awt/Menu.java126
-rw-r--r--libjava/java/awt/MenuComponent.java111
-rw-r--r--libjava/java/awt/MenuItem.java146
-rw-r--r--libjava/java/awt/MenuShortcut.java75
-rw-r--r--libjava/java/awt/Panel.java32
-rw-r--r--libjava/java/awt/PopupMenu.java37
-rw-r--r--libjava/java/awt/Rectangle.java314
-rw-r--r--libjava/java/awt/Toolkit.java6
-rw-r--r--libjava/java/awt/event/ActionEvent.java25
-rw-r--r--libjava/java/awt/event/AdjustmentEvent.java45
-rw-r--r--libjava/java/awt/event/ComponentEvent.java21
-rw-r--r--libjava/java/awt/event/ContainerEvent.java26
-rw-r--r--libjava/java/awt/event/FocusEvent.java17
-rw-r--r--libjava/java/awt/event/HierarchyBoundsAdapter.java27
-rw-r--r--libjava/java/awt/event/HierarchyBoundsListener.java22
-rw-r--r--libjava/java/awt/event/HierarchyEvent.java96
-rw-r--r--libjava/java/awt/event/HierarchyListener.java21
-rw-r--r--libjava/java/awt/event/InputMethodEvent.java16
-rw-r--r--libjava/java/awt/event/InvocationEvent.java39
-rw-r--r--libjava/java/awt/event/ItemEvent.java28
-rw-r--r--libjava/java/awt/event/KeyEvent.java18
-rw-r--r--libjava/java/awt/event/MouseEvent.java35
-rw-r--r--libjava/java/awt/event/PaintEvent.java18
-rw-r--r--libjava/java/awt/event/TextEvent.java2
-rw-r--r--libjava/java/awt/event/WindowEvent.java27
-rw-r--r--libjava/java/awt/peer/ButtonPeer.java15
-rw-r--r--libjava/java/awt/peer/CanvasPeer.java13
-rw-r--r--libjava/java/awt/peer/CheckboxMenuItemPeer.java15
-rw-r--r--libjava/java/awt/peer/CheckboxPeer.java16
-rw-r--r--libjava/java/awt/peer/ChoicePeer.java18
-rw-r--r--libjava/java/awt/peer/ComponentPeer.java49
-rw-r--r--libjava/java/awt/peer/ContainerPeer.java12
-rw-r--r--libjava/java/awt/peer/DialogPeer.java15
-rw-r--r--libjava/java/awt/peer/FileDialogPeer.java18
-rw-r--r--libjava/java/awt/peer/FontPeer.java13
-rw-r--r--libjava/java/awt/peer/FramePeer.java12
-rw-r--r--libjava/java/awt/peer/LabelPeer.java15
-rw-r--r--libjava/java/awt/peer/LightweightPeer.java13
-rw-r--r--libjava/java/awt/peer/ListPeer.java28
-rw-r--r--libjava/java/awt/peer/MenuBarPeer.java18
-rw-r--r--libjava/java/awt/peer/MenuComponentPeer.java14
-rw-r--r--libjava/java/awt/peer/MenuItemPeer.java17
-rw-r--r--libjava/java/awt/peer/MenuPeer.java18
-rw-r--r--libjava/java/awt/peer/PanelPeer.java13
-rw-r--r--libjava/java/awt/peer/PopupMenuPeer.java16
-rw-r--r--libjava/java/awt/peer/ScrollPanePeer.java21
-rw-r--r--libjava/java/awt/peer/ScrollbarPeer.java16
-rw-r--r--libjava/java/awt/peer/TextAreaPeer.java23
-rw-r--r--libjava/java/awt/peer/TextComponentPeer.java21
-rw-r--r--libjava/java/awt/peer/TextFieldPeer.java21
-rw-r--r--libjava/java/awt/peer/WindowPeer.java10
-rw-r--r--libjava/java/util/ResourceBundle.java11
70 files changed, 4822 insertions, 261 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 779aef41842..e99ca616fa5 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,82 @@
+2000-07-12 Bryce McKinlay <bryce@albatross.co.nz>
+
+ AWT Stuff:
+ * java/util/ResourceBundle.java (getLocale): stub.
+ * Makefile.am: Added new AWT classes.
+ * Makefile.in: Rebuilt.
+ * java/awt/AWTEvent.java: Add EVENT_MASK constants, isConsumed,
+ constructors. Fix toString() and paramString().
+ * java/awt/AWTEventMulticaster.java: New class. Implemented.
+ * java/awt/CheckboxGroup.java: New class.
+ * java/awt/ColorModel.java: New class.
+ * java/awt/Component.java: Added stubs for most methods. Implemented
+ event dispatch.
+ * java/awt/Container.java: ditto.
+ * java/awt/ComponentOrientation.java: New class. Partly implemented.
+ * java/awt/Cursor.java: ditto.
+ * java/awt/Event.java: Fix paramString().
+ * java/awt/EventQueue.java: New class. Implemented.
+ * java/awt/Font.java: Added additional stub methods. Implemented
+ toString().
+ * java/awt/FontMetrics.java: New class. Stubbed.
+ * java/awt/GraphicsConfiguration.java: New class. Complete, except for
+ Java2D parts.
+ * java/awt/Insets.java: New class. Implemented.
+ * java/awt/Menu.java: Add new methods. Partially implemented.
+ * java/awt/MenuItem.java: Add new methods and fields. Partially
+ implemented.
+ * java/awt/MenuShortcut.java: New class. Implemented.
+ * java/awt/Panel.java: New class. Placeholder.
+ * java/awt/PopupMenu.java: New class. Stubbed.
+ * java/awt/Rectangle.java: New class. Implemented.
+ * java/awt/Toolkit.java: Added getSystemEventQueue() stub.
+ * java/awt/event/ActionEvent.java: Implement paramString().
+ * java/awt/event/AdjustmentEvent.java: Implement paramString().
+ * java/awt/event/ComponentEvent.java: Implement paramString().
+ * java/awt/event/ContainerEvent.java: Implement paramString().
+ * java/awt/event/FocusEvent.java: Implement paramString().
+ * java/awt/event/HierarchyBoundsAdapter.java: New class.
+ * java/awt/event/HierarchyBoundsListener.java: New class.
+ * java/awt/event/HierarchyEvent.java: New class.
+ * java/awt/event/HierarchyListener.java: New class.
+ * java/awt/event/InputMethodEvent.java: Implement paramString().
+ * java/awt/event/InvocationEvent.java: Implement paramString(). Throw
+ exception if !catchExceptions.
+ * java/awt/event/ItemEvent.java: Implement paramString().
+ * java/awt/event/KeyEvent.java: Implement paramString().
+ * java/awt/event/MouseEvent.java: Implement paramString().
+ * java/awt/event/PaintEvent.java: Implement paramString().
+ * java/awt/event/TextEvent.java: Implement paramString().
+ * java/awt/event/WindowEvent.java: Implement paramString().
+
+ AWT Peer interfaces:
+ * java/awt/peer/ButtonPeer.java: New file.
+ * java/awt/peer/ListPeer.java: New file.
+ * java/awt/peer/CanvasPeer.java: New file.
+ * java/awt/peer/MenuBarPeer.java: New file.
+ * java/awt/peer/CheckboxMenuItemPeer.java: New file.
+ * java/awt/peer/MenuComponentPeer.java: New file.
+ * java/awt/peer/CheckboxPeer.java: New file.
+ * java/awt/peer/MenuItemPeer.java: New file.
+ * java/awt/peer/ChoicePeer.java: New file.
+ * java/awt/peer/MenuPeer.java: New file.
+ * java/awt/peer/ComponentPeer.java: Implemented.
+ * java/awt/peer/PanelPeer.java: New file.
+ * java/awt/peer/ContainerPeer.java: Implemented.
+ * java/awt/peer/PopupMenuPeer.java: New file.
+ * java/awt/peer/DialogPeer.java: New file.
+ * java/awt/peer/ScrollPanePeer.java: New file.
+ * java/awt/peer/FileDialogPeer.java: New file.
+ * java/awt/peer/ScrollbarPeer.java: New file.
+ * java/awt/peer/FontPeer.java: New file.
+ * java/awt/peer/TextAreaPeer.java: New file.
+ * java/awt/peer/FramePeer.java: Implemented.
+ * java/awt/peer/TextComponentPeer.java: New file.
+ * java/awt/peer/LabelPeer.java: New file.
+ * java/awt/peer/TextFieldPeer.java: New file.
+ * java/awt/peer/LightweightPeer.java: New file.
+ * java/awt/peer/WindowPeer.java: Implemented.
+
2000-07-06 Tom Tromey <tromey@cygnus.com>
* java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass):
@@ -32,7 +111,7 @@
2000-06-28 Bryce McKinlay <bryce@albatross.co.nz>
- * ThreadGroup.java: Added synchronized flag to many methods.
+ * java/lang/ThreadGroup.java: Added synchronized flag to many methods.
(destroyed_flag): Removed.
(isDestroyed, removeGroup, removeThread): Test for parent == null.
(activeCount): Added spec note.
diff --git a/libjava/Makefile.am b/libjava/Makefile.am
index 01f7604fea4..e48a35b24a3 100644
--- a/libjava/Makefile.am
+++ b/libjava/Makefile.am
@@ -489,8 +489,12 @@ awt_java_source_files = \
java/awt/event/ActionEvent.java \
java/awt/event/ActionListener.java \
java/awt/event/ComponentEvent.java \
-java/awt/event/KeyAdapter.java \
+java/awt/event/HierarchyBoundsAdapter.java \
+java/awt/event/HierarchyBoundsListener.java \
+java/awt/event/HierarchyEvent.java \
+java/awt/event/HierarchyListener.java \
java/awt/event/InputEvent.java \
+java/awt/event/KeyAdapter.java \
java/awt/event/KeyEvent.java \
java/awt/event/KeyListener.java \
java/awt/event/TextEvent.java \
@@ -520,14 +524,25 @@ java/awt/event/ItemEvent.java \
java/awt/event/InvocationEvent.java \
java/awt/event/PaintEvent.java \
java/awt/event/ContainerEvent.java \
+java/awt/AWTError.java \
java/awt/AWTEvent.java \
+java/awt/AWTEventMulticaster.java \
java/awt/BorderLayout.java \
+java/awt/CheckboxGroup.java \
+java/awt/ColorModel.java \
java/awt/Component.java \
+java/awt/ComponentOrientation.java \
java/awt/Container.java \
+java/awt/Cursor.java \
java/awt/Dimension.java \
java/awt/Event.java \
+java/awt/EventDispatchThread.java \
+java/awt/EventQueue.java \
java/awt/Font.java \
+java/awt/FontMetrics.java \
java/awt/Frame.java \
+java/awt/GraphicsConfiguration.java \
+java/awt/Insets.java \
java/awt/LayoutManager.java \
java/awt/LayoutManager2.java \
java/awt/Menu.java \
@@ -535,18 +550,45 @@ java/awt/MenuBar.java \
java/awt/MenuComponent.java \
java/awt/MenuContainer.java \
java/awt/MenuItem.java \
+java/awt/MenuShortcut.java \
+java/awt/Panel.java \
java/awt/Point.java \
-java/awt/AWTError.java \
+java/awt/PopupMenu.java \
java/awt/Shape.java \
java/awt/TextArea.java \
java/awt/TextComponent.java \
java/awt/Toolkit.java \
java/awt/Window.java \
+java/awt/image/ImageConsumer.java \
+java/awt/image/ImageObserver.java \
+java/awt/image/ImageProducer.java \
java/awt/geom/Dimension2D.java \
java/awt/geom/Point2D.java \
+java/awt/peer/ButtonPeer.java \
+java/awt/peer/CanvasPeer.java \
+java/awt/peer/CheckboxMenuItemPeer.java \
+java/awt/peer/CheckboxPeer.java \
+java/awt/peer/ChoicePeer.java \
java/awt/peer/ComponentPeer.java \
java/awt/peer/ContainerPeer.java \
+java/awt/peer/DialogPeer.java \
+java/awt/peer/FileDialogPeer.java \
+java/awt/peer/FontPeer.java \
java/awt/peer/FramePeer.java \
+java/awt/peer/LabelPeer.java \
+java/awt/peer/LightweightPeer.java \
+java/awt/peer/ListPeer.java \
+java/awt/peer/MenuBarPeer.java \
+java/awt/peer/MenuComponentPeer.java \
+java/awt/peer/MenuItemPeer.java \
+java/awt/peer/MenuPeer.java \
+java/awt/peer/PanelPeer.java \
+java/awt/peer/PopupMenuPeer.java \
+java/awt/peer/ScrollPanePeer.java \
+java/awt/peer/ScrollbarPeer.java \
+java/awt/peer/TextAreaPeer.java \
+java/awt/peer/TextComponentPeer.java \
+java/awt/peer/TextFieldPeer.java \
java/awt/peer/WindowPeer.java \
java/awt/Adjustable.java \
java/awt/Color.java \
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index d7b7dc5621d..3657a60d5d6 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -265,8 +265,12 @@ awt_java_source_files = \
java/awt/event/ActionEvent.java \
java/awt/event/ActionListener.java \
java/awt/event/ComponentEvent.java \
-java/awt/event/KeyAdapter.java \
+java/awt/event/HierarchyBoundsAdapter.java \
+java/awt/event/HierarchyBoundsListener.java \
+java/awt/event/HierarchyEvent.java \
+java/awt/event/HierarchyListener.java \
java/awt/event/InputEvent.java \
+java/awt/event/KeyAdapter.java \
java/awt/event/KeyEvent.java \
java/awt/event/KeyListener.java \
java/awt/event/TextEvent.java \
@@ -296,14 +300,25 @@ java/awt/event/ItemEvent.java \
java/awt/event/InvocationEvent.java \
java/awt/event/PaintEvent.java \
java/awt/event/ContainerEvent.java \
+java/awt/AWTError.java \
java/awt/AWTEvent.java \
+java/awt/AWTEventMulticaster.java \
java/awt/BorderLayout.java \
+java/awt/CheckboxGroup.java \
+java/awt/ColorModel.java \
java/awt/Component.java \
+java/awt/ComponentOrientation.java \
java/awt/Container.java \
+java/awt/Cursor.java \
java/awt/Dimension.java \
java/awt/Event.java \
+java/awt/EventDispatchThread.java \
+java/awt/EventQueue.java \
java/awt/Font.java \
+java/awt/FontMetrics.java \
java/awt/Frame.java \
+java/awt/GraphicsConfiguration.java \
+java/awt/Insets.java \
java/awt/LayoutManager.java \
java/awt/LayoutManager2.java \
java/awt/Menu.java \
@@ -311,18 +326,45 @@ java/awt/MenuBar.java \
java/awt/MenuComponent.java \
java/awt/MenuContainer.java \
java/awt/MenuItem.java \
+java/awt/MenuShortcut.java \
+java/awt/Panel.java \
java/awt/Point.java \
-java/awt/AWTError.java \
+java/awt/PopupMenu.java \
java/awt/Shape.java \
java/awt/TextArea.java \
java/awt/TextComponent.java \
java/awt/Toolkit.java \
java/awt/Window.java \
+java/awt/image/ImageConsumer.java \
+java/awt/image/ImageObserver.java \
+java/awt/image/ImageProducer.java \
java/awt/geom/Dimension2D.java \
java/awt/geom/Point2D.java \
+java/awt/peer/ButtonPeer.java \
+java/awt/peer/CanvasPeer.java \
+java/awt/peer/CheckboxMenuItemPeer.java \
+java/awt/peer/CheckboxPeer.java \
+java/awt/peer/ChoicePeer.java \
java/awt/peer/ComponentPeer.java \
java/awt/peer/ContainerPeer.java \
+java/awt/peer/DialogPeer.java \
+java/awt/peer/FileDialogPeer.java \
+java/awt/peer/FontPeer.java \
java/awt/peer/FramePeer.java \
+java/awt/peer/LabelPeer.java \
+java/awt/peer/LightweightPeer.java \
+java/awt/peer/ListPeer.java \
+java/awt/peer/MenuBarPeer.java \
+java/awt/peer/MenuComponentPeer.java \
+java/awt/peer/MenuItemPeer.java \
+java/awt/peer/MenuPeer.java \
+java/awt/peer/PanelPeer.java \
+java/awt/peer/PopupMenuPeer.java \
+java/awt/peer/ScrollPanePeer.java \
+java/awt/peer/ScrollbarPeer.java \
+java/awt/peer/TextAreaPeer.java \
+java/awt/peer/TextComponentPeer.java \
+java/awt/peer/TextFieldPeer.java \
java/awt/peer/WindowPeer.java \
java/awt/Adjustable.java \
java/awt/Color.java \
@@ -904,14 +946,13 @@ LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
DATA = $(data_DATA) $(toolexeclib_DATA)
DIST_COMMON = README COPYING ChangeLog Makefile.am Makefile.in NEWS \
-THANKS acconfig.h acinclude.m4 aclocal.m4 configure configure.in \
-include/config.h.in include/stamp-h.in libgcj-test.spec.in \
-libgcj.spec.in
+THANKS acinclude.m4 aclocal.m4 configure configure.in \
+libgcj-test.spec.in libgcj.spec.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = gtar
+TAR = tar
GZIP_ENV = --best
DIST_SUBDIRS = @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include
DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
@@ -971,19 +1012,26 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/gnu/java/security/provider/SHA.P \
.deps/gnu/java/security/provider/SHA1PRNG.P .deps/interpret.P \
.deps/java/awt/AWTError.P .deps/java/awt/AWTEvent.P \
-.deps/java/awt/AWTException.P .deps/java/awt/ActiveEvent.P \
-.deps/java/awt/Adjustable.P .deps/java/awt/BorderLayout.P \
-.deps/java/awt/Color.P .deps/java/awt/Component.P \
-.deps/java/awt/Container.P .deps/java/awt/Dimension.P \
-.deps/java/awt/Event.P .deps/java/awt/Font.P .deps/java/awt/Frame.P \
-.deps/java/awt/Graphics.P \
+.deps/java/awt/AWTEventMulticaster.P .deps/java/awt/AWTException.P \
+.deps/java/awt/ActiveEvent.P .deps/java/awt/Adjustable.P \
+.deps/java/awt/BorderLayout.P .deps/java/awt/CheckboxGroup.P \
+.deps/java/awt/Color.P .deps/java/awt/ColorModel.P \
+.deps/java/awt/Component.P .deps/java/awt/ComponentOrientation.P \
+.deps/java/awt/Container.P .deps/java/awt/Cursor.P \
+.deps/java/awt/Dimension.P .deps/java/awt/Event.P \
+.deps/java/awt/EventDispatchThread.P .deps/java/awt/EventQueue.P \
+.deps/java/awt/Font.P .deps/java/awt/FontMetrics.P \
+.deps/java/awt/Frame.P .deps/java/awt/Graphics.P \
+.deps/java/awt/GraphicsConfiguration.P \
.deps/java/awt/IllegalComponentStateException.P .deps/java/awt/Image.P \
-.deps/java/awt/ItemSelectable.P .deps/java/awt/LayoutManager.P \
-.deps/java/awt/LayoutManager2.P .deps/java/awt/Menu.P \
-.deps/java/awt/MenuBar.P .deps/java/awt/MenuComponent.P \
-.deps/java/awt/MenuContainer.P .deps/java/awt/MenuItem.P \
+.deps/java/awt/Insets.P .deps/java/awt/ItemSelectable.P \
+.deps/java/awt/LayoutManager.P .deps/java/awt/LayoutManager2.P \
+.deps/java/awt/Menu.P .deps/java/awt/MenuBar.P \
+.deps/java/awt/MenuComponent.P .deps/java/awt/MenuContainer.P \
+.deps/java/awt/MenuItem.P .deps/java/awt/MenuShortcut.P \
.deps/java/awt/Paint.P .deps/java/awt/PaintContext.P \
-.deps/java/awt/Point.P .deps/java/awt/Rectangle.P \
+.deps/java/awt/Panel.P .deps/java/awt/Point.P \
+.deps/java/awt/PopupMenu.P .deps/java/awt/Rectangle.P \
.deps/java/awt/Shape.P .deps/java/awt/TextArea.P \
.deps/java/awt/TextComponent.P .deps/java/awt/Toolkit.P \
.deps/java/awt/Transparency.P .deps/java/awt/Window.P \
@@ -999,7 +1047,12 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/awt/event/ContainerEvent.P \
.deps/java/awt/event/ContainerListener.P \
.deps/java/awt/event/FocusAdapter.P .deps/java/awt/event/FocusEvent.P \
-.deps/java/awt/event/FocusListener.P .deps/java/awt/event/InputEvent.P \
+.deps/java/awt/event/FocusListener.P \
+.deps/java/awt/event/HierarchyBoundsAdapter.P \
+.deps/java/awt/event/HierarchyBoundsListener.P \
+.deps/java/awt/event/HierarchyEvent.P \
+.deps/java/awt/event/HierarchyListener.P \
+.deps/java/awt/event/InputEvent.P \
.deps/java/awt/event/InputMethodEvent.P \
.deps/java/awt/event/InputMethodListener.P \
.deps/java/awt/event/InvocationEvent.P .deps/java/awt/event/ItemEvent.P \
@@ -1013,12 +1066,27 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/awt/event/TextListener.P \
.deps/java/awt/event/WindowAdapter.P .deps/java/awt/event/WindowEvent.P \
.deps/java/awt/event/WindowListener.P .deps/java/awt/geom/Dimension2D.P \
-.deps/java/awt/geom/Point2D.P .deps/java/awt/peer/ComponentPeer.P \
-.deps/java/awt/peer/ContainerPeer.P .deps/java/awt/peer/FramePeer.P \
-.deps/java/awt/peer/WindowPeer.P .deps/java/beans/BeanDescriptor.P \
-.deps/java/beans/BeanInfo.P .deps/java/beans/Beans.P \
-.deps/java/beans/Customizer.P .deps/java/beans/DesignMode.P \
-.deps/java/beans/EventSetDescriptor.P \
+.deps/java/awt/geom/Point2D.P .deps/java/awt/image/ImageConsumer.P \
+.deps/java/awt/image/ImageObserver.P \
+.deps/java/awt/image/ImageProducer.P .deps/java/awt/peer/ButtonPeer.P \
+.deps/java/awt/peer/CanvasPeer.P \
+.deps/java/awt/peer/CheckboxMenuItemPeer.P \
+.deps/java/awt/peer/CheckboxPeer.P .deps/java/awt/peer/ChoicePeer.P \
+.deps/java/awt/peer/ComponentPeer.P .deps/java/awt/peer/ContainerPeer.P \
+.deps/java/awt/peer/DialogPeer.P .deps/java/awt/peer/FileDialogPeer.P \
+.deps/java/awt/peer/FontPeer.P .deps/java/awt/peer/FramePeer.P \
+.deps/java/awt/peer/LabelPeer.P .deps/java/awt/peer/LightweightPeer.P \
+.deps/java/awt/peer/ListPeer.P .deps/java/awt/peer/MenuBarPeer.P \
+.deps/java/awt/peer/MenuComponentPeer.P \
+.deps/java/awt/peer/MenuItemPeer.P .deps/java/awt/peer/MenuPeer.P \
+.deps/java/awt/peer/PanelPeer.P .deps/java/awt/peer/PopupMenuPeer.P \
+.deps/java/awt/peer/ScrollPanePeer.P \
+.deps/java/awt/peer/ScrollbarPeer.P .deps/java/awt/peer/TextAreaPeer.P \
+.deps/java/awt/peer/TextComponentPeer.P \
+.deps/java/awt/peer/TextFieldPeer.P .deps/java/awt/peer/WindowPeer.P \
+.deps/java/beans/BeanDescriptor.P .deps/java/beans/BeanInfo.P \
+.deps/java/beans/Beans.P .deps/java/beans/Customizer.P \
+.deps/java/beans/DesignMode.P .deps/java/beans/EventSetDescriptor.P \
.deps/java/beans/FeatureDescriptor.P \
.deps/java/beans/IndexedPropertyDescriptor.P \
.deps/java/beans/IntrospectionException.P \
@@ -1296,34 +1364,6 @@ config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF)
-
-include/config.h: include/stamp-h
- @if test ! -f $@; then \
- rm -f include/stamp-h; \
- $(MAKE) include/stamp-h; \
- else :; fi
-include/stamp-h: $(srcdir)/include/config.h.in $(top_builddir)/config.status
- cd $(top_builddir) \
- && CONFIG_FILES= CONFIG_HEADERS=include/config.h \
- $(SHELL) ./config.status
- @echo timestamp > include/stamp-h 2> /dev/null
-$(srcdir)/include/config.h.in: @MAINTAINER_MODE_TRUE@$(srcdir)/include/stamp-h.in
- @if test ! -f $@; then \
- rm -f $(srcdir)/include/stamp-h.in; \
- $(MAKE) $(srcdir)/include/stamp-h.in; \
- else :; fi
-$(srcdir)/include/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h
- cd $(top_srcdir) && $(AUTOHEADER)
- @echo timestamp > $(srcdir)/include/stamp-h.in 2> /dev/null
-
-mostlyclean-hdr:
-
-clean-hdr:
-
-distclean-hdr:
- -rm -f include/config.h
-
-maintainer-clean-hdr:
libgcj.spec: $(top_builddir)/config.status libgcj.spec.in
cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
libgcj-test.spec: $(top_builddir)/config.status libgcj-test.spec.in
@@ -1786,33 +1826,31 @@ distclean-generic:
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic:
-mostlyclean-am: mostlyclean-hdr mostlyclean-toolexeclibLIBRARIES \
- mostlyclean-compile mostlyclean-libtool \
- mostlyclean-toolexeclibLTLIBRARIES \
+mostlyclean-am: mostlyclean-toolexeclibLIBRARIES mostlyclean-compile \
+ mostlyclean-libtool mostlyclean-toolexeclibLTLIBRARIES \
mostlyclean-binPROGRAMS mostlyclean-noinstPROGRAMS \
mostlyclean-tags mostlyclean-depend mostlyclean-generic
mostlyclean: mostlyclean-recursive
-clean-am: clean-hdr clean-toolexeclibLIBRARIES clean-compile \
- clean-libtool clean-toolexeclibLTLIBRARIES \
- clean-binPROGRAMS clean-noinstPROGRAMS clean-tags \
- clean-depend clean-generic mostlyclean-am clean-local
+clean-am: clean-toolexeclibLIBRARIES clean-compile clean-libtool \
+ clean-toolexeclibLTLIBRARIES clean-binPROGRAMS \
+ clean-noinstPROGRAMS clean-tags clean-depend \
+ clean-generic mostlyclean-am clean-local
clean: clean-recursive
-distclean-am: distclean-hdr distclean-toolexeclibLIBRARIES \
- distclean-compile distclean-libtool \
- distclean-toolexeclibLTLIBRARIES distclean-binPROGRAMS \
- distclean-noinstPROGRAMS distclean-tags \
- distclean-depend distclean-generic clean-am
+distclean-am: distclean-toolexeclibLIBRARIES distclean-compile \
+ distclean-libtool distclean-toolexeclibLTLIBRARIES \
+ distclean-binPROGRAMS distclean-noinstPROGRAMS \
+ distclean-tags distclean-depend distclean-generic \
+ clean-am
-rm -f libtool
distclean: distclean-recursive
-rm -f config.status
-maintainer-clean-am: maintainer-clean-hdr \
- maintainer-clean-toolexeclibLIBRARIES \
+maintainer-clean-am: maintainer-clean-toolexeclibLIBRARIES \
maintainer-clean-compile maintainer-clean-libtool \
maintainer-clean-toolexeclibLTLIBRARIES \
maintainer-clean-binPROGRAMS \
@@ -1825,8 +1863,7 @@ maintainer-clean-am: maintainer-clean-hdr \
maintainer-clean: maintainer-clean-recursive
-rm -f config.status
-.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
-mostlyclean-toolexeclibLIBRARIES distclean-toolexeclibLIBRARIES \
+.PHONY: mostlyclean-toolexeclibLIBRARIES distclean-toolexeclibLIBRARIES \
clean-toolexeclibLIBRARIES maintainer-clean-toolexeclibLIBRARIES \
uninstall-toolexeclibLIBRARIES install-toolexeclibLIBRARIES \
mostlyclean-compile distclean-compile clean-compile \
diff --git a/libjava/java/awt/AWTEvent.java b/libjava/java/awt/AWTEvent.java
index bc9ea495c86..bb09f0cab98 100644
--- a/libjava/java/awt/AWTEvent.java
+++ b/libjava/java/awt/AWTEvent.java
@@ -1,20 +1,65 @@
/* Copyright (C) 1999, 2000 Free Software Foundation
- This file is part of libjava.
+ This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
-Libjava License. Please consult the file "LIBJAVA_LICENSE" for
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.awt;
-/* A very incomplete placeholder. */
+/* Written using on-line Java 2 Platform Standard Edition v1.3 API
+ * Specification, as well as "The Java Class Libraries", 2nd edition
+ * (Addison-Wesley, 1998).
+ * Status: Believed complete and correct, except for the java.awt.Event
+ * compatibility constructor.
+ */
+
+/**
+ * AWTEvent is the root event class for all AWT events in the JDK 1.1 event
+ * model. It supercedes the Event class from JDK 1.0.
+ */
public abstract class AWTEvent extends java.util.EventObject
{
protected boolean consumed;
protected int id;
+ /* Event selection masks */
+ public static final long COMPONENT_EVENT_MASK = 1 << 0,
+ CONTAINER_EVENT_MASK = 1 << 1,
+ FOCUS_EVENT_MASK = 1 << 2,
+ KEY_EVENT_MASK = 1 << 3,
+ MOUSE_EVENT_MASK = 1 << 4,
+ MOUSE_MOTION_EVENT_MASK = 1 << 5,
+ WINDOW_EVENT_MASK = 1 << 6,
+ ACTION_EVENT_MASK = 1 << 7,
+ ADJUSTMENT_EVENT_MASK = 1 << 8,
+ ITEM_EVENT_MASK = 1 << 9,
+ TEXT_EVENT_MASK = 1 << 10,
+ INPUT_METHOD_EVENT_MASK = 1 << 11;
+
+ /* Additional event selection masks from JDK 1.3 javadocs */
+ public static final long PAINT_EVENT_MASK = 1 << 13,
+ INVOCATION_EVENT_MASK = 1 << 14,
+ HIERARCHY_EVENT_MASK = 1 << 15,
+ HIERARCHY_BOUNDS_EVENT_MASK = 1 << 16;
+
+ public static final int RESERVED_ID_MAX = 0x7cf;
+
+ public AWTEvent(Event event)
+ {
+ // FIXME??
+ super(event.target);
+ this.id = event.id;
+ }
+
+ public AWTEvent(Object source, int id)
+ {
+ super(source);
+ this.id = id;
+ }
+
public int getID()
{
return id;
@@ -22,17 +67,21 @@ public abstract class AWTEvent extends java.util.EventObject
public String paramString ()
{
- return toString ();
+ return "";
}
public String toString ()
{
- return getClass().getName() + "[" + id + "]";
+ return getClass().getName() + "[" + paramString() + "] on " + source;
}
-
- public AWTEvent (Object source, int id)
+
+ protected void consume()
{
- super(source);
- this.id = id;
+ consumed = true;
+ }
+
+ protected boolean isConsumed()
+ {
+ return consumed;
}
}
diff --git a/libjava/java/awt/AWTEventMulticaster.java b/libjava/java/awt/AWTEventMulticaster.java
new file mode 100644
index 00000000000..560ebbe3b66
--- /dev/null
+++ b/libjava/java/awt/AWTEventMulticaster.java
@@ -0,0 +1,463 @@
+/* Copyright (C) 2000 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.awt.event.*;
+import java.util.EventListener;
+import java.io.ObjectOutputStream;
+
+/* Written using on-line Java 2 Platform Standard Edition v1.3 API
+ * Specification, as well as "The Java Class Libraries", 2nd edition
+ * (Addison-Wesley, 1998).
+ * Status: Believed complete and correct to J2SE 1.3, except for
+ * serialization support methods, save() and saveInternal(), which are
+ * stubbed.
+ */
+
+/**
+ * Convienience class for thread-safe multicasting of AWT events,
+ * without synchronization.
+ *
+ * @author Bryce McKinlay
+ */
+
+public class AWTEventMulticaster implements ComponentListener,
+ ContainerListener, FocusListener, KeyListener, MouseListener,
+ MouseMotionListener, WindowListener, ActionListener, ItemListener,
+ AdjustmentListener, TextListener, InputMethodListener, HierarchyListener,
+ HierarchyBoundsListener
+{
+ protected final EventListener a, b;
+
+ protected AWTEventMulticaster(EventListener a,
+ EventListener b)
+ {
+ this.a = a;
+ this.b = b;
+ }
+
+ protected static EventListener addInternal(EventListener a, EventListener b)
+ {
+ if (a == null)
+ return b;
+ else if (b == null)
+ return a;
+ else return new AWTEventMulticaster(a, b);
+ }
+
+ protected static EventListener removeInternal(EventListener l,
+ EventListener oldl)
+ {
+ if (l == oldl)
+ return null;
+ else if (l instanceof AWTEventMulticaster)
+ {
+ AWTEventMulticaster mc = (AWTEventMulticaster) l;
+ return mc.remove(oldl);
+ }
+ return l;
+ }
+
+ /* Remove oldl from this multicaster. */
+ protected EventListener remove(EventListener oldl)
+ {
+ // If oldl is an immediate child, return the other child.
+ if (a == oldl)
+ return b;
+ if (b == oldl)
+ return a;
+
+ // If a and/or b are Multicaster's, search them recursivly.
+ if (a instanceof AWTEventMulticaster)
+ {
+ AWTEventMulticaster mc = (AWTEventMulticaster) a;
+ EventListener newa = mc.remove(oldl);
+ if (newa != a)
+ return new AWTEventMulticaster (newa, b);
+ }
+ if (b instanceof AWTEventMulticaster)
+ {
+ AWTEventMulticaster mc = (AWTEventMulticaster) a;
+ EventListener newb = mc.remove(oldl);
+ if (newb != b)
+ return new AWTEventMulticaster (a, newb);
+ }
+
+ // oldl was not found.
+ return this;
+ }
+
+ public static ActionListener add(ActionListener a, ActionListener b)
+ {
+ return (ActionListener) addInternal(a, b);
+ }
+
+ public static AdjustmentListener add(AdjustmentListener a,
+ AdjustmentListener b)
+ {
+ return (AdjustmentListener) addInternal(a, b);
+ }
+
+ public static ComponentListener add(ComponentListener a, ComponentListener b)
+ {
+ return (ComponentListener) addInternal(a, b);
+ }
+
+ public static ContainerListener add(ContainerListener a, ContainerListener b)
+ {
+ return (ContainerListener) addInternal(a, b);
+ }
+
+ public static FocusListener add(FocusListener a, FocusListener b)
+ {
+ return (FocusListener) addInternal(a, b);
+ }
+
+ public static HierarchyBoundsListener add(HierarchyBoundsListener a,
+ HierarchyBoundsListener b)
+ {
+ return (HierarchyBoundsListener) addInternal(a, b);
+ }
+
+ public static HierarchyListener add(HierarchyListener a, HierarchyListener b)
+ {
+ return (HierarchyListener) addInternal(a, b);
+ }
+
+ public static InputMethodListener add(InputMethodListener a,
+ InputMethodListener b)
+ {
+ return (InputMethodListener) addInternal(a, b);
+ }
+
+ public static ItemListener add(ItemListener a, ItemListener b)
+ {
+ return (ItemListener) addInternal(a, b);
+ }
+
+ public static KeyListener add(KeyListener a, KeyListener b)
+ {
+ return (KeyListener) addInternal(a, b);
+ }
+
+ public static MouseListener add(MouseListener a, MouseListener b)
+ {
+ return (MouseListener) addInternal(a, b);
+ }
+
+ public static MouseMotionListener add(MouseMotionListener a,
+ MouseMotionListener b)
+ {
+ return (MouseMotionListener) addInternal(a, b);
+ }
+
+ public static TextListener add(TextListener a, TextListener b)
+ {
+ return (TextListener) addInternal(a, b);
+ }
+
+ public static WindowListener add(WindowListener a, WindowListener b)
+ {
+ return (WindowListener) addInternal(a, b);
+ }
+
+ public static ActionListener remove(ActionListener l, ActionListener oldl)
+ {
+ return (ActionListener) removeInternal(l, oldl);
+ }
+
+ public static AdjustmentListener remove(AdjustmentListener l,
+ AdjustmentListener oldl)
+ {
+ return (AdjustmentListener) removeInternal(l, oldl);
+ }
+
+ public static ComponentListener remove(ComponentListener l,
+ ComponentListener oldl)
+ {
+ return (ComponentListener) removeInternal(l, oldl);
+ }
+
+ public static ContainerListener remove(ContainerListener l,
+ ContainerListener oldl)
+ {
+ return (ContainerListener) removeInternal(l, oldl);
+ }
+
+ public static FocusListener remove(FocusListener l, FocusListener oldl)
+ {
+ return (FocusListener) removeInternal(l, oldl);
+ }
+
+ public static HierarchyBoundsListener remove(HierarchyBoundsListener l,
+ HierarchyBoundsListener oldl)
+ {
+ return (HierarchyBoundsListener) removeInternal(l, oldl);
+ }
+
+ public static HierarchyListener remove(HierarchyListener l,
+ HierarchyListener oldl)
+ {
+ return (HierarchyListener) removeInternal(l, oldl);
+ }
+
+ public static InputMethodListener remove(InputMethodListener l,
+ InputMethodListener oldl)
+ {
+ return (InputMethodListener) removeInternal(l, oldl);
+ }
+
+ public static ItemListener remove(ItemListener l, ItemListener oldl)
+ {
+ return (ItemListener) removeInternal(l, oldl);
+ }
+
+ public static KeyListener remove(KeyListener l, KeyListener oldl)
+ {
+ return (KeyListener) removeInternal(l, oldl);
+ }
+
+ public static MouseListener remove(MouseListener l, MouseListener oldl)
+ {
+ return (MouseListener) removeInternal(l, oldl);
+ }
+
+ public static MouseMotionListener remove(MouseMotionListener l,
+ MouseMotionListener oldl)
+ {
+ return (MouseMotionListener) removeInternal(l, oldl);
+ }
+
+ public static TextListener remove(TextListener l, TextListener oldl)
+ {
+ return (TextListener) removeInternal(l, oldl);
+ }
+
+ public static WindowListener remove(WindowListener l, WindowListener oldl)
+ {
+ return (WindowListener) removeInternal(l, oldl);
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ ((ActionListener) a).actionPerformed(e);
+ ((ActionListener) b).actionPerformed(e);
+ }
+
+ public void adjustmentValueChanged(AdjustmentEvent e)
+ {
+ ((AdjustmentListener) a).adjustmentValueChanged(e);
+ ((AdjustmentListener) b).adjustmentValueChanged(e);
+ }
+
+ public void componentHidden(ComponentEvent e)
+ {
+ ((ComponentListener) a).componentHidden(e);
+ ((ComponentListener) b).componentHidden(e);
+ }
+
+ public void componentMoved(ComponentEvent e)
+ {
+ ((ComponentListener) a).componentMoved(e);
+ ((ComponentListener) b).componentMoved(e);
+ }
+
+ public void componentResized(ComponentEvent e)
+ {
+ ((ComponentListener) a).componentResized(e);
+ ((ComponentListener) b).componentResized(e);
+ }
+
+ public void componentShown(ComponentEvent e)
+ {
+ ((ComponentListener) a).componentShown(e);
+ ((ComponentListener) b).componentShown(e);
+ }
+
+ public void componentAdded(ContainerEvent e)
+ {
+ ((ContainerListener) a).componentAdded(e);
+ ((ContainerListener) b).componentAdded(e);
+ }
+
+ public void componentRemoved(ContainerEvent e)
+ {
+ ((ContainerListener) a).componentRemoved(e);
+ ((ContainerListener) b).componentRemoved(e);
+ }
+
+ public void focusGained(FocusEvent e)
+ {
+ ((FocusListener) a).focusGained(e);
+ ((FocusListener) b).focusGained(e);
+ }
+
+ public void focusLost(FocusEvent e)
+ {
+ ((FocusListener) a).focusLost(e);
+ ((FocusListener) b).focusLost(e);
+ }
+
+
+ public void ancestorMoved(HierarchyEvent e)
+ {
+ ((HierarchyBoundsListener) a).ancestorMoved(e);
+ ((HierarchyBoundsListener) b).ancestorMoved(e);
+ }
+
+ public void ancestorResized(HierarchyEvent e)
+ {
+ ((HierarchyBoundsListener) a).ancestorResized(e);
+ ((HierarchyBoundsListener) b).ancestorResized(e);
+ }
+
+ public void hierarchyChanged(HierarchyEvent e)
+ {
+ ((HierarchyListener) a).hierarchyChanged(e);
+ ((HierarchyListener) b).hierarchyChanged(e);
+ }
+
+ public void caretPositionChanged(InputMethodEvent e)
+ {
+ ((InputMethodListener) a).caretPositionChanged(e);
+ ((InputMethodListener) b).caretPositionChanged(e);
+ }
+
+ public void inputMethodTextChanged(InputMethodEvent e)
+ {
+ ((InputMethodListener) a).inputMethodTextChanged(e);
+ ((InputMethodListener) b).inputMethodTextChanged(e);
+ }
+
+ public void itemStateChanged(ItemEvent e)
+ {
+ ((ItemListener) a).itemStateChanged(e);
+ ((ItemListener) b).itemStateChanged(e);
+ }
+
+ public void keyPressed(KeyEvent e)
+ {
+ ((KeyListener) a).keyPressed(e);
+ ((KeyListener) b).keyPressed(e);
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ ((KeyListener) a).keyReleased(e);
+ ((KeyListener) b).keyReleased(e);
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ ((KeyListener) a).keyTyped(e);
+ ((KeyListener) b).keyTyped(e);
+ }
+
+ public void mouseClicked(MouseEvent e)
+ {
+ ((MouseListener) a).mouseClicked(e);
+ ((MouseListener) b).mouseClicked(e);
+ }
+
+
+ public void mouseEntered(MouseEvent e)
+ {
+ ((MouseListener) a).mouseEntered(e);
+ ((MouseListener) b).mouseEntered(e);
+ }
+
+ public void mouseExited(MouseEvent e)
+ {
+ ((MouseListener) a).mouseExited(e);
+ ((MouseListener) b).mouseExited(e);
+ }
+
+ public void mousePressed(MouseEvent e)
+ {
+ ((MouseListener) a).mousePressed(e);
+ ((MouseListener) b).mousePressed(e);
+ }
+
+ public void mouseReleased(MouseEvent e)
+ {
+ ((MouseListener) a).mouseReleased(e);
+ ((MouseListener) b).mouseReleased(e);
+ }
+
+ public void mouseDragged(MouseEvent e)
+ {
+ ((MouseMotionListener) a).mouseDragged(e);
+ ((MouseMotionListener) b).mouseDragged(e);
+ }
+
+ public void mouseMoved(MouseEvent e)
+ {
+ ((MouseMotionListener) a).mouseMoved(e);
+ ((MouseMotionListener) b).mouseMoved(e);
+ }
+
+ public void textValueChanged(TextEvent e)
+ {
+ ((TextListener) a).textValueChanged(e);
+ ((TextListener) b).textValueChanged(e);
+ }
+
+ public void windowActivated(WindowEvent e)
+ {
+ ((WindowListener) a).windowActivated(e);
+ ((WindowListener) b).windowActivated(e);
+ }
+
+ public void windowClosed(WindowEvent e)
+ {
+ ((WindowListener) a).windowClosed(e);
+ ((WindowListener) b).windowClosed(e);
+ }
+
+ public void windowClosing(WindowEvent e)
+ {
+ ((WindowListener) a).windowClosing(e);
+ ((WindowListener) b).windowClosing(e);
+ }
+
+ public void windowDeactivated(WindowEvent e)
+ {
+ ((WindowListener) a).windowDeactivated(e);
+ ((WindowListener) b).windowDeactivated(e);
+ }
+
+ public void windowDeiconified(WindowEvent e)
+ {
+ ((WindowListener) a).windowDeiconified(e);
+ ((WindowListener) b).windowDeiconified(e);
+ }
+
+ public void windowIconified(WindowEvent e)
+ {
+ ((WindowListener) a).windowIconified(e);
+ ((WindowListener) b).windowIconified(e);
+ }
+
+ public void windowOpened(WindowEvent e)
+ {
+ ((WindowListener) a).windowOpened(e);
+ ((WindowListener) b).windowOpened(e);
+ }
+
+ protected static void save(ObjectOutputStream s, String k, EventListener l)
+ {
+ // FIXME
+ }
+
+ protected void saveInternal(ObjectOutputStream s, String k)
+ {
+ // FIXME
+ }
+
+}
diff --git a/libjava/java/awt/CheckboxGroup.java b/libjava/java/awt/CheckboxGroup.java
new file mode 100644
index 00000000000..0acd7b55974
--- /dev/null
+++ b/libjava/java/awt/CheckboxGroup.java
@@ -0,0 +1,18 @@
+/* Copyright (C) 2000 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;
+
+/* Status: Empty placeholder. */
+
+public class CheckboxGroup
+{
+ // Fields from the serialization spec. Decalare others "transient".
+ boolean state;
+ int checkboxMenuItemSerializedDataVersion;
+}
diff --git a/libjava/java/awt/ColorModel.java b/libjava/java/awt/ColorModel.java
new file mode 100644
index 00000000000..0e58df1292c
--- /dev/null
+++ b/libjava/java/awt/ColorModel.java
@@ -0,0 +1,20 @@
+/* Copyright (C) 2000 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;
+
+/* Status: Just a placeholder. */
+
+public class ColorModel implements Transparency
+{
+ public int getTransparency()
+ {
+ // FIXME
+ return 0;
+ }
+}
diff --git a/libjava/java/awt/Component.java b/libjava/java/awt/Component.java
index d842910b64d..d578826775a 100644
--- a/libjava/java/awt/Component.java
+++ b/libjava/java/awt/Component.java
@@ -1,108 +1,1339 @@
/* Copyright (C) 1999, 2000 Free Software Foundation
- This file is part of libjava.
+ This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
-Libjava License. Please consult the file "LIBJAVA_LICENSE" for
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.awt;
import java.awt.event.*;
-//import java.awt.peer.ComponentPeer;
+import java.awt.image.*;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.lang.reflect.*;
+import java.util.EventListener;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.Vector;
+import java.awt.peer.ComponentPeer;
+import java.beans.PropertyChangeSupport;
+import java.beans.PropertyChangeListener;
+// import javax.accessibility.AccessibleContext;
-/* A very incomplete placeholder. */
+/* Status: Incomplete. The event dispatch mechanism is implemented. All
+ other methods defined in the J2SE 1.3 API javadoc exist, but are mostly
+ incomplete or only stubs; except for methods relating to the Drag and Drop,
+ Input Method, and Accessibility frameworks: These methods are present but
+ commented out. */
-public abstract class Component implements MenuContainer
+public abstract class Component implements ImageObserver, MenuContainer,
+ java.io.Serializable
{
- Container parent;
- java.awt.peer.ComponentPeer peer;
- int x, y, width, height;
- public Container getParent () { return parent; }
+ /* Constants for use with getAlignmentX()/getAlignmentY(). */
+ public static final float BOTTOM_ALIGNMENT = 1.0f,
+ CENTER_ALIGNMENT = 0.5f,
+ LEFT_ALIGNMENT = 0.0f,
+ RIGHT_ALIGNMENT = 1.0f,
+ TOP_ALIGNMENT = 0.0f;
+ /* Serialized fields from the serialization spec. */
+ // FIXME: Default values?
+ int x;
+ int y;
+ int width;
+ int height;
+ Color foreground;
+ Color background;
+ Font font;
+ Font peerFont;
+ Cursor cursor;
+ Locale locale;
+ boolean visible;
+ boolean enabled;
+ boolean valid;
+ boolean hasFocus;
+ //DropTarget dropTarget;
+ Vector popups;
+ String name;
+ boolean nameExplicitlySet;
+ Dimension minSize;
+ Dimension prefSize;
+ boolean newEventsOnly;
+ long eventMask;
+ PropertyChangeSupport changeSupport;
+ boolean isPacked;
+ int componentSerializedDataVersion;
+ /* AccessibleContext accessibleContext; */
+
+ /* Anything else is non-serializable, and should be declared "transient". */
+ transient Container parent;
+ transient java.awt.peer.ComponentPeer peer;
+
+ transient ComponentListener componentListener;
+ transient FocusListener focusListener;
+ transient KeyListener keyListener;
+ transient MouseListener mouseListener;
+ transient MouseMotionListener mouseMotionListener;
+ transient InputMethodListener inputMethodListener;
+ transient HierarchyListener hierarchyListener;
+ transient HierarchyBoundsListener hierarchyBoundsListener;
+
+ protected Component()
+ {
+ }
+
+ public String getName()
+ {
+ if (name == null && !nameExplicitlySet)
+ name = generateName();
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ nameExplicitlySet = true;
+ this.name = name;
+ }
+
+ /** Subclasses should override this to return unique component names like
+ * "menuitem0".
+ */
+ String generateName()
+ {
+ // Component is abstract.
+ return null;
+ }
+
+ public Container getParent()
+ {
+ return parent;
+ }
+
+ /** @deprecated */
+ public java.awt.peer.ComponentPeer getPeer()
+ {
+ return peer;
+ }
+
+ // FIXME: java.awt.dnd classes not yet implemented
+ /*
+ public void setDropTarget(DropTarget dt)
+ {
+ this.dropTarget = dt;
+ }
+
+ public DropTarget getDropTarget()
+ {
+ return dropTarget;
+ }
+ */
+
+ /** @since 1.3 */
+ public GraphicsConfiguration getGraphicsConfiguration()
+ {
+ // FIXME
+ return null;
+ }
+
+ public final Object getTreeLock()
+ {
+ // FIXME
+ return null;
+ }
+
+ public Toolkit getToolkit()
+ {
+ // FIXME
+ return null;
+ }
+
+ public boolean isValid()
+ {
+ // FIXME
+ return false;
+ }
+
+ /** @since 1.2 */
+ public boolean isDisplayable()
+ {
+ // FIXME
+ return false;
+ }
+
+ public boolean isVisible()
+ {
+ return visible;
+ }
+
+ public boolean isShowing()
+ {
+ // FIXME
+ return false;
+ }
+
+ public boolean isEnabled()
+ {
+ return enabled;
+ }
+
+ public void setEnabled(boolean b)
+ {
+ this.enabled = b;
+ }
+
+ /** @deprecated */
+ public void enable()
+ {
+ setEnabled(true);
+ }
+
+ /** @deprecated */
+ public void enable(boolean b)
+ {
+ setEnabled(b);
+ }
+
/** @deprecated */
- public java.awt.peer.ComponentPeer getPeer () { return peer; }
+ public void disable()
+ {
+ setEnabled(false);
+ }
+
+ public boolean isDoubleBuffered()
+ {
+ return false;
+ }
+
+ /** @since 1.2 */
+ public void enableInputMethods(boolean enable)
+ {
+ // FIXME
+ }
+
+ public void setVisible(boolean b)
+ {
+ visible = true;
+ // FIXME
+ }
+
+ /** @deprecated */
+ public void show()
+ {
+ setVisible(true);
+ }
+
+ /** @deprecated */
+ public void show(boolean b)
+ {
+ setVisible(b);
+ }
+
+ /** @deprecated */
+ public void hide()
+ {
+ setVisible(false);
+ }
+
+ public Color getForeground()
+ {
+ return this.foreground;
+ }
+
+ public void setForeground(Color c)
+ {
+ this.foreground = c;
+ }
+
+ public Color getBackground()
+ {
+ return this.background;
+ }
+
+ public void setBackground(Color c)
+ {
+ this.background = c;
+ }
+
+ public Font getFont()
+ {
+ return this.font;
+ }
+
+ public void setFont(Font f)
+ {
+ this.font = f;
+ }
- public void setVisible (boolean b)
- { /* FIXME */ }
+ public Locale getLocale() throws IllegalComponentStateException
+ {
+ if (locale != null)
+ return locale;
+ if (parent == null)
+ throw new IllegalComponentStateException
+ ("Component has no parent: Can not determine Locale");
+ return parent.getLocale();
+ }
+
+ public void setLocale(Locale l)
+ {
+ this.locale = l;
+ }
+
+ public ColorModel getColorModel()
+ {
+ // FIXME
+ return null;
+ }
- public void setSize (Dimension d)
- { setSize(d.width, d.height); }
+ public Point getLocation()
+ {
+ return new Point(x, y);
+ }
- public void setSize (int width, int height)
+ public Point getLocationOnScreen()
{
- this.width = width; this.height = height;
- if (peer != null)
- peer.setBounds(x, y, width, height);
+ // FIXME
+ return null;
+ }
+
+ /** @deprecated Use getLocation() instead. */
+ public Point location()
+ {
+ return getLocation();
}
public void setLocation (int x, int y)
{
- this.x = x; this.y = y;
+ this.x = x;
+ this.y = y;
if (peer != null)
peer.setBounds(x, y, width, height);
}
- public void setLocation (Point pt)
- { setLocation(pt.x, pt.y); }
-
- public void setBounds (int x, int y, int w, int h)
+ /** @deprecated */
+ public void move(int x, int y)
+ {
+ setLocation(x,y);
+ }
+
+ public void setLocation(Point p)
+ {
+ setLocation(p.x, p.y);
+ }
+
+ public Dimension getSize()
+ {
+ return new Dimension(width, height);
+ }
+
+ /** @deprecated */
+ public Dimension size()
+ {
+ return getSize();
+ }
+
+ public void setSize(int width, int height)
{
- this.x = x; this.y = y;
- this.width = w; this.height = h;
+ this.width = width;
+ this.height = height;
if (peer != null)
- peer.setBounds(x, y, w, h);
+ peer.setBounds(x, y, width, height);
+ }
+
+ /** @deprecated */
+ public void resize(int width, int height)
+ {
+ setSize(width, height);
+ }
+
+ public void setSize(Dimension d)
+ {
+ setSize(d.width, d.height);
}
- public void setBounds (Rectangle rect)
- { setBounds(rect.x, rect.y, rect.width, rect.height); }
-
- public Rectangle getBounds ()
+ /** @deprecated */
+ public void resize(Dimension d)
{
- return new Rectangle(x, y, width, height);
+ setSize(d.width, d.height);
}
- public Point getLocation ()
+ public Rectangle getBounds()
{
- return new Point(x, y);
+ return new Rectangle (x, y, width, height);
}
- public int getX ()
+ /** @deprecated */
+ public Rectangle bounds()
+ {
+ return getBounds();
+ }
+
+ public void setBounds(int x, int y, int w, int h)
+ {
+ this.x = x;
+ this.y = y;
+ this.width = w;
+ this.height = h;
+ if (peer != null)
+ peer.setBounds(x, y, w, h);
+ }
+
+ /** @deprecated */
+ public void reshape(int x, int y, int width, int height)
+ {
+ setBounds(x, y, width, height);
+ }
+
+ public void setBounds(Rectangle r)
+ {
+ setBounds(r.x, r.y, r.width, r.height);
+ }
+
+ /** @since 1.2 */
+ public int getX()
{
return x;
}
-
- public int getY ()
+
+ /** @since 1.2 */
+ public int getY()
{
return y;
}
-
- public Dimension getSize ()
+
+ /** @since 1.2 */
+ public int getWidth()
{
- return new Dimension(width, height);
+ return width;
}
-
- public Dimension getMinimumSize ()
+
+ /** @since 1.2 */
+ public int getHeight()
+ {
+ return height;
+ }
+
+ public Rectangle getBounds(Rectangle r)
+ {
+ r.x = this.x;
+ r.y = this.y;
+ r.width = this.width;
+ r.height = this.height;
+ return r;
+ }
+
+ public Dimension getSize(Dimension d)
+ {
+ d.width = this.width;
+ d.height = this.height;
+ return d;
+ }
+
+ public Point getLocation(Point p)
+ {
+ p.x = x;
+ p.y = y;
+ return p;
+ }
+
+ /** @since 1.2 */
+ public boolean isOpaque()
+ {
+ return false;
+ }
+
+ /** @since 1.2 */
+ public boolean isLightweight()
+ {
+ // FIXME
+ return false;
+ }
+
+ public Dimension getPreferredSize()
{
+ // FIXME?
if (peer == null)
return new Dimension(width, height);
else
- return peer.getMinimumSize();
+ return peer.getPreferredSize();
}
- public Dimension getPreferredSize ()
+ /** @deprecated */
+ public Dimension preferredSize()
{
+ return getPreferredSize();
+ }
+
+ public Dimension getMinimumSize()
+ {
+ // FIXME?
if (peer == null)
return new Dimension(width, height);
else
- return peer.getPreferredSize();
+ return peer.getMinimumSize();
}
- public synchronized void addKeyListener (KeyListener listener)
- { /* FIXME */ }
+ /** @deprecated */
+ public Dimension minimumSize()
+ {
+ return getMinimumSize();
+ }
+
+ public Dimension getMaximumSize()
+ {
+ // FIXME
+ return null;
+ }
+
+ public float getAlignmentX()
+ {
+ // FIXME
+ return 0;
+ }
+
+ public float getAlignmentY()
+ {
+ // FIXME
+ return 0;
+ }
+
+ public void doLayout()
+ {
+ // FIXME
+ }
+
+ /** @deprecated */
+ public void layout()
+ {
+ doLayout();
+ }
+
+ public void validate()
+ {
+ // FIXME
+ }
+
+ public void invalidate()
+ {
+ // FIXME
+ }
+
+ public Graphics getGraphics()
+ {
+ // FIXME
+ return null;
+ }
+
+ public FontMetrics getFontMetrics(Font font)
+ {
+ // FIXME
+ return null;
+ }
+
+ public void setCursor(Cursor cursor)
+ {
+ this.cursor = cursor;
+ }
+
+ public Cursor getCursor()
+ {
+ return this.cursor;
+ }
+
+ public void paint(Graphics g)
+ {
+ }
+
+ public void update(Graphics g)
+ {
+ // FIXME
+ }
+
+ public void paintAll(Graphics g)
+ {
+ }
+
+ public void repaint()
+ {
+ // FIXME
+ }
+
+ public void repaint(long tm)
+ {
+ // FIXME
+ }
+
+ public void repaint(int x, int y, int width, int height)
+ {
+ // FIXME
+ }
+
+ public void repaint(long tm, int x, int y, int width, int height)
+ {
+ // FIXME
+ }
+
+ public void print(Graphics g)
+ {
+ // FIXME
+ }
+
+ public void printAll(Graphics g)
+ {
+ // FIXME
+ }
+
+ public boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h)
+ {
+ // FIXME
+ return false;
+ }
+
+ public Image createImage(ImageProducer producer)
+ {
+ // FIXME
+ return null;
+ }
+
+ public Image createImage(int width, int height)
+ {
+ // FIXME
+ return null;
+ }
+
+ public boolean prepareImage(Image image, ImageObserver observer)
+ {
+ // FIXME
+ return false;
+ }
+
+ public boolean prepareImage(Image image, int width, int height, ImageObserver observer)
+ {
+ // FIXME
+ return false;
+ }
- public boolean isFocusTraversable ()
- { /* FIXME */ return false; }
+ public int checkImage(Image image, ImageObserver observer)
+ {
+ // FIXME
+ return false;
+ }
+
+ public int checkImage(Image image, int width, int height, ImageObserver observer)
+ {
+ // FIXME
+ return 0;
+ }
+
+ public boolean contains(int x, int y)
+ {
+ return (x >= 0) && (y >= 0) && (x < width) && (y < height);
+ }
+
+ /** @deprecated */
+ public boolean inside(int x, int y)
+ {
+ return contains(x,y);
+ }
+
+ public boolean contains(Point p)
+ {
+ return contains(p.x, p.y);
+ }
+
+ public Component getComponentAt(int x, int y)
+ {
+ if (contains(x,y))
+ return this;
+ return null;
+ }
+
+ /** @deprecated */
+ public Component locate(int x, int y)
+ {
+ return getComponentAt(x, y);
+ }
+
+ public Component getComponentAt(Point p)
+ {
+ return getComponentAt(p.x, p.y);
+ }
+
+ /** @deprecated */
+ public void deliverEvent(Event e)
+ {
+
+ }
+
+ /** Forward AWT events to processEvent() if:
+ * - Events have been enabled for this type of event via enableEvents(),
+ * OR:
+ * - There is at least one registered listener for this type of event
+ *
+ * @specnote This method is final, but we need to be able to
+ * override it in order to handle other event types in our
+ * subclasses. The solution is to define a second, non-final
+ * method - dispatchEventImpl() - to actually do the work.
+ * Investigations with Thread.dumpStack() on the dispatch thread
+ * in JDK 1.3 show Sun's implementation is doing the same
+ * thing.
+ */
+ public final void dispatchEvent(AWTEvent e)
+ {
+ dispatchEventImpl(e);
+ }
+ /* This code needs to be split up and put in to dispatchEventImpl() in the
+ appropriate Component subclasses:
+
+ else if ((e.id <= WindowEvent.WINDOW_LAST
+ && e.id >= WindowEvent.WINDOW_FIRST)
+ && (windowListener != null
+ || eventMask & AWTEvent.WINDOW_EVENT_MASK != 0))
+ processEvent(e);
+ else if ((e.id <= AdjustmentEvent.ADJUSTMENT_LAST
+ && e.id >= AdjustmentEvent.ADJUSTMENT_FIRST)
+ && (adjustmentListener != null
+ || eventMask & AWTEvent.ADJUSTMENT_EVENT_MASK != 0))
+ processEvent(e);
+ else if ((e.id <= ItemEvent.ITEM_LAST
+ && e.id >= ItemEvent.ITEM_FIRST)
+ && (itemListener != null
+ || eventMask & AWTEvent.ITEM_EVENT_MASK != 0))
+ processEvent(e);
+ else if ((e.id <= PaintEvent.PAINT_LAST
+ && e.id >= PaintEvent.PAINT_FIRST)
+ && (paintListener != null
+ || eventMask & AWTEvent.PAINT_EVENT_MASK != 0))
+ processEvent(e);
+ else if ((e.id <= TextEvent.TEXT_LAST
+ && e.id >= TextEvent.TEXT_FIRST)
+ && (textListener != null
+ || eventMask & AWTEvent.TEXT_EVENT_MASK != 0))
+ processEvent(e);
+ else if ((e.id <= InvocationEvent.INVOCATION_LAST
+ && e.id >= InvocationEvent.INVOCATION_FIRST)
+ && (invocationListener != null
+ || eventMask & AWTEvent.INVOCATION_EVENT_MASK != 0))
+ processEvent(e);
+ }
+ */
+
+ void dispatchEventImpl(AWTEvent e)
+ {
+ // Make use of event id's in order to avoid multiple instanceof tests.
+ if (e.id <= ComponentEvent.COMPONENT_LAST
+ && e.id >= ComponentEvent.COMPONENT_FIRST
+ && (componentListener != null
+ || (eventMask & AWTEvent.COMPONENT_EVENT_MASK) != 0))
+ processEvent(e);
+ else if (e.id <= KeyEvent.KEY_LAST
+ && e.id >= KeyEvent.KEY_FIRST
+ && (keyListener != null
+ || (eventMask & AWTEvent.KEY_EVENT_MASK) != 0))
+ processEvent(e);
+ else if (e.id <= MouseEvent.MOUSE_LAST
+ && e.id >= MouseEvent.MOUSE_FIRST
+ && (mouseListener != null
+ || mouseMotionListener != null
+ || (eventMask & AWTEvent.MOUSE_EVENT_MASK) != 0))
+ processEvent(e);
+ else if (e.id <= FocusEvent.FOCUS_LAST
+ && e.id >= FocusEvent.FOCUS_FIRST
+ && (focusListener != null
+ || (eventMask & AWTEvent.FOCUS_EVENT_MASK) != 0))
+ processEvent(e);
+ else if (e.id <= InputMethodEvent.INPUT_METHOD_LAST
+ && e.id >= InputMethodEvent.INPUT_METHOD_FIRST
+ && (inputMethodListener != null
+ || (eventMask & AWTEvent.INPUT_METHOD_EVENT_MASK) != 0))
+ processEvent(e);
+ else if (e.id <= HierarchyEvent.HIERARCHY_LAST
+ && e.id >= HierarchyEvent.HIERARCHY_FIRST
+ && (hierarchyListener != null
+ || hierarchyBoundsListener != null
+ || (eventMask & AWTEvent.HIERARCHY_EVENT_MASK) != 0))
+ processEvent(e);
+ }
+
+ /** @deprecated */
+ public boolean postEvent(Event e)
+ {
+ return false;
+ }
+
+ public synchronized void addComponentListener(ComponentListener l)
+ {
+ componentListener = AWTEventMulticaster.add(componentListener, l);
+ if (componentListener != null)
+ enableEvents(AWTEvent.COMPONENT_EVENT_MASK);
+ }
+
+ public synchronized void removeComponentListener(ComponentListener l)
+ {
+ componentListener = AWTEventMulticaster.remove(componentListener, l);
+ }
+
+ public synchronized void addFocusListener(FocusListener l)
+ {
+ focusListener = AWTEventMulticaster.add(focusListener, l);
+ if (focusListener != null)
+ enableEvents(AWTEvent.FOCUS_EVENT_MASK);
+ }
+
+ public synchronized void removeFocusListener(FocusListener l)
+ {
+ focusListener = AWTEventMulticaster.remove(focusListener, l);
+ }
+
+ /** @since 1.3 */
+ public synchronized void addHierarchyListener(HierarchyListener l)
+ {
+ hierarchyListener = AWTEventMulticaster.add(hierarchyListener, l);
+ if (hierarchyListener != null)
+ enableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
+ }
+
+ /** @since 1.3 */
+ public synchronized void removeHierarchyListener(HierarchyListener l)
+ {
+ hierarchyListener = AWTEventMulticaster.remove(hierarchyListener, l);
+ }
+
+ /** @since 1.3 */
+ public synchronized void addHierarchyBoundsListener(HierarchyBoundsListener l)
+ {
+ hierarchyBoundsListener =
+ AWTEventMulticaster.add(hierarchyBoundsListener, l);
+ if (hierarchyBoundsListener != null)
+ enableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
+ }
+
+ /** @since 1.3 */
+ public synchronized void
+ removeHierarchyBoundsListener(HierarchyBoundsListener l)
+ {
+ hierarchyBoundsListener =
+ AWTEventMulticaster.remove(hierarchyBoundsListener, l);
+ }
+
+ public synchronized void addKeyListener(KeyListener l)
+ {
+ keyListener = AWTEventMulticaster.add(keyListener, l);
+ if (keyListener != null)
+ enableEvents(AWTEvent.KEY_EVENT_MASK);
+ }
+
+ public synchronized void removeKeyListener(KeyListener l)
+ {
+ keyListener = AWTEventMulticaster.remove(keyListener, l);
+ }
- public void addNotify () { }
+ public synchronized void addMouseListener(MouseListener l)
+ {
+ mouseListener = AWTEventMulticaster.add(mouseListener, l);
+ if (mouseListener != null)
+ enableEvents(AWTEvent.MOUSE_EVENT_MASK);
+ }
+
+ public synchronized void removeMouseListener(MouseListener l)
+ {
+ mouseListener = AWTEventMulticaster.remove(mouseListener, l);
+ }
+
+ public synchronized void addMouseMotionListener(MouseMotionListener l)
+ {
+ mouseMotionListener = AWTEventMulticaster.add(mouseMotionListener, l);
+ if (mouseMotionListener != null)
+ enableEvents(AWTEvent.MOUSE_EVENT_MASK);
+ }
+
+ public synchronized void removeMouseMotionListener(MouseMotionListener l)
+ {
+ mouseMotionListener = AWTEventMulticaster.remove(mouseMotionListener, l);
+ }
+
+ /** @since 1.2 */
+ public synchronized void addInputMethodListener(InputMethodListener l)
+ {
+ inputMethodListener = AWTEventMulticaster.add(inputMethodListener, l);
+ if (inputMethodListener != null)
+ enableEvents(AWTEvent.INPUT_METHOD_EVENT_MASK);
+ }
+
+ /** @since 1.2 */
+ public synchronized void removeInputMethodListener(InputMethodListener l)
+ {
+ inputMethodListener = AWTEventMulticaster.remove(inputMethodListener, l);
+ }
+
+ /** Returns all registered EventListers of the given listenerType.
+ * listenerType must be a subclass of EventListener, or a
+ * ClassClassException is thrown.
+ * @since 1.3
+ */
+ public EventListener[] getListeners(Class listenerType)
+ {
+ if (listenerType == ComponentListener.class)
+ return getListenersImpl(listenerType, componentListener);
+ else if (listenerType == FocusListener.class)
+ return getListenersImpl(listenerType, focusListener);
+ else if (listenerType == KeyListener.class)
+ return getListenersImpl(listenerType, keyListener);
+ else if (listenerType == MouseListener.class)
+ return getListenersImpl(listenerType, mouseListener);
+ else if (listenerType == MouseMotionListener.class)
+ return getListenersImpl(listenerType, mouseMotionListener);
+ else if (listenerType == InputMethodListener.class)
+ return getListenersImpl(listenerType, inputMethodListener);
+ else if (listenerType == HierarchyListener.class)
+ return getListenersImpl(listenerType, hierarchyListener);
+ else if (listenerType == HierarchyBoundsListener.class)
+ return getListenersImpl(listenerType, hierarchyBoundsListener);
+ else
+ return getListenersImpl(listenerType, null);
+ }
+
+ static EventListener[] getListenersImpl(Class listenerType, EventListener el)
+ {
+ if (! EventListener.class.isAssignableFrom(listenerType))
+ throw new ClassCastException();
+
+ Vector v = new Vector();
+ if (el != null)
+ getListenerList (el, v);
+ EventListener[] el_a = (EventListener[]) Array.newInstance(listenerType,
+ v.size());
+ v.copyInto(el_a);
+ return el_a;
+ }
+
+ static void getListenerList(EventListener el, Vector v)
+ {
+ if (el instanceof AWTEventMulticaster)
+ {
+ AWTEventMulticaster mc = (AWTEventMulticaster) el;
+ getListenerList(mc.a, v);
+ getListenerList(mc.b, v);
+ }
+ else
+ v.addElement(el);
+ }
+
+ // The input method framework is currently unimplemented.
+ // /** @since 1.2 */
+ //
+ //public InputMethodRequests getInputMethodRequests()
+ //
+ // /** @since 1.2 */
+ //
+ // public InputContext getInputContext()
+
+ protected final void enableEvents(long eventsToEnable)
+ {
+ eventMask |= eventsToEnable;
+ // TODO: Unlike Sun's implementation, I think we should try and
+ // enable/disable events at the peer (gtk/X) level. This will avoid
+ // clogging the event pipeline with useless mousemove events that
+ // we arn't interested in, etc. This will involve extending the peer
+ // interface, but thats okay because the peer interfaces have been
+ // deprecated for a long time, and no longer feature in the
+ // API specification at all.
+ }
+
+ protected final void disableEvents(long eventsToDisable)
+ {
+ eventMask &= ~eventsToDisable;
+ // forward new event mask to peer?
+ }
+
+ /** coalesceEvents is called by the EventQueue if two events with the same
+ * event id are queued. Returns a new combined event, or null if no
+ * combining is done.
+ */
+ protected AWTEvent coalesceEvents(AWTEvent existingEvent, AWTEvent newEvent)
+ {
+ if (existingEvent instanceof MouseEvent
+ && (existingEvent.id == MouseEvent.MOUSE_DRAGGED
+ || existingEvent.id == MouseEvent.MOUSE_MOVED))
+ {
+ // Just drop the old (intermediate) event and return the new one.
+ return newEvent;
+ }
+ /*
+ else if (existingEvent instanceof PaintEvent)
+ {
+ // The JDK 1.3 documentation says that in this case a complex
+ // RepaintArea is generated. We don't do that yet, and creating a
+ // union area as suggested by older documentation sounds ugly.
+ }
+ */
+
+ // FIXME
+ return null;
+ }
+
+ /** Forward event to the appropriate processXXXEvent method based on the
+ * event type.
+ */
+ protected void processEvent(AWTEvent e)
+ {
+ if (e instanceof ComponentEvent)
+ processComponentEvent((ComponentEvent) e);
+ else if (e instanceof FocusEvent)
+ processFocusEvent((FocusEvent) e);
+ else if (e instanceof KeyEvent)
+ processKeyEvent((KeyEvent) e);
+ else if (e instanceof MouseEvent)
+ {
+ if (e.id == MouseEvent.MOUSE_MOVED
+ || e.id == MouseEvent.MOUSE_DRAGGED)
+ processMouseMotionEvent((MouseEvent) e);
+ else
+ processMouseEvent((MouseEvent) e);
+ }
+ else if (e instanceof InputMethodEvent)
+ processInputMethodEvent((InputMethodEvent) e);
+ else if (e instanceof HierarchyEvent)
+ {
+ if (e.id == HierarchyEvent.HIERARCHY_CHANGED)
+ processHierarchyEvent((HierarchyEvent) e);
+ else
+ processHierarchyBoundsEvent((HierarchyEvent) e);
+ }
+ }
+
+ protected void processComponentEvent(ComponentEvent e)
+ {
+ if (componentListener == null)
+ return;
+ switch (e.id)
+ {
+ case ComponentEvent.COMPONENT_HIDDEN:
+ componentListener.componentHidden(e);
+ break;
+
+ case ComponentEvent.COMPONENT_MOVED:
+ componentListener.componentMoved(e);
+ break;
+
+ case ComponentEvent.COMPONENT_RESIZED:
+ componentListener.componentResized(e);
+ break;
+
+ case ComponentEvent.COMPONENT_SHOWN:
+ componentListener.componentShown(e);
+ break;
+ }
+ }
+
+ protected void processFocusEvent(FocusEvent e)
+ {
+ if (focusListener == null)
+ return;
+ switch (e.id)
+ {
+ case FocusEvent.FOCUS_GAINED:
+ focusListener.focusGained(e);
+ break;
+ case FocusEvent.FOCUS_LOST:
+ focusListener.focusLost(e);
+ break;
+ }
+ }
+
+ protected void processKeyEvent(KeyEvent e)
+ {
+ if (keyListener == null)
+ return;
+ switch (e.id)
+ {
+ case KeyEvent.KEY_PRESSED:
+ keyListener.keyPressed(e);
+ break;
+ case KeyEvent.KEY_RELEASED:
+ keyListener.keyReleased(e);
+ break;
+ case KeyEvent.KEY_TYPED:
+ keyListener.keyTyped(e);
+ break;
+ }
+ }
+
+ protected void processMouseEvent(MouseEvent e)
+ {
+ if (mouseListener == null)
+ return;
+ switch (e.id)
+ {
+ case MouseEvent.MOUSE_CLICKED:
+ mouseListener.mousePressed(e);
+ break;
+ case MouseEvent.MOUSE_ENTERED:
+ mouseListener.mouseEntered(e);
+ break;
+ case MouseEvent.MOUSE_EXITED:
+ mouseListener.mouseExited(e);
+ break;
+ case MouseEvent.MOUSE_PRESSED:
+ mouseListener.mousePressed(e);
+ break;
+ case MouseEvent.MOUSE_RELEASED:
+ mouseListener.mouseReleased(e);
+ break;
+ }
+ }
+
+ protected void processMouseMotionEvent(MouseEvent e)
+ {
+ if (mouseMotionListener == null)
+ return;
+ switch (e.id)
+ {
+ case MouseEvent.MOUSE_DRAGGED:
+ mouseMotionListener.mouseDragged(e);
+ break;
+ case MouseEvent.MOUSE_MOVED:
+ mouseMotionListener.mouseMoved(e);
+ break;
+ }
+ }
+
+ /** @since 1.2 */
+ protected void processInputMethodEvent(InputMethodEvent e)
+ {
+ if (inputMethodListener == null)
+ return;
+ switch (e.id)
+ {
+ case InputMethodEvent.CARET_POSITION_CHANGED:
+ inputMethodListener.caretPositionChanged(e);
+ break;
+ case InputMethodEvent.INPUT_METHOD_TEXT_CHANGED:
+ inputMethodListener.inputMethodTextChanged(e);
+ break;
+ }
+ }
+
+ /** @since 1.3 */
+ protected void processHierarchyEvent(HierarchyEvent e)
+ {
+ if (hierarchyListener == null)
+ return;
+ if (e.id == HierarchyEvent.HIERARCHY_CHANGED)
+ hierarchyListener.hierarchyChanged(e);
+ }
+
+ /** @since 1.3 */
+ protected void processHierarchyBoundsEvent(HierarchyEvent e)
+ {
+ if (hierarchyBoundsListener == null)
+ return;
+ switch (e.id)
+ {
+ case HierarchyEvent.ANCESTOR_MOVED:
+ hierarchyBoundsListener.ancestorMoved(e);
+ break;
+ case HierarchyEvent.ANCESTOR_RESIZED:
+ hierarchyBoundsListener.ancestorResized(e);
+ break;
+ }
+ }
+
+ /** @deprecated */
+ public boolean handleEvent(Event evt)
+ {
+ return false;
+ }
+
+ /** @deprecated */
+ public boolean mouseDown(Event evt, int x, int y)
+ {
+ return false;
+ }
+
+ /** @deprecated */
+ public boolean mouseDrag(Event evt, int x, int y)
+ {
+ return false;
+ }
+
+ /** @deprecated */
+ public boolean mouseUp(Event evt, int x, int y)
+ {
+ return false;
+ }
+
+ /** @deprecated */
+ public boolean mouseMove(Event evt, int x, int y)
+ {
+ return false;
+ }
+
+ /** @deprecated */
+ public boolean mouseEnter(Event evt, int x, int y)
+ {
+ return false;
+ }
+
+ /** @deprecated */
+ public boolean mouseExit(Event evt, int x, int y)
+ {
+ return false;
+ }
+
+ /** @deprecated */
+ public boolean keyDown(Event evt, int key)
+ {
+ return false;
+ }
+
+ /** @deprecated */
+ public boolean keyUp(Event evt, int key)
+ {
+ return false;
+ }
+
+ /** @deprecated */
+ public boolean action(Event evt, Object what)
+ {
+ return false;
+ }
+
+ public void addNotify()
+ {
+ // FIXME
+ }
+
+ public void removeNotify()
+ {
+ // FIXME
+ }
+
+ /** @deprecated */
+ public boolean gotFocus(Event evt, Object what)
+ {
+ return false;
+ }
+
+ /** @deprecated */
+ public boolean lostFocus(Event evt, Object what)
+ {
+ return false;
+ }
+
+ public boolean isFocusTraversable()
+ {
+ // FIXME
+ return false;
+ }
+
+ public void requestFocus()
+ {
+ // FIXME
+ }
+
+ public void transferFocus()
+ {
+ // FIXME
+ }
+
+ /** @deprecated */
+ public void nextFocus()
+ {
+ transferFocus();
+ }
+
+ /** @since 1.2 */
+ public boolean hasFocus()
+ {
+ // FIXME
+ return false;
+ }
+
+ public synchronized void add(PopupMenu popup)
+ {
+ if (popups == null)
+ popups = new Vector();
+ popups.addElement(popup);
+ }
+
+ public synchronized void remove(MenuComponent popup)
+ {
+ popups.removeElement(popup);
+ }
+
+ protected String paramString()
+ {
+ // FIXME
+ return "FIXME";
+ }
+
+ public String toString()
+ {
+ return paramString();
+ }
+
+ public void list()
+ {
+ }
+
+ public void list(PrintStream out)
+ {
+ }
+
+ public void list(PrintStream out, int indent)
+ {
+ }
+
+ public void list(PrintWriter out)
+ {
+ }
+
+ public void list(PrintWriter out, int indent)
+ {
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener)
+ {
+
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener)
+ {
+ }
+
+ public void addPropertyChangeListener(String propertyName,
+ PropertyChangeListener listener)
+ {
+ }
+
+ public void removePropertyChangeListener(String propertyName,
+ PropertyChangeListener listener)
+ {
+ }
+
+ protected void firePropertyChange(String propertyName, Object oldValue,
+ Object newValue)
+ {
+ }
+
+ public void setComponentOrientation(ComponentOrientation o)
+ {
+ // FIXME
+ }
+
+ public ComponentOrientation getComponentOrientation()
+ {
+ // FIXME
+ return null;
+ }
+
+ /*
+ public AccessibleContext getAccessibleContext()
+ {
+ return accessibleContext;
+ }
+ */
}
diff --git a/libjava/java/awt/ComponentOrientation.java b/libjava/java/awt/ComponentOrientation.java
new file mode 100644
index 00000000000..739db00fbe6
--- /dev/null
+++ b/libjava/java/awt/ComponentOrientation.java
@@ -0,0 +1,84 @@
+/* Copyright (C) 2000 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. */
+
+/* Status: Incomplete. Needs a Locale lookup table. */
+
+package java.awt;
+
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+public class ComponentOrientation implements java.io.Serializable
+{
+ public static final ComponentOrientation LEFT_TO_RIGHT
+ = new ComponentOrientation(HORIZONTAL_ID & LEFT_TO_RIGHT_ID);
+ public static final ComponentOrientation RIGHT_TO_LEFT
+ = new ComponentOrientation(HORIZONTAL_ID);
+ public static final ComponentOrientation UNKNOWN
+ = new ComponentOrientation(0);
+
+ // FIXME: This field is from the serialization spec, but what are the
+ // correct values?
+ int orientation;
+
+ // Here is a wild guess.
+ private static int HORIZONTAL_ID = 1 << 0,
+ LEFT_TO_RIGHT_ID = 1 << 1;
+
+ ComponentOrientation(int orientation)
+ {
+ this.orientation = orientation;
+ }
+
+ public boolean isHorizontal()
+ {
+ return ((orientation & HORIZONTAL_ID) != 0);
+ }
+
+ public boolean isLeftToRight()
+ {
+ return ((orientation & LEFT_TO_RIGHT_ID) != 0);
+ }
+
+ public static ComponentOrientation getOrientation(Locale locale)
+ {
+ // FIXME: Use a table to look this up.
+ return LEFT_TO_RIGHT;
+ }
+
+ public static ComponentOrientation getOrientation(ResourceBundle bdl)
+ {
+ ComponentOrientation r;
+
+ try
+ {
+ Object obj = bdl.getObject("Orientation");
+ r = (ComponentOrientation) obj;
+ if (r != null)
+ return r;
+ }
+ catch (Exception x)
+ {
+ // Fall through
+ }
+
+ try
+ {
+ Locale l = bdl.getLocale();
+ r = getOrientation(l);
+ if (r != null)
+ return r;
+ }
+ catch (Exception x)
+ {
+ // Fall through
+ }
+
+ return (getOrientation (Locale.getDefault ()));
+ }
+}
diff --git a/libjava/java/awt/Container.java b/libjava/java/awt/Container.java
index 6befa791645..84840246b75 100644
--- a/libjava/java/awt/Container.java
+++ b/libjava/java/awt/Container.java
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999 Free Software Foundation
+/* Copyright (C) 1999, 2000 Free Software Foundation
This file is part of libjava.
@@ -8,26 +8,320 @@ details. */
package java.awt;
+import java.awt.event.*;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.util.EventListener;
+
/* A very incomplete placeholder. */
public abstract class Container extends Component
{
- int componentCount;
- Component[] components;
+ /* Serialized fields from the serialization spec. */
+ int ncomponents;
+ Component[] component;
+ LayoutManager layoutMgr;
+ /* LightweightDispatcher dispatcher; */ // wtf?
+ Dimension maxSize;
+ int containerSerializedDataVersion;
- public Component[] getComponents()
+ /* Anything else is non-serializable, and should be declared "transient". */
+ transient ContainerListener containerListener;
+
+ public Container()
{
- Component[] result = new Component[componentCount];
- if (componentCount > 0)
- System.arraycopy(components, 0, result, 0, componentCount);
- return result;
+ }
+
+ public int getComponentCount()
+ {
+ return ncomponents;
+ }
+
+ /** @deprecated Use getComponentCount() instead. */
+ public int countComponents()
+ {
+ return ncomponents;
}
public Component getComponent (int n)
{
- if (n < 0 || n >= componentCount)
+ if (n < 0 || n >= ncomponents)
throw new ArrayIndexOutOfBoundsException("no such component");
- return components[n];
+ return component[n];
+ }
+
+ public Component[] getComponents()
+ {
+ Component[] result = new Component[ncomponents];
+ if (ncomponents > 0)
+ System.arraycopy(component, 0, result, 0, ncomponents);
+ return result;
+ }
+
+ public Insets getInsets()
+ {
+ // FIXME
+ return null;
+ }
+
+ /** @deprecated Use getInsets() instead. */
+ public Insets insets()
+ {
+ return getInsets();
+ }
+
+ public Component add(Component comp)
+ {
+ // FIXME
+ return null;
+ }
+
+ public Component add(String name, Component comp)
+ {
+ // FIXME
+ return null;
+ }
+
+ public Component add(Component comp, int index)
+ {
+ // FIXME
+ return null;
+ }
+
+ public void add(Component comp, Object constraints)
+ {
+ // FIXME
+ }
+
+ public void add(Component comp, Object constraints, int index)
+ {
+ // FIXME
+ }
+
+ protected void addImpl(Component comp, Object constraints, int index)
+ {
+ // FIXME
+ }
+
+ public void remove(int index)
+ {
+ // FIXME
+ }
+
+ public void remove(Component comp)
+ {
+ // FIXME
+ }
+
+ public void removeAll()
+ {
+ // FIXME
+ }
+
+ public LayoutManager getLayout()
+ {
+ return layoutMgr;
+ }
+
+ public void setLayout(LayoutManager mgr)
+ {
+ layoutMgr = mgr;
+ // FIXME
+ }
+
+ public void doLayout()
+ {
+ // FIXME
+ }
+
+ /** @deprecated Use doLayout() instead. */
+ public void layout()
+ {
+ doLayout();
+ }
+
+ public void invalidate()
+ {
+ // FIXME
+ }
+
+ public void validate()
+ {
+ // FIXME
+ }
+
+ protected void validateTree()
+ {
+ // FIXME
+ }
+
+ public void setFont(Font f)
+ {
+ // FIXME
+ }
+
+ public Dimension getPreferredSize()
+ {
+ // FIXME
+ return null;
+ }
+
+ /** @deprecated Use getPreferredSize() instead */
+ public Dimension preferredSize()
+ {
+ return getPreferredSize();
+ }
+
+ public Dimension getMinimumSize()
+ {
+ // FIXME
+ return null;
+ }
+
+ /** @deprecated Use getMinimumSize() instead */
+ public Dimension minimumSize()
+ {
+ return getMinimumSize();
+ }
+
+ public Dimension getMaximumSize()
+ {
+ // FIXME
+ return null;
+ }
+
+ public float getAlignmentX()
+ {
+ // FIXME
+ return 0;
+ }
+
+ public float getAlignmentY()
+ {
+ // FIXME
+ return 0;
+ }
+
+ public void paint(Graphics g)
+ {
+ // FIXME
+ }
+
+ public void update(Graphics g)
+ {
+ // FIXME
+ }
+
+ public void print(Graphics g)
+ {
+ // FIXME
+ }
+
+ public void paintComponents(Graphics g)
+ {
+ // FIXME
+ }
+
+ public void printComponents(Graphics g)
+ {
+ // FIXME
+ }
+
+ void dispatchEventImpl(AWTEvent e)
+ {
+ if ((e.id <= ContainerEvent.CONTAINER_LAST
+ && e.id >= ContainerEvent.CONTAINER_FIRST)
+ && (containerListener != null
+ || (eventMask & AWTEvent.CONTAINER_EVENT_MASK) != 0))
+ processEvent(e);
+ else super.dispatchEventImpl(e);
+ }
+
+ public void addContainerListener(ContainerListener l)
+ {
+ containerListener = (ContainerListener)
+ AWTEventMulticaster.add(containerListener, l);
+ }
+
+ public void removeContainerListener(ContainerListener l)
+ {
+ containerListener = (ContainerListener)
+ AWTEventMulticaster.remove(containerListener, l);
+ }
+
+ /** @since 1.3 */
+ public EventListener[] getListeners(Class listenerType)
+ {
+ if (listenerType == ContainerListener.class)
+ return getListenersImpl(listenerType, containerListener);
+ else return super.getListeners(listenerType);
+ }
+
+ protected void processEvent(AWTEvent e)
+ {
+ if (e instanceof ContainerEvent)
+ processContainerEvent((ContainerEvent) e);
+ else super.processEvent(e);
+ }
+
+ protected void processContainerEvent(ContainerEvent e)
+ {
+ if (componentListener == null)
+ return;
+ switch (e.id)
+ {
+ case ContainerEvent.COMPONENT_ADDED:
+ containerListener.componentAdded(e);
+ break;
+
+ case ContainerEvent.COMPONENT_REMOVED:
+ containerListener.componentRemoved(e);
+ break;
+ }
+ }
+
+ /** @deprecated */
+ public void deliverEvent(Event e)
+ {
+ }
+
+ public Component getComponentAt(int x, int y)
+ {
+ // FIXME
+ return null;
+ }
+
+ /** @deprecated Use getComponentAt() instead */
+ public Component locate(int x, int y)
+ {
+ return getComponentAt(x, y);
+ }
+
+ public Component getComponentAt(Point p)
+ {
+ return getComponentAt(p.x, p.y);
+ }
+
+ public Component findComponentAt(int x, int y)
+ {
+ // FIXME
+ return null;
+ }
+
+ public Component findComponentAt(Point p)
+ {
+ return findComponentAt(p.x, p.y);
+ }
+
+ public void addNotify ()
+ {
+ for (int i = ncomponents; --i >= 0; )
+ component[i].addNotify();
+ }
+
+ public void removeNotify()
+ {
+ // FIXME
}
public boolean isAncestorOf (Component comp)
@@ -42,18 +336,18 @@ public abstract class Container extends Component
}
}
- public Component add (String name, Component comp)
+ protected String paramString()
{
- /* FIXME */
- return comp;
+ return "FIXME";
}
-
- public void addNotify ()
+
+ public void list(PrintStream out, int indent)
{
- for (int i = componentCount; --i >= 0; )
- components[i].addNotify();
+ // FIXME
+ }
+
+ public void list(PrintWriter out, int indent)
+ {
+ // FIXME
}
-
- public void setLayout (LayoutManager layout)
- { /* FIXME */ }
}
diff --git a/libjava/java/awt/Cursor.java b/libjava/java/awt/Cursor.java
new file mode 100644
index 00000000000..96d36e70934
--- /dev/null
+++ b/libjava/java/awt/Cursor.java
@@ -0,0 +1,87 @@
+/* Copyright (C) 2000 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;
+
+/* A somewhat incomplete placeholder. */
+
+public class Cursor
+{
+ 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;
+
+ private static final int PREDEFINED_COUNT = 14;
+
+ protected static Cursor[] predefined = new Cursor[PREDEFINED_COUNT];
+ protected String name;
+ int type;
+
+ public Cursor(int 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;
+ // FIXME
+ }
+
+ public static Cursor getPredefinedCursor(int type)
+ {
+ if (type >= PREDEFINED_COUNT)
+ return null;
+ if (predefined[type] == null)
+ predefined[type] = new Cursor(type);
+ return predefined[type];
+ }
+
+ public static Cursor getSystemCustomCursor(String name)
+ throws AWTException
+ {
+ // FIXME
+ return null;
+ }
+
+ public static Cursor getDefaultCursor()
+ {
+ return getPredefinedCursor(0);
+ }
+
+ public int getType()
+ {
+ return type;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public String toString()
+ {
+ return (this.getClass() + "[" + getName() + "]");
+ }
+}
diff --git a/libjava/java/awt/Event.java b/libjava/java/awt/Event.java
index 241e68ee635..f1f81c170e7 100644
--- a/libjava/java/awt/Event.java
+++ b/libjava/java/awt/Event.java
@@ -11,8 +11,7 @@ package java.awt;
/**
* Written using on-line Java Platform 1.2 API Specification, as well
* as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status: Believed complete and correct, except for the paramString()
- * method, which is stubbed.
+ * Status: Believed complete and correct.
*/
public class Event
@@ -132,7 +131,7 @@ public class Event
protected String paramString ()
{
- return "Event.paramString() not implemented";
+ return "id=" + id + ",x=" + x + ",y=" + y + "target=" + target;
}
public boolean shiftDown()
@@ -142,9 +141,7 @@ public class Event
public String toString()
{
- String r = getClass() + "[id=" + id + ",x=" + x + ",y=" + y + "target="
- + ((target == null) ? "null" : target) + "]";
- return r;
+ return getClass().getName() + "[" + paramString() + "]";
}
public void translate (int x, int y)
diff --git a/libjava/java/awt/EventDispatchThread.java b/libjava/java/awt/EventDispatchThread.java
new file mode 100644
index 00000000000..cf2e7a676d9
--- /dev/null
+++ b/libjava/java/awt/EventDispatchThread.java
@@ -0,0 +1,45 @@
+/* Copyright (C) 2000 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. */
+
+/** @author Bryce McKinlay */
+
+/* Status: believed complete, but untested. */
+
+package java.awt;
+
+class EventDispatchThread extends Thread
+{
+ private static int dispatchThreadNum = 1;
+
+ private EventQueue queue;
+
+ EventDispatchThread(EventQueue queue)
+ {
+ super();
+ setName("AWT-EventQueue-" + dispatchThreadNum++);
+ this.queue = queue;
+ setPriority(NORM_PRIORITY + 1);
+ }
+
+ public void run()
+ {
+ while (true)
+ {
+ try
+ {
+ AWTEvent evt = queue.getNextEvent();
+ queue.dispatchEvent(evt);
+ }
+ catch (Throwable x)
+ {
+ System.err.println("Exception during event dispatch:");
+ x.printStackTrace(System.err);
+ }
+ }
+ }
+}
diff --git a/libjava/java/awt/EventQueue.java b/libjava/java/awt/EventQueue.java
new file mode 100644
index 00000000000..0a60d69d470
--- /dev/null
+++ b/libjava/java/awt/EventQueue.java
@@ -0,0 +1,259 @@
+/* Copyright (C) 2000 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.awt.event.*;
+import java.util.EmptyStackException;
+import java.lang.reflect.InvocationTargetException;
+
+/* Written using on-line Java 2 Platform Standard Edition v1.3 API
+ * Specification, as well as "The Java Class Libraries", 2nd edition
+ * (Addison-Wesley, 1998).
+ * Status: Believed complete, but untested. Check FIXME's.
+ */
+
+/** @author Bryce McKinlay */
+
+public class EventQueue
+{
+ private static final int INITIAL_QUEUE_DEPTH = 8;
+ private AWTEvent[] queue = new AWTEvent[INITIAL_QUEUE_DEPTH];
+
+ private int next_in = 0; // Index where next event will be added to queue
+ private int next_out = 0; // Index of next event to be removed from queue
+
+ private EventQueue next;
+ private EventQueue prev;
+
+ private EventDispatchThread dispatchThread = new EventDispatchThread(this);
+
+ public EventQueue()
+ {
+ }
+
+ public synchronized AWTEvent getNextEvent()
+ throws InterruptedException
+ {
+ if (next != null)
+ return next.getNextEvent();
+
+ while (next_in == next_out)
+ wait();
+
+ AWTEvent res = queue[next_out];
+
+ if (++next_out == queue.length)
+ next_out = 0;
+ return res;
+ }
+
+ /** @specnote Does not block. Returns null if there are no events on the
+ * queue.
+ */
+ public synchronized AWTEvent peekEvent()
+ {
+ if (next != null)
+ return next.peekEvent();
+
+ if (next_in != next_out)
+ return queue[next_out];
+ else return null;
+ }
+
+ /** @specnote Does not block. Returns null if there are no matching events
+ * on the queue.
+ */
+ public synchronized AWTEvent peekEvent(int id)
+ {
+ if (next != null)
+ return next.peekEvent(id);
+
+ int i = next_out;
+ while (i != next_in)
+ {
+ AWTEvent qevt = queue[i];
+ if (qevt.id == id)
+ return qevt;
+ }
+ return null;
+ }
+
+ public synchronized void postEvent(AWTEvent evt)
+ {
+ if (next != null)
+ {
+ next.postEvent(evt);
+ return;
+ }
+ // FIXME: Security checks?
+
+ /* Check for any events already on the queue with the same source
+ and ID. */
+ int i = next_out;
+ while (i != next_in)
+ {
+ AWTEvent qevt = queue[i];
+ Object src;
+ if (qevt.id == evt.id
+ && (src = qevt.getSource()) == evt.getSource()
+ && src instanceof Component)
+ {
+ /* If there are, call coalesceEvents on the source component
+ to see if they can be combined. */
+ Component srccmp = (Component) src;
+ AWTEvent coalesced_evt = srccmp.coalesceEvents(qevt, evt);
+ if (coalesced_evt != null)
+ {
+ /* Yes. Replace the existing event with the combined event. */
+ queue[i] = coalesced_evt;
+ return;
+ }
+ break;
+ }
+ if (++i == queue.length)
+ i = 0;
+ }
+
+ queue[next_in] = evt;
+ if (++next_in == queue.length)
+ next_in = 0;
+
+ if (next_in == next_out)
+ {
+ /* Queue is full. Extend it. */
+ AWTEvent[] oldQueue = queue;
+ queue = new AWTEvent[queue.length * 2];
+
+ int len = oldQueue.length - next_out;
+ System.arraycopy(oldQueue, next_out, queue, 0, len);
+ if (next_out != 0)
+ System.arraycopy(oldQueue, 0, queue, len, next_out);
+
+ next_out = 0;
+ next_in = oldQueue.length;
+ }
+ notify();
+ }
+
+ /** @since JDK1.2 */
+ public static void invokeAndWait(Runnable runnable)
+ throws InterruptedException, InvocationTargetException
+ {
+ // FIXME: Is this an appropriate way to access the event queue?
+ EventQueue eq = Toolkit.systemEventQueue;
+ Thread current = Thread.currentThread();
+ if (current == eq.dispatchThread)
+ throw new Error("Can't call invokeAndWait from event dispatch thread");
+
+ InvocationEvent ie =
+ new InvocationEvent(eq, runnable, current, true);
+
+ eq.postEvent(ie);
+
+ synchronized (current)
+ {
+ current.wait();
+ }
+
+ Exception exception;
+
+ if ((exception = ie.getException()) != null)
+ throw new InvocationTargetException(exception);
+ }
+
+ /** @since JDK1.2 */
+ static void invokeLater(Runnable runnable)
+ {
+ // FIXME: Is this an appropriate way to access the event queue?
+ EventQueue eq = Toolkit.systemEventQueue;
+
+ InvocationEvent ie =
+ new InvocationEvent(eq, runnable, null, false);
+
+ eq.postEvent(ie);
+ }
+
+ static boolean isDispatchThread()
+ {
+ // FIXME: Is this an appropriate way to access the event queue?
+ EventQueue eq = Toolkit.systemEventQueue;
+ return (Thread.currentThread() == eq.dispatchThread);
+ }
+
+ /** Allows a custom EventQueue implementation to replace this one.
+ * All pending events are transferred to the new queue. Calls to postEvent,
+ * getNextEvent, and peekEvent are forwarded to the pushed queue until it
+ * is removed with a pop().
+ */
+ public synchronized void push(EventQueue newEventQueue)
+ {
+ int i = next_out;
+ while (i != next_in)
+ {
+ newEventQueue.postEvent(queue[i]);
+ next_out = i;
+ if (++i == queue.length)
+ i = 0;
+ }
+
+ next = newEventQueue;
+ newEventQueue.prev = this;
+ }
+
+ /** Transfer any pending events from this queue back to the parent queue that
+ * was previously push()ed. Event dispatch from this queue is suspended. */
+ protected void pop() throws EmptyStackException
+ {
+ if (prev == null)
+ throw new EmptyStackException();
+
+ // Don't synchronize both this and prev at the same time, or deadlock could
+ // occur.
+ synchronized (prev)
+ {
+ prev.next = null;
+ }
+
+ synchronized (this)
+ {
+ int i = next_out;
+ while (i != next_in)
+ {
+ prev.postEvent(queue[i]);
+ next_out = i;
+ if (++i == queue.length)
+ i = 0;
+ }
+ }
+ }
+
+ protected void dispatchEvent(AWTEvent evt)
+ {
+ if (evt instanceof ActiveEvent)
+ {
+ ActiveEvent active_evt = (ActiveEvent) evt;
+ active_evt.dispatch();
+ }
+ else
+ {
+ Object source = evt.getSource();
+
+ if (source instanceof Component)
+ {
+ Component srccmp = (Component) source;
+ srccmp.dispatchEvent(evt);
+ }
+ else if (source instanceof MenuComponent)
+ {
+ MenuComponent srccmp = (MenuComponent) source;
+ srccmp.dispatchEvent(evt);
+ }
+ }
+ }
+}
diff --git a/libjava/java/awt/Font.java b/libjava/java/awt/Font.java
index 9d25342fe7d..833b3c85b2b 100644
--- a/libjava/java/awt/Font.java
+++ b/libjava/java/awt/Font.java
@@ -8,6 +8,8 @@ details. */
package java.awt;
+import java.util.Locale;
+
/**
* @author Warren Levy <warrenl@cygnus.com>
* @date March 16, 2000.
@@ -71,6 +73,18 @@ public class Font
return name;
}
+ public String getFamily()
+ {
+ // FIXME
+ return null;
+ }
+
+ public String getFamily(Locale l)
+ {
+ // FIXME
+ return null;
+ }
+
public int getStyle()
{
return style;
@@ -87,4 +101,20 @@ public class Font
}
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() + "]";
+ }
}
diff --git a/libjava/java/awt/FontMetrics.java b/libjava/java/awt/FontMetrics.java
new file mode 100644
index 00000000000..560481d482d
--- /dev/null
+++ b/libjava/java/awt/FontMetrics.java
@@ -0,0 +1,153 @@
+/* Copyright (C) 2000 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;
+
+/**
+ * Status: Stubbed; A very incomplete implementation.
+ */
+
+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()
+ {
+ // FIXME??
+ return getHeight() - (getDescent() + getAscent());
+ }
+
+ public int getAscent()
+ {
+ // FIXME??
+ return getHeight() - (getDescent() + getLeading());
+ }
+
+ public int getDescent()
+ {
+ // FIXME??
+ return getHeight() - getDescent();
+ }
+
+ public int getHeight()
+ {
+ // FIXME??
+ return getLeading() + getAscent() + getDescent();
+ }
+
+ public int getMaxAscent()
+ {
+ // FIXME
+ return 0;
+ }
+
+ public int getMaxDescent()
+ {
+ // FIXME
+ return 0;
+ }
+
+ /* @deprecated Use getMaxDescent() instead. */
+ public int getMaxDecent()
+ {
+ return getMaxDescent();
+ }
+
+ public int getMaxAdvance()
+ {
+ // FIXME
+ return 0;
+ }
+
+ public int charWidth(int ch)
+ {
+ // FIXME
+ return 0;
+ }
+
+ public int charWidth(char ch)
+ {
+ // FIXME
+ return 0;
+ }
+
+ public int stringWidth(String str)
+ {
+ return charsWidth(str.toCharArray(), 0, str.length());
+ }
+
+ public int charsWidth(char[] data, int off, int len)
+ {
+ // FIXME
+ return -1;
+ }
+
+ public int bytesWidth(byte[] data, int off, int len)
+ {
+ // FIXME?
+ return -1;
+ }
+
+ public int[] getWidths()
+ {
+ // FIXME
+ return new int[0];
+ }
+
+ 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() + "]";
+ }
+}
diff --git a/libjava/java/awt/GraphicsConfiguration.java b/libjava/java/awt/GraphicsConfiguration.java
new file mode 100644
index 00000000000..cd37a0ba0e2
--- /dev/null
+++ b/libjava/java/awt/GraphicsConfiguration.java
@@ -0,0 +1,28 @@
+/* Copyright (C) 2000 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. */
+
+/* Status: Complete, but commented out until we have the required Java2D
+ classes. */
+
+package java.awt;
+
+public abstract class GraphicsConfiguration
+{
+ /*
+ public abstract GraphicsDevice getDevice();
+ public abstract BufferedImage createCompatibleImage(int width, int height);
+ public abstract BufferedImage createCompatibleImage(int width, int height,
+ int transparency);
+ public abstract ColorModel getColorModel();
+ public abstract ColorModel getColorModel(int transparency);
+ public abstract AffineTransform getDefaultTransform();
+ public abstract AffineTransform getNormalizingTransform();
+ */
+ /* @since 1.3 */
+ public abstract Rectangle getBounds();
+}
diff --git a/libjava/java/awt/Insets.java b/libjava/java/awt/Insets.java
new file mode 100644
index 00000000000..c28353e435e
--- /dev/null
+++ b/libjava/java/awt/Insets.java
@@ -0,0 +1,56 @@
+/* Copyright (C) 2000 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;
+
+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;
+ }
+}
diff --git a/libjava/java/awt/Menu.java b/libjava/java/awt/Menu.java
index af1c4c8dbd4..34dd600d779 100644
--- a/libjava/java/awt/Menu.java
+++ b/libjava/java/awt/Menu.java
@@ -8,26 +8,128 @@ details. */
package java.awt;
-/* A very incomplete placeholder. */
+import java.util.Vector;
+
+/* Status: Incomplete. */
public class Menu extends MenuItem implements MenuContainer
{
- public Menu (String label)
+ // Fields from the serialization spec. Decalare others "transient".
+ Vector items = new Vector();
+ boolean tearOff;
+ boolean isHelpMenu;
+ int menuSerializedDataVersion;
+
+ static final MenuItem separator = new MenuItem("-");
+
+ public Menu()
+ {
+ this(null, false);
+ }
+
+ public Menu(String label)
{
- super(label); // ???
- throw new Error ("java.awt.Menu: not implemented");
+ this(label, false);
+ }
+
+ public Menu(String label, boolean tearOff)
+ {
+ super(label);
+ this.tearOff = tearOff;
}
- public void add (String label)
- { /* FIXME */ }
+ public void addNotify()
+ {
+ // FIXME
+ }
+
+ public void removeNotify()
+ {
+ // FIXME
+ }
- public synchronized MenuItem add (MenuItem item)
+ public boolean isTearOff()
{
- /* FIXME */
- return item;
+ return tearOff;
}
- public Font getFont() { return null; } // FIXME
- public boolean postEvent(Event evt) { return false; } // FIXME
- public void remove(MenuComponent comp) { } // FIXME
+ 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()
}
diff --git a/libjava/java/awt/MenuComponent.java b/libjava/java/awt/MenuComponent.java
index e18314dd626..5c0ea69419a 100644
--- a/libjava/java/awt/MenuComponent.java
+++ b/libjava/java/awt/MenuComponent.java
@@ -1,15 +1,118 @@
-/* Copyright (C) 1999 Free Software Foundation
+/* Copyright (C) 1999, 2000 Free Software Foundation
- This file is part of libjava.
+ This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
-Libjava License. Please consult the file "LIBJAVA_LICENSE" for
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.awt;
-/* A very incomplete placeholder. */
+/* Status: partially complete, untested. */
public abstract class MenuComponent
{
+ // Fields from the serialization spec. Decalare others "transient".
+ Font font;
+ String name;
+ boolean nameExplicitlySet;
+ boolean newEventsOnly;
+ //AccessibleContext accessibleContext;
+
+ transient MenuContainer parent;
+ transient java.awt.peer.MenuComponentPeer peer;
+
+ public MenuComponent()
+ {
+ }
+
+ public String getName()
+ {
+ if (name == null && !nameExplicitlySet)
+ name = generateName();
+ return name;
+ }
+
+ /** Subclasses should override this to generate unique names like
+ * "menuitem0".
+ */
+ String generateName()
+ {
+ // MenuComponent is abstract.
+ return null;
+ }
+
+ public void setName(String name)
+ {
+ nameExplicitlySet = true;
+ this.name = name;
+ }
+
+ public MenuContainer getParent()
+ {
+ return parent;
+ }
+
+ /** @deprecated Don't use this. */
+ public java.awt.peer.MenuComponentPeer getPeer()
+ {
+ return peer;
+ }
+
+ public Font getFont()
+ {
+ return font;
+ }
+
+ public void setFont(Font f)
+ {
+ this.font = f;
+ }
+
+ public void removeNotify()
+ {
+ // FIXME
+ }
+
+ /** @deprecated Replaced by dispatchEvent(AWTEvent) */
+ public boolean postEvent(Event evt)
+ {
+ return false;
+ }
+
+ public final void dispatchEvent(AWTEvent e)
+ {
+ // FIXME
+ dispatchEventImpl(e);
+ }
+
+ void dispatchEventImpl(AWTEvent e)
+ {
+ // This is overridden by subclasses that support events.
+ }
+
+ protected void processEvent(AWTEvent e)
+ {
+ // Nothing to do here? This is be overridden by subclasses that
+ // support events.
+ }
+
+ protected String paramString()
+ {
+ return name;
+ }
+
+ public String toString()
+ {
+ return this.getClass().getName() + "[" + paramString() + "]";
+ }
+
+ protected final Object getTreeLock()
+ {
+ // FIXME: figure out how the tree lock works.
+ return null;
+ }
+
+ // Accessibility API not yet implemented.
+ // public AccessibleContext getAccessibleContext()
}
diff --git a/libjava/java/awt/MenuItem.java b/libjava/java/awt/MenuItem.java
index 2681a20ee12..d766d42b56a 100644
--- a/libjava/java/awt/MenuItem.java
+++ b/libjava/java/awt/MenuItem.java
@@ -1,25 +1,159 @@
-/* Copyright (C) 1999 Free Software Foundation
+/* Copyright (C) 1999, 2000 Free Software Foundation
- This file is part of libjava.
+ This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
-Libjava License. Please consult the file "LIBJAVA_LICENSE" for
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.awt;
import java.awt.event.*;
+import java.util.EventListener;
/* A very incomplete placeholder. */
public class MenuItem extends MenuComponent
{
+ // Fields from the serialization spec. Decalare others "transient".
+ boolean enabled;
+ String label;
+ String actionCommand;
+ long eventMask;
+ MenuShortcut shortcut;
+ int menuItemSerializedDataVersion;
+
+ transient ActionListener actionListener;
+
public MenuItem (String label)
{
- throw new Error("java.awt.MenuItem: not implemented");
+ this.label = label;
+ }
+
+ public String getLabel()
+ {
+ return label;
+ }
+
+ public synchronized void setLabel(String label)
+ {
+ this.label = label;
+ }
+
+ public boolean isEnabled()
+ {
+ return enabled;
+ }
+
+ public synchronized void setEnabled(boolean b)
+ {
+ this.enabled = b;
+ }
+
+ /** @deprecated Use setEnabled() instead. */
+ public void enable()
+ {
+ setEnabled(true);
+ }
+
+ /** @deprecated Use setEnabled() instead. */
+ public void enable(boolean b)
+ {
+ setEnabled(b);
+ }
+
+ /** @deprecated Use setEnabled() instead. */
+ public void disable()
+ {
+ setEnabled(false);
+ }
+
+ public MenuShortcut getShortcut()
+ {
+ return shortcut;
+ }
+
+ public void setShortcut(MenuShortcut s)
+ {
+ this.shortcut = s;
+ }
+
+ public void deleteShortcut()
+ {
+ setShortcut(null);
}
- public synchronized void addActionListener (ActionListener listener)
+ protected final void enableEvents(long eventsToEnable)
{
- /* FIXME */
+ eventMask |= eventsToEnable;
+ // TODO: see comment in Component.enableEvents().
}
+
+ protected final void disableEvents(long eventsToDisable)
+ {
+ eventMask &= ~eventsToDisable;
+ }
+
+ public void setActionCommand(String command)
+ {
+ this.actionCommand = command;
+ }
+
+ public String getActionCommand()
+ {
+ return actionCommand;
+ }
+
+ public synchronized void addActionListener(ActionListener l)
+ {
+ actionListener = AWTEventMulticaster.add(actionListener, l);
+ if (actionListener != null)
+ enableEvents(AWTEvent.ACTION_EVENT_MASK);
+ }
+
+ public synchronized void removeActionListener(ActionListener l)
+ {
+ actionListener = AWTEventMulticaster.remove(actionListener, l);
+ }
+
+ /** Returns all registered EventListers of the given listenerType.
+ * listenerType must be a subclass of EventListener, or a
+ * ClassClassException is thrown.
+ * @since 1.3
+ */
+ public EventListener[] getListeners(Class listenerType)
+ {
+ if (listenerType == ActionListener.class)
+ return Component.getListenersImpl(listenerType, actionListener);
+ else
+ return Component.getListenersImpl(listenerType, null);
+ }
+
+ void dispatchEventImpl(AWTEvent e)
+ {
+ if (e.id <= ActionEvent.ACTION_LAST
+ && e.id >= ActionEvent.ACTION_FIRST
+ && (actionListener != null
+ || (eventMask & AWTEvent.ACTION_EVENT_MASK) != 0))
+ processEvent(e);
+ }
+
+ protected void processEvent(AWTEvent e)
+ {
+ if (e instanceof ActionEvent)
+ processActionEvent((ActionEvent) e);
+ }
+
+ protected void processActionEvent(ActionEvent e)
+ {
+ if (actionListener != null)
+ actionListener.actionPerformed(e);
+ }
+
+ public String paramString()
+ {
+ return name + ",label=" + label;
+ }
+
+ // Accessibility API not yet implemented.
+ // public AccessibleContext getAccessibleContext()
}
diff --git a/libjava/java/awt/MenuShortcut.java b/libjava/java/awt/MenuShortcut.java
new file mode 100644
index 00000000000..b1989262771
--- /dev/null
+++ b/libjava/java/awt/MenuShortcut.java
@@ -0,0 +1,75 @@
+/* Copyright (C) 2000 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.awt.event.KeyEvent;
+
+/* Status: Complete, except for hashCode(). Untested. */
+
+public class MenuShortcut
+{
+ // 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);
+ }
+}
diff --git a/libjava/java/awt/Panel.java b/libjava/java/awt/Panel.java
new file mode 100644
index 00000000000..59aa6e273d5
--- /dev/null
+++ b/libjava/java/awt/Panel.java
@@ -0,0 +1,32 @@
+/* Copyright (C) 2000 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;
+
+/* An incomplete placeholder. */
+
+public class Panel extends Container
+{
+ public Panel()
+ {
+ super();
+ }
+
+ public Panel(LayoutManager layout)
+ {
+ super();
+ setLayout (layout);
+ }
+
+ //public AccessibleContext getAccessibleContext()
+
+ public void addNotify()
+ {
+ // FIXME
+ }
+}
diff --git a/libjava/java/awt/PopupMenu.java b/libjava/java/awt/PopupMenu.java
new file mode 100644
index 00000000000..3be7f847cae
--- /dev/null
+++ b/libjava/java/awt/PopupMenu.java
@@ -0,0 +1,37 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libjava.
+
+This software is copyrighted work licensed under the terms of the
+Libjava License. Please consult the file "LIBJAVA_LICENSE" for
+details. */
+
+package java.awt;
+
+/* Status: Incomplete. */
+
+public class PopupMenu extends Menu
+{
+ public PopupMenu()
+ {
+ super();
+ }
+
+ public PopupMenu(String label)
+ {
+ super(label);
+ }
+
+ public void addNotify()
+ {
+ // FIXME
+ }
+
+ public void show(Component origin, int x, int y)
+ {
+ // FIXME
+ }
+
+ // Accessibility API not yet implemented.
+ // public AccessibleContext getAccessibleContext()
+}
diff --git a/libjava/java/awt/Rectangle.java b/libjava/java/awt/Rectangle.java
index d6c9c5e48ab..c741a337aa5 100644
--- a/libjava/java/awt/Rectangle.java
+++ b/libjava/java/awt/Rectangle.java
@@ -8,28 +8,324 @@ details. */
package java.awt;
-/* Status: Quite imcomplete. */
+/* Status: Mostly complete. Some of the Java2D stuff is commented out. */
-public class Rectangle implements Shape
+// FIXME: Should extend Rectangle2D for 1.2 implementation
+public class Rectangle implements Cloneable, Shape
{
public int x;
public int y;
public int width;
public int height;
- public Rectangle () { }
+ public Rectangle()
+ {
+ x = 0;
+ y = 0;
+ width = 0;
+ height = 0;
+ }
+
+ public Rectangle(Rectangle r)
+ {
+ x = r.x;
+ y = r.y;
+ width = r.width;
+ height = r.height;
+ }
+
+ public Rectangle(int x, int y, int width, int height)
+ {
+ this.x = x;
+ this.y = y;
+ this.width = width;
+ this.height = height;
+ }
- public Rectangle (int width, int height)
- { this.width = width; this.height = height; }
+ public Rectangle(int width, int height)
+ {
+ x = 0;
+ y = 0;
+ this.width = width;
+ this.height = height;
+ }
+
+ public Rectangle(Point p, Dimension d)
+ {
+ x = p.x;
+ y = p.y;
+ width = d.width;
+ height = d.height;
+ }
+
+ public Rectangle(Point p)
+ {
+ x = p.x;
+ y = p.y;
+ width = 0;
+ height = 0;
+ }
- public Rectangle (int x, int y, int width, int height)
+ public Rectangle(Dimension d)
{
- this.x = x; this.y = y;
- this.width = width; this.height = height;
+ x = 0;
+ y = 0;
+ width = d.width;
+ height = d.height;
}
public Rectangle getBounds ()
{
- return new Rectangle (x, y, width, height);
+ return (Rectangle) this.clone();
+ }
+
+ public void add(int newx, int newy)
+ {
+ int x = this.x > newx ? newx : this.x;
+ int y = this.y > newy ? newy : this.y;
+ width = (this.x + width > newx ? this.x + width : newx) - x;
+ height = (this.y + height > newy ? this.y + height : newy) - y;
+ this.x = x;
+ this.y = y;
+ }
+
+ public void add(Point pt)
+ {
+ add (pt.x, pt.y);
+ }
+
+ public void add(Rectangle r)
+ {
+ int x = this.x > r.x ? r.x : this.x;
+ int y = this.y > r.y ? r.y : this.y;
+ width = (this.x + width > r.x + r.width ?
+ this.x + width : r.x + r.width) - x;
+ height = (this.y + height > r.y + r.height ?
+ this.y + height : r.y + r.height) - y;
+ this.x = x;
+ this.y = y;
+ }
+
+ public boolean contains(int x, int y)
+ {
+ return (x >= this.x && x <= this.x + this.width
+ && y >= this.y && y <= this.y + this.height);
+ }
+
+ public boolean contains(int x, int y, int w, int h)
+ {
+ return (x >= this.x && x + w <= this.x + this.width
+ && y >= this.y && y + h <= this.y + this.height);
+ }
+
+ public boolean contains(Point p)
+ {
+ return contains(p.x, p.y);
+ }
+
+ public boolean contains(Rectangle r)
+ {
+ return contains(r.x, r.y, r.width, r.height);
+ }
+
+ public boolean equals(Object obj)
+ {
+ if (obj instanceof Rectangle)
+ {
+ Rectangle r = (Rectangle) obj;
+ return (r.x == x
+ && r.y == y
+ && r.width == width
+ && r.height == height);
+ }
+ return false;
+ }
+
+ public double getHeight()
+ {
+ return (double) this.height;
+ }
+
+ public Point getLocation()
+ {
+ return new Point(x,y);
+ }
+
+ public Dimension getSize()
+ {
+ return new Dimension(width, height);
+ }
+
+ public double getWidth()
+ {
+ return (double) this.width;
+ }
+
+ public double getX()
+ {
+ return (double) x;
+ }
+
+ public double getY()
+ {
+ return (double) y;
+ }
+
+ public void grow(int h, int v)
+ {
+ width += h;
+ height += v;
+ }
+
+ /** @deprecated Use contains() instead. */
+ public boolean inside(int x, int y)
+ {
+ return contains(x, y);
}
+
+ /** @specnote If there is no intersection, an empty rectangle at 0,0
+ * is returned.
+ */
+ public Rectangle intersection(Rectangle r)
+ {
+ int newx = x < r.x ? r.x : x;
+ int newy = y < r.y ? r.y : y;
+ int neww = (x + width < r.x + r.width ?
+ x + width : r.x + r.width) - newx;
+ int newh = (y + height < r.y + r.height ?
+ y + height : r.y + r.height) - newy;
+ if (neww >= 0 && newh >= 0)
+ return new Rectangle(newx, newy, neww, newh);
+ else
+ return new Rectangle(0, 0, 0, 0);
+ }
+
+ /** @specnote If the intersection is at an edge or corner only (an empty
+ * intersection with a non-zero location), false is returned.
+ */
+ public boolean intersects(Rectangle r)
+ {
+ int neww = (x + width < r.x + r.width ?
+ x + width : r.x + r.width) - (x < r.x ? r.x : x);
+ int newh = (y + height < r.y + r.height ?
+ y + height : r.y + r.height) - (y < r.y ? r.y : y);
+ return (neww > 0 && newh > 0);
+ }
+
+ public boolean isEmpty()
+ {
+ return (width > 0 && height > 0);
+ }
+
+ /** @deprecated Use setLocation() instead. */
+ public void move(int x, int y)
+ {
+ setLocation(x, y);
+ }
+
+ public int outcode(double x, double y)
+ {
+ // FIXME
+ return 0;
+ }
+
+ /** @deprecated Use setBounds() instead. */
+ public void reshape(int x, int y, int width, int height)
+ {
+ setBounds(x, y, width, height);
+ }
+
+ /** @deprecated Use setSize() instead. */
+ public void resize(int width, int height)
+ {
+ setSize(width, height);
+ }
+
+ public void setBounds(int x, int y, int width, int height)
+ {
+ this.x = x;
+ this.y = y;
+ this.width = width;
+ this.height = height;
+ }
+
+ public void setBounds(Rectangle r)
+ {
+ this.x = r.x;
+ this.y = r.y;
+ this.width = r.width;
+ this.height = r.height;
+ }
+
+ public void setLocation(int x, int y)
+ {
+ this.x = x;
+ this.y = y;
+ }
+
+ public void setLocation(Point p)
+ {
+ this.x = p.x;
+ this.y = p.y;
+ }
+
+ public void setRect(double x, double y, double width, double height)
+ {
+ this.x = (int) x;
+ this.y = (int) y;
+ this.width = (int) width;
+ this.height = (int) height;
+ }
+
+ public void setSize(Dimension d)
+ {
+ this.width = d.width;
+ this.height = d.height;
+ }
+
+ public void setSize(int width, int height)
+ {
+ this.width = width;
+ this.height = height;
+ }
+
+ public void translate(int x, int y)
+ {
+ x += x;
+ y += y;
+ }
+
+ public Rectangle union(Rectangle r)
+ {
+ int newx = x > r.x ? r.x : x;
+ int newy = y > r.y ? r.y : y;
+ int neww = (this.x + width > r.x + r.width ?
+ this.x + width : r.x + r.width) - newx;
+ int newh = (this.y + height > r.y + r.height ?
+ this.y + height : r.y + r.height) - newy;
+ return new Rectangle(newx, newy, neww, newh);
+ }
+
+ // Commented out until we have Rectangle2D
+ /*
+ public Rectangle2D createIntersection(Rectangle2D r)
+ {
+ }
+
+ public Rectangle2D createUnion(Rectangle2D r)
+ {
+ }
+
+ public Rectangle2D getBounds2D()
+ {
+ }
+ */
+
+ public String toString()
+ {
+ return getClass().getName() + "[x=" + x + ",y=" + y + ",width=" + width +
+ ",height=" + height + "]";
+ }
+
+
}
diff --git a/libjava/java/awt/Toolkit.java b/libjava/java/awt/Toolkit.java
index bd1085a0d74..f7ec764990b 100644
--- a/libjava/java/awt/Toolkit.java
+++ b/libjava/java/awt/Toolkit.java
@@ -15,6 +15,7 @@ import java.net.URL;
public abstract class Toolkit
{
static Toolkit defaultToolkit;
+ static EventQueue systemEventQueue = new EventQueue();
public static synchronized Toolkit getDefaultToolkit()
{
@@ -26,6 +27,11 @@ public abstract class Toolkit
protected abstract FramePeer createFrame(Frame target);
public abstract Image getImage(URL url);
+ public final EventQueue getSystemEventQueue()
+ {
+ return systemEventQueue;
+ }
+
private static void init() { }
// private static native void init();
// static { init(); }
diff --git a/libjava/java/awt/event/ActionEvent.java b/libjava/java/awt/event/ActionEvent.java
index de0d376d9f3..cd0761cdd93 100644
--- a/libjava/java/awt/event/ActionEvent.java
+++ b/libjava/java/awt/event/ActionEvent.java
@@ -21,25 +21,25 @@ public class ActionEvent extends AWTEvent
public static final int META_MASK = 4;
public static final int SHIFT_MASK = 1;
- String actionCommand;
+ String cmd;
int modifiers;
public ActionEvent (Object source, int id, String command)
{
super(source, id);
- actionCommand = command;
+ cmd = command;
}
public ActionEvent (Object source, int id, String command, int modifiers)
{
super(source, id);
- actionCommand = command;
+ cmd = command;
this.modifiers = modifiers;
}
- public String getActionCommand ()
+ public String getcmd ()
{
- return actionCommand;
+ return cmd;
}
public int getModifiers ()
@@ -49,7 +49,18 @@ public class ActionEvent extends AWTEvent
public String paramString ()
{
- return ("ActionEvent[" + actionCommand + "," + modifiers
- + ";" + super.paramString () + "]");
+ String r;
+ switch (id)
+ {
+ case ACTION_PERFORMED:
+ r = "ACTION_PERFORMED";
+ break;
+ default:
+ r = "unknown type";
+ break;
+ }
+
+ r += ",cmd=" + cmd;
+ return r;
}
}
diff --git a/libjava/java/awt/event/AdjustmentEvent.java b/libjava/java/awt/event/AdjustmentEvent.java
index 84838b6afec..9da9993a794 100644
--- a/libjava/java/awt/event/AdjustmentEvent.java
+++ b/libjava/java/awt/event/AdjustmentEvent.java
@@ -30,7 +30,7 @@ public class AdjustmentEvent extends AWTEvent
public AdjustmentEvent (Adjustable source, int id, int type, int value)
{
super (source, id);
- this.type = type;
+ this.adjType = type;
this.value = value;
}
@@ -41,7 +41,7 @@ public class AdjustmentEvent extends AWTEvent
public int getAdjustmentType ()
{
- return type;
+ return adjType;
}
public int getValue ()
@@ -51,10 +51,45 @@ public class AdjustmentEvent extends AWTEvent
public String paramString ()
{
- return ("AdjustmentEvent[" + type + "," + value
- + ";" + super.paramString () + "]");
+ String r;
+ switch (id)
+ {
+ case ADJUSTMENT_VALUE_CHANGED:
+ r = "ADJUSTMENT_VALUE_CHANGED";
+ break;
+ default:
+ r = "unknown id";
+ break;
+ }
+
+ r += ",adjType=";
+
+ switch (adjType)
+ {
+ case BLOCK_DECREMENT:
+ r += "BLOCK_DECREMENT";
+ break;
+ case BLOCK_INCREMENT:
+ r += "BLOCK_INCREMENT";
+ break;
+ case TRACK:
+ r += "TRACK";
+ break;
+ case UNIT_DECREMENT:
+ r += "UNIT_DECREMENT";
+ break;
+ case UNIT_INCREMENT:
+ r += "UNIT_INCREMENT";
+ break;
+ default:
+ r += "unknown type";
+ break;
+ }
+
+ r += ",value=" + value;
+ return r;
}
- private int type;
+ private int adjType;
private int value;
}
diff --git a/libjava/java/awt/event/ComponentEvent.java b/libjava/java/awt/event/ComponentEvent.java
index bb34a6e231e..bdf80ce2f35 100644
--- a/libjava/java/awt/event/ComponentEvent.java
+++ b/libjava/java/awt/event/ComponentEvent.java
@@ -37,6 +37,25 @@ public class ComponentEvent extends AWTEvent
public String paramString ()
{
- return super.paramString ();
+ String r;
+ switch (id)
+ {
+ case COMPONENT_HIDDEN:
+ r = "COMPONENT_HIDDEN";
+ break;
+ case COMPONENT_MOVED:
+ r = "COMPONENT_MOVED";
+ break;
+ case COMPONENT_RESIZED:
+ r = "COMPONENT_RESIZED";
+ break;
+ case COMPONENT_SHOWN:
+ r = "COMPONENT_SHOWN";
+ break;
+ default:
+ r = "unknown id";
+ break;
+ }
+ return r;
}
}
diff --git a/libjava/java/awt/event/ContainerEvent.java b/libjava/java/awt/event/ContainerEvent.java
index b6621693c16..fc68d1403bd 100644
--- a/libjava/java/awt/event/ContainerEvent.java
+++ b/libjava/java/awt/event/ContainerEvent.java
@@ -23,8 +23,8 @@ public class ContainerEvent extends ComponentEvent
public static final int CONTAINER_FIRST = 300;
public static final int CONTAINER_LAST = 301;
- // FIXME: jdk1.2 docs say source is a Component.
- public ContainerEvent (Container source, int id, Component child)
+ /** @specnote In JDK1.2 and 1.3, source is a Component. */
+ public ContainerEvent (Component source, int id, Component child)
{
super (source, id);
this.child = child;
@@ -35,15 +35,29 @@ public class ContainerEvent extends ComponentEvent
return child;
}
- public Component getContainer ()
+ public Component getComponent ()
{
- return (Container) source;
+ return (Component) source;
}
public String paramString ()
{
- return ("ContainerEvent[" + child
- + ";" + super.paramString () + "]");
+ String r;
+ switch (id)
+ {
+ case COMPONENT_ADDED:
+ r = "COMPONENT_ADDED";
+ break;
+ case COMPONENT_REMOVED:
+ r = "COMPONENT_REMOVED";
+ break;
+ default:
+ r = "unknown id";
+ break;
+
+ }
+ r += ",child=" + child;
+ return r;
}
private Component child;
diff --git a/libjava/java/awt/event/FocusEvent.java b/libjava/java/awt/event/FocusEvent.java
index 9b559ea4e49..ab125f55cab 100644
--- a/libjava/java/awt/event/FocusEvent.java
+++ b/libjava/java/awt/event/FocusEvent.java
@@ -42,8 +42,21 @@ public class FocusEvent extends AWTEvent
public String paramString ()
{
- return ("FocusEvent[" + temporary
- + ";" + super.paramString () + "]");
+ String r = "";
+ switch (id)
+ {
+ case FOCUS_GAINED:
+ r += "FOCUS_GAINED";
+ break;
+ case FOCUS_LOST:
+ r += "FOCUS_LOST";
+ break;
+ default:
+ r += "unknown id";
+ break;
+ }
+ r += (temporary ? "temporary" : "permanent");
+ return r;
}
private boolean temporary;
diff --git a/libjava/java/awt/event/HierarchyBoundsAdapter.java b/libjava/java/awt/event/HierarchyBoundsAdapter.java
new file mode 100644
index 00000000000..39ce1ab1592
--- /dev/null
+++ b/libjava/java/awt/event/HierarchyBoundsAdapter.java
@@ -0,0 +1,27 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libjava License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt.event;
+
+/**
+ * @since 1.3
+ * @author Bryce McKinlay
+ */
+
+/* Status: Believed complete and correct. */
+
+public abstract class HierarchyBoundsAdapter implements HierarchyBoundsListener
+{
+ public void ancestorMoved(HierarchyEvent e)
+ {
+ }
+
+ public void ancestorResized(HierarchyEvent e)
+ {
+ }
+}
diff --git a/libjava/java/awt/event/HierarchyBoundsListener.java b/libjava/java/awt/event/HierarchyBoundsListener.java
new file mode 100644
index 00000000000..aa853a0c27d
--- /dev/null
+++ b/libjava/java/awt/event/HierarchyBoundsListener.java
@@ -0,0 +1,22 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libjava License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt.event;
+
+/**
+ * @since 1.3
+ * @author Bryce McKinlay
+ */
+
+/* Status: Believed complete and correct. */
+
+public interface HierarchyBoundsListener extends java.util.EventListener
+{
+ public void ancestorMoved(HierarchyEvent e);
+ public void ancestorResized(HierarchyEvent e);
+}
diff --git a/libjava/java/awt/event/HierarchyEvent.java b/libjava/java/awt/event/HierarchyEvent.java
new file mode 100644
index 00000000000..171d8b212ab
--- /dev/null
+++ b/libjava/java/awt/event/HierarchyEvent.java
@@ -0,0 +1,96 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libjava License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt.event;
+import java.awt.*;
+
+/**
+ * @since 1.3
+ * @author Bryce McKinlay
+ */
+
+/* Status: thought to be complete and correct. */
+
+public class HierarchyEvent extends AWTEvent
+{
+ public static final int PARENT_CHANGED = 1 << 0,
+ DISPLAYABILITY_CHANGED = 1 << 1,
+ SHOWING_CHANGED = 1 << 2,
+ HIERARCHY_FIRST = 1400,
+ HIERARCHY_CHANGED = 1400,
+ ANCESTOR_MOVED = 1401,
+ ANCESTOR_RESIZED = 1402,
+ HIERARCHY_LAST = 1402;
+
+ /* Serialized fields from the serialization spec. */
+ Component changed;
+ Container changedParent;
+ long changeFlags = 0;
+
+ public HierarchyEvent(Component source, int id, Component changed,
+ Container changedParent)
+ {
+ super(source, id);
+ this.changed = changed;
+ this.changedParent = changedParent;
+ }
+
+ public HierarchyEvent(Component source, int id, Component changed,
+ Container changedParent, long changeFlags)
+ {
+ super(source,id);
+ this.changed = changed;
+ this.changedParent = changedParent;
+ this.changeFlags = changeFlags;
+ }
+
+ public Component getComponent()
+ {
+ return (Component) source;
+ }
+
+ public Component getChanged()
+ {
+ return changed;
+ }
+
+ public Container getChangedParent()
+ {
+ return changedParent;
+ }
+
+ public long getChangeFlags()
+ {
+ return changeFlags;
+ }
+
+ public String paramString()
+ {
+ String r;
+ switch (id)
+ {
+ case HIERARCHY_CHANGED:
+ r = "HIERARCHY_CHANGED";
+ break;
+
+ case ANCESTOR_MOVED:
+ r = "ANCESTOR_MOVED";
+ break;
+
+ case ANCESTOR_RESIZED:
+ r = "ANCESTOR_RESIZED";
+ break;
+
+ default:
+ return "unknown type";
+ }
+
+ r += "(" + changed + "," + changedParent + ")";
+ return r;
+ }
+}
diff --git a/libjava/java/awt/event/HierarchyListener.java b/libjava/java/awt/event/HierarchyListener.java
new file mode 100644
index 00000000000..b78e857a46e
--- /dev/null
+++ b/libjava/java/awt/event/HierarchyListener.java
@@ -0,0 +1,21 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libjava License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt.event;
+
+/**
+ * @since 1.3
+ * @author Bryce McKinlay
+ */
+
+/* Status: Believed complete and correct. */
+
+public interface HierarchyListener extends java.util.EventListener
+{
+ public void hierarchyChanged(HierarchyEvent e);
+}
diff --git a/libjava/java/awt/event/InputMethodEvent.java b/libjava/java/awt/event/InputMethodEvent.java
index d047a739900..3cafd3508a3 100644
--- a/libjava/java/awt/event/InputMethodEvent.java
+++ b/libjava/java/awt/event/InputMethodEvent.java
@@ -43,7 +43,21 @@ public class InputMethodEvent extends AWTEvent
public TextHitInfo getVisiblePosition ();
public boolean isConsumed ();
- public String paramString ();
+ public String paramString ()
+ {
+ String r;
+ switch (id)
+ {
+ case CARET_POSITION_CHANGED:
+ r = "CARET_POSITION_CHANGED";
+ break;
+ case INPUT_METHOD_TEXT_CHANGED:
+ r = "INPUT_METHOD_TEXT_CHANGED";
+ break;
+ }
+ r += ""; // FIXME
+ return r;
+ }
*/
// FIXME: this is just to let it compile.
diff --git a/libjava/java/awt/event/InvocationEvent.java b/libjava/java/awt/event/InvocationEvent.java
index 522447a7722..778eb18fab3 100644
--- a/libjava/java/awt/event/InvocationEvent.java
+++ b/libjava/java/awt/event/InvocationEvent.java
@@ -14,7 +14,7 @@ import java.awt.*;
* @date April 8, 2000
*/
-/* Status: Still one bug. */
+/* Status: Believed to be complete and correct. */
public class InvocationEvent extends AWTEvent implements ActiveEvent
{
@@ -37,28 +37,29 @@ public class InvocationEvent extends AWTEvent implements ActiveEvent
this.runnable = runnable;
}
- public InvocationEvent (Object source, Runnable runnable, Object notifier)
+ public InvocationEvent(Object source, Runnable runnable, Object notifier,
+ boolean catchExceptions)
{
super (source, INVOCATION_DEFAULT);
this.runnable = runnable;
this.notifier = notifier;
+ this.catchExceptions = catchExceptions;
}
public void dispatch ()
{
Exception e = null;
- try
- {
- runnable.run ();
- }
- catch (Exception _)
- {
- e = _;
- }
-
- // FIXME: what to do if !catchExceptions?
if (catchExceptions)
- exception = e;
+ try
+ {
+ runnable.run ();
+ }
+ catch (Exception x)
+ {
+ exception = x;
+ }
+ else
+ runnable.run ();
if (notifier != null)
notifier.notifyAll ();
@@ -71,9 +72,15 @@ public class InvocationEvent extends AWTEvent implements ActiveEvent
public String paramString ()
{
- return ("InvocationEvent[" + notifier + "," + runnable
- + "," + catchExceptions
- + ";" + super.paramString () + "]");
+ String r;
+ if (id == INVOCATION_DEFAULT)
+ r = "INVOCATION_DEFAULT";
+ else
+ r = "unknown type";
+
+ r += ",runnable=" + runnable + ",notifier=" + notifier +
+ ",catchExceptions=" + catchExceptions;
+ return r;
}
protected boolean catchExceptions;
diff --git a/libjava/java/awt/event/ItemEvent.java b/libjava/java/awt/event/ItemEvent.java
index cb36feae3b0..3d2e502655a 100644
--- a/libjava/java/awt/event/ItemEvent.java
+++ b/libjava/java/awt/event/ItemEvent.java
@@ -48,8 +48,32 @@ public class ItemEvent extends AWTEvent
public String paramString ()
{
- return ("ItemEvent[" + item + "," + stateChange
- + ";" + super.paramString () + "]");
+ String r;
+ switch (id)
+ {
+ case ITEM_STATE_CHANGED:
+ r = "ITEM_STATE_CHANGED";
+ break;
+ default:
+ r = "unknown id";
+ break;
+ }
+
+ r += ",item=" + item + ",stateChange=";
+ switch (stateChange)
+ {
+ case SELECTED:
+ r += "SELECTED";
+ break;
+ case DESELECTED:
+ r += "DESELECTED";
+ break;
+ default:
+ r += "unknown";
+ break;
+ }
+
+ return r;
}
private Object item;
diff --git a/libjava/java/awt/event/KeyEvent.java b/libjava/java/awt/event/KeyEvent.java
index 4aadea1ca96..3f6a14c3a8b 100644
--- a/libjava/java/awt/event/KeyEvent.java
+++ b/libjava/java/awt/event/KeyEvent.java
@@ -251,8 +251,22 @@ public class KeyEvent extends InputEvent
public String paramString ()
{
- return ("KeyEvent[" + keyCode + "," + keyChar + "," + modifiers
- + ";" + super.paramString () + "]");
+ String r;
+ switch (id)
+ {
+ case KEY_PRESSED:
+ r = "KEY_PRESSED";
+ break;
+ case KEY_RELEASED:
+ r = "KEY_RELEASED";
+ break;
+ case KEY_TYPED:
+ r = "KEY_TYPED";
+ break;
+ }
+ r += ",keyCode=" + keyCode + "," + getKeyText(keyCode) + ",modifiers=" +
+ getKeyModifiersText(modifiers);
+ return r;
}
private int keyCode;
diff --git a/libjava/java/awt/event/MouseEvent.java b/libjava/java/awt/event/MouseEvent.java
index e3dff045579..bb9602cd17b 100644
--- a/libjava/java/awt/event/MouseEvent.java
+++ b/libjava/java/awt/event/MouseEvent.java
@@ -67,10 +67,37 @@ public class MouseEvent extends InputEvent
public String paramString ()
{
- return ("MouseEvent[" + when + "," + modifiers
- + ",(" + x + "," + y + "),"
- + clickCount + "," + popupTrigger
- + ";" + super.paramString () + "]");
+ String r;
+ switch (id)
+ {
+ case MOUSE_CLICKED:
+ r = "MOUSE_CLICKED";
+ break;
+ case MOUSE_DRAGGED:
+ r = "MOUSE_DRAGGED";
+ break;
+ case MOUSE_ENTERED:
+ r = "MOUSE_ENTERED";
+ break;
+ case MOUSE_EXITED:
+ r = "MOUSE_EXITED";
+ break;
+ case MOUSE_MOVED:
+ r = "MOUSE_MOVED";
+ break;
+ case MOUSE_PRESSED:
+ r = "MOUSE_PRESSED";
+ break;
+ case MOUSE_RELEASED:
+ r = "MOUSE_RELEASED";
+ break;
+ default:
+ r = "unknown id";
+ break;
+ }
+ r += ",(" + x + "," + y + "),modifiers=" + modifiers + ",clickCount=" +
+ clickCount;
+ return r;
}
public void translatePoint (int x, int y)
diff --git a/libjava/java/awt/event/PaintEvent.java b/libjava/java/awt/event/PaintEvent.java
index 7784c58ff7e..21c42e49a7c 100644
--- a/libjava/java/awt/event/PaintEvent.java
+++ b/libjava/java/awt/event/PaintEvent.java
@@ -36,8 +36,22 @@ public class PaintEvent extends ComponentEvent
public String paramString ()
{
- return ("PaintEvent[" + updateRect
- + ";" + super.paramString () + "]");
+ String r;
+ switch (id)
+ {
+ case UPDATE:
+ r = "UPDATE";
+ break;
+ case PAINT:
+ r = "PAINT";
+ break;
+ default:
+ r = "unknown id";
+ break;
+ }
+
+ r += ",updateRect=" + updateRect;
+ return r;
}
public void setUpdateRect (Rectangle updateRect)
diff --git a/libjava/java/awt/event/TextEvent.java b/libjava/java/awt/event/TextEvent.java
index 2d3d26a78d6..85c5d85a4eb 100644
--- a/libjava/java/awt/event/TextEvent.java
+++ b/libjava/java/awt/event/TextEvent.java
@@ -24,6 +24,6 @@ public class TextEvent extends AWTEvent
public String paramString ()
{
- return super.paramString ();
+ return "TEXT_VALUE_CHANGED";
}
}
diff --git a/libjava/java/awt/event/WindowEvent.java b/libjava/java/awt/event/WindowEvent.java
index 7e00f0e1348..675adecb340 100644
--- a/libjava/java/awt/event/WindowEvent.java
+++ b/libjava/java/awt/event/WindowEvent.java
@@ -35,6 +35,31 @@ public class WindowEvent extends ComponentEvent
public String paramString ()
{
- return super.paramString ();
+ String r;
+ switch (id)
+ {
+ case WINDOW_ACTIVATED:
+ r = "WINDOW_ACTIVATED";
+ break;
+ case WINDOW_CLOSED:
+ r = "WINDOW_CLOSED";
+ break;
+ case WINDOW_CLOSING:
+ r = "WINDOW_CLOSING";
+ break;
+ case WINDOW_DEACTIVATED:
+ r = "WINDOW_DEACTIVATED";
+ break;
+ case WINDOW_DEICONIFIED:
+ r = "WINDOW_DEICONIFIED";
+ break;
+ case WINDOW_ICONIFIED:
+ r = "WINDOW_ICONIFIED";
+ break;
+ case WINDOW_OPENED:
+ r = "WINDOW_OPENED";
+ break;
+ }
+ return r;
}
}
diff --git a/libjava/java/awt/peer/ButtonPeer.java b/libjava/java/awt/peer/ButtonPeer.java
new file mode 100644
index 00000000000..d4d8034bd13
--- /dev/null
+++ b/libjava/java/awt/peer/ButtonPeer.java
@@ -0,0 +1,15 @@
+/* Copyright (C) 2000 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.peer;
+
+public interface ButtonPeer extends ComponentPeer
+{
+ void setLabel(String label);
+}
+
diff --git a/libjava/java/awt/peer/CanvasPeer.java b/libjava/java/awt/peer/CanvasPeer.java
new file mode 100644
index 00000000000..67c405504bb
--- /dev/null
+++ b/libjava/java/awt/peer/CanvasPeer.java
@@ -0,0 +1,13 @@
+/* Copyright (C) 2000 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.peer;
+
+public interface CanvasPeer extends ComponentPeer
+{
+}
diff --git a/libjava/java/awt/peer/CheckboxMenuItemPeer.java b/libjava/java/awt/peer/CheckboxMenuItemPeer.java
new file mode 100644
index 00000000000..42c6c8f31cd
--- /dev/null
+++ b/libjava/java/awt/peer/CheckboxMenuItemPeer.java
@@ -0,0 +1,15 @@
+/* Copyright (C) 2000 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.peer;
+
+public interface CheckboxMenuItemPeer extends MenuItemPeer
+{
+ void setState(boolean state);
+}
+
diff --git a/libjava/java/awt/peer/CheckboxPeer.java b/libjava/java/awt/peer/CheckboxPeer.java
new file mode 100644
index 00000000000..b27b2cf1fc6
--- /dev/null
+++ b/libjava/java/awt/peer/CheckboxPeer.java
@@ -0,0 +1,16 @@
+/* Copyright (C) 2000 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.peer;
+
+public interface CheckboxPeer extends ComponentPeer
+{
+ void setCheckboxGroup(java.awt.CheckboxGroup group);
+ void setLabel(String label);
+ void setState(boolean state);
+}
diff --git a/libjava/java/awt/peer/ChoicePeer.java b/libjava/java/awt/peer/ChoicePeer.java
new file mode 100644
index 00000000000..f1006151245
--- /dev/null
+++ b/libjava/java/awt/peer/ChoicePeer.java
@@ -0,0 +1,18 @@
+/* Copyright (C) 2000 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.peer;
+
+public interface ChoicePeer extends ComponentPeer
+{
+ void add(String item, int index);
+ void addItem(String item, int index);
+ void remove(int index);
+ void select(int index);
+}
+
diff --git a/libjava/java/awt/peer/ComponentPeer.java b/libjava/java/awt/peer/ComponentPeer.java
index 806b9623de2..883d2b398b6 100644
--- a/libjava/java/awt/peer/ComponentPeer.java
+++ b/libjava/java/awt/peer/ComponentPeer.java
@@ -1,23 +1,48 @@
-/* Copyright (C) 1999 Free Software Foundation
+/* Copyright (C) 2000 Free Software Foundation
- This file is part of libjava.
+ This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
-Libjava License. Please consult the file "LIBJAVA_LICENSE" for
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.awt.peer;
-import java.awt.*;
-/* A very incomplete placeholder. */
+import java.awt.*;
+import java.awt.image.*;
public interface ComponentPeer
{
- public abstract Toolkit getToolkit ();
-
- public Dimension getMinimumSize ();
-
- public Dimension getPreferredSize ();
-
- public void setBounds (int x, int y, int w, int h);
+ int checkImage(Image img, int width, int height, ImageObserver o);
+ Image createImage(ImageProducer prod);
+ Image createImage(int width, int height);
+ void disable();
+ void dispose();
+ void enable();
+ ColorModel getColorModel();
+ FontMetrics getFontMetrics(Font f);
+ Graphics getGraphics();
+ Point getLocationOnScreen();
+ Dimension getMinimumSize();
+ Dimension getPreferredSize();
+ Toolkit getToolkit();
+ void handleEvent(AWTEvent e);
+ void hide();
+ boolean isFocusTraversable();
+ Dimension minimumSize();
+ Dimension preferredSize();
+ 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 reshape(int x, int y, int width, int height);
+ void setBackground(Color color);
+ void setBounds(int x, int y, int width, int height);
+ void setCursor(Cursor cursor);
+ void setEnabled(boolean enabled);
+ void setFont(Font font);
+ void setForeground(Color color);
+ void setVisible(boolean visible);
+ void show();
}
diff --git a/libjava/java/awt/peer/ContainerPeer.java b/libjava/java/awt/peer/ContainerPeer.java
index c8e459ac0df..8f1235cb6db 100644
--- a/libjava/java/awt/peer/ContainerPeer.java
+++ b/libjava/java/awt/peer/ContainerPeer.java
@@ -1,15 +1,19 @@
-/* Copyright (C) 1999 Free Software Foundation
+/* Copyright (C) 2000 Free Software Foundation
- This file is part of libjava.
+ This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
-Libjava License. Please consult the file "LIBJAVA_LICENSE" for
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.awt.peer;
-/* A very incomplete placeholder. */
+import java.awt.Insets;
public interface ContainerPeer extends ComponentPeer
{
+ Insets insets();
+ Insets getInsets();
+ void beginValidate();
+ void endValidate();
}
diff --git a/libjava/java/awt/peer/DialogPeer.java b/libjava/java/awt/peer/DialogPeer.java
new file mode 100644
index 00000000000..009410f0e6a
--- /dev/null
+++ b/libjava/java/awt/peer/DialogPeer.java
@@ -0,0 +1,15 @@
+/* Copyright (C) 2000 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.peer;
+
+public interface DialogPeer extends WindowPeer
+{
+ void setResizable(boolean resizeable);
+ void setTitle(String title);
+}
diff --git a/libjava/java/awt/peer/FileDialogPeer.java b/libjava/java/awt/peer/FileDialogPeer.java
new file mode 100644
index 00000000000..c378f1059f3
--- /dev/null
+++ b/libjava/java/awt/peer/FileDialogPeer.java
@@ -0,0 +1,18 @@
+/* Copyright (C) 2000 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.peer;
+
+import java.io.FilenameFilter;
+
+public interface FileDialogPeer extends DialogPeer
+{
+ void setDirectory(String dir);
+ void setFile(String file);
+ void setFilenameFilter(FilenameFilter filter);
+}
diff --git a/libjava/java/awt/peer/FontPeer.java b/libjava/java/awt/peer/FontPeer.java
new file mode 100644
index 00000000000..2a65a38f574
--- /dev/null
+++ b/libjava/java/awt/peer/FontPeer.java
@@ -0,0 +1,13 @@
+/* Copyright (C) 2000 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.peer;
+
+public interface FontPeer
+{
+}
diff --git a/libjava/java/awt/peer/FramePeer.java b/libjava/java/awt/peer/FramePeer.java
index e68a17f5267..c47b0f5e7c4 100644
--- a/libjava/java/awt/peer/FramePeer.java
+++ b/libjava/java/awt/peer/FramePeer.java
@@ -1,16 +1,20 @@
-/* Copyright (C) 1999 Free Software Foundation
+/* Copyright (C) 2000 Free Software Foundation
- This file is part of libjava.
+ This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
-Libjava License. Please consult the file "LIBJAVA_LICENSE" for
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.awt.peer;
-/* A very incomplete placeholder. */
+import java.awt.Image;
+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);
}
diff --git a/libjava/java/awt/peer/LabelPeer.java b/libjava/java/awt/peer/LabelPeer.java
new file mode 100644
index 00000000000..4d32b799090
--- /dev/null
+++ b/libjava/java/awt/peer/LabelPeer.java
@@ -0,0 +1,15 @@
+/* Copyright (C) 2000 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.peer;
+
+public interface LabelPeer extends ComponentPeer
+{
+ void setAlignment(int alignment);
+ void setText(String text);
+}
diff --git a/libjava/java/awt/peer/LightweightPeer.java b/libjava/java/awt/peer/LightweightPeer.java
new file mode 100644
index 00000000000..af3c1321eef
--- /dev/null
+++ b/libjava/java/awt/peer/LightweightPeer.java
@@ -0,0 +1,13 @@
+/* Copyright (C) 2000 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.peer;
+
+public interface LightweightPeer extends ComponentPeer
+{
+}
diff --git a/libjava/java/awt/peer/ListPeer.java b/libjava/java/awt/peer/ListPeer.java
new file mode 100644
index 00000000000..a334e380506
--- /dev/null
+++ b/libjava/java/awt/peer/ListPeer.java
@@ -0,0 +1,28 @@
+/* Copyright (C) 2000 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.peer;
+
+import java.awt.Dimension;
+
+public interface ListPeer extends ComponentPeer
+{
+ void add(String item, int index);
+ void addItem(String item, int index);
+ void clear();
+ void delItems(int start_index, int end_index);
+ void deselect(int index);
+ int[] getSelectedIndexes();
+ void makeVisible(int index);
+ Dimension minimumSize(int size);
+ Dimension preferredSize(int size);
+ void removeAll();
+ void select(int index);
+ void setMultipleMode(boolean multipleMode);
+ void setMultipleSelections(boolean multipleSelections);
+}
diff --git a/libjava/java/awt/peer/MenuBarPeer.java b/libjava/java/awt/peer/MenuBarPeer.java
new file mode 100644
index 00000000000..e660ba26c5c
--- /dev/null
+++ b/libjava/java/awt/peer/MenuBarPeer.java
@@ -0,0 +1,18 @@
+/* Copyright (C) 2000 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.peer;
+
+import java.awt.Menu;
+
+public interface MenuBarPeer extends MenuComponentPeer
+{
+ void addHelpMenu(Menu menu);
+ void addMenu(Menu menu);
+ void delMenu(int index);
+}
diff --git a/libjava/java/awt/peer/MenuComponentPeer.java b/libjava/java/awt/peer/MenuComponentPeer.java
new file mode 100644
index 00000000000..080f9ea771c
--- /dev/null
+++ b/libjava/java/awt/peer/MenuComponentPeer.java
@@ -0,0 +1,14 @@
+/* Copyright (C) 2000 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.peer;
+
+public interface MenuComponentPeer
+{
+ void dispose();
+}
diff --git a/libjava/java/awt/peer/MenuItemPeer.java b/libjava/java/awt/peer/MenuItemPeer.java
new file mode 100644
index 00000000000..555a38b25df
--- /dev/null
+++ b/libjava/java/awt/peer/MenuItemPeer.java
@@ -0,0 +1,17 @@
+/* Copyright (C) 2000 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.peer;
+
+public interface MenuItemPeer extends MenuComponentPeer
+{
+ void disable();
+ void enable();
+ void setEnabled(boolean enabled);
+ void setLabel(String text);
+}
diff --git a/libjava/java/awt/peer/MenuPeer.java b/libjava/java/awt/peer/MenuPeer.java
new file mode 100644
index 00000000000..eca98dc4335
--- /dev/null
+++ b/libjava/java/awt/peer/MenuPeer.java
@@ -0,0 +1,18 @@
+/* Copyright (C) 2000 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.peer;
+
+import java.awt.MenuItem;
+
+public interface MenuPeer extends MenuItemPeer
+{
+ void addItem(MenuItem item);
+ void addSeparator();
+ void delItem(int index);
+}
diff --git a/libjava/java/awt/peer/PanelPeer.java b/libjava/java/awt/peer/PanelPeer.java
new file mode 100644
index 00000000000..13b0e903c57
--- /dev/null
+++ b/libjava/java/awt/peer/PanelPeer.java
@@ -0,0 +1,13 @@
+/* Copyright (C) 2000 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.peer;
+
+public interface PanelPeer extends ContainerPeer
+{
+}
diff --git a/libjava/java/awt/peer/PopupMenuPeer.java b/libjava/java/awt/peer/PopupMenuPeer.java
new file mode 100644
index 00000000000..e0b398077c1
--- /dev/null
+++ b/libjava/java/awt/peer/PopupMenuPeer.java
@@ -0,0 +1,16 @@
+/* Copyright (C) 2000 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.peer;
+
+import java.awt.Event;
+
+public interface PopupMenuPeer extends MenuPeer
+{
+ void show(Event e);
+}
diff --git a/libjava/java/awt/peer/ScrollPanePeer.java b/libjava/java/awt/peer/ScrollPanePeer.java
new file mode 100644
index 00000000000..fe300e423c8
--- /dev/null
+++ b/libjava/java/awt/peer/ScrollPanePeer.java
@@ -0,0 +1,21 @@
+/* Copyright (C) 2000 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.peer;
+
+import java.awt.Adjustable;
+
+public interface ScrollPanePeer extends ContainerPeer
+{
+ void childResized(int width, int height);
+ int getHScrollbarHeight();
+ int getVScrollbarWidth();
+ void setScrollPosition(int x, int y);
+ void setUnitIncrement(Adjustable adj, int increment);
+ void setValue(Adjustable adj, int value);
+}
diff --git a/libjava/java/awt/peer/ScrollbarPeer.java b/libjava/java/awt/peer/ScrollbarPeer.java
new file mode 100644
index 00000000000..3981c22b09d
--- /dev/null
+++ b/libjava/java/awt/peer/ScrollbarPeer.java
@@ -0,0 +1,16 @@
+/* Copyright (C) 2000 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.peer;
+
+public interface ScrollbarPeer extends ComponentPeer
+{
+ void setLineIncrement(int increment);
+ void setPageIncrement(int increment);
+ void setValues(int value, int visible, int minimum, int maximum);
+}
diff --git a/libjava/java/awt/peer/TextAreaPeer.java b/libjava/java/awt/peer/TextAreaPeer.java
new file mode 100644
index 00000000000..ce5a294ab86
--- /dev/null
+++ b/libjava/java/awt/peer/TextAreaPeer.java
@@ -0,0 +1,23 @@
+/* Copyright (C) 2000 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.peer;
+
+import java.awt.Dimension;
+
+public interface TextAreaPeer extends TextComponentPeer
+{
+ Dimension getMinimumSize(int rows, int columns);
+ Dimension getPreferredSize(int rows, int columns);
+ void insert(String text, int pos);
+ void insertText(String text, int pos);
+ Dimension minimumSize(int rows, int cols);
+ Dimension preferredSize(int rows, int cols);
+ void replaceRange(String text, int start, int end);
+ void replaceText(String text, int start, int end);
+}
diff --git a/libjava/java/awt/peer/TextComponentPeer.java b/libjava/java/awt/peer/TextComponentPeer.java
new file mode 100644
index 00000000000..ba4ce1d4df0
--- /dev/null
+++ b/libjava/java/awt/peer/TextComponentPeer.java
@@ -0,0 +1,21 @@
+/* Copyright (C) 2000 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.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);
+}
diff --git a/libjava/java/awt/peer/TextFieldPeer.java b/libjava/java/awt/peer/TextFieldPeer.java
new file mode 100644
index 00000000000..cf4d6754179
--- /dev/null
+++ b/libjava/java/awt/peer/TextFieldPeer.java
@@ -0,0 +1,21 @@
+/* Copyright (C) 2000 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.peer;
+
+import java.awt.Dimension;
+
+public interface TextFieldPeer extends TextComponentPeer
+{
+ Dimension getMinimumSize(int columns);
+ Dimension getPreferredSize(int columns);
+ Dimension minimumSize(int columns);
+ Dimension preferredSize(int columns);
+ void setEchoChar(char echo);
+ void setEchoCharacter(char echo);
+}
diff --git a/libjava/java/awt/peer/WindowPeer.java b/libjava/java/awt/peer/WindowPeer.java
index 109992d64ed..d8058056973 100644
--- a/libjava/java/awt/peer/WindowPeer.java
+++ b/libjava/java/awt/peer/WindowPeer.java
@@ -1,15 +1,15 @@
-/* Copyright (C) 1999 Free Software Foundation
+/* Copyright (C) 2000 Free Software Foundation
- This file is part of libjava.
+ This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
-Libjava License. Please consult the file "LIBJAVA_LICENSE" for
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.awt.peer;
-/* A very incomplete placeholder. */
-
public interface WindowPeer extends ContainerPeer
{
+ void toBack();
+ void toFront();
}
diff --git a/libjava/java/util/ResourceBundle.java b/libjava/java/util/ResourceBundle.java
index 6cec4c227a0..b5edfbf20f9 100644
--- a/libjava/java/util/ResourceBundle.java
+++ b/libjava/java/util/ResourceBundle.java
@@ -28,6 +28,12 @@ public abstract class ResourceBundle
public ResourceBundle ()
{
}
+
+ public Locale getLocale()
+ {
+ // FIXME: Stub added for this missing method because it is needed for AWT.
+ return null;
+ }
public final String getString (String key) throws MissingResourceException
{
@@ -110,9 +116,14 @@ public abstract class ResourceBundle
// Look for a properties file.
{
+ String prop_name = (bundleName.replace('.', '/') + ".properties");
+ System.out.println ("trying '" + prop_name + "' for '" + bundleName);
+ InputStream i = ClassLoader.getSystemResourceAsStream (prop_name);
+ /*
InputStream i =
ClassLoader.getSystemResourceAsStream (bundleName.replace ('.', '/')
+ ".properties");
+ */
if (i != null)
{
try {