|
@@ -341,10 +341,10 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
|
|
|
if (cps instanceof CpsUpperNode) {
|
|
|
JTabbedPane tabbedPane = (JTabbedPane) getParent().getParent().getParent();
|
|
|
for (int i = 4; i < tabbedPane.getTabCount(); i++) {
|
|
|
- if (((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i)).getViewport()
|
|
|
+ if (tabbedPane.getComponentAt(i) != null && ((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i)).getViewport()
|
|
|
.getComponent(0)).upperNode.getId() == cps.getId()) {
|
|
|
tabbedPane.remove(i);
|
|
|
- i = tabbedPane.getTabCount();
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -555,12 +555,12 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
|
|
|
// Border Highlighting
|
|
|
if (showedInformation[3]) {
|
|
|
g2.setColor(cps.getBorderColor());
|
|
|
- if (g2.getColor() != Color.WHITE && !(cps instanceof CpsNode)) {
|
|
|
- g2.fillRect((int) (cps.getPosition().x - controller.getScaleDiv2() - scalediv20 - 3),
|
|
|
- (int) (cps.getPosition().y - controller.getScaleDiv2() - scalediv20 - 3),
|
|
|
- (int) (controller.getScale() + ((scalediv20 + 3) * 2)),
|
|
|
- (int) (controller.getScale() + ((scalediv20 + 3) * 2)));
|
|
|
- }
|
|
|
+ if (g2.getColor() != Color.WHITE && !(cps instanceof CpsNode)) {
|
|
|
+ g2.fillRect((int) (cps.getPosition().x - controller.getScaleDiv2() - scalediv20 - 3),
|
|
|
+ (int) (cps.getPosition().y - controller.getScaleDiv2() - scalediv20 - 3),
|
|
|
+ (int) (controller.getScale() + ((scalediv20 + 3) * 2)),
|
|
|
+ (int) (controller.getScale() + ((scalediv20 + 3) * 2)));
|
|
|
+ }
|
|
|
}
|
|
|
// node image
|
|
|
if (cps instanceof CpsNode && (cps == tempCps || model.getSelectedCpsObject() == cps
|
|
@@ -940,88 +940,90 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
|
|
|
* Draws or Deletes an Edge.
|
|
|
*/
|
|
|
private void drawDeleteEdge() {
|
|
|
- boolean node = true;
|
|
|
- boolean newEdge = true;
|
|
|
- boolean onEdge = true;
|
|
|
- boolean deleteNode = false;
|
|
|
- CpsEdge e = null;
|
|
|
- for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
- cx = cps.getPosition().x - controller.getScaleDiv2();
|
|
|
- cy = cps.getPosition().y - controller.getScaleDiv2();
|
|
|
- if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy
|
|
|
- && cps != tempCps) {
|
|
|
- node = false;
|
|
|
- onEdge = false;
|
|
|
- for (CpsEdge p : tempCps.getConnections()) {
|
|
|
- if ((p.getA() == tempCps && p.getB() == cps) || (p.getB() == tempCps && p.getA() == cps)) {
|
|
|
- newEdge = false;
|
|
|
- e = p;
|
|
|
+ if (getMousePosition() != null) {
|
|
|
+ boolean node = true;
|
|
|
+ boolean newEdge = true;
|
|
|
+ boolean onEdge = true;
|
|
|
+ boolean deleteNode = false;
|
|
|
+ CpsEdge e = null;
|
|
|
+ for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
+ cx = cps.getPosition().x - controller.getScaleDiv2();
|
|
|
+ cy = cps.getPosition().y - controller.getScaleDiv2();
|
|
|
+ if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy
|
|
|
+ && cps != tempCps) {
|
|
|
+ node = false;
|
|
|
+ onEdge = false;
|
|
|
+ for (CpsEdge p : tempCps.getConnections()) {
|
|
|
+ if ((p.getA() == tempCps && p.getB() == cps) || (p.getB() == tempCps && p.getA() == cps)) {
|
|
|
+ newEdge = false;
|
|
|
+ e = p;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- if (!newEdge) {
|
|
|
- controller.removeEdgesOnCanvas(e);
|
|
|
- // Node ohne Edge?
|
|
|
- if (e.getA().getClass() == CpsNode.class && e.getA().getConnections().isEmpty()) {
|
|
|
- tempCps = e.getA();
|
|
|
- deleteNode = true;
|
|
|
+ if (!newEdge) {
|
|
|
+ controller.removeEdgesOnCanvas(e);
|
|
|
+ // Node ohne Edge?
|
|
|
+ if (e.getA().getClass() == CpsNode.class && e.getA().getConnections().isEmpty()) {
|
|
|
+ tempCps = e.getA();
|
|
|
+ deleteNode = true;
|
|
|
+ }
|
|
|
+ if (e.getB().getClass() == CpsNode.class && e.getB().getConnections().isEmpty()) {
|
|
|
+ deleteNode = true;
|
|
|
+ }
|
|
|
}
|
|
|
- if (e.getB().getClass() == CpsNode.class && e.getB().getConnections().isEmpty()) {
|
|
|
- deleteNode = true;
|
|
|
+ if (newEdge) {
|
|
|
+ e = new CpsEdge(cps, tempCps, model.getMaxCapacity());
|
|
|
+ controller.addEdgeOnCanvas(e);
|
|
|
}
|
|
|
}
|
|
|
- if (newEdge) {
|
|
|
- e = new CpsEdge(cps, tempCps, model.getMaxCapacity());
|
|
|
- controller.addEdgeOnCanvas(e);
|
|
|
- }
|
|
|
}
|
|
|
- }
|
|
|
- // Edge auf eine Edge gezogen?
|
|
|
- if (onEdge) {
|
|
|
- CpsEdge p = mousePositionOnEdge(x, y);
|
|
|
- if (p != null) {
|
|
|
- CpsEdge e1 = null;
|
|
|
- CpsEdge e2 = null;
|
|
|
+ // Edge auf eine Edge gezogen?
|
|
|
+ if (onEdge) {
|
|
|
+ CpsEdge p = mousePositionOnEdge(x, y);
|
|
|
+ if (p != null) {
|
|
|
+ CpsEdge e1 = null;
|
|
|
+ CpsEdge e2 = null;
|
|
|
|
|
|
- node = false;
|
|
|
+ node = false;
|
|
|
|
|
|
- CpsNode n = new CpsNode("Node");
|
|
|
+ CpsNode n = new CpsNode("Node");
|
|
|
|
|
|
- n.setPosition(x, y);
|
|
|
- controller.addObjectCanvas(n);
|
|
|
+ n.setPosition(x, y);
|
|
|
+ controller.addObjectCanvas(n);
|
|
|
|
|
|
- AbstractCpsObject r, k;
|
|
|
- r = p.getA();
|
|
|
- k = p.getB();
|
|
|
+ AbstractCpsObject r, k;
|
|
|
+ r = p.getA();
|
|
|
+ k = p.getB();
|
|
|
|
|
|
- e = new CpsEdge(n, tempCps, model.getMaxCapacity());
|
|
|
+ e = new CpsEdge(n, tempCps, model.getMaxCapacity());
|
|
|
|
|
|
- e1 = new CpsEdge(n, r, model.getMaxCapacity());
|
|
|
+ e1 = new CpsEdge(n, r, model.getMaxCapacity());
|
|
|
|
|
|
- e2 = new CpsEdge(n, k, model.getMaxCapacity());
|
|
|
+ e2 = new CpsEdge(n, k, model.getMaxCapacity());
|
|
|
|
|
|
- controller.removeEdgesOnCanvas(p);
|
|
|
- controller.addEdgeOnCanvas(e);
|
|
|
- controller.addEdgeOnCanvas(e1);
|
|
|
- controller.addEdgeOnCanvas(e2);
|
|
|
+ controller.removeEdgesOnCanvas(p);
|
|
|
+ controller.addEdgeOnCanvas(e);
|
|
|
+ controller.addEdgeOnCanvas(e1);
|
|
|
+ controller.addEdgeOnCanvas(e2);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // ins leere Gedragged
|
|
|
- if (node) {
|
|
|
- CpsNode n = new CpsNode("Node");
|
|
|
+ // ins leere Gedragged
|
|
|
+ if (node) {
|
|
|
+ CpsNode n = new CpsNode("Node");
|
|
|
|
|
|
- n.setPosition(x, y);
|
|
|
- controller.addObjectCanvas(n);
|
|
|
+ n.setPosition(x, y);
|
|
|
+ controller.addObjectCanvas(n);
|
|
|
|
|
|
- e = new CpsEdge(n, tempCps, model.getMaxCapacity());
|
|
|
+ e = new CpsEdge(n, tempCps, model.getMaxCapacity());
|
|
|
|
|
|
- controller.addEdgeOnCanvas(e);
|
|
|
- }
|
|
|
+ controller.addEdgeOnCanvas(e);
|
|
|
+ }
|
|
|
|
|
|
- // Wenn ein Node ohne Connections da ist
|
|
|
- if (deleteNode) {
|
|
|
- controller.delCanvasObject(tempCps, true);
|
|
|
- tempCps = null;
|
|
|
+ // Wenn ein Node ohne Connections da ist
|
|
|
+ if (deleteNode) {
|
|
|
+ controller.delCanvasObject(tempCps, true);
|
|
|
+ tempCps = null;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|