Reorganize the PersonView :
[Persons_Comparator.git] / src / MainWindowsView.java
CommitLineData
60971873 1import javax.swing.*;
c281942a 2import javax.swing.text.DefaultEditorKit;
089fcbfc 3import java.awt.*;
416e35f7
JB
4import java.awt.event.ActionEvent;
5import java.awt.event.ActionListener;
c281942a 6import java.awt.event.KeyEvent;
089fcbfc 7import java.util.ArrayList;
60971873
JB
8
9public 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}