Skip to content

Commit

Permalink
Merge pull request #8 from sdawans/cooja-fix-vis-move
Browse files Browse the repository at this point in the history
Fixes COOJA Network Visualiser glitch when clicking on a mote
  • Loading branch information
fros4943 committed Oct 29, 2012
2 parents 53f4d27 + af1932d commit 7c29724
Showing 1 changed file with 35 additions and 31 deletions.
66 changes: 35 additions & 31 deletions tools/cooja/java/se/sics/cooja/plugins/Visualizer.java
Expand Up @@ -155,6 +155,7 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
private Position zoomingPosition = null; /* Zooming center position */
private Point zoomingPixel = null; /* Zooming center pixel */
private boolean moving = false;
private Point mouseDownPixel = null; /* Records position of mouse down to differentiate a click from a move */
private Mote movedMote = null;
public Mote clickedMote = null;
private long moveStartTime = -1;
Expand Down Expand Up @@ -813,6 +814,7 @@ private void handleMousePress(MouseEvent mouseEvent) {

if (motes != null && motes.length > 0) {
/* One of the clicked motes should be moved */
mouseDownPixel = new Point(x, y);
clickedMote = motes[0];
beginMoveRequest(motes[0], false, false);
}
Expand Down Expand Up @@ -902,43 +904,45 @@ private void handleMouseMove(MouseEvent e, boolean stop) {

/* Moving */
if (moving) {
Position newPos = transformPixelToPosition(x, y);

if (!stop) {
canvas.setCursor(moveCursor);
movedMote.getInterfaces().getPosition().setCoordinates(
newPos.getXCoordinate(),
newPos.getYCoordinate(),
movedMote.getInterfaces().getPosition().getZCoordinate()
);
repaint();
return;
}
/* Restore cursor */
canvas.setCursor(Cursor.getDefaultCursor());


/* Move mote */
if (moveStartTime < 0 || System.currentTimeMillis() - moveStartTime > 300) {
if (moveConfirm) {
String options[] = {"Yes", "Cancel"};
int returnValue = JOptionPane.showOptionDialog(Visualizer.this,
"Move mote to" +
"\nX=" + newPos.getXCoordinate() +
"\nY=" + newPos.getYCoordinate() +
"\nZ=" + movedMote.getInterfaces().getPosition().getZCoordinate(),
"Move mote?",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
null, options, options[0]);
moving = returnValue == JOptionPane.YES_OPTION;
}
if (moving) {
if(x != mouseDownPixel.x || y != mouseDownPixel.y) {
Position newPos = transformPixelToPosition(x, y);

if (!stop) {
canvas.setCursor(moveCursor);
movedMote.getInterfaces().getPosition().setCoordinates(
newPos.getXCoordinate(),
newPos.getYCoordinate(),
movedMote.getInterfaces().getPosition().getZCoordinate()
);
repaint();
return;
}
/* Restore cursor */
canvas.setCursor(Cursor.getDefaultCursor());


/* Move mote */
if (moveStartTime < 0 || System.currentTimeMillis() - moveStartTime > 300) {
if (moveConfirm) {
String options[] = {"Yes", "Cancel"};
int returnValue = JOptionPane.showOptionDialog(Visualizer.this,
"Move mote to" +
"\nX=" + newPos.getXCoordinate() +
"\nY=" + newPos.getYCoordinate() +
"\nZ=" + movedMote.getInterfaces().getPosition().getZCoordinate(),
"Move mote?",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
null, options, options[0]);
moving = returnValue == JOptionPane.YES_OPTION;
}
if (moving) {
movedMote.getInterfaces().getPosition().setCoordinates(
newPos.getXCoordinate(),
newPos.getYCoordinate(),
movedMote.getInterfaces().getPosition().getZCoordinate()
);
repaint();
}
}
}

Expand Down

0 comments on commit 7c29724

Please sign in to comment.