[code] EditorActionHandler illustration

This commit is contained in:
Anna Bulenkova 2014-12-11 16:00:50 +01:00
parent 52da55257d
commit 19f82bfa37
2 changed files with 35 additions and 0 deletions

View File

@ -29,6 +29,10 @@
description="Illustrates how to plug an action in">
<add-to-group group-id="EditorPopupMenu" anchor="last"/>
</action>
<action id="EditorBasics.EditorHandlerIllustration" class="org.jetbrains.plugins.editor.basics.EditorHandlerIllustration" text="Editor Handler"
description="Illustrates how to plug an action in">
<add-to-group group-id="EditorPopupMenu" anchor="last"/>
</action>
</actions>
</idea-plugin>

View File

@ -0,0 +1,31 @@
package org.jetbrains.plugins.editor.basics;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.IdeActions;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.actionSystem.EditorActionHandler;
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
import com.intellij.openapi.project.Project;
/**
* @author Anna Bulenkova
*/
public class EditorHandlerIllustration extends AnAction {
@Override
public void actionPerformed(AnActionEvent anActionEvent) {
final Editor editor = anActionEvent.getRequiredData(CommonDataKeys.EDITOR);
EditorActionManager actionManager = EditorActionManager.getInstance();
//Insert one more caret below the active caret
EditorActionHandler actionHandler = actionManager.getActionHandler(IdeActions.ACTION_EDITOR_CLONE_CARET_BELOW);
actionHandler.execute(editor, editor.getCaretModel().getCurrentCaret(), anActionEvent.getDataContext());
}
@Override
public void update(final AnActionEvent e) {
//Set visible if at least one caret is available
final Project project = e.getData(CommonDataKeys.PROJECT);
final Editor editor = e.getData(CommonDataKeys.EDITOR);
e.getPresentation().setVisible((project != null && editor != null && !editor.getCaretModel().getAllCarets().isEmpty()));
}
}