public void drawConnectors(ITreeElement node) { for (ITreeElement child : node.getChildren()) { if (child instanceof IRevision) { createConnector(node, child, MergePoint.INITIAL); for (MergePoint mergeToPoint : ((IRevision) child).getMergeToRevisions()) { IRevision mergeToRevision = mergeToPoint.getMergeRevision(); for (String brTo : mergeToRevision.getBranchTags()) { if (isBranchVisible(brTo)) { createConnector(child, mergeToRevision, MergePoint.MERGE); break; } } } drawConnectors(child); } else if (child instanceof IBranch) { IBranch childBranch = (IBranch) child; if ((!childBranch.isEmpty() || this.getTreeViewConfig().drawEmptyBranches()) && isBranchVisible(childBranch.getName())) { // case when parent is dead revision and child element is branch if (!(node instanceof IRevision && ((IRevision) node).getLogEntry().isDeletion())) { createConnector(node, child, MergePoint.INITIAL); } drawConnectors(child); } } } }