X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FMainWindowsView.java;h=18e1ba1e9c7b3bbce6e8f70f3d2a71723204db66;hb=64418ffb240e30ec22560aafd85b07792ac71c80;hp=f4f837f6bbea7f512696dc7f5e1df9daa356caee;hpb=609718730ad9bc6d18491cf164360b4a44db5f52;p=Persons_Comparator.git diff --git a/src/MainWindowsView.java b/src/MainWindowsView.java index f4f837f..18e1ba1 100644 --- a/src/MainWindowsView.java +++ b/src/MainWindowsView.java @@ -1,18 +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 { - MainWindowsView(String title) { + private static MainWindowsView ourInstance = new MainWindowsView(); + private PersonView currentPersonView; + + 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(getCurrentPersonView().getDimension()); + setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - JPanel panel = new PersonView(); + //Create menu + JMenuBar menuBar = createMenuBar(); + setJMenuBar(menuBar); + + //Get all Swing/AWT JPanel in the views and add them to the main panel. + ArrayList components = new ArrayList<>(); + for (int i = 0; i < panel.getComponentCount(); i++) { + components.add(panel.getComponent(i)); + } + for (Component component : components) { + panel.add(component); + } + + 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); - //TODO: Add content to the panel - //JLabel label = new JLabel("Hello World"); - //panel.add(label); + JMenu editMenu = new JMenu("Edit"); + editMenu.setMnemonic(KeyEvent.VK_E); - getContentPane().add(panel); + 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; } /** @@ -21,10 +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.setVisible(true); } - -} +} \ No newline at end of file