Andami es el framework que utiliza gvSIG para componer la aplicación. Principalmente provee dos tipos de servicios, por un lado de gestión y carga de plugins y por otro, la gestión de ventanas que componen el interfaz de usuario.
En este punto vamos a centrarnos un poquito en la gestión de plugins. Andami proporciona un lanzador para la aplicación que inicializa el sistema de plugins, y se encarga de cargar los plugins que están instalados en la aplicación. Un plugin es una unidad funcional que puede proveer:
Normalmente, en una instalación de gvSIG, encontraremos una carpeta gvSIG/extensiones. Esta carpeta contiene dentro los distintos plugins que están instalados en la aplicación. Cada plugin está contenido en una carpeta, y dentro de esta, nos encontraremos, siempre, los ficheros:
config.xml. Es obligatorio que exista. Identifica la carpeta como un plugin. En el encontraremos información sobre:
Dónde encontrar las clases de ese plugin
Truco
Aunque actualmente no existe documentación relacionada con esto para la versión 2 de gvSIG, en general, la documentación existente para gvSIG 1, será válida. Puede encontrar esta información en la descripción del fichero config.xml que hay para gvSIG 1.
Que clases deben ser cargadas como extensiones (IExtension).
Si ese plugin depende de algún otro plugin
Qué opciones de menú añade el plugin a la aplicación
Qué barras de herramientas y botones añade el plugin.
package.info, que informa sobre la versión, nombre, identificador o descripción del plugin. Sería algo así como el contenedor de los metadatos del plugin, y nos permite identificarlo para poder actualizarlo o reinstalarlo.
Adicionalmente podemos encontrarnos una carpeta theme, en la que está la configuración del splash de la aplicación, iconos de las ventanas o colores de fondo.
Aunque el mecanismo para añadir nueva funcionalidad a gvSIG es aportando nuevos plugins, estos a su vez contendrán una o más extensiones, siendo estas extensiones las que implementarán la funcionalidad a aportar. Así pues, tendremos que un plugin contendrá extensiones.
Relacionado con el manejo de plugins las principales piezas que nos vamos a encontrar son:
De estas entidades nos vamos a detener un poco más en la interface IExtension- Esta es la interface que deberemos implementar para poder añadir un nuevo botón u opción de menú. En esta interface nos encontraremos los métodos: