IDEA插件开发(三)

简介: IDEA插件开发

2、显示界面

首先,我们修改样式对应的Java类,将rootPanel暴露出来,并监听按钮进行测试

image-20220701105657964

至于如何显示界面,只要我们将rootPanel交给Idea的组件即可

我们可以依据官方文档,创建一个对话框,然后将该window交个这个对话框

如何创建对话框:https://plugins.jetbrains.com/docs/intellij/dialog-wrapper.html

同样,我们先创建一个Action

image-20220701162749182

EditorPopupMenu指右键菜单

创建对话框

public class GenerateDialog extends DialogWrapper {
    public GenerateDialog() {
        super(true);
        setTitle("Where语句生成");
        init();
    }
    @Override
    protected JComponent createCenterPanel() {
        return new WhereGenerateWindow().getRootPanel();
    }
}

将对话框加入Action中

public class GenerateWhereAction extends AnAction {
    @Override
    public void actionPerformed(AnActionEvent e) {
        this.show(e);
    }
    private void show(AnActionEvent e){
        new GenerateDialog().show();
    }
}

或者直接使用DialogBuilder

public class GenerateWhereAction extends AnAction {
    @Override
    public void actionPerformed(AnActionEvent e) {
        this.show(e);
    }
    private void show(AnActionEvent e){
        WhereGenerateWindow window = new WhereGenerateWindow();
        DialogBuilder dialogBuilder = new DialogBuilder(e.getProject());
        dialogBuilder.setCenterPanel(window.getRootPanel());
        dialogBuilder.setTitle("Where语句生成");
        dialogBuilder.show();
    }
}

调试插件

image-20220701162805464

image-20220701162854943

这样的界面有点丑,我们需要调整大小。

在gui界面中,选中打开专家模式,然后调整界面大小,同时设置margin,让输入框往里缩一点

image-20220701163024027

同样的,将JScrollPanel也设置一下,再进行调试

image-20220701163156482

这下就好看多了。

3、怎么获取到当前文件的内容?

public class GenerateWhereAction extends AnAction {
    @Override
    public void actionPerformed(AnActionEvent e) {
        // 获取编辑器
        Editor editor = e.getRequiredData(CommonDataKeys.EDITOR);
        // 当前打开的文件
        VirtualFile virtualFile = e.getRequiredData(CommonDataKeys.PSI_FILE).getViewProvider().getVirtualFile();
        // 获取选择的数据模型
        SelectionModel selectionModel = editor.getSelectionModel();
        // 获取当前选择的文本
        String selectedText = selectionModel.getSelectedText();
        if(StringUtils.isBlank(selectedText)){
            // 获取当前打开的文件
            Document document = editor.getDocument();
            show(e, document.getText());
        }
        else {
            show(e, selectedText);
        }
    }
    private void show(AnActionEvent e, String text){
        WhereGenerateWindow window = new WhereGenerateWindow(text);
        DialogBuilder dialogBuilder = new DialogBuilder(e.getProject());
        dialogBuilder.setCenterPanel(window.getRootPanel());
        dialogBuilder.setTitle("Where语句生成");
        dialogBuilder.show();
    }
}
public class WhereGenerateWindow {
    private JPanel rootPanel;
    private JTextField prefix;
    private JButton generate;
    private JTextArea whereStatement;
    public WhereGenerateWindow(String text){
        this.init(text);
    }
    private void init(String text){
        whereStatement.setText(text);
        generate.addActionListener(e -> {
            whereStatement.setText(prefix.getText() + "." + whereStatement.getText());
        });
    }
    public JPanel getRootPanel() {
        return rootPanel;
    }
}

调试

image-20220701163436550

接下来的如何解析文件,生成where语句就纯属于Java知识了,我想就不用我赘述了。

如何引入依赖

项目是由gradle构建的,所以引入依赖的方式和平常开发没什么两样

dependencies{
    implementation("cn.hutool:hutool-all:5.6.2")
}

官方样例

官方文档是个不错的学习方式,同样的,官方也具有许多的demo可供我们学习

地址:https://github.com/JetBrains/intellij-sdk-code-samples

本文代码地址

https://github.com/lzj960515/code-generator

