2 import javax
.swing
.text
.DefaultEditorKit
;
4 import java
.awt
.event
.ActionEvent
;
5 import java
.awt
.event
.ActionListener
;
6 import java
.awt
.event
.KeyEvent
;
7 import java
.util
.ArrayList
;
9 public class MainWindowsView
extends JFrame
{
10 private static MainWindowsView ourInstance
= new MainWindowsView();
11 private PersonView currentPersonView
;
13 private MainWindowsView() {
16 public void setMainWindowsView(String title
, PersonView personView
) {
17 this.currentPersonView
= personView
;
18 Container panel
= getContentPane();
19 //Create and set up the window.
21 setSize(getCurrentPersonView().getDimension());
22 setLocationRelativeTo(null);
23 setDefaultCloseOperation(JFrame
.EXIT_ON_CLOSE
);
26 JMenuBar menuBar
= createMenuBar();
29 //Get all Swing/AWT JPanel in the views and add them to the main panel.
30 ArrayList
<Component
> components
= new ArrayList
<>();
31 for (int i
= 0; i
< panel
.getComponentCount(); i
++) {
32 components
.add(panel
.getComponent(i
));
34 for (Component component
: components
) {
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
);
45 public static MainWindowsView
getInstance() {
49 public PersonView
getCurrentPersonView() {
50 return currentPersonView
;
54 * Create menu that support cut/copy/paste.
56 private JMenuBar
createMenuBar() {
58 JMenuBar menuBar
= new JMenuBar();
60 JMenu fileMenu
= new JMenu("File");
62 menuItem
= new JMenuItem("Exit");
63 menuItem
.addActionListener(new ActionListener() {
64 public void actionPerformed(ActionEvent e
) {
68 fileMenu
.add(menuItem
);
70 JMenu editMenu
= new JMenu("Edit");
71 editMenu
.setMnemonic(KeyEvent
.VK_E
);
73 menuItem
= new JMenuItem(new DefaultEditorKit
.CutAction());
74 menuItem
.setText("Cut");
75 menuItem
.setMnemonic(KeyEvent
.VK_T
);
76 editMenu
.add(menuItem
);
78 menuItem
= new JMenuItem(new DefaultEditorKit
.CopyAction());
79 menuItem
.setText("Copy");
80 menuItem
.setMnemonic(KeyEvent
.VK_C
);
81 editMenu
.add(menuItem
);
83 menuItem
= new JMenuItem(new DefaultEditorKit
.PasteAction());
84 menuItem
.setText("Paste");
85 menuItem
.setMnemonic(KeyEvent
.VK_P
);
86 editMenu
.add(menuItem
);
88 menuBar
.add(fileMenu
);
89 menuBar
.add(editMenu
);
94 * Show the GUI. For thread safety,
95 * this method should be invoked from the
96 * event-dispatching thread.
98 public void showGUI() {
99 System
.out
.println("Created GUI on EDT? " +
100 SwingUtilities
.isEventDispatchThread());
101 //Display the window.
103 this.setVisible(true);