|
From: <ls...@us...> - 2008-07-17 10:45:57
|
Revision: 4306
http://jnode.svn.sourceforge.net/jnode/?rev=4306&view=rev
Author: lsantha
Date: 2008-07-17 10:45:28 +0000 (Thu, 17 Jul 2008)
Log Message:
-----------
Integrated java.awt.Toolkit from OpenJDK.
Added Paths:
-----------
trunk/core/src/openjdk/java/java/awt/Toolkit.java
Removed Paths:
-------------
trunk/core/src/classpath/java/java/awt/Toolkit.java
Deleted: trunk/core/src/classpath/java/java/awt/Toolkit.java
===================================================================
--- trunk/core/src/classpath/java/java/awt/Toolkit.java 2008-07-17 10:15:31 UTC (rev 4305)
+++ trunk/core/src/classpath/java/java/awt/Toolkit.java 2008-07-17 10:45:28 UTC (rev 4306)
@@ -1,1535 +0,0 @@
-/* Toolkit.java -- AWT Toolkit superclass
- Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 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 java.awt;
-
-import gnu.classpath.SystemProperties;
-import gnu.java.awt.AWTUtilities;
-import gnu.java.awt.peer.GLightweightPeer;
-import gnu.java.awt.peer.headless.HeadlessToolkit;
-
-import java.awt.datatransfer.Clipboard;
-import java.awt.dnd.DragGestureEvent;
-import java.awt.dnd.DragGestureListener;
-import java.awt.dnd.DragGestureRecognizer;
-import java.awt.dnd.DragSource;
-import java.awt.dnd.peer.DragSourceContextPeer;
-import java.awt.event.AWTEventListener;
-import java.awt.event.AWTEventListenerProxy;
-import java.awt.event.KeyEvent;
-import java.awt.font.TextAttribute;
-import java.awt.im.InputMethodHighlight;
-import java.awt.image.ColorModel;
-import java.awt.image.ImageObserver;
-import java.awt.image.ImageProducer;
-import java.awt.peer.ButtonPeer;
-import java.awt.peer.CanvasPeer;
-import java.awt.peer.CheckboxMenuItemPeer;
-import java.awt.peer.CheckboxPeer;
-import java.awt.peer.ChoicePeer;
-import java.awt.peer.DialogPeer;
-import java.awt.peer.FileDialogPeer;
-import java.awt.peer.FontPeer;
-import java.awt.peer.FramePeer;
-import java.awt.peer.LabelPeer;
-import java.awt.peer.LightweightPeer;
-import java.awt.peer.ListPeer;
-import java.awt.peer.MenuBarPeer;
-import java.awt.peer.MenuItemPeer;
-import java.awt.peer.MenuPeer;
-import java.awt.peer.MouseInfoPeer;
-import java.awt.peer.PanelPeer;
-import java.awt.peer.PopupMenuPeer;
-import java.awt.peer.ScrollPanePeer;
-import java.awt.peer.ScrollbarPeer;
-import java.awt.peer.TextAreaPeer;
-import java.awt.peer.TextFieldPeer;
-import java.awt.peer.WindowPeer;
-import java.awt.peer.DesktopPeer;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-import java.io.File;
-import java.io.FileInputStream;
-import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.Map;
-import java.util.Properties;
-import java.util.StringTokenizer;
-import org.jnode.vm.annotation.SharedStatics;
-
-/**
- * The AWT system uses a set of native peer objects to implement its
- * widgets. These peers are provided by a peer toolkit, that is accessed
- * via a subclass of this superclass. The system toolkit is retrieved
- * by the static methods <code>getDefaultToolkit</code>. This method
- * determines the system toolkit by examining the system property
- * <code>awt.toolkit</code>. That property is set to the name of the
- * <code>Toolkit</code> subclass for the specified peer set. If the
- * <code>awt.toolkit</code> property is not set, then the default
- * toolkit <code>gnu.java.awt.peer.gtk.GtkToolkit</code> is used. This
- * toolkit creates its peers using the GTK+ toolkit.
- *
- * @author Aaron M. Renn (ar...@ur...)
- */
-@SharedStatics
-public abstract class Toolkit
-{
- /** The default toolkit name. */
- private static String default_toolkit_name
- = gnu.classpath.Configuration.default_awt_peer_toolkit;
-
- /**
- * The toolkit in use. Once we load it, we don't ever change it
- * if the awt.toolkit property is set.
- */
- private static Toolkit toolkit;
-
- /** The toolkit properties. */
- private static Properties props = new Properties();
-
- protected final Map<String,Object> desktopProperties =
- new Hashtable<String,Object>();
-
- protected final PropertyChangeSupport desktopPropsSupport
- = new PropertyChangeSupport(this);
-
- /**
- * All registered AWTEventListener objects. This is package private, so the
- * event queue can efficiently access this list.
- */
- AWTEventListenerProxy[] awtEventListeners;
-
- /**
- * The shared peer for all lightweight components.
- */
- private GLightweightPeer lightweightPeer;
-
- /**
- * Default constructor for subclasses.
- */
- public Toolkit()
- {
- awtEventListeners = new AWTEventListenerProxy[0];
- }
-
- /**
- * Creates a peer object for the specified <code>Button</code>.
- *
- * @param target The <code>Button</code> to create the peer for.
- *
- * @return The peer for the specified <code>Button</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract ButtonPeer createButton(Button target);
-
- /**
- * Creates a peer object for the specified <code>TextField</code>.
- *
- * @param target The <code>TextField</code> to create the peer for.
- *
- * @return The peer for the specified <code>TextField</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract TextFieldPeer createTextField(TextField target);
-
- /**
- * Creates a peer object for the specified <code>Label</code>.
- *
- * @param target The <code>Label</code> to create the peer for.
- *
- * @return The peer for the specified <code>Label</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract LabelPeer createLabel(Label target);
-
- /**
- * Creates a peer object for the specified <code>List</code>.
- *
- * @param target The <code>List</code> to create the peer for.
- *
- * @return The peer for the specified <code>List</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract ListPeer createList(List target);
-
- /**
- * Creates a peer object for the specified <code>Checkbox</code>.
- *
- * @param target The <code>Checkbox</code> to create the peer for.
- *
- * @return The peer for the specified <code>Checkbox</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract CheckboxPeer createCheckbox(Checkbox target);
-
- /**
- * Creates a peer object for the specified <code>Scrollbar</code>.
- *
- * @param target The <code>Scrollbar</code> to create the peer for.
- *
- * @return The peer for the specified <code>Scrollbar</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract ScrollbarPeer createScrollbar(Scrollbar target);
-
- /**
- * Creates a peer object for the specified <code>ScrollPane</code>.
- *
- * @param target The <code>ScrollPane</code> to create the peer for.
- *
- * @return The peer for the specified <code>ScrollPane</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract ScrollPanePeer createScrollPane(ScrollPane target);
-
- /**
- * Creates a peer object for the specified <code>TextArea</code>.
- *
- * @param target The <code>TextArea</code> to create the peer for.
- *
- * @return The peer for the specified <code>TextArea</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract TextAreaPeer createTextArea(TextArea target);
-
- /**
- * Creates a peer object for the specified <code>Choice</code>.
- *
- * @param target The <code>Choice</code> to create the peer for.
- *
- * @return The peer for the specified <code>Choice</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract ChoicePeer createChoice(Choice target);
-
- /**
- * Creates a peer object for the specified <code>Frame</code>.
- *
- * @param target The <code>Frame</code> to create the peer for.
- *
- * @return The peer for the specified <code>Frame</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract FramePeer createFrame(Frame target);
-
- /**
- * Creates a peer object for the specified <code>Canvas</code>.
- *
- * @param target The <code>Canvas</code> to create the peer for.
- *
- * @return The peer for the specified <code>Canvas</code> object.
- */
- protected abstract CanvasPeer createCanvas(Canvas target);
-
- /**
- * Creates a peer object for the specified <code>Panel</code>.
- *
- * @param target The <code>Panel</code> to create the peer for.
- *
- * @return The peer for the specified <code>Panel</code> object.
- */
- protected abstract PanelPeer createPanel(Panel target);
-
- /**
- * Creates a peer object for the specified <code>Window</code>.
- *
- * @param target The <code>Window</code> to create the peer for.
- *
- * @return The peer for the specified <code>Window</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract WindowPeer createWindow(Window target);
-
- /**
- * Creates a peer object for the specified <code>Dialog</code>.
- *
- * @param target The dialog to create the peer for
- *
- * @return The peer for the specified font name.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract DialogPeer createDialog(Dialog target);
-
- /**
- * Creates a peer object for the specified <code>MenuBar</code>.
- *
- * @param target The <code>MenuBar</code> to create the peer for.
- *
- * @return The peer for the specified <code>MenuBar</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract MenuBarPeer createMenuBar(MenuBar target);
-
- /**
- * Creates a peer object for the specified <code>Menu</code>.
- *
- * @param target The <code>Menu</code> to create the peer for.
- *
- * @return The peer for the specified <code>Menu</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract MenuPeer createMenu(Menu target);
-
- /**
- * Creates a peer object for the specified <code>PopupMenu</code>.
- *
- * @param target The <code>PopupMenu</code> to create the peer for.
- *
- * @return The peer for the specified <code>PopupMenu</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract PopupMenuPeer createPopupMenu(PopupMenu target);
-
- /**
- * Creates a peer object for the specified <code>MenuItem</code>.
- *
- * @param target The <code>MenuItem</code> to create the peer for.
- *
- * @return The peer for the specified <code>MenuItem</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract MenuItemPeer createMenuItem(MenuItem target);
-
- /**
- * Returns a MouseInfoPeer.
- * The default implementation of this method throws
- * UnsupportedOperationException.
- *
- * Toolkit implementations should overload this if possible, however.
- */
- protected MouseInfoPeer getMouseInfoPeer()
- {
- throw new UnsupportedOperationException("No mouse info peer.");
- }
-
- /**
- * Creates a peer object for the specified <code>FileDialog</code>.
- *
- * @param target The <code>FileDialog</code> to create the peer for.
- *
- * @return The peer for the specified <code>FileDialog</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract FileDialogPeer createFileDialog(FileDialog target);
-
- /**
- * Creates a peer object for the specified <code>CheckboxMenuItem</code>.
- *
- * @param target The <code>CheckboxMenuItem</code> to create the peer for.
- *
- * @return The peer for the specified <code>CheckboxMenuItem</code> object.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected abstract CheckboxMenuItemPeer
- createCheckboxMenuItem(CheckboxMenuItem target);
-
- /**
- * Creates a peer object for the specified <code>Component</code>. The
- * peer returned by this method is not a native windowing system peer
- * with its own native window. Instead, this method allows the component
- * to draw on its parent window as a "lightweight" widget.
- *
- * @param target The <code>Component</code> to create the peer for.
- *
- * @return The peer for the specified <code>Component</code> object.
- */
- protected LightweightPeer createComponent(Component target)
- {
- if (lightweightPeer == null)
- lightweightPeer = new GLightweightPeer();
- return lightweightPeer;
- }
-
- /**
- * Creates a peer object for the specified font name.
- *
- * @param name The font to create the peer for.
- * @param style The font style to create the peer for.
- *
- * @return The peer for the specified font name.
- *
- * @deprecated
- */
- protected abstract FontPeer getFontPeer(String name, int style);
-
- /**
- * Copies the current system colors into the specified array. This is
- * the interface used by the <code>SystemColor</code> class. Although
- * this method fills in the array with some default colors a real Toolkit
- * should override this method and provide real system colors for the
- * native GUI platform.
- *
- * @param systemColors The array to copy the system colors into.
- * It must be at least 26 elements.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- *
- * @see java.awt.SystemColor
- */
- protected void loadSystemColors(int systemColors[])
- {
- systemColors[SystemColor.DESKTOP] = 0xFF005C5C;
- systemColors[SystemColor.ACTIVE_CAPTION] = 0xFF000080;
- systemColors[SystemColor.ACTIVE_CAPTION_TEXT] = 0xFFFFFFFF;
- systemColors[SystemColor.ACTIVE_CAPTION_BORDER] = 0xFFC0C0C0;
- systemColors[SystemColor.INACTIVE_CAPTION] = 0xFF808080;
- systemColors[SystemColor.INACTIVE_CAPTION_TEXT] = 0xFFC0C0C0;
- systemColors[SystemColor.INACTIVE_CAPTION_BORDER] = 0xFFC0C0C0;
- systemColors[SystemColor.WINDOW] = 0xFFFFFFFF;
- systemColors[SystemColor.WINDOW_BORDER] = 0xFF000000;
- systemColors[SystemColor.WINDOW_TEXT] = 0xFF000000;
- systemColors[SystemColor.MENU] = 0xFFC0C0C0;
- systemColors[SystemColor.MENU_TEXT] = 0xFF000000;
- systemColors[SystemColor.TEXT] = 0xFFC0C0C0;
- systemColors[SystemColor.TEXT_TEXT] = 0xFF000000;
- systemColors[SystemColor.TEXT_HIGHLIGHT] = 0xFF000090;
- systemColors[SystemColor.TEXT_HIGHLIGHT_TEXT] = 0xFFFFFFFF;
- systemColors[SystemColor.TEXT_INACTIVE_TEXT] = 0xFF808080;
- systemColors[SystemColor.CONTROL] = 0xFFC0C0C0;
- systemColors[SystemColor.CONTROL_TEXT] = 0xFF000000;
- systemColors[SystemColor.CONTROL_HIGHLIGHT] = 0xFFFFFFFF;
- systemColors[SystemColor.CONTROL_LT_HIGHLIGHT] = 0xFFE0E0E0;
- systemColors[SystemColor.CONTROL_SHADOW] = 0xFF808080;
- systemColors[SystemColor.CONTROL_DK_SHADOW] = 0xFF000000;
- systemColors[SystemColor.SCROLLBAR] = 0xFFE0E0E0;
- systemColors[SystemColor.INFO] = 0xFFE0E000;
- systemColors[SystemColor.INFO_TEXT] = 0xFF000000;
- }
-
- /**
- * @since 1.4
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- public void setDynamicLayout(boolean dynamic)
- {
- }
-
- /**
- * @since 1.4
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- protected boolean isDynamicLayoutSet()
- {
- return false;
- }
-
- /**
- * @since 1.4
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- public boolean isDynamicLayoutActive()
- {
- return false;
- }
-
- /**
- * Returns the dimensions of the screen in pixels.
- *
- * @return The dimensions of the screen in pixels.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- public abstract Dimension getScreenSize();
-
- /**
- * Returns the screen resolution in dots per square inch.
- *
- * @return The screen resolution in dots per square inch.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- public abstract int getScreenResolution();
-
- /**
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- *
- * @since 1.4
- */
- public Insets getScreenInsets(GraphicsConfiguration gc)
- {
- return new Insets(0, 0, 0, 0);
- }
-
- /**
- * Returns the color model of the screen.
- *
- * @return The color model of the screen.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- public abstract ColorModel getColorModel();
-
- /**
- * Returns the names of the available fonts.
- *
- * @return The names of the available fonts.
- *
- * @deprecated
- */
- public abstract String[] getFontList();
-
- /**
- * Return the font metrics for the specified font
- *
- * @param name The name of the font to return metrics for.
- *
- * @return The requested font metrics.
- *
- * @deprecated
- */
- public abstract FontMetrics getFontMetrics(Font name);
-
- /**
- * Flushes any buffered data to the screen so that it is in sync with
- * what the AWT system has drawn to it.
- */
- public abstract void sync();
-
- /**
- * Returns an instance of the default toolkit. The default toolkit is
- * the subclass of <code>Toolkit</code> specified in the system property
- * <code>awt.toolkit</code>, or <code>gnu.java.awt.peer.gtk.GtkToolkit</code>
- * if the property is not set.
- *
- * @return An instance of the system default toolkit.
- *
- * @throws AWTError If the toolkit cannot be loaded.
- */
- public static synchronized Toolkit getDefaultToolkit()
- {
- if (toolkit != null)
- return toolkit;
-
- String toolkit_name = SystemProperties.getProperty("awt.toolkit",
- default_toolkit_name);
- try
- {
- // @classpath-bugfix-22969 Replace Class.forName
- //Class cls = Class.forName(toolkit_name);
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- Class cls = cl.loadClass(toolkit_name);
- // @classpath-bugfix-end
- Object obj = cls.newInstance();
- if (!(obj instanceof Toolkit))
- throw new AWTError(toolkit_name + " is not a subclass of " +
- "java.awt.Toolkit");
- toolkit = (Toolkit) obj;
-
- initAccessibility();
- return toolkit;
- }
- catch (ThreadDeath death)
- {
- throw death;
- }
- catch (Throwable t)
- {
- // Check for the headless property.
- if (GraphicsEnvironment.isHeadless())
- {
- toolkit = new HeadlessToolkit();
- return toolkit;
- }
- else
- {
- AWTError e = new AWTError("Cannot load AWT toolkit: "
- + toolkit_name);
- throw (AWTError) e.initCause(t);
- }
- }
- }
-
- // @classpath-bugfix
- /**
- * Flush a previously instantiate toolkit.
- */
- protected static void clearDefaultToolkit() {
- toolkit = null;
- }
- // @classpath-bugfix-end
-
- /**
- * Returns an image from the specified file, which must be in a
- * recognized format. Supported formats vary from toolkit to toolkit.
- *
- * @return name The name of the file to read the image from.
- */
- public abstract Image getImage(String name);
-
- /**
- * Returns an image from the specified URL, which must be in a
- * recognized format. Supported formats vary from toolkit to toolkit.
- *
- * @return url The URl to read the image from.
- */
- public abstract Image getImage(URL url);
-
- public abstract Image createImage(String filename);
-
- public abstract Image createImage(URL url);
-
- /**
- * Readies an image to be rendered on the screen. The width and height
- * values can be set to the default sizes for the image by passing -1
- * in those parameters.
- *
- * @param image The image to prepare for rendering.
- * @param width The width of the image.
- * @param height The height of the image.
- * @param observer The observer to receive events about the preparation
- * process.
- *
- * @return <code>true</code> if the image is already prepared for rendering,
- * <code>false</code> otherwise.
- */
- public abstract boolean prepareImage(Image image, int width, int height,
- ImageObserver observer);
-
- /**
- * Checks the status of specified image as it is being readied for
- * rendering.
- *
- * @param image The image to prepare for rendering.
- * @param width The width of the image.
- * @param height The height of the image.
- * @param observer The observer to receive events about the preparation
- * process.
- *
- * @return A union of the bitmasks from
- * <code>java.awt.image.ImageObserver</code> that indicates the current
- * state of the imaging readying process.
- */
- public abstract int checkImage(Image image, int width, int height,
- ImageObserver observer);
-
- /**
- * Creates an image using the specified <code>ImageProducer</code>
- *
- * @param producer The <code>ImageProducer</code> to create the image from.
- *
- * @return The created image.
- */
- public abstract Image createImage(ImageProducer producer);
-
- /**
- * Creates an image from the specified byte array. The array must be in
- * a recognized format. Supported formats vary from toolkit to toolkit.
- *
- * @param data The raw image data.
- *
- * @return The created image.
- */
- public Image createImage(byte[] data)
- {
- return createImage(data, 0, data.length);
- }
-
- /**
- * Creates an image from the specified portion of the byte array passed.
- * The array must be in a recognized format. Supported formats vary from
- * toolkit to toolkit.
- *
- * @param data The raw image data.
- * @param offset The offset into the data where the image data starts.
- * @param len The length of the image data.
- *
- * @return The created image.
- */
- public abstract Image createImage(byte[] data, int offset, int len);
-
- /**
- * Returns a instance of <code>PrintJob</code> for the specified
- * arguments.
- *
- * @param frame The window initiating the print job.
- * @param title The print job title.
- * @param props The print job properties.
- *
- * @return The requested print job, or <code>null</code> if the job
- * was cancelled.
- *
- * @exception NullPointerException If frame is null,
- * or GraphicsEnvironment.isHeadless() returns true.
- * @exception SecurityException If this thread is not allowed to initiate
- * a print job request.
- */
- public abstract PrintJob getPrintJob(Frame frame, String title,
- Properties props);
-
- /**
- * Returns a instance of <code>PrintJob</code> for the specified
- * arguments.
- *
- * @param frame The window initiating the print job.
- * @param title The print job title.
- * @param jobAttr A set of job attributes which will control the print job.
- * @param pageAttr A set of page attributes which will control the print job.
- *
- * @exception NullPointerException If frame is null, and either jobAttr is null
- * or jobAttr.getDialog() returns JobAttributes.DialogType.NATIVE.
- * @exception IllegalArgumentException If pageAttrspecifies differing cross
- * feed and feed resolutions, or when GraphicsEnvironment.isHeadless() returns
- * true.
- * @exception SecurityException If this thread is not allowed to initiate
- * a print job request.
- *
- * @since 1.3
- */
- public PrintJob getPrintJob(Frame frame, String title,
- JobAttributes jobAttr, PageAttributes pageAttr)
- {
- // FIXME: it is possible this check may be removed
- // if this method, when written, always delegates to
- // getPrintJob(Frame, String, Properties).
- SecurityManager sm;
- sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPrintJobAccess();
-
- return null;
- }
-
- /**
- * Causes a "beep" tone to be generated.
- */
- public abstract void beep();
-
- /**
- * Returns the system clipboard.
- *
- * @return THe system clipboard.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- public abstract Clipboard getSystemClipboard();
-
- /**
- * Gets the singleton instance of the system selection as a
- * Clipboard object. The system selection contains the selected text
- * of the last component/widget that had focus and a text selection.
- * The default implementation returns null.
- *
- * @return The Clipboard holding the system (text) selection or null
- * if the Toolkit or system doesn't support a selection clipboard.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless()
- * is true.
- * @exception SecurityException If the current security manager
- * checkSystemClipboardAccess() doesn't allow access.
- *
- * @since 1.4
- */
- public Clipboard getSystemSelection()
- {
- return null;
- }
-
- /**
- * Returns the accelerator key mask for menu shortcuts. The default is
- * <code>Event.CTRL_MASK</code>. A toolkit must override this method
- * to change the default.
- *
- * @return The key mask for the menu accelerator key.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- public int getMenuShortcutKeyMask()
- {
- return Event.CTRL_MASK;
- }
-
- /**
- * Returns whether the given locking key on the keyboard is currently in its
- * "on" state.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- * @exception IllegalArgumentException If keyCode is not one of the valid keys.
- * @exception UnsupportedOperationException If the host system doesn't allow
- * getting the state of this key programmatically, or if the keyboard doesn't
- * have this key.
- */
- public boolean getLockingKeyState(int keyCode)
- {
- if (AWTUtilities.isValidKey(keyCode))
- throw new UnsupportedOperationException
- ("cannot get locking state of key code " + keyCode);
-
- throw new IllegalArgumentException("invalid key code " + keyCode);
- }
-
- /**
- * Sets the state of the given locking key on the keyboard.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- * @exception IllegalArgumentException If keyCode is not one of the valid keys.
- * @exception UnsupportedOperationException If the host system doesn't allow
- * getting the state of this key programmatically, or if the keyboard doesn't
- * have this key.
- */
- public void setLockingKeyState(int keyCode, boolean on)
- {
- if (keyCode != KeyEvent.VK_CAPS_LOCK
- && keyCode != KeyEvent.VK_NUM_LOCK
- && keyCode != KeyEvent.VK_SCROLL_LOCK)
- throw new IllegalArgumentException();
-
- throw new UnsupportedOperationException();
- }
-
- /**
- * Returns the native container object of the specified component. This
- * method is necessary because the parent component might be a lightweight
- * component.
- *
- * @param component The component to fetch the native container for.
- *
- * @return The native container object for this component.
- */
- protected static Container getNativeContainer(Component component)
- {
- component = component.getParent();
- while (true)
- {
- if (component == null)
- return null;
- if (! (component instanceof Container))
- {
- component = component.getParent();
- continue;
- }
- if (component.getPeer() instanceof LightweightPeer)
- {
- component = component.getParent();
- continue;
- }
- return (Container) component;
- }
- }
-
- /**
- * Creates a new custom cursor object.
- *
- * @exception IndexOutOfBoundsException If the hotSpot values are outside
- * the bounds of the cursor.
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- public Cursor createCustomCursor(Image cursor, Point hotSpot, String name)
- {
- // Presumably the only reason this isn't abstract is for backwards
- // compatibility? FIXME?
- if (GraphicsEnvironment.isHeadless())
- throw new HeadlessException("No custom cursor in an headless graphics "
- + "environment.");
- return null;
- }
-
- /**
- * Returns the supported cursor dimension which is closest to the
- * desired sizes.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- public Dimension getBestCursorSize(int preferredWidth, int preferredHeight)
- {
- if (GraphicsEnvironment.isHeadless())
- throw new HeadlessException("No best cursor size in an headless "
- + "graphics environment.");
- return new Dimension (0,0);
- }
-
- /**
- * Returns the maximum number of colors the Toolkit supports in a custom
- * cursor palette.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
- public int getMaximumCursorColors()
- {
- return 0;
- }
-
- /**
- * Returns whether Toolkit supports this state for Frames.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- *
- * @since 1.4
- */
- public boolean isFrameStateSupported(int state)
- {
- return state == Frame.NORMAL ||
- state == Frame.ICONIFIED ||
- state == Frame.MAXIMIZED_BOTH;
- }
-
- /**
- * Returns the value of the property with the specified name, or the
- * default value if the property does not exist.
- *
- * @param key The name of the property to retrieve.
- * @param def The default value of the property.
- */
- public static String getProperty(String key, String def)
- {
- return props.getProperty(key, def);
- }
-
-
- /**
- * Returns the event queue that is suitable for the calling context.
- *
- * <p>Despite the word “System” in the name of this
- * method, a toolkit may provide different event queues for each
- * applet. There is no guarantee that the same queue is shared
- * system-wide.
- *
- * <p>The implementation first checks whether a
- * SecurityManager has been installed. If so, its {@link
- * java.lang.SecurityManager#checkAwtEventQueueAccess()} method gets
- * called. The security manager will throw a SecurityException if it
- * does not grant the permission to access the event queue.
- *
- * <p>Next, the call is delegated to {@link
- * #getSystemEventQueueImpl()}.
- *
- * @return The event queue for this applet (or application).
- *
- * @throws SecurityException if a security manager has been
- * installed, and it does not grant the permission to access the
- * event queue.
- */
- public final EventQueue getSystemEventQueue()
- {
- SecurityManager sm;
-
- sm = System.getSecurityManager();
- if (sm != null)
- sm.checkAwtEventQueueAccess();
-
- return getSystemEventQueueImpl();
- }
-
-
- /**
- * Returns the event queue that is suitable for the calling context.
- *
- * <p>Despite the word “System” in the name of this
- * method, a toolkit may provide different event queues for each
- * applet. There is no guarantee that the same queue is shared
- * system-wide.
- *
- * <p>No security checks are performed, which is why this method
- * may only be called by Toolkits.
- *
- * @see #getSystemEventQueue()
- */
- protected abstract EventQueue getSystemEventQueueImpl();
-
-
- /**
- * @since 1.3
- */
- public abstract DragSourceContextPeer
- createDragSourceContextPeer(DragGestureEvent e);
-
- /**
- * @since 1.3
- */
- public <T extends DragGestureRecognizer> T
- createDragGestureRecognizer(Class<T> recognizer, DragSource ds,
- Component comp, int actions,
- DragGestureListener l)
- {
- return null;
- }
-
- public final Object getDesktopProperty(String propertyName)
- {
- return desktopProperties.get(propertyName);
- }
-
- protected final void setDesktopProperty(String name, Object newValue)
- {
- Object oldValue = getDesktopProperty(name);
- desktopProperties.put(name, newValue);
- desktopPropsSupport.firePropertyChange(name, oldValue, newValue);
- }
-
- protected Object lazilyLoadDesktopProperty(String name)
- {
- // FIXME - what is this??
- return null;
- }
-
- protected void initializeDesktopProperties()
- {
- // Overridden by toolkit implementation?
- }
-
- public void addPropertyChangeListener(String name,
- PropertyChangeListener pcl)
- {
- desktopPropsSupport.addPropertyChangeListener(name, pcl);
- }
-
- public void removePropertyChangeListener(String name,
- PropertyChangeListener pcl)
- {
- desktopPropsSupport.removePropertyChangeListener(name, pcl);
- }
-
- /**
- * @since 1.4
- */
- public PropertyChangeListener[] getPropertyChangeListeners()
- {
- return desktopPropsSupport.getPropertyChangeListeners();
- }
-
- /**
- * @since 1.4
- */
- public PropertyChangeListener[] getPropertyChangeListeners(String name)
- {
- return desktopPropsSupport.getPropertyChangeListeners(name);
- }
-
- /**
- * Adds an AWTEventListener to this toolkit. This listener is informed about
- * all events that pass the eventqueue that match the specified
- * <code>evenMask</code>. The <code>eventMask</code> is an ORed combination
- * of event masks as defined in {@link AWTEvent}.
- *
- * If a security manager is installed, it is asked first if an
- * <code>AWTPermission("listenToAllAWTEvents")</code> is allowed.
- * This may result in a <code>SecurityException</code> beeing thrown.
- *
- * It is not recommended to use this kind of notification for normal
- * applications. It is intended solely for the purpose of debugging and to
- * support special facilities.
- *
- * @param listener the listener to add
- * @param eventMask the event mask of event types which the listener is
- * interested in
- *
- * @since 1.2
- *
- * @throws SecurityException if there is a <code>SecurityManager</code> that
- * doesn't grant
- * <code>AWTPermission("listenToAllAWTEvents")</code>
- *
- * @see #getAWTEventListeners()
- * @see #getAWTEventListeners(long)
- * @see #removeAWTEventListener(AWTEventListener)
- */
- public void addAWTEventListener(AWTEventListener listener, long eventMask)
- {
- // First we must check the security permissions.
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- s.checkPermission(new AWTPermission("listenToAllAWTEvents"));
-
- // Go through the list and check if the requested listener is already
- // registered.
- boolean found = false;
- for (int i = 0; i < awtEventListeners.length; ++i)
- {
- AWTEventListenerProxy proxy = awtEventListeners[i];
- if (proxy.getListener() == listener)
- {
- found = true;
- // Modify the proxies event mask to include the new event mask.
- AWTEventListenerProxy newProxy =
- new AWTEventListenerProxy(proxy.getEventMask() | eventMask,
- listener);
- awtEventListeners[i] = newProxy;
- break;
- }
- }
-
- // If that listener was not found, then add it.
- if (! found)
- {
- AWTEventListenerProxy proxy =
- new AWTEventListenerProxy(eventMask, listener);
- AWTEventListenerProxy[] newArray =
- new AWTEventListenerProxy[awtEventListeners.length + 1];
- System.arraycopy(awtEventListeners, 0, newArray, 0,
- awtEventListeners.length);
- newArray[newArray.length - 1] = proxy;
- awtEventListeners = newArray;
- }
- }
-
- /**
- * Removes an AWT event listener from this toolkit. This listener is no
- * longer informed of any event types it was registered in.
- *
- * If a security manager is installed, it is asked first if an
- * <code>AWTPermission("listenToAllAWTEvents")</code> is allowed.
- * This may result in a <code>SecurityException</code> beeing thrown.
- *
- * It is not recommended to use this kind of notification for normal
- * applications. It is intended solely for the purpose of debugging and to
- * support special facilities.
- *
- * @param listener the listener to remove
- *
- * @throws SecurityException if there is a <code>SecurityManager</code> that
- * doesn't grant
- * <code>AWTPermission("listenToAllAWTEvents")</code>
- *
- * @since 1.2
- *
- * @see #addAWTEventListener(AWTEventListener, long)
- * @see #getAWTEventListeners()
- * @see #getAWTEventListeners(long)
- */
- public void removeAWTEventListener(AWTEventListener listener)
- {
- // First we must check the security permissions.
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- s.checkPermission(new AWTPermission("listenToAllAWTEvents"));
-
-
- // Find the index of the listener.
- int index = -1;
- for (int i = 0; i < awtEventListeners.length; ++i)
- {
- AWTEventListenerProxy proxy = awtEventListeners[i];
- if (proxy.getListener() == listener)
- {
- index = i;
- break;
- }
- }
-
- // Copy over the arrays and leave out the removed element.
- if (index != -1)
- {
- AWTEventListenerProxy[] newArray =
- new AWTEventListenerProxy[awtEventListeners.length - 1];
- if (index > 0)
- System.arraycopy(awtEventListeners, 0, newArray, 0, index);
- if (index < awtEventListeners.length - 1)
- System.arraycopy(awtEventListeners, index + 1, newArray, index,
- awtEventListeners.length - index - 1);
- awtEventListeners = newArray;
- }
- }
-
- /**
- * Returns all registered AWT event listeners. This method returns a copy of
- * the listener array, so that application cannot trash the listener list.
- *
- * If a security manager is installed, it is asked first if an
- * <code>AWTPermission("listenToAllAWTEvents")</code> is allowed.
- * This may result in a <code>SecurityException</code> beeing thrown.
- *
- * It is not recommended to use this kind of notification for normal
- * applications. It is intended solely for the purpose of debugging and to
- * support special facilities.
- *
- * @return all registered AWT event listeners
- *
- * @throws SecurityException if there is a <code>SecurityManager</code> that
- * doesn't grant
- * <code>AWTPermission("listenToAllAWTEvents")</code>
- *
- * @since 1.4
- *
- * @see #addAWTEventListener(AWTEventListener, long)
- * @see #removeAWTEventListener(AWTEventListener)
- * @see #getAWTEventListeners(long)
- */
- public AWTEventListener[] getAWTEventListeners()
- {
- // First we must check the security permissions.
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- s.checkPermission(new AWTPermission("listenToAllAWTEvents"));
-
- // Create a copy of the array.
- AWTEventListener[] copy = new AWTEventListener[awtEventListeners.length];
- System.arraycopy(awtEventListeners, 0, copy, 0, awtEventListeners.length);
- return copy;
- }
-
- /**
- * Returns all registered AWT event listeners that listen for events with
- * the specified <code>eventMask</code>. This method returns a copy of
- * the listener array, so that application cannot trash the listener list.
- *
- * If a security manager is installed, it is asked first if an
- * <code>AWTPermission("listenToAllAWTEvents")</code> is allowed.
- * This may result in a <code>SecurityException</code> beeing thrown.
- *
- * It is not recommended to use this kind of notification for normal
- * applications. It is intended solely for the purpose of debugging and to
- * support special facilities.
- *
- * @param mask the event mask
- *
- * @throws SecurityException if there is a <code>SecurityManager</code> that
- * doesn't grant
- * <code>AWTPermission("listenToAllAWTEvents")</code>
- *
- *
- * @since 1.4
- *
- * @see #addAWTEventListener(AWTEventListener, long)
- * @see #removeAWTEventListener(AWTEventListener)
- * @see #getAWTEventListeners()
- */
- public AWTEventListener[] getAWTEventListeners(long mask)
- {
- // First we must check the security permissions.
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- s.checkPermission(new AWTPermission("listenToAllAWTEvents"));
-
- // Create a copy of the array with only the requested listeners in it.
- ArrayList l = new ArrayList(awtEventListeners.length);
- for (int i = 0; i < awtEventListeners.length; ++i)
- {
- if ((awtEventListeners[i].getEventMask() & mask) != 0)
- l.add(awtEventListeners[i]);
- }
-
- return (AWTEventListener[] ) l.toArray(new AWTEventListener[l.size()]);
- }
-
-
- /**
- * Dispatches events to listeners registered to this Toolkit. This is called
- * by {@link Component#dispatchEventImpl(AWTEvent)} in order to dispatch
- * events globally.
- *
- * @param ev the event to dispatch
- */
- void globalDispatchEvent(AWTEvent ev)
- {
- // We do not use the accessor methods here because they create new
- // arrays each time. We must be very efficient, so we access this directly.
- for (int i = 0; i < awtEventListeners.length; ++i)
- {
- AWTEventListenerProxy proxy = awtEventListeners[i];
- if ((proxy.getEventMask() & ev.getID()) != 0)
- proxy.eventDispatched(ev);
- }
- }
-
- /**
- * @since 1.3
- */
- public abstract Map<TextAttribute,?>
- mapInputMethodHighlight(InputMethodHighlight highlight);
-
- /**
- * Initializes the accessibility framework. In particular, this loads the
- * properties javax.accessibility.screen_magnifier_present and
- * javax.accessibility.screen_reader_present and loads
- * the classes specified in javax.accessibility.assistive_technologies.
- */
- private static void initAccessibility()
- {
- AccessController.doPrivileged
- (new PrivilegedAction()
- {
- public Object run()
- {
- Properties props = new Properties();
- String sep = File.separator;
-
- // Try the user configuration.
- try
- {
- File propsFile = new File(System.getProperty("user.home") + sep
- + ".accessibility.properties");
- FileInputStream in = new FileInputStream(propsFile);
- props.load(in);
- in.close();
- }
- catch (Exception ex)
- {
- // User configuration not present, ignore.
- }
-
- // Try the system configuration if there was no user configuration.
- if (props.size() == 0)
- {
- try
- {
- File propsFile =
- new File(System.getProperty("gnu.classpath.home.url")
- + sep + "accessibility.properties");
- FileInputStream in = new FileInputStream(propsFile);
- props.load(in);
- in.close();
- }
- catch (Exception ex)
- {
- // System configuration not present, ignore.
- }
- }
-
- // Fetch the screen_magnifier_present property. Check systen properties
- // first, then fallback to the configuration file.
- String magPresent = SystemProperties.getProperty
- ("javax.accessibility.screen_magnifier_present");
- if (magPresent == null)
- {
- magPresent = props.getProperty("screen_magnifier_present");
- if (magPresent != null)
- {
- SystemProperties.setProperty
- ("javax.accessibility.screen_magnifier_present", magPresent);
- }
- }
-
- // Fetch the screen_reader_present property. Check systen properties
- // first, then fallback to the configuration file.
- String readerPresent = SystemProperties.getProperty
- ("javax.accessibility.screen_reader_present");
- if (readerPresent == null)
- {
- readerPresent = props.getProperty("screen_reader_present");
- if (readerPresent != null)
- {
- SystemProperties.setProperty
- ("javax.accessibility.screen_reader_present", readerPresent);
- }
- }
-
- // Fetch the list of classes to be loaded.
- String classes = SystemProperties.getProperty
- ("javax.accessibility.assistive_technologies");
- if (classes == null)
- {
- classes = props.getProperty("assistive_technologies");
- if (classes != null)
- {
- SystemProperties.setProperty
- ("javax.accessibility.assistive_technologies", classes);
- }
- }
-
- // Try to load the assisitive_technologies classes.
- if (classes != null)
- {
- ClassLoader cl = ClassLoader.getSystemClassLoader();
- StringTokenizer tokenizer = new StringTokenizer(classes, ",");
- while (tokenizer.hasMoreTokens())
- {
- String className = tokenizer.nextToken();
- try
- {
- Class atClass = cl.loadClass(className);
- atClass.newInstance();
- }
- catch (ClassNotFoundException ex)
- {
- AWTError err = new AWTError("Assistive Technology class not"
- + " found: " + className);
- err.initCause(ex);
- throw err;
- }
- catch (InstantiationException ex)
- {
- AWTError err =
- new AWTError("Assistive Technology class cannot be "
- + "instantiated: " + className);
- err.initCause(ex);
- throw err;
- }
- catch (IllegalAccessException ex)
- {
- AWTError err =
- new AWTError("Assistive Technology class cannot be "
- + "accessed: " + className);
- err.initCause(err);
- throw err;
- }
- }
- }
- return null;
- }
- });
-
- }
-
- //jnode openjdk
- private static boolean loaded = false;
- static void loadLibraries() {
- /*
- if (!loaded) {
- java.security.AccessController.doPrivileged(
- new sun.security.action.LoadLibraryAction("awt"));
- loaded = true;
- }
- */
- }
-
- /* Accessor method for use by AWT package routines. */
- static EventQueue getEventQueue() {
- return getDefaultToolkit().getSystemEventQueueImpl();
- }
-
- /*
- * This method notifies any AWTEventListeners that an event
- * is about to be dispatched.
- *
- * @param theEvent the event which will be dispatched.
- */
- void notifyAWTEventListeners(AWTEvent theEvent) {
- // This is a workaround for headless toolkits. It would be
- // better to override this method but it is declared package private.
- // "this instanceof" syntax defeats polymorphism.
- // --mm, 03/03/00
- if (this instanceof sun.awt.HeadlessToolkit) {
- ((sun.awt.HeadlessToolkit)this).getUnderlyingToolkit()
- .notifyAWTEventListeners(theEvent);
- return;
- }
-
- AWTEventListener eventListener = this.eventListener;
- if (eventListener != null) {
- eventListener.eventDispatched(theEvent);
- }
- }
- private AWTEventListener eventListener = null;
-
- /**
- * Returns whether the given modal exclusion type is supported by this
- * toolkit. If an unsupported modal exclusion type property is set on a window,
- * then <code>Dialog.ModalExclusionType.NO_EXCLUDE</code> is used instead.
- *
- * @param modalExclusionType modal exclusion type to be checked for support by this toolkit
- *
- * @return <code>true</code>, if current toolkit supports given modal exclusion
- * type, <code>false</code> otherwise
- *
- * @see java.awt.Dialog.ModalExclusionType
- * @see java.awt.Window#getModalExclusionType
- * @see java.awt.Window#setModalExclusionType
- *
- * @since 1.6
- */
- public abstract boolean isModalExclusionTypeSupported(Dialog.ModalExclusionType modalExclusionType);
-
- /**
- * Creates this toolkit's implementation of the <code>Desktop</code>
- * using the specified peer interface.
- * @param target the desktop to be implemented
- * @return this toolkit's implementation of the <code>Desktop</code>
- * @exception HeadlessException if GraphicsEnvironment.isHeadless()
- * returns true
- * @see java.awt.GraphicsEnvironment#isHeadless
- * @see java.awt.Desktop
- * @see java.awt.peer.DesktopPeer
- * @since 1.6
- */
- protected abstract DesktopPeer createDesktopPeer(Desktop target)
- throws HeadlessException;
-
- /**
- * Returns whether the always-on-top mode is supported by this toolkit.
- * To detect whether the always-on-top mode is supported for a
- * particular Window, use {@link Window#isAlwaysOnTopSupported}.
- * @return <code>true</code>, if current toolkit supports the always-on-top mode,
- * otherwise returns <code>false</code>
- * @see Window#isAlwaysOnTopSupported
- * @see Window#setAlwaysOnTop(boolean)
- * @since 1.6
- */
- public boolean isAlwaysOnTopSupported() {
- //todo review it
- return false;
- }
-
- /**
- * Returns whether the given modality type is supported by this toolkit. If
- * a dialog with unsupported modality type is created, then
- * <code>Dialog.ModalityType.MODELESS</code> is used instead.
- *
- * @param modalityType modality type to be checked for support by this toolkit
- *
- * @return <code>true</code>, if current toolkit supports given modality
- * type, <code>false</code> otherwise
- *
- * @see java.awt.Dialog.ModalityType
- * @see java.awt.Dialog#getModalityType
- * @see java.awt.Dialog#setModalityType
- *
- * @since 1.6
- */
- public abstract boolean isModalityTypeSupported(Dialog.ModalityType modalityType);
-
- //jnode + openjdk
- private static volatile long enabledOnToolkitMask;
- static boolean enabledOnToolkit(long eventMask) {
- return (enabledOnToolkitMask & eventMask) != 0;
- }
-
-} // class Toolkit
Added: trunk/core/src/openjdk/java/java/awt/Toolkit.java
===================================================================
--- trunk/core/src/openjdk/java/java/awt/Toolkit.java (rev 0)
+++ trunk/core/src/openjdk/java/java/awt/Toolkit.java 2008-07-17 10:45:28 UTC (rev 4306)
@@ -0,0 +1,2428 @@
+/*
+ * Copyright 1995-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.awt;
+
+import java.util.MissingResourceException;
+import java.util.Properties;
+import java.util.ResourceBundle;
+import java.util.StringTokenizer;
+import java.awt.event.*;
+import java.awt.peer.*;
+import java.awt.*;
+import java.awt.im.InputMethodHighlight;
+import java.awt.image.ImageObserver;
+import java.awt.image.ImageProducer;
+import java.awt.image.ColorModel;
+import java.awt.datatransfer.Clipboard;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DragSource;
+import java.awt.dnd.DragGestureRecognizer;
+import java.awt.dnd.DragGestureEvent;
+import java.awt.dnd.DragGestureListener;
+import java.awt.dnd.InvalidDnDOperationException;
+import java.awt.dnd.peer.DragSourceContextPeer;
+import java.net.URL;
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+import java.util.EventListener;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.WeakHashMap;
+import java.util.List;
+import java.util.ArrayList;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+
+import sun.awt.DebugHelper;
+import sun.awt.HeadlessToolkit;
+import sun.awt.NullComponentPeer;
+import sun.security.util.SecurityConstants;
+
+import sun.util.CoreResourceBundleControl;
+
+/**
+ * This class is the abstract superclass of all actual
+ * implementations of the Abstract Window Toolkit. Subclasses of
+ * <code>Toolkit</code> are used to bind the various components
+ * to particular native toolkit implementations.
+ * <p>
+ * Many GUI operations may be performed asynchronously. This
+ * means that if you set the state of a component, and then
+ * immediately query the state, the returned value may not yet
+ * reflect the requested change. This includes, but is not
+ * limited to:
+ * <ul>
+ * <li>Scrolling to a specified position.
+ * <br>For example, calling <code>ScrollPane.setScrollPosition</code>
+ * and then <code>getScrollPosition</code> may return an incorrect
+ * value if the original request has not yet been processed.
+ * <p>
+ * <li>Moving the focus from one component to another.
+ * <br>For more information, see
+ * <a href="http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html#transferTiming">Timing
+ * Focus Transfers</a>, a section in
+ * <a href="http://java.sun.com/docs/books/tutorial/uiswing/">The Swing
+ * Tutorial</a>.
+ * <p>
+ * <li>Making a top-level container visible.
+ * <br>Calling <code>setVisible(true)</code> on a <code>Window</code>,
+ * <code>Frame</code> or <code>Dialog</code> may occur
+ * asynchronously.
+ * <p>
+ * <li>Setting the size or location of a top-level container.
+ * <br>Calls to <code>setSize</code>, <code>setBounds</code> or
+ * <code>setLocation</code> on a <code>Window</code>,
+ * <code>Frame</code> or <code>Dialog</code> are forwarded
+ * to the underlying window management system and may be
+ * ignored or modified. See {@link java.awt.Window} for
+ * more information.
+ * </ul>
+ * <p>
+ * Most applications should not call any of the methods in this
+ * class directly. The methods defined by <code>Toolkit</code> are
+ * the "glue" that joins the platform-independent classes in the
+ * <code>java.awt</code> package with their counterparts in
+ * <code>java.awt.peer</code>. Some methods defined by
+ * <code>Toolkit</code> query the native operating system directly.
+ *
+ * @version 1.203, 12/19/03
+ * @author Sami Shaio
+ * @author Arthur van Hoff
+ * @author Fred Ecks
+ * @since JDK1.0
+ */
+public abstract class Toolkit {
+
+ /**
+ * Creates this toolkit's implementation of the <code>Desktop</code>
+ * using the specified peer interface.
+ * @param target the desktop to be implemented
+ * @return this toolkit's implementation of the <code>Desktop</code>
+ * @exception HeadlessException if GraphicsEnvironment.isHeadless()
+ * returns true
+ * @see java.awt.GraphicsEnvironment#isHeadless
+ * @see java.awt.Desktop
+ * @see java.awt.peer.DesktopPeer
+ * @since 1.6
+ */
+ protected abstract DesktopPeer createDesktopPeer(Desktop target)
+ throws HeadlessException;
+
+
+ /**
+ * Creates this toolkit's implementation of <code>Button</code> using
+ * the specified peer interface.
+ * @param target the button to be implemented.
+ * @return this toolkit's implementation of <code>Button</code>.
+ * @exception HeadlessException if GraphicsEnvironment.isHeadless()
+ * returns true
+ * @see java.awt.GraphicsEnvironment#isHeadless
+ * @see java.awt.Button
+ * @see java.awt.peer.ButtonPeer
+ */
+ protected abstract ButtonPeer createButton(Button target)
+ throws HeadlessException;
+
+ /**
+ * Creates this toolkit's implementation of <code>TextField</code> using
+ * the specified peer interface.
+ * @param target the text field to be implemented.
+ * @return this toolkit's implementation of <code>TextField</code>.
+ * @exception HeadlessException if...
[truncated message content] |