mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
cancel update threads while continue typing
This commit is contained in:
+28
-14
@@ -113,27 +113,41 @@ public class FilteringTreeBuilder extends AbstractTreeBuilder {
|
||||
}
|
||||
|
||||
public ActionCallback refilter(final Object preferredSelection, final boolean adjustSelection, final boolean now) {
|
||||
if (myRefilterQueue == null || now) {
|
||||
return refilterNow(preferredSelection, adjustSelection);
|
||||
if (myRefilterQueue != null) {
|
||||
myRefilterQueue.cancelAllUpdates();
|
||||
}
|
||||
else {
|
||||
final ActionCallback result = new ActionCallback();
|
||||
myRefilterQueue.queue(new Update(this) {
|
||||
public void run() {
|
||||
refilterNow(preferredSelection, adjustSelection).notifyWhenDone(result);
|
||||
final ActionCallback callback = new ActionCallback();
|
||||
getUi().cancelUpdate().doWhenDone(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (myRefilterQueue == null || now) {
|
||||
refilterNow(preferredSelection, adjustSelection).doWhenDone(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
callback.setDone();
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
myRefilterQueue.queue(new Update(this) {
|
||||
public void run() {
|
||||
refilterNow(preferredSelection, adjustSelection).notifyWhenDone(callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRejected() {
|
||||
super.setRejected();
|
||||
result.setDone();
|
||||
@Override
|
||||
public void setRejected() {
|
||||
super.setRejected();
|
||||
callback.setDone();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
return callback;
|
||||
}
|
||||
|
||||
|
||||
protected ActionCallback refilterNow(final Object preferredSelection, final boolean adjustSelection) {
|
||||
final ActionCallback selectionDone = new ActionCallback();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user