Plugin Hello World!

Desarrollaremos un plugin bastante sencillo, en donde se muestran las características mínimas que debe tener un plugin para jEdit. Este plugin tendrá como única función mostrar en un cuadro de dialogo la frase "Hello World !"

Los pasos que se seguiran para desarrollar el plugin son los siguientes:

Procedimiento 2.1.

  1. Escribir la clase principal del plugin, la cual llevará el nombre de HelloWorldPlugin

  2. Escribir la clase encargada de la visualización del plugin, a la que llamaremos HelloWorld

  3. Desarrollar los archivos donde se encuentran los recursos a utilizar por el plugin

  4. Compilar los archivos que contienen el código fuente de las clases que se han desarrollado.

  5. Empaquetar el plugin en un archivo JAR

  6. Ubicar el archivo JAR en el directorio donde jEdit busca sus plugins

Escribiendo la clase principal del plugin

Empezaremos a desarrollar el plugin, escribiendo su clase principal. Esta clase la desarrollaremos en un archivo con el siguiente nombre: , escribiendo su clase principal. El código fuente de esta clase puede encontrarlo en: “Archivo HelloWorldPlugin.java ”

En caso de que el plugin deba responder a cambios de estado de la aplicación principal, la clase principal del plugin debe heredar de la clase EBPlugin. Sin embargo, dado que en nuestro caso el plugin no necesita tanta complejidad, heredaremos de la clase EditPlugin.

Para poder heredar de esta clase hay que incluir las librerías de jEdit, por lo que nuestra primera línea de código será:

import org.gjt.sp.jedit.*;

Luego, escribiremos la siguiente parte del código en donde especificaremos que la clase HelloWorldPlugin hereda de la clase EditPlugin y que posee una única función encargada de agregar el item de menú de nuestro plugin al menú de plugins de jEdit. El resultado final del código escrito para la clase HelloWorldPlugin es el siguiente:

	    import org.gjt.sp.jedit.*;
	    
	    import java.util.Vector;
	    
	    public class HelloWorldPlugin extends EditPlugin
	    {
	        public void createMenuItems(Vector menuItems)
	        {
  	            menuItems.addElement(GUIUtilities.loadMenuItem("HelloWorld"));
	         }
	    }

Escribiendo la clase HelloWorld

A continuación, desarrollaremos la clase que está encargada de la visualización del plugin. A esta clase le daremos por nombre HelloWorld. El código fuente de esta clase puede encontrarlo en: “Archivo HelloWorld.java ”

Para implementar la visualización, esta clase heredará de la clase JDialog de Java. Además implementará dos métodos encargados de desplegar y cerrar el cuadro de diálogo.

Esta clase tendrá como atributo privado un objeto de la clase View, que proviene de la aplicación principal y es enviado hacia el plugin cuando se realiza el llamado de éste. Esto le da la posibilidad al plugin de interactuar con este objeto, el cual está encargado de contener la mayoría de componentes visibles del programa.

El siguiente es el código para esta clase:

	    import javax.swing.*;
	    import org.gjt.sp.jedit.*;
	    
	    public class HelloWorld extends JDialog
	    {
	    // private members
	    private View view;
	    
 	        public HelloWorld(View view)
	        {
	           super(view,jEdit.getProperty("HelloWorld.title"),false);

                   this.view = view;
	    
	           JPanel content = new JPanel();
	           setContentPane(content);
	    
	           JLabel caption = new JLabel(jEdit.getProperty("HelloWorld.caption"));
	           content.add(caption);
	    
	           pack();
	           GUIUtilities.loadGeometry(this, "HelloWorld");
	           setDefaultCloseOperation(DISPOSE_ON_CLOSE);
	           show();
	        }
	    
	    
	        public void dispose()
	        {
	           view = null;
	           GUIUtilities.saveGeometry(this, "HelloWorld");
	           super.dispose();
	        }
	    }
	  

Recursos requeridos por el plugin

Acciones

El catálogo de acciones de usuario del plugin es el recurso usado por el API de plugins para obtener los nombres y las definiciones de las acciones del usuario. A continuación, desarollaremos el archivo que contendrá las acciones del plugin HelloWorld. El contenido de este archivo puede encontrarlo en: “Archivo actions.xml ”

	      <?xml version="1.0"?>
	      
	      <!DOCTYPE ACTIONS SYSTEM "actions.dtd">
	      
	      <ACTIONS>
	      <ACTION NAME="HelloWorld">
	      <CODE>
	      new HelloWorld(view);
	      </CODE>
	      </ACTION>
	      </ACTIONS>
	    

