|
@@ -53,6 +53,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
|
|
|
private int sx, sy; // Mark Coords
|
|
|
|
|
|
ArrayList<HolonElement> dataSelected = new ArrayList<HolonElement>();
|
|
|
+ ArrayList<CpsObject> TempSelected = new ArrayList<CpsObject>();
|
|
|
|
|
|
private boolean dragging = false; // for dragging
|
|
|
private boolean drawEdge = false; // for drawing edges
|
|
@@ -182,8 +183,8 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
|
|
|
((HolonSwitch) cps).setState(false);
|
|
|
}
|
|
|
}
|
|
|
- if ((cps == tempCps && model.getSelectedCpsObjects().size() == 0)
|
|
|
- || model.getSelectedCpsObjects().contains(cps)) {
|
|
|
+ if ((cps == tempCps && model.getSelectedCpsObjects().size() == 0 && TempSelected.size() == 0)
|
|
|
+ || model.getSelectedCpsObjects().contains(cps) || TempSelected.contains(cps)) {
|
|
|
g2.setColor(Color.BLUE);
|
|
|
g2.fillRect(cps.getPosition().x - (controller.getScale() / 20),
|
|
|
cps.getPosition().y - (controller.getScale() / 20),
|
|
@@ -325,9 +326,19 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
|
|
|
popmenu.show(e.getComponent(), e.getX(), e.getY());
|
|
|
}
|
|
|
|
|
|
- doMark = false;
|
|
|
+ if (doMark) {
|
|
|
+ doMark = false;
|
|
|
+ for (CpsObject cps : TempSelected) {
|
|
|
+ if (!model.getSelectedCpsObjects().contains(cps)) {
|
|
|
+ controller.addSelectedObject(cps);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
controller.calculateStateForTimeStep(model.getCurIteration());
|
|
|
+
|
|
|
repaint();
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -335,6 +346,10 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
|
|
|
// If Edge is drawn
|
|
|
x = e.getX();
|
|
|
y = e.getY();
|
|
|
+ if (!model.getSelectedCpsObjects().contains(tempCps)) {
|
|
|
+ model.getSelectedCpsObjects().clear();
|
|
|
+ }
|
|
|
+
|
|
|
if (dragging) {
|
|
|
try {
|
|
|
if (model.getSelectedCpsObjects().size() > 0) {
|
|
@@ -344,8 +359,8 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
|
|
|
x = e.getX() - controller.getScaleDiv2();
|
|
|
y = e.getY() - controller.getScaleDiv2();
|
|
|
} else {
|
|
|
- x = e.getX() + (cps.getPosition().x - e.getX()) ;
|
|
|
- y = e.getY() + (cps.getPosition().y - e.getY()) ;
|
|
|
+ x = e.getX() + (cps.getPosition().x - e.getX());
|
|
|
+ y = e.getY() + (cps.getPosition().y - e.getY());
|
|
|
}
|
|
|
|
|
|
if (x < controller.getScaleDiv2())
|
|
@@ -393,24 +408,23 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
|
|
|
}
|
|
|
|
|
|
// Mark Objects
|
|
|
+ TempSelected.clear();
|
|
|
if (doMark) {
|
|
|
for (CpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
- if (!model.getSelectedCpsObjects().contains(cps)) {
|
|
|
+ int x1 = sx, x2 = x, y1 = sy, y2 = y;
|
|
|
|
|
|
- int x1 = sx, x2 = x, y1 = sy, y2 = y;
|
|
|
+ if (sx >= x) {
|
|
|
+ x1 = x;
|
|
|
+ x2 = sx;
|
|
|
+ }
|
|
|
+ if (sy >= y) {
|
|
|
+ y1 = y;
|
|
|
+ y2 = sy;
|
|
|
+ }
|
|
|
+ if (x1 <= cps.getPosition().x && y1 <= cps.getPosition().y && x2 >= cps.getPosition().x
|
|
|
+ && y2 >= cps.getPosition().y) {
|
|
|
+ TempSelected.add(cps);
|
|
|
|
|
|
- if (sx >= x) {
|
|
|
- x1 = x;
|
|
|
- x2 = sx;
|
|
|
- }
|
|
|
- if (sy >= y) {
|
|
|
- y1 = y;
|
|
|
- y2 = sy;
|
|
|
- }
|
|
|
- if (x1 <= cps.getPosition().x && y1 <= cps.getPosition().y && x2 >= cps.getPosition().x
|
|
|
- && y2 >= cps.getPosition().y) {
|
|
|
- controller.addSelectedObject(cps);
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
}
|