summaryrefslogtreecommitdiff
path: root/libjava/classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java')
-rw-r--r--libjava/classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java1136
1 files changed, 0 insertions, 1136 deletions
diff --git a/libjava/classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java b/libjava/classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java
deleted file mode 100644
index 8be95dcb724..00000000000
--- a/libjava/classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java
+++ /dev/null
@@ -1,1136 +0,0 @@
-/* SwingComponentPeer.java -- An abstract base class for Swing based peers
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.java.awt.peer.swing;
-
-import java.awt.AWTEvent;
-import java.awt.AWTException;
-import java.awt.BufferCapabilities;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Cursor;
-import java.awt.Dimension;
-import java.awt.EventQueue;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.GraphicsConfiguration;
-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.FocusEvent;
-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;
-import java.awt.image.ImageProducer;
-import java.awt.image.VolatileImage;
-import java.awt.peer.ComponentPeer;
-import java.awt.peer.ContainerPeer;
-import java.awt.peer.LightweightPeer;
-
-import javax.swing.JComponent;
-import javax.swing.RepaintManager;
-
-/**
- * The base class for Swing based component peers. This provides the basic
- * functionality needed for Swing based component peers. Many methods are
- * implemented to forward to the Swing component. Others however forward
- * to the component's parent and expect the toplevel component peer to provide
- * a real implementation of it. These are for example the key methods
- * {@link #getGraphics()} and {@link #createImage(int, int)}, as well as
- * {@link #getLocationOnScreen()}.
- *
- * This class also provides the necesary hooks into the Swing painting and
- * event handling system. In order to achieve this, it traps paint, mouse and
- * key events in {@link #handleEvent(AWTEvent)} and calls some special methods
- * ({@link #peerPaint(Graphics)}, {@link #handleKeyEvent(KeyEvent)},
- * {@link #handleMouseEvent(MouseEvent)} and
- * {@link #handleMouseMotionEvent(MouseEvent)}) that call the corresponding
- * Swing methods.
- *
- * @author Roman Kennke (kennke@aicas.com)
- */
-public class SwingComponentPeer
- implements ComponentPeer
-{
-
- /**
- * The AWT component for this peer.
- */
- protected Component awtComponent;
-
- /**
- * The Swing component for this peer.
- */
- protected SwingComponent swingComponent;
-
- /**
- * The font that is set for this peer.
- */
- protected Font peerFont;
-
- /**
- * The current repaint area.
- */
- protected Rectangle paintArea;
-
- /**
- * Creates a SwingComponentPeer instance. Subclasses are expected to call
- * this constructor and thereafter call {@link #init(Component, JComponent)}
- * 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.
- *
- * @param awtComp the AWT component for this peer
- * @param swingComp the Swing component for this peer
- */
- protected void init(Component awtComp, SwingComponent swingComp)
- {
- awtComponent = awtComp;
- swingComponent = swingComp;
- if (swingComponent != null)
- {
- JComponent c = swingComponent.getJComponent();
- if (c != null)
- {
- c.addNotify();
- RepaintManager.currentManager(c).setDoubleBufferingEnabled(false);
- System.setProperty("gnu.awt.swing.doublebuffering", "true");
- }
- }
-
- // Register this heavyweight component with the nearest heavyweight
- // container, so we get peerPaint() triggered by that container.
- if (! (this instanceof LightweightPeer))
- {
- Component comp = awtComponent;
- Container parent = comp.getParent();
- while (parent != null &&
- ! (parent.getPeer() instanceof SwingContainerPeer))
- {
- comp = parent;
- parent = comp.getParent();
- }
-
- // At this point we have the ancestor with a SwingContainerPeer
- // (or null peer).
- if (parent != null && parent.getPeer() instanceof SwingContainerPeer)
- {
- SwingContainerPeer p = (SwingContainerPeer) parent.getPeer();
- p.addHeavyweightDescendent(awtComponent);
- }
- }
- }
-
- /**
- * Returns the construction status of the specified image. This is called
- * by {@link Component#checkImage(Image, int, int, ImageObserver)}.
- *
- * @param img the image
- * @param width the width of the image
- * @param height the height of the image
- * @param ob the image observer to be notified of updates of the status
- *
- * @return a bitwise ORed set of ImageObserver flags
- */
- public int checkImage(Image img, int width, int height, ImageObserver ob)
- {
- return Toolkit.getDefaultToolkit().checkImage(img, width, height, ob);
- }
-
- /**
- * Creates an image by starting the specified image producer. This is called
- * by {@link Component#createImage(ImageProducer)}.
- *
- * @param prod the image producer to be used to create the image
- *
- * @return the created image
- */
- public Image createImage(ImageProducer prod)
- {
- Image image = Toolkit.getDefaultToolkit().createImage(prod);
- return image;
- }
-
- /**
- * Creates an empty image with the specified <code>width</code> and
- * <code>height</code>.
- *
- * This is implemented to let the parent component create the image. This
- * 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);
- }
-
- /**
- * Disables the component. This is called by {@link Component#disable()}.
- */
- public void disable()
- {
- if (swingComponent != null)
- swingComponent.getJComponent().setEnabled(false);
- }
-
- /**
- * Disposes the component peer. This should release all resources held by the
- * peer. This is called when the component is no longer in use.
- */
- public void dispose()
- {
- // Unregister this heavyweight component from the nearest heavyweight
- // container.
- if (! (this instanceof LightweightPeer))
- {
- Component comp = awtComponent;
- Container parent = comp.getParent();
- while (parent != null &&
- ! (parent.getPeer() instanceof SwingContainerPeer))
- {
- comp = parent;
- parent = comp.getParent();
- }
-
- // At this point we have the ancestor with a SwingContainerPeer
- // (or null peer).
- if (parent != null && parent.getPeer() instanceof SwingContainerPeer)
- {
- SwingContainerPeer p = (SwingContainerPeer) parent.getPeer();
- p.removeHeavyweightDescendent(awtComponent);
- }
- }
-
- awtComponent = null;
- swingComponent = null;
- }
-
- /**
- * Enables the component. This is called by {@link Component#enable()}.
- */
- public void enable()
- {
- if (swingComponent != null)
- swingComponent.getJComponent().setEnabled(true);
- }
-
- /**
- * Returns the color model of the component. This is currently not used.
- *
- * @return the color model of the component
- */
- public ColorModel getColorModel()
- {
- // FIXME: When this peer method will be used, we need to provide an
- // implementation of this, probably forwarding to the toplevel peer, like
- // in the other methods.
- return null;
- }
-
- /**
- * Returns the font metrics for the specified font. This is called by
- * {@link Component#getFontMetrics(Font)}.
- *
- * This is implemented to query the font metrics from the parent component.
- * This will eventually call the top-level component peer, which is then
- * expected to deliver a font metrics object.
- *
- * @param f the font for which to query the font metrics
- *
- * @return the font metrics for the specified font
- */
- public FontMetrics getFontMetrics(Font f)
- {
- Component parent = awtComponent.getParent();
- ComponentPeer parentPeer = parent.getPeer();
- return parentPeer.getFontMetrics(f);
- }
-
- /**
- * Returns a {@link Graphics} object suitable for drawing on this component.
- * This is called by {@link Component#getGraphics()}.
- *
- * This is implemented to query the graphics from the parent component and
- * adjust the clip and translation to match this component.
- * This will eventually call the top-level component peer, which is then
- * expected to deliver a graphics object.
- *
- * @return a graphics object suitable for drawing on this component
- */
- public Graphics getGraphics()
- {
- Component parent = awtComponent.getParent();
- Graphics g = parent.getGraphics();
- g.translate(awtComponent.getX(), awtComponent.getY());
- g.setClip(0, 0, awtComponent.getWidth(), awtComponent.getHeight());
- return g;
- }
-
- /**
- * Returns the location of this component in screen coordinates. This is
- * called by {@link Component#getLocationOnScreen()}.
- *
- * This is implemented to query the parent component peer for its screen
- * location and adds the offset of this component to it. This will eventually
- * call the top-level component's peer, which is then expected to provide
- * it's screen location.
- *
- * @return the location of this component in screen coordinates
- */
- public Point getLocationOnScreen()
- {
- Component parent = awtComponent.getParent();
- ComponentPeer parentPeer = parent.getPeer();
- Point location = parentPeer.getLocationOnScreen();
- location.x += awtComponent.getX();
- location.y += awtComponent.getY();
- return location;
- }
-
- /**
- * Returns the minimum size for the component. This is called by
- * {@link Component#getMinimumSize()}.
- *
- * This is implemented to return the Swing component's minimum size.
- *
- * @return the minimum size for the component
- */
- public Dimension getMinimumSize()
- {
- return minimumSize();
- }
-
- /**
- * Returns the preferred size for the component. This is called by
- * {@link Component#getPreferredSize()}.
- *
- * This is implemented to return the Swing component's preferred size.
- *
- * @return the preferred size for the component
- */
- public Dimension getPreferredSize()
- {
- return preferredSize();
- }
-
- /**
- * Returns the toolkit that created this peer.
- *
- * @return the toolkit that created this peer
- */
- public Toolkit getToolkit()
- {
- return Toolkit.getDefaultToolkit();
- }
-
- /**
- * Handles the given event. This is called from
- * {@link Component#dispatchEvent(AWTEvent)} to give the peer a chance to
- * react to events for the component.
- *
- * @param e the event
- */
- public void handleEvent(AWTEvent e)
- {
- switch (e.getID())
- {
- case PaintEvent.UPDATE:
- case PaintEvent.PAINT:
- if (awtComponent.isShowing())
- {
- Rectangle clip ;
- synchronized (this)
- {
- coalescePaintEvent((PaintEvent) e);
- assert paintArea != null;
- clip = paintArea;
- paintArea = null;
- }
- Graphics g = awtComponent.getGraphics();
- try
- {
- g.clipRect(clip.x, clip.y, clip.width, clip.height);
- peerPaint(g, e.getID() == PaintEvent.UPDATE);
- }
- finally
- {
- g.dispose();
- }
- }
- break;
- case MouseEvent.MOUSE_PRESSED:
- case MouseEvent.MOUSE_RELEASED:
- case MouseEvent.MOUSE_CLICKED:
- case MouseEvent.MOUSE_ENTERED:
- case MouseEvent.MOUSE_EXITED:
- handleMouseEvent((MouseEvent) e);
- break;
- case MouseEvent.MOUSE_MOVED:
- case MouseEvent.MOUSE_DRAGGED:
- handleMouseMotionEvent((MouseEvent) e);
- break;
- case KeyEvent.KEY_PRESSED:
- case KeyEvent.KEY_RELEASED:
- case KeyEvent.KEY_TYPED:
- handleKeyEvent((KeyEvent) e);
- break;
- case FocusEvent.FOCUS_GAINED:
- case FocusEvent.FOCUS_LOST:
- handleFocusEvent((FocusEvent)e);
- break;
- default:
- // Other event types are not handled here.
- break;
- }
- }
-
- /**
- * Makes the component invisible. This is called from
- * {@link Component#hide()}.
- *
- * This is implemented to call setVisible(false) on the Swing component.
- */
- public void hide()
- {
- if (swingComponent != null)
- swingComponent.getJComponent().setVisible(false);
-
- Component parent = awtComponent.getParent();
- if (parent != null)
- parent.repaint(awtComponent.getX(), awtComponent.getY(),
- awtComponent.getWidth(), awtComponent.getHeight());
- }
-
- /**
- * Returns <code>true</code> if the component can receive keyboard input
- * focus. This is called from {@link Component#isFocusTraversable()}.
- *
- * This is implemented to return isFocusable() from the Swing component.
- *
- * @specnote Part of the earlier 1.1 API, replaced by isFocusable().
- */
- public boolean isFocusTraversable()
- {
- return swingComponent != null ?
- swingComponent.getJComponent().isFocusable() : false;
- }
-
- /**
- * Returns <code>true</code> if the component can receive keyboard input
- * focus. This is called from {@link Component#isFocusable()}.
- *
- * This is implemented to return isFocusable() from the Swing component.
- */
- public boolean isFocusable()
- {
- return swingComponent != null ?
- swingComponent.getJComponent().isFocusable() : false;
- }
-
- /**
- * Returns the minimum size for the component. This is called by
- * {@link Component#minimumSize()}.
- *
- * This is implemented to return the Swing component's minimum size.
- *
- * @return the minimum size for the component
- */
- public Dimension minimumSize()
- {
- Dimension retVal;
- if (swingComponent != null)
- retVal = swingComponent.getJComponent().getMinimumSize();
- else
- retVal = new Dimension(0, 0);
- return retVal;
- }
-
- /**
- * Returns the preferred size for the component. This is called by
- * {@link Component#getPreferredSize()}.
- *
- * This is implemented to return the Swing component's preferred size.
- *
- * @return the preferred size for the component
- */
- public Dimension preferredSize()
- {
- Dimension retVal;
- if (swingComponent != null)
- retVal = swingComponent.getJComponent().getPreferredSize();
- else
- retVal = new Dimension(0, 0);
- return retVal;
- }
-
- /**
- * Paints the component. This is triggered by
- * {@link Component#paintAll(Graphics)}.
- *
- * @param graphics the graphics to paint with
- */
- public void paint(Graphics graphics)
- {
- peerPaint(graphics, false);
- }
-
- /**
- * Prepares an image for rendering on this component. This is called by
- * {@link 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 boolean prepareImage(Image img, int width, int height, ImageObserver ob)
- {
- Component parent = awtComponent.getParent();
- if(parent != null)
- {
- ComponentPeer parentPeer = parent.getPeer();
- return parentPeer.prepareImage(img, width, height, ob);
- }
- else
- {
- return Toolkit.getDefaultToolkit().prepareImage(img, width, height, ob);
- }
- }
-
- 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
- * {@link Component#repaint(long, int, int, int, int)}.
- *
- * This is implemented to call repaint() on the Swing component.
- *
- * @param tm number of milliseconds to wait with repainting
- * @param x the X coordinate of the upper left corner of the damaged
- * rectangle
- * @param y the Y coordinate of the upper left corner of the damaged
- * rectangle
- * @param width the width of the damaged rectangle
- * @param height the height of the damaged rectangle
- */
- public void repaint(long tm, int x, int y, int width, int height)
- {
- // NOTE: This is never called by AWT but is mandated by the peer interface.
- if (swingComponent != null)
- swingComponent.getJComponent().repaint(tm, x, y, width, height);
- else
- {
- PaintEvent ev = new PaintEvent(awtComponent, PaintEvent.UPDATE,
- new Rectangle(x, y, width, height));
- Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(ev);
- }
- }
-
- /**
- * Requests that this component receives the focus. This is called from
- * {@link Component#requestFocus()}.
- *
- * This calls requestFocus() on the Swing component.
- *
- * @specnote Part of the earlier 1.1 API, apparently replaced by argument
- * form of the same method.
- */
- public void requestFocus()
- {
- // NOTE: This is never called by AWT but is mandated by the peer interface.
- Toolkit tk = Toolkit.getDefaultToolkit();
- EventQueue q = tk.getSystemEventQueue();
- q.postEvent(new FocusEvent(awtComponent, FocusEvent.FOCUS_GAINED, false));
- }
-
- /**
- * Requests that this component receives the focus. This is called from
- * {@link Component#requestFocus()}.
- *
- * This calls requestFocus() on the Swing component.
- *
- * @param source the actual component that requests focus (may be a
- * lightweight descendant of the heavyweight container)
- * @param tmp true when the change is temporary
- * @param allowWindowFocus
- * @param tm the timestamp of the focus change
- *
- * @return true when the focus change is guaranteed to be granted, false
- * otherwise
- */
- public boolean requestFocus(Component source, boolean tmp,
- boolean allowWindowFocus, long tm)
- {
- Toolkit tk = Toolkit.getDefaultToolkit();
- EventQueue q = tk.getSystemEventQueue();
- q.postEvent(new FocusEvent(source, FocusEvent.FOCUS_GAINED, tmp));
- return true;
- }
-
- /**
- * Notifies the peer that the bounds of this component have changed. This
- * is called by {@link Component#reshape(int, int, int, int)}.
- *
- * This is implemented to call setBounds() on the Swing component.
- *
- * @param x the X coordinate of the upper left corner of the component
- * @param y the Y coordinate of the upper left corner of the component
- * @param width the width of the component
- * @param height the height of the component
- */
- public void reshape(int x, int y, int width, int height)
- {
- if (swingComponent != null)
- swingComponent.getJComponent().setBounds(x, y, width, height);
- }
-
- /**
- * Sets the background color of the component. This is called by
- * {@link Component#setBackground(Color)}.
- *
- * This is implemented to call setBackground() on the Swing component.
- *
- * @param color the background color to set
- */
- public void setBackground(Color color)
- {
- if (swingComponent != null)
- swingComponent.getJComponent().setBackground(color);
- }
-
- /**
- * Notifies the peer that the bounds of this component have changed. This
- * is called by {@link Component#setBounds(int, int, int, int)}.
- *
- * This is implemented to call setBounds() on the Swing component.
- *
- * @param x the X coordinate of the upper left corner of the component
- * @param y the Y coordinate of the upper left corner of the component
- * @param width the width of the component
- * @param height the height of the component
- */
- public void setBounds(int x, int y, int width, int height)
- {
- reshape(x, y, width, height);
- }
-
- /**
- * Sets the cursor of the component. This is called by
- * {@link Component#setCursor(Cursor)}.
- *
- * This is implemented to call setCursor() on the Swing component.
- *
- * @specnote Part of the earlier 1.1 API, apparently no longer needed.
- */
- public void setCursor(Cursor cursor)
- {
- if (swingComponent != null)
- swingComponent.getJComponent().setCursor(cursor);
- }
-
- /**
- * Sets the enabled/disabled state of this component. This is called by
- * {@link Component#setEnabled(boolean)}.
- *
- * This is implemented to call setEnabled() on the Swing component.
- *
- * @param enabled <code>true</code> to enable the component,
- * <code>false</code> to disable it
- */
- public void setEnabled(boolean enabled)
- {
- if (swingComponent != null)
- swingComponent.getJComponent().setEnabled(enabled);
- }
-
- /**
- * Sets the font of the component. This is called by
- * {@link Component#setFont(Font)}.
- *
- * This is implemented to call setFont() on the Swing component.
- *
- * @param font the font to set
- */
- public void setFont(Font font)
- {
- peerFont = font;
- if (swingComponent != null)
- swingComponent.getJComponent().setFont(font);
- }
-
- /**
- * Sets the foreground color of the component. This is called by
- * {@link Component#setForeground(Color)}.
- *
- * This is implemented to call setForeground() on the Swing component.
- *
- * @param color the foreground color to set
- */
- public void setForeground(Color color)
- {
- if (swingComponent != null)
- swingComponent.getJComponent().setForeground(color);
- }
-
- /**
- * Sets the visibility state of the component. This is called by
- * {@link Component#setVisible(boolean)}.
- *
- * This is implemented to call setVisible() on the Swing component.
- *
- * @param visible <code>true</code> to make the component visible,
- * <code>false</code> to make it invisible
- */
- public void setVisible(boolean visible)
- {
- if (visible)
- show();
- else
- hide();
- }
-
- /**
- * Makes the component visible. This is called by {@link Component#show()}.
- *
- * This is implemented to call setVisible(true) on the Swing component.
- */
- public void show()
- {
- if (swingComponent != null)
- swingComponent.getJComponent().setVisible(true);
- }
-
- /**
- * Get the graphics configuration of the component. The color model
- * of the component can be derived from the configuration.
- *
- * This is implemented to return the GraphicsConfiguration of the parent
- * component. This will eventually call the toplevel component peer, which
- * is expected to provide a real implementation.
- *
- * @return the graphics configuration of the component
- */
- public GraphicsConfiguration getGraphicsConfiguration()
- {
- Component parent = awtComponent.getParent();
- ComponentPeer parentPeer = parent.getPeer();
- return parentPeer.getGraphicsConfiguration();
- }
-
- /**
- * Part of an older API, no longer needed.
- */
- public void setEventMask(long mask)
- {
- // Nothing to do here.
- }
-
- /**
- * Returns <code>true</code> if this component has been obscured,
- * <code>false</code> otherwise. This will only work if
- * {@link #canDetermineObscurity()} also returns <code>true</code>.
- *
- * This is not yet implemented.
- *
- * @return <code>true</code> if this component has been obscured,
- * <code>false</code> otherwise.
- */
- public boolean isObscured()
- {
- return false;
- }
-
- /**
- * Returns <code>true</code> if this component peer can determine if the
- * component has been obscured, <code>false</code> otherwise.
- *
- * This is not yet implemented.
- *
- * @return <code>true</code> if this component peer can determine if the
- * component has been obscured, <code>false</code> otherwise
- */
- public boolean canDetermineObscurity()
- {
- return false;
- }
-
- /**
- * Coalesces the specified paint event.
- *
- * @param e the paint event
- */
- public void coalescePaintEvent(PaintEvent e)
- {
- synchronized (this)
- {
- Rectangle newRect = e.getUpdateRect();
- if (paintArea == null)
- paintArea = newRect;
- else
- Rectangle.union(paintArea, newRect, paintArea);
- }
- }
-
- /**
- * Updates the cursor. This is not yet implemented.
- */
- public void updateCursorImmediately()
- {
- // Nothing to do here yet.
- }
-
- /**
- * Returns true, if this component can handle wheel scrolling,
- * <code>false</code> otherwise.
- *
- * This is not yet implemented and returns <code>false</code>.
- *
- * @return true, if this component can handle wheel scrolling,
- * <code>false</code> otherwise
- */
- public boolean handlesWheelScrolling()
- {
- return false;
- }
-
- /**
- * A convenience method that creates a volatile image. The volatile
- * image is created on the screen device on which this component is
- * displayed, in the device's current graphics configuration.
- *
- * This is implemented to let the parent component peer create an image.
- * This eventually ends up in the toplevel component peer, which is then
- * responsible for creating the real image.
- *
- * @param width width of the image
- * @param height height of the image
- *
- * @see VolatileImage
- *
- * @since 1.2
- */
- public VolatileImage createVolatileImage(int width, int height)
- {
- Component parent = awtComponent.getParent();
- VolatileImage im = null;
- if (parent != null)
- {
- ComponentPeer parentPeer = parent.getPeer();
- im = parentPeer.createVolatileImage(width, height);
- }
- return im;
- }
-
- /**
- * Create a number of image buffers that implement a buffering
- * strategy according to the given capabilities.
- *
- * This is implemented to forward to the parent component peer. Eventually
- * this ends up in the top level component peer, which is then responsible
- * for doing the real work.
- *
- * @param numBuffers the number of buffers
- * @param caps the buffering capabilities
- *
- * @throws AWTException if the specified buffering strategy is not
- * implemented
- *
- * @since 1.2
- */
- public void createBuffers(int numBuffers, BufferCapabilities caps) throws AWTException
- {
- Component parent = awtComponent.getParent();
- ComponentPeer parentPeer = parent.getPeer();
- parentPeer.createBuffers(numBuffers, caps);
- }
-
- /**
- * Return the back buffer of this component.
- *
- * This is implemented to forward to the parent. Eventually this ends
- * up in the toplevel component, which is then responsible for providing
- * a back buffer.
- *
- * @return the back buffer of this component.
- *
- * @since 1.2
- */
- public Image getBackBuffer()
- {
- Component parent = awtComponent.getParent();
- ComponentPeer parentPeer = parent.getPeer();
- return parentPeer.getBackBuffer();
- }
-
- /**
- * Perform a page flip, leaving the contents of the back buffer in
- * the specified state.
- *
- * This is implemented to forward to the parent. Eventually this ends
- * up in the toplevel component, which is then responsible for doing the real
- * work.
- *
- * @param contents the state in which to leave the back buffer
- *
- * @since 1.2
- */
- public void flip(FlipContents contents)
- {
- Component parent = awtComponent.getParent();
- ComponentPeer parentPeer = parent.getPeer();
- parentPeer.flip(contents);
- }
-
- /**
- * Destroy the resources created by createBuffers.
- *
- * This is implemented to forward to the parent component peer. Eventually
- * this ends up in the top level component peer, which is then responsible
- * for doing the real work.
- *
- * @since 1.2
- */
- public void destroyBuffers()
- {
- Component parent = awtComponent.getParent();
- ComponentPeer parentPeer = parent.getPeer();
- parentPeer.destroyBuffers();
- }
-
- /**
- * Get the bounds of this component peer.
- *
- * This is implemented to forward to the Swing component.
- *
- * @return component peer bounds
- * @since 1.5
- */
- public Rectangle getBounds()
- {
- Rectangle retVal;
- if (swingComponent != null)
- retVal = swingComponent.getJComponent().getBounds();
- else
- retVal = new Rectangle();
- return retVal;
- }
-
- /**
- * Reparent this component under another container.
- *
- * @param parent
- * @since 1.5
- */
- public void reparent(ContainerPeer parent)
- {
- // Nothing to do here.
- }
-
- /**
- * Set the bounds of this component peer.
- *
- * This is implemented to forward to the swing component.
- *
- * @param x the new x co-ordinate
- * @param y the new y co-ordinate
- * @param width the new width
- * @param height the new height
- * @param z the new stacking level
- * @since 1.5
- */
- public void setBounds(int x, int y, int width, int height, int z)
- {
- if (swingComponent != null)
- swingComponent.getJComponent().setBounds(x, y, width, height);
- // FIXME: Somehow handle the Z order.
- }
-
- /**
- * Check if this component supports being reparented.
- *
- * @return true if this component can be reparented,
- * false otherwise.
- * @since 1.5
- */
- public boolean isReparentSupported()
- {
- return true;
- }
-
-
- /**
- * Layout this component peer.
- *
- * @since 1.5
- */
- public void layout()
- {
- if (swingComponent != null)
- swingComponent.getJComponent().doLayout();
- }
-
- /**
- * Triggers 'heavyweight' painting of the components. This usually calls
- * paint() on the Swing component.
- *
- * @param g the graphics context to use for painting
- * @param update wether we need to call update or paint on the AWT component
- */
- protected void peerPaint(Graphics g, boolean update)
- {
- peerPaintComponent(g);
-
- Graphics userGraphics = g.create();
- try{
- if (update)
- awtComponent.update(userGraphics);
- else
- awtComponent.paint(userGraphics);
- } finally {
- userGraphics.dispose();
- }
-
- }
-
- /**
- * Paints the actual 'heavyweight' swing component, if there is one
- * associated to this peer.
- *
- * @param g the graphics to paint the component with
- */
- protected void peerPaintComponent(Graphics g)
- {
- // Paint the actual Swing component if this peer has one.
- if (swingComponent != null)
- swingComponent.getJComponent().paint(g);
- }
-
- /**
- * Handles mouse events on the component. This is usually forwarded to the
- * SwingComponent's processMouseEvent() method.
- *
- * @param e the mouse event
- */
- protected void handleMouseEvent(MouseEvent e)
- {
- if (swingComponent != null)
- swingComponent.handleMouseEvent(e);
- }
-
- /**
- * Handles mouse motion events on the component. This is usually forwarded
- * to the SwingComponent's processMouseMotionEvent() method.
- *
- * @param e the mouse motion event
- */
- protected void handleMouseMotionEvent(MouseEvent e)
- {
- if (swingComponent != null)
- swingComponent.handleMouseMotionEvent(e);
- }
-
- /**
- * Handles key events on the component. This is usually forwarded to the
- * SwingComponent's processKeyEvent() method.
- *
- * @param e the key event
- */
- protected void handleKeyEvent(KeyEvent e)
- {
- if (swingComponent != null)
- swingComponent.handleKeyEvent(e);
- }
-
- /**
- * Handles focus events on the component. This is usually forwarded to the
- * SwingComponent's processFocusEvent() method.
- *
- * @param e the key event
- */
- protected void handleFocusEvent(FocusEvent e)
- {
- if (swingComponent != null)
- swingComponent.handleFocusEvent(e);
- }
-
-
- /**
- * Returns the AWT component for this peer.
- *
- * @return the AWT component for this peer
- */
- public Component getComponent()
- {
- return awtComponent;
- }
-
- public boolean requestFocus(Component lightweightChild, boolean temporary,
- boolean focusedWindowChangeAllowed,
- long time, sun.awt.CausedFocusEvent.Cause cause)
- {
- return true;
- }
-
-}