diff --git a/tutorials/action_system/action_system.md b/tutorials/action_system/action_system.md
index d569fe71f..ca04208db 100644
--- a/tutorials/action_system/action_system.md
+++ b/tutorials/action_system/action_system.md
@@ -24,19 +24,23 @@ To create a new we need to extend
[AnAction] (https://github.com/JetBrains/intellij-community/blob/master/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/AnAction.java)
class:
- public class SimpleAction extends AnAction {
- }
+```java
+public class SimpleAction extends AnAction {
+}
+```
The only method of an inheritor of
[AnAction] (https://github.com/JetBrains/intellij-community/blob/master/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/AnAction.java)
which needs to be overridden is ```public void actionPerformed(AnActionEvent anActionEvent);```
, and it should contain a part of code to be executed after the action has been invoked. In this case the action does nothing.
- public class SimpleAction extends AnAction {
- @Override
- public void actionPerformed(AnActionEvent anActionEvent) {
- }
+```java
+public class SimpleAction extends AnAction {
+ @Override
+ public void actionPerformed(AnActionEvent anActionEvent) {
}
+}
+```
-------------
@@ -57,52 +61,56 @@ After filling the "New Action" form and applying the changes ** section
[plugin.xml]()
file will look like this:
-
-
-
-
-
-
+```xml
+
+
+
+
+
+
+```
Full list of action's attributes can also be set manually in
[plugin.xml]()
configuration file like the following code sample shows:
-
-
-
-
-
-
-
-
-
-
-
-
+```xml
+
+
+
+
+
+
+
+
+
+
+
+
+```
After performing the steps described above we need to compile and run the plugin to the the newly created action available as a Tools Menu item.

@@ -113,13 +121,15 @@ After performing the steps described above we need to compile and run the plugin
In order to make the action do something we need to implement it's ```public void actionPerformed(AnActionEvent anActionEvent);``` method.
In the following example action invokes a dialog that shows information about a selected Project View Item and has no icon and any pre-selected default option:
- @Override
- public void actionPerformed(AnActionEvent anActionEvent) {
- Object navigatable = anActionEvent.getData(CommonDataKeys.NAVIGATABLE);
- if (navigatable != null) {
- Messages.showDialog(navigatable.toString(), "Selected Element:", new String[]{"OK"}, -1, null);
- }
+```java
+@Override
+public void actionPerformed(AnActionEvent anActionEvent) {
+ Object navigatable = anActionEvent.getData(CommonDataKeys.NAVIGATABLE);
+ if (navigatable != null) {
+ Messages.showDialog(navigatable.toString(), "Selected Element:", new String[]{"OK"}, -1, null);
}
+}
+```
-----------
@@ -131,36 +141,40 @@ Default implementation of this method does nothing.
Override this method to provide the ability to dynamically change action's
state and(or) presentation depending on the context.
- public class SimpleAction extends AnAction {
- @Override
- public void actionPerformed(AnActionEvent anActionEvent) {
- //...
- }
-
- @Override
- public void update(AnActionEvent anActionEvent) {
- }
+```java
+public class SimpleAction extends AnAction {
+ @Override
+ public void actionPerformed(AnActionEvent anActionEvent) {
+ //...
}
+ @Override
+ public void update(AnActionEvent anActionEvent) {
+ }
+}
+```
+
The following code sample illustrates how to make the action visible and available only when the following conditions are met:
there's a project available and there's an item you can navigate to selected in the project view pane:
- public class SimpleAction extends AnAction {
- @Override
- public void actionPerformed(AnActionEvent anActionEvent) {
- //...
- }
-
- @Override
- public void update(AnActionEvent anActionEvent) {
- final Project project = anActionEvent.getData(CommonDataKeys.PROJECT);
- if (project == null)
- return;
- Object navigatable = anActionEvent.getData(CommonDataKeys.NAVIGATABLE);
- anActionEvent.getPresentation().setEnabledAndVisible(navigatable != null);
- }
+```java
+public class SimpleAction extends AnAction {
+ @Override
+ public void actionPerformed(AnActionEvent anActionEvent) {
+ //...
}
+ @Override
+ public void update(AnActionEvent anActionEvent) {
+ final Project project = anActionEvent.getData(CommonDataKeys.PROJECT);
+ if (project == null)
+ return;
+ Object navigatable = anActionEvent.getData(CommonDataKeys.NAVIGATABLE);
+ anActionEvent.getPresentation().setEnabledAndVisible(navigatable != null);
+ }
+}
+```
+
Parameter anActionEvent carries information on the invocation place and data available.
**Note** This method can be called frequently, for instance, if an action is added to a toolbar, it will be updated twice a second.
@@ -188,47 +202,55 @@ Grouping can be done by extending adding ** attribute to **
[plugin.xml]()
file.
-
-
-
-
+```xml
+
+
+
+
+```
##Binding action groups to UI component.
The following sample shows how to place a custom action group on top of the editor popup menu:
-
-
-
-
-
+```xml
+
+
+
+
+
+```
##Adding actions to the group.
To create an action we need to extend
[AnAction.java]()
class:
- public class GroupedAction extends AnAction {
- @Override
- public void update(AnActionEvent event) {
- event.getPresentation().setEnabledAndVisible(true);
- }
-
- @Override
- public void actionPerformed(AnActionEvent event) {
- //Does nothing
- }
+```java
+public class GroupedAction extends AnAction {
+ @Override
+ public void update(AnActionEvent event) {
+ event.getPresentation().setEnabledAndVisible(true);
}
+ @Override
+ public void actionPerformed(AnActionEvent event) {
+ //Does nothing
+ }
+}
+```
+
And then the actions needs to be registered in the newly created group:
-
-
-
-
+
+
+
-
-
-
+
+
+
+```
After performing the steps described above the action group nad it's content will be available in the editor popup menu:
@@ -248,11 +270,13 @@ This class is used if a set of actions belonging to the group is fixed, which is
Firstly, [DefaultActionGroup.java] should be derived:
- public class CustomDefaultActionGroup extends DefaultActionGroup {
- @Override
- public void update(AnActionEvent event) {
- }
+```java
+public class CustomDefaultActionGroup extends DefaultActionGroup {
+ @Override
+ public void update(AnActionEvent event) {
}
+}
+```
###Registering action group.
As in case with the simple action group, the inheritor of
@@ -261,49 +285,59 @@ should be declared in
[plugin.xml]()
file:
-
-
-
-
-
+```xml
+
+
+
+
+
+```
###Creating an action.
[AnAction.java]()
needs to be extended:
- public class CustomGroupedAction extends AnAction {
- @Override
- public void actionPerformed(AnActionEvent anActionEvent) {
- //Does nothing
- }
+
+```java
+public class CustomGroupedAction extends AnAction {
+ @Override
+ public void actionPerformed(AnActionEvent anActionEvent) {
+ //Does nothing
}
+}
+```
###Adding actions to the group.
Action's class should be registered in
[plugin.xml]()
:
-
-
-
-
-
+```xml
+
+
+
+
+
+
+```
###Providing specific behaviour for the group.
In this case we override ```public void update(AnActionEvent event);``` method to make the group visible as a *Tools* menu item,
however, it will be enabled only if there's an instance of the editor available. Also a custom icon is set up:
- public class CustomDefaultActionGroup extends DefaultActionGroup {
- @Override
- public void update(AnActionEvent event) {
- Editor editor = event.getData(CommonDataKeys.EDITOR);
- event.getPresentation().setVisible(true);
- event.getPresentation().setEnabled(editor != null);
- event.getPresentation().setIcon(AllIcons.General.Error);
- }
+```java
+public class CustomDefaultActionGroup extends DefaultActionGroup {
+ @Override
+ public void update(AnActionEvent event) {
+ Editor editor = event.getData(CommonDataKeys.EDITOR);
+ event.getPresentation().setVisible(true);
+ event.getPresentation().setEnabled(editor != null);
+ event.getPresentation().setIcon(AllIcons.General.Error);
}
+}
+```
After compiling and running the code sample above, *Tools* menu item should contain an extra group of action with a user-defined icon: