package com.metsci.glimpse.examples.webstart; import java.awt.AWTEvent; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.Window; import java.awt.event.AWTEventListener; import java.awt.event.WindowEvent; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.UIManager; import javax.swing.WindowConstants; public class WebstartMain { public static void main( String[] args ) { try { UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName( ) ); } catch ( Exception e ) { // ignore } final JFrame runnerFrame = new JFrame( "Glimpse Examples" ); runnerFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); runnerFrame.setPreferredSize( new Dimension( 1280, 800 ) ); ExampleRunner runnerPanel = new ExampleRunner( ); runnerFrame.setContentPane( runnerPanel ); runnerFrame.pack( ); runnerFrame.setLocationRelativeTo( null ); runnerFrame.setVisible( true ); runnerPanel.populateExamples( ); // force all child windows to be dispose-on-close so we don't interrupt our example runner Toolkit.getDefaultToolkit( ).addAWTEventListener( new AWTEventListener( ) { @Override public void eventDispatched( AWTEvent event ) { if ( event instanceof WindowEvent ) { Window window = ( ( WindowEvent ) event ).getWindow( ); if ( window != runnerFrame ) { if ( window instanceof JFrame ) { JFrame frame = ( JFrame ) window; if ( frame.getDefaultCloseOperation( ) == JFrame.EXIT_ON_CLOSE ) { frame.setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE ); } } else if ( window instanceof JDialog ) { JDialog dialog = ( JDialog ) window; if ( dialog.getDefaultCloseOperation( ) == JFrame.EXIT_ON_CLOSE ) { dialog.setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE ); } } } } } }, AWTEvent.WINDOW_EVENT_MASK ); } }