예제 #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
    }
  }