Example #1
0
  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();
    }
  }
Example #2
0
  void setMeasurementVisible(boolean visible) {
    measurementVisible = visible;

    if (measurer != null) {
      measurer.getMarker().setVisible(visible);
      for (Mark mark : measurer.getMarks()) {
        mark.setVisible(visible);
      }
    }
  }
Example #3
0
  @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;
    }
  }
Example #4
0
 void clearAllMeasurment() {
   if (measurer != null) {
     measurer.clearAllMarks();
     snapList.clear();
     initSnapList();
   }
 }
Example #5
0
  @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());
    }
  }
Example #6
0
 @Override
 public void mouseExited(MouseEvent e) {
   if (measuring && measurementVisible) {
     if (measurer != null) {
       try {
         measurer.getMarker().setVisible(false);
       } catch (NullPointerException ex) {
       }
     }
   }
 }
Example #7
0
  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();
  }
Example #8
0
  @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);
        }
      }
    }
  }