Dentro de este archivo se define la única acción que tiene el plugin, en donde se llama una nueva instancia de la clase HelloWorld, enviándosele por parámetro el objeto view de la aplicación principal.

El código que aparece dentro del tag <CODE> sigue las reglas de sintaxis del código de BeanShell. Si desee encontrar mayor información sobre la definición de actions.xml o sobre BeanShell puede consultar la Guía de Usuario de jEdit, que se encuentra dentro de la ayuda del programa.

Propiedades

Para configurar un plugin de manera externa, se fija cierta información relevante para el plugin como lo es el nombre del plugin, el texto de los items del menú, el texto desplegado en el plugin, el nombre del archivo de documentación, el autor, la versión, entre otros en un archivo de texto.

Esto también permite que jEdit tenga acceso a las diferentes propiedades del plugin, mediante la extracción de las propiedades del éste del archivo de texto.

Para nuestro plugin utilizaremos el archivo HelloWorld.props , que ilustra el uso de estas propiedades. Puede encontrar su contenido en: “Archivo HelloWorld.props ”

	      # Plugin properties
	      plugin.HelloWorldPlugin.name=Hello World !
	      plugin.HelloWorldPlugin.author=Jairo Martinez
	      plugin.HelloWorldPlugin.version=1.0
	      plugin.HelloWorldPlugin.docs=HelloWorld.html
	      
	      # Menu item label
	      HelloWorld.label=Hello World !
	      
	      # HelloWorld window
	      HelloWorld.title=Hello World plugin
	      HelloWorld.caption=Hello World !

Compilando el plugin

A la hora de compilar hay que tener cuidado en que se haya incluido dentro de la variable del sistema, CLASSPATH la ruta de las librerias de jEdit. Las librerias de jEdit se pueden encontrar en el directorio de instalación del programa en un archivo jar llamado jedit.jar.

Compile los archivos HelloWorld.java y HelloWorldPlugin.java, para obtener los archivos HelloWorld.class y HelloWorldPlugin.class.

Empaquetar en un archivo JAR

Ahora empaquetaremos los archivos que conformaran el plugin en un archivo JAR, al que denominaremos HelloWorld.jar.

Estos son los archivos que empaquetaremos dentro del archivo JAR:

  • HelloWorld.class

  • HelloWorldPlugin.class

  • actions.xml

  • HelloWorld.props

Una forma fácil de crear este archivo puede ser poner los archivos citados anteriormente en un directorio y luego utilizar el siguiente comando en ese directorio:

						jar cf HelloWorld.jar *
					

El archivo JAR terminado lo puede encontrar en este archivo: HelloWorld.jar

Ubicar el archivo JAR

Para terminar, se debe ubicar el archivo HelloWorld.jar en la carpeta: [directorio de instalacion de JEdit]/jars

jedit tree

Resultado final

Para observar el plugin, solo debemos ejecutar jEdit y luego hacer clic en el menú Plugins Hello World!

menu-plugin

Ahora debe aparecer una ventana de este estilo:

HelloWorld window

¡Felicitaciones! ha terminado de desarrollar su primer plugin para jEdit.

Importante

Hasta este punto se puede tener ya una buena idea de cómo se desarrolla un plugin, sin embargo, vale la pena especificar claramente cuales son los requerimientos básicos para un plugin. Estos son:

  • Debe estar empaquetado en uno o más archivos JAR y contener un archivo de clase que termine con el prefijo Plugin y que herede de la clase abstracta EditPlugin. Si el plugin debe responder a cambios de estado en la aplicación jEdit, esta clase debe ser heredar de la clase EBPPlugin.

  • El archivo JAR debe contener, por lo menos, un archivo de propiedades que tenga como extensión .props. Estas propiedades deben dar información sobre como el plugin está definido.

  • El archivo JAR debe contener las acciones que podrá realizar el plugin para que estas sean desplegadas dentro de la barra de menú de jEdit. Estas serán especificadas en un archivo de nombre actions.xml.