Как сделать TreeStructureProvider обновляемым методом actionPerformed? - PullRequest
0 голосов
/ 15 марта 2019

У меня есть код, предоставленный примером.Я хочу, чтобы 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) {

    }
}

Чтоследует сделать для обновления TreeStructureProvider при вызове метода actionPerformed?

1 Ответ

0 голосов
/ 18 марта 2019

Попробуйте это:

AbstractProjectViewPane currentProjectViewPane = ProjectView.getInstance(project).getCurrentProjectViewPane();
if (currentProjectViewPane != null) {
  for (PsiFileSystemItem item : myFileGroup) {
    currentProjectViewPane.updateFrom(item, false, true);
  }
}
...