package org.xmind.ui.internal.branch; import java.util.HashSet; import java.util.Set; import org.xmind.ui.branch.BranchStructureData; import org.xmind.ui.mindmap.IBranchPart; public class TimelineVerticalData extends BranchStructureData { private Set<Integer> rightwards = null; public TimelineVerticalData(IBranchPart branch) { super(branch); } public boolean isLeftwardBranch(int index) { return !getRightwardBranch().contains(index); } public Set<Integer> getRightwardBranch() { if (rightwards == null) rightwards = calcUpwardBranchs(); return rightwards; } private Set<Integer> calcUpwardBranchs() { Set<Integer> set = new HashSet<Integer>(); int i = 0; IBranchPart lastChild = null; boolean rightward = true; for (IBranchPart sub : getBranch().getSubBranches()) { if (lastChild == null) { set.add(i); } else { if (!isInSameRange(lastChild, sub)) rightward = !rightward; if (rightward) set.add(i); } lastChild = sub; i++; } return set; } }