Rearrange code.
[Persons_Comparator.git] / src / MainWindowsView.java
index dbe2eedaf9beaee2f2f75da5c24374cbfa21121e..18e1ba1e9c7b3bbce6e8f70f3d2a71723204db66 100644 (file)
@@ -1,46 +1,93 @@
 import javax.swing.*;
+import javax.swing.text.DefaultEditorKit;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
 import java.util.ArrayList;
 
 public class MainWindowsView extends JFrame {
+    private static MainWindowsView ourInstance = new MainWindowsView();
+    private PersonView currentPersonView;
 
-    MainWindowsView(String title, JPanel panel) {
+    private MainWindowsView() {
+    }
+
+    public static MainWindowsView getInstance() {
+        return ourInstance;
+    }
+
+    public void setMainWindowsView(String title, PersonView personView) {
+        this.currentPersonView = personView;
+        Container panel = getContentPane();
         //Create and set up the window.
         setTitle(title);
-        setSize(300, 300);
+        setSize(getCurrentPersonView().getDimension());
         setLocationRelativeTo(null);
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
         //Create menu
-        JMenuBar menuBar = new JMenuBar();
+        JMenuBar menuBar = createMenuBar();
         setJMenuBar(menuBar);
-        JMenu fileMenu = new JMenu("File");
-        menuBar.add(fileMenu);
-        JMenuItem exit = new JMenuItem("Exit");
-        exit.addActionListener(new ActionListener() {
-            public void actionPerformed(ActionEvent e) {
-                System.exit(0);
-            }
-        });
-        fileMenu.add(exit);
 
-        //Get all Swing/AWT primitive components in the views and add them to the panel.
+        //Get all Swing/AWT JPanel in the views and add them to the main panel.
         ArrayList<Component> components = new ArrayList<>();
         for (int i = 0; i < panel.getComponentCount(); i++) {
-            if ((panel.getComponent(i) instanceof Container)) {
-                Container subContainer = (Container) panel.getComponent(i);
-                for (int j = 0; j < subContainer.getComponentCount(); j++) {
-                    components.add(subContainer.getComponent(j));
-                }
-            }
+            components.add(panel.getComponent(i));
         }
         for (Component component : components) {
             panel.add(component);
         }
 
-        setContentPane(panel);
+        panel.add(getCurrentPersonView().getNorthPanel(), BorderLayout.NORTH);
+        panel.add(getCurrentPersonView().getSouthPanel(), BorderLayout.SOUTH);
+        panel.add(getCurrentPersonView().getEastPanel(), BorderLayout.EAST);
+        panel.add(getCurrentPersonView().getWestPanel(), BorderLayout.WEST);
+        panel.add(getCurrentPersonView().getPersonPanel(), BorderLayout.CENTER);
+    }
+
+    public PersonView getCurrentPersonView() {
+        return currentPersonView;
+    }
+
+    /**
+     * Create menu that support cut/copy/paste.
+     */
+    private JMenuBar createMenuBar() {
+        JMenuItem menuItem;
+        JMenuBar menuBar = new JMenuBar();
+
+        JMenu fileMenu = new JMenu("File");
+
+        menuItem = new JMenuItem("Exit");
+        menuItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                System.exit(0);
+            }
+        });
+        fileMenu.add(menuItem);
+
+        JMenu editMenu = new JMenu("Edit");
+        editMenu.setMnemonic(KeyEvent.VK_E);
+
+        menuItem = new JMenuItem(new DefaultEditorKit.CutAction());
+        menuItem.setText("Cut");
+        menuItem.setMnemonic(KeyEvent.VK_T);
+        editMenu.add(menuItem);
+
+        menuItem = new JMenuItem(new DefaultEditorKit.CopyAction());
+        menuItem.setText("Copy");
+        menuItem.setMnemonic(KeyEvent.VK_C);
+        editMenu.add(menuItem);
+
+        menuItem = new JMenuItem(new DefaultEditorKit.PasteAction());
+        menuItem.setText("Paste");
+        menuItem.setMnemonic(KeyEvent.VK_P);
+        editMenu.add(menuItem);
+
+        menuBar.add(fileMenu);
+        menuBar.add(editMenu);
+        return menuBar;
     }
 
     /**
@@ -49,9 +96,10 @@ public class MainWindowsView extends JFrame {
      * event-dispatching thread.
      */
     public void showGUI() {
-
+        System.out.println("Created GUI on EDT? " +
+                SwingUtilities.isEventDispatchThread());
         //Display the window.
-        //this.pack();
+        this.pack();
         this.setVisible(true);
     }
 }
\ No newline at end of file