}
}
}
private final void selectionTraverse(final TreeNode node, final Filter filter) {
final FastMSTreeItem item = tree.getItem(node);
if(item == null || filter == null)
return;
if (filter.filter(item)) {
boolean doTraverse = filter.shouldExpand(item);
if (doTraverse) {
if (tree instanceof LoDHierarchyTree) {
if (!item.isOpen() && !item.hasBeenOpened()) {
doTraverse = false;
item.setFinishHandler(new AsyncCallback<Void>() {
public void onFailure(Throwable arg0) {
item.setFinishHandler(null);
}
public void onSuccess(Void arg0) {
item.setFinishHandler(null);
for (TreeNode child : node.getChildren()) {
if (filter.traverseChild(child)) {
selectionTraverse(child, filter);
break;
}
}
}
});
}
}
item.setState(true, true);
}
if (doTraverse) {
for (TreeNode child : node.getChildren()) {
if (filter.traverseChild(child)) {
selectionTraverse(child, filter);