Example #1
0
 /**
  * Returns a list of all drawable trees currently being handled by this figure.
  *
  * @return
  */
 public List<DrawableTree> getTrees() {
   List<DrawableTree> trees = new ArrayList<DrawableTree>();
   for (TreeElement treeElement : treeElements) {
     trees.add(treeElement.getTree());
   }
   return trees;
 }
Example #2
0
 public void setTreeOrientation(Direction orientation) {
   for (TreeElement treeElement : treeElements) {
     treeElement.getTree().setOrientation(orientation);
     treeElement.setDrawBounds();
     treeElement.setScale(getWidth(), getHeight(), null);
   }
   repaint();
 }
Example #3
0
 /**
  * Adds a TreeElement to this Nodes children-list
  *
  * @param element the TreeElemtn to be added to this Nodes children
  */
 public void add(final TreeElement element) {
   children.add(element);
   if (!(element instanceof DataObject)) {
     ((Node) element).setLevel(level - 1);
   }
   element.setParent(this);
   updateBoundingBox(element.getBoundingBox());
 }
 /*
  * (non-Javadoc)
  * @see org.eclipse.linuxtools.gprof.view.histogram.TreeElement#getSamples()
  */
 public int getSamples() {
   if (samples == -1) {
     samples = 0;
     for (TreeElement elem : getChildren()) {
       samples += elem.getSamples();
     }
   }
   return samples;
 }
Example #5
0
 public void addAlternativeElement(AlternativeElement e) {
   TreeElement tree = (TreeElement) block;
   if (nextElementIsRoot) {
     tree.root = (GrammarAtom) e;
     nextElementIsRoot = false;
   } else {
     super.addAlternativeElement(e);
   }
 }
 /*
  * (non-Javadoc)
  * @see org.eclipse.linuxtools.gprof.view.histogram.TreeElement#getCalls()
  */
 public int getCalls() {
   if (calls == -1) {
     calls = 0;
     for (TreeElement elem : getChildren()) {
       int i = elem.getCalls();
       if (i != -1) calls += elem.getCalls();
     }
   }
   return calls;
 }
Example #7
0
  public void componentResized(ComponentEvent arg0) {
    boundsRect.width = getWidth();
    boundsRect.height = getHeight();

    for (TreeElement treeElement : treeElements) {
      treeElement.setDrawBounds();
    }

    super.componentResized(arg0);

    repaint();
  }
Example #8
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);
  }
Example #9
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
    }
  }
Example #10
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);
      }
    }
  }
 /*
  * (non-Javadoc)
  * @see org.eclipse.linuxtools.gprof.view.histogram.TreeElement#getRoot()
  */
 public TreeElement getRoot() {
   if (parent == null) return this;
   return parent.getRoot();
 }
Example #12
0
 public void refresh() {
   // TODO XXX this is the strange kack-ab bug
   //		scrollpane.removeAllChilds();
   super.refresh(0);
 }
Example #13
0
 public void setSelectionMode(int mode) {
   for (TreeElement treeElement : treeElements) {
     treeElement.getTree().setSelectionMode(mode);
   }
 }
Example #14
0
 /**
  * Set whether or not error bars are drawn
  *
  * @param showErrorBars
  */
 public void setShowErrorBars(boolean showErrorBars) {
   for (TreeElement treeElement : treeElements) {
     treeElement.setShowErrorBars(showErrorBars);
   }
 }
Example #15
0
 /**
  * Removes the specified TreeElemtent from the children list
  *
  * @param e The child to be removed
  */
 public void removeChild(final TreeElement e) {
   children.remove(e);
   e.setParent(null);
   refreshBoundingBox();
 }