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.