|
@@ -19,6 +19,8 @@ import java.awt.event.MouseMotionListener;
|
|
|
import java.awt.geom.Line2D;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.LinkedList;
|
|
|
+import java.util.Timer;
|
|
|
+import java.util.TimerTask;
|
|
|
|
|
|
import javax.swing.AbstractButton;
|
|
|
import javax.swing.ImageIcon;
|
|
@@ -33,6 +35,10 @@ import classes.CpsObject;
|
|
|
import classes.HolonElement;
|
|
|
import classes.HolonObject;
|
|
|
import classes.HolonSwitch;
|
|
|
+<<<<<<< HEAD
|
|
|
+=======
|
|
|
+import classes.HolonTransformer;
|
|
|
+>>>>>>> b21529a76393a3f2ba0825f9a04ab5b2a8e80a33
|
|
|
import ui.controller.Control;
|
|
|
import ui.model.*;
|
|
|
|
|
@@ -48,9 +54,9 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
private int cy;
|
|
|
ArrayList<HolonElement> dataSelected = new ArrayList<HolonElement>();
|
|
|
|
|
|
- boolean dragging = false;
|
|
|
- boolean drawEdge = false;
|
|
|
- boolean dropDelete = false;
|
|
|
+ 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();
|
|
|
|
|
@@ -68,6 +74,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
itemDelete.addActionListener(new ActionListener() {
|
|
|
@Override
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
+ //Remove the selected Object object
|
|
|
model.getObjectsOnCanvas().remove(tempCps);
|
|
|
for (CpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
cps.getConnectedTo().remove(tempCps);
|
|
@@ -90,6 +97,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
*/
|
|
|
public void paintComponent(Graphics g) {
|
|
|
super.paintComponent(g);
|
|
|
+ //Rendering
|
|
|
g2 = (Graphics2D) g;
|
|
|
RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
|
|
g2.setRenderingHints(rh);
|
|
@@ -105,14 +113,28 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
// drawEdges
|
|
|
g2.setColor(Color.BLACK);
|
|
|
if (drawEdge)
|
|
|
+<<<<<<< HEAD
|
|
|
g2.drawLine(tempCps.getPos().x + controller.getScaleDiv2(), tempCps.getPos().y + controller.getScaleDiv2(),
|
|
|
x, y);
|
|
|
+=======
|
|
|
+ g2.drawLine(tempCps.getPosition().x + controller.getScaleDiv2(),
|
|
|
+ tempCps.getPosition().y + controller.getScaleDiv2(), x, y);
|
|
|
+>>>>>>> b21529a76393a3f2ba0825f9a04ab5b2a8e80a33
|
|
|
|
|
|
for (CpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
for (CpsObject con : cps.getConnectedTo()) {
|
|
|
if (con.getID() != model.getSelectedObjectID() && cps.getID() != model.getSelectedObjectID())
|
|
|
+<<<<<<< HEAD
|
|
|
g2.drawLine(cps.getPos().x + controller.getScaleDiv2(), cps.getPos().y + controller.getScaleDiv2(),
|
|
|
con.getPos().x + controller.getScaleDiv2(), con.getPos().y + controller.getScaleDiv2());
|
|
|
+=======
|
|
|
+
|
|
|
+ g2.drawLine(cps.getPosition().x + controller.getScaleDiv2(),
|
|
|
+ cps.getPosition().y + controller.getScaleDiv2(),
|
|
|
+ con.getPosition().x + controller.getScaleDiv2(),
|
|
|
+ con.getPosition().y + controller.getScaleDiv2());
|
|
|
+
|
|
|
+>>>>>>> b21529a76393a3f2ba0825f9a04ab5b2a8e80a33
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -121,21 +143,44 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
for (CpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
for (CpsObject con : cps.getConnectedTo()) {
|
|
|
if (con.getID() == model.getSelectedObjectID())
|
|
|
+<<<<<<< HEAD
|
|
|
g2.drawLine(cps.getPos().x + controller.getScaleDiv2(), cps.getPos().y + controller.getScaleDiv2(),
|
|
|
con.getPos().x + controller.getScaleDiv2(), con.getPos().y + controller.getScaleDiv2());
|
|
|
+=======
|
|
|
+
|
|
|
+ g2.drawLine(cps.getPosition().x + controller.getScaleDiv2(),
|
|
|
+ cps.getPosition().y + controller.getScaleDiv2(),
|
|
|
+ con.getPosition().x + controller.getScaleDiv2(),
|
|
|
+ con.getPosition().y + controller.getScaleDiv2());
|
|
|
+
|
|
|
+>>>>>>> b21529a76393a3f2ba0825f9a04ab5b2a8e80a33
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// Objects
|
|
|
for (CpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
img = new ImageIcon(this.getClass().getResource(cps.getImage())).getImage();
|
|
|
- g2.drawImage(img, cps.getPos().x, cps.getPos().y, controller.getScale(), controller.getScale(), null);
|
|
|
+
|
|
|
+ g2.drawImage(img, cps.getPosition().x, cps.getPosition().y, controller.getScale(), controller.getScale(),
|
|
|
+ null);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void mouseClicked(MouseEvent e) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
+ //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) {
|
|
|
+ tempCps.setImage("/Images/switch-off.png");
|
|
|
+ System.out.println("off");
|
|
|
+ } else {
|
|
|
+ tempCps.setImage("/Images/switch-on.png");
|
|
|
+ System.out.println("on");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ repaint();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -159,11 +204,13 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
tempCps = null;
|
|
|
// Object Selection
|
|
|
for (CpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
- cx = cps.getPos().x;
|
|
|
- cy = cps.getPos().y;
|
|
|
+ cx = cps.getPosition().x;
|
|
|
+ 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())
|
|
|
+<<<<<<< HEAD
|
|
|
drawEdge = true;
|
|
|
if (tempCps.getClass() == HolonObject.class) {
|
|
|
HolonObject tempObj = ((HolonObject) tempCps);
|
|
@@ -171,9 +218,11 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
} else {
|
|
|
dataSelected = null;
|
|
|
}
|
|
|
+=======
|
|
|
+ drawEdge = true;
|
|
|
+>>>>>>> b21529a76393a3f2ba0825f9a04ab5b2a8e80a33
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
// Object Selection Highlighting (selectRect)
|
|
|
objectSelectionHighlighting();
|
|
|
|
|
@@ -186,17 +235,16 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
drawEdge = false;
|
|
|
drawDeleteEdge();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ //if Dragged reposition the Object
|
|
|
if (dragging) {
|
|
|
x = e.getX();
|
|
|
y = e.getY();
|
|
|
-
|
|
|
dragging = false;
|
|
|
- tempCps.setPos(e.getX() - controller.getScaleDiv2(), e.getY() - controller.getScaleDiv2());
|
|
|
- tempCps = null;
|
|
|
+ tempCps.setPosition(e.getX() - controller.getScaleDiv2(), e.getY() - controller.getScaleDiv2());
|
|
|
}
|
|
|
|
|
|
- // Rechtsklick Liste
|
|
|
+ // Rightclick List
|
|
|
if (e.getButton() == e.BUTTON3) {
|
|
|
if (e.getButton() == e.BUTTON3 && tempCps != null) {
|
|
|
itemDelete.setEnabled(true);
|
|
@@ -211,22 +259,24 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
|
|
|
@Override
|
|
|
public void mouseDragged(MouseEvent e) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
+ //If Edge is drawn
|
|
|
if (drawEdge) {
|
|
|
x = e.getX();
|
|
|
y = e.getY();
|
|
|
repaint();
|
|
|
} else {
|
|
|
try {
|
|
|
- tempCps.setPos(e.getX() - controller.getScaleDiv2(), e.getY() - controller.getScaleDiv2());
|
|
|
+ //Drag Position
|
|
|
+ tempCps.setPosition(e.getX() - controller.getScaleDiv2(), e.getY() - controller.getScaleDiv2());
|
|
|
dragging = true;
|
|
|
- selectRect.setLocation(tempCps.getPos().x - (controller.getScale() / 20),
|
|
|
- tempCps.getPos().y - (controller.getScale() / 20));
|
|
|
+ //Highlighting Position
|
|
|
+ selectRect.setLocation(tempCps.getPosition().x - (controller.getScale() / 20),
|
|
|
+ tempCps.getPosition().y - (controller.getScale() / 20));
|
|
|
+ //TipText Position and name
|
|
|
objectTT.setTipText(tempCps.getName());
|
|
|
- objectTT.setLocation(tempCps.getPos().x, tempCps.getPos().y);
|
|
|
+ objectTT.setLocation(tempCps.getPosition().x, tempCps.getPosition().y+controller.getScale());
|
|
|
repaint();
|
|
|
} catch (Exception e2) {
|
|
|
- // TODO: handle exception
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -235,14 +285,16 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
public void mouseMoved(MouseEvent e) {
|
|
|
x = e.getX();
|
|
|
y = e.getY();
|
|
|
-
|
|
|
+ //Everytghin for the tooltip :)
|
|
|
boolean on = false;
|
|
|
for (CpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
- cx = cps.getPos().x;
|
|
|
- cy = cps.getPos().y;
|
|
|
+
|
|
|
+ cx = cps.getPosition().x;
|
|
|
+ cy = cps.getPosition().y;
|
|
|
if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
|
|
|
+
|
|
|
objectTT.setTipText(cps.getName());
|
|
|
- objectTT.setLocation(cx, cy);
|
|
|
+ objectTT.setLocation(cx, cy+controller.getScale());
|
|
|
on = true;
|
|
|
}
|
|
|
}
|
|
@@ -257,10 +309,11 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
*/
|
|
|
private void objectSelectionHighlighting() {
|
|
|
if (tempCps != null) {
|
|
|
- selectRect.setBounds(tempCps.getPos().x - (controller.getScale() / 20),
|
|
|
- tempCps.getPos().y - (controller.getScale() / 20),
|
|
|
+ selectRect.setBounds(tempCps.getPosition().x - (controller.getScale() / 20),
|
|
|
+ tempCps.getPosition().y - (controller.getScale() / 20),
|
|
|
controller.getScale() + controller.getScale() / 10,
|
|
|
controller.getScale() + controller.getScale() / 10);
|
|
|
+
|
|
|
controller.setSelectedObjectID(tempCps.getID());
|
|
|
} else {
|
|
|
controller.setSelectedObjectID(0);
|
|
@@ -273,9 +326,10 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
|
|
|
*/
|
|
|
private void drawDeleteEdge() {
|
|
|
for (CpsObject cps : model.getObjectsOnCanvas()) {
|
|
|
- cx = cps.getPos().x;
|
|
|
- cy = cps.getPos().y;
|
|
|
+ cx = cps.getPosition().x;
|
|
|
+ cy = cps.getPosition().y;
|
|
|
if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
|
|
|
+
|
|
|
if (!cps.getConnectedTo().contains(tempCps)) {
|
|
|
cps.AddConnection(tempCps);
|
|
|
tempCps.AddConnection(cps);
|
|
@@ -286,4 +340,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(){
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|