mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
inspection view: auto-scroll to source navigates to target on every psi change IDEA-162758
This commit is contained in:
@@ -80,6 +80,7 @@ import javax.swing.*;
|
||||
import javax.swing.event.TreeSelectionEvent;
|
||||
import javax.swing.event.TreeSelectionListener;
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
import javax.swing.tree.DefaultTreeModel;
|
||||
import javax.swing.tree.TreeNode;
|
||||
import javax.swing.tree.TreePath;
|
||||
import java.awt.*;
|
||||
@@ -211,7 +212,7 @@ public class InspectionResultsView extends JPanel implements Disposable, Occuren
|
||||
myTree.repaint();
|
||||
}
|
||||
else {
|
||||
InspectionViewPsiTreeChangeAdapter.resetTree(InspectionResultsView.this);
|
||||
resetTree();
|
||||
}
|
||||
syncRightPanel();
|
||||
}
|
||||
@@ -990,6 +991,19 @@ public class InspectionResultsView extends JPanel implements Disposable, Occuren
|
||||
return null;
|
||||
}
|
||||
|
||||
public void resetTree() {
|
||||
try {
|
||||
myTree.setQueueUpdate(true);
|
||||
final TreePath[] selectionPath = myTree.getSelectionPaths();
|
||||
final List<TreePath> expandedPaths = TreeUtil.collectExpandedPaths(myTree);
|
||||
((DefaultTreeModel)myTree.getModel()).reload();
|
||||
TreeUtil.restoreExpandedPaths(myTree, expandedPaths);
|
||||
myTree.setSelectionPaths(selectionPath);
|
||||
} finally {
|
||||
myTree.setQueueUpdate(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private Navigatable getSelectedNavigatable(final CommonProblemDescriptor descriptor) {
|
||||
return getSelectedNavigatable(descriptor,
|
||||
|
||||
+1
-10
@@ -111,7 +111,7 @@ class InspectionViewPsiTreeChangeAdapter extends PsiTreeChangeAdapter {
|
||||
if (needUpdateUI[0]) {
|
||||
myAlarm.cancelAllRequests();
|
||||
myAlarm.addRequest(() -> {
|
||||
resetTree(myView);
|
||||
myView.resetTree();
|
||||
}, 100, ModalityState.NON_MODAL);
|
||||
}
|
||||
}
|
||||
@@ -168,15 +168,6 @@ 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) {
|
||||
|
||||
Reference in New Issue
Block a user