IDEA-插件开发 入门篇
前言
由于网上的idea 插件教程很少,无奈只能自己研究,文章记录的内容不能保证准确性,有问题希望可以评论指出!。
一、插件入门 项目创建
二、实战案例 - mysql 列转换
插件作用 - 通常写sql的时候,sql 需要把列名写出来,比如 select s.u_id as uId,… from xxx, 对于我这种懒人党说简直巨麻烦,毕竟自动生成的列是没有前缀的… 像这样 u_id,u_name
1. 配置插件信息
配置 resources 下的 plugin.xml
配置如下
<idea-plugin>
<id>org.example.myPlugins</id>
<name>MyPlugin</name>
<vendor email="1585946147@qq.com" 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提供了大量接口支持我们自定义插件,后续更新自定义工具栏的章节