如何在actionPerformed方法上使TreeStructureProvider可更新?

问题描述 投票:0回答:1

我有一个代码,由示例提供。我希望PsiFileNode在点击我执行的操作时更改其颜色。

 <extensions defaultExtensionNs="com.intellij">
        <treeStructureProvider implementation="ru.softmg.highlighter.CustomTreeStructureProvider" />
      </extensions>

这是TreeStructureProvider

package ru.softmg.highlighter;

import com.intellij.ide.projectView.TreeStructureProvider;
import com.intellij.ide.projectView.ViewSettings;
import com.intellij.ide.projectView.impl.nodes.PsiFileNode;
import com.intellij.ide.util.treeView.AbstractTreeNode;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.Collection;

public class CustomTreeStructureProvider implements TreeStructureProvider {
    @NotNull
    @Override
    public Collection<AbstractTreeNode> modify(@NotNull AbstractTreeNode parent, @NotNull Collection<AbstractTreeNode> children, ViewSettings settings) {
        Project project = ProjectManager.getInstance().getOpenProjects()[0];
        ArrayList<AbstractTreeNode> nodes = new ArrayList<>();
        for(AbstractTreeNode child : children) {
            if(child instanceof PsiFileNode) {
                PsiFileNode psiFileNode = (PsiFileNode) child;
                CustomPsiFileNode customPsiFileNode = new CustomPsiFileNode(project, psiFileNode.getValue(), psiFileNode.getSettings());
                nodes.add(customPsiFileNode);
            }
            else {
                nodes.add(child);
            }
        }
        return nodes;
    }
}

这是我的行动

public class ProjectHighlighter extends AnAction {
    @Override
    public void actionPerformed(AnActionEvent anActionEvent) {

    }
}

在调用actionPerformed方法时,如何更新TreeStructureProvider?

java intellij-idea intellij-plugin
1个回答
0
投票

试试这个:

AbstractProjectViewPane currentProjectViewPane = ProjectView.getInstance(project).getCurrentProjectViewPane();
if (currentProjectViewPane != null) {
  for (PsiFileSystemItem item : myFileGroup) {
    currentProjectViewPane.updateFrom(item, false, true);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.