package mit.awt.event ;

public class WindowAdapter
extends mit.event.Adapter
implements	java.awt.event.WindowListener
	,	mit.awt.event.WindowRaiser
{
	private mit.event.RaiserAdapter raiserAdapter = null ;
	public mit.event.RaiserAdapter getRaiserAdapter() { return this.raiserAdapter ; }
	public void setRaiserAdapter( mit.event.RaiserAdapter raiserAdapter ) { this.raiserAdapter = raiserAdapter ; }

	private java.awt.event.WindowEvent windowEvent = null ;
	public java.awt.event.WindowEvent getWindowEvent() { return this.windowEvent ; }
	public void setWindowEvent( java.awt.event.WindowEvent windowEvent ) { this.windowEvent = windowEvent ; }

	public WindowAdapter( Object owner )
	{
		super( owner ) ;
		setRaiserAdapter( new mit.event.RaiserAdapter( owner ) ) ;
		if( owner instanceof java.awt.Window )
		{
			( ( java.awt.Window ) owner ).addWindowListener( this ) ;
		}
	}

	public void windowActivated( java.awt.event.WindowEvent e ) { setEvent( e ) ; }
	public void windowClosed( java.awt.event.WindowEvent e ) { setEvent( e ) ; }
	public void windowClosing( java.awt.event.WindowEvent e )
	{
		try
		{
			if( e.getSource().equals( getRaiserAdapter().getOwner() ) )
			{
				if( null != ( ( java.awt.Window ) getRaiserAdapter().getOwner() ).getParent() )
				{
					setWindowEvent( e ) ;
					new mit.awt.event.WindowEvent( this ).raise() ;
				}
				else
				{
					System.exit( 0 ) ;
				}
			}
			else if( null == getRaiserAdapter().getOwner() )
			{
				System.exit( 0 ) ;
			}
		}
		catch( Exception ex )
		{
			ex.printStackTrace() ;
		}
	}
	public void windowDeactivated( java.awt.event.WindowEvent e ) { setEvent( e ) ; }
	public void windowDeiconified( java.awt.event.WindowEvent e ) { setEvent( e ) ; }
	public void windowIconified( java.awt.event.WindowEvent e ) { setEvent( e ) ; }
	public void windowOpened( java.awt.event.WindowEvent e ) { setEvent( e ) ; }

	private void setEvent( java.awt.event.WindowEvent e )
	{
		try
		{
			if( e.getSource().equals( getRaiserAdapter().getOwner() ) )
			{
				setWindowEvent( e ) ; 
				new mit.awt.event.WindowEvent( this ).raise() ;
			}
		}
		catch( Exception ex )
		{
			ex.printStackTrace() ;
		}
	}

}