public void setMeasurementMode(boolean enabled) { measuring = enabled; if (enabled) { if (choosingPivotPoint) { // disable choose-pivot-point mode setChoosePivotPointMode(false); } // initialize PickCanvas for mouse picking if (pickCanvas == null) { pickCanvas = new PickCanvas(this, kainBG); pickCanvas.setMode(PickCanvas.GEOMETRY); } if (snapList == null) { snapList = new LinkedList<Point3d>(); } } else // clear remaining first point and remove the marker if (measurer != null) { try { Mark currentMark = measurer.getMarks().getLast(); if (currentMark.isFristPointPlaced()) { measurer.removeChild(currentMark); currentMark.setFirstPointPlaced(false); } } catch (NoSuchElementException ex) { } measurer.getMarker().removeMarkerLine(); } }
void setMeasurementVisible(boolean visible) { measurementVisible = visible; if (measurer != null) { measurer.getMarker().setVisible(visible); for (Mark mark : measurer.getMarks()) { mark.setVisible(visible); } } }
@Override public void mouseExited(MouseEvent e) { if (measuring && measurementVisible) { if (measurer != null) { try { measurer.getMarker().setVisible(false); } catch (NullPointerException ex) { } } } }
@Override public void mouseClicked(MouseEvent e) { if (measurer != null && measurementVisible) { Marker marker = measurer.getMarker(); Point3d markerPos = marker.getMarkerPos(); // if there's any selected node, unselect it if (selectedNode != null) { ((Mark) selectedNode.getParent().getParent().getParent()).unSelect(); selectedNode = null; } if (hoveredNode != null && hoveredNode.getParent().getParent().getParent() instanceof Mark) { // select the clicked one selectedNode = hoveredNode; ((Mark) selectedNode.getParent().getParent().getParent()).select(); } // click to add a mark dot else if (measuring) { Mark currentMark; // could be the last mark, or a new one try { currentMark = measurer.getMarks().getLast(); if (!currentMark.isFristPointPlaced()) { // last mark completed Mark newMark = measurer.createMark(); // create new one newMark.createFirstPoint(markerPos); marker.initMarkerLine(markerPos); } else { // use last mark currentMark.createSecondPoint(markerPos); currentMark.createText(); currentMark.createMarkLine(); marker.removeMarkerLine(); } } catch (NoSuchElementException ex) { // no mark found currentMark = measurer.createMark(); currentMark.createFirstPoint(markerPos); marker.initMarkerLine(markerPos); } } } if (choosingPivotPoint) { pivotPointAdjustor.putPivotPoint(pivotPointAdjustor.getPlacer().getPos()); } }
@Override public void mouseMoved(MouseEvent e) { if (e.getX() > 0 && e.getX() < this.getWidth() && e.getY() > 0 && e.getY() < this.getHeight() && (canting.getCor() != null) && measuring && measurementVisible) { MyPickResult result = getMouseIntersection(e, true); Point3d pos = result.getPoint(); if (pos != null) { if (measurer == null) { measurer = new Measurer(pos); kainTG.addChild(measurer); initSnapList(); } else { measurer.getMarker().updatePos(pos); measurer.getMarker().setVisible(true); } hoveredNode = result.getNode(); } else { hoveredNode = null; } // if hovers any mark, highlight it if (hoveredNode != null && hoveredNode.getParent().getParent().getParent() instanceof Mark) { // before highlight, unhighlight previous mark if (lastHoveredNode != null) { if (selectedNode != null && lastHoveredNode.getParent().getParent().getParent() == selectedNode.getParent().getParent().getParent()) // if it is selected { ((Mark) selectedNode.getParent().getParent().getParent()).select(); } else { ((Mark) lastHoveredNode.getParent().getParent().getParent()).unHighlight(); } lastHoveredNode = null; } // highlight ((Mark) hoveredNode.getParent().getParent().getParent()).highlight(); lastHoveredNode = hoveredNode; } else { // unhighlight previous mark if (lastHoveredNode != null) { if (selectedNode != null && lastHoveredNode.getParent().getParent().getParent() == selectedNode.getParent().getParent().getParent()) // if it is selected { ((Mark) selectedNode.getParent().getParent().getParent()).select(); } else { ((Mark) lastHoveredNode.getParent().getParent().getParent()).unHighlight(); } lastHoveredNode = null; } } } if (e.getX() > 0 && e.getX() < this.getWidth() && e.getY() > 0 && e.getY() < this.getHeight() && (canting.getCor() != null) && choosingPivotPoint) { MyPickResult result = getMouseIntersection2(e); Point3d pos = result.getPoint(); if (pos != null) { if (pivotPointAdjustor == null) { pivotPointAdjustor = new PivotPointAdjustor(pos); kainTG.addChild(pivotPointAdjustor); } else { pivotPointAdjustor.getPlacer().updatePos(pos); } } } }