@Override public void setLayer(ILayer layer) { for (IVisualizableNode node : getInnerNodes()) { node.setLayer(layer); } super.setLayer(layer); }
@Override public boolean isOfSameLeafGroup(IVisualizableNode node) { for (IVisualizableNode visualizableNode : getInnerNodes()) { if (visualizableNode.isOfSameLeafGroup(node)) { return true; } } return false; }
private void positionInnerNodes() { IVisualizableNode[] innerNodes = getInnerNodes(); int nodePosition = getLeftSide() + innerNodes[0].getWidth() / 2; for (int nodeIndex = 0; nodeIndex < innerNodes.length; nodeIndex++) { IVisualizableNode node = innerNodes[nodeIndex]; node.setPosition(nodePosition); if (nodeIndex < innerNodes.length - 1) { nodePosition += node.getWidth() / 2 + gapDimension.width + innerNodes[nodeIndex + 1].getWidth() / 2; } } }
@Override public boolean isOfSameLeafGroup(IVisualizableNode node) { final boolean[] result = new boolean[1]; node.accept( new IVisualizableNodeVisitor() { @Override public void visitSingleNode(VisualizableNode visitedNode) { result[0] = visitAbstractSingleNode(visitedNode); } @Override public void visitHorizontalMetaNode(HorizontalMetaNode visitedNode) { result[0] = visitedNode.isOfSameLeafGroup(AbstractSingleVisualizableNode.this); } @Override public void visitDummyNode(VisualizableDummyNode visitedNode) { result[0] = visitAbstractSingleNode(visitedNode); } }); return result[0]; }
@Override public int compare(IVisualizableNode node1, IVisualizableNode node2) { return node1.getPosition() - node2.getPosition(); }