Commit | Line | Data |
---|---|---|
60971873 | 1 | import javax.swing.*; |
c281942a | 2 | import javax.swing.text.DefaultEditorKit; |
089fcbfc | 3 | import java.awt.*; |
416e35f7 JB |
4 | import java.awt.event.ActionEvent; |
5 | import java.awt.event.ActionListener; | |
c281942a | 6 | import java.awt.event.KeyEvent; |
089fcbfc | 7 | import java.util.ArrayList; |
60971873 JB |
8 | |
9 | public class MainWindowsView extends JFrame { | |
f1e9d6d2 | 10 | |
d252f672 JB |
11 | MainWindowsView(String title, PersonView view) { |
12 | Container panel = getContentPane(); | |
60971873 JB |
13 | //Create and set up the window. |
14 | setTitle(title); | |
d252f672 | 15 | setSize(view.getDimension()); |
089fcbfc | 16 | setLocationRelativeTo(null); |
60971873 JB |
17 | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
18 | ||
416e35f7 | 19 | //Create menu |
c281942a | 20 | JMenuBar menuBar = createMenuBar(); |
416e35f7 | 21 | setJMenuBar(menuBar); |
416e35f7 | 22 | |
3d9fdaf4 | 23 | //Get all Swing/AWT JPanel in the views and add them to the main panel. |
089fcbfc JB |
24 | ArrayList<Component> components = new ArrayList<>(); |
25 | for (int i = 0; i < panel.getComponentCount(); i++) { | |
3d9fdaf4 | 26 | components.add(panel.getComponent(i)); |
089fcbfc JB |
27 | } |
28 | for (Component component : components) { | |
29 | panel.add(component); | |
30 | } | |
60971873 | 31 | |
d252f672 JB |
32 | panel.add(view.getNorthPanel(), BorderLayout.NORTH); |
33 | panel.add(view.getSouthPanel(), BorderLayout.SOUTH); | |
34 | panel.add(view.getEastPanel(), BorderLayout.EAST); | |
35 | panel.add(view.getWestPanel(), BorderLayout.WEST); | |
36 | panel.add(view.getPersonPanel(), BorderLayout.CENTER); | |
60971873 JB |
37 | } |
38 | ||
c281942a JB |
39 | /** |
40 | * Create menu that support cut/copy/paste. | |
41 | */ | |
476910ab | 42 | private JMenuBar createMenuBar() { |
c281942a JB |
43 | JMenuItem menuItem; |
44 | JMenuBar menuBar = new JMenuBar(); | |
45 | ||
46 | JMenu fileMenu = new JMenu("File"); | |
47 | ||
48 | menuItem = new JMenuItem("Exit"); | |
49 | menuItem.addActionListener(new ActionListener() { | |
50 | public void actionPerformed(ActionEvent e) { | |
51 | System.exit(0); | |
52 | } | |
53 | }); | |
54 | fileMenu.add(menuItem); | |
55 | ||
56 | JMenu editMenu = new JMenu("Edit"); | |
57 | editMenu.setMnemonic(KeyEvent.VK_E); | |
58 | ||
59 | menuItem = new JMenuItem(new DefaultEditorKit.CutAction()); | |
60 | menuItem.setText("Cut"); | |
61 | menuItem.setMnemonic(KeyEvent.VK_T); | |
62 | editMenu.add(menuItem); | |
63 | ||
64 | menuItem = new JMenuItem(new DefaultEditorKit.CopyAction()); | |
65 | menuItem.setText("Copy"); | |
66 | menuItem.setMnemonic(KeyEvent.VK_C); | |
67 | editMenu.add(menuItem); | |
68 | ||
69 | menuItem = new JMenuItem(new DefaultEditorKit.PasteAction()); | |
70 | menuItem.setText("Paste"); | |
71 | menuItem.setMnemonic(KeyEvent.VK_P); | |
72 | editMenu.add(menuItem); | |
73 | ||
74 | menuBar.add(fileMenu); | |
75 | menuBar.add(editMenu); | |
76 | return menuBar; | |
77 | } | |
78 | ||
60971873 JB |
79 | /** |
80 | * Show the GUI. For thread safety, | |
81 | * this method should be invoked from the | |
82 | * event-dispatching thread. | |
83 | */ | |
84 | public void showGUI() { | |
d252f672 JB |
85 | System.out.println("Created GUI on EDT? " + |
86 | SwingUtilities.isEventDispatchThread()); | |
60971873 | 87 | //Display the window. |
089fcbfc | 88 | //this.pack(); |
60971873 JB |
89 | this.setVisible(true); |
90 | } | |
416e35f7 | 91 | } |