|
@@ -58,7 +58,6 @@ public class GUI<E> implements CategoryListener {
|
|
private final JSplitPane splitPaneCanvasConsole = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
|
|
private final JSplitPane splitPaneCanvasConsole = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
|
|
// the tabbed canvas containing the different sub-net tabs of the grid (Main Grid + Nodes of Nodes)
|
|
// the tabbed canvas containing the different sub-net tabs of the grid (Main Grid + Nodes of Nodes)
|
|
private final JTabbedPane tabbedPaneInnerOriginal = new JTabbedPane(JTabbedPane.TOP);
|
|
private final JTabbedPane tabbedPaneInnerOriginal = new JTabbedPane(JTabbedPane.TOP);
|
|
- // private final JTabbedPane tabbedPaneInnerSplit = new JTabbedPane(JTabbedPane.TOP);
|
|
|
|
// the main canvas where we can see the grid currently displayed
|
|
// the main canvas where we can see the grid currently displayed
|
|
private final JScrollPane canvasSP = new JScrollPane();
|
|
private final JScrollPane canvasSP = new JScrollPane();
|
|
private final JScrollPane scrollPane1 = new JScrollPane();
|
|
private final JScrollPane scrollPane1 = new JScrollPane();
|
|
@@ -271,7 +270,7 @@ public class GUI<E> implements CategoryListener {
|
|
private void initialize() {
|
|
private void initialize() {
|
|
frmCyberPhysical = new JFrame();
|
|
frmCyberPhysical = new JFrame();
|
|
frmCyberPhysical.setTitle("Cyber Physical Systems Model");
|
|
frmCyberPhysical.setTitle("Cyber Physical Systems Model");
|
|
- frmCyberPhysical.setBounds(100, -1080, 1000, 800);
|
|
|
|
|
|
+ frmCyberPhysical.setBounds(100, 100, 1000, 800);
|
|
frmCyberPhysical.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
|
|
frmCyberPhysical.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
|
|
frmCyberPhysical.setExtendedState(JFrame.MAXIMIZED_BOTH);
|
|
frmCyberPhysical.setExtendedState(JFrame.MAXIMIZED_BOTH);
|
|
frmCyberPhysical.addWindowListener(new java.awt.event.WindowAdapter() {
|
|
frmCyberPhysical.addWindowListener(new java.awt.event.WindowAdapter() {
|
|
@@ -379,9 +378,18 @@ public class GUI<E> implements CategoryListener {
|
|
JScrollPane scrollPane = getScrollPaneFromTabbedPane();
|
|
JScrollPane scrollPane = getScrollPaneFromTabbedPane();
|
|
Component canvasOrUpperNodeCanvas = scrollPane.getViewport().getComponent(0);
|
|
Component canvasOrUpperNodeCanvas = scrollPane.getViewport().getComponent(0);
|
|
|
|
|
|
|
|
+ // check whether a producer was deleted (this triggers a complete re-evaluation of the net)
|
|
|
|
+ boolean wasProducerDeleted = false;
|
|
|
|
+
|
|
if (canvasOrUpperNodeCanvas instanceof UpperNodeCanvas) {
|
|
if (canvasOrUpperNodeCanvas instanceof UpperNodeCanvas) {
|
|
UpperNodeCanvas uNC = (UpperNodeCanvas) canvasOrUpperNodeCanvas;
|
|
UpperNodeCanvas uNC = (UpperNodeCanvas) canvasOrUpperNodeCanvas;
|
|
for (AbstractCpsObject cps : model.getSelectedCpsObjects()) {
|
|
for (AbstractCpsObject cps : model.getSelectedCpsObjects()) {
|
|
|
|
+
|
|
|
|
+ if (cps instanceof HolonObject
|
|
|
|
+ && ((HolonObject) cps).getState() == HolonObject.PRODUCER) {
|
|
|
|
+ wasProducerDeleted = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
controller.removeTrackingObj(cps);
|
|
controller.removeTrackingObj(cps);
|
|
if (uNC.upperNode.getNodes().contains(cps)) {
|
|
if (uNC.upperNode.getNodes().contains(cps)) {
|
|
controller.delObjUpperNode(cps, uNC.upperNode);
|
|
controller.delObjUpperNode(cps, uNC.upperNode);
|
|
@@ -398,6 +406,12 @@ public class GUI<E> implements CategoryListener {
|
|
boolean save = false;
|
|
boolean save = false;
|
|
for (int j = 0; j < model.getSelectedCpsObjects().size(); j++) {
|
|
for (int j = 0; j < model.getSelectedCpsObjects().size(); j++) {
|
|
AbstractCpsObject cps = model.getSelectedCpsObjects().get(j);
|
|
AbstractCpsObject cps = model.getSelectedCpsObjects().get(j);
|
|
|
|
+
|
|
|
|
+ if (cps instanceof HolonObject
|
|
|
|
+ && ((HolonObject) cps).getState() == HolonObject.PRODUCER) {
|
|
|
|
+ wasProducerDeleted = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
controller.removeTrackingObj(cps);
|
|
controller.removeTrackingObj(cps);
|
|
if (j < model.getSelectedCpsObjects().size() - 1)
|
|
if (j < model.getSelectedCpsObjects().size() - 1)
|
|
save = true;
|
|
save = true;
|
|
@@ -409,6 +423,13 @@ public class GUI<E> implements CategoryListener {
|
|
}
|
|
}
|
|
canvas.repaint();
|
|
canvas.repaint();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // recalculate net if a producer was deleted
|
|
|
|
+ if (wasProducerDeleted) {
|
|
|
|
+ controller.resetSimulation();
|
|
|
|
+ controller.calculateStateForCurrentTimeStep();
|
|
|
|
+ }
|
|
|
|
+
|
|
model.getSelectedCpsObjects().clear();
|
|
model.getSelectedCpsObjects().clear();
|
|
hideScrollGraph();
|
|
hideScrollGraph();
|
|
}
|
|
}
|