Reorganize the PersonView :
[Persons_Comparator.git] / src / MainWindowsView.java
1 import javax.swing.*;
2 import javax.swing.text.DefaultEditorKit;
3 import java.awt.*;
4 import java.awt.event.ActionEvent;
5 import java.awt.event.ActionListener;
6 import java.awt.event.KeyEvent;
7 import java.util.ArrayList;
8
9 public class MainWindowsView extends JFrame {
10
11 MainWindowsView(String title, PersonView view) {
12 Container panel = getContentPane();
13 //Create and set up the window.
14 setTitle(title);
15 setSize(view.getDimension());
16 setLocationRelativeTo(null);
17 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
18
19 //Create menu
20 JMenuBar menuBar = createMenuBar();
21 setJMenuBar(menuBar);
22
23 //Get all Swing/AWT JPanel in the views and add them to the main panel.
24 ArrayList<Component> components = new ArrayList<>();
25 for (int i = 0; i < panel.getComponentCount(); i++) {
26 components.add(panel.getComponent(i));
27 }
28 for (Component component : components) {
29 panel.add(component);
30 }
31
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);
37 }
38
39 /**
40 * Create menu that support cut/copy/paste.
41 */
42 private JMenuBar createMenuBar() {
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
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() {
85 System.out.println("Created GUI on EDT? " +
86 SwingUtilities.isEventDispatchThread());
87 //Display the window.
88 //this.pack();
89 this.setVisible(true);
90 }
91 }