From fe67a5ac72d12dd8faf471d1c612492fed829a4b Mon Sep 17 00:00:00 2001 From: Andrew John Hughes Date: Fri, 14 Apr 2006 06:50:23 +0000 Subject: 2006-04-13 Andrew John Hughes * Merge of HEAD --> generics-branch from 2006/03/26 to 2006/04/13. --- java/awt/Dialog.java | 896 +++++++++++++++++++++++++-------------------------- 1 file changed, 436 insertions(+), 460 deletions(-) (limited to 'java/awt/Dialog.java') diff --git a/java/awt/Dialog.java b/java/awt/Dialog.java index 7213e29b2..55c3371e6 100644 --- a/java/awt/Dialog.java +++ b/java/awt/Dialog.java @@ -1,39 +1,40 @@ /* Dialog.java -- An AWT dialog box - Copyright (C) 1999, 2000, 2001, 2002, 2005 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. */ + Copyright (C) 1999, 2000, 2001, 2002, 2005, 2006 + 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; @@ -46,460 +47,422 @@ import javax.accessibility.AccessibleState; import javax.accessibility.AccessibleStateSet; /** - * A dialog box widget class. - * + * Dialog provides a top-level window normally used to receive + * user input in applications. + *

+ * A dialog always has another top-level window as owner and is only visible + * if this owner is visible to the user. The default layout of dialogs is the + * BorderLayout. Dialogs can be modal (blocks user input to other + * components) or non-modal (user input in other components are allowed). + *

+ * * @author Aaron M. Renn (arenn@urbanophile.com) * @author Tom Tromey (tromey@redhat.com) */ public class Dialog extends Window { + // Serialization constant + private static final long serialVersionUID = 5920926903803293709L; -/* - * Static Variables - */ - -// Serialization constant -private static final long serialVersionUID = 5920926903803293709L; - -/*************************************************************************/ - -/* - * Instance Variables - */ - -/** - * @serial Indicates whether or not this dialog box is modal. - */ -private boolean modal; - -/** - * @serial Indicates whether or not this dialog box is resizable. - */ -private boolean resizable = true; - -/** - * @serial The title string for this dialog box, which can be - * null. - */ -private String title; - -/** - * This field indicates whether the dialog is undecorated or not. - */ -private boolean undecorated = false; - -/** - * Indicates that we are blocked for modality in show - */ -private boolean blocked = false; - -/** - * Secondary EventQueue to handle AWT events while - * we are blocked for modality in show - */ -private EventQueue eq2 = null; - -/*************************************************************************/ - -/* - * Constructors - */ - -/** - * Initializes a new instance of Dialog with the specified - * parent, that is resizable and not modal, and which has no title. - * - * @param parent The parent frame of this dialog box. - * - * @exception IllegalArgumentException If the owner's GraphicsConfiguration - * is not from a screen device, or if owner is null. This exception is always - * thrown when GraphicsEnvironment.isHeadless() returns true. - */ -public -Dialog(Frame parent) -{ - this(parent, "", false); -} - -/*************************************************************************/ - -/** - * Initializes a new instance of Dialog with the specified - * parent and modality, that is resizable and which has no title. - * - * @param parent The parent frame of this dialog box. - * @param modal true if this dialog box is modal, - * false otherwise. - * - * @exception IllegalArgumentException If the owner's GraphicsConfiguration - * is not from a screen device, or if owner is null. This exception is always - * thrown when GraphicsEnvironment.isHeadless() returns true. - */ -public -Dialog(Frame parent, boolean modal) -{ - this(parent, "", modal); -} - -/*************************************************************************/ - -/** - * Initializes a new instance of Dialog with the specified - * parent, that is resizable and not modal, and which has the specified - * title. - * - * @param parent The parent frame of this dialog box. - * @param title The title string for this dialog box. - * - * @exception IllegalArgumentException If the owner's GraphicsConfiguration - * is not from a screen device, or if owner is null. This exception is always - * thrown when GraphicsEnvironment.isHeadless() returns true. - */ -public -Dialog(Frame parent, String title) -{ - this(parent, title, false); -} - -/*************************************************************************/ - -/** - * Initializes a new instance of Dialog with the specified, - * parent, title, and modality, that is resizable. - * - * @param parent The parent frame of this dialog box. - * @param title The title string for this dialog box. - * @param modal true if this dialog box is modal, - * false otherwise. - * - * @exception IllegalArgumentException If owner is null or - * GraphicsEnvironment.isHeadless() returns true. - */ -public -Dialog(Frame parent, String title, boolean modal) -{ - this (parent, title, modal, parent.getGraphicsConfiguration ()); -} - -/** - * Initializes a new instance of Dialog with the specified, - * parent, title, modality and GraphicsConfiguration, - * that is resizable. - * - * @param parent The parent frame of this dialog box. - * @param title The title string for this dialog box. - * @param modal true if this dialog box is modal, - * false otherwise. - * @param gc The GraphicsConfiguration object to use. - * - * @exception IllegalArgumentException If owner is null, the - * GraphicsConfiguration is not a screen device or - * GraphicsEnvironment.isHeadless() returns true. - * - * @since 1.4 - */ -public -Dialog (Frame parent, String title, boolean modal, GraphicsConfiguration gc) -{ - super (parent, gc); - - // A null title is equivalent to an empty title - this.title = (title != null) ? title : ""; - this.modal = modal; - visible = false; - - setLayout(new BorderLayout()); -} - -/** - * Initializes a new instance of Dialog with the specified, - * parent, that is resizable. - * - * @exception IllegalArgumentException If parent is null. This exception is - * always thrown when GraphicsEnvironment.isHeadless() returns true. - * - * @since 1.2 - */ -public -Dialog (Dialog owner) -{ - this (owner, "", false, owner.getGraphicsConfiguration ()); -} - -/** - * Initializes a new instance of Dialog with the specified, - * parent and title, that is resizable. - * - * @exception IllegalArgumentException If parent is null. This exception is - * always thrown when GraphicsEnvironment.isHeadless() returns true. - * - * @since 1.2 - */ -public -Dialog (Dialog owner, String title) -{ - this (owner, title, false, owner.getGraphicsConfiguration ()); -} + /** + * @serial Indicates whether or not this dialog box is modal. + */ + private boolean modal; -/** - * Initializes a new instance of Dialog with the specified, - * parent, title and modality, that is resizable. - * - * @exception IllegalArgumentException If parent is null. This exception is - * always thrown when GraphicsEnvironment.isHeadless() returns true. - * - * @since 1.2 - */ -public -Dialog (Dialog owner, String title, boolean modal) -{ - this (owner, title, modal, owner.getGraphicsConfiguration ()); -} + /** + * @serial Indicates whether or not this dialog box is resizable. + */ + private boolean resizable = true; -/** - * Initializes a new instance of Dialog with the specified, - * parent, title, modality and GraphicsConfiguration, - * that is resizable. - * - * @exception IllegalArgumentException If parent is null, the - * GraphicsConfiguration is not a screen device or - * GraphicsEnvironment.isHeadless() returns true. - * - * @since 1.4 - */ -public -Dialog (Dialog parent, String title, boolean modal, GraphicsConfiguration gc) -{ - super (parent, parent.getGraphicsConfiguration ()); + /** + * @serial The title string for this dialog box, which can be + * null. + */ + private String title; - // A null title is equivalent to an empty title - this.title = (title != null) ? title : ""; - this.modal = modal; - visible = false; + /** + * This field indicates whether the dialog is undecorated or not. + */ + private boolean undecorated = false; - setLayout (new BorderLayout ()); -} + /** + * Indicates that we are blocked for modality in show + */ + private boolean blocked = false; -/*************************************************************************/ + /** + * Secondary EventQueue to handle AWT events while we are blocked for + * modality in show. + */ + private EventQueue eq2 = null; -/* - * Instance Variables - */ + /** + * Initializes a new instance of Dialog with the specified + * parent, that is resizable and not modal, and which has no title. + * + * @param parent The parent frame of this dialog box. + * @exception IllegalArgumentException If the owner's GraphicsConfiguration + * is not from a screen device, or if owner is null. This exception is + * always thrown when GraphicsEnvironment.isHeadless() returns true. + */ + public Dialog(Frame parent) + { + this(parent, "", false); + } -/** - * Returns the title of this dialog box. - * - * @return The title of this dialog box. - */ -public String -getTitle() -{ - return(title); -} + /** + * Initializes a new instance of Dialog with the specified + * parent and modality, that is resizable and which has no title. + * + * @param parent The parent frame of this dialog box. + * @param modal true if this dialog box is modal, + * false otherwise. + * + * @exception IllegalArgumentException If the owner's GraphicsConfiguration + * is not from a screen device, or if owner is null. This exception is + * always thrown when GraphicsEnvironment.isHeadless() returns true. + */ + public Dialog(Frame parent, boolean modal) + { + this(parent, "", modal); + } -/*************************************************************************/ + /** + * Initializes a new instance of Dialog with the specified + * parent, that is resizable and not modal, and which has the specified + * title. + * + * @param parent The parent frame of this dialog box. + * @param title The title string for this dialog box. + * + * @exception IllegalArgumentException If the owner's GraphicsConfiguration + * is not from a screen device, or if owner is null. This exceptionnis + * always thrown when GraphicsEnvironment.isHeadless() returns true. + */ + public Dialog(Frame parent, String title) + { + this(parent, title, false); + } -/** - * Sets the title of this dialog box to the specified string. - * - * @param title The new title. - */ -public synchronized void -setTitle(String title) -{ - // A null title is equivalent to an empty title - this.title = (title != null) ? title : ""; + /** + * Initializes a new instance of Dialog with the specified, + * parent, title, and modality, that is resizable. + * + * @param parent The parent frame of this dialog box. + * @param title The title string for this dialog box. + * @param modal true if this dialog box is modal, + * false otherwise. + * + * @exception IllegalArgumentException If owner is null or + * GraphicsEnvironment.isHeadless() returns true. + */ + public Dialog(Frame parent, String title, boolean modal) + { + this(parent, title, modal, parent.getGraphicsConfiguration()); + } - if (peer != null) - { - DialogPeer d = (DialogPeer) peer; - d.setTitle (title); - } -} + /** + * Initializes a new instance of Dialog with the specified, + * parent, title, modality and GraphicsConfiguration, that is + * resizable. + * + * @param parent The parent frame of this dialog box. + * @param title The title string for this dialog box. + * @param modal true if this dialog box is modal, + * false otherwise. + * @param gc The GraphicsConfiguration object to use. If + * null the GraphicsConfiguration of the target + * frame is used. + * + * @exception IllegalArgumentException If owner is null, the + * GraphicsConfiguration is not a screen device or + * GraphicsEnvironment.isHeadless() returns true. + * @since 1.4 + */ + public Dialog(Frame parent, String title, boolean modal, + GraphicsConfiguration gc) + { + super(parent, (gc == null) ? parent.getGraphicsConfiguration() : gc); -/*************************************************************************/ + // A null title is equivalent to an empty title + this.title = (title != null) ? title : ""; + this.modal = modal; + visible = false; -/** - * Tests whether or not this dialog box is modal. - * - * @return true if this dialog box is modal, - * false otherwise. - */ -public boolean -isModal() -{ - return(modal); -} + setLayout(new BorderLayout()); + } -/*************************************************************************/ + /** + * Initializes a new instance of Dialog with the specified, + * parent, that is resizable. + * + * @param owner The parent frame of this dialog box. + * + * @exception IllegalArgumentException If parent is null. This exception is + * always thrown when GraphicsEnvironment.isHeadless() returns true. + * + * @since 1.2 + */ + public Dialog(Dialog owner) + { + this(owner, "", false, owner.getGraphicsConfiguration()); + } -/** - * Changes the modality of this dialog box. This can only be done before - * the peer is created. - * - * @param modal true to make this dialog box modal, - * false to make it non-modal. - */ -public void -setModal(boolean modal) -{ - this.modal = modal; -} + /** + * Initializes a new instance of Dialog with the specified, + * parent and title, that is resizable. + * + * @param owner The parent frame of this dialog box. + * @param title The title string for this dialog box. + * + * @exception IllegalArgumentException If parent is null. This exception is + * always thrown when GraphicsEnvironment.isHeadless() returns + * true. + * @since 1.2 + */ + public Dialog(Dialog owner, String title) + { + this(owner, title, false, owner.getGraphicsConfiguration()); + } -/*************************************************************************/ + /** + * Initializes a new instance of Dialog with the specified, + * parent, title and modality, that is resizable. + * + * @param owner The parent frame of this dialog box. + * @param title The title string for this dialog box. + * @param modal true if this dialog box is modal, + * false otherwise. + * + * @exception IllegalArgumentException If parent is null. This exception is + * always thrown when GraphicsEnvironment.isHeadless() returns true. + * @since 1.2 + */ + public Dialog(Dialog owner, String title, boolean modal) + { + this(owner, title, modal, owner.getGraphicsConfiguration()); + } -/** - * Tests whether or not this dialog box is resizable. - * - * @return true if this dialog is resizable, false, - * otherwise. - */ -public boolean -isResizable() -{ - return(resizable); -} + /** + * Initializes a new instance of Dialog with the specified, + * parent, title, modality and GraphicsConfiguration, that is + * resizable. + * + * @param parent The parent frame of this dialog box. + * @param title The title string for this dialog box. + * @param modal true if this dialog box is modal, + * false otherwise. + * @param gc The GraphicsConfiguration object to use. If + * null the GraphicsConfiguration of the target + * frame is used. + * + * @exception IllegalArgumentException If parent is null, the + * GraphicsConfiguration is not a screen device or + * GraphicsEnvironment.isHeadless() returns true. + * + * @since 1.4 + */ + public Dialog(Dialog parent, String title, boolean modal, + GraphicsConfiguration gc) + { + super(parent, (gc == null) ? parent.getGraphicsConfiguration() : gc); -/*************************************************************************/ + // A null title is equivalent to an empty title + this.title = (title != null) ? title : ""; + this.modal = modal; + visible = false; -/** - * Changes the resizability of this dialog box. - * - * @param resizable true to make this dialog resizable, - * false to make it non-resizable. - */ -public synchronized void -setResizable(boolean resizable) -{ - this.resizable = resizable; - if (peer != null) - { - DialogPeer d = (DialogPeer) peer; - d.setResizable (resizable); - } -} + setLayout(new BorderLayout()); + } -/*************************************************************************/ + /** + * Returns the title of this dialog box. + * + * @return The title of this dialog box. + */ + public String getTitle() + { + return title; + } -/** - * Creates this object's native peer. - */ -public synchronized void -addNotify() -{ - if (peer == null) - peer = getToolkit ().createDialog (this); - super.addNotify (); -} + /** + * Sets the title of this dialog box to the specified string. + * + * @param title the new title. If null an empty + * title will be set. + */ + public synchronized void setTitle(String title) + { + // A null title is equivalent to an empty title + this.title = (title != null) ? title : ""; + + if (peer != null) + { + DialogPeer d = (DialogPeer) peer; + d.setTitle(title); + } + } -/*************************************************************************/ + /** + * Tests whether or not this dialog box is modal. + * + * @return true if this dialog box is modal, false + * otherwise. + */ + public boolean isModal() + { + return modal; + } -/** - * Makes this dialog visible and brings it to the front. - * If the dialog is modal and is not already visible, this call will not - * return until the dialog is hidden by someone calling hide or dispose. - * If this is the event dispatching thread we must ensure that another event - * thread runs while the one which invoked this method is blocked. - * @specnote Deprecated starting in 1.5. - */ -@Deprecated -public synchronized void -show() -{ - super.show(); - - if (isModal()) - { - // If already shown (and blocked) just return - if (blocked) - return; - - /* If show is called in the dispatch thread for a modal dialog it will - block so we must run another thread so the events keep being - dispatched.*/ - if (EventQueue.isDispatchThread ()) - { - EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue(); - eq2 = new EventQueue (); - eq.push (eq2); - } - - try - { - blocked = true; - wait (); - blocked = false; - } - catch (InterruptedException e) - { - blocked = false; - } - - if (eq2 != null) - { - eq2.pop (); - eq2 = null; - } - } -} + /** + * Changes the modality of this dialog box. This can only be done before the + * peer is created. + * + * @param modal true to make this dialog box modal, + * false to make it non-modal. + */ + public void setModal(boolean modal) + { + this.modal = modal; + } -/*************************************************************************/ + /** + * Tests whether or not this dialog box is resizable. + * + * @return true if this dialog is resizable, + * false otherwise. + */ + public boolean isResizable() + { + return resizable; + } -/** - * Hides the Dialog and then - * causes show() to return if it is currently blocked. - * @specnote Deprecated starting in 1.5 - */ -@Deprecated -public synchronized void -hide () -{ - if (blocked) - { - notifyAll (); - } + /** + * Changes the resizability of this dialog box. + * + * @param resizable true to make this dialog resizable, + * false to make it non-resizable. + */ + public synchronized void setResizable(boolean resizable) + { + this.resizable = resizable; + if (peer != null) + { + DialogPeer d = (DialogPeer) peer; + d.setResizable(resizable); + } + } - super.hide(); -} + /** + * Creates this object's native peer. + */ + public synchronized void addNotify() + { + if (peer == null) + peer = getToolkit().createDialog(this); + super.addNotify(); + } -/*************************************************************************/ + /** + * Makes this dialog visible and brings it to the front. If the dialog is + * modal and is not already visible, this call will not return until the + * dialog is hidden by someone calling hide or dispose. If this is the event + * dispatching thread we must ensure that another event thread runs while the + * one which invoked this method is blocked. + * + * @deprecated Use {@link Component#setVisible(boolean)} instead. + */ + public synchronized void show() + { + super.show(); + + if (isModal()) + { + // If already shown (and blocked) just return + if (blocked) + return; + + /* + * If show is called in the dispatch thread for a modal dialog it will + * block so we must run another thread so the events keep being + * dispatched. + */ + if (EventQueue.isDispatchThread()) + { + EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue(); + eq2 = new EventQueue(); + eq.push(eq2); + } + + try + { + blocked = true; + wait(); + blocked = false; + } + catch (InterruptedException e) + { + blocked = false; + } + + if (eq2 != null) + { + eq2.pop(); + eq2 = null; + } + } + } -/** - * Disposes the Dialog and then causes show() to return - * if it is currently blocked. - */ + /** + * Hides the Dialog and then causes show() to return if it is currently + * blocked. + * + * @deprecated Use {@link Component#setVisible(boolean)} instead. + */ + public synchronized void hide() + { + if (blocked) + { + notifyAll(); + } -public synchronized void -dispose () -{ - if (blocked) - { - notifyAll (); - } + super.hide(); + } - super.dispose(); -} + /** + * Disposes the Dialog and then causes show() to return if it is currently + * blocked. + */ + public synchronized void dispose() + { + if (blocked) + { + notifyAll(); + } -/*************************************************************************/ + super.dispose(); + } -/** - * Returns a debugging string for this component. - * - * @return A debugging string for this component. - */ -protected String -paramString() -{ - return ("title+" + title + ",modal=" + modal + - ",resizable=" + resizable + "," + super.paramString()); -} + /** + * Returns a debugging string for this component. + * + * @return A debugging string for this component. + */ + protected String paramString() + { + return "title+" + title + ",modal=" + modal + ",resizable=" + resizable + + "," + super.paramString(); + } /** * Returns whether this frame is undecorated or not. * + * @return true if this dialog is undecorated, + * false otherwise. + * * @since 1.4 */ - public boolean isUndecorated () + public boolean isUndecorated() { return undecorated; } @@ -508,28 +471,42 @@ paramString() * Disables or enables decorations for this frame. This method can only be * called while the frame is not displayable. * - * @exception IllegalComponentStateException If this frame is displayable. + * @param undecorated true to disable dialog decorations, + * false otherwise. * + * @exception IllegalComponentStateException If this frame is displayable. * @since 1.4 */ - public void setUndecorated (boolean undecorated) + public void setUndecorated(boolean undecorated) { - if (isDisplayable ()) - throw new IllegalComponentStateException (); + if (isDisplayable()) + throw new IllegalComponentStateException(); this.undecorated = undecorated; } - - protected class AccessibleAWTDialog extends AccessibleAWTWindow + + /** + * Accessibility support for Dialog. + */ + protected class AccessibleAWTDialog + extends AccessibleAWTWindow { private static final long serialVersionUID = 4837230331833941201L; + /** + * Gets the role of this object. + * @return AccessibleRole.DIALOG + */ public AccessibleRole getAccessibleRole() { return AccessibleRole.DIALOG; } - - public AccessibleStateSet getAccessibleState() + + /** + * Gets the state set of this object. + * @return The current state of this dialog. + */ + public AccessibleStateSet getAccessibleStateSet() { AccessibleStateSet states = super.getAccessibleStateSet(); if (isResizable()) @@ -539,11 +516,11 @@ paramString() return states; } } - + /** - * Gets the AccessibleContext associated with this Dialog. - * The context is created, if necessary. - * + * Gets the AccessibleContext associated with this Dialog. The + * context is created, if necessary. + * * @return the associated context */ public AccessibleContext getAccessibleContext() @@ -554,5 +531,4 @@ paramString() return accessibleContext; } -} // class Dialog - +} -- cgit v1.2.1