@SuppressWarnings({"UnusedDeclaration"}) protected void doMoved(PositionEvent event) { if (this.active && rubberBandTarget != null && this.measureTool.getWwd().getObjectsAtCurrentPosition() != null && this.measureTool.getWwd().getObjectsAtCurrentPosition().getTerrainObject() != null) { if (!isFreeHand() || (!measureTool.getMeasureShapeType().equals(MeasureTool.SHAPE_PATH) && !measureTool.getMeasureShapeType().equals(MeasureTool.SHAPE_POLYGON))) { // Rubber band - Move control point and update shape Position lastPosition = rubberBandTarget.getPosition(); PickedObjectList pol = measureTool.getWwd().getObjectsAtCurrentPosition(); PickedObject to = pol.getTerrainObject(); rubberBandTarget.setPosition(new Position(to.getPosition(), 0)); measureTool.moveControlPoint(rubberBandTarget); measureTool.firePropertyChange( MeasureTool.EVENT_POSITION_REPLACE, lastPosition, rubberBandTarget.getPosition()); measureTool.getWwd().redraw(); } else { // Free hand - Compute distance from current control point (rubber band target) Position lastPosition = rubberBandTarget.getPosition(); Position newPosition = measureTool.getWwd().getCurrentPosition(); double distance = LatLon.greatCircleDistance(lastPosition, newPosition).radians * measureTool.getWwd().getModel().getGlobe().getRadius(); if (distance >= freeHandMinSpacing) { // Add new control point measureTool.addControlPoint(); rubberBandTarget = (MeasureTool.ControlPoint) getMeasureTool() .getControlPoints() .get(getMeasureTool().getControlPoints().size() - 1); measureTool.getWwd().redraw(); } } } else if (this.moving && movingTarget != null && measureTool.getWwd().getCurrentPosition() != null) { // Moving the whole shape Position lastPosition = movingTarget.getPosition(); Position newPosition = measureTool.getWwd().getCurrentPosition(); this.moveToPosition(lastPosition, newPosition); // Update the tool tip to follow the shape as it moves. if (measureTool.isShowAnnotation()) measureTool.updateAnnotation(movingTarget.getPosition()); measureTool.getWwd().redraw(); } }
protected void dragSelected(SelectEvent event) { MeasureTool.ControlPoint point = (MeasureTool.ControlPoint) event.getTopObject(); LatLon lastPosition = point.getPosition(); if (point.getValue(MeasureTool.CONTROL_TYPE_LOCATION_INDEX) != null) lastPosition = measureTool .getPositions() .get((Integer) point.getValue(MeasureTool.CONTROL_TYPE_LOCATION_INDEX)); // Delegate dragging computations to a dragger. this.dragger.selected(event); measureTool.moveControlPoint(point); if (measureTool.isShowAnnotation()) measureTool.updateAnnotation(point.getPosition()); measureTool.firePropertyChange( MeasureTool.EVENT_POSITION_REPLACE, lastPosition, point.getPosition()); measureTool.getWwd().redraw(); }
protected void setCursor(MeasureTool.ControlPoint controlPoint) { // TODO: handle 'rotating' mode cursor is this.isRotating() - when using Alt key on regular // shapes if (controlPoint == null) { setComponentCursor(null); } else { if (this.measureTool.isRegularShape()) { if (this.measureTool.isCornerControl(controlPoint)) { Angle azimuth = LatLon.greatCircleAzimuth( controlPoint.getPosition(), this.measureTool.getCenterPosition()); // Account for view heading in cursor selection azimuth = azimuth.subtract(this.measureTool.getWwd().getView().getHeading()); setComponentCursor(selectResizeCursor(azimuth)); } else if (this.measureTool.isCenterControl(controlPoint)) { setComponentCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); } } else { // Line, path and polygon setComponentCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); } } }