Exemplo n.º 1
0
  public void addTree(DrawableTree newTree) {
    TreeElement newElement = new TreeElement(this);
    newTree.setScaleType(DrawableTree.NO_SCALE_BAR);
    newElement.setScale(getWidth(), getHeight(), null);
    newElement.setTree(newTree);
    treeElements.add(newElement);
    super.addElement(newElement);

    FigureElement scaleElement = null;
    if (currentScaleType == DrawableTree.SCALE_AXIS) {
      scaleElement = new ScaleAxisElement(this);

      scaleElement.setZPosition(-5); // draw underneath the tree so grid lines aren't on top
      ((ScaleAxisElement) scaleElement).setTreeDrawer(newElement.getTreeDrawer());
      addElement(scaleElement);
      scaleElements.put(newElement, scaleElement);
    }

    if (currentScaleType == DrawableTree.SCALE_BAR) {
      scaleElement = new ScaleBarElement(this);
      scaleElement.setMobile(true);
      ((ScaleBarElement) scaleElement).setTreeDrawer(newElement.getTreeDrawer());
      addElement(scaleElement);
      scaleElements.put(newElement, scaleElement);
    }

    layoutTrees();

    if (currentScaleType == DrawableTree.SCALE_AXIS && scaleElement != null) {
      scaleElement.setBounds(
          newElement.getX(), 0.9, 0.1, 0.01); // Width and height parts are ignored
    }

    if (currentScaleType == DrawableTree.SCALE_BAR && scaleElement != null) {
      scaleElement.setBounds(
          Math.max(0, newElement.getX() + newElement.getWidth() / 2.0 - 0.05),
          0.9,
          0.1,
          0.1); // Width and height parts are ignored
    }
  }
Exemplo n.º 2
0
  /**
   * Note that there is a bit of disagreement regarding what controls the 'scale bar' and 'scale
   * axis' properties. In MultiTreeDisplays, this is a property of the tree. Here, since we use the
   * Figure interface, the ScaleBar and ScaleAxis are a type of FigureElement, and TreeFigure
   * controls which one (or none) is shown.
   *
   * @param type
   */
  public void setScaleType(int type) {
    currentScaleType = type;
    // Remove all scale elements first
    for (TreeElement treeElement : treeElements) {
      removeScaleForTree(treeElement);
    }

    for (TreeElement treeElement : treeElements) {
      double x = treeElement.getX();
      double y = treeElement.getY();
      double width = treeElement.getWidth();

      if (type == DrawableTree.SCALE_BAR) {
        ScaleBarElement scaleElement = new ScaleBarElement(this);

        scaleElement.setBounds(
            Math.max(0, x + width / 2.0 - 0.05),
            0.9,
            0.1,
            0.1); // Width and height parts are ignored
        scaleElement.setMobile(true);
        scaleElement.setTreeDrawer(treeElement.getTreeDrawer());
        treeElement.setBounds(x, y, width, 0.9);
        addElement(scaleElement);
        scaleElements.put(treeElement, scaleElement);
      }

      if (type == DrawableTree.SCALE_AXIS) {
        ScaleAxisElement scaleElement = new ScaleAxisElement(this);

        scaleElement.setZPosition(-5); // draw underneath the tree so grid lines aren't on top
        scaleElement.setBounds(x, 0.9, width, 0.075); // Width and height parts are ignored
        scaleElement.setTreeDrawer(treeElement.getTreeDrawer());
        treeElement.setBounds(x, y, width, 0.9);
        addElement(scaleElement);
        scaleElements.put(treeElement, scaleElement);
      }
    }
  }
Exemplo n.º 3
0
  /**
   * Called when the selection rectangle has changed, happens repeatedly when user drags the
   * selection rectangle
   *
   * @param selectRect2
   */
  public void selectionRectUpdated(Rectangle selRect) {
    boolean anythingIsSelected = false;
    for (TreeElement treeElement : treeElements) {
      double tx = treeElement.getTreeDrawer().translatePixelToTreeX(selRect.x);
      double ty = treeElement.getTreeDrawer().translatePixelToTreeY(selRect.y);
      double twidth = ((double) selRect.width / (double) treeElement.getDrawingWidth());
      double theight = ((double) selRect.height / (double) treeElement.getDrawingHeight());

      translatedRect.setRect(tx, ty, twidth, theight);
      boolean selected = treeElement.getTree().setSelectedNodes(translatedRect);
      anythingIsSelected = selected || anythingIsSelected;
    }
    display.setSomethingIsSelected(anythingIsSelected);
  }