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