Here comes a couple of fixes and adjustments for the Swing peers. 2006-05-10 Roman Kennke <[EMAIL PROTECTED]>
* gnu/java/awt/peer/swing/SwingComponent.java: Some API comment fixlets. * gnu/java/awt/peer/swing/SwingComponentPeer.java: (createImage): Create a BufferedImage, not a Toolkit image. (paint): Removed bogus API comment. (prepareImage): Added checks to avoid NPE. * gnu/java/awt/peer/swing/SwingContainerPeer.java: (getInsets): Added check to avoid NPE. (handleMouseEvent): Added check to avoid NPE. * gnu/java/awt/peer/swing/SwingFramePeer.java: Some API comment fixlets. * gnu/java/awt/peer/swing/SwingMenuBarPeer.java: Some API comment fixlets. * gnu/java/awt/peer/swing/SwingTextFieldPeer.java: Changed start_pos name to startPos. * gnu/java/awt/peer/swing/SwingWindowPeer.java: Some API comment fixlets. /Roman
Index: gnu/java/awt/peer/swing/SwingComponent.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/swing/SwingComponent.java,v retrieving revision 1.1 diff -u -1 -0 -r1.1 SwingComponent.java --- gnu/java/awt/peer/swing/SwingComponent.java 14 Jan 2006 00:26:26 -0000 1.1 +++ gnu/java/awt/peer/swing/SwingComponent.java 10 May 2006 15:13:50 -0000 @@ -55,35 +55,35 @@ /** * Returns the actual swing compenent. * * @return the actual swing compenent */ JComponent getJComponent(); /** * Handles a mouse event. This is usually forwarded to - * [EMAIL PROTECTED] Component#processMouseMotionEvent(MouseEvent)} of the swing + * [EMAIL PROTECTED] java.awt.Component#processMouseMotionEvent(MouseEvent)} of the swing * component. * * @param ev the mouse event */ void handleMouseEvent(MouseEvent ev); /** * Handles a mouse motion event. This is usually forwarded to - * [EMAIL PROTECTED] Component#processMouseEvent(MouseEvent)} of the swing + * [EMAIL PROTECTED] java.awt.Component#processMouseEvent(MouseEvent)} of the swing * component. * * @param ev the mouse motion event */ void handleMouseMotionEvent(MouseEvent ev); /** * Handles a key event. This is usually forwarded to - * [EMAIL PROTECTED] Component#processKeyEvent(KeyEvent)} of the swing + * [EMAIL PROTECTED] java.awt.Component#processKeyEvent(KeyEvent)} of the swing * component. * * @param ev the key event */ void handleKeyEvent(KeyEvent ev); } Index: gnu/java/awt/peer/swing/SwingComponentPeer.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java,v retrieving revision 1.3 diff -u -1 -0 -r1.3 SwingComponentPeer.java --- gnu/java/awt/peer/swing/SwingComponentPeer.java 18 Apr 2006 12:38:25 -0000 1.3 +++ gnu/java/awt/peer/swing/SwingComponentPeer.java 10 May 2006 15:13:50 -0000 @@ -41,20 +41,22 @@ import java.awt.AWTException; import java.awt.BufferCapabilities; import java.awt.Color; import java.awt.Component; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.GraphicsConfiguration; +import java.awt.GraphicsDevice; +import java.awt.GraphicsEnvironment; import java.awt.Image; import java.awt.Point; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.BufferCapabilities.FlipContents; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.PaintEvent; import java.awt.image.ColorModel; import java.awt.image.ImageObserver; @@ -91,22 +93,23 @@ */ protected Component awtComponent; /** * The Swing component for this peer. */ protected SwingComponent swingComponent; /** * Creates a SwingComponentPeer instance. Subclasses are expected to call - * this constructor and thereafter call [EMAIL PROTECTED] #init(Component, JComponent)} - * in order to setup the AWT and Swing components properly. + * this constructor and thereafter call + * [EMAIL PROTECTED] #init(Component, SwingComponent)} in order to setup the AWT and + * Swing components properly. */ protected SwingComponentPeer() { // Nothing to do here. } /** * Initializes the AWT and Swing component for this peer. It is expected that * subclasses call this from within their constructor. * @@ -157,23 +160,26 @@ * eventually goes up to the top-level component peer, which is then expected * to deliver the image. * * @param width the width of the image to be created * @param height the height of the image to be created * * @return the created image */ public Image createImage(int width, int height) { - Component parent = awtComponent.getParent(); - ComponentPeer parentPeer = parent.getPeer(); - return parentPeer.createImage(width, height); + GraphicsEnvironment graphicsEnv = + GraphicsEnvironment.getLocalGraphicsEnvironment(); + GraphicsDevice dev = graphicsEnv.getDefaultScreenDevice(); + GraphicsConfiguration conf = dev.getDefaultConfiguration(); + Image image = conf.createCompatibleImage(width, height); + return image; } /** * Disables the component. This is called by [EMAIL PROTECTED] Component#disable()}. */ public void disable() { if (swingComponent != null) swingComponent.getJComponent().setEnabled(false); } @@ -435,34 +441,20 @@ public Dimension preferredSize() { Dimension retVal; if (swingComponent != null) retVal = swingComponent.getJComponent().getPreferredSize(); else retVal = new Dimension(0, 0); return retVal; } - /** - * Prepares an image for rendering on this component. This is called by - * [EMAIL PROTECTED] Component#prepareImage(Image, int, int, ImageObserver)}. - * - * @param img the image to prepare - * @param width the desired width of the rendered image - * @param height the desired height of the rendered image - * @param ob the image observer to be notified of updates in the preparation - * process - * - * @return <code>true</code> if the image has been fully prepared, - * <code>false</code> otherwise (in which case the image observer - * receives updates) - */ public void paint(Graphics graphics) { // FIXME: I don't know what this method is supposed to do. } /** * Prepares an image for rendering on this component. This is called by * [EMAIL PROTECTED] Component#prepareImage(Image, int, int, ImageObserver)}. * * @param img the image to prepare @@ -471,22 +463,31 @@ * @param ob the image observer to be notified of updates in the preparation * process * * @return <code>true</code> if the image has been fully prepared, * <code>false</code> otherwise (in which case the image observer * receives updates) */ public boolean prepareImage(Image img, int width, int height, ImageObserver ob) { Component parent = awtComponent.getParent(); - ComponentPeer parentPeer = parent.getPeer(); - return parentPeer.prepareImage(img, width, height, ob); + boolean res; + if(parent != null) + { + ComponentPeer parentPeer = parent.getPeer(); + res = parentPeer.prepareImage(img, width, height, ob); + } + else + { + res = Toolkit.getDefaultToolkit().prepareImage(img, width, height, ob); + } + return res; } public void print(Graphics graphics) { // FIXME: I don't know what this method is supposed to do. } /** * Repaints the specified rectangle of this component. This is called from * [EMAIL PROTECTED] Component#repaint(long, int, int, int, int)}. Index: gnu/java/awt/peer/swing/SwingContainerPeer.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/swing/SwingContainerPeer.java,v retrieving revision 1.2 diff -u -1 -0 -r1.2 SwingContainerPeer.java --- gnu/java/awt/peer/swing/SwingContainerPeer.java 18 Apr 2006 12:38:26 -0000 1.2 +++ gnu/java/awt/peer/swing/SwingContainerPeer.java 10 May 2006 15:13:51 -0000 @@ -85,21 +85,26 @@ /** * Returns the insets of the container. * * This is implemented to return the insets of the Swing container. * * @return the insets of the container */ public Insets getInsets() { - return insets(); + Insets retVal; + if (swingComponent != null) + retVal = swingComponent.getJComponent().getInsets(); + else + retVal = new Insets(0, 0, 0, 0); + return retVal; } /** * Called before the validation of this containers begins. */ public void beginValidate() { // Nothing to do here. } @@ -202,20 +207,22 @@ } /** * Handles mouse events by dispatching it to the correct component. * * @param ev the mouse event */ protected void handleMouseEvent(MouseEvent ev) { Component comp = awtComponent.getComponentAt(ev.getPoint()); + if(comp == null) + comp = awtComponent; if (comp != null) { ComponentPeer peer = comp.getPeer(); if (awtComponent != comp && !comp.isLightweight() && peer instanceof SwingComponentPeer) { ev.translatePoint(comp.getX(), comp.getY()); ev.setSource(comp); ((SwingComponentPeer) peer).handleMouseEvent(ev); } } Index: gnu/java/awt/peer/swing/SwingFramePeer.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/swing/SwingFramePeer.java,v retrieving revision 1.2 diff -u -1 -0 -r1.2 SwingFramePeer.java --- gnu/java/awt/peer/swing/SwingFramePeer.java 19 Jan 2006 20:19:04 -0000 1.2 +++ gnu/java/awt/peer/swing/SwingFramePeer.java 10 May 2006 15:13:51 -0000 @@ -46,23 +46,23 @@ import java.awt.peer.FramePeer; /** * An abstract base class for FramePeer implementations based on Swing. * This class provides the ability to display and handle AWT MenuBars that * are based on Swing. * * As a minimum, a subclass must implement all the remaining abstract methods * as well as the following methods: * <ul> - * <li>[EMAIL PROTECTED] ComponentPeer#getLocationOnScreen()}</li> - * <li>[EMAIL PROTECTED] ComponentPeer#getGraphics()}</li> - * <li>[EMAIL PROTECTED] ComponentPeer#createImage(int, int)}</li> + * <li>[EMAIL PROTECTED] java.awt.peer.ComponentPeer#getLocationOnScreen()}</li> + * <li>[EMAIL PROTECTED] java.awt.peer.ComponentPeer#getGraphics()}</li> + * <li>[EMAIL PROTECTED] java.awt.peer.ComponentPeer#createImage(int, int)}</li> * </ul> * * @author Roman Kennke ([EMAIL PROTECTED]) */ public abstract class SwingFramePeer extends SwingWindowPeer implements FramePeer { /** * The menu bar to display. Index: gnu/java/awt/peer/swing/SwingMenuBarPeer.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/swing/SwingMenuBarPeer.java,v retrieving revision 1.1 diff -u -1 -0 -r1.1 SwingMenuBarPeer.java --- gnu/java/awt/peer/swing/SwingMenuBarPeer.java 14 Jan 2006 00:26:26 -0000 1.1 +++ gnu/java/awt/peer/swing/SwingMenuBarPeer.java 10 May 2006 15:13:51 -0000 @@ -167,21 +167,21 @@ */ public void addMenu(Menu m) { SwingMenuPeer menuPeer = (SwingMenuPeer) m.getPeer(); menuBar.add(menuPeer.menu); } /** * Adds a help menu to the menu bar. * - * @param m the menu to add + * @param menu the menu to add */ public void addHelpMenu(Menu menu) { // FIXME: We should manage the help menu differently, so that it always // appears at the rightmost position. SwingMenuPeer menuPeer = (SwingMenuPeer) menu.getPeer(); menuBar.add(menuPeer.menu); } /** Index: gnu/java/awt/peer/swing/SwingTextFieldPeer.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/swing/SwingTextFieldPeer.java,v retrieving revision 1.1 diff -u -1 -0 -r1.1 SwingTextFieldPeer.java --- gnu/java/awt/peer/swing/SwingTextFieldPeer.java 14 Jan 2006 00:26:26 -0000 1.1 +++ gnu/java/awt/peer/swing/SwingTextFieldPeer.java 10 May 2006 15:13:51 -0000 @@ -276,21 +276,21 @@ { ((JTextField) swingComponent.getJComponent()).setText(text); } /** * Sets the current selection. * * @param startPos the start index of the selection * @param endPos the start index of the selection */ - public void select(int start_pos, int endPos) + public void select(int startPos, int endPos) { // TODO: Must be implemented. } /** * Sets the editable flag of the text field. * * @param editable <code>true</code> to make the textfield editable, * <code>false</code> to make it uneditable */ Index: gnu/java/awt/peer/swing/SwingWindowPeer.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/swing/SwingWindowPeer.java,v retrieving revision 1.1 diff -u -1 -0 -r1.1 SwingWindowPeer.java --- gnu/java/awt/peer/swing/SwingWindowPeer.java 14 Jan 2006 00:26:26 -0000 1.1 +++ gnu/java/awt/peer/swing/SwingWindowPeer.java 10 May 2006 15:13:51 -0000 @@ -41,23 +41,23 @@ import java.awt.peer.WindowPeer; /** * An abstract base class for Swing based WindowPeer implementation. Concrete * implementations of WindowPeers should subclass this class in order to get * the correct behaviour. * * As a minimum, a subclass must implement all the remaining abstract methods * as well as the following methods: * <ul> - * <li>[EMAIL PROTECTED] ComponentPeer#getLocationOnScreen()}</li> - * <li>[EMAIL PROTECTED] ComponentPeer#getGraphics()}</li> - * <li>[EMAIL PROTECTED] ComponentPeer#createImage(int, int)}</li> + * <li>[EMAIL PROTECTED] java.awt.peer.ComponentPeer#getLocationOnScreen()}</li> + * <li>[EMAIL PROTECTED] java.awt.peer.ComponentPeer#getGraphics()}</li> + * <li>[EMAIL PROTECTED] java.awt.peer.ComponentPeer#createImage(int, int)}</li> * </ul> * * @author Roman Kennke ([EMAIL PROTECTED]) */ public abstract class SwingWindowPeer extends SwingContainerPeer implements WindowPeer { /**