目录
相关文章
|
7天前
|
网络协议 Windows
两步带你解决IDEA 插件下载安装慢、超时、不成功问题
这篇文章提供了解决IDEA插件下载慢或超时问题的方案,通过查找国内插件节点IP地址并修改本地hosts文件来加速下载。
两步带你解决IDEA 插件下载安装慢、超时、不成功问题
|
1月前
|
Java
可直接编辑jar包的IDEA插件-JarEditor
IDEA自带的反编译插件虽可查看jar包中的class文件,但无法直接编辑。为解决此问题,作者开发了JarEditor插件,可在IDEA中直接编辑jar文件内的class及资源文件,无需解压或手动编译。点击Jar Editor可修改代码,通过Save/Compile保存并编译,Build Jar则将更改写回jar包。该插件简化了jar包编辑流程,提高了开发效率。
可直接编辑jar包的IDEA插件-JarEditor
|
3月前
|
IDE 程序员 开发工具
IDEA插件-IKun Progress 坤坤成IDEA进度条了
"IKun Progress"是一款适用于JetBrains IntelliJ IDEA等IDE的插件,该插件能够将标准的进度条替换为一个有趣且独特的篮球动画,其中的角色名为坤坤(Kun Kun)。它旨在为您的IDE使用过程增添一些娱乐和轻松的氛围。 该插件让您可以在执行IDE中的任务时享受到更加视觉上吸引人的进度指示器,例如构建、运行测试或其他涉及进度条的操作。相比传统的普通进度条,您将看到坤坤在打篮球,给您的开发工作流程增添了一份乐趣。
444 0
IDEA插件-IKun Progress 坤坤成IDEA进度条了
|
3月前
|
IDE 程序员 开发工具
IDEA插件-Mario Progress Bar马里奥进度条
"Mario Progress Bar"是一款适用于JetBrains IntelliJ IDEA等IDE的插件,它基于Dmitry Batkovitch开发的Nyan Progress Bar。该插件会将进度条样式变成马里奥游戏中的角色。基本的进度条显示为带有一些砖块的马里奥形象,而不确定状态的进度条显示为一个乌龟壳。一旦安装完成,您可以在IDE的设置中找到插件的配置选项(Settings > Tools > Mario Progress Bar),在此处选择您喜欢的角色形象。
168 0
IDEA插件-Mario Progress Bar马里奥进度条
|
3月前
|
程序员 开发者
IDEA插件-Grep Console彩色控制台
IDEA插件-Grep Console是一款用于增强IDEA开发环境的工具,它可以帮助开发者更好地搜索和过滤控制台输出。
283 0
IDEA插件-Grep Console彩色控制台
|
4天前
|
Windows
IDEA如何查看已经安装的插件并删除
【10月更文挑战第1天】这段内容主要介绍了如何在IntelliJ IDEA中查看和删除已安装的插件。可以通过软件内的插件市场查看插件列表,包括插件名称、版本号和供应商等信息;也可以通过访问插件目录查看。删除插件则建议在插件市场中进行,包括禁用和卸载步骤,手动删除插件文件夹的方法不推荐,因为可能存在配置残留等问题。
36 11
|
2月前
|
自然语言处理 JavaScript 算法
【插件】IDEA这款插件,爱到无法自拔
本文介绍了阿里云「通义灵码」这一强大IDEA插件,它不仅能够智能生成代码、解答研发问题,还支持多种编程语言和编辑器。文章详细展示了如何安装使用该插件,并通过多个实际案例说明其在代码解释、优化、生成注释及单元测试等方面的应用,助力开发者提高效率。强烈推荐尝试!
67 1
【插件】IDEA这款插件,爱到无法自拔
|
2月前
|
Java
2022年最新最详细的IntelliJ idea高效插件的介绍安装,让你的工作效率提升10倍
这篇文章详细介绍了10款IntelliJ IDEA的高效插件,包括Codota代码智能提示、Key Promoter X快捷键提示、CodeGlance代码缩略图、Lombok代码简化、阿里巴巴代码规范检查、SonarLint代码质量检查、Save Actions格式化代码、Translation翻译、Rainbow Brackets彩虹括号和Nyan Progress Bar彩虹进度条插件,旨在帮助提升开发效率和代码质量。
2022年最新最详细的IntelliJ idea高效插件的介绍安装,让你的工作效率提升10倍
|
3月前
|
Java
[JarEditor]可直接修改jar包的IDEA插件
### 修改JAR包变得更简单:JarEditor插件简介 **背景:** 开发中常需修改JAR包中的class文件,传统方法耗时费力。JarEditor插件让你一键编辑JAR包内文件,无需解压。 **插件使用:** 1. **安装:** 在IDEA插件市场搜索JarEditor并安装。 2. **修改class:** 打开JAR文件中的class,直接编辑,保存后一键构建更新JAR。 3. **文件管理:** 右键菜单支持在JAR内新增/删除/重命名文件等操作。 4. **搜索:** 使用内置搜索功能快速定位JAR包内的字符串。
295 2
[JarEditor]可直接修改jar包的IDEA插件
|
3月前
|
Java Android开发 Spring
idea开发常用快捷键总结
idea开发常用快捷键总结
59 9