Commit 777e6d79 by Rolf W. Rasmussen Committed by Rolf Rasmussen

ComponentDataBlitOp.java: New file.

	* gnu/gcj/awt/ComponentDataBlitOp.java: New file.
	* gnu/gcj/awt/GLightweightPeer.java: New file.
	* java/awt/BorderLayout.java: Implemented all methods.
	* java/awt/Button.java (actionListener, actionCommand): Renamed
	and modifier change.
	(addNotify): Call super.
	(dispatchEventImpl): New method.
	(getListeners): New method.
	(label): Made package-private, not private.
	* java/awt/Canvas.java: Implemented class body.
	* java/awt/Color.java (brighter): New method.
	(darker): New method.
	(hashCode): New method.
	* java/awt/Component.java (visible, enabled, eventMask): Set defaults.
	(getGraphicsConfiguration): Delegate to
	getGraphicsConfigurationImpl().
	(getGraphicsConfigurationImpl): New method.
	(getToolkit): Only return value from peer if not null.
	(isDisplayable): Check with parent.
	(isShowing): No parent implies not showing.
	(getForeground): Check parent property if local is null.
	(getBackground): Likewise.
	(getFont): Likewise.
	(setForeground): Inform peer.
	(setBackground): Likewise
	(setLocale): Invalidate component.
	(getColorModel): Implemented.
	(setLocation): Invalidate, or ignore if no change.
	(setSize): Invalidate, or ignore if no change.
	(setBounds): Invalidate, or ignore if no change.
	(isOpaque): By default, heavyweight implies opaque.
	(isLightweight): Implemented.
	(getMaximumSize): Implemented.
	(doLayout): Implemented, NOP.
	(validate): Implemented, NOP.
	(invalidate): Only propagate to parent if parent was valid.
	(getGraphics): Implemented.
	(getFontMetrics): Implemented.
	(update): Implemented.
	(paintAll): Implemented.
	(repaint): Implemented all repaint methods.
	(print): Implemented.
	(printAll): Implemented.
	(createImage): Implemented.
	(dispatchEvent): Give the peer a chance to handle the event.
	(dispatchEventImpl): Dispatch paint events.
	(enableEvents): Lightweights enable events on parent component.
	(coalesceEvents): Coalesce paint events, and select event type
	using a switch.
	(coalescePaintEvents): New method.
	(processEvent): Fix unfortunate ordering of statements, and call
	correct method for MOUSE_CLICKED.
	(processPaintEvent): New method.
	(addNotify): Allow container to notify children before event
	mask is set in peer.
	(addNotifyContainerChildren): New method.
	(removeNotify): Visibility should not change on removeNotify.
	(paramString): Implemented.
	(list): Implemented two of the list methods.
	* Container (myInsets): Removed, insets are managed by peer.
	(getInsets): Query peer.
	(addImpl): Fix reparenting, enable events for lightweights,
	initialize component array.
	(validate): Call doLayout in validateTree() instead.
	(validateTree): Do nothing if already valid. Call beginValidate(),
	endValidate() on peer. Call validateTree() instead of validate()
	for children that are containers. Mark valid after validation of
	children.
	(setFont): Partial implementation.
	(paint): Implemented.
	(visitChildren): New method.
	(visitChild): New method.
	(update): Implemented.
	(print): Implemented.
	(paintComponents): Implemented.
	(printComponents): Consider translation and clipping.
	(getComponentAt): Ignore invisible children. Return this if no
	child match.
	(addNotify): Call super.
	(addNotifyContainerChildren): New method.
	(paramString): Implemented.
	(list): Implemented.
	* java/awt/EventQueue (invokeAndWait): Get system event queue the
	right way.
	(invokeLater): Likewise.
	(isDispatchThread): Likewise.
	* java/awt/FontMetrics (getLeading): Formula change.
	(getDescent): Consider leading also.
	(getMaxAscent): Default to getAscent().
	(getMaxDescent): Default to getDescent.
	(getMaxAdvance): Return value signifying unknown.
	(charWidth): Both methods implemented.
	(charsWidth): Implemented.
	(bytesWidth): Implemented.
	(getWidths): Implemented.
	* java/awt/Frame.java (NORMAL, ICONIFIED, iconImage, isResizable,
	state): New fields.
	(Frame): Rearragend constuctor chaining to disallow null being
	passed as a graphics configuration.
	(getTitle): Return empty string if null.
	(dispose): Removed.
	(getIconImage): New method.
	(setIconImage): New method.
	(finalize): New method.
	(setMenuBar): Notify peer.
	(isResizable): New method.
	(setResizable): New method.
	(getState): New method.
	(getFont): Removed.
	(remove): Implemented.
	(removeNotify): New method.
	(getFrames): New method.
	* java/awt/Graphics.java: Implemented body of class.
	* java/awt/Graphics2D.java: New file.
	* java/awt/GraphicsConfiguration.java: Enabled part of the API.
	* java/awt/Image.java: Implemented body of class.
	* java/awt/Panel.java (Panel): Call correct super constructor.
	(addNotify): Implemented.
	* java/awt/Rectangle.java (isEmpty): Fixed reversed logic.
	* java/awt/RenderingHints.java: New file.
	* java/awt/Toolkit.java (createComponent): Implemented.
	(getSystemEventQueue): Delegate to getSystemEventQueueImpl().
	* java/awt/Window.java (Window): Two new constructors. Reordered
	constructor chaining.
	(getGraphicsConfigurationImpl): New method.
	(finalize): Call super.
	(addNotify): Call super.
	(pack): Do layout stuff.
	(show): Ensure that peer exists and that component is valid.
	(dispose): Dispose owned children.
	(getOwner): Simplify code, casting null pointers is valid.
	(getGraphicsConfiguration): Ask peer if local value is null.
	* java/awt/event/ActionEvent.java (getActionCommand): Renamed from
	getcmd().
	* java/awt/image/BufferedImage.java: New file.
	* java/awt/image/RasterOp.java: New file.
	* java/awt/peer/ComponentPeer.java (getGraphicsConfiguration):
	More powerfull replacement for getColorModel().
	(getColorModel) Removed.
	(setEventMask) New method.
	* Makefile.am: Added new files.
	* Makefile.in: Rebuilt.

