IntelliJ插件:从项目视图导航到文件而不触发AutoScrollFromSource?

时间:2013-12-13 13:12:53

标签: java intellij-idea intellij-plugin

我正在编写IntelliJ IDEA插件,我正在尝试从项目窗格导航到文件而不触发“autoscrollfromsource”功能(即使它已打开)。

我尝试暂时禁用autoscrollfromsource(并在之后重新启用它),但此尝试未成功。

在下面的代码中,似乎需要片刻加载文件,到那时autoscrollfromsource已经重新启用。

private void navigateWithoutAutoscrollFromSource(final ProjectViewImpl projectView, BasePsiNode<? extends PsiElement> node) {
    boolean wasAutoScrollFromSource = projectView.isAutoscrollFromSource(PROJECT_PANE);
    if (wasAutoScrollFromSource) {
        projectView.setAutoscrollFromSource(false, PROJECT_PANE);
    }

    // this navigation here should NOT trigger autoscrollfromsource!!
    node.navigate(true);

    if (wasAutoScrollFromSource) {
        ApplicationManager.getApplication().invokeLater(new Runnable() {
            @Override
            public void run() {
                projectView.setAutoscrollFromSource(true, PROJECT_PANE);
            }
        });
    }
}

有没有更好的方法导航到我的节点,而不会触发autoscrollfromsource?

感谢任何专业提示:)

更新1

我将代码跟踪到openapi类OpenFileDescriptor,此处:

public void navigate(boolean requestFocus) {
    if (!canNavigate()) {
        throw new IllegalStateException("Navigation is not possible with null project");
    }

    if (!myFile.isDirectory() && navigateInEditor(myProject, requestFocus)) return;

    navigateInProjectView();
}

基本上,我希望能够执行此navigate方法,而不会触发从源代码自动滚动。

0 个答案:

没有答案