IntelliJ插件开发-AnAction

简介

AnAction是IntelliJ提供的菜单项,可以添加到Menu或者ToolBar(底部状态栏)中

使用

  1. 定义逻辑
public class MyAction extends AnAction  {
	@Override
    public void actionPerformed(@NotNull AnActionEvent e) {
    	Project project = e.getProject();
    	Editor editor = e.getData(CommonDataKeys.EDITOR);
    	... // your business
	}
	
	@Override
    public void update(@NotNull AnActionEvent e) {
    	// 设置AnAction的启用状态,如果为false,可以传递给其他内置AnAction的逻辑处理
        e.getPresentation().setEnabled(CompletionServiceImpl.getCurrentCompletionProgressIndicator() == null);
    }

	@Override
    public @NotNull ActionUpdateThread getActionUpdateThread() {
    	// 设置AnAction的执行线程,使用Event Dispatch Thread或者Background Thread
        return ActionUpdateThread.EDT;
    }
}
  1. 注册,如果你的AnAction只需要监听快捷键,也可以不绑定IDE菜单。
<idea-plugin>
	<actions>
		<action id="MyAction1" class="com.demo.MyAction1" text="MyAction">
			
			<keyboard-shortcut first-keystroke="ctrl PERIOD" keymap="$default" />
			<keyboard-shortcut first-keystroke="TAB" keymap="$default" /> 
			
			<override-text place="MainMenu" text="text in main menu" /> 
            <override-text place="EditorPopup" text="text in eidtor popup" />
		action>
		<separator/> 
		<action id="MyAction2" class="com.demo.MyAction1" text="MyAction"/>
		
		<add-to-group group-id="EditorPopupMenu" anchor="first"/>
	actions>
idea-plugin>

给指定组件绑定快捷键

在xml中配置的AnAction子类的快捷键是全局性的,如果你只想给某个JComponent组件绑定事件,可以继承DumbAwareAction。

DumbAwareAction myAction = new DumbAwareAction() {
    @Override
    public void actionPerformed(@NotNull AnActionEvent e) {
        ... //your business
    }
};
myAction.registerCustomShortcutSet(CommonShortcuts.CTRL_ENTER, editor.getComponent());

你可能感兴趣的:(#,Intellij插件,intellij,idea)