package gui.menubar; import gui.frames.MainFrame; import gui.simulator.DrawEngine; import gui.simulator.SimIo; import gui.simulator.SimulatorDialogPane; import gui.simulator.SimulatorPane; import gui.simulator.Terrain; import gui.simulator.WalkingPathArrayList; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.KeyStroke; import agenda.Agenda; import agenda.Database; import agenda.Io; @SuppressWarnings("serial") public class MenuBar extends JMenuBar{ private MainFrame mainFrame; private Agenda agenda; private JPanel simPanel; private Terrain terrain; //add agenda because Database needs it to acces all inserted acts public MenuBar(MainFrame frame, Agenda agenda){ this.mainFrame = frame; this.agenda = agenda; initialize(); } private void initialize(){ setLayout(new FlowLayout(80)); JMenu fileMenu = new JMenu("File"); JMenu editMenu = new JMenu("Edit"); JMenu viewMenu = new JMenu("View"); JMenu helpMenu = new JMenu("Help"); this.add(fileMenu); this.add(editMenu); this.add(viewMenu); this.add(helpMenu); JMenuItem newAction = new JMenuItem("New"); JMenuItem openAction = new JMenuItem("Open"); JMenuItem exitAction = new JMenuItem("Exit"); JMenuItem cutAction = new JMenuItem("Cut"); JMenuItem copyAction = new JMenuItem("Copy"); JMenuItem pasteAction = new JMenuItem("Paste"); JMenuItem saveAction = new JMenuItem("Save"); JMenuItem helpAction = new JMenuItem("Help"); JMenuItem uploadAction = new JMenuItem("Upload agenda to DB"); JMenuItem openSim = new JMenuItem("Open simulator"); JMenuItem saveSim = new JMenuItem("Save simulator"); //view JMenuItem editorView = new JMenuItem("Editor"); JMenuItem agendaView = new JMenuItem("Agenda"); JMenuItem simulatorView = new JMenuItem("Simulator"); JMenuItem tableView = new JMenuItem("Table"); newAction.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); openAction.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); exitAction.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK)); cutAction.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK)); copyAction.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK)); pasteAction.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK)); saveAction.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK)); uploadAction.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,ActionEvent.CTRL_MASK)); fileMenu.add(newAction); newAction.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { System.out.println("You have clicked on the new action"); new MainFrame(); } }); fileMenu.add(openAction); openAction.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { try { Agenda agenda= Io.readIo(); if(agenda != null){ mainFrame.setAgenda(agenda); System.out.println("read"); } } catch (IOException e) { e.printStackTrace(); } } }); fileMenu.add(saveAction); saveAction.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { Io.writeIo(mainFrame.getAgenda()); } catch (IOException e1) { e1.printStackTrace(); } } }); fileMenu.add(uploadAction); uploadAction.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Database database = new Database(agenda); try { database.writeDatabase(); System.out.println("Act data send to database"); } catch (Exception e) { e.printStackTrace(); System.out.println("Database error"); } System.out.println("You have clicked on the database action"); } }); fileMenu.addSeparator(); fileMenu.add(openSim); openSim.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { // simPanel = mainFrame.getSimulatorpanel(); // System.out.println("Simpanel " + simPanel); // terrain = ((SimulatorPane) simPanel).getTerrain(); // System.out.println(terrain); List list = new ArrayList(); list = (List) SimIo.readIo(); System.out.println(list); if(list != null){ mainFrame.setLength((int)list.get(0)); mainFrame.setTerainWidth((int)list.get(1)); mainFrame.setTerrain((SimulatorPane.Terrains)list.get(2)); simPanel = new SimulatorPane(mainFrame.getAgenda(), mainFrame.getLength(), mainFrame.getTerainWidth(), mainFrame.getTerrain()); terrain = ((SimulatorPane) simPanel).getTerrain(); terrain.setEntities((List)list.get(3)); System.out.println(list.get(3)); terrain.setPaths((WalkingPathArrayList)list.get(4)); ((SimulatorPane) simPanel).setTerrain(terrain); mainFrame.setSimulatorpanel(simPanel); System.out.println("read simulator"); } } catch (IOException ee) { ee.printStackTrace(); } } }); fileMenu.add(saveSim); saveSim.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { try { //TODO simPanel value is null. simPanel = mainFrame.getSimulatorpanel(); terrain = ((SimulatorPane) simPanel).getTerrain(); if(simPanel != null){ List objectlist = new ArrayList(); objectlist.add(mainFrame.getLength()); objectlist.add(mainFrame.getTerainWidth()); objectlist.add(mainFrame.getTerrain()); objectlist.add(terrain.getEntities()); objectlist.add(terrain.getPaths()); SimIo.writeIo(objectlist); } } catch (IOException e1) { e1.printStackTrace(); } } }); fileMenu.addSeparator(); fileMenu.add(exitAction); exitAction.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { System.exit(0); } }); editMenu.add(cutAction); cutAction.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { System.out.println("You have clicked on the cut action"); } }); editMenu.add(copyAction); copyAction.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { System.out.println("You have clicked on the copy action"); } }); editMenu.add(pasteAction); pasteAction.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { System.out.println("You have clicked on the paste action"); } }); //view viewMenu.add(editorView); editorView.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("Editor View"); mainFrame.changeView(MainFrame.Views.EDITOR); } }); viewMenu.add(simulatorView); simulatorView.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("Simulator View"); if(mainFrame.getLength() == 100000 || mainFrame.getWidth() == 100000 || mainFrame.getTerrain() == SimulatorPane.Terrains.UNDEFINED){ new SimulatorDialogPane(mainFrame); } else { mainFrame.changeView(MainFrame.Views.SIMULATOR); } } }); viewMenu.add(agendaView); agendaView.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("Agenda View"); mainFrame.changeView(MainFrame.Views.AGENDA); } }); viewMenu.add(tableView); tableView.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { mainFrame.changeView(MainFrame.Views.TABLE); } }); helpMenu.add(helpAction); helpAction.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(mainFrame,"Deze applicatie is gemaakt door: " + "\nJanco, Gillian, Tim, Davey en Jeroen" + "\n\nIn opdracht voor: " + "\n Ti Avans Breda" ); } }); } }