git clone --depth 1 git://git.jetbrains.org/idea/community.git idea
关于从源码运行IDEA的方法参考:Check Out And Build Community Edition (https://plugins.jetbrains.com/docs/intellij/welcome.html?from=jetbrains.org)
添加 IDEA jdk
虽然不知道原因,但是根据Check Out And Build Community Edition (https://plugins.jetbrains.com/docs/intellij/welcome.html?from=jetbrains.org), 我们需要建立一个IDEA jdk 来运行插件:
<idea-plugin> <id>com.your.company.unique.plugin.idid> <name>Plugin display name herename> <version>1.0version> <vendoremail="support@yourcompany.com"url="http://www.yourcompany.com">YourCompanyvendor> <description> Enter short description for your plugin here.
most HTML tags may be used ]]>description> <change-notes> Add change notes here.
most HTML tags may be used ]]> change-notes>
<idea-versionsince-build="145.0"/>
<extensionsdefaultExtensionNs="com.intellij">
extensions>
<actions>
actions> idea-plugin>
新建一个 Action
插件扩展 IDEA 最常见的方式就是在菜单栏或者工具栏中添加菜单项,用户通过点击菜单项来触发插件功能。IDEA 提供了 AnAction 类,这个类有一个虚方法 actionPerformed,这个方法会在每次菜单被点击时调用。
新建一个自定义的 Action 有两个步骤:
1. 继承 AnAction 类,在 actionPerformed 方法中实现插件逻辑
2. 注册 action,有两种方式,通过代码注册和通过 plugin.xml 注册
我们先写一个简单的Action类:
publicclassTextBoxesextendsAnAction{ // 如果通过Java代码来注册,这个构造函数会被调用,传给父类的字符串会被作为菜单项的名称 // 如果你通过plugin.xml来注册,可以忽略这个构造函数 publicTextBoxes(){ // 设置菜单项名称 super("Text _Boxes"); // 还可以设置菜单项名称,描述,图标 // super("Text _Boxes","Item description",IconLoader.getIcon("/Mypackage/icon.png")); } publicvoidactionPerformed(AnActionEvent event){ Project project = event.getData(PlatformDataKeys.PROJECT); String txt= Messages.showInputDialog(project, "What is your name?", "Input your name", Messages.getQuestionIcon()); Messages.showMessageDialog(project, "Hello, " + txt + "!\n I am glad to see you.", "Information", Messages.getInformationIcon()); } }
然后我们在plugin.xml中注册这个Action:
<actions> <groupid="MyPlugin.SampleMenu"text="_Sample Menu"description="Sample menu"> <add-to-groupgroup-id="MainMenu"anchor="last" /> <actionid="Myplugin.Textboxes"class="Mypackage.TextBoxes"text="Text _Boxes"description="A test menu item" /> group> actions>
这里我们新建了一个菜单组,其中 text 字符串的下划线表示这个字母作为快捷键。这个菜单显示的效果如下: