/* 
 * Easily show an alert. 
 * Copyright 2003 Edwin Martin <edwin@bitstorm.org> 
 * 
 */ 
package org.bitstorm.util; 
 
import java.awt.AWTEvent; 
import java.awt.Button; 
import java.awt.Dialog; 
import java.awt.Dimension; 
import java.awt.Event; 
import java.awt.FlowLayout; 
import java.awt.Frame; 
import java.awt.GridLayout; 
import java.awt.Image; 
import java.awt.Label; 
import java.awt.Panel; 
import java.awt.Point; 
import java.awt.Toolkit; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.StringTokenizer; 
 
 
/** 
 * AlertBox shows a message besides a warning symbol. 
 * @author Edwin Martin 
 * 
 */ 
public class AlertBox extends Dialog { 
  private Button okButton; 
 
  /** 
   * Contructs a AlertBox. 
   *  
   * Use the newline character '\n' in the message to seperate lines. 
   *  
   * @param parent parent frame 
   * @param title title of the dialog box 
   * @param message the message to show 
   */ 
  public AlertBox( Frame parent, String title, String message ) { 
    super( parent, title, false ); 
     
    Image alertImage = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("alert.gif")); 
    ImageComponent alertImageComponent = new ImageComponent( alertImage ); 
    okButton = new Button(" OK "); 
    okButton.addActionListener( 
      new ActionListener() { 
        public void actionPerformed(ActionEvent e) { 
          close(); 
        } 
      } 
    ); 
    Panel buttonPanel = new Panel(); 
    buttonPanel.setLayout( new FlowLayout( FlowLayout.CENTER ) ); 
    buttonPanel.add( okButton ); 
    StringTokenizer st = new StringTokenizer( message, "\n" ); 
    Panel messagePanel = new Panel( new GridLayout( st.countTokens(), 1 ) ); 
    while ( st.hasMoreTokens() ) { 
      messagePanel.add( new Label( st.nextToken() ) ); 
    } 
    add( "West", alertImageComponent ); 
    add( "Center", messagePanel ); 
    add( "South", buttonPanel ); 
    enableEvents(Event.WINDOW_DESTROY); 
    setResizable( false ); 
    setModal( true ); 
    pack(); 
    Point p = parent.getLocation(); 
    Dimension dim = parent.getSize(); 
    setLocation( p.x+dim.width/2-150, p.y+dim.height/2-75 ); 
    show(); 
  } 
     
  /** 
   * Close dialog box. 
   */ 
  private void close() { 
    this.hide(); 
    this.dispose(); 
  } 
  /** 
   * Process close window button. 
   * @see java.awt.Component#processEvent(java.awt.AWTEvent) 
   */ 
  public void processEvent( AWTEvent e ) { 
    if ( e.getID() == Event.WINDOW_DESTROY ) 
      close(); 
  } 
 
}
    |