/** * 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; }
public void setTreeOrientation(Direction orientation) { for (TreeElement treeElement : treeElements) { treeElement.getTree().setOrientation(orientation); treeElement.setDrawBounds(); treeElement.setScale(getWidth(), getHeight(), null); } repaint(); }
/** * 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; }
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; }
public void componentResized(ComponentEvent arg0) { boundsRect.width = getWidth(); boundsRect.height = getHeight(); for (TreeElement treeElement : treeElements) { treeElement.setDrawBounds(); } super.componentResized(arg0); repaint(); }
/** * 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); }
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 } }
/** * 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(); }
public void refresh() { // TODO XXX this is the strange kack-ab bug // scrollpane.removeAllChilds(); super.refresh(0); }
public void setSelectionMode(int mode) { for (TreeElement treeElement : treeElements) { treeElement.getTree().setSelectionMode(mode); } }
/** * Set whether or not error bars are drawn * * @param showErrorBars */ public void setShowErrorBars(boolean showErrorBars) { for (TreeElement treeElement : treeElements) { treeElement.setShowErrorBars(showErrorBars); } }
/** * 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(); }