|
@@ -98,7 +98,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
|
|
|
private JFrame frmCyberPhysical;
|
|
|
|
|
|
- private final SimulationMenu simMenu;
|
|
|
+ private final AlgorithmMenu simMenu;
|
|
|
|
|
|
private JTabbedPane tabTemp;
|
|
|
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;
|
|
|
+ }
|
|
|
|
|
|
- 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);
|
|
|
|
|
|
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 (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();
|
|
|
|
|
|
|
|
|
- } 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 {
|
|
|
|
|
|
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 (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);
|
|
|
|
|
|
- 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);
|
|
|
+
|
|
|
if (tabTemp == tabbedPane) {
|
|
|
tabbedPane.add(temp.getName(), sp);
|
|
|
tabbedPane.setSelectedComponent(sp);
|