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 keyPressed(KeyEvent ke) { char lastPressed = Character.toLowerCase(ke.getKeyChar()); // remove mark if (ke.getKeyCode() == KeyEvent.VK_DELETE && selectedNode != null) { measurer.clearSelected(selectedNode); } // mod angle if (lastPressed == 'a') { isADown = true; } // mod width if (lastPressed == 'w') { isWDown = true; } // mod length if (lastPressed == 'e') { isEDown = true; } }
void clearAllMeasurment() { if (measurer != null) { measurer.clearAllMarks(); snapList.clear(); initSnapList(); } }
@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 mouseExited(MouseEvent e) { if (measuring && measurementVisible) { if (measurer != null) { try { measurer.getMarker().setVisible(false); } catch (NullPointerException ex) { } } } }
public void prepareCorak( String projectPath, CorakLSystem cor, CorakDataObject obj, boolean encloseOBJ) { this.projectPath = projectPath; // initiate our "turtle" -> Canting canting = new Canting(cor, obj); // start creating shapes based on Cor timer = System.currentTimeMillis(); canting.generate(encloseOBJ); BoundingSphere lightingBounds = new BoundingSphere(new Point3d(0, 0, 0), FARTHEST); camLamp = new PointLight(); camLamp.setCapability(PointLight.ALLOW_POSITION_READ); camLamp.setCapability(PointLight.ALLOW_POSITION_WRITE); camLamp.setColor(new Color3f(1.0f, 1.0f, 1.0f)); camLamp.setInfluencingBounds(lightingBounds); ambient = new AmbientLight(); ambient.setColor(new Color3f(1.0f, 1.0f, 1.0f)); ambient.setInfluencingBounds(lightingBounds); canting.getBatikBG().addChild(camLamp); canting.getBatikBG().addChild(ambient); // attach generated shapes to root TransformGroup Enumeration kaintgchildren = kainTG.getAllChildren(); while (kaintgchildren.hasMoreElements()) { Node child = (Node) kaintgchildren.nextElement(); if (child instanceof Measurer) { ((Measurer) child).removeAllChildren(); } else { kainTG.removeChild(child); } } // canting.getBatikBG().compile(); kainTG.addChild(canting.getBatikBG()); timer = System.currentTimeMillis() - timer; // System.out.println("Timer= " + timer); bs = (BoundingSphere) canting.getBatikBG().getBounds(); }
@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); } } } }