Skip to content

Commit

Permalink
Merge pull request contiki-os#567 from ejoerns/pull-req/vis-scroll
Browse files Browse the repository at this point in the history
[Cooja] Mouse wheel zooming for Visualizer
  • Loading branch information
fros4943 committed Feb 21, 2014
2 parents e1e1f1c + 80b78ae commit 140b55d
Showing 1 changed file with 22 additions and 6 deletions.
28 changes: 22 additions & 6 deletions tools/cooja/java/org/contikios/cooja/plugins/Visualizer.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.awt.geom.AffineTransform;
import java.io.File;
import java.io.IOException;
Expand Down Expand Up @@ -412,6 +414,20 @@ public void mouseClicked(MouseEvent e) {
repaint();
}
});
canvas.addMouseWheelListener(new MouseWheelListener() {
public void mouseWheelMoved(MouseWheelEvent mwe) {
int x = mwe.getX();
int y = mwe.getY();
int rot = mwe.getWheelRotation();

if (rot > 0) {
zoomToFactor(zoomFactor() / 1.2, new Point(x, y));
} else {
zoomToFactor(zoomFactor() * 1.2, new Point(x, y));
}

}
});

/* Register mote menu actions */
registerMoteMenuAction(MoveMoteMenuAction.class);
Expand Down Expand Up @@ -855,16 +871,16 @@ private double zoomFactor() {
}

private void zoomToFactor(double newZoom) {
Position center = transformPixelToPosition(
new Point(canvas.getWidth()/2, canvas.getHeight()/2)
);
zoomToFactor(newZoom, new Point(canvas.getWidth()/2, canvas.getHeight()/2));
}

private void zoomToFactor(double newZoom, Point zoomCenter) {
Position center = transformPixelToPosition(zoomCenter);
viewportTransform.setToScale(
newZoom,
newZoom
);
Position newCenter = transformPixelToPosition(
new Point(canvas.getWidth()/2, canvas.getHeight()/2)
);
Position newCenter = transformPixelToPosition(zoomCenter);
viewportTransform.translate(
newCenter.getXCoordinate() - center.getXCoordinate(),
newCenter.getYCoordinate() - center.getYCoordinate()
Expand Down

0 comments on commit 140b55d

Please sign in to comment.