From fff4e2e4beb6ce35e68809ab856446c189f4ec72 Mon Sep 17 00:00:00 2001 From: Nidhi Sawhney Date: Fri, 27 Apr 2012 10:42:14 +0200 Subject: [PATCH] Helper class to capture mouse movements on the canvas for CanvasOverlay class. --- .../util/WindFieldMouseMoveHandler.java | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/util/WindFieldMouseMoveHandler.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/util/WindFieldMouseMoveHandler.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/util/WindFieldMouseMoveHandler.java new file mode 100644 index 00000000000..9b8743c10ac --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/util/WindFieldMouseMoveHandler.java @@ -0,0 +1,72 @@ +/** + * + */ +package com.sap.sailing.gwt.ui.simulator.util; + +import java.util.Map; + +import com.google.gwt.canvas.client.Canvas; +import com.google.gwt.canvas.dom.client.Context2d; +import com.google.gwt.canvas.dom.client.ImageData; +import com.google.gwt.event.dom.client.MouseMoveEvent; +import com.google.gwt.event.dom.client.MouseMoveHandler; +import com.sap.sailing.gwt.ui.shared.WindDTO; + +/** + * To handle MouseMoveEvent to display tool tips around WindDTO objects in a wind field + * + * @author Nidhi Sawhney(D054070) + * + */ +public class WindFieldMouseMoveHandler implements MouseMoveHandler { + + private Canvas canvas; + private Map windFieldPoints = null; + private ImageData lastImageData = null; + double lastToolx; + double lastTooly; + + + public WindFieldMouseMoveHandler(Canvas canvas) { + super(); + this.canvas = canvas; + } + + public void setWindFieldPoints(Map windFieldPoints) { + this.windFieldPoints = windFieldPoints; + } + + @Override + public void onMouseMove(MouseMoveEvent event) { + + if (windFieldPoints == null) { + return; + } + + double x = event.getX(); + double y = event.getY(); + ToolTip point = new ToolTip(x, y); + Context2d context2d = canvas.getContext2d(); + if (lastImageData != null) { + context2d.putImageData(lastImageData, lastToolx, lastTooly); + } + lastToolx = x; + lastTooly = y; + + lastImageData = context2d.getImageData(x, y, ToolTip.toolRectW, ToolTip.toolRectH); + + if (windFieldPoints.containsKey(point)) { + + WindDTO windDTO = windFieldPoints.get(point); + context2d.setFillStyle("#4f4f4f"); + context2d.fillRect(x, y, ToolTip.toolRectW, ToolTip.toolRectH); + + context2d.setFillStyle("#FFFFFF"); + context2d.fillRect(x + 3, y + 3, ToolTip.toolRectW - 6, ToolTip.toolRectH - 6); + context2d.setFillStyle("Blue"); + context2d.fillText("Wind " + windDTO.trueWindBearingDeg, x + 15, y + 20); + } + + } + +}