summaryrefslogtreecommitdiff
path: root/libjava/javax/swing/JDialog.java
diff options
context:
space:
mode:
authorgraydon <graydon@138bc75d-0d04-0410-961f-82ee72b054a4>2004-05-27 06:17:44 +0000
committergraydon <graydon@138bc75d-0d04-0410-961f-82ee72b054a4>2004-05-27 06:17:44 +0000
commit7be583b48b04633a592ab530473b7f995955b160 (patch)
tree2ffcb4d3889f27364cadf6d34acb5b88d5881e8a /libjava/javax/swing/JDialog.java
parent765f486dfed484416d8afd28184f4cddb742a7d9 (diff)
downloadgcc-7be583b48b04633a592ab530473b7f995955b160.tar.gz
2004-05-25 David Jee <djee@redhat.com>
* java/awt/Container.java (remove): Set component's parent to null only after we removed the component from its parent's layout manager. 2004-05-25 David Jee <djee@redhat.com> * gnu/java/awt/peer/gtk/GtkComponentPeer.java (GtkComponentPeer): Set bounds regardless of whether awtComponent is valid. * gnu/java/awt/peer/gtk/GtkListPeer.java (getSize): Change native method declaration. (minimumSize): Pass visible row count into getSize(). (preferredSize): Likewise. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c (Java_gnu_java_awt_peer_gtk_GtkListPeer_getSize): Use scroll window's natural size. Use visible row count to determine the final height value to return. 2004-05-21 Graydon Hoare <graydon@redhat.com> * gnu/java/awt/peer/gtk/GdkGraphics2D.java (setClip): Minor correction to order of operations. * javax/swing/JScrollPane.java: Extend sketchy implementation. * javax/swing/ScrollPaneLayout.java: Likewise. * javax/swing/JViewPort.java: Likewise. * javax/swing/ViewportLayout.java: Likewise. * javax/swing/JComponent.java: Rewrite. * javax/swing/RepaintManager.java: Likewise. * javax/swing/JLayeredPane.java: Change validate() to revalidate(). * javax/swing/JList.java (setSelectedIndices): (getSelectedIndices): (getSelectedValues): New functions. (getPreferredScrollableViewportSize): Return preferred size. (getScrollableUnitIncrement): (getScrollableBlockIncrement): Initial implementations. * javax/swing/JRootPane.java: Clean up slightly. (getUI): (setUI): (updateUI): (getUIClassID): (isValidateRoot): Add overrides from JComponent. * javax/swing/JScrollBar.java: Set default orientation to VERTICAL. * javax/swing/UIManager.java (getDimension): Return the dimension. * javax/swing/plaf/basic/BasicButtonUI.java: Set component opaque. * javax/swing/plaf/basic/BasicLabelUI.java: Likewise. * javax/swing/plaf/basic/BasicMenuItemUI.java: Likewise. * javax/swing/plaf/basic/BasicProgressBarUI.java: Likewise. * javax/swing/plaf/basic/BasicSeparatorUI.java: Likewise. * javax/swing/plaf/basic/BasicSliderUI.java: Likewise. * javax/swing/plaf/basic/BasicTabbedPaneUI.java: Likewise. * javax/swing/plaf/basic/BasicRootPaneUI.java: Likewise, and set background. * javax/swing/plaf/basic/BasicListUI.java: Likewise, and improve a bit. * javax/swing/plaf/basic/BasicScrollBarUI.java: Likewise, and adjust calculations. * javax/swing/plaf/basic/BasicViewportUI.java: Likewise, and improve a bit. * javax/swing/plaf/basic/BasicLookAndFeel.java (Button.margin): Shrink. * jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGlyphVector.c: Hack to set horizontal always, workaround pango. * jni/gtk-peer/gtkcairopeer.h: Change to match pattern API. * jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c: Synchronize more often, check cairo status after ops, handle changes to cairo pattern API, check for disposal. 2004-05-21 Olga Rodimina <rodimina@redhat.com> * javax/swing/plaf/basic/BasicMenuItemUI.java: (BasicMenuItemUI): Create propertyChangeListener. (getPath):Implemented. (installListeners): Add propertyChangeListener to menuItem. (uninstallListeners): Remove propertyChangeListener from menuItem. (update): Implemented. * javax/swing/plaf/basic/BasicMenuUI.MouseInputHandler: (mouseEntered): Take insets of popup menu into account when calculating position of popup menu. 2004-05-18 Olga Rodimina <rodimina@redhat.com> * Makefile.am: Added new file. * Makefile.in: Regenerate. * javax/swing/JMenuBar.java: Started implementation. * javax/swing/JPopupMenu.java: (setVisible): Fixed location of lightweight/mediumweight popup menu. (show): Fixed location of PopupMenu. * javax/swing/plaf/basic/BasicMenuBarUI.java: New file. UI Delegate for JMenuBar. * javax/swing/plaf/basic/BasicMenuUI.MouseInputHandler: (mouseEntered): Corrected position of the submenu. 2004-05-18 Thomas Fitzsimmons <fitzsim@redhat.com> * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuPeer.c: Remove calls to _gtk_accel_group_attach. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c: Likewise. * gnu/java/awt/peer/gtk/GtkButtonPeer.java: Give gtkSetFont package access. Don't override setFont. * gnu/java/awt/peer/gtk/GtkCheckboxPeer.java: Likewise. * gnu/java/awt/peer/gtk/GtkComponentPeer.java: Give gtkWidgetRequestFocus package access. * gnu/java/awt/peer/gtk/GtkLabelPeer.java: Don't override setFont. * gnu/java/awt/peer/gtk/GtkListPeer.java: Override gtkSetFont. Give gtkWidgetRequestFocus package access. * gnu/java/awt/peer/gtk/GtkTextAreaPeer.java: Give gtkWidgetRequestFocus package access. Don't override setFont. * gnu/java/awt/peer/gtk/GtkTextFieldPeer.java: Don't override setFont. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c (gtkSetLabel): Move call to gtk_bin_get_child into GDK critical region. (gtkSetFont): Likewise. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c (gtkSetFont): Implement. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c (gtkSetFont): Whitespace fix. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c (gtkWidgetSetUsize): Remove method. 2004-05-18 David Jee <djee@redhat.com> * java/awt/image/MemoryImageSource.java (newPixels(int,int,int,int,boolean)): Set only the specified rectangle of pixels. (newPixels(byte[],ColorModel,int,int)): Implement. (newPixels(int[],ColorModel,int,int)): Implement. 2004-05-18 Olga Rodimina <rodimina@redhat.com> * Makefile.am: Added new file. * Makefile.in: Regenerate. * javax/swing/JMenu.java: Started implementation. * javax/swing/JPopupMenu.java: (insert): If specified index is -1, then add component at the end. (isPopupTrigger): Reimplemented. (JPopupMenu.LightWeightPopup): setBounds of the lightWeightPopup before adding it to the layeredPane. (javax/swing/plaf/basic/BasicIconFactory.java): (getMenuArrowIcon): Implemented. * javax/swing/plaf/basic/BasicMenuItemUI.java: (getPreferredSize): Add size of the arrow icon if this menu item is instance of JMenu. (paintMenuItem): Paint arrow icon if this menu item is a submenu. * javax/swing/plaf/basic/BasicMenuUI.java: New File. UI Delegate for JMenu. 2004-05-17 Thomas Fitzsimmons <fitzsim@redhat.com> * gnu/java/awt/peer/gtk/GtkComponentPeer.java (postKeyEvent): Post KEY_TYPED events. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c (generates_key_typed_event): Remove function. 2004-05-17 Olga Rodimina <rodimina@redhat.com> * javax/swing/JRootPane.java (JRootPane.RootLayout): Reimplemented to set bounds of contentPane and menuBar. (setJMenuBar): Add menu bar to the layered pane. (createLayeredPane): Set layout of layeredPane to null. * javax/swing/JLayeredPane.java: (addImpl): Calculate index of the component in the layeredPane according to the specified position within the layer. 2004-05-17 David Jee <djee@redhat.com> * gnu/java/awt/peer/gtk/GtkImagePainter.java (setPixels): Change color model to the default model after converting pixels. * java/awt/image/MemoryImageSource.java (newPixels): Set only the specified rectangle of pixels. 2004-05-13 Thomas Fitzsimmons <fitzsim@redhat.com> * libgcj.spec.in (lib): Add -l-java-awt -l-java-applet -l-java-beans -l-javax-accessibility -l-javax-swing. * java/awt/AWTEvent.java (toString): Print source's name rather than the source itself. 2004-05-12 Thomas Fitzsimmons <fitzsim@redhat.com> * gnu/java/awt/peer/gtk/GtkToolkit.java (loadSystemColors): Make native. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c (gdk_color_to_java_color): New function. * jni/gtk-peer/gtkpeer.h: Add SystemColor defines. 2004-05-12 David Jee <djee@redhat.com> * java/awt/image/RGBImageFilter.java: Initialize origmodel as null. (makeColor): Fix pixel component order. (filterRGBPixels): Fix pixel iteration. (setPixels): Add extra checks for index color model. Convert pixels to default color model if necessary. (convertColorModelToDefault): New override method for byte pixels. (convertColorModelToDefault): For int pixels, fix pixel iteration. (makeColorbyDefaultCM): New override method for byte pixels. (makeColorbyDefaultCM): For int pixel, add color model as argument. (makeColor): Fix pixel component order. 2004-05-11 Kim Ho <kho@redhat.com> * javax/swing/Box.java: Comment out more parts of Box.Filler. 2004-05-11 Kim Ho <kho@redhat.com> * javax/swing/Box.java: Remove reference to AccessibleAWTComponent so it compiles again. 2004-05-10 Thomas Fitzsimmons <fitzsim@redhat.com> * gnu/java/awt/peer/gtk/GtkListPeer.java, jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c: Update implementation of list peer to use GtkTreeView instead of deprecated GtkCList. 2004-05-07 Thomas Fitzsimmons <fitzsim@redhat.com> * gnu/java/awt/peer/gtk/GtkComponentPeer.java (gtkWidgetDispatchKeyEvent): Remove keyChar parameter. (handleEvent): Remove keyChar argument to gtkWidgetDispatchKeyEvent calls. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c: Fix compiler warnings. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c: Likewise. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuPeer.c: Likewise. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c: Likewise. 2004-05-06 Thomas Fitzsimmons <fitzsim@redhat.com> * gnu/java/awt/peer/gtk/GtkComponentPeer.java (gtkWidgetRequestFocus): Mark protected. (GtkComponentPeer): Only set the peer's bounds if its component is valid. * java/awt/Component.java (static): Set the default keyboard focus manager. (requestFocus(), requestFocus(boolean), requestFocusInWindow(), requestFocusInWindow(temporary)): Don't request focus if the component is not showing. Get tree lock before traversing component hierarchy. * java/awt/DefaultKeyboardFocusManager.java (dispatchEvent): Only set the global focus owner if it is not a Window. (processKeyEvent): Consume keystrokes associated with the focus traversal keystroke. (focusPreviousComponent, focusNextComponent, upFocusCycle, downFocusCycle): Call requestFocusInWindow instead of requestFocus. * java/awt/EventDispatchThread.java (run): Move setting of default keyboard focus manager to Component.java. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c (awt_keycode_to_keysym): New function. (gtkWidgetDispatchKeyEvent): Finish implementation. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c (pre_event_handler): Add FIXME comment. * gnu/java/awt/peer/gtk/GtkTextAreaPeer.java, jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c (gtkWidgetRequestFocus): New method. * java/awt/TextArea.java (TextArea): Set focus traversal keys to disable Tab and Shift-Tab keystrokes. (addNotify, appendText, insertText, replaceText): Simplify peer retrieval code. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c (connectSignals): Remove connections to "commit" signals. Remove C++-style comments. * gnu/java/awt/peer/gtk/GtkButtonPeer.java, jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c (handleEvent): Activate GTK button when the space bar key is pressed. (gtkActivate): New method. 2004-05-06 David Jee <djee@redhat.com> * java/awt/image/CropImageFilter.java (setPixels): Implement for byte array pixels. * java/awt/image/ReplicateScaleFilter.java (setPixels): Implement for byte array pixels. (replicatePixels): Overload for byte array pixels. 2004-05-06 Kim Ho <kho@redhat.com> * javax/swing/Box.java: (getAccessibleContext): Return an instance of the correct class. 2004-05-05 David Jee <djee@redhat.com> * gnu/java/awt/peer/gtk/GdkGraphics.java (drawImage): When component is null, use SystemColor.window as the default bgcolor. * gnu/java/awt/peer/gtk/GtkImage.java (setPixels): We can avoid iterating through the pixel rows only when height is 1. * java/awt/Image.java (getScaledInstance): Partially implement. * java/awt/image/CropImageFilter.java (setProperties): Fix "filter" property. (setPixels): Implement. * java/awt/image/ReplicateScaleFilter.java (setDimensions): Use scaled dimensions. (setPixels): Implement. (replicatePixels): New method. 2004-05-05 David Jee <djee@redhat.com> * gnu/java/awt/peer/gtk/GtkImagePainter.java (convertPixels): If either pixels or model is null, return null. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImagePainter.c (Java_gnu_java_awt_peer_gtk_GtkImagePainter_drawPixels): If jpixels is null, do nothing and return. 2004-05-03 Kim Ho <kho@redhat.com> * gnu/java/awt/peer/gtk/GtkDialogPeer.java: (getGraphics): Like GtkFramePeer, the Graphics object needs to be translate to account for window decorations. (postMouseEvent): New method. Account for translation. (postExposeEvent): ditto. * javax/swing/Box.java: Stubbed. * javax/swing/JDialog.java: Ran through jalopy to fix indentation. (JDialog): Call SwingUtilities' getOwnerFrame for null owners. (setLayout): Check isRootPaneCheckingEnabled * javax/swing/JOptionPane.java: Re-implemented. * javax/swing/SwingUtilities.java: (getOwnerFrame): Static method to grab a default owner frame for Dialogs that don't specify owners. * javax/swing/event/SwingPropertyChangeSupport.java: (firePropertyChange): Fix early exit condition. * javax/swing/plaf/basic/BasicLabelUI.java: (paint): Avoid painting text if it is null or empty. * javax/swing/plaf/basic/BasicOptionPaneUI.java: Implement. 2004-05-03 Olga Rodimina <rodimina@redhat.com> * Makefile.am: Added new file. * Makefile.in: Regenerate. * javax/swing/JPopupMenu.java: Started implementation. * javax/swing/JWindow.java (JWindow): call super() if parent for window is not specified. * javax/swing/plaf/basic/BasicPopupMenuUI.java: New File. UI Delegate for JPopupMenu. 2004-04-30 Olga Rodimina <rodimina@redhat.com> * javax/swing/JApplet.java: Indicated that JApplet implements RootPaneContainer and made method of this interface public. * javax/swing/JFrame.java: Ditto. * javax/swing/JWindow.java: Ditto. 2004-04-29 Thomas Fitzsimmons <fitzsim@redhat.com> * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c (nativeSetBounds): Call gdk_window_move in addition to gtk_window_move. * java/applet/Applet.java (preferredSize): Call parent's preferredSize if the applet stub is null. (minimumSize): Likewise for parent's minimumSize. 2004-04-27 Olga Rodimina <rodimina@redhat.com> * javax/swing/JMenuItem.java (createActionPropertyChangeListener): Implemented. (processMouseEvent): Ditto. (fireMenuDragMouseEntered): Ditto. (fireMenuDragMouseExited): Ditto. (fireMenuDragMouseDragged): Ditto. (fireMenuDragMouseReleased): Ditto. (menuSelectionChanged): Ditto. (getSubElements): Ditto. (getComponent): Ditto. (addMenuDragMouseListener): Ditto. (removeMenuDragMouseListener):Ditto. (addMenuKeyListener): Ditto. (removeMenuKeyListener): Ditto. * javax/swing/plaf/basic/BasicMenuItemUI.java (doClick): Imlemented. * javax/swing/plaf/basic/BasicMenuItemUI.MouseInputHandler: Don't handle mouse events here. Pass them to MenuSelectionManager. 2004-04-26 Olga Rodimina <rodimina@redhat.com> Used correct version of jalopy configuration file to fix style in the files below. 2004-04-26 Olga Rodimina <rodimina@redhat.com> * javax/swing/JCheckBoxMenuItem.java: Fixed style and removed unnecessary comments. * javax/swing/JMenuItem.java: Ditto. * javax/swing/JRadioButtonMenuItem.java: Ditto. * javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java: Ditto. * javax/swing/plaf/basic/BasicMenuItemUI.java: Ditto. * javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java: Ditto. 2004-04-23 Thomas Fitzsimmons <fitzsim@redhat.com> * gnu_java_awt_peer_gtk_GtkWindowPeer.c: Change FIXME comment to C-style. * gnu_java_awt_peer_gtk_GtkWindowPeer.c: Add FIXME comment. * java/awt/ContainerOrderFocusTraversalPolicy.java (getComponentAfter): Start from current component and work up the component hierarchy until an acceptable component is found. Synchronize on tree lock. (getComponentBefore): Likewise. 2004-04-22 Thomas Fitzsimmons <fitzsim@redhat.com> * gnu/java/awt/peer/gtk/GtkComponentPeer.java: Remove focus-related debugging messages. * java/awt/DefaultKeyboardFocusManager.java: Likewise. * java/awt/EventDispatchThread.java: Likewise. * java/awt/KeyboardFocusManager.java: Likewise. * java/awt/Window.java: Likewise. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c: Likewise. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c: Likewise. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c: Change new C++-style comments to C-style comments. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c: Likewise. * gnu/java/awt/peer/gtk/GtkComponentPeer.java, jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c (handleEvent): Dispatch key press and key release events to backing widget. (requestFocus): Post a FOCUS_GAINED event to the event queue. (gtkWidgetRequestFocus): New method. (gtkWidgetDispatchKeyEvent): Likewise. * java/awt/Component.java (requestFocus, requestFocus(boolean), requestFocusInWindow, requestFocusInWindow(boolean), getFocusCycleRootAncestor, nextFocus, transferFocus, transferFocusBackward, transferFocusUpCycle, hasFocus, isFocusOwner): Implement and document focus-handling methods. (setFocusTraversalKeys): Inherit focus traversal keys when keystrokes argument is null. Fix focus-handling documentation throughout class. * java/awt/Container.java (setFocusTraversalKeys, getFocusTraversalKeys, areFocusTraversalKeysSet, isFocusCycleRoot, setFocusTraversalPolicy, getFocusTraversalPolicy, isFocusTraversalPolicySet, setFocusCycleRoot, isFocusCycleRoot, transferFocusDownCycle): Implement and document focus-handling methods. (transferFocusBackward): Remove method. (readObject, writeObject): Implement and document serialization methods. * java/awt/ContainerOrderFocusTraversalPolicy.java: Implement and document. * java/awt/DefaultFocusTraversalPolicy.java: Implement and document. * java/awt/DefaultKeyboardFocusManager.java: Implement and partially document. * java/awt/EventDispatchThread.java (run): Set default keyboard focus manager. Attempt to dispatch each event to the keyboard focus manager before normal dispatch. * java/awt/KeyboardFocusManager.java: Implement and partially document. * java/awt/Window.java (Window): Set focusCycleRoot to true. (show): Focus initial component when window is shown for the first time. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c (pre_event_handler): Replace complex key press and key release logic with simple callbacks into GtkComponentPeer. * jni/gtk-peer/gtkpeer.h: Fix FOCUS_GAINED/FOCUS_LOST reversal. 2004-04-21 Olga Rodimina <rodimina@redhat.com> * javax/swing/MenuSelectionManager.java (componentForPoint): Added new method. (defaultManager): New Method. Implemented. (getSelectedPath): Ditto. (isComponentPartOfCurrentMenu): Ditto. (processKeyEvent): Added new method. (processMouseEvent): New Method. Implemented. (setSelectedPath): Ditto. (getPath): Ditto. 2004-04-19 Kim Ho <kho@redhat.com> * java/awt/Container.java: (remove): Set the component's parent to null. (getComponentAt): Implement. * javax/swing/JComponent.java: (JComponent): Initialize defaultLocale (getDefaultLocale): Implement. (setDefaultLocale): ditto. * javax/swing/JSlider.java: (JSlider): Fix calculation of value. * javax/swing/JSplitPane.java: Implement. * javax/swing/plaf/basic/BasicLookAndFeel.java: Change SplitPane's default divider size. * javax/swing/plaf/basic/BasicScrollBarUI.java: (paint): Remove unused code. * javax/swing/plaf/basic/BasicSplitPaneDivider.java: Added comments and ran through jalopy. (setBasicSplitPaneUI): Get reference to hidden divider and set up one touch buttons if necessary. (setBorder): Fire propertyChangeEvent only if borders are different. (getPreferredSize): Defer to layout manager. (propertyChange): Implement. (oneTouchExpandableChanged): ditto. (createLeftOneTouchButton): Use BasicArrowButton. (createRightOneTouchButton): ditto. (moveDividerTo): New method. Moves the divider to a set location based on the last divider location. (BasicSplitPaneDivider::MouseHandler): Implement. (BasicSplitPaneDivider::OneTouchButton): Removed. (BasicSplitPaneDivider::DragController): Implement. (BasicSplitPaneDivider::VerticalDragController): ditto. (BasicSplitPaneDivider::DividerLayout): ditto. * javax/swing/plaf/basic/BasicSplitPaneUI.java: Reimplement. * javax/swing/plaf/basic/BasicTabbedPaneUI.java: (calculateLayoutInfo): Don't show component if it's null. (paintTab): Fix title paint logic. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82314 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/javax/swing/JDialog.java')
-rw-r--r--libjava/javax/swing/JDialog.java674
1 files changed, 470 insertions, 204 deletions
diff --git a/libjava/javax/swing/JDialog.java b/libjava/javax/swing/JDialog.java
index 8d43b761d96..b9f547e5542 100644
--- a/libjava/javax/swing/JDialog.java
+++ b/libjava/javax/swing/JDialog.java
@@ -35,7 +35,6 @@ 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 javax.swing;
import java.awt.BorderLayout;
@@ -45,251 +44,518 @@ import java.awt.Dialog;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
+import java.awt.GraphicsConfiguration;
import java.awt.LayoutManager;
import java.awt.event.KeyEvent;
import java.awt.event.WindowEvent;
+import java.awt.IllegalComponentStateException;
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
+
/**
- * Unlike JComponent derivatives, JDialog inherits from
- * java.awt.Dialog. But also lets a look-and-feel component to its work.
+ * Unlike JComponent derivatives, JDialog inherits from java.awt.Dialog. But
+ * also lets a look-and-feel component to its work.
*
- * @author Ronald Veldema (rveldema@cs.vu.nl)
+ * @author Ronald Veldema (rveldema_AT_cs.vu.nl)
*/
-public class JDialog extends Dialog implements Accessible, WindowConstants
+public class JDialog extends Dialog implements Accessible, WindowConstants,
+ RootPaneContainer
{
- protected AccessibleContext accessibleContext;
-
- private int close_action = HIDE_ON_CLOSE;
-
- /***************************************************
- *
- *
- * constructors
- *
- *
- *************/
-
- public JDialog(Frame owner)
- {
- this(owner, "dialog");
- }
-
- public JDialog(Frame owner,
- String s)
- {
- this(owner, s, true);
- }
-
- public JDialog(Frame owner,
- String s,
- boolean modeld)
- {
- super(owner, s, modeld);
- }
-
- public JDialog(Frame owner,
- // String s,
- boolean modeld)
- {
- super(owner, "JDialog", modeld);
- }
+
+ /** DOCUMENT ME! */
+ protected AccessibleContext accessibleContext;
+
+ /** The single RootPane in the Dialog. */
+ protected JRootPane rootPane;
+
+ /** Whether checking is enabled on the RootPane */
+ protected boolean rootPaneCheckingEnabled = true;
+
+ /** The default action taken when closed. */
+ private int close_action = HIDE_ON_CLOSE;
+
+ /** Whether JDialogs are decorated by the L&F. */
+ private static boolean decorated = false;
+
+ /**
+ * Creates a new non-modal JDialog with no title
+ * using a shared Frame as the owner.
+ */
+ public JDialog()
+ {
+ this(SwingUtilities.getOwnerFrame(), "", false, null);
+ }
+
+ /**
+ * Creates a new non-modal JDialog with no title
+ * using the given owner.
+ *
+ * @param owner The owner of the JDialog.
+ */
public JDialog(Dialog owner)
{
- this(owner, "dialog");
- }
-
- public JDialog(Dialog owner,
- String s)
- {
- this(owner, s, true);
- }
-
- public JDialog(Dialog owner,
- String s,
- boolean modeld)
- {
- super(owner, s, modeld);
- }
-
-
- /***************************************************
- *
- *
- * methods, this part is shared with JDialog, JFrame
- *
- *
- *************/
+ this(owner, "", false, null);
+ }
-
- private boolean checking;
- protected JRootPane rootPane;
+ /**
+ * Creates a new JDialog with no title using the
+ * given modal setting and owner.
+ *
+ * @param owner The owner of the JDialog.
+ * @param modal Whether the JDialog is modal.
+ */
+ public JDialog(Dialog owner, boolean modal)
+ {
+ this(owner, "", modal, null);
+ }
- void setLocationRelativeTo(Component c)
- {
- }
+ /**
+ * Creates a new non-modal JDialog using the
+ * given title and owner.
+ *
+ * @param owner The owner of the JDialog.
+ * @param title The title of the JDialog.
+ */
+ public JDialog(Dialog owner, String title)
+ {
+ this(owner, title, false, null);
+ }
+ /**
+ * Creates a new JDialog using the given modal
+ * settings, title, and owner.
+ *
+ * @param owner The owner of the JDialog.
+ * @param title The title of the JDialog.
+ * @param modal Whether the JDialog is modal.
+ */
+ public JDialog(Dialog owner, String title, boolean modal)
+ {
+ this(owner, title, modal, null);
+ }
- protected void frameInit()
- {
- super.setLayout(new BorderLayout(1, 1));
- getRootPane(); // will do set/create
- }
-
+ /**
+ * Creates a new JDialog using the given modal
+ * settings, title, owner and graphics configuration.
+ *
+ * @param owner The owner of the JDialog.
+ * @param title The title of the JDialog.
+ * @param modal Whether the JDialog is modal.
+ * @param gc The Graphics Configuration to use.
+ */
+ public JDialog(Dialog owner, String title, boolean modal,
+ GraphicsConfiguration gc)
+ {
+ super(owner, title, modal, gc);
+ dialogInit();
+ }
+
+ /**
+ * Creates a new non-modal JDialog with no title
+ * using the given owner.
+ *
+ * @param owner The owner of the JDialog.
+ */
+ public JDialog(Frame owner)
+ {
+ this(owner, "", false, null);
+ }
+
+ /**
+ * Creates a new JDialog with no title using the
+ * given modal setting and owner.
+ *
+ * @param owner The owner of the JDialog.
+ * @param modal Whether the JDialog is modal.
+ */
+ public JDialog(Frame owner, boolean modal)
+ {
+ this(owner, "", modal, null);
+ }
+
+ /**
+ * Creates a new non-modal JDialog using the
+ * given title and owner.
+ *
+ * @param owner The owner of the JDialog.
+ * @param title The title of the JDialog.
+ */
+ public JDialog(Frame owner, String title)
+ {
+ this(owner, title, false, null);
+ }
+
+ /**
+ * Creates a new JDialog using the given modal
+ * settings, title, and owner.
+ *
+ * @param owner The owner of the JDialog.
+ * @param title The title of the JDialog.
+ * @param modal Whether the JDialog is modal.
+ */
+ public JDialog(Frame owner, String title, boolean modal)
+ {
+ this(owner, title, modal, null);
+ }
+
+ /**
+ * Creates a new JDialog using the given modal
+ * settings, title, owner and graphics configuration.
+ *
+ * @param owner The owner of the JDialog.
+ * @param title The title of the JDialog.
+ * @param modal Whether the JDialog is modal.
+ * @param gc The Graphics Configuration to use.
+ */
+ public JDialog(Frame owner, String title, boolean modal,
+ GraphicsConfiguration gc)
+ {
+ super((owner == null) ? SwingUtilities.getOwnerFrame() : owner,
+ title, modal, gc);
+ dialogInit();
+ }
+
+ /**
+ * This method is called to initialize the
+ * JDialog. It sets the layout used, the locale,
+ * and creates the RootPane.
+ */
+ protected void dialogInit()
+ {
+ // FIXME: Do a check on GraphicsEnvironment.isHeadless()
+ setRootPaneCheckingEnabled(false);
+ setLocale(JComponent.getDefaultLocale());
+ getRootPane(); // will do set/create
+ setRootPaneCheckingEnabled(true);
+ invalidate();
+
+ }
+
+ /**
+ * This method returns whether JDialogs will have their
+ * window decorations provided by the Look and Feel.
+ *
+ * @return Whether the window decorations are L&F provided.
+ */
+ public static boolean isDefaultLookAndFeelDecorated()
+ {
+ return decorated;
+ }
+
+ /**
+ * This method sets whether JDialogs will have their
+ * window decorations provided by the Look and Feel.
+ *
+ * @param defaultLookAndFeelDecorated Whether the window
+ * decorations are L&F provided.
+ */
+ public static void setDefaultLookAndFeelDecorated(boolean defaultLookAndFeelDecorated)
+ {
+ decorated = defaultLookAndFeelDecorated;
+ }
+
+ /**
+ * This method returns the preferred size of
+ * the JDialog.
+ *
+ * @return The preferred size.
+ */
public Dimension getPreferredSize()
{
Dimension d = super.getPreferredSize();
return d;
}
- JMenuBar getJMenuBar()
- { return getRootPane().getJMenuBar(); }
-
- void setJMenuBar(JMenuBar menubar)
- { getRootPane().setJMenuBar(menubar); }
-
+ /**
+ * This method returns the JMenuBar used
+ * in this JDialog.
+ *
+ * @return The JMenuBar in the JDialog.
+ */
+ public JMenuBar getJMenuBar()
+ {
+ return getRootPane().getJMenuBar();
+ }
- public void setLayout(LayoutManager manager)
- { super.setLayout(manager); }
+ /**
+ * This method sets the JMenuBar used
+ * in this JDialog.
+ *
+ * @param menubar The JMenuBar to use.
+ */
+ public void setJMenuBar(JMenuBar menubar)
+ {
+ getRootPane().setJMenuBar(menubar);
+ }
- void setLayeredPane(JLayeredPane layeredPane)
- { getRootPane().setLayeredPane(layeredPane); }
-
- JLayeredPane getLayeredPane()
- { return getRootPane().getLayeredPane(); }
-
- JRootPane getRootPane()
- {
- if (rootPane == null)
- setRootPane(createRootPane());
- return rootPane;
- }
-
- void setRootPane(JRootPane root)
- {
- if (rootPane != null)
- remove(rootPane);
-
- rootPane = root;
- add(rootPane, BorderLayout.CENTER);
- }
-
- JRootPane createRootPane()
- { return new JRootPane(); }
-
- Container getContentPane()
- { return getRootPane().getContentPane(); }
-
- void setContentPane(Container contentPane)
- { getRootPane().setContentPane(contentPane); }
-
- Component getGlassPane()
- { return getRootPane().getGlassPane(); }
-
- void setGlassPane(Component glassPane)
- { getRootPane().setGlassPane(glassPane); }
+ /**
+ * This method sets the LayoutManager used in the JDialog.
+ * This method will throw an Error if rootPaneChecking is
+ * enabled.
+ *
+ * @param manager The LayoutManager to use.
+ */
+ public void setLayout(LayoutManager manager)
+ {
+ if (isRootPaneCheckingEnabled())
+ throw new Error("rootPaneChecking is enabled - cannot set layout.");
+ super.setLayout(manager);
+ }
-
- protected void addImpl(Component comp, Object constraints, int index)
- { super.addImpl(comp, constraints, index); }
+ /**
+ * This method sets the JLayeredPane used in the JDialog.
+ * If the given JLayeredPane is null, then this method
+ * will throw an Error.
+ *
+ * @param layeredPane The JLayeredPane to use.
+ */
+ public void setLayeredPane(JLayeredPane layeredPane)
+ {
+ if (layeredPane == null)
+ throw new IllegalComponentStateException("layeredPane cannot be null.");
+ getRootPane().setLayeredPane(layeredPane);
+ }
+ /**
+ * This method returns the JLayeredPane used with this JDialog.
+ *
+ * @return The JLayeredPane used with this JDialog.
+ */
+ public JLayeredPane getLayeredPane()
+ {
+ return getRootPane().getLayeredPane();
+ }
- public void remove(Component comp)
- { getContentPane().remove(comp); }
-
- protected boolean isRootPaneCheckingEnabled()
- { return checking; }
+ /**
+ * This method returns the JRootPane used with this JDialog.
+ *
+ * @return The JRootPane used with this JDialog.
+ */
+ public JRootPane getRootPane()
+ {
+ if (rootPane == null)
+ setRootPane(createRootPane());
+ return rootPane;
+ }
+ /**
+ * This method sets the JRootPane used with this JDialog.
+ *
+ * @param root The JRootPane to use.
+ */
+ protected void setRootPane(JRootPane root)
+ {
+ if (rootPane != null)
+ remove(rootPane);
- protected void setRootPaneCheckingEnabled(boolean enabled)
- { checking = enabled; }
+ rootPane = root;
+ rootPane.show();
+ add(rootPane);
+ }
+ /**
+ * This method creates a new JRootPane.
+ *
+ * @return A new JRootPane.
+ */
+ protected JRootPane createRootPane()
+ {
+ return new JRootPane();
+ }
- public void update(Graphics g)
- { paint(g); }
+ /**
+ * This method returns the ContentPane
+ * in the JRootPane.
+ *
+ * @return The ContentPane in the JRootPane.
+ */
+ public Container getContentPane()
+ {
+ return getRootPane().getContentPane();
+ }
- protected void processKeyEvent(KeyEvent e)
- { super.processKeyEvent(e); }
+ /**
+ * This method sets the ContentPane to use with this
+ * JDialog. If the ContentPane given is null, this method
+ * will throw an exception.
+ *
+ * @param contentPane The ContentPane to use with the JDialog.
+ */
+ public void setContentPane(Container contentPane)
+ {
+ if (contentPane == null)
+ throw new IllegalComponentStateException("contentPane cannot be null.");
+ getRootPane().setContentPane(contentPane);
+ }
- /////////////////////////////////////////////////////////////////////////////////
-
+ /**
+ * This method returns the GlassPane for this JDialog.
+ *
+ * @return The GlassPane for this JDialog.
+ */
+ public Component getGlassPane()
+ {
+ return getRootPane().getGlassPane();
+ }
+
+ /**
+ * This method sets the GlassPane for this JDialog.
+ *
+ * @param glassPane The GlassPane for this JDialog.
+ */
+ public void setGlassPane(Component glassPane)
+ {
+ getRootPane().setGlassPane(glassPane);
+ }
+
+ /**
+ * This method is called when a component is added to the
+ * the JDialog. Calling this method with rootPaneCheckingEnabled
+ * will cause an Error to be thrown.
+ *
+ * @param comp The component to add.
+ * @param constraints The constraints.
+ * @param index The position of the component.
+ */
+ protected void addImpl(Component comp, Object constraints, int index)
+ {
+ if (isRootPaneCheckingEnabled())
+ throw new Error("rootPaneChecking is enabled - adding components disallowed.");
+ super.addImpl(comp, constraints, index);
+ }
+
+ /**
+ * This method removes a component from the JDialog.
+ *
+ * @param comp The component to remove.
+ */
+ public void remove(Component comp)
+ {
+ // The path changes if the component == root.
+ if (comp == rootPane)
+ super.remove(rootPane);
+ else
+ getContentPane().remove(comp);
+ }
- protected void processWindowEvent(WindowEvent e)
- {
- super.processWindowEvent(e);
- switch (e.getID())
+ /**
+ * This method returns whether rootPane checking is enabled.
+ *
+ * @return Whether rootPane checking is enabled.
+ */
+ protected boolean isRootPaneCheckingEnabled()
+ {
+ return rootPaneCheckingEnabled;
+ }
+
+ /**
+ * This method sets whether rootPane checking is enabled.
+ *
+ * @param enabled Whether rootPane checking is enabled.
+ */
+ protected void setRootPaneCheckingEnabled(boolean enabled)
+ {
+ rootPaneCheckingEnabled = enabled;
+ }
+
+ /**
+ * This method simply calls paint and returns.
+ *
+ * @param g The Graphics object to paint with.
+ */
+ public void update(Graphics g)
+ {
+ paint(g);
+ }
+
+
+ /**
+ * This method handles window events. This allows the JDialog
+ * to honour its default close operation.
+ *
+ * @param e The WindowEvent.
+ */
+ protected void processWindowEvent(WindowEvent e)
+ {
+ // System.out.println("PROCESS_WIN_EV-1: " + e);
+ super.processWindowEvent(e);
+ // System.out.println("PROCESS_WIN_EV-2: " + e);
+ switch (e.getID())
+ {
+ case WindowEvent.WINDOW_CLOSING:
+ {
+ switch (getDefaultCloseOperation())
{
- case WindowEvent.WINDOW_CLOSING:
- {
- switch(close_action)
- {
- case EXIT_ON_CLOSE:
- {
- System.exit(0);
- break;
- }
- case DISPOSE_ON_CLOSE:
- {
- dispose();
- break;
- }
- case HIDE_ON_CLOSE:
- {
- setVisible(false);
- break;
- }
- case DO_NOTHING_ON_CLOSE:
- break;
- }
- break;
- }
-
- case WindowEvent.WINDOW_CLOSED:
- case WindowEvent.WINDOW_OPENED:
- case WindowEvent.WINDOW_ICONIFIED:
- case WindowEvent.WINDOW_DEICONIFIED:
- case WindowEvent.WINDOW_ACTIVATED:
- case WindowEvent.WINDOW_DEACTIVATED:
+ case DISPOSE_ON_CLOSE:
+ {
+ dispose();
+ break;
+ }
+ case HIDE_ON_CLOSE:
+ {
+ setVisible(false);
break;
+ }
+ case DO_NOTHING_ON_CLOSE:
+ break;
}
- }
-
-
- /**
- * Defines what happens when this frame is closed. Can be one off
- * <code>EXIT_ON_CLOSE</code>,
- * <code>DISPOSE_ON_CLOSE</code>,
- * <code>HIDE_ON_CLOSE</code> or
- * <code>DO_NOTHING_ON_CLOSE</code>.
- * The default is <code>HIDE_ON_CLOSE</code>.
- * When <code>EXIT_ON_CLOSE</code> is specified this method calls
- * <code>SecurityManager.checkExit(0)</code> which might throw a
- * <code>SecurityException</code>. When the specified operation is
- * not one of the above a <code>IllegalArgumentException</code> is
- * thrown.
+ break;
+ }
+ case WindowEvent.WINDOW_CLOSED:
+ case WindowEvent.WINDOW_OPENED:
+ case WindowEvent.WINDOW_ICONIFIED:
+ case WindowEvent.WINDOW_DEICONIFIED:
+ case WindowEvent.WINDOW_ACTIVATED:
+ case WindowEvent.WINDOW_DEACTIVATED:
+ break;
+ }
+ }
+
+ /**
+ * This method sets the action to take
+ * when the JDialog is closed.
+ *
+ * @param operation The action to take.
*/
public void setDefaultCloseOperation(int operation)
{
- SecurityManager sm = System.getSecurityManager();
- if (sm != null && operation == EXIT_ON_CLOSE)
- sm.checkExit(0);
-
- if (operation != EXIT_ON_CLOSE && operation != DISPOSE_ON_CLOSE
- && operation != HIDE_ON_CLOSE && operation != DO_NOTHING_ON_CLOSE)
- throw new IllegalArgumentException("operation = " + operation);
-
- close_action = operation;
+ if (operation == DO_NOTHING_ON_CLOSE ||
+ operation == HIDE_ON_CLOSE ||
+ operation == DISPOSE_ON_CLOSE)
+ close_action = operation;
+ else
+ throw new IllegalArgumentException("Default close operation must be one of DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, or DISPOSE_ON_CLOSE");
}
-
+
+ /**
+ * This method returns the action taken when
+ * the JDialog is closed.
+ *
+ * @return The action to take.
+ */
public int getDefaultCloseOperation()
- { return close_action; }
+ {
+ return close_action;
+ }
- protected String paramString()
- { return "JDialog"; }
+ /**
+ * This method returns a String describing the JDialog.
+ *
+ * @return A String describing the JDialog.
+ */
+ protected String paramString()
+ {
+ return "JDialog";
+ }
- public AccessibleContext getAccessibleContext()
- {
- return null;
- }
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public AccessibleContext getAccessibleContext()
+ {
+ return null;
+ }
}