Intellij Idea Intellij插件-如何为项目视图文件的背景着色?

ncecgwcz  于 2023-10-15  发布在  其他
关注(0)|答案(2)|浏览(131)

如图所示。颜色通知是彩色的。这是通过创建一个作用域并将该文件添加到该作用域中来完成的。
但是我想根据我的需要标记文件。例如,我将单击该颜色通知并将该文件标记为绿色或黄色。

我只需要知道我如何才能到达这个项目视图,并以编程方式更改背景颜色。

我知道没有这么多intellij插件创作者,但我还是会试试我的运气。
从我的调查有FileColorManager,ProjectView,UIManager等,但我找不到哪一个是负责这些颜色处理的变化.

jucafojl

jucafojl1#

只是猜测。你试过实现com.intellij.ide.projectView.ProjectViewNodeDecorator扩展点吗?看起来这让您可以在项目视图中装饰节点。
正如我们所发现的,设置背景颜色并不容易。但是您可以在要突出显示的每个节点的末尾添加一个字符串(如复选标记)。下面是一个示例:

public class ProvectViewColorer implements ProjectViewNodeDecorator {

  @Override
  public void decorate(ProjectViewNode node, PresentationData data) {
    final VirtualFile virtualFile = node.getVirtualFile();
    if (virtualFile != null && virtualFile.getFileType().equals(MathematicaFileType.INSTANCE)) {
      data.setLocationString("✓");
    }
  }

  @Override
  public void decorate(PackageDependenciesNode node, ColoredTreeCellRenderer cellRenderer) {

  }
}

yhxst69z

yhxst69z2#

您可以在plugin.xml中使用editorTabColorProvider扩展点:

<extensions defaultExtensionNs="com.intellij">
    <editorTabColorProvider implementation="com.example. MyEditorTabColorProvider" />
</extensions>

然后重写getProjectViewColor方法:

class MyEditorTabColorProvider : EditorTabColorProvider {
    override fun getProjectViewColor(project: Project, file: VirtualFile): Color? {
        return getColor(project, file)
    }

    override fun getEditorTabColor(project: Project, file: VirtualFile): Color? {
        return getColor(project, file)
    }

    private fun getColor(project: Project, file: VirtualFile): JBColor? {
        return if (isMarked(file)) {
            JBColor.GREEN
        } else {
            null
        }
    }
}

相关问题