X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FMainWindowsView.java;h=58a37fb435f4a011af37a213a5adcdab9f9004c1;hb=1a2ddb852431259fab5dc522d8caf5b74bb3acd8;hp=bc7951152f608bfdd4f8633efc2a9b99120cc8f1;hpb=416e35f7e06f4689cccfd220bf1b4a20ffac54ec;p=Persons_Comparator.git diff --git a/src/MainWindowsView.java b/src/MainWindowsView.java index bc79511..58a37fb 100644 --- a/src/MainWindowsView.java +++ b/src/MainWindowsView.java @@ -1,42 +1,28 @@ 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) { + + MainWindowsView(String title, JPanel panel) { //Create and set up the window. setTitle(title); - setSize(300, 300); + setSize(400, 300); 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); - //Main pane - JPanel panel = new PersonView(); - - //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 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); @@ -45,6 +31,46 @@ public class MainWindowsView extends JFrame { setContentPane(panel); } + /** + * 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; + } + /** * Show the GUI. For thread safety, * this method should be invoked from the @@ -56,5 +82,4 @@ public class MainWindowsView extends JFrame { //this.pack(); this.setVisible(true); } - } \ No newline at end of file