Extensión básica de ejemplo
Introducción
ÁRBOL DEL PLUGIN
CLASES Y FICHEROS UTILIZADOS
    EjemploExtension.java
    FPanelAbout.java
    About.html
    config.xml
    Directorio images
    build.xml

 

 Introducción

Este tutorial, está pensado para empezar de una forma sencilla a crear exteniones sobre Andami.

Se pretende mostrar una extensión básica que tan solo añada y muestre el contenido de una ventana en Andami cuando se pulsa su icono , o opción de menú.

Descarga del plugin: Ejemplo

Árbol del plugin

Aquí mostramos en forma de árbol las clases y ficheros necesarios para crear un plugin base con una minima de funcionalidad.

Esta extensión abrirá una ventana con la información referente a los autores, participaciones y software en el que se ha basado gvSIG.

Esquema del proyecto de ejemplo.

Clases y ficheros utilizados

EjemploExtension.java

Se necesita como mínimo una clase java. En nuestro caso “EjemploExtension.java”, esta clase implementa la interfaz com.iver.andami.plugins.Extension con los métodos:

inicializar(); Que es invocado cuando se inicializa la extensión.

execute(String actionCommand): El String que se pasa como parámetro indica que comando en concreto se ejecuta, de esta forma una misma extensión puede contener varios comandos.

isEnabled(): Si devuelve true el icono o item de menú desplegable se quedan como habilitados  y  si por el contrario devuelve false se queda como deshabilitados.

isVisible(): Si devuelve true el icono o item de menú se visualiza y si es false se oculta.

FPanelAbout.java

Es un ejemplo de como añadir una ventana y su contenido a Andami, es un JPanel que implementa com.iver.andami.ui.mdiManager.View.

about.htm

Página HTML con la información que se mostrará en la ventana que añadimos a Andami, este archivo se utiliza para poder llevar a cabo el ejemplo.

config.xml

Archivo XML que sirve para configurar todas las extensiones que contiene el plugin.

 

<?xml version="1.0" encoding="ISO-8859-1"?>

<plugin-config>

      <libraries library-dir="."/>

            <resourceBundle name="text"/>

      <extensions>

                        Nombre complete de la clase que implementa Extension.

            <extension class-name="com.iver.ejemplo.EjemploExtension"

                                    Descripción de la extension.

description="Extensión de ejemplo que muestra una ventana nueva con información en html."

                                    Poner la extensión en modo activo o no activo(Para ser cargada debe estar activa).

active="true">

                                    Ruta en el menu desplegable.

                  <menu text="Archivo/ejemplo"

Tooltip del item.

                  tooltip="ejemplo"

                                   Comando en concreto, ya que pueden haber varios en una misma extensión.

action-command="EJEMPLO"

                                   Icono que se mostrara en el menu desplegable.

icon="images/ejemplo.png" />

                                                           Nombre de la barra de herramientas en la que añadimos el botón.

                  <tool-bar name="Herramientas">

                                                                       Icono que se mostrara en el botón.

                        <action-tool icon="images/ejemplo.png"

                                                           Comando que se ejecutará.

                             action-command="EJEMPLO"

Tooltip del botón.

tooltip="ejemplo"

                                                           Texto que se mostrará cuando el botón esté deshabilitado.

                             enable-text="debería de estar activada" last="true"/>

                  </tool-bar>

            </extension>

      </extensions>

</plugin-config>

Directorio images

Directorio en el que almacenamos las imagenes que vamos a utilizar para el plugin.

build.xml

Es un archivo Ant con todas las tareas necesarias para copiar el plugin con sus extensiones, imágenes y archivos necesarios al directorio de Andami donde le corresponde, para que este reconozca que existe un plugin que debe cargar.