aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/awt/Dialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/awt/Dialog.java')
-rw-r--r--libjava/java/awt/Dialog.java150
1 files changed, 146 insertions, 4 deletions
diff --git a/libjava/java/awt/Dialog.java b/libjava/java/awt/Dialog.java
index fcd8d63..82f5fef 100644
--- a/libjava/java/awt/Dialog.java
+++ b/libjava/java/awt/Dialog.java
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* Copyright (C) 2000, 2001 Free Software Foundation
This file is part of libgcj.
@@ -8,13 +8,155 @@ details. */
package java.awt;
-/* A very incomplete placeholder. */
+import java.awt.peer.DialogPeer;
+
+/**
+ * @author Tom Tromey <tromey@redhat.com>
+ * @date April 17, 2001
+ */
public class Dialog extends Window
{
+ public Dialog (Dialog owner)
+ {
+ this (owner, "", false);
+ }
+
+ public Dialog (Dialog owner, String title)
+ {
+ this (owner, title, false);
+ }
+
+ public Dialog (Dialog owner, String title, boolean modal)
+ {
+ super (owner);
+ this.modal = modal;
+ this.title = title;
+ setLayout (new BorderLayout ());
+ }
+
public Dialog (Frame owner)
{
- super(owner);
- // FIXME
+ this (owner, "", false);
}
+
+ public Dialog (Frame owner, boolean modal)
+ {
+ this (owner, "", modal);
+ }
+
+ public Dialog (Frame owner, String title)
+ {
+ this (owner, title, false);
+ }
+
+ public Dialog (Frame owner, String title, boolean modal)
+ {
+ super (owner);
+ this.modal = modal;
+ this.title = title;
+ setLayout (new BorderLayout ());
+ }
+
+ /** Create the peer if it does not already exist. */
+ public void addNotify ()
+ {
+ if (peer == null)
+ peer = getToolkit ().createDialog (this);
+ }
+
+ public boolean isModal ()
+ {
+ return modal;
+ }
+
+ public void setModal (boolean modal)
+ {
+ this.modal = modal;
+ }
+
+ public String getTitle ()
+ {
+ return title;
+ }
+
+ public void setTitle (String title)
+ {
+ this.title = title;
+ if (peer != null)
+ {
+ DialogPeer d = (DialogPeer) peer;
+ d.setTitle (title);
+ }
+ }
+
+ public void show ()
+ {
+ boolean vis = isVisible ();
+ super.show ();
+ if (modal && vis)
+ {
+ // Don't return until something happens. We lock on the peer
+ // instead of `this' so that we don't interfere with whatever
+ // locks the caller might want to use.
+ synchronized (peer)
+ {
+ try
+ {
+ peer.wait ();
+ }
+ catch (InterruptedException _)
+ {
+ }
+ }
+ }
+ }
+
+ public void hide ()
+ {
+ super.hide ();
+ synchronized (peer)
+ {
+ peer.notify ();
+ }
+ }
+
+ public void dispose ()
+ {
+ super.dispose ();
+ synchronized (peer)
+ {
+ peer.notify ();
+ }
+ }
+
+ public boolean isResizable ()
+ {
+ return resizable;
+ }
+
+ public void setResizable (boolean resizable)
+ {
+ this.resizable = resizable;
+ if (peer != null)
+ {
+ DialogPeer d = (DialogPeer) peer;
+ d.setResizable (resizable);
+ }
+ }
+
+ protected String paramString ()
+ {
+ return ("Dialog["
+ + title + ","
+ + modal + ","
+ + resizable + "]");
+ }
+
+ // True if dialog is modal.
+ private boolean modal;
+ // True if dialog is resizable by the user.
+ private boolean resizable = false;
+ // Dialog title.
+ private String title;
}