package net.wotonomy.test; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.KeyStroke; import javax.swing.UIManager; import net.wotonomy.control.EOEditingContext; import net.wotonomy.control.EOObjectStore; /** * A simple test-bed for wotonomy. * Shows a JFrame containing the TestPanel * which is controlled by the TestController. */ public class Test { static EOObjectStore objectStore; static EOEditingContext editingContext; static public void main( String[] argv ) { // NSRunLoop.currentRunLoop(); // system l&f try { // UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); // UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); // UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception e) { // no system l&f - fail silently } // launch notification monitor if desired for ( int i = 0; i < argv.length; i++ ) { if ( argv[i].indexOf( "monitor" ) != -1 ) { new net.wotonomy.ui.swing.NotificationInspector(); } } new net.wotonomy.ui.swing.NotificationInspector(); // set up editing context hierarchy objectStore = new DataObjectStore( "data" ); editingContext = new EOEditingContext( objectStore ); // connect panel to controller TestPanel testPanel = new TestPanel(); final TestController controller = new TestController( testPanel ); // create frame and show JFrame frame = new JFrame(); frame.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE ); // setup menus JMenu menu; JMenuItem menuItem; JMenuBar menuBar = new JMenuBar(); menu = new JMenu( "File" ); menu.add( "New" ); menuItem = new JMenuItem( "Save" ); menuItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_S, KeyEvent.CTRL_MASK ) ); menuItem.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent evt ) { controller.displayGroup.dataSource().editingContext().saveChanges(); } }); menu.add( menuItem ); menu.add( "Close" ); menuBar.add( menu ); menu = new JMenu( "Edit" ); menu.add( "Cut" ); menu.add( "Copy" ); menu.add( "Paste" ); menuBar.add( menu ); frame.setJMenuBar( menuBar ); frame.getContentPane().add( testPanel, BorderLayout.CENTER ); frame.setTitle( "Test Frame" ); frame.setBounds( 50, 50, 750, 500 ); frame.show(); // comment out this to avoid memory leak from jdk1.2.2 bug // add WindowListener for frame frame.addWindowListener( new WindowAdapter() { // exit on close public void windowClosing(WindowEvent e) { System.exit( 0 ); } }); /* uncomment this to avoid memory leak from jdk1.2.2 bug frame.getContentPane().removeAll(); */ /* NSNotificationCenter.defaultCenter().addObserver( frame, new NSSelector( "hitMe", new Class[] { NSNotification.class } ), null, null ); */ } }