inspection view: restore state using TreeUtil IDEA-156675

This commit is contained in:
Dmitry Batkovich
2016-07-12 10:58:44 +03:00
parent e476c3860c
commit eef463b162
2 changed files with 11 additions and 7 deletions
@@ -205,7 +205,7 @@ public class InspectionResultsView extends JPanel implements Disposable, Occuren
myTree.repaint();
}
else {
myTree.queueUpdate();
InspectionViewPsiTreeChangeAdapter.resetTree(InspectionResultsView.this);
}
syncRightPanel();
}
@@ -116,12 +116,7 @@ class InspectionViewPsiTreeChangeAdapter extends PsiTreeChangeAdapter {
if (needUpdateUI[0]) {
myAlarm.cancelAllRequests();
myAlarm.addRequest(() -> {
final InspectionTree tree = myView.getTree();
final TreePath[] selectionPath = tree.getSelectionPaths();
final List<TreePath> expandedPaths = TreeUtil.collectExpandedPaths(tree);
((DefaultTreeModel)tree.getModel()).reload();
TreeUtil.restoreExpandedPaths(tree, expandedPaths);
tree.setSelectionPaths(selectionPath);
resetTree(myView);
}, 100, ModalityState.NON_MODAL);
}
}
@@ -178,6 +173,15 @@ class InspectionViewPsiTreeChangeAdapter extends PsiTreeChangeAdapter {
processEventFileOrDir(event, false);
}
public static void resetTree(@NotNull InspectionResultsView view) {
final InspectionTree tree = view.getTree();
final TreePath[] selectionPath = tree.getSelectionPaths();
final List<TreePath> expandedPaths = TreeUtil.collectExpandedPaths(tree);
((DefaultTreeModel)tree.getModel()).reload();
TreeUtil.restoreExpandedPaths(tree, expandedPaths);
tree.setSelectionPaths(selectionPath);
}
private void processEventFileOrDir(@NotNull PsiTreeChangeEvent event, boolean eagerEvaluateFiles) {
final PsiFile file = event.getFile();
if (file != null) {