| /* Copyright (C) 2000, 2001 Free Software Foundation |
| |
| This file is part of libgcj. |
| |
| This software is copyrighted work licensed under the terms of the |
| Libgcj License. Please consult the file "LIBGCJ_LICENSE" for |
| details. */ |
| |
| package java.awt; |
| |
| 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) |
| { |
| 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); |
| super.addNotify (); |
| } |
| |
| 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; |
| } |