IDEA插件开发入门(五)自定义侧边栏

IDEA插件开发
placeholder image
admin 发布于:2024-01-21 18:27:26
阅读:loading

1.基本介绍

从0开始摸索着学习IntelliJ IDEA插件继菜单栏、工具栏、右键菜单摸索完毕后接着肯定是侧边栏的扩展实现,如同大多数的插件一样都基于侧边栏增加了自定义的功能扩展,所以本次也不例外。站在严格专业的水平层看待对于侧边栏的扩展必须要实现下列一些细节实现,否则将视为不够深度掌握,参考如下:

(1)自定义侧边栏可出现在左侧、右侧、下侧;

(2)自定义侧边栏可包含名称、图标、多个面板页面、可带关闭按钮;

吸附在侧边栏的插件扩展一般是需要展示一个页面(面板),在页面中提供不同的组件元素进行交互或数据的展示等,更多的是需要开发界面,本次就使用最简单的Label文字为例。

2.代码实现

(1)HelloSidebarFrame.java 是侧边栏按钮点击后的事件触发,弹出一个新的页面,参考代码如下:

package cn.chendd.plugins.sidebar;

import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowFactory;
import com.intellij.ui.JBColor;
import com.intellij.ui.content.Content;
import com.intellij.ui.content.ContentFactory;
import org.jetbrains.annotations.NotNull;

import javax.swing.*;
import java.awt.*;

/**
 * @author chendd
 * @date 2024/1/4 17:49
 */
public class HelloSidebarFrame implements ToolWindowFactory {

    @Override
    public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {

        final ContentFactory factory = ContentFactory.getInstance();
        {
            JPanel panel = new JPanel();
            JLabel label = new JLabel("Hello chendd");
            label.setFont(new Font("宋体", Font.BOLD, 32));
            label.setForeground(JBColor.BLUE);
            panel.add(label);
            final Content content1 = factory.createContent(panel, "chendd", false);
            toolWindow.getContentManager().addContent(content1);
        }
        {
            JPanel panel = new JPanel();
            JLabel label = new JLabel("Hello world");
            label.setFont(new Font("宋体" , Font.BOLD , 32));
            label.setForeground(JBColor.RED);
            panel.add(label);
            final Content content1 = factory.createContent(panel, "world", true);
            toolWindow.getContentManager().addContent(content1);
        }
    }
}

(2)plugin-sidebar.xml 是插件的配置文件,参考代码如下:

<idea-plugin>

    <!-- Extension points defined by the plugin.
         Read more: https://plugins.jetbrains.com/docs/intellij/plugin-extension-points.html -->
    <extensions defaultExtensionNs="com.intellij">
        <toolWindow factoryClass="cn.chendd.plugins.sidebar.HelloSidebarFrame" id="chendd-bottom" canCloseContents="true"
                   anchor="bottom" icon="AllIcons.Actions.GeneratedFolder"></toolWindow>
        <toolWindow factoryClass="cn.chendd.plugins.sidebar.HelloSidebarFrame" id="chendd-left" canCloseContents="true"
                   anchor="left" icon="AllIcons.Actions.GeneratedFolder"></toolWindow>
        <toolWindow factoryClass="cn.chendd.plugins.sidebar.HelloSidebarFrame" id="chendd_right" canCloseContents="false"
                   anchor="right" icon="AllIcons.Actions.GeneratedFolder"></toolWindow>
    </extensions>

</idea-plugin>

3.运行效果

(1)测边栏可以吸附在左侧、右侧、下侧等多个位置;

(2)侧边栏的页面可包含多个面板,面板可以被关闭;

(3)面板一般为页面,需要展示对应的页面信息,参考如下图所示:

image.png

 点赞


 发表评论

当前回复:作者

 评论列表


留言区