// drag - publish rectangle dimensions in status bar @Override public void onMouseDrag(final MsDraggedEvent evt) { if (evt.getButton() != MsButtonEvent.LEFT_BUTTON) return; final StatusService statusService = evt.getContext().getService(StatusService.class); final ImageDisplayService imgService = evt.getContext().getService(ImageDisplayService.class); final ImageDisplay imgDisp = imgService.getActiveImageDisplay(); final IntCoords startPt = new IntCoords(anchor.x, anchor.y); final IntCoords endPt = new IntCoords(evt.getX() - anchor.x, evt.getY() - anchor.y); final RealCoords startPtModelSpace = imgDisp.getCanvas().panelToImageCoords(startPt); final RealCoords endPtModelSpace = imgDisp.getCanvas().panelToImageCoords(endPt); final int x = (int) startPtModelSpace.x; final int y = (int) startPtModelSpace.y; final int w = (int) endPtModelSpace.x; final int h = (int) endPtModelSpace.y; final String message = String.format("x=%d, y=%d, w=%d, h=%d", x, y, w, h); statusService.showStatus(message); // NB: Prevent PixelProbe from overwriting the status bar. evt.consume(); }
/** Gets the coordinates in <em>data</em> space for the given (x, y) pixel coordinates. */ private RealCoords getDataCoords(final Display<?> d, final int x, final int y) { if (!(d instanceof ImageDisplay)) return null; final ImageDisplay imageDisplay = (ImageDisplay) d; final ImageCanvas canvas = imageDisplay.getCanvas(); return canvas.panelToDataCoords(new IntCoords(x, y)); }