826 lines
22 KiB
Java
826 lines
22 KiB
Java
/* Toolkit.java -- AWT Toolkit superclass
|
|
Copyright (C) 1999, 2000, 2001, 2002 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., 59 Temple Place, Suite 330, Boston, MA
|
|
02111-1307 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 java.awt.event.*;
|
|
import java.awt.peer.*;
|
|
import java.awt.image.*;
|
|
import java.awt.datatransfer.Clipboard;
|
|
import java.util.Properties;
|
|
import java.net.URL;
|
|
import java.beans.*;
|
|
|
|
/**
|
|
* 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 (arenn@urbanophile.com)
|
|
*/
|
|
public abstract class Toolkit
|
|
{
|
|
|
|
/*
|
|
* Static Variables
|
|
*/
|
|
|
|
// The default toolkit name.
|
|
private static String default_toolkit_name =
|
|
"gnu.java.awt.peer.gtk.GtkToolkit";
|
|
|
|
// The toolkit in use. Once we load it, we don't ever change it
|
|
// if the awt.toolkit propert is set.
|
|
private static Toolkit toolkit;
|
|
|
|
// The toolkit properties
|
|
private static Properties props = new Properties();
|
|
|
|
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
|
|
|
|
private Properties desktopProperties = new Properties();
|
|
|
|
/*************************************************************************/
|
|
|
|
/*
|
|
* Static Methods
|
|
*/
|
|
|
|
/**
|
|
* 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.
|
|
*
|
|
* @error AWTError If the toolkit cannot be loaded.
|
|
*/
|
|
public static Toolkit
|
|
getDefaultToolkit()
|
|
{
|
|
if (toolkit != null)
|
|
return(toolkit);
|
|
|
|
String toolkit_name = System.getProperty("awt.toolkit",
|
|
default_toolkit_name);
|
|
|
|
try
|
|
{
|
|
Class cls = Class.forName(toolkit_name);
|
|
Object obj = cls.newInstance();
|
|
|
|
if (!(obj instanceof Toolkit))
|
|
throw new AWTError(toolkit_name + " is not a subclass of " +
|
|
"java.awt.Toolkit");
|
|
|
|
toolkit = (Toolkit)obj;
|
|
return(toolkit);
|
|
}
|
|
catch(Exception e)
|
|
{
|
|
throw new AWTError("Cannot load AWT toolkit: " + e.getMessage());
|
|
}
|
|
}
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* 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 defThe default value of the property.
|
|
*/
|
|
public static String
|
|
getProperty(String key, String def)
|
|
{
|
|
return(props.getProperty(key, def));
|
|
}
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* 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();
|
|
|
|
for(;;)
|
|
{
|
|
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);
|
|
}
|
|
}
|
|
|
|
/*************************************************************************/
|
|
|
|
/*
|
|
* Constructors
|
|
*/
|
|
|
|
/**
|
|
* Default constructor for subclasses.
|
|
*/
|
|
public
|
|
Toolkit()
|
|
{
|
|
}
|
|
|
|
/*************************************************************************/
|
|
|
|
/*
|
|
* Instance Methods
|
|
*/
|
|
|
|
/**
|
|
* 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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*/
|
|
protected abstract MenuItemPeer
|
|
createMenuItem(MenuItem target);
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* 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.
|
|
*/
|
|
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.
|
|
*/
|
|
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.
|
|
*
|
|
* XXX: FIXME
|
|
*
|
|
* @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)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* 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.
|
|
*/
|
|
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>SystemColors</code> class.
|
|
*
|
|
* @param colors The array to copy the system colors into.
|
|
*/
|
|
protected void
|
|
loadSystemColors(int systemColors[])
|
|
{
|
|
}
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* Returns the dimensions of the screen in pixels.
|
|
*
|
|
* @return The dimensions of the screen in pixels.
|
|
*/
|
|
public abstract Dimension
|
|
getScreenSize();
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* Returns the screen resolution in dots per square inch.
|
|
*
|
|
* @return The screen resolution in dots per square inch.
|
|
*/
|
|
public abstract int
|
|
getScreenResolution();
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* Returns the color model of the screen.
|
|
*
|
|
* @return The color model of the screen.
|
|
*/
|
|
public abstract ColorModel
|
|
getColorModel();
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* Returns the names of the available fonts.
|
|
*
|
|
* @return The names of the available fonts.
|
|
*/
|
|
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.
|
|
*/
|
|
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 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);
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* 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 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);
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* 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));
|
|
}
|
|
|
|
public abstract Image
|
|
createImage(String filename);
|
|
|
|
public abstract Image
|
|
createImage(URL url);
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* 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.
|
|
*/
|
|
public abstract PrintJob
|
|
getPrintJob(Frame frame, String title, Properties props);
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* Returns the system clipboard.
|
|
*
|
|
* @return THe system clipboard.
|
|
*/
|
|
public abstract Clipboard
|
|
getSystemClipboard();
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* 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.
|
|
*/
|
|
public int
|
|
getMenuShortcutKeyMask()
|
|
{
|
|
return Event.CTRL_MASK;
|
|
}
|
|
|
|
public boolean
|
|
getLockingKeyState(int keyCode)
|
|
{
|
|
if (keyCode != KeyEvent.VK_CAPS_LOCK
|
|
&& keyCode != KeyEvent.VK_NUM_LOCK
|
|
&& keyCode != KeyEvent.VK_SCROLL_LOCK)
|
|
throw new IllegalArgumentException();
|
|
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
|
|
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 event queue for the applet. Despite the word "System"
|
|
* in the name of this method, there is no guarantee that the same queue
|
|
* is shared system wide.
|
|
*
|
|
* @return The event queue for this applet (or application)
|
|
*/
|
|
public final EventQueue
|
|
getSystemEventQueue()
|
|
{
|
|
return(getSystemEventQueueImpl());
|
|
}
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* // FIXME: What does this do?
|
|
*/
|
|
protected abstract EventQueue
|
|
getSystemEventQueueImpl();
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* Causes a "beep" tone to be generated.
|
|
*/
|
|
public abstract void
|
|
beep();
|
|
|
|
public Cursor
|
|
createCustomCursor(Image cursor, Point hotSpot, String name)
|
|
throws IndexOutOfBoundsException
|
|
{
|
|
// Presumably the only reason this isn't abstract is for backwards
|
|
// compatibility? FIXME?
|
|
return null;
|
|
}
|
|
|
|
public Dimension
|
|
getBestCursorSize(int preferredWidth, int preferredHeight)
|
|
{
|
|
return new Dimension (0,0);
|
|
}
|
|
|
|
public int
|
|
getMaximumCursorColors()
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
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);
|
|
changeSupport.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)
|
|
{
|
|
changeSupport.addPropertyChangeListener(name, pcl);
|
|
}
|
|
|
|
public void
|
|
removePropertyChangeListener(String name, PropertyChangeListener pcl)
|
|
{
|
|
changeSupport.removePropertyChangeListener(name, pcl);
|
|
}
|
|
|
|
public void
|
|
addAWTEventListener(AWTEventListener listener, long eventMask)
|
|
{
|
|
// SecurityManager s = System.getSecurityManager();
|
|
// if (s != null)
|
|
// s.checkPermission(AWTPermission("listenToAllAWTEvents"));
|
|
|
|
// FIXME
|
|
}
|
|
|
|
public void
|
|
removeAWTEventListener(AWTEventListener listener)
|
|
{
|
|
// FIXME
|
|
}
|
|
|
|
} // class Toolkit
|