summaryrefslogtreecommitdiff
path: root/projects/net.wotonomy.test/src/main/java/net/wotonomy/test/Test.java
blob: ba6a1dca8266ef1f5e1de4ecab7c9849058944a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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 );
*/        
    }
    
}