天天看点

IDEA-插件开发 入门篇前言一、插件入门 项目创建二、实战案例 - mysql 列转换总结

IDEA-插件开发 入门篇

文章目录

    • IDEA-插件开发 入门篇
  • 前言
  • 一、插件入门 项目创建
  • 二、实战案例 - mysql 列转换
    • 1. 配置插件信息
    • 2. 创建action
    • 3. 运行结果
  • 总结

前言

由于网上的idea 插件教程很少,无奈只能自己研究,文章记录的内容不能保证准确性,有问题希望可以评论指出!。

一、插件入门 项目创建

IDEA-插件开发 入门篇前言一、插件入门 项目创建二、实战案例 - mysql 列转换总结

二、实战案例 - mysql 列转换

插件作用 - 通常写sql的时候,sql 需要把列名写出来,比如 select s.u_id as uId,… from xxx, 对于我这种懒人党说简直巨麻烦,毕竟自动生成的列是没有前缀的… 像这样 u_id,u_name

1. 配置插件信息

配置 resources 下的 plugin.xml

IDEA-插件开发 入门篇前言一、插件入门 项目创建二、实战案例 - mysql 列转换总结

配置如下

<idea-plugin>
    <id>org.example.myPlugins</id>
    <name>MyPlugin</name>
    <vendor email="[email protected]" url="http://www.baidu.com">lieying</vendor>

    <description>first test plugin</description>


    <extensions defaultExtensionNs="com.intellij">
        <!-- Add your extensions here -->
    </extensions>

    <actions>
        <!-- Add your actions here -->
        <group id="MyPlugin.SampleMenu"  text="_Sample Menu" description="Sample menu">
            <add-to-group group-id="MainMenu" anchor="last"  />
            <action id="Myplugin.Textboxes" class="com.hunt.plugin.TextBoxes" text="Text _Boxes" description="A test menu item">
                <keyboard-shortcut keymap="$default" first-keystroke="ctrl alt Z" />
            </action>
        </group>


    </actions>
</idea-plugin>
           

2. 创建action

需要去继承AnAction,当idea 的按钮被触发时会被调用actionPerformed 方法:

package com.hunt.plugin;

import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;

import javax.swing.*;

public class TextBoxes extends AnAction {

    // 定义按钮的名称
    public TextBoxes() {
        super("MYSQL_COLUMN_ADD_PRO");
    }

    public void actionPerformed(AnActionEvent event) {
        Project project = event.getData(PlatformDataKeys.PROJECT);

        // userInput
        String strMysqlColumns = Messages.showMultilineInputDialog(project, "Enter the column you need to add salt",
                "xyang", "example:\n" +
                        "\t user_id,\n " +
                        "\t user_name", Messages.getInformationIcon(), null);
        // 如果任意一个值是null, 那么就不做
        if (strMysqlColumns == null || strMysqlColumns.trim().equals("")){
            return;
        }

        String prefix = Messages.showInputDialog(project, "Enter the prefix you need to add",
                "xyang", Messages.getInformationIcon());
        // 如果任意一个值是null, 那么就不做
        if (prefix == null || prefix.trim().equals("")){
            return;
        }

        // 结果存放
        StringBuffer sb = new StringBuffer();

        // 处理列,加上前缀
        String[] columns = strMysqlColumns.split(",");
        for (int i = 0; i < columns.length; i++) {
            // 单个column 加上前缀
            sb.append(prefix);
            sb.append(".");
            sb.append(columns[i]);


            // 最后一次循环不执行
            if (columns.length - 1 > i){
                sb.append(",");
                sb.append("\n");
            }
        }

        // 返回出结果
        Messages.showMessageDialog(project, sb.toString() + "\n ", "Thank you for your use.", Messages.getInformationIcon());
    }

}

           

3. 运行结果

IDEA-插件开发 入门篇前言一、插件入门 项目创建二、实战案例 - mysql 列转换总结

总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了定义简单插件,而idea提供了大量接口支持我们自定义插件,后续更新自定义工具栏的章节