Pārlūkot izejas kodu

Added the Algorithm stuff to the MenuBar (not final)

Kevin Trometer 7 gadi atpakaļ
vecāks
revīzija
3890bc7bad
3 mainītis faili ar 56 papildinājumiem un 89 dzēšanām
  1. 4 61
      src/ui/view/AlgorithmMenu.java
  2. 52 27
      src/ui/view/GUI.java
  3. 0 1
      src/ui/view/MyCanvas.java

+ 4 - 61
src/ui/view/SimulationMenu.java → src/ui/view/AlgorithmMenu.java

@@ -1,8 +1,5 @@
 package ui.view;
 
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.BufferedReader;
@@ -16,7 +13,6 @@ import javax.swing.JButton;
 import javax.swing.JComboBox;
 import javax.swing.JFileChooser;
 import javax.swing.JFrame;
-import javax.swing.JMenuBar;
 import javax.swing.JPanel;
 import javax.tools.JavaCompiler;
 import javax.tools.ToolProvider;
@@ -30,13 +26,10 @@ import ui.model.Model;
  * 
  * @author Gruppe14
  */
-public class SimulationMenu extends JMenuBar {
+public class AlgorithmMenu extends JPanel {
 
 	private static final long serialVersionUID = 1L;
 
-	private JPanel menuPanel = new JPanel();
-	//JLabel simSpeedLabel = new JLabel(Languages.getLanguage()[84]);
-	//private JTextField simSpeedText = new JTextField("1000");
 	private JComboBox<Object> algoCombo = new JComboBox<>();
 	JButton algoFolderButton = new JButton(Languages.getLanguage()[85]);
 	private HashMap<String, File> algosHash = new HashMap<>();
@@ -55,14 +48,12 @@ public class SimulationMenu extends JMenuBar {
 	 * @param cont
 	 *            the Controller
 	 */
-	public SimulationMenu(Model mod, Control cont) {
+	public AlgorithmMenu(Model mod, Control cont) {
 		super();
 		// Init Stuff
 		this.model = mod;
 		this.controller = cont;
 		
-		//simSpeedLabel.setMaximumSize(simSpeedLabel.getPreferredSize());
-		//simSpeedLabel.setMinimumSize(simSpeedLabel.getPreferredSize());
 		algoCombo.addItem("None");
 
 		// Algorithm ComboBox Action
@@ -119,57 +110,9 @@ public class SimulationMenu extends JMenuBar {
 		});
 
 		// Add to Panel
-		GridBagLayout gblmenuPanel = new GridBagLayout();
-		gblmenuPanel.columnWidths = new int[] { 79, 105, 34, 60, 31, 151, 0 };
-		gblmenuPanel.rowHeights = new int[] { 25, 0 };
-		gblmenuPanel.columnWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE };
-		gblmenuPanel.rowWeights = new double[] { 0.0, Double.MIN_VALUE };
-		menuPanel.setLayout(gblmenuPanel);
-
-		GridBagConstraints gbcsimSpeedLabel = new GridBagConstraints();
-		gbcsimSpeedLabel.anchor = GridBagConstraints.WEST;
-		gbcsimSpeedLabel.insets = new Insets(0, 0, 0, 5);
-		gbcsimSpeedLabel.gridx = 1;
-		gbcsimSpeedLabel.gridy = 0;
-		//menuPanel.add(simSpeedLabel, gbcsimSpeedLabel);
-
-		// timerSpeed
-		/*simSpeedText.setMaximumSize(new Dimension(300, 300));
-		// simSpeedText.setMinimumSize(new Dimension(300, 300));
-		simSpeedText.addCaretListener(new CaretListener() {
-			@Override
-			public void caretUpdate(CaretEvent e) {
-				try {
-					controller.setTimerSpeed(Integer.parseInt(simSpeedText.getText()));
-				} catch (Exception ex) {
-					// TODO: handle exception
-				}
+		this.add(algoFolderButton);
 
-			}
-		});*/
-		GridBagConstraints gbcSimSpeedText = new GridBagConstraints();
-		gbcSimSpeedText.anchor = GridBagConstraints.WEST;
-		gbcSimSpeedText.insets = new Insets(0, 0, 0, 5);
-		gbcSimSpeedText.gridx = 2;
-		gbcSimSpeedText.gridy = 0;
-		//menuPanel.add(simSpeedText, gbcSimSpeedText);
-		GridBagConstraints gbcAlgoFolderButton = new GridBagConstraints();
-		gbcAlgoFolderButton.anchor = GridBagConstraints.WEST;
-		gbcAlgoFolderButton.insets = new Insets(0, 0, 0, 5);
-		gbcAlgoFolderButton.gridx = 3;
-		gbcAlgoFolderButton.gridy = 0;
-		menuPanel.add(algoFolderButton, gbcAlgoFolderButton);
-
-		GridBagConstraints gbcAlgoCombo = new GridBagConstraints();
-		gbcAlgoCombo.anchor = GridBagConstraints.WEST;
-		gbcAlgoCombo.insets = new Insets(0, 0, 0, 5);
-		gbcAlgoCombo.gridx = 4;
-		gbcAlgoCombo.gridy = 0;
-		menuPanel.add(algoCombo, gbcAlgoCombo);
-		// algoCombo.addItem(Languages.getLanguage()[86]);
-
-		// Add Panel to SimulationMenu
-		this.add(menuPanel);
+		this.add(algoCombo);
 	}
 
 	public void setAlgorithm(File file, String name) {

+ 52 - 27
src/ui/view/GUI.java

@@ -98,7 +98,7 @@ public class GUI<E> implements CategoryListener {
 
 	private JFrame frmCyberPhysical;
 
-	private final SimulationMenu simMenu;
+	private final AlgorithmMenu simMenu;
 
 	private JTabbedPane tabTemp; // tabbedPane or tabbedPane2
 	private final JMenuBar menuBar = new JMenuBar();
@@ -107,6 +107,7 @@ public class GUI<E> implements CategoryListener {
 	private final JMenu mnNewMenuOptions = new JMenu("Options");
 	private final JMenu mnNewMenuView = new JMenu("View");
 	private final JMenu mnHelp = new JMenu("Help");
+	private final JMenu mnAlgorithm = new JMenu("Algorithm");
 	private final JMenuItem mntmOpen = new JMenuItem("Open");
 	private final JMenuItem mntmNew = new JMenuItem("New");
 	private final JMenuItem mntmSave = new JMenuItem("Save");
@@ -126,7 +127,6 @@ public class GUI<E> implements CategoryListener {
 	private JSplitPane tempSplit;
 	private boolean initSplit = true;
 
-	private final JPanel panelTapped_SimMenu = new JPanel();
 	private JPopupMenu popmenuEdit = new JPopupMenu();
 	private JMenuItem editItem = new JMenuItem("Edit Object");
 	private String catOfObjToBeEdited;
@@ -301,7 +301,7 @@ public class GUI<E> implements CategoryListener {
 		control.initListener(this);
 		controller.setCanvas(canvas);
 		model.setConsole(console);
-		simMenu = new SimulationMenu(model, control);
+		simMenu = new AlgorithmMenu(model, control);
 		initialize();
 		updateCategories(model.getCategories());
 		updCon = new UpdateController(model, controller);
@@ -416,30 +416,46 @@ public class GUI<E> implements CategoryListener {
 
 			@Override
 			public void actionPerformed(ActionEvent e) {
+				if (tabbedPane.getMousePosition() != null) {
+					tabTemp = tabbedPane;
+				} else {
+					tabTemp = tabbedPane2;
+				}
 				// Uppernode Canvas?
-				if (((JScrollPane) tabbedPane.getSelectedComponent()).getViewport()
+				if (((JScrollPane) tabTemp.getSelectedComponent()).getViewport()
 						.getComponent(0) instanceof UpperNodeCanvas) {
-					UpperNodeCanvas uNC = (UpperNodeCanvas) ((JScrollPane) tabbedPane.getSelectedComponent())
-							.getViewport().getComponent(0);
+					UpperNodeCanvas uNC = (UpperNodeCanvas) ((JScrollPane) tabTemp.getSelectedComponent()).getViewport()
+							.getComponent(0);
 					for (AbstractCpsObject cps : model.getSelectedCpsObjects()) {
 						if (uNC.upperNode.getNodes().contains(cps)) {
 							controller.delObjUpperNode(cps, uNC.upperNode);
 							// Remove UpperNodeTab if UpperNode deleted
 							if (cps instanceof CpsUpperNode) {
 								for (int i = 4; i < tabbedPane.getTabCount(); i++) {
-									if (((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i)).getViewport()
-											.getComponent(0)).upperNode.getId() == cps.getId()) {
-										tabbedPane.remove(i);
-										i = tabbedPane.getTabCount();
+									if (tabbedPane.getComponentAt(i) != null
+											&& ((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i))
+													.getViewport().getComponent(0)).upperNode.getId() == cps.getId()) {
+										((ButtonTabComponent) tabbedPane.getTabComponentAt(i)).removeTabs();
+										break;
 									}
 								}
+								// If SplitView is on and the view on
+								// tabbedPane2 is the deleted upperNode
+								if (tabbedPane2.getTabCount() > 0
+										&& ((JScrollPane) tabbedPane2.getSelectedComponent()).getViewport()
+												.getComponent(0) instanceof UpperNodeCanvas
+										&& ((UpperNodeCanvas) ((JScrollPane) tabbedPane2.getSelectedComponent())
+												.getViewport().getComponent(0)).upperNode.getId() == cps.getId()) {
+									((ButtonTabComponent) tabbedPane.getTabComponentAt(tabbedPane2.getSelectedIndex()))
+											.removeTabs();
+								}
 							}
 						}
 					}
 					uNC.repaint();
 
 					// or Canvas?
-				} else if (((JScrollPane) tabbedPane.getSelectedComponent()).getViewport()
+				} else if (((JScrollPane) tabTemp.getSelectedComponent()).getViewport()
 						.getComponent(0) instanceof MyCanvas) {
 					boolean save = false;
 					for (int j = 0; j < model.getSelectedCpsObjects().size(); j++) {
@@ -450,12 +466,23 @@ public class GUI<E> implements CategoryListener {
 						// Remove UpperNodeTab if UpperNode deleted
 						if (cps instanceof CpsUpperNode) {
 							for (int i = 4; i < tabbedPane.getTabCount(); i++) {
-								if (((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i)).getViewport()
-										.getComponent(0)).upperNode.getId() == cps.getId()) {
-									tabbedPane.remove(i);
-									i = tabbedPane.getTabCount();
+								if (tabbedPane.getComponentAt(i) != null
+										&& ((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i)).getViewport()
+												.getComponent(0)).upperNode.getId() == cps.getId()) {
+									((ButtonTabComponent) tabbedPane.getTabComponentAt(i)).removeTabs();
+									break;
 								}
 							}
+							// If SplitView is on and the view on
+							// tabbedPane2 is the deleted upperNode
+							if (tabbedPane2.getTabCount() > 0
+									&& ((JScrollPane) tabbedPane2.getSelectedComponent()).getViewport()
+											.getComponent(0) instanceof UpperNodeCanvas
+									&& ((UpperNodeCanvas) ((JScrollPane) tabbedPane2.getSelectedComponent())
+											.getViewport().getComponent(0)).upperNode.getId() == cps.getId()) {
+								((ButtonTabComponent) tabbedPane.getTabComponentAt(tabbedPane2.getSelectedIndex()))
+										.removeTabs();
+							}
 						}
 					}
 					canvas.repaint();
@@ -759,6 +786,10 @@ public class GUI<E> implements CategoryListener {
 
 		splitPane_1.setLeftComponent(lblHolonBodySize);
 
+		mnAlgorithm.add(simMenu);
+		
+		menuBar.add(mnAlgorithm);
+		
 		menuBar.add(mnHelp);
 
 		mnHelp.add(aboutUs);
@@ -769,15 +800,13 @@ public class GUI<E> implements CategoryListener {
 		splitButton.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				if (panelTapped_SimMenu
-						.getComponent(panelTapped_SimMenu.getComponentCount() - 1) instanceof JSplitPane) {
+				if (splitPaneCanvasConsole
+						.getLeftComponent() instanceof JSplitPane) {
 					initSplit = true;
 					Component tempC = tabbedPane2.getSelectedComponent();
 					tabbedPane.setComponentAt(tabbedPane2.getSelectedIndex(), tempC);
 					tabbedPane2.removeAll();
-					panelTapped_SimMenu
-							.remove(panelTapped_SimMenu.getComponent(panelTapped_SimMenu.getComponentCount() - 1));
-					panelTapped_SimMenu.add(tabbedPane);
+					splitPaneCanvasConsole.setLeftComponent(tabbedPane);
 				} else {
 					for (int i = 0; i < tabbedPane.getTabCount(); i++) {
 						tabbedPane2.addTab(tabbedPane.getTitleAt(i), null);
@@ -802,8 +831,7 @@ public class GUI<E> implements CategoryListener {
 					tempSplit.setLeftComponent(tabbedPane);
 					tempSplit.setDividerLocation(tabbedPane.getWidth() / 2);
 					tempSplit.setResizeWeight(0.9);
-					panelTapped_SimMenu.remove(tabbedPane);
-					panelTapped_SimMenu.add(tempSplit);
+					splitPaneCanvasConsole.setLeftComponent(tempSplit);
 					initSplit = false;
 				}
 				contentPane.updateUI();
@@ -1865,7 +1893,7 @@ public class GUI<E> implements CategoryListener {
 		splitPaneCanvasConsole.setResizeWeight(0.9);
 
 		splitPane.setLeftComponent(scrollPane1);
-		splitPaneCanvasConsole.setLeftComponent(panelTapped_SimMenu);
+		splitPaneCanvasConsole.setLeftComponent(tabbedPane);
 		tabbedPane.addTab("View", canvasSP);
 		tabbedPane.addTab("Statistics", statScrollPane);
 		tabbedPane.addTab("Holon", holonCanvas);
@@ -1887,12 +1915,8 @@ public class GUI<E> implements CategoryListener {
 		splitGraphHolonEl.setBottomComponent(scrollElements);
 		canvasSP.setViewportView(canvas);
 		// holonSP.setViewportView(holonCanvas);
-		panelTapped_SimMenu.setLayout(new BorderLayout());
-		panelTapped_SimMenu.add(simMenu, BorderLayout.NORTH);
-		panelTapped_SimMenu.add(tabbedPane);
 		simMenu.setBackground(new Color(240, 240, 240));
 
-		panelTapped_SimMenu.setBorder(null);
 		tabbedPane.setBorder(null);
 		scrollProperties.setBorder(null);
 		scrollGraph.setBorder(null);
@@ -2223,6 +2247,7 @@ public class GUI<E> implements CategoryListener {
 
 			JScrollPane sp = new JScrollPane(unc);
 			sp.setBorder(null);
+			//Selected tabbed Pane = tabbedPane or tabbedPane2
 			if (tabTemp == tabbedPane) {
 				tabbedPane.add(temp.getName(), sp);
 				tabbedPane.setSelectedComponent(sp);

+ 0 - 1
src/ui/view/MyCanvas.java

@@ -348,7 +348,6 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 							if (tabbedPane.getComponentAt(i) != null
 									&& ((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i)).getViewport()
 											.getComponent(0)).upperNode.getId() == cps.getId()) {
-
 								((ButtonTabComponent) tabbedPane.getTabComponentAt(i)).removeTabs();
 								break;
 							}