aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/awt/Dialog.java
blob: 7b84907931655bab2c41bfac72c654b4381f8f9d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/* 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;
}