import org.simantics.g2d.canvas.ICanvasContext;
import org.simantics.g2d.canvas.IToolMode;
import org.simantics.g2d.diagram.IDiagram;
-import org.simantics.maps.elevation.server.SingletonTiffTileInterface;
-import org.simantics.maps.elevation.server.prefs.MapsElevationServerPreferences;
import org.simantics.scenegraph.g2d.G2DNode;
import org.simantics.scenegraph.g2d.events.EventTypes;
import org.simantics.scenegraph.g2d.events.KeyEvent.KeyPressedEvent;
private static final Color RED_ALPHA = new Color(255, 0, 0, 100);
private boolean scaleStroke = true;
-
+ private AffineTransform lastViewTransform = new AffineTransform();
+
@Override
public void init() {
super.init();
@Override
public void render(Graphics2D g2d) {
+ // Must store this for hover info functionality
+ lastViewTransform = g2d.getTransform();
+
if (nodes.isEmpty())
return;
}
private boolean canStartEdge(Point2D currentPos) {
- return participant.isHoveringOverNode(currentPos);
+ return participant.isHoveringOverNode(currentPos, lastViewTransform);
}
private IToolMode getToolMode() {
boolean repaint = false;
Point2D p = NodeUtil.worldToLocal(this, e.controlPosition, new Point2D.Double());
boolean isConnectionTool = mode == Hints.CONNECTTOOL || e.hasAnyModifier(MouseEvent.ALT_MASK | MouseEvent.ALT_GRAPH_MASK);
- if (participant.pickHoveredElement(p, isConnectionTool)) {
+ // To boost pan perf hovering is only considered if no mouse button is pressed)
+ if (e.buttons == 0 && participant.pickHoveredElement(p, isConnectionTool, lastViewTransform)) {
repaint = true;
}
if (!nodes.isEmpty()) {
currentMousePos = p;
-
repaint();
return true;
}
repaint();
return super.mouseMoved(e);
}
-
+
@Override
protected boolean keyPressed(KeyPressedEvent e) {
if (e.keyCode == java.awt.event.KeyEvent.VK_ESCAPE) {
return true;
}
return super.keyPressed(e);
-
}
}
\ No newline at end of file