Herramientas Personales
Usted está aquí: Inicio Desarrollo Guía de extensiones (versión desarrollo) Plugins Raster Tools Funcionalidades Filtros Extensión de gvSIG
Acciones de Documento

Extensión de gvSIG

por Victor AcevedoÚltima modificación 10/06/2008 16:51

Comportamiento del interfaz general de filtros

Los filtros de la lista se mantienen ellos mismos el tipo de dato. Cuando se añade un filtro este añade del tipo adecuado sin necesidad de intervenir.

El orden de aplicación de los filtros es importante, ya que ordenes distintos producen resultados distintos. Si se usa el interfaz general de filtros implementado en esta extensión el orden de la lista de filtros será el seleccionado por el usuario en el interfaz. Cada vez que se aplica o acepta se construye toda la lista de filtros con los parámetros que se hayan introducido nuevos o modificado.

El uso de la lista puede resumirse de esta forma:

  • Añadir un filtro desde el interfaz general no produce problemas, ya que se reconstruye la lista completa cada vez. El parámetro insertMode deberá tener el valor ADD_END para que se añadan los filtros en el orden especificado en el GUI.
  • Si se quiere añadir un filtro (solo para visualización) desde un interfaz exterior al interfaz general de filtros se hará con el valor insertionMode a MODIFY_LAST para que busque el último filtro de ese tipo que ya esté aplicado y lo modifique. En caso de no haber ninguno en la lista se comporta como ADD_END.
  • Cuando abrimos la interfaz general de filtros, si ya existe algún filtro aplicado en la visualización se cargará automáticamente en la lista del GUI y seleccionada la opción de "Solo en visualización".
  • Cuando marcamos la opción "Generar capa" se creará una lista de filtros para generar una capa nueva con ella. Al darle a aceptar el cuadro se cerrará creando una capa nueva con los filtros aplicados. Este estado no puede recuperarse al volver a abrir el cuadro. Solo si le damos a aplicar se creará una capa nueva y podremos volver a generar otra sobre los filtros que ya teníamos en el GUI.
  • Marcar la opción "Generar capa" no significa que deshabilitemos los filtros que haya en visualización cargados. Habrá que especificar esto explícitamente si queremos que ocurra, es decir, habrá que sacarlos de la lista y aplicar.

Recuperar el estado anterior de la lista de filtros

Cuando abrimos el dialogo de filtros aparece una preview de la aplicación de estos. Sobre esta preview se aplica la lista de filtros que hay en ese momento cargada. Cuando realizamos una modificación de parámetro de un filtro cargado esto tiene repercusión instantánea en la preview. La lista de filtros aplicados es la que se recupera del render de la vista de gvSIG. En cada repintado de la preview a la lista de filtros se le aplicarán las siguientes operaciones:

  • Guardar el estado actual de la lista (pushStatus)
  • Borrar la lista (clear)
  • Cargar la lista con los filtros y parámetros del dialogo (addFilter)
  • Visualizar preview
  • Restaurar el estado inicial de la lista (popStatus)

Para poder aplicar estas operaciones la lista de filtros debe poder soportar las operaciones de salvar el estado actual y recuperar un estado anterior. (pushStatus y popStatus).

Estas mismas operaciones son las aplicadas al cancelar el dialogo. Se extraerá de la lista de filtros el estado inicial cuando se abrió el dialogo.

Creación de la lista de filtros del interfaz

Cuando abrimos el diálogo de filtros aparece un listado de los filtros que gvSIG puede manejar. Estos están registrados mediante puntos de extensión. Para crear el árbol de filtros haremos las siguientes operaciones:

  • Crear un RasterFilterListManager. Este en su constructor consulta los filtros registrados en los puntos de extensión y los agrega a un array.
  • Pedirle a este manager la lista de filtros con getRasterFilterList() (Nota: Solo devuelve clases, no objetos).
  • Recorrer los filtros devueltos e intentar crear un objeto con esa clase.
  • En caso de éxito, crearemos el grupo del filtro si no está creado ya, este grupo se consulta con el método getGroup(). Cada filtro puede devolver más de una entrada en el menú con el método getNames() y por cada elemento insertaremos una entrada en el árbol con addEntry(nombre_i18n, grupo, nombre_interno).

Un filtro puede tener más de una entrada en el árbol.

Incremento de la tarea de procesado

Para la barra de progreso utilizamos el objeto IncrementableTask de la librería libUIComponents. Este es un componente general para visualizar el incremento de una tarea. Tiene un interfaz IIncrementable con los métodos necesarios para actualizar el panel de incremento. IncrementableTask consultará las funciones de IIncrementable cada 100ms. En este caso el proceso de calculo de recorte debe implementar este interfaz y ser pasado a IncrementableTask en su creación.

Desde el proceso de recorte (CuttingProcess) capturaremos los eventos de la ventana de incremento para poder responder a la acción de cancelado del proceso. Para esto, nuestro CuttingProcess implementa el interfaz IncrementableListener que tiene los métodos para dar respuesta a este y otros eventos.

« Enero 2009 »
Do Lu Ma Mi Ju Vi
123
45678910
11121314151617
18192021222324
25262728293031
 

Hecho con Plone CMS, el Sistema de Gestión de Contenidos de Fuentes Abiertos

Este sitio cumple con los siguientes estándares: