Hola Mundo del desarrollo de plugins para Jetbrains IDEA

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 Ruby
  • Gogland

    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.


  • Cursos de Código Facilito

    Te comparto aquí mis recomendaciones de cursos de Código Facilito. Codigofacilito.com es una plataforma virtual de cursos en idioma exclusivamente español que inició como un canal de YouTube. Opinión de la plataforma En mi opinión la plataforma aún es incipiente y los cursos necesitan más trabajo, ya que es muy común hallarse con clases de…


  • Cursos de LinkedIn Learning

    Te comparto aquí mis recomendaciones de cursos de Linkedin Learning. LinkedIn Learning es una plataforma virtual de cursos propiedad de Microsoft. Hallarás mucho material en inglés, pues prácticamente todos los cursos vienen con subtítulos en castellano y en la parte técnica son muy buenos debido a la adquisición de Lynda.com. En mi opinión la plataforma…


  • Mockito: Snippets de código

    Estos snippets de código para entrevista acerca de mockito espero te sean de mucha utilidad. Claro que también los puedes usar para tu desarrollo en el día a día. Mock básico Si te llegan a mostrar algo como esto es mejor que sospeches, mockito se usa principalmente para pruebas de integración. Si llegas a ver…


javapro.org