From-SVN: r35748
parent cfedbb1f
2000-08-16 Rolf W. Rasmussen <rolfwr@ii.uib.no>
* gnu/gcj/awt/ComponentDataBlitOp.java: New file.
* gnu/gcj/awt/GLightweightPeer.java: New file.
* java/awt/BorderLayout.java: Implemented all methods.
* java/awt/Button.java (actionListener, actionCommand): Renamed
and modifier change.
(addNotify): Call super.
(dispatchEventImpl): New method.
(getListeners): New method.
(label): Made package-private, not private.
* java/awt/Canvas.java: Implemented class body.
* java/awt/Color.java (brighter): New method.
(darker): New method.
(hashCode): New method.
* java/awt/Component.java (visible, enabled, eventMask): Set defaults.
(getGraphicsConfiguration): Delegate to
getGraphicsConfigurationImpl().
(getGraphicsConfigurationImpl): New method.
(getToolkit): Only return value from peer if not null.
(isDisplayable): Check with parent.
(isShowing): No parent implies not showing.
(getForeground): Check parent property if local is null.
(getBackground): Likewise.
(getFont): Likewise.
(setForeground): Inform peer.
(setBackground): Likewise
(setLocale): Invalidate component.
(getColorModel): Implemented.
(setLocation): Invalidate, or ignore if no change.
(setSize): Invalidate, or ignore if no change.
(setBounds): Invalidate, or ignore if no change.
(isOpaque): By default, heavyweight implies opaque.
(isLightweight): Implemented.
(getMaximumSize): Implemented.
(doLayout): Implemented, NOP.
(validate): Implemented, NOP.
(invalidate): Only propagate to parent if parent was valid.
(getGraphics): Implemented.
(getFontMetrics): Implemented.
(update): Implemented.
(paintAll): Implemented.
(repaint): Implemented all repaint methods.
(print): Implemented.
(printAll): Implemented.
(createImage): Implemented.
(dispatchEvent): Give the peer a chance to handle the event.
(dispatchEventImpl): Dispatch paint events.
(enableEvents): Lightweights enable events on parent component.
(coalesceEvents): Coalesce paint events, and select event type
using a switch.
(coalescePaintEvents): New method.
(processEvent): Fix unfortunate ordering of statements, and call
correct method for MOUSE_CLICKED.
(processPaintEvent): New method.
(addNotify): Allow container to notify children before event
mask is set in peer.
(addNotifyContainerChildren): New method.
(removeNotify): Visibility should not change on removeNotify.
(paramString): Implemented.
(list): Implemented two of the list methods.
* Container (myInsets): Removed, insets are managed by peer.
(getInsets): Query peer.
(addImpl): Fix reparenting, enable events for lightweights,
initialize component array.
(validate): Call doLayout in validateTree() instead.
(validateTree): Do nothing if already valid. Call beginValidate(),
endValidate() on peer. Call validateTree() instead of validate()
for children that are containers. Mark valid after validation of
children.
(setFont): Partial implementation.
(paint): Implemented.
(visitChildren): New method.
(visitChild): New method.
(update): Implemented.
(print): Implemented.
(paintComponents): Implemented.
(printComponents): Consider translation and clipping.
(getComponentAt): Ignore invisible children. Return this if no
child match.
(addNotify): Call super.
(addNotifyContainerChildren): New method.
(paramString): Implemented.
(list): Implemented.
* java/awt/EventQueue (invokeAndWait): Get system event queue the
right way.
(invokeLater): Likewise.
(isDispatchThread): Likewise.
* java/awt/FontMetrics (getLeading): Formula change.
(getDescent): Consider leading also.
(getMaxAscent): Default to getAscent().
(getMaxDescent): Default to getDescent.
(getMaxAdvance): Return value signifying unknown.
(charWidth): Both methods implemented.
(charsWidth): Implemented.
(bytesWidth): Implemented.
(getWidths): Implemented.
* java/awt/Frame.java (NORMAL, ICONIFIED, iconImage, isResizable,
state): New fields.
(Frame): Rearragend constuctor chaining to disallow null being
passed as a graphics configuration.
(getTitle): Return empty string if null.
(dispose): Removed.
(getIconImage): New method.
(setIconImage): New method.
(finalize): New method.
(setMenuBar): Notify peer.
(isResizable): New method.
(setResizable): New method.
(getState): New method.
(getFont): Removed.
(remove): Implemented.
(removeNotify): New method.
(getFrames): New method.
* java/awt/Graphics.java: Implemented body of class.
* java/awt/Graphics2D.java: New file.
* java/awt/GraphicsConfiguration.java: Enabled part of the API.
* java/awt/Image.java: Implemented body of class.
* java/awt/Panel.java (Panel): Call correct super constructor.
(addNotify): Implemented.
* java/awt/Rectangle.java (isEmpty): Fixed reversed logic.
* java/awt/RenderingHints.java: New file.
* java/awt/Toolkit.java (createComponent): Implemented.
(getSystemEventQueue): Delegate to getSystemEventQueueImpl().
* java/awt/Window.java (Window): Two new constructors. Reordered
constructor chaining.
(getGraphicsConfigurationImpl): New method.
(finalize): Call super.
(addNotify): Call super.
(pack): Do layout stuff.
(show): Ensure that peer exists and that component is valid.
(dispose): Dispose owned children.
(getOwner): Simplify code, casting null pointers is valid.
(getGraphicsConfiguration): Ask peer if local value is null.
* java/awt/event/ActionEvent.java (getActionCommand): Renamed from
getcmd().
* java/awt/image/BufferedImage.java: New file.
* java/awt/image/RasterOp.java: New file.
* java/awt/peer/ComponentPeer.java (getGraphicsConfiguration):
More powerfull replacement for getColorModel().
(getColorModel) Removed.
(setEventMask) New method.
* Makefile.am: Added new files.
* Makefile.in: Rebuilt.
2000-08-15 Andrew Haley <aph@cygnus.com> 2000-08-15 Andrew Haley <aph@cygnus.com>
* include/jvm.h (_Jv_HashCode): New hash code. * include/jvm.h (_Jv_HashCode): New hash code.
......
...@@ -504,6 +504,8 @@ gnu/java/beans/ExplicitBeanInfo.java \ ...@@ -504,6 +504,8 @@ gnu/java/beans/ExplicitBeanInfo.java \
gnu/java/beans/IntrospectionIncubator.java \ gnu/java/beans/IntrospectionIncubator.java \
gnu/gcj/awt/BitMaskExtent.java \ gnu/gcj/awt/BitMaskExtent.java \
gnu/gcj/awt/Buffers.java \ gnu/gcj/awt/Buffers.java \
gnu/gcj/awt/ComponentDataBlitOp.java \
gnu/gcj/awt/GLightweightPeer.java \
java/applet/Applet.java \ java/applet/Applet.java \
java/applet/AppletStub.java \ java/applet/AppletStub.java \
java/applet/AppletContext.java \ java/applet/AppletContext.java \
...@@ -536,6 +538,7 @@ java/awt/Font.java \ ...@@ -536,6 +538,7 @@ java/awt/Font.java \
java/awt/FontMetrics.java \ java/awt/FontMetrics.java \
java/awt/Frame.java \ java/awt/Frame.java \
java/awt/Graphics.java \ java/awt/Graphics.java \
java/awt/Graphics2D.java \
java/awt/GraphicsConfiguration.java \ java/awt/GraphicsConfiguration.java \
java/awt/IllegalComponentStateException.java \ java/awt/IllegalComponentStateException.java \
java/awt/Image.java \ java/awt/Image.java \
...@@ -557,6 +560,7 @@ java/awt/Panel.java \ ...@@ -557,6 +560,7 @@ java/awt/Panel.java \
java/awt/Point.java \ java/awt/Point.java \
java/awt/PopupMenu.java \ java/awt/PopupMenu.java \
java/awt/Rectangle.java \ java/awt/Rectangle.java \
java/awt/RenderingHints.java \
java/awt/ScrollPane.java \ java/awt/ScrollPane.java \
java/awt/Scrollbar.java \ java/awt/Scrollbar.java \
java/awt/Shape.java \ java/awt/Shape.java \
...@@ -617,6 +621,7 @@ java/awt/geom/PathIterator.java \ ...@@ -617,6 +621,7 @@ java/awt/geom/PathIterator.java \
java/awt/geom/Point2D.java \ java/awt/geom/Point2D.java \
java/awt/geom/Rectangle2D.java \ java/awt/geom/Rectangle2D.java \
java/awt/geom/RectangularShape.java \ java/awt/geom/RectangularShape.java \
java/awt/image/BufferedImage.java \
java/awt/image/ColorModel.java \ java/awt/image/ColorModel.java \
java/awt/image/ComponentColorModel.java \ java/awt/image/ComponentColorModel.java \
java/awt/image/ComponentSampleModel.java \ java/awt/image/ComponentSampleModel.java \
...@@ -631,6 +636,7 @@ java/awt/image/ImageProducer.java \ ...@@ -631,6 +636,7 @@ java/awt/image/ImageProducer.java \
java/awt/image/IndexColorModel.java \ java/awt/image/IndexColorModel.java \
java/awt/image/PackedColorModel.java \ java/awt/image/PackedColorModel.java \
java/awt/image/Raster.java \ java/awt/image/Raster.java \
java/awt/image/RasterOp.java \
java/awt/image/SampleModel.java \ java/awt/image/SampleModel.java \
java/awt/image/SinglePixelPackedSampleModel.java \ java/awt/image/SinglePixelPackedSampleModel.java \
java/awt/image/WritableRaster.java \ java/awt/image/WritableRaster.java \
......
...@@ -84,7 +84,6 @@ GCOBJS = @GCOBJS@ ...@@ -84,7 +84,6 @@ GCOBJS = @GCOBJS@
GCSPEC = @GCSPEC@ GCSPEC = @GCSPEC@
GCTESTSPEC = @GCTESTSPEC@ GCTESTSPEC = @GCTESTSPEC@
INCLTDL = @INCLTDL@ INCLTDL = @INCLTDL@
JC1GCSPEC = @JC1GCSPEC@
LIBDATASTARTSPEC = @LIBDATASTARTSPEC@ LIBDATASTARTSPEC = @LIBDATASTARTSPEC@
LIBGCJTESTSPEC = @LIBGCJTESTSPEC@ LIBGCJTESTSPEC = @LIBGCJTESTSPEC@
LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@ LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
...@@ -281,6 +280,8 @@ gnu/java/beans/ExplicitBeanInfo.java \ ...@@ -281,6 +280,8 @@ gnu/java/beans/ExplicitBeanInfo.java \
gnu/java/beans/IntrospectionIncubator.java \ gnu/java/beans/IntrospectionIncubator.java \
gnu/gcj/awt/BitMaskExtent.java \ gnu/gcj/awt/BitMaskExtent.java \
gnu/gcj/awt/Buffers.java \ gnu/gcj/awt/Buffers.java \
gnu/gcj/awt/ComponentDataBlitOp.java \
gnu/gcj/awt/GLightweightPeer.java \
java/applet/Applet.java \ java/applet/Applet.java \
java/applet/AppletStub.java \ java/applet/AppletStub.java \
java/applet/AppletContext.java \ java/applet/AppletContext.java \
...@@ -313,6 +314,7 @@ java/awt/Font.java \ ...@@ -313,6 +314,7 @@ java/awt/Font.java \
java/awt/FontMetrics.java \ java/awt/FontMetrics.java \
java/awt/Frame.java \ java/awt/Frame.java \
java/awt/Graphics.java \ java/awt/Graphics.java \
java/awt/Graphics2D.java \
java/awt/GraphicsConfiguration.java \ java/awt/GraphicsConfiguration.java \
java/awt/IllegalComponentStateException.java \ java/awt/IllegalComponentStateException.java \
java/awt/Image.java \ java/awt/Image.java \
...@@ -334,6 +336,7 @@ java/awt/Panel.java \ ...@@ -334,6 +336,7 @@ java/awt/Panel.java \
java/awt/Point.java \ java/awt/Point.java \
java/awt/PopupMenu.java \ java/awt/PopupMenu.java \
java/awt/Rectangle.java \ java/awt/Rectangle.java \
java/awt/RenderingHints.java \
java/awt/ScrollPane.java \ java/awt/ScrollPane.java \
java/awt/Scrollbar.java \ java/awt/Scrollbar.java \
java/awt/Shape.java \ java/awt/Shape.java \
...@@ -394,6 +397,7 @@ java/awt/geom/PathIterator.java \ ...@@ -394,6 +397,7 @@ java/awt/geom/PathIterator.java \
java/awt/geom/Point2D.java \ java/awt/geom/Point2D.java \
java/awt/geom/Rectangle2D.java \ java/awt/geom/Rectangle2D.java \
java/awt/geom/RectangularShape.java \ java/awt/geom/RectangularShape.java \
java/awt/image/BufferedImage.java \
java/awt/image/ColorModel.java \ java/awt/image/ColorModel.java \
java/awt/image/ComponentColorModel.java \ java/awt/image/ComponentColorModel.java \
java/awt/image/ComponentSampleModel.java \ java/awt/image/ComponentSampleModel.java \
...@@ -408,6 +412,7 @@ java/awt/image/ImageProducer.java \ ...@@ -408,6 +412,7 @@ java/awt/image/ImageProducer.java \
java/awt/image/IndexColorModel.java \ java/awt/image/IndexColorModel.java \
java/awt/image/PackedColorModel.java \ java/awt/image/PackedColorModel.java \
java/awt/image/Raster.java \ java/awt/image/Raster.java \
java/awt/image/RasterOp.java \
java/awt/image/SampleModel.java \ java/awt/image/SampleModel.java \
java/awt/image/SinglePixelPackedSampleModel.java \ java/awt/image/SinglePixelPackedSampleModel.java \
java/awt/image/WritableRaster.java \ java/awt/image/WritableRaster.java \
...@@ -1003,8 +1008,10 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ ...@@ -1003,8 +1008,10 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/$(srcdir)/$(CONVERT_DIR)/make-trie.P .deps/boehm.P \ .deps/$(srcdir)/$(CONVERT_DIR)/make-trie.P .deps/boehm.P \
.deps/defineclass.P .deps/exception.P .deps/gij.P \ .deps/defineclass.P .deps/exception.P .deps/gij.P \
.deps/gnu/gcj/RawData.P .deps/gnu/gcj/awt/BitMaskExtent.P \ .deps/gnu/gcj/RawData.P .deps/gnu/gcj/awt/BitMaskExtent.P \
.deps/gnu/gcj/awt/Buffers.P .deps/gnu/gcj/convert/BytesToUnicode.P \ .deps/gnu/gcj/awt/Buffers.P .deps/gnu/gcj/awt/ComponentDataBlitOp.P \
.deps/gnu/gcj/convert/Convert.P .deps/gnu/gcj/convert/IOConverter.P \ .deps/gnu/gcj/awt/GLightweightPeer.P \
.deps/gnu/gcj/convert/BytesToUnicode.P .deps/gnu/gcj/convert/Convert.P \
.deps/gnu/gcj/convert/IOConverter.P \
.deps/gnu/gcj/convert/Input_8859_1.P \ .deps/gnu/gcj/convert/Input_8859_1.P \
.deps/gnu/gcj/convert/Input_EUCJIS.P \ .deps/gnu/gcj/convert/Input_EUCJIS.P \
.deps/gnu/gcj/convert/Input_JavaSrc.P \ .deps/gnu/gcj/convert/Input_JavaSrc.P \
...@@ -1073,7 +1080,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ ...@@ -1073,7 +1080,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/awt/EventQueue.P .deps/java/awt/FileDialog.P \ .deps/java/awt/EventQueue.P .deps/java/awt/FileDialog.P \
.deps/java/awt/Font.P .deps/java/awt/FontMetrics.P \ .deps/java/awt/Font.P .deps/java/awt/FontMetrics.P \
.deps/java/awt/Frame.P .deps/java/awt/Graphics.P \ .deps/java/awt/Frame.P .deps/java/awt/Graphics.P \
.deps/java/awt/GraphicsConfiguration.P \ .deps/java/awt/Graphics2D.P .deps/java/awt/GraphicsConfiguration.P \
.deps/java/awt/IllegalComponentStateException.P .deps/java/awt/Image.P \ .deps/java/awt/IllegalComponentStateException.P .deps/java/awt/Image.P \
.deps/java/awt/Insets.P .deps/java/awt/ItemSelectable.P \ .deps/java/awt/Insets.P .deps/java/awt/ItemSelectable.P \
.deps/java/awt/Label.P .deps/java/awt/LayoutManager.P \ .deps/java/awt/Label.P .deps/java/awt/LayoutManager.P \
...@@ -1084,12 +1091,12 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ ...@@ -1084,12 +1091,12 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/awt/Paint.P .deps/java/awt/PaintContext.P \ .deps/java/awt/Paint.P .deps/java/awt/PaintContext.P \
.deps/java/awt/Panel.P .deps/java/awt/Point.P \ .deps/java/awt/Panel.P .deps/java/awt/Point.P \
.deps/java/awt/PopupMenu.P .deps/java/awt/Rectangle.P \ .deps/java/awt/PopupMenu.P .deps/java/awt/Rectangle.P \
.deps/java/awt/ScrollPane.P .deps/java/awt/Scrollbar.P \ .deps/java/awt/RenderingHints.P .deps/java/awt/ScrollPane.P \
.deps/java/awt/Shape.P .deps/java/awt/TextArea.P \ .deps/java/awt/Scrollbar.P .deps/java/awt/Shape.P \
.deps/java/awt/TextComponent.P .deps/java/awt/TextField.P \ .deps/java/awt/TextArea.P .deps/java/awt/TextComponent.P \
.deps/java/awt/Toolkit.P .deps/java/awt/Transparency.P \ .deps/java/awt/TextField.P .deps/java/awt/Toolkit.P \
.deps/java/awt/Window.P .deps/java/awt/color/ColorSpace.P \ .deps/java/awt/Transparency.P .deps/java/awt/Window.P \
.deps/java/awt/color/ICC_ColorSpace.P \ .deps/java/awt/color/ColorSpace.P .deps/java/awt/color/ICC_ColorSpace.P \
.deps/java/awt/color/ICC_Profile.P \ .deps/java/awt/color/ICC_Profile.P \
.deps/java/awt/datatransfer/Clipboard.P \ .deps/java/awt/datatransfer/Clipboard.P \
.deps/java/awt/event/AWTEventListener.P \ .deps/java/awt/event/AWTEventListener.P \
...@@ -1130,7 +1137,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ ...@@ -1130,7 +1137,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/awt/geom/PathIterator.P .deps/java/awt/geom/Point2D.P \ .deps/java/awt/geom/PathIterator.P .deps/java/awt/geom/Point2D.P \
.deps/java/awt/geom/Rectangle2D.P \ .deps/java/awt/geom/Rectangle2D.P \
.deps/java/awt/geom/RectangularShape.P \ .deps/java/awt/geom/RectangularShape.P \
.deps/java/awt/image/ColorModel.P \ .deps/java/awt/image/BufferedImage.P .deps/java/awt/image/ColorModel.P \
.deps/java/awt/image/ComponentColorModel.P \ .deps/java/awt/image/ComponentColorModel.P \
.deps/java/awt/image/ComponentSampleModel.P \ .deps/java/awt/image/ComponentSampleModel.P \
.deps/java/awt/image/DataBuffer.P .deps/java/awt/image/DataBufferByte.P \ .deps/java/awt/image/DataBuffer.P .deps/java/awt/image/DataBufferByte.P \
...@@ -1142,7 +1149,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ ...@@ -1142,7 +1149,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/awt/image/ImageProducer.P \ .deps/java/awt/image/ImageProducer.P \
.deps/java/awt/image/IndexColorModel.P \ .deps/java/awt/image/IndexColorModel.P \
.deps/java/awt/image/PackedColorModel.P .deps/java/awt/image/Raster.P \ .deps/java/awt/image/PackedColorModel.P .deps/java/awt/image/Raster.P \
.deps/java/awt/image/SampleModel.P \ .deps/java/awt/image/RasterOp.P .deps/java/awt/image/SampleModel.P \
.deps/java/awt/image/SinglePixelPackedSampleModel.P \ .deps/java/awt/image/SinglePixelPackedSampleModel.P \
.deps/java/awt/image/WritableRaster.P .deps/java/awt/peer/ButtonPeer.P \ .deps/java/awt/image/WritableRaster.P .deps/java/awt/peer/ButtonPeer.P \
.deps/java/awt/peer/CanvasPeer.P \ .deps/java/awt/peer/CanvasPeer.P \
......
/* Copyright 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 gnu.gcj.awt;
import java.awt.geom.*;
import java.awt.image.*;
import java.awt.RenderingHints;
/**
* This raster copy operation assumes that both source and destination
* sample models are tightly pixel packed and contain the same number
* of bands.
*
* @throws java.lang.ClassCastException if the sample models of the
* rasters are not of type ComponentSampleModel.
*
* @author Rolf W. Rasmussen <rolfwr@ii.uib.no>
*/
public class ComponentDataBlitOp implements RasterOp
{
public static ComponentDataBlitOp INSTANCE = new ComponentDataBlitOp();
public WritableRaster filter(Raster src, WritableRaster dest)
{
if (dest == null)
dest = createCompatibleDestRaster(src);
DataBuffer srcDB = src.getDataBuffer();
DataBuffer destDB = dest.getDataBuffer();
ComponentSampleModel srcSM = (ComponentSampleModel) src.getSampleModel();
ComponentSampleModel destSM = (ComponentSampleModel) dest.getSampleModel();
// Calculate offset to data in the underlying arrays:
int srcScanlineStride = srcSM.getScanlineStride();
int destScanlineStride = destSM.getScanlineStride();
int srcX = src.getMinX() - src.getSampleModelTranslateX();
int srcY = src.getMinY() - src.getSampleModelTranslateY();
int destX = dest.getMinX() - dest.getSampleModelTranslateX();
int destY = dest.getMinY() - dest.getSampleModelTranslateY();
int numBands = srcSM.getNumBands();
/* We can't use getOffset(x, y) from the sample model since we
don't want the band offset added in. */
int srcOffset =
numBands*srcX + srcScanlineStride*srcY + // from sample model
srcDB.getOffset(); // from data buffer
int destOffset =
numBands*destX + destScanlineStride*destY + // from sample model
destDB.getOffset(); // from data buffer
// Determine how much, and how many times to blit.
int rowSize = src.getWidth()*numBands;
int h = src.getHeight();
if ((rowSize == srcScanlineStride) &&
(rowSize == destScanlineStride))
{
// collapse scan line blits to one large blit.
rowSize *= h;
h = 1;
}
// Do blitting
Object srcArray = Buffers.getData(srcDB);
Object destArray = Buffers.getData(destDB);
for (int yd = 0; yd<h; yd++)
{
System.arraycopy(srcArray, srcOffset,
destArray, destOffset,
rowSize);
srcOffset += srcScanlineStride;
destOffset += destScanlineStride;
}
return dest;
}
public Rectangle2D getBounds2D(Raster src)
{
return src.getBounds();
}
public WritableRaster createCompatibleDestRaster(Raster src) {
/* FIXME: Maybe we should explicitly create a raster with a
tightly pixel packed sample model, rather than assuming
that the createCompatibleWritableRaster() method in Raster
will create one. */
return src.createCompatibleWritableRaster();
}
public Point2D getPoint2D(Point2D srcPoint, Point2D destPoint)
{
if (destPoint == null)
return (Point2D) srcPoint.clone();
destPoint.setLocation(srcPoint);
return destPoint;
}
public RenderingHints getRenderingHints()
{
throw new UnsupportedOperationException("not implemented");
}
}
/* Copyright 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 gnu.gcj.awt;
import java.awt.*;
import java.awt.peer.*;
import java.awt.image.*;
/**
* @author Rolf W. Rasmussen <rolfwr@ii.uib.no>
*/
public class GLightweightPeer implements LightweightPeer
{
public static final GLightweightPeer INSTANCE = new GLightweightPeer();
public GLightweightPeer() {}
// -------- java.awt.peer.ComponentPeer implementation:
public int checkImage(Image img, int width, int height, ImageObserver o)
{
return 0;
}
public Image createImage(ImageProducer prod)
{
return null;
}
public Image createImage(int width, int height)
{
return null;
}
public void disable() {}
public void dispose() {}
public void enable() {}
public GraphicsConfiguration getGraphicsConfiguration()
{
return null;
}
public FontMetrics getFontMetrics(Font f)
{
return null;
}
public Graphics getGraphics()
{
return null;
}
public Point getLocationOnScreen()
{
return null;
}
public Dimension getMinimumSize()
{
return null;
}
public Dimension getPreferredSize()
{
return null;
}
public Toolkit getToolkit()
{
return null;
}
public void handleEvent(AWTEvent e) {}
public void hide() {}
public boolean isFocusTraversable()
{
return false;
}
public Dimension minimumSize()
{
return null;
}
public Dimension preferredSize()
{
return null;
}
public void paint(Graphics graphics) {}
public boolean prepareImage(Image img, int width, int height,
ImageObserver o)
{
return false;
}
public void print(Graphics graphics) {}
public void repaint(long tm, int x, int y, int width, int height) {}
public void requestFocus() {}
public void reshape(int x, int y, int width, int height) {}
public void setBackground(Color color) {}
public void setBounds(int x, int y, int width, int height) {}
public void setCursor(Cursor cursor) {}
public void setEnabled(boolean enabled) {}
public void setEventMask(long eventMask) {}
public void setFont(Font font) {}
public void setForeground(Color color) {}
public void setVisible(boolean visible) {}
public void show() {}
}
...@@ -8,12 +8,25 @@ details. */ ...@@ -8,12 +8,25 @@ details. */
package java.awt; package java.awt;
/* A very incomplete placeholder. */ public class BorderLayout implements LayoutManager2, java.io.Serializable
public class BorderLayout implements LayoutManager2
{ {
public static final String NORTH = "North",
SOUTH = "South",
EAST = "East",
WEST = "West",
CENTER = "Center";
// FIXME: use these too
public static final String BEFORE_FIRST_LINE = "First",
AFTER_LAST_LINE = "Last",
BEFORE_LINE_BEGINS = "Before",
AFTER_LINE_ENDS = "After";
// FIXME: check serialization of fields
int hgap; int hgap;
int vgap; int vgap;
Component north, south, east, west, center;
public BorderLayout () public BorderLayout ()
{ {
...@@ -26,26 +39,216 @@ public class BorderLayout implements LayoutManager2 ...@@ -26,26 +39,216 @@ public class BorderLayout implements LayoutManager2
this.vgap = vgap; this.vgap = vgap;
} }
public void addLayoutComponent (String name, Component comp) public int getHgap()
{ /* FIXME */ } {
public void layoutContainer (Container parent) return hgap;
{ /* FIXME */ } }
public Dimension minimumLayoutSize (Container parent)
{ /* FIXME */ return null; } public void setHgap(int hgap)
public Dimension preferredLayoutSize (Container parent) {
{ /* FIXME */ return null; } this.hgap = hgap;
public void removeLayoutComponent (Component comp) }
{ /* FIXME */ }
public int getVgap()
public void addLayoutComponent (Component comp, Object constraints) {
{ /* FIXME */ } return vgap;
public float getLayoutAlignmentX (Container target) }
{ /* FIXME */ return (float) 0.0; }
public float getLayoutAlignmentY (Container target) public void setVgap(int vgap)
{ /* FIXME */ return (float) 0.0; } {
public void invalidateLayout (Container target) this.vgap = vgap;
{ /* FIXME */ } }
public Dimension maximumLayoutSize (Container target)
{ /* FIXME */ return null; } public void addLayoutComponent(Component comp, Object constraints)
{
if ((constraints == null) || CENTER.equals(constraints))
{
center = comp;
}
else if (NORTH.equals(constraints))
{
north = comp;
}
else if (SOUTH.equals(constraints))
{
south = comp;
}
else if (EAST.equals(constraints))
{
east = comp;
}
else if (WEST.equals(constraints))
{
west = comp;
}
}
public void addLayoutComponent(String name, Component comp)
{
addLayoutComponent(comp, name);
}
public void removeLayoutComponent(Component comp)
{
if (center == comp)
{
center = null;
}
else if (north == comp)
{
north = null;
}
else if (south == comp)
{
south = null;
}
else if (east == comp)
{
east = null;
}
else if (west == comp)
{
west = null;
}
}
public Dimension minimumLayoutSize(Container target)
{
return calcSize(getMinimumSize(center),
getMinimumSize(north),
getMinimumSize(south),
getMinimumSize(east),
getMinimumSize(west),
target);
}
public Dimension preferredLayoutSize(Container target)
{
return calcSize(getPreferredSize(center),
getPreferredSize(north),
getPreferredSize(south),
getPreferredSize(east),
getPreferredSize(west),
target);
}
/**
* Completely disregards the requested maximum sizes of the
* components, and states that the container has no upper size
* limit.
*
* @return a dimension of width and height Integer.MAX_VALUE.
*/
public Dimension maximumLayoutSize(Container target)
{
return (Dimension) DIM_MAX.clone();
}
public float getLayoutAlignmentX(Container parent)
{
return Component.CENTER_ALIGNMENT;
}
public float getLayoutAlignmentY(Container parent)
{
return Component.CENTER_ALIGNMENT;
}
public void invalidateLayout(Container target)
{
// TODO... implement caching?
}
public void layoutContainer(Container target)
{
Insets i = target.getInsets();
Dimension c = getPreferredSize(center);
Dimension n = getPreferredSize(north);
Dimension s = getPreferredSize(south);
Dimension e = getPreferredSize(east);
Dimension w = getPreferredSize(west);
Dimension t = target.getSize();
/*
<-> hgap <-> hgap
+----------------------------+ }
|t | } i.top
| +----------------------+ | --- y1 }
| |n | |
| +----------------------+ | } vgap
| +---+ +----------+ +---+ | --- y2 } }
| |w | |c | |e | | } hh
| +---+ +----------+ +---+ | } vgap }
| +----------------------+ | --- y3 }
| |s | |
| +----------------------+ | }
| | } i.bottom
+----------------------------+ }
|x1 |x2 |x3
<---------------------->
<--> ww <-->
i.left i.right
*/
int x1 = i.left;
int x2 = x1 + w.width + hgap;
int x3 = t.width - i.right - e.width;
int ww = t.width - i.right - i.left;
int y1 = i.top;
int y2 = y1 + n.height + vgap;
int y3 = t.height - i.bottom - s.height;
int hh = y3-y2-vgap;
setBounds(center, x2, y2, x3-x2-hgap, hh);
setBounds(north, x1, y1, ww, n.height);
setBounds(south, x1, y3, ww, s.height);
setBounds(west, x1, y2, w.width, hh);
setBounds(east, x3, y2, e.width, hh);
}
public String toString()
{
return getClass().getName() + "[hgap=" + hgap + ",vgap=" + vgap + "]";
}
// Support:
static final Dimension DIM_0 = new Dimension(0, 0);
static final Dimension DIM_MAX = new Dimension(Integer.MAX_VALUE,
Integer.MAX_VALUE);
void setBounds(Component comp, int x, int y, int w, int h)
{
if (comp == null)
return;
comp.setBounds(x, y, w, h);
}
Dimension getMinimumSize(Component comp)
{
if (comp == null)
return DIM_0;
return comp.getMinimumSize();
}
Dimension getPreferredSize(Component comp)
{
if (comp == null)
return DIM_0;
return comp.getPreferredSize();
}
Dimension calcSize(Dimension c, Dimension n, Dimension s,
Dimension e, Dimension w, Container target)
{
Insets i = target.getInsets();
return new Dimension(c.width + e.width + w.width + hgap*2 +
i.left + i.right,
c.height + n.height + s.height + vgap*2 +
i.top + i.bottom
);
}
} }
...@@ -11,6 +11,7 @@ import java.awt.peer.ButtonPeer; ...@@ -11,6 +11,7 @@ import java.awt.peer.ButtonPeer;
import java.awt.peer.ComponentPeer; import java.awt.peer.ComponentPeer;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.util.EventListener;
/** /**
* @author Tom Tromey <tromey@cygnus.com> * @author Tom Tromey <tromey@cygnus.com>
...@@ -31,18 +32,19 @@ public class Button extends Component ...@@ -31,18 +32,19 @@ public class Button extends Component
public void addActionListener (ActionListener l) public void addActionListener (ActionListener l)
{ {
listeners = AWTEventMulticaster.add (listeners, l); actionListener = AWTEventMulticaster.add (actionListener, l);
} }
public void addNotify () public void addNotify ()
{ {
if (peer == null) if (peer == null)
peer = (ComponentPeer) getToolkit ().createButton (this); peer = (ComponentPeer) getToolkit ().createButton (this);
super.addNotify();
} }
public String getActionCommand () public String getActionCommand ()
{ {
return command; return actionCommand;
} }
public String getLabel () public String getLabel ()
...@@ -55,10 +57,21 @@ public class Button extends Component ...@@ -55,10 +57,21 @@ public class Button extends Component
return "Button[" + label + "]"; return "Button[" + label + "]";
} }
void dispatchEventImpl(AWTEvent e)
{
super.dispatchEventImpl(e);
if (e.id <= ActionEvent.ACTION_LAST
&& e.id >= ActionEvent.ACTION_FIRST
&& (actionListener != null
|| (eventMask & AWTEvent.ACTION_EVENT_MASK) != 0))
processEvent(e);
}
protected void processActionEvent (ActionEvent e) protected void processActionEvent (ActionEvent e)
{ {
if (listeners != null) if (actionListener != null)
listeners.actionPerformed (e); actionListener.actionPerformed (e);
} }
protected void processEvent (AWTEvent e) protected void processEvent (AWTEvent e)
...@@ -71,12 +84,19 @@ public class Button extends Component ...@@ -71,12 +84,19 @@ public class Button extends Component
public void removeActionListener (ActionListener l) public void removeActionListener (ActionListener l)
{ {
listeners = AWTEventMulticaster.remove (listeners, l); actionListener = AWTEventMulticaster.remove (actionListener, l);
}
public EventListener[] getListeners(Class listenerType)
{
if (listenerType == ActionListener.class)
return getListenersImpl(listenerType, actionListener);
return super.getListeners(listenerType);
} }
public void setActionCommand (String command) public void setActionCommand (String command)
{ {
this.command = (command == null) ? label : command; this.actionCommand = (command == null) ? label : command;
} }
public void setLabel (String label) public void setLabel (String label)
...@@ -89,7 +109,8 @@ public class Button extends Component ...@@ -89,7 +109,8 @@ public class Button extends Component
} }
} }
private String label; String label;
private String command; String actionCommand;
private ActionListener listeners;
transient ActionListener actionListener;
} }
...@@ -8,8 +8,45 @@ details. */ ...@@ -8,8 +8,45 @@ details. */
package java.awt; package java.awt;
/* A very incomplete placeholder. */ import java.awt.peer.ComponentPeer;
public class Canvas extends Component public class Canvas extends Component
{ {
transient GraphicsConfiguration graphicsConfiguration;
public Canvas() { }
public Canvas(GraphicsConfiguration graphicsConfiguration)
{
this.graphicsConfiguration = graphicsConfiguration;
}
GraphicsConfiguration getGraphicsConfigurationImpl()
{
if (graphicsConfiguration != null)
return graphicsConfiguration;
return super.getGraphicsConfigurationImpl();
}
public void addNotify()
{
if (peer == null)
{
peer = (ComponentPeer) getToolkit().createCanvas(this);
}
super.addNotify();
}
/** Override this to create components with custom painting.
Defaults to filling the component with the background color. */
public void paint(Graphics gfx)
{
/* This implementation doesn't make much sense since the filling
of background color is guaranteed for heavyweight components
such as this. But there's no need to worry, since paint() is
usually overridden anyway. */
gfx.setColor(getBackground());
Dimension size = getSize();
gfx.fillRect(0, 0, size.width, size.height);
}
} }
...@@ -87,6 +87,29 @@ public class Color extends Object implements Paint, java.io.Serializable ...@@ -87,6 +87,29 @@ public class Color extends Object implements Paint, java.io.Serializable
{ {
return rgba; return rgba;
} }
static final int BRIGHT_STEP = 0x30;
public Color brighter()
{
return new Color(Math.min(255, getRed() + BRIGHT_STEP),
Math.min(255, getGreen() + BRIGHT_STEP),
Math.min(255, getBlue() + BRIGHT_STEP),
getAlpha());
}
public Color darker()
{
return new Color(Math.max(0, getRed() - BRIGHT_STEP),
Math.max(0, getGreen() - BRIGHT_STEP),
Math.max(0, getBlue() - BRIGHT_STEP),
getAlpha());
}
public int hashCode()
{
return rgba;
}
public int getTransparency() public int getTransparency()
{ {
...@@ -96,3 +119,4 @@ public class Color extends Object implements Paint, java.io.Serializable ...@@ -96,3 +119,4 @@ public class Color extends Object implements Paint, java.io.Serializable
return Transparency.TRANSLUCENT; return Transparency.TRANSLUCENT;
} }
} }
...@@ -14,8 +14,9 @@ import java.io.PrintWriter; ...@@ -14,8 +14,9 @@ import java.io.PrintWriter;
import java.util.EventListener; import java.util.EventListener;
import java.awt.peer.ComponentPeer; import java.awt.peer.ComponentPeer;
import java.awt.peer.ContainerPeer; import java.awt.peer.ContainerPeer;
import java.awt.peer.LightweightPeer;
/* A very incomplete placeholder. */ /* A somewhat incomplete class. */
public abstract class Container extends Component public abstract class Container extends Component
{ {
...@@ -30,9 +31,6 @@ public abstract class Container extends Component ...@@ -30,9 +31,6 @@ public abstract class Container extends Component
/* Anything else is non-serializable, and should be declared "transient". */ /* Anything else is non-serializable, and should be declared "transient". */
transient ContainerListener containerListener; transient ContainerListener containerListener;
// Insets.
private transient Insets myInsets;
public Container() public Container()
{ {
} }
...@@ -65,7 +63,10 @@ public abstract class Container extends Component ...@@ -65,7 +63,10 @@ public abstract class Container extends Component
public Insets getInsets() public Insets getInsets()
{ {
return myInsets; if (peer == null)
return new Insets(0, 0, 0, 0);
return ((ContainerPeer) peer).getInsets();
} }
/** @deprecated Use getInsets() instead. */ /** @deprecated Use getInsets() instead. */
...@@ -112,14 +113,22 @@ public abstract class Container extends Component ...@@ -112,14 +113,22 @@ public abstract class Container extends Component
// Reparent component, and make sure component is instantiated if // Reparent component, and make sure component is instantiated if
// we are. // we are.
if (comp.parent != this) if (comp.parent != null)
comp.parent.remove (comp); comp.parent.remove (comp);
comp.parent = this; comp.parent = this;
if (peer != null) if (peer != null)
comp.addNotify (); {
comp.addNotify ();
if (comp.isLightweight())
enableEvents(comp.eventMask);
}
invalidate (); invalidate ();
if (component == null)
component = new Component[4]; // FIXME, better initial size?
// This isn't the most efficient implementation. We could do less // This isn't the most efficient implementation. We could do less
// copying when growing the array. It probably doesn't matter. // copying when growing the array. It probably doesn't matter.
if (ncomponents >= component.length) if (ncomponents >= component.length)
...@@ -228,20 +237,48 @@ public abstract class Container extends Component ...@@ -228,20 +237,48 @@ public abstract class Container extends Component
{ {
if (! isValid ()) if (! isValid ())
{ {
doLayout ();
validateTree (); validateTree ();
} }
} }
protected void validateTree() protected void validateTree()
{ {
if (valid) return;
ContainerPeer cPeer = null;
if ((peer != null) && !(peer instanceof LightweightPeer))
{
cPeer = (ContainerPeer) peer;
cPeer.beginValidate();
}
doLayout ();
for (int i = 0; i < ncomponents; ++i) for (int i = 0; i < ncomponents; ++i)
component[i].validate (); {
Component comp = component[i];
if (comp instanceof Container)
{
((Container) comp).validateTree();
}
else
{
component[i].validate();
}
}
/* children will call invalidate() when they are layed out. It
is therefore imporant that valid is not set to true
before after the children has been layed out. */
valid = true;
if (cPeer != null)
cPeer.endValidate();
} }
public void setFont(Font f) public void setFont(Font f)
{ {
// FIXME super.setFont(f);
// FIXME, should invalidate all children with font == null
} }
public Dimension getPreferredSize() public Dimension getPreferredSize()
...@@ -307,28 +344,91 @@ public abstract class Container extends Component ...@@ -307,28 +344,91 @@ public abstract class Container extends Component
public void paint(Graphics g) public void paint(Graphics g)
{ {
// FIXME if (!isShowing())
return;
super.paint(g);
visitChildren(g, GfxPaintVisitor.INSTANCE, true);
}
/**
* Perform a graphics operation on the children of this container.
* For each applicable child, the visitChild() method will be called
* to perform the graphics operation.
*
* @param gfx The graphics object that will be used to derive new
* graphics objects for the children.
*
* @param visitor Object encapsulating the graphics operation that
* should be performed.
*
* @param lightweightOnly If true, only lightweight components will
* be visited.
*/
private void visitChildren(Graphics gfx, GfxVisitor visitor,
boolean lightweightOnly)
{
// FIXME: do locking
for (int i = 0; i < ncomponents; ++i)
{
Component comp = component[i];
boolean applicable = comp.isVisible()
&& (comp.isLightweight() || !lightweightOnly);
if (applicable)
visitChild(gfx, visitor, comp);
}
}
/**
* Perform a graphics operation on a child. A translated and clipped
* graphics object will be created, and the visit() method of the
* visitor will be called to perform the operation.
*
* @param gfx The graphics object that will be used to derive new
* graphics objects for the child.
*
* @param visitor Object encapsulating the graphics operation that
* should be performed.
*
* @param comp The child component that should be visited.
*/
private void visitChild(Graphics gfx, GfxVisitor visitor,
Component comp)
{
Rectangle bounds = comp.getBounds();
Rectangle clip = gfx.getClipBounds().intersection(bounds);
if (clip.isEmpty()) return;
Graphics gfx2 = gfx.create();
gfx2.setClip(clip.x, clip.y, clip.width, clip.height);
gfx2.translate(bounds.x, bounds.y);
visitor.visit(comp, gfx2);
} }
public void update(Graphics g) public void update(Graphics g)
{ {
// FIXME super.update(g);
} }
public void print(Graphics g) public void print(Graphics g)
{ {
// FIXME super.print(g);
visitChildren(g, GfxPrintVisitor.INSTANCE, true);
} }
public void paintComponents(Graphics g) public void paintComponents(Graphics g)
{ {
// FIXME super.paint(g);
visitChildren(g, GfxPaintAllVisitor.INSTANCE, true);
} }
public void printComponents(Graphics g) public void printComponents(Graphics g)
{ {
for (int i = 0; i < ncomponents; ++i) super.paint(g);
component[i].printAll (g); visitChildren(g, GfxPrintAllVisitor.INSTANCE, true);
} }
void dispatchEventImpl(AWTEvent e) void dispatchEventImpl(AWTEvent e)
...@@ -393,12 +493,16 @@ public abstract class Container extends Component ...@@ -393,12 +493,16 @@ public abstract class Container extends Component
return null; return null;
for (int i = 0; i < ncomponents; ++i) for (int i = 0; i < ncomponents; ++i)
{ {
// Ignore invisible children...
if (!component[i].isVisible())
continue;
int x2 = x - component[i].x; int x2 = x - component[i].x;
int y2 = y - component[i].y; int y2 = y - component[i].y;
if (component[i].contains (x2, y2)) if (component[i].contains (x2, y2))
return component[i]; return component[i];
} }
return null; return this;
} }
/** @deprecated Use getComponentAt() instead */ /** @deprecated Use getComponentAt() instead */
...@@ -425,8 +529,17 @@ public abstract class Container extends Component ...@@ -425,8 +529,17 @@ public abstract class Container extends Component
public void addNotify () public void addNotify ()
{ {
super.addNotify();
}
void addNotifyContainerChildren()
{
for (int i = ncomponents; --i >= 0; ) for (int i = ncomponents; --i >= 0; )
component[i].addNotify(); {
component[i].addNotify();
if (component[i].isLightweight())
enableEvents(component[i].eventMask);
}
} }
public void removeNotify() public void removeNotify()
...@@ -450,7 +563,11 @@ public abstract class Container extends Component ...@@ -450,7 +563,11 @@ public abstract class Container extends Component
protected String paramString() protected String paramString()
{ {
return "FIXME"; String param = super.paramString();
if (layoutMgr != null)
param = param + "," + layoutMgr.getClass().getName();
return param;
} }
public void list (PrintStream out, int indent) public void list (PrintStream out, int indent)
...@@ -470,4 +587,39 @@ public abstract class Container extends Component ...@@ -470,4 +587,39 @@ public abstract class Container extends Component
for (int i = 0; i < ncomponents; ++i) for (int i = 0; i < ncomponents; ++i)
component[i].list (out, indent + 2); component[i].list (out, indent + 2);
} }
/* The following classes are used in concert with the
visitChildren() method to implement all the graphics operations
that requires traversal of the containment hierarchy. */
abstract static class GfxVisitor
{
public abstract void visit(Component c, Graphics gfx);
}
static class GfxPaintVisitor extends GfxVisitor
{
public void visit(Component c, Graphics gfx) { c.paint(gfx); }
public static final GfxVisitor INSTANCE = new GfxPaintVisitor();
}
static class GfxPrintVisitor extends GfxVisitor
{
public void visit(Component c, Graphics gfx) { c.print(gfx); }
public static final GfxVisitor INSTANCE = new GfxPrintVisitor();
}
static class GfxPaintAllVisitor extends GfxVisitor
{
public void visit(Component c, Graphics gfx) { c.paintAll(gfx); }
public static final GfxVisitor INSTANCE = new GfxPaintAllVisitor();
}
static class GfxPrintAllVisitor extends GfxVisitor
{
public void visit(Component c, Graphics gfx) { c.printAll(gfx); }
public static final GfxVisitor INSTANCE = new GfxPrintAllVisitor();
}
} }
...@@ -145,8 +145,7 @@ public class EventQueue ...@@ -145,8 +145,7 @@ public class EventQueue
public static void invokeAndWait(Runnable runnable) public static void invokeAndWait(Runnable runnable)
throws InterruptedException, InvocationTargetException throws InterruptedException, InvocationTargetException
{ {
// FIXME: Is this an appropriate way to access the event queue? EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue();
EventQueue eq = Toolkit.systemEventQueue;
Thread current = Thread.currentThread(); Thread current = Thread.currentThread();
if (current == eq.dispatchThread) if (current == eq.dispatchThread)
throw new Error("Can't call invokeAndWait from event dispatch thread"); throw new Error("Can't call invokeAndWait from event dispatch thread");
...@@ -169,8 +168,7 @@ public class EventQueue ...@@ -169,8 +168,7 @@ public class EventQueue
/** @since JDK1.2 */ /** @since JDK1.2 */
static void invokeLater(Runnable runnable) static void invokeLater(Runnable runnable)
{ {
// FIXME: Is this an appropriate way to access the event queue? EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue();
EventQueue eq = Toolkit.systemEventQueue;
InvocationEvent ie = InvocationEvent ie =
new InvocationEvent(eq, runnable, null, false); new InvocationEvent(eq, runnable, null, false);
...@@ -180,8 +178,7 @@ public class EventQueue ...@@ -180,8 +178,7 @@ public class EventQueue
static boolean isDispatchThread() static boolean isDispatchThread()
{ {
// FIXME: Is this an appropriate way to access the event queue? EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue();
EventQueue eq = Toolkit.systemEventQueue;
return (Thread.currentThread() == eq.dispatchThread); return (Thread.currentThread() == eq.dispatchThread);
} }
......
...@@ -28,38 +28,32 @@ public class FontMetrics implements java.io.Serializable ...@@ -28,38 +28,32 @@ public class FontMetrics implements java.io.Serializable
public int getLeading() public int getLeading()
{ {
// FIXME?? return getMaxAscent() + getMaxDescent() - (getAscent() + getDescent());
return getHeight() - (getDescent() + getAscent());
} }
public int getAscent() public int getAscent()
{ {
// FIXME??
return getHeight() - (getDescent() + getLeading()); return getHeight() - (getDescent() + getLeading());
} }
public int getDescent() public int getDescent()
{ {
// FIXME?? return getHeight() - (getLeading() + getDescent());
return getHeight() - getDescent();
} }
public int getHeight() public int getHeight()
{ {
// FIXME??
return getLeading() + getAscent() + getDescent(); return getLeading() + getAscent() + getDescent();
} }
public int getMaxAscent() public int getMaxAscent()
{ {
// FIXME return getAscent();
return 0;
} }
public int getMaxDescent() public int getMaxDescent()
{ {
// FIXME return getDescent();
return 0;
} }
/* @deprecated Use getMaxDescent() instead. */ /* @deprecated Use getMaxDescent() instead. */
...@@ -68,24 +62,24 @@ public class FontMetrics implements java.io.Serializable ...@@ -68,24 +62,24 @@ public class FontMetrics implements java.io.Serializable
return getMaxDescent(); return getMaxDescent();
} }
/** @return max advance, or -1 if unknown. */
public int getMaxAdvance() public int getMaxAdvance()
{ {
// FIXME return -1;
return 0;
} }
public int charWidth(int ch) public int charWidth(int ch)
{ {
// FIXME return charWidth((char) ch);
return 0;
} }
public int charWidth(char ch) public int charWidth(char ch)
{ {
// FIXME Character chObj = new Character(ch);
return 0; return stringWidth(chObj.toString());
} }
public int stringWidth(String str) public int stringWidth(String str)
{ {
return charsWidth(str.toCharArray(), 0, str.length()); return charsWidth(str.toCharArray(), 0, str.length());
...@@ -93,20 +87,19 @@ public class FontMetrics implements java.io.Serializable ...@@ -93,20 +87,19 @@ public class FontMetrics implements java.io.Serializable
public int charsWidth(char[] data, int off, int len) public int charsWidth(char[] data, int off, int len)
{ {
// FIXME return stringWidth(new String(data, off, len));
return -1;
} }
public int bytesWidth(byte[] data, int off, int len) public int bytesWidth(byte[] data, int off, int len)
{ {
// FIXME? return stringWidth(new String(data, off, len));
return -1;
} }
public int[] getWidths() public int[] getWidths()
{ {
// FIXME int[] widths = new int[256];
return new int[0]; for (char c=0; c<256; c++) widths[c] = charWidth(c);
return widths;
} }
public boolean hasUniformLineMetrics() public boolean hasUniformLineMetrics()
......
...@@ -13,22 +13,43 @@ import java.awt.peer.FramePeer; ...@@ -13,22 +13,43 @@ import java.awt.peer.FramePeer;
public class Frame extends Window implements MenuContainer public class Frame extends Window implements MenuContainer
{ {
public static final int NORMAL = 0;
public static final int ICONIFIED = 1;
MenuBar menuBar = null; MenuBar menuBar = null;
String title; String title;
private transient Image iconImage;
private transient boolean isResizable = true;
private transient int state = NORMAL;
public Frame () public Frame ()
{ {
super (null); super();
}
public Frame(GraphicsConfiguration gc)
{
super(gc);
} }
public Frame (String title) public Frame (String title)
{ {
super (null); super();
setTitle(title); setTitle(title);
} }
public String getTitle () { return title; } public Frame(String title, GraphicsConfiguration gc)
{
super(gc);
setTitle(title);
}
public String getTitle()
{
return (title != null) ? title : "";
}
public void setTitle (String title) public void setTitle (String title)
{ {
this.title = title; this.title = title;
...@@ -36,11 +57,60 @@ public class Frame extends Window implements MenuContainer ...@@ -36,11 +57,60 @@ public class Frame extends Window implements MenuContainer
((FramePeer)peer).setTitle(title); ((FramePeer)peer).setTitle(title);
} }
public synchronized void dispose () public Image getIconImage()
{ /* FIXME */ } {
return iconImage;
}
public void setIconImage(Image image)
{
iconImage = image;
if (peer != null)
((FramePeer) peer).setIconImage(iconImage);
}
protected void finalize() throws Throwable
{
//frames.remove(this);
/* FIXME: This won't work. Finalize will never be called if frames
has a reference to the object. We need weak references to
implement this correctly. */
super.finalize();
}
public synchronized void setMenuBar (MenuBar menuBar) public synchronized void setMenuBar (MenuBar menuBar)
{ this.menuBar = menuBar; } {
if (this.menuBar != menuBar)
{
//this.menuBar.removeNotify();
this.menuBar = menuBar;
//this.menuBar.addNotify();
}
if (peer != null)
((FramePeer) peer).setMenuBar(menuBar);
}
public boolean isResizable()
{
return isResizable;
}
public void setResizable(boolean resizable)
{
isResizable = resizable;
if (peer != null)
((FramePeer) peer).setResizable(isResizable);
}
public int getState()
{
/* FIXME: State might have changed in the peer... Must check. */
return state;
}
public synchronized void addNotify () public synchronized void addNotify ()
{ {
...@@ -49,7 +119,32 @@ public class Frame extends Window implements MenuContainer ...@@ -49,7 +119,32 @@ public class Frame extends Window implements MenuContainer
super.addNotify(); super.addNotify();
} }
public Font getFont() { return null; } // FIXME
public boolean postEvent(Event evt) { return false; } // FIXME public boolean postEvent(Event evt) { return false; } // FIXME
public void remove(MenuComponent comp) { } // FIXME
public void remove(MenuComponent m)
{
if (m == menuBar)
{
setMenuBar(null);
return;
}
super.remove(m);
}
public void removeNotify()
{
//if ((peer != null) && (menuBar != null)) menuBar.removeNotify();
super.removeNotify();
}
public static Frame[] getFrames()
{
//Frame[] array = new Frames[frames.size()];
//return frames.toArray(array);
// see finalize() comment
String msg = "FIXME: can't be implemented without weak references";
throw new UnsupportedOperationException(msg);
}
} }
...@@ -8,6 +8,8 @@ details. */ ...@@ -8,6 +8,8 @@ details. */
package java.awt; package java.awt;
import java.awt.image.ImageObserver;
/** /**
* @author Warren Levy <warrenl@cygnus.com> * @author Warren Levy <warrenl@cygnus.com>
* @date March 15, 2000. * @date March 15, 2000.
...@@ -16,14 +18,218 @@ package java.awt; ...@@ -16,14 +18,218 @@ package java.awt;
/** /**
* Written using on-line Java Platform 1.2 API Specification, as well * Written using on-line Java Platform 1.2 API Specification, as well
* as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998). * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
* Status: Stubbed; A very incomplete placeholder. * Status: Almost complete
*/ */
public abstract class Graphics extends Object public abstract class Graphics
{ {
protected Graphics() protected Graphics() {}
public abstract Graphics create();
public Graphics create(int x, int y, int width, int height)
{
Graphics gfx = create();
gfx.translate(x, y);
gfx.setClip(0, y, width, height);
return gfx;
}
public abstract void translate(int x, int y);
public abstract Color getColor();
public abstract void setColor(Color color);
public abstract void setPaintMode();
public abstract void setXORMode(Color altColor);
public abstract Font getFont();
public abstract void setFont(Font font);
public FontMetrics getFontMetrics()
{
return getFontMetrics(getFont());
}
public abstract FontMetrics getFontMetrics(Font font);
public abstract Rectangle getClipBounds();
public abstract void clipRect(int x, int y, int width, int height);
public abstract void setClip(int x, int y, int width, int height);
public abstract Shape getClip();
public abstract void setClip(Shape clip);
public abstract void copyArea(int x, int y, int width, int height,
int dx, int dy);
public abstract void drawLine(int x1, int y1, int x2, int y2);
public abstract void fillRect(int x, int y, int width, int height);
public void drawRect(int x, int y, int width, int height)
{
int x1 = x;
int y1 = y;
int x2 = x + width;
int y2 = y + height;
drawLine(x1, y1, x2, y1);
drawLine(x2, y1, x2, y2);
drawLine(x2, y2, x1, y2);
drawLine(x1, y2, x1, y1);
}
public abstract void clearRect(int x, int y, int width, int height);
public abstract void drawRoundRect(int x, int y, int width, int height,
int arcWidth, int arcHeight);
public abstract void fillRoundRect(int x, int y, int width, int height,
int arcWidth, int arcHeight);
public void draw3DRect(int x, int y, int width, int height,
boolean raised)
{
Color color = getColor();
Color tl = color.brighter();
Color br = color.darker();
if (!raised)
{
Color tmp = tl;
tl = br;
br = tmp;
}
int x1 = x;
int y1 = y;
int x2 = x + width;
int y2 = y + height;
setColor(tl);
drawLine(x1, y1, x2, y1);
drawLine(x1, y2, x1, y1);
setColor(br);
drawLine(x2, y1, x2, y2);
drawLine(x2, y1, x1, y2);
setColor(color);
}
public void fill3DRect(int x, int y, int width, int height,
boolean raised)
{
fillRect(x, y, width, height);
draw3DRect(x, y, width-1, height-1, raised);
}
public abstract void drawOval(int x, int y, int width, int height);
public abstract void fillOval(int x, int y, int width, int height);
public abstract void drawArc(int x, int y, int width, int height,
int startAngle, int arcAngle);
public abstract void fillArc(int x, int y, int width, int height,
int startAngle, int arcAngle);
public abstract void drawPolyline(int[] xPoints, int[] yPoints,
int nPoints);
public abstract void drawPolygon(int[] xPoints, int[] yPoints,
int nPoints);
//public void drawPolygon(Polygon p);
public abstract void fillPolygon(int[] xPoints, int[] yPoints,
int nPoints);
//public void fillPolygon(Polygon p);
public abstract void drawString(String str, int x, int y);
/*
public abstract void drawString(AttributedCharacterIterator iterator,
int x, int y)
*/
public void drawChars(char[] data, int offset, int length,
int x, int y)
{
String str = new String(data, offset, length);
drawString(str, x, y);
}
public void drawBytes(byte[] data, int offset, int length,
int x, int y)
{
String str = new String(data, offset, length);
drawString(str, x, y);
}
public abstract boolean drawImage(Image img, int x, int y,
ImageObserver observer);
public abstract boolean drawImage(Image img, int x, int y,
int width, int height,
ImageObserver observer);
public abstract boolean drawImage(Image img, int x, int y, Color bgcolor,
ImageObserver observer);
public abstract boolean drawImage(Image img, int x, int y,
int width, int height, Color bgcolor,
ImageObserver observer);
public abstract boolean drawImage(Image img,
int dx1, int dy1, int dx2, int dy2,
int sx1, int sy1, int sx2, int sy2,
ImageObserver observer);
public abstract boolean drawImage(Image img,
int dx1, int dy1, int dx2, int dy2,
int sx1, int sy1, int sx2, int sy2,
Color bgcolor, ImageObserver observer);
public abstract void dispose();
public void finalize()
{
dispose();
}
public String toString()
{
return super.toString(); // FIXME
}
/** @deprecated */
public Rectangle getClipRect()
{ {
super(); // ??? return getClipBounds(null);
throw new Error ("java.awt.Graphics: not implemented"); }
public boolean hitClip(int x, int y, int width, int height)
{
throw new UnsupportedOperationException("not implemented yet");
}
public Rectangle getClipBounds(Rectangle r)
{
Rectangle clipBounds = getClipBounds();
if (r == null)
return clipBounds;
r.x = clipBounds.x;
r.y = clipBounds.y;
r.width = clipBounds.width;
r.height = clipBounds.height;
return r;
} }
} }
/* Copyright 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.geom.AffineTransform;
import java.awt.image.ImageObserver;
//import java.util.Map;
/**
* @author Rolf W. Rasmussen <rolfwr@ii.uib.no>
*/
public abstract class Graphics2D extends Graphics
{
protected Graphics2D()
{
}
public void draw3DRect(int x, int y, int width, int height,
boolean raised)
{
super.draw3DRect(x, y, width, height, raised);
}
public void fill3DRect(int x, int y, int width, int height,
boolean raised)
{
super.fill3DRect(x, y, width, height, raised);
}
public abstract void draw(Shape shape);
public abstract boolean drawImage(Image image, AffineTransform xform,
ImageObserver obs);
/*
public abstract void drawImage(BufferedImage image,
BufferedImageOp op,
int x,
int y);
*/
/*
public abstract void drawRenderedImage(RenderedImage image,
AffineTransform xform);
*/
/*
public abstract void drawRenderableImage(RenderableImage image,
AffineTransform xform);
*/
public abstract void drawString(String text, int x, int y);
public abstract void drawString(String text, float x, float y);
/*
public abstract void drawString(AttributedCharacterIterator iterator,
int x, int y);
*/
/*
public abstract void drawString(AttributedCharacterIterator iterator,
float x, float y);
*/
/*
public abstract void drawGlyphVector(GlyphVector g, float x, float y);
*/
public abstract void fill(Shape shape);
public abstract boolean hit(Rectangle rect, Shape text,
boolean onStroke);
public abstract GraphicsConfiguration getDeviceConfiguration();
//public abstract void setComposite(Composite comp);
public abstract void setPaint(Paint paint);
//public abstract void setStroke(Stroke stroke)
public abstract void setRenderingHint(RenderingHints.Key hintKey,
Object hintValue);
public abstract Object getRenderingHint(RenderingHints.Key hintKey);
//public abstract void setRenderingHints(Map hints);
//public abstract void addRenderingHints(Map hints);
public abstract RenderingHints getRenderingHints();
public abstract void translate(int x, int y);
public abstract void translate(double tx, double ty);
public abstract void rotate(double theta);
public abstract void rotate(double theta, double x, double y);
public abstract void scale(double scaleX, double scaleY);
public abstract void shear(double shearX, double shearY);
public abstract void transform(AffineTransform Tx);
public abstract void setTransform(AffineTransform Tx);
public abstract AffineTransform getTransform();
public abstract Paint getPaint();
//public abstract Composite getComposite();
public abstract void setBackground(Color color);
public abstract Color getBackground();
//public abstract Stroke getStroke();
public abstract void clip(Shape s);
//public abstract FontRenderContext getFontRenderContext()
}
...@@ -6,15 +6,21 @@ This software is copyrighted work licensed under the terms of the ...@@ -6,15 +6,21 @@ This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */ details. */
/* Status: Complete, but commented out until we have the required Java2D /* Status: Complete, but commented out until we have the required
classes. */ GraphicsDevice. */
package java.awt; package java.awt;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.geom.AffineTransform;
public abstract class GraphicsConfiguration public abstract class GraphicsConfiguration
{ {
/* /*
public abstract GraphicsDevice getDevice(); public abstract GraphicsDevice getDevice();
*/
public abstract BufferedImage createCompatibleImage(int width, int height); public abstract BufferedImage createCompatibleImage(int width, int height);
public abstract BufferedImage createCompatibleImage(int width, int height, public abstract BufferedImage createCompatibleImage(int width, int height,
int transparency); int transparency);
...@@ -22,7 +28,7 @@ public abstract class GraphicsConfiguration ...@@ -22,7 +28,7 @@ public abstract class GraphicsConfiguration
public abstract ColorModel getColorModel(int transparency); public abstract ColorModel getColorModel(int transparency);
public abstract AffineTransform getDefaultTransform(); public abstract AffineTransform getDefaultTransform();
public abstract AffineTransform getNormalizingTransform(); public abstract AffineTransform getNormalizingTransform();
*/
/* @since 1.3 */ /* @since 1.3 */
public abstract Rectangle getBounds(); public abstract Rectangle getBounds();
} }
...@@ -8,6 +8,9 @@ details. */ ...@@ -8,6 +8,9 @@ details. */
package java.awt; package java.awt;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
/** /**
* @author Warren Levy <warrenl@cygnus.com> * @author Warren Levy <warrenl@cygnus.com>
* @date March 15, 2000. * @date March 15, 2000.
...@@ -16,14 +19,33 @@ package java.awt; ...@@ -16,14 +19,33 @@ package java.awt;
/** /**
* Written using on-line Java Platform 1.2 API Specification, as well * Written using on-line Java Platform 1.2 API Specification, as well
* as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998). * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
* Status: Stubbed; A very incomplete placeholder. * Status: Mostly complete, but look for FIXMEs.
*/ */
public abstract class Image extends Object public abstract class Image extends Object
{ {
public Image() public static final Object UndefinedProperty;
public static final int SCALE_DEFAULT = 1<<0,
SCALE_FAST = 1<<1,
SCALE_SMOOTH = 1<<2,
SCALE_REPLICATE = 1<<3,
SCALE_AREA_AVERAGING = 1<<4;
public abstract int getWidth(ImageObserver observer);
public abstract int getHeight(ImageObserver observer);
public abstract ImageProducer getSource();
public abstract Graphics getGraphics();
public abstract Object getProperty(String name, ImageObserver observer);
public Image getScaledInstance(int width, int height, int hints)
{ {
super(); // ??? throw new UnsupportedOperationException("FIXME: not implemented yet");
throw new Error("java.awt.Image: not implemented");
} }
public abstract void flush();
} }
...@@ -8,15 +8,20 @@ details. */ ...@@ -8,15 +8,20 @@ details. */
package java.awt; package java.awt;
import java.awt.peer.ComponentPeer;
/* An incomplete placeholder. */ /* An incomplete placeholder. */
public class Panel extends Container public class Panel extends Container
{ {
public Panel() public Panel()
{ {
super(); this(
// should be: new FlowLayout()
null // FIXME
);
} }
public Panel(LayoutManager layout) public Panel(LayoutManager layout)
{ {
super(); super();
...@@ -27,6 +32,8 @@ public class Panel extends Container ...@@ -27,6 +32,8 @@ public class Panel extends Container
public void addNotify() public void addNotify()
{ {
// FIXME if (getPeer() == null)
peer = (ComponentPeer) getToolkit().createPanel(this);
super.addNotify();
} }
} }
...@@ -220,7 +220,7 @@ public class Rectangle extends Rectangle2D implements Cloneable, Shape ...@@ -220,7 +220,7 @@ public class Rectangle extends Rectangle2D implements Cloneable, Shape
public boolean isEmpty() public boolean isEmpty()
{ {
return (width > 0 && height > 0); return !(width > 0 && height > 0);
} }
/** @deprecated Use setLocation() instead. */ /** @deprecated Use setLocation() instead. */
......
/* Copyright 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;
/**
* @author Rolf W. Rasmussen <rolfwr@ii.uib.no>
*/
public class RenderingHints implements
//java.util.Map,
Cloneable
{
static abstract class Key
{
private int intKey;
protected Key(int privateKey)
{
intKey = privateKey;
}
public abstract boolean isCompatibleValue(Object value);
protected final int intKey()
{
return intKey;
}
public final int hashCode()
{
return System.identityHashCode(this);
}
public final boolean equals(Object other)
{
return (this == other);
}
}
private static class KeyImpl extends Key
{
String description;
Object v1, v2, v3;
KeyImpl(int privateKey, String description,
Object v1, Object v2, Object v3)
{
super(privateKey);
this.description = description;
this.v1 = v1;
this.v2 = v2;
this.v3 = v3;
}
public boolean isCompatibleValue(Object value)
{
return (value == v1) || (value == v2) || (value == v3);
}
public String toString()
{
return description;
}
}
//java.util.HashMap hintMap;
public static final Key KEY_ANTIALIASING;
public static final Object
VALUE_ANTIALIAS_ON = "Antialiased rendering mode",
VALUE_ANTIALIAS_DEFAULT = "Default antialiasing rendering mode";
static
{
KEY_ANTIALIASING = new KeyImpl(1, "Global antialiasing enable key",
VALUE_ANTIALIAS_ON,
VALUE_ANTIALIAS_DEFAULT,
VALUE_ANTIALIAS_DEFAULT);
}
public static final Key KEY_RENDERING;
public static final Object
VALUE_RENDER_SPEED = "Fastest rendering methods",
VALUE_RENDER_QUALITY = "Highest quality rendering methods",
VALUE_RENDER_DEFAULT = "Default rendering methods";
static
{
KEY_RENDERING = new KeyImpl(2, "Global rendering quality key",
VALUE_RENDER_SPEED,
VALUE_RENDER_QUALITY,
VALUE_RENDER_DEFAULT);
}
public static final Key KEY_DITHERING;
public static final Object
VALUE_DITHER_DISABLE = "Nondithered rendering mode",
VALUE_DITHER_ENABLE = "Dithered rendering mode",
VALUE_DITHER_DEFAULT = "Default dithering mode";
static
{
KEY_DITHERING = new KeyImpl(3, "Dithering quality key",
VALUE_DITHER_DISABLE,
VALUE_DITHER_ENABLE,
VALUE_DITHER_DEFAULT);
}
public static final Key KEY_TEXT_ANTIALIASING;
public static final Object
VALUE_TEXT_ANTIALIAS_ON = "Antialiased text mode",
VALUE_TEXT_ANTIALIAS_OFF = "Nonantialiased text mode",
VALUE_TEXT_ANTIALIAS_DEFAULT = "Default antialiasing text mode";
static
{
KEY_TEXT_ANTIALIASING = new KeyImpl(4, "Text-specific antialiasing enable key",
VALUE_TEXT_ANTIALIAS_ON,
VALUE_TEXT_ANTIALIAS_OFF,
VALUE_TEXT_ANTIALIAS_DEFAULT);
}
public static final Key KEY_FRACTIONALMETRICS;
public static final Object
VALUE_FRACTIONALMETRICS_OFF = "Integer text metrics mode",
VALUE_FRACTIONALMETRICS_ON = "Fractional text metrics mode",
VALUE_FRACTIONALMETRICS_DEFAULT = "Default fractional text metrics mode";
static
{
KEY_FRACTIONALMETRICS = new KeyImpl(5, "Fractional metrics enable key",
VALUE_FRACTIONALMETRICS_OFF,
VALUE_FRACTIONALMETRICS_ON,
VALUE_FRACTIONALMETRICS_DEFAULT);
}
public static final Key KEY_INTERPOLATION;
public static final Object
VALUE_INTERPOLATION_NEAREST_NEIGHBOR = "Nearest Neighbor image interpolation mode",
VALUE_INTERPOLATION_BILINEAR = "Bilinear image interpolation mode",
VALUE_INTERPOLATION_BICUBIC = "Bicubic image interpolation mode";
static
{
KEY_INTERPOLATION = new KeyImpl(6, "Image interpolation method key",
VALUE_INTERPOLATION_NEAREST_NEIGHBOR,
VALUE_INTERPOLATION_BILINEAR,
VALUE_INTERPOLATION_BICUBIC);
}
public static final Key KEY_ALPHA_INTERPOLATION;
public static final Object
VALUE_ALPHA_INTERPOLATION_SPEED = "Fastest alpha blending methods",
VALUE_ALPHA_INTERPOLATION_QUALITY = "Highest quality alpha blending methods",
VALUE_ALPHA_INTERPOLATION_DEFAULT = "Default alpha blending methods";
static
{
KEY_ALPHA_INTERPOLATION = new KeyImpl(7, "Alpha blending interpolation method key",
VALUE_ALPHA_INTERPOLATION_SPEED,
VALUE_ALPHA_INTERPOLATION_QUALITY,
VALUE_ALPHA_INTERPOLATION_DEFAULT);
}
public static final Key KEY_COLOR_RENDERING;
public static final Object
VALUE_COLOR_RENDER_SPEED = "Fastest color rendering mode",
VALUE_COLOR_RENDER_QUALITY = "Highest quality color rendering mode",
VALUE_COLOR_RENDER_DEFAULT = "Default color rendering mode";
static
{
KEY_COLOR_RENDERING = new KeyImpl(8, "Color rendering quality key",
VALUE_COLOR_RENDER_SPEED,
VALUE_COLOR_RENDER_QUALITY,
VALUE_COLOR_RENDER_DEFAULT);
}
public static final Key KEY_STROKE_CONTROL;
public static final Object
VALUE_STROKE_DEFAULT = "Default stroke control mode",
VALUE_STROKE_NORMALIZE = "Normalize stroke control mode",
VALUE_STROKE_PURE = "Pure stroke control mode";
static
{
KEY_STROKE_CONTROL = new KeyImpl(9, "Stroke normalization control key",
VALUE_STROKE_DEFAULT,
VALUE_STROKE_NORMALIZE,
VALUE_STROKE_PURE);
}
//public RenderingHints(Map init);
public RenderingHints(Key key, Object value)
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
public int size()
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
public boolean isEmpty()
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
public boolean containsKey(Object key)
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
public boolean containsValue(Object value)
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
public Object get(Object key)
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
public Object put(Object key, Object value)
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
public void add(RenderingHints hints)
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
public void clear()
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
public Object remove(Object key)
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
/*
public void putAll(Map m)
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
*/
/*
public Set keySet()
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
*/
/*
public Collection values()
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
*/
/*
public Set entrySet()
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
*/
public boolean equals(Object o)
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
public int hashCode()
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
public Object clone()
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
public String toString()
{
throw new UnsupportedOperationException("FIXME, not implemented yet");
}
}
...@@ -14,6 +14,7 @@ import java.beans.*; ...@@ -14,6 +14,7 @@ import java.beans.*;
import java.awt.image.*; import java.awt.image.*;
import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.Clipboard;
import java.util.Hashtable; import java.util.Hashtable;
import gnu.gcj.awt.GLightweightPeer;
/* A very incomplete placeholder. */ /* A very incomplete placeholder. */
...@@ -28,7 +29,7 @@ public abstract class Toolkit ...@@ -28,7 +29,7 @@ public abstract class Toolkit
{ {
if (defaultToolkit != null) if (defaultToolkit != null)
return defaultToolkit; return defaultToolkit;
Class toolkit_class; Class toolkit_class;
String tk_class_name = System.getProperty("awt.toolkit"); String tk_class_name = System.getProperty("awt.toolkit");
if (tk_class_name == null) if (tk_class_name == null)
...@@ -72,8 +73,7 @@ public abstract class Toolkit ...@@ -72,8 +73,7 @@ public abstract class Toolkit
protected LightweightPeer createComponent(Component target) protected LightweightPeer createComponent(Component target)
{ {
// FIXME return GLightweightPeer.INSTANCE;
return null;
} }
/* @deprecated Use GraphicsEnvironment.getAllFonts() */ /* @deprecated Use GraphicsEnvironment.getAllFonts() */
...@@ -191,7 +191,7 @@ public abstract class Toolkit ...@@ -191,7 +191,7 @@ public abstract class Toolkit
public final EventQueue getSystemEventQueue() public final EventQueue getSystemEventQueue()
{ {
return systemEventQueue; return getSystemEventQueueImpl();
} }
protected abstract EventQueue getSystemEventQueueImpl(); protected abstract EventQueue getSystemEventQueueImpl();
......
...@@ -28,20 +28,47 @@ public class Window extends Container ...@@ -28,20 +28,47 @@ public class Window extends Container
private transient WindowListener windowListener; private transient WindowListener windowListener;
private transient GraphicsConfiguration graphicsConfiguration; private transient GraphicsConfiguration graphicsConfiguration;
/**
* This (package access) constructor is used by subclasses that want
* to build windows that do not have parents. Eg. toplevel
* application frames. Subclasses cannot call super(null), since
* null is an illegal argument.
*/
Window()
{
setVisible(false);
setLayout((LayoutManager) new BorderLayout());
}
Window(GraphicsConfiguration gc)
{
this();
graphicsConfiguration = gc;
}
public Window(Frame owner) public Window(Frame owner)
{ {
this (owner, null); this((Window) owner);
} }
/** @since 1.2 */ /** @since 1.2 */
public Window(Window owner) public Window(Window owner)
{ {
this (owner, null); this();
if (owner == null)
throw new IllegalArgumentException("owner must not be null");
this.parent = owner;
// FIXME: add to owner's "owned window" list
//owner.owned.add(this); // this should be a weak reference
} }
/** @since 1.3 */ /** @since 1.3 */
public Window(Window owner, GraphicsConfiguration gc) public Window(Window owner, GraphicsConfiguration gc)
{ {
this(owner);
/* FIXME: Security check /* FIXME: Security check
SecurityManager.checkTopLevelWindow(...) SecurityManager.checkTopLevelWindow(...)
...@@ -55,22 +82,21 @@ public class Window extends Container ...@@ -55,22 +82,21 @@ public class Window extends Container
.getDefaultConfiguration(); .getDefaultConfiguration();
else else
*/ */
graphicsConfiguration = gc; graphicsConfiguration = gc;
}
// FIXME: compiler bug GraphicsConfiguration getGraphicsConfigurationImpl()
// this.layoutMgr = new BorderLayout (); {
if (graphicsConfiguration != null)
if (owner == null) return graphicsConfiguration;
throw new IllegalArgumentException ("Owner can not be null");
return super.getGraphicsConfigurationImpl();
this.parent = owner;
// FIXME: add to owner's "owned window" list
} }
protected void finalize() throws Throwable protected void finalize() throws Throwable
{ {
// FIXME: remove from owner's "owned window" list (Weak References) // FIXME: remove from owner's "owned window" list (Weak References)
super.finalize();
} }
public void addNotify() public void addNotify()
...@@ -78,6 +104,7 @@ public class Window extends Container ...@@ -78,6 +104,7 @@ public class Window extends Container
if (peer == null) if (peer == null)
// FIXME: This cast should NOT be required. ??? Compiler bug ??? // FIXME: This cast should NOT be required. ??? Compiler bug ???
peer = (ComponentPeer) getToolkit ().createWindow (this); peer = (ComponentPeer) getToolkit ().createWindow (this);
super.addNotify ();
} }
/** @specnote pack() doesn't appear to be called internally by show(), so /** @specnote pack() doesn't appear to be called internally by show(), so
...@@ -87,16 +114,20 @@ public class Window extends Container ...@@ -87,16 +114,20 @@ public class Window extends Container
if (parent != null if (parent != null
&& !parent.isDisplayable()) && !parent.isDisplayable())
parent.addNotify(); parent.addNotify();
if (peer == null) if (peer == null)
addNotify(); addNotify();
// FIXME: do layout stuff here setSize(getPreferredSize());
validate(); validate();
} }
public void show () public void show ()
{ {
if (peer == null)
addNotify();
validate ();
if (isVisible()) if (isVisible())
{ {
this.toFront(); this.toFront();
...@@ -126,7 +157,12 @@ public class Window extends Container ...@@ -126,7 +157,12 @@ public class Window extends Container
public void dispose() public void dispose()
{ {
// FIXME: first call removeNotify() on owned children hide();
Window[] list = getOwnedWindows();
for (int i=0; i<list.length; i++)
list[i].dispose();
for (int i = 0; i < ncomponents; ++i) for (int i = 0; i < ncomponents; ++i)
component[i].removeNotify(); component[i].removeNotify();
this.removeNotify(); this.removeNotify();
...@@ -195,10 +231,7 @@ public class Window extends Container ...@@ -195,10 +231,7 @@ public class Window extends Container
public Window getOwner() public Window getOwner()
{ {
if (parent != null) return (Window) parent;
return (Window) parent;
else
return null;
} }
/** @since 1.2 */ /** @since 1.2 */
...@@ -317,8 +350,16 @@ public class Window extends Container ...@@ -317,8 +350,16 @@ public class Window extends Container
} }
*/ */
/**
* Get graphics configuration. The implementation for Window will
* not ask any parent containers, since Window is a toplevel
* window and not actually embedded in the parent component.
*/
public GraphicsConfiguration getGraphicsConfiguration() public GraphicsConfiguration getGraphicsConfiguration()
{ {
return graphicsConfiguration; if (graphicsConfiguration != null) return graphicsConfiguration;
if (peer != null) return peer.getGraphicsConfiguration();
return null;
} }
} }
...@@ -37,7 +37,7 @@ public class ActionEvent extends AWTEvent ...@@ -37,7 +37,7 @@ public class ActionEvent extends AWTEvent
this.modifiers = modifiers; this.modifiers = modifiers;
} }
public String getcmd () public String getActionCommand ()
{ {
return cmd; return cmd;
} }
......
/* Copyright 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.image;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.RenderingHints;
public interface RasterOp {
WritableRaster filter(Raster src, WritableRaster dest);
Rectangle2D getBounds2D(Raster src);
WritableRaster createCompatibleDestRaster(Raster src);
Point2D getPoint2D(Point2D srcPoint, Point2D destPoint);
public RenderingHints getRenderingHints();
}
...@@ -19,7 +19,13 @@ public interface ComponentPeer ...@@ -19,7 +19,13 @@ public interface ComponentPeer
void disable(); void disable();
void dispose(); void dispose();
void enable(); void enable();
ColorModel getColorModel();
/**
* Get the graphics configuration of the component. The color model
* of the component can be derived from the configuration.
*/
GraphicsConfiguration getGraphicsConfiguration();
FontMetrics getFontMetrics(Font f); FontMetrics getFontMetrics(Font f);
Graphics getGraphics(); Graphics getGraphics();
Point getLocationOnScreen(); Point getLocationOnScreen();
...@@ -41,6 +47,7 @@ public interface ComponentPeer ...@@ -41,6 +47,7 @@ public interface ComponentPeer
void setBounds(int x, int y, int width, int height); void setBounds(int x, int y, int width, int height);
void setCursor(Cursor cursor); void setCursor(Cursor cursor);
void setEnabled(boolean enabled); void setEnabled(boolean enabled);
void setEventMask(long eventMask);
void setFont(Font font); void setFont(Font font);
void setForeground(Color color); void setForeground(Color color);
void setVisible(boolean visible); void setVisible(boolean visible);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment