FinderRecursivePanel.mergeListItems: restore setMergeListItemsRunning after exceptions

This commit is contained in:
Yann Cébron
2015-06-23 10:45:11 +02:00
parent 052a35542e
commit 779318044e
@@ -538,32 +538,35 @@ public abstract class FinderRecursivePanel<T> extends JBSplitter implements Data
});
}
protected <T> void mergeListItems(@NotNull CollectionListModel<T> listModel, @NotNull JList list, @NotNull List<T> newItems) {
protected void mergeListItems(@NotNull CollectionListModel<T> listModel, @NotNull JList list, @NotNull List<T> newItems) {
setMergeListItemsRunning(true);
if (listModel.getSize() == 0) {
listModel.add(newItems);
}
else if (newItems.size() == 0) {
listModel.removeAll();
} else {
int newSelectedIndex = -1;
T selection = (T)list.getSelectedValue();
if (selection != null) {
newSelectedIndex = newItems.indexOf(selection);
try {
if (listModel.getSize() == 0) {
listModel.add(newItems);
}
else if (newItems.size() == 0) {
listModel.removeAll();
}
else {
int newSelectedIndex = -1;
T selection = (T)list.getSelectedValue();
if (selection != null) {
newSelectedIndex = newItems.indexOf(selection);
}
listModel.removeAll();
listModel.add(newItems);
listModel.removeAll();
listModel.add(newItems);
list.setSelectedIndex(newSelectedIndex);
list.setSelectedIndex(newSelectedIndex);
}
}
finally {
setMergeListItemsRunning(false);
}
setMergeListItemsRunning(false);
}
public boolean isMergeListItemsRunning() {