|
@@ -49,10 +49,11 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
Graphics2D g2; // For Painting
|
|
|
private int cx;
|
|
|
private int cy;
|
|
|
+ ArrayList<HolonElement> dataSelected = new ArrayList<HolonElement>();
|
|
|
|
|
|
- private boolean dragging = false; //for dragging
|
|
|
- private boolean drawEdge = false; //for drawing edges
|
|
|
- private boolean click = false; // for double click
|
|
|
+ private boolean dragging = false; // for dragging
|
|
|
+ private boolean drawEdge = false; // for drawing edges
|
|
|
+ private boolean click = false; // for double click
|
|
|
private CpsObject tempCps = null;
|
|
|
private Rectangle selectRect = new Rectangle();
|
|
|
|
|
@@ -70,7 +71,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
itemDelete.addActionListener(new ActionListener() {
|
|
|
@Override
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
- //Remove the selected Object object
|
|
|
+ // Remove the selected Object object
|
|
|
model.getObjectsOnCanvas().remove(tempCps);
|
|
|
for (CpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
cps.getConnectedTo().remove(tempCps);
|
|
@@ -93,7 +94,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
*/
|
|
|
public void paintComponent(Graphics g) {
|
|
|
super.paintComponent(g);
|
|
|
- //Rendering
|
|
|
+ // Rendering
|
|
|
g2 = (Graphics2D) g;
|
|
|
RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
|
|
g2.setRenderingHints(rh);
|
|
@@ -103,6 +104,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
g2.setColor(Color.GREEN);
|
|
|
g2.fillRect((int) selectRect.getX(), (int) selectRect.getY(), (int) selectRect.getWidth(),
|
|
|
(int) selectRect.getHeight());
|
|
|
+
|
|
|
}
|
|
|
|
|
|
// drawEdges
|
|
@@ -114,12 +116,10 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
for (CpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
for (CpsObject con : cps.getConnectedTo()) {
|
|
|
if (con.getID() != model.getSelectedObjectID() && cps.getID() != model.getSelectedObjectID())
|
|
|
-
|
|
|
g2.drawLine(cps.getPosition().x + controller.getScaleDiv2(),
|
|
|
cps.getPosition().y + controller.getScaleDiv2(),
|
|
|
con.getPosition().x + controller.getScaleDiv2(),
|
|
|
con.getPosition().y + controller.getScaleDiv2());
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -128,12 +128,10 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
for (CpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
for (CpsObject con : cps.getConnectedTo()) {
|
|
|
if (con.getID() == model.getSelectedObjectID())
|
|
|
-
|
|
|
g2.drawLine(cps.getPosition().x + controller.getScaleDiv2(),
|
|
|
cps.getPosition().y + controller.getScaleDiv2(),
|
|
|
con.getPosition().x + controller.getScaleDiv2(),
|
|
|
con.getPosition().y + controller.getScaleDiv2());
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -149,7 +147,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
|
|
|
@Override
|
|
|
public void mouseClicked(MouseEvent e) {
|
|
|
- //If double clicked on a Switch change the Image to on/off
|
|
|
+ // If double clicked on a Switch change the Image to on/off
|
|
|
if (doubleClick() && tempCps != null && tempCps.getClass() == HolonSwitch.class) {
|
|
|
System.out.println("trans double click");
|
|
|
if (tempCps.getImage().compareTo("/Images/switch-on.png") == 0) {
|
|
@@ -177,10 +175,6 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
|
|
|
@Override
|
|
|
public void mousePressed(MouseEvent e) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- x = e.getX();
|
|
|
- y = e.getY();
|
|
|
-
|
|
|
tempCps = null;
|
|
|
// Object Selection
|
|
|
for (CpsObject cps : model.getObjectsOnCanvas()) {
|
|
@@ -188,9 +182,16 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
cy = cps.getPosition().y;
|
|
|
if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
|
|
|
tempCps = cps;
|
|
|
- //If drawing an Edge (CTRL down)
|
|
|
- if (e.isControlDown())
|
|
|
- drawEdge = true;
|
|
|
+ // If drawing an Edge (CTRL down)
|
|
|
+ if (e.isControlDown()){
|
|
|
+ drawEdge = true;
|
|
|
+ }
|
|
|
+ if (tempCps.getClass() == HolonObject.class) {
|
|
|
+ HolonObject tempObj = ((HolonObject) tempCps);
|
|
|
+ dataSelected = tempObj.getElements();
|
|
|
+ } else {
|
|
|
+ dataSelected = new ArrayList<>();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
// Object Selection Highlighting (selectRect)
|
|
@@ -205,8 +206,8 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
drawEdge = false;
|
|
|
drawDeleteEdge();
|
|
|
}
|
|
|
-
|
|
|
- //if Dragged reposition the Object
|
|
|
+
|
|
|
+ // if Dragged reposition the Object
|
|
|
if (dragging) {
|
|
|
x = e.getX();
|
|
|
y = e.getY();
|
|
@@ -236,17 +237,23 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
repaint();
|
|
|
} else {
|
|
|
try {
|
|
|
+ x = e.getX()-controller.getScaleDiv2();
|
|
|
+ y = e.getY()-controller.getScaleDiv2();
|
|
|
+ if(e.getX()<controller.getScaleDiv2())x = 0;
|
|
|
+ else if(e.getX()>this.getWidth()-controller.getScaleDiv2())x = this.getWidth()-controller.getScale();
|
|
|
+ if(e.getY()<controller.getScaleDiv2())y = 0;
|
|
|
+ else if(e.getY()>this.getHeight()-controller.getScaleDiv2())y = this.getHeight()-controller.getScale();
|
|
|
//Drag Position
|
|
|
- tempCps.setPosition(e.getX() - controller.getScaleDiv2(), e.getY() - controller.getScaleDiv2());
|
|
|
- dragging = true;
|
|
|
+ tempCps.setPosition(x, y);
|
|
|
//Highlighting Position
|
|
|
- selectRect.setLocation(tempCps.getPosition().x - (controller.getScale() / 20),
|
|
|
- tempCps.getPosition().y - (controller.getScale() / 20));
|
|
|
+ selectRect.setLocation(x - (controller.getScale() / 20),y - (controller.getScale() / 20));
|
|
|
//TipText Position and name
|
|
|
objectTT.setTipText(tempCps.getName());
|
|
|
- objectTT.setLocation(tempCps.getPosition().x, tempCps.getPosition().y+controller.getScale());
|
|
|
+ objectTT.setLocation(x, y+controller.getScale());
|
|
|
repaint();
|
|
|
- } catch (Exception e2) {
|
|
|
+ }
|
|
|
+ catch (Exception e2) {
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -255,7 +262,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
public void mouseMoved(MouseEvent e) {
|
|
|
x = e.getX();
|
|
|
y = e.getY();
|
|
|
- //Everytghin for the tooltip :)
|
|
|
+ // Everytghin for the tooltip :)
|
|
|
boolean on = false;
|
|
|
for (CpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
|
|
@@ -264,7 +271,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
|
|
|
|
|
|
objectTT.setTipText(cps.getName());
|
|
|
- objectTT.setLocation(cx, cy+controller.getScale());
|
|
|
+ objectTT.setLocation(cx, cy + controller.getScale());
|
|
|
on = true;
|
|
|
}
|
|
|
}
|
|
@@ -310,26 +317,26 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Checks if a double click was made
|
|
|
*
|
|
|
* @return true if doublecklick, false if not
|
|
|
*/
|
|
|
- private boolean doubleClick(){
|
|
|
+ private boolean doubleClick() {
|
|
|
if (click) {
|
|
|
- click = false;
|
|
|
- return true;
|
|
|
- } else {
|
|
|
- click = true;
|
|
|
- Timer t = new Timer("doubleclickTimer", false);
|
|
|
- t.schedule(new TimerTask() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- click = false;
|
|
|
- }
|
|
|
- }, 500);
|
|
|
- }
|
|
|
+ click = false;
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ click = true;
|
|
|
+ Timer t = new Timer("doubleclickTimer", false);
|
|
|
+ t.schedule(new TimerTask() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ click = false;
|
|
|
+ }
|
|
|
+ }, 500);
|
|
|
+ }
|
|
|
return false;
|
|
|
}
|
|
|
}
|