// Sample code file: MessageDlg.java

// Warning: This code has been marked up for HTML
/***************************************************************************
$name: MessageDlg.java 
$version: 1.0 
$date_modified: 210104 
$description:  
$owner: Beans for Novell Services Team 
Copyright (c) 1997 Novell, Inc. All Rights Reserved.

THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND TREATIES.
USE AND REDISTRIBUTION OF THIS WORK IS SUBJECT TO THE LICENSE AGREEMENT
ACCOMPANYING THE SOFTWARE DEVELOPMENT KIT (SDK) THAT CONTAINS THIS WORK.
PURSUANT TO THE SDK LICENSE AGREEMENT, NOVELL HEREBY GRANTS TO DEVELOPER A
ROYALTY-FREE, NON-EXCLUSIVE LICENSE TO INCLUDE NOVELL'S SAMPLE CODE IN ITS
PRODUCT. NOVELL GRANTS DEVELOPER WORLDWIDE DISTRIBUTION RIGHTS TO MARKET,
DISTRIBUTE, OR SELL NOVELL'S SAMPLE CODE AS A COMPONENT OF DEVELOPER'S
PRODUCTS. NOVELL SHALL HAVE NO OBLIGATIONS TO DEVELOPER OR DEVELOPER'S
CUSTOMERS WITH RESPECT TO THIS CODE.
****************************************************************************/
import java.awt.*;
import java.awt.event.*;                                          
                                            
public class MessageDlg extends Dialog
{
  Panel panel1 = new Panel();
  Label mainLabel = new Label("", Label.CENTER);

  public MessageDlg(Frame frame, String title, boolean modal)
  {
    super(frame, title, modal);

    try {
      initialize();
      add(panel1);
      pack();
    }
    catch (Exception e) {
      e.printStackTrace();
    }

    // center in window
    //
    Dimension  scrnSize = Toolkit.getDefaultToolkit().getScreenSize();
    setLocation((scrnSize.width / 2) - 150, (scrnSize.height / 2) - 50);
  }

  public MessageDlg(Frame frame)
  {
    this(frame, "", false);
  }

  public MessageDlg(Frame frame, boolean modal)
  {
    this(frame, "", modal);
  }

  public MessageDlg(Frame frame, String title)
  {
    this(frame, title, false);
  }

  public void initialize() throws Exception
  {
    setSize(300, 100);
    panel1.setLayout(null);

    panel1.setSize(300, 80);
    panel1.add(mainLabel);
    mainLabel.setBounds(5, 30, 290, 22);

    addWindowListener(new MessageDlgCloser(this));
  }

   public void setMessage(String msg)
   {
      mainLabel.setText(msg);
      FontMetrics fm = getToolkit().getFontMetrics(getFont());
      int   strWidth = fm.stringWidth(msg);
      setSize(strWidth + 20, 80);
      mainLabel.setBounds(5, 30, strWidth + 10, 22);
   }

  void MessageDlg_WindowClosing(WindowEvent e)
  {
       this.dispose();
  }
}

 class MessageDlgCloser extends WindowAdapter
 {
   MessageDlg    theDlg = null;

   public MessageDlgCloser(MessageDlg aDlg)
   {
       theDlg = aDlg;
   }
   
   public void windowClosing(WindowEvent e)
   {
       theDlg.MessageDlg_WindowClosing(e);
   }
 }