Bienvenido al interesante mundo del desarrollo de plugins para Jetbrains, o mejor dicho para sus productos. Seguramente ya conoces algunos de sus IDEs más famosos, pero te haremos una lista para que tengas un mejor panorama de a que público puedes enfocar tus plugins una vez desarrollados.
Actualmente Jetbrains cuenta con los siguientes IDEs:
IntelliJ IDEA
El IDE por excelencia para el desarrollo en Java y Kotlin
PyCharm
Un IDE orientado a desarrolladores Python
WebStorm
Un IDE orientado a desarrolladores web principalmente en Javascript
PhpStorm
Un IDE orientado a los desarrolladores en PHP
CLion
Un IDE orientado a los desarrolladores C/C++
RubyMine
Un IDE orientado a los desarrolladores en RubyGogland
Un IDE orientado a los desarrolladores del lenguaje de programación Go
DataGrip
Una Herramienta orientada a los expertos en bases de datos
Rider
Un IDE orientado a los desarrolladores de la plataforma .NET
ReSharper
Extensión de Visual studio para el desarrollo de .NET
AppCode
Un ide para el desarrollo de aplicaciones para productos de Apple
ReSharper C++
Extensión de Visual Studio para el desarrollo de C++
Para nuestro primer plugin necesitaremos forzosamente usar el IDE de Jetbrains IDEA, pues trae consigo una plataforma tipo SDK para el desarrollo de plugins.
Crearemos un nuevo proyecto de tipo plugin
<img src="https://javapro.org/castellano/wp-content/uploads/sites/4/2017/05/tipo-de-proyecto.png" alt="" class="wp-image-108"/>
El archivo más importante es el archivo plugin.xml que contendrá toda al definición del plugin y puede cambiar drásticamente la compilación.
Si como en mi caso deseais que el plugin se pueda correr en otros IDE que no sean el IDEA fijense bien que no falte el tag
<depends>com.intellij.modules.lang</depends>
En mi caso lo agregaré al menú ver y le pondré como método abreviado Shift+Control+Menor que mediante
<actions>
<!-- Add your actions here -->
<action id="helloplugin" class="HelloPlugin" text="hello" description="Hello plugin is my first plugin">
<add-to-group group-id="ViewMenu" anchor="last"/>
<keyboard-shortcut keymap="$default" first-keystroke="shift ctrl LESS"/>
</action>
</actions>
El plugin aparecerá una vez instalado como última opción en el menú ver.
<img src=\"https://javapro.org/castellano/wp-content/uploads/sites/4/2017/05/plugin-en-menu.png\" alt=\"\" class=\"wp-image-109\"/>
Para controlar el comportamiento en el código agregaremos la clase HolaPlugin y para que funcione como una acción de menú deberemos de extender la clase com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
public class HelloPlugin extends AnAction {
@Override
public void actionPerformed(AnActionEvent anActionEvent) {
}
}
En el método actionPerformed pondremos nuestro comportamiento, primero obtendremos la barra de estatus y posteriormente crearemos un mensaje popup.
Para la barra deberemos de pedirle la instancia al gestor de ventanas.
StatusBar statusBar = WindowManager.getInstance()
.getStatusBar(anActionEvent.getProject());
Para mostrar el popup usaremos el builder de la fábrica de popups, podríamos incluso meterle HTML, pero en nuestro caso usaremos solamente un mensaje de texto
StatusBar statusBar = WindowManager.getInstance()
.getStatusBar(DataKeys.PROJECT.getData(anActionEvent.getProject().getDataContext()));
El resultado final será un modesto mensaje como el siguiente:
<img src=\"https://javapro.org/castellano/wp-content/uploads/sites/4/2017/05/plgin-corriendo.png\" alt=\"plugin personalizado corriendo\" class=\"wp-image-106\"/>
Espero te haya gustado este tutorial y te haya incentivado a crear plugins como yo.
El código completo de este plugin pueden hallarlo en mi repositorio que he creado en github: https://github.com/javatlacati/miPrimerPluginDeIdea.