El wizard para aplicar transformaciones se podrá instanciar desde cualquier punto de la aplicación invocando el método createWizard del DataTransformManager del siguiente modo:
DataTransformWizard dataTransformWizard = DataTransformLocator.getDataTransformManager().createWizard();
Este código devolverá el wizard por defecto que ha sido creado y registrado en gvSIG para poder aplicar transformaciones. Más adelante se explica cómo crear un nuevo wizard y reemplazar al que ya existe en gvSIG.
El wizard por defecto está basado en el wizard que ya existe en Andami. Todas las capturas de pantalla que se hacen a continuación se han hecho sobre ese wizard por lo que si se modificase, el aspecto que presentaría sería distinto.
La interfaz DataTransformWizard tiene un método getWindow que devolverá una IWindow que se puede visualizar en gvSIG. Por lo tanto desde cualquier punto de la aplicación se podrá abrir el wizard de las transformaciones con tan sólo ejecutar el código:
DataTransformWizard dataTransformWizard = DataTransformLocator.getDataTransformManager().createWizard();
PluginServices.getMDIManager().addWindow(dataTransformWizard.getWindow());
Este es un manual para el desarrollador, pero para poder entender algunos de los métodos que presentan las interfaces de las transformaciones es necesario tener una visión clara del problema al que pretenden dar solución y por ello, se han incluído unas cuantas capturas de pantalla del wizard por defecto que existe en gvSIG.
En la primera ventana el wizard mostrará todas las transformaciones que hayan sido registradas. Al hablar de "transformaciones" nos estamos refiriendo a todas las transformaciones que se han registrado en gvSIG junto con su interfaz de usuario o lo que es lo mismo, todas las clases que implementen el interfaz DataTransformGui y que se han resgistrado mediante el DataTransformManager. Más adelante se comenta cómo crear y registrar una transformación y su interfaz de usuario.
El usuario deberá elegir la transformación que desee aplicar y el resto del wizard se comportará en función de la transformación elegida en esta primera ventana.
Al pulsar en el botón siguiente se abrirá una nueva ventana en la que se tendrá que seleccionar el DataStore sobre el que se va a aplicar la transformación. Esta ventana también será común a todas las transformaciones ya que una transformación se tiene que aplicar sobre al menos un origen de datos.
Tras pulsar en siguiente se abrirán los paneles asociados a una transformación concreta (más adelante se comenta cómo se asocia un panel a una transformación). En función de la transformación que se elija en la primera ventana del wizard estos panales serán de una forma u otra ya que los parámetros asociados a una transformación no son los mismos que los parámetros de otra transformación.
Una vez que hayan pasado todas las ventanas particulares de la transformación elegida, aparecerá una ventana en la que se podrá seleccionar lo que se desea hacer con la transformación (cancelar el proceso, aplicar sobre una capa, cargar en una vista si se trata de una tabla...). La siguiente figura muestra un ejemplo de la última ventana.
En el ejemplo hemos aplicado una transformación sobre una tabla, por lo que podremos elegir la vista sobre la que queremos que se cargue como una capa. Para que esto sea así, la transformación resultante tiene que tener un atributo de tipo geometría.
Si se quiere modificar el wizard por defecto, se tiene que crear una nueva clase que implemente el interfaz DataTransformWizard y se tiene que registrar en el DataTransformManager mediante el método registerDataTransformWizard que tendrá un único parámetro con una clase que implemente el nuevo wizard. En el ejemplo se asume que existe una clase MyDataTransformWizard que implementa el interfaz:
DataTransformLocator.getDataTransformManager().registerDataTransformWizard(MyDataTransformWizard.class);
Un wizard puede verse como un conjunto de formularios que se utilizan para realizar una acción. El wizard de transformaciones debe proporcionar un interfaz de usuario para poder aplicar una transformación. Este interfaz se proporciona mediante el método DataTransformWizard.getWindow()_, que devuelve un objeto de tipo IWindow que gvSIG es capaz de visualizar.
Pero además de un interfaz de usuario, el wizard es un objeto que puede ser utilizado por todos los panales lo forman para poder recuperar la información que se va seleccionando. Por ejemplo, si en la primera ventana del wizard se elige un DataStore, éste debería poder ser utilizado en las siguientes ventanas para por ejemplo, añadir un combo con los nombres de los campos del origen de datos. Es por ello que tiene los siguientes métodos: