Strumenti personali
Tu sei qui: Portale Desarrollo Manual para desarrolladores gvSIG v1.1 GVSIG Introducción
Azioni sul documento

Introducción

creato da Grupo gvSIGUltima modifica 01/06/2010 22:52

En este capítulo veremos cómo se organiza internamente la aplicación gvSIG. Empezaremos con el cuerpo principal (appgvSIG) y veremos cómo se ha ido ampliando la funcionalidad de ese cuerpo principal a base de extensiones.

De hecho, appgvSIG es en sí un plugin más de Andami, que contiene las extensiones que definen las funcionalidades básicas de gvSIG.

GvSIG se organiza internamente de manera parecida a como lo hace externamente. Es decir, existen clases que controlan el proyecto de gvSIG, y este proyecto se compone de varios tipo de documentos (Vistas, Mapas y Tablas, aunque se puede ampliar con otros tipos de documentos).

Los packages se organizan según esta estructura:

NOTA: La estructura puede parecer un tanto arbitraria (y de hecho, lo es :-( ). Pero es la que hay, y voy a intentar describir un poco los packages. En el futuro, seguramente habrá que reorganizarla.

  • Las clases que implementan IExtension van en el package raiz: com.iver.cit.gvsig. Esto es sólo algo que hemos seguido los desarrolladores, y suele ser una buena práctica. De esta forma, es más facil encontrar cuales son los puntos de entrada a las opciones de menu, botones, etc.
  • El package com.iver.cig.gvsig.project es un buen punto de entrada para adentrarse en gvSIG. En teoría, sigue una organización influída por la organización por documentos dentro de un proyecto. Las clases más importantes ahí con Project.java y ProjectFactory.java. La primera representa el proyecto de gvSIG, y el método estático createFromXML() es el punto de entrada para ver cómo se lee un archivo .gvp (proyecto de gvSIG). El paso contrario, crear un fichero .gvp se hace en el método writeProject de la extensión ProjectExtension, y llama al método getXMLEntity() de la clase Project.
  • Dentro del package project, está el package com.iver.cit.gvsig.project.documents. Ahí encontraremos las clases ProjectDocument y ProjectDocumentFactory. La primera es la clase de la que heredan el resto de documentos (puedes seleccionarla y usar la tecla F4). La segunda es la encargada de crear los documentos, y gestionar los posibles documentos que en el futuro pueden ampliar este modelo de objetos, por ejemplo con vistas en 3D.

En el resto de packages encontramos las clases relacionadas con el layout (mapas), view (vistas) y table (tablas). Dentro de contextMenu, los menús de contexto y en los otros paquetes, algunas excepciones (exceptions) y las clases de interfaz de usuario para añadir capas (gui).

El resto de paquetes no siguen una lógica determinada, o al menos yo no la he encontrado. Seguramente en el futuro se reorganizarán. Sin embargo, por si acaso alguna vez necesitas buscar código, es posible que te interese mirar com.iver.cit.gvsig.gui.layout. Dentro encontrarás la clase Layout, responsable de los mapas preparados para imprimir, y las clases dentro del paquete fframes, donde podrás ver todo lo que se puede añadir a un layout (vistas, leyendas, símbolos de norte, texto, gráficos, escala, etc). Esta parte está a la espera de un refactoring que le permita ampliarse de manera cómoda desde plugins externos.

Una clase interesante para empezar a investigar cuando se trabaja a nivel de proyecto es la clase com.iver.cit.gvsig.ProjectExtension. Es el punto de entrada para las operaciones de crear un nuevo proyecto, cargar uno existente, guardarlo, etc.

Una vez presentado (de manera breve y con poca profundidad la estructura de paquetes), vamos a ver con algo más de detenimiento las partes principales de gvSIG. O al menos aquellas con las que es más probable que vayas a trabajar.


Sviluppato con Plone CMS, il sistema open source di gestione dei contenuti

Questo sito è conforme ai seguenti standard: