Dialog.java 11 KB
Newer Older
1 2
/* Dialog.java -- An AWT dialog box
   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
3

4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
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., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.

21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
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. */
37 38 39 40


package java.awt;

Tom Tromey committed
41
import java.awt.peer.DialogPeer;
42 43

/**
44 45 46 47 48
 * A dialog box widget class.
 *
 * @author Aaron M. Renn <arenn@urbanophile.com>
 * @author Tom Tromey <tromey@redhat.com>
 */
49
public class Dialog extends Window
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
{

/*
 * 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.
  */
73
private boolean resizable = true;
74 75 76 77 78 79 80

/**
  * @serial The title string for this dialog box, which can be
  * <code>null</code>.
  */
private String title;

81 82 83 84 85
  /**
   * This field indicates whether the dialog is undecorated or not.
   */
  private boolean undecorated = false;

86 87 88 89 90 91 92 93
/*************************************************************************/

/*
 * Constructors
 */

/**
  * Initializes a new instance of <code>Dialog</code> with the specified
94
  * parent, that is resizable and not modal, and which has no title.
95 96
  *
  * @param parent The parent frame of this dialog box.
97 98 99 100
  *
  * @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.
101 102 103 104 105 106 107 108 109 110 111
  */
public
Dialog(Frame parent)
{
  this(parent, "", false);
}

/*************************************************************************/

/**
  * Initializes a new instance of <code>Dialog</code> with the specified
112
  * parent and modality, that is resizable and which has no title.
113 114 115 116
  *
  * @param parent The parent frame of this dialog box.
  * @param modal <true> if this dialog box is modal, <code>false</code>
  * otherwise.
117 118 119 120
  *
  * @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.
121 122 123 124 125 126 127 128 129 130 131
  */
public
Dialog(Frame parent, boolean modal)
{
  this(parent, "", modal);
}

/*************************************************************************/

/**
  * Initializes a new instance of <code>Dialog</code> with the specified
132
  * parent, that is resizable and not modal, and which has the specified
133 134 135 136
  * title.
  *
  * @param parent The parent frame of this dialog box.
  * @param title The title string for this dialog box.
137 138 139 140
  *
  * @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.
141 142 143 144 145 146 147 148
  */
public
Dialog(Frame parent, String title)
{
  this(parent, title, false);
}

/*************************************************************************/
Tom Tromey committed
149 150

/**
151
  * Initializes a new instance of <code>Dialog</code> with the specified,
152
  * parent, title, and modality, that is resizable.
153 154 155 156 157
  *
  * @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, <code>false</code>
  * otherwise.
158 159 160
  *
  * @exception IllegalArgumentException If owner is null or
  * GraphicsEnvironment.isHeadless() returns true.
161 162 163 164
  */
public
Dialog(Frame parent, String title, boolean modal)
{
165 166 167 168 169 170
  this (parent, title, modal, parent.getGraphicsConfiguration ());
}

/**
 * Initializes a new instance of <code>Dialog</code> with the specified,
 * parent, title, modality and <code>GraphicsConfiguration</code>,
171
 * that is resizable.
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188
 *
 * @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, <code>false</code>
 * otherwise.
 * @param gc The <code>GraphicsConfiguration</code> 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);
189 190 191

  this.title = title;
  this.modal = modal;
192
  visible = false;
193 194 195 196

  setLayout(new BorderLayout());
}

197 198
/**
 * Initializes a new instance of <code>Dialog</code> with the specified,
199
 * parent, that is resizable.
200 201 202 203 204 205
 *
 * @exception IllegalArgumentException If parent is null. This exception is
 * always thrown when GraphicsEnvironment.isHeadless() returns true.
 *
 * @since 1.2
 */
206 207 208
public
Dialog (Dialog owner)
{
209
  this (owner, "", false, owner.getGraphicsConfiguration ());
210 211
}

212 213
/**
 * Initializes a new instance of <code>Dialog</code> with the specified,
214
 * parent and title, that is resizable.
215 216 217 218 219 220
 *
 * @exception IllegalArgumentException If parent is null. This exception is
 * always thrown when GraphicsEnvironment.isHeadless() returns true.
 *
 * @since 1.2
 */
221 222 223
public
Dialog (Dialog owner, String title)
{
224
  this (owner, title, false, owner.getGraphicsConfiguration ());
225 226
}

227 228
/**
 * Initializes a new instance of <code>Dialog</code> with the specified,
229
 * parent, title and modality, that is resizable.
230 231 232 233 234 235
 *
 * @exception IllegalArgumentException If parent is null. This exception is
 * always thrown when GraphicsEnvironment.isHeadless() returns true.
 *
 * @since 1.2
 */
236 237 238
public
Dialog (Dialog owner, String title, boolean modal)
{
239 240 241 242 243 244
  this (owner, title, modal, owner.getGraphicsConfiguration ());
}

/**
 * Initializes a new instance of <code>Dialog</code> with the specified,
 * parent, title, modality and <code>GraphicsConfiguration</code>,
245
 * that is resizable.
246 247 248 249 250 251 252 253 254 255 256 257
 *
 * @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 ());
  
258
  this.title = title;
259 260 261
  this.modal = modal;
  visible = false;

262 263 264 265 266 267 268
  setLayout (new BorderLayout ());
}

/*************************************************************************/

/*
 * Instance Variables
Tom Tromey committed
269
 */
270

271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372
/**
  * Returns the title of this dialog box.
  * 
  * @return The title of this dialog box.
  */
public String
getTitle()
{
  return(title);
}

/*************************************************************************/

/**
  * Sets the title of this dialog box to the specified string.
  *
  * @param title The new title.
  */
public synchronized void
setTitle(String title)
{
  this.title = title;
  if (peer != null)
    {
      DialogPeer d = (DialogPeer) peer;
      d.setTitle (title);
    }
}

/*************************************************************************/

/**
  * Tests whether or not this dialog box is modal.
  *
  * @return <code>true</code> if this dialog box is modal,
  * <code>false</code> otherwise.
  */
public boolean
isModal()
{
  return(modal);
}

/*************************************************************************/

/**
  * Changes the modality of this dialog box.  This can only be done before
  * the peer is created.
  *
  * @param modal <code>true</code> to make this dialog box modal,
  * <code>false</code> to make it non-modal.
  */
public void
setModal(boolean modal)
{
  this.modal = modal;
}

/*************************************************************************/

/**
  * Tests whether or not this dialog box is resizable.
  *
  * @return <code>true</code> if this dialog is resizable, <code>false</code>,
  * otherwise.
  */
public boolean
isResizable()
{
  return(resizable);
}

/*************************************************************************/

/**
  * Changes the resizability of this dialog box.
  *
  * @param resizable <code>true</code> to make this dialog resizable,
  * <code>false</code> to make it non-resizable.
  */
public synchronized void
setResizable(boolean resizable)
{
  this.resizable = resizable;
  if (peer != null)
    {
      DialogPeer d = (DialogPeer) peer;
      d.setResizable (resizable);
    }
}

/*************************************************************************/

/**
  * Creates this object's native peer.
  */
public synchronized void
addNotify()
{
  if (peer == null)
    peer = getToolkit ().createDialog (this);
  super.addNotify ();
373
}
374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399

/*************************************************************************/

/**
  * Makes this dialog visible and brings it to the front.
  */
public void
show()
{
  super.show();
}

/*************************************************************************/

/**
  * 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());
}

400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424
  /**
   * Returns whether this frame is undecorated or not.
   * 
   * @since 1.4
   */
  public boolean isUndecorated ()
  {
    return undecorated;
  }

  /**
   * 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.
   * 
   * @since 1.4
   */
  public void setUndecorated (boolean undecorated)
  {
    if (isDisplayable ())
      throw new IllegalComponentStateException ();

    this.undecorated = undecorated;
  }
425 426
} // class Dialog