package com.mindprod.common17;
import javax.swing.JApplet;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* Converts a JApplet into an Application.
*
* @author Roedy Green, Canadian Mind Products
* @version 1.0 2006-03-07
* @since 2006-03-07
*/
public final class HybridJ
{
/**
* return code to use when Applet run as an Application
*/
private static int retCode = 0;
/**
* Fire up the JApplet as an application
*
* @param title title for frame usually TITLE_STRING+ " " + VERSION_STRING
* @param applicationWidth width of frame, usually APPLET_WIDTH
* @param applicationHeight height of frame body, usually APPLET_HEIGHT
*/
public static void fireup( final JApplet applet,
final String title,
final int applicationWidth,
final int applicationHeight )
{
SwingUtilities.invokeLater( new Runnable()
{
/**
* do all swing work on the swing thread.
*/
public void run()
{
JFrame.setDefaultLookAndFeelDecorated( true );
final JFrame frame = new JFrame( title );
frame.setResizable( true );
frame.setUndecorated( false );
frame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE );
frame.setSize( applicationWidth + 22, applicationHeight + 32 );
frame.addWindowListener( new WindowAdapter()
{
/**
* Handle request to shutdown.
* @param e event giving details of closing.
*/
public void windowClosing( WindowEvent e )
{
applet.stop();
applet.destroy();
System.exit( retCode );
}
}
);// end addWindowListener line
frame.getContentPane().add( applet );
applet.init();
frame.validate();
frame.setVisible( true );
applet.start();
}
}
);
}
/**
* set return code to use when Applet run as an Application
*
* @param retCode code for System.exit
*/
public static void setRetCode( final int retCode )
{
HybridJ.retCode = retCode;
}
}