【IDEA插件】简单介绍TreeStructureProvider和ProjectViewNodeDecorator

项目示例

https://gitee.com/regexpei/mark-tag

该项目对以下两个接口进行了简单的应用,仅供参考!

TreeStructureProvider

com.intellij.ide.projectView.TreeStructureProvider 是 IntelliJ IDEA 中的一个接口,用于自定义项目的视图结构,即 IDEA 视图中左侧 Project 中的结构。通过实现 TreeStructureProvider 接口,可以在项目视图中动态修改项目结构的展示方式,例如调整节点的显示顺序、隐藏特定节点、添加自定义节点等。

import com.intellij.ide.projectView.ViewSettings;
import com.intellij.ide.util.treeView.AbstractTreeNode;

import java.util.Collection;


public interface TreeStructureProvider {

    /**
     * 修改项目视图中指定节点的子节点列表
     *
     * @param parent   父节点
     * @param children 根据默认项目结构得到的子节点列表
     * @param settings 当前项目视图设置
     * @return 修改后的子节点集合,如果不需要修改,则返回 children
     */
    Collection<AbstractTreeNode<?>> modify(AbstractTreeNode<?> parent,
                                           Collection<AbstractTreeNode<?>> children,
                                           ViewSettings settings);

    /**
     * 为项目视图中当前选择的节点返回指定类型的用户数据对象。
     *
     * @param selected 在项目视图中选择的节点列表
     * @param dataId   请求求的数据对象的标识符(例如,在com.intellij.openapi.actionSystem.PlatformDatakeys 中定义)。
     * @return 据对象,如果该提供者无法返回数据对象,则返回 nul1。
     */
    default Object getData(Collection<? extends AbstractTreeNode<?>> selected, String dataId) {
        return null;
    }
}

ProjectViewNodeDecorator

com.intellij.ide.projectView.ProjectViewNodeDecorator 是 IntelliJ IDEA 中的一个接口,用于修改项目视图中节点的表示形式。该接口中的方法允许开发人员自定义项目视图和包依赖视图节点的展示方式,以满足特定需求或提供更好的用户体验。通过实现这些方法,可以对节点的展示信息进行定制化处理,从而更好地呈现项目结构和依赖关系。比如对节点添加备注信息、修改节点文字颜色、修改节点图标等。

import com.intellij.ide.projectView.PresentationData;
import com.intellij.ide.projectView.ProjectViewNode;
import com.intellij.packageDependencies.ui.PackageDependenciesNode;
import com.intellij.ui.ColoredTreeCellRenderer;

public interface MyProjectViewNodeDecorator {
    /**
     * 修改项目视图节点的展示方式
     *
     * @param node 节点
     * @param data 节点当前展示的信息
     */
    void decorate(ProjectViewNode<?> node, PresentationData data);

    /**
     * 修改项目视图包依赖节点的展示方式(已启用)
     *
     * @param node         包依赖节点
     * @param cellRenderer 用于渲染树形单元格的颜色
     */
    @Deprecated(forRemoval = true)
    default void decorate(PackageDependenciesNode node, ColoredTreeCellRenderer cellRenderer) {
    }
}
  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正则表达式1951

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值