Tree selection

This commit is contained in:
Alexander Lobas
2012-04-22 19:52:29 +04:00
parent 281636ccdb
commit c8b3f5d9b2
@@ -126,35 +126,38 @@ public final class TreeEditableArea implements EditableArea, FeedbackTreeLayer,
return myTreeBuilder.getSelectedElements(RadComponent.class);
}
public void setRawSelection(@Nullable Object value, final @Nullable Runnable globalDone) {
public void setRawSelection(final @Nullable Object value, final @Nullable Runnable globalDone) {
mySelectionMode = true;
final int selectionOperation = ++mySelectionOperation;
myTreeBuilder.queueUpdate();
Runnable localDone = new Runnable() {
myTreeBuilder.queueUpdate().doWhenDone(new Runnable() {
@Override
public void run() {
if (selectionOperation == mySelectionOperation) {
mySelectionMode = false;
fireSelectionChanged();
Runnable localDone = new Runnable() {
@Override
public void run() {
if (selectionOperation == mySelectionOperation) {
mySelectionMode = false;
fireSelectionChanged();
if (globalDone != null) {
globalDone.run();
if (globalDone != null) {
globalDone.run();
}
}
}
};
if (value == null) {
myTreeBuilder.select(ArrayUtil.EMPTY_OBJECT_ARRAY, localDone);
}
else if (value instanceof RadComponent) {
myTreeBuilder.select(value, localDone);
}
else {
myTreeBuilder.select(((Collection)value).toArray(), localDone);
}
}
};
if (value == null) {
myTreeBuilder.select(ArrayUtil.EMPTY_OBJECT_ARRAY, localDone);
}
else if (value instanceof RadComponent) {
myTreeBuilder.select(value, localDone);
}
else {
myTreeBuilder.select(((Collection)value).toArray(), localDone);
}
});
}
//////////////////////////////////////////////////////////////////////////////////////////