[Gvsig_desarrolladores] ayuda

Joaquin del Cerro jjdelcerro.gvsig en gmail.com
Mie Dic 21 17:49:08 CET 2011


El 17/12/11 17:09, Andres Felipe jama escribió:
>
> reciban cordial saludo.
> bueno mi duda es la siguiente:
> ¿ es posible llamar una extensión dentro de otra extensión?
> lo que quiero decir es que yo cree mi plugin y deseo llamar una extensión de gvsig dentro de mi extensión.si es posible por favor díganme como hacerlo.
> pienso llamarla al picar un botón de la extensión que ya he desarrollado gracias...
> muchas gracias por su colaboración su ayuda me ha sido muy útil gracias.
>
>
> Andrés Felipe Jama CuellarEstudiante de Ingeniería Topográfica  Universidad del Valle  		 	   		
>


Hola Andres,
voy a suponer que tienes un perfil de desarrollador con conocimientos de java y eclipse.
Si no es asi es que no he entendido bien lo que quieres hacer.

Lo primero es recomendarte que leas la parte de documentacion que hay
sobre andami[1], y mas concretamente sobre que son plugins y extensiones [2].

La documentacion que te reseño es para la version 1.0/1.1 de gvSIG pero esa
parte en concreto no ha cambiado mucho hasta las versiones actuales de la rama 1
de gvSIG.

De esa documentacion lo importante es quedarse con:

* Un plugin es la forma en la que se puede aportar nueva funcionalidad
   a la aplicacion gvSIG. Si tienes un gvSIG instalado y quieres
   añadir nuevos botones, menus o tipos de documento, tendras que crear
   tu plugin, y de alguna manera suministrarlo a tus usuarios para que lo
   instalen (en gvSIG 1.11 se introduce el addons manager para esto, aunque
   en esa version todavia esta en fase de pruebas),

* Un plugin tiene extensiones, que se corresponden con menus o barras de
   botones que gestiona la aplicacion y nos daran acceso a las funcionalidades
   del plugin.

* Un plugin puede acceder a funcionalidades de otro plugin si indica
   en su config.xml que depende de este otro.

Con estas pequeñas pinceladas a ver que es lo que quieres hacer.

Podrias querer meter un boton nuevo en la barra de botones de gvSIG
que llame a la extension de extAddEventTheme.
Para eso tendrias que crear un plugin nuevo que defina una nueva
barra de botones y llame en un boton suyo a la extension del plugin de AddEventTheme.
Para hacer esto asi de simple no haria falta programar nada. Bastaria con crear en
la carpeta gvSIG/extensiones de la instalacion de gvSIG (que es donde estan
los plugins instalados en gvSIG) una carpeta nueva y en ella dejar caer un
fichero config.xml con la definicion de menus o botones que queramos, la
dependencia con el plugin de AddEventTheme y que los botones llamen a estos.
Lo mejor que puedes hacer es mirar el config.xml de AddEventTheme.

El plugin de AddEventTheme ya biene incluido en la distribucion de gvSIG con lo que
no deberia hacerte falta bajar nada del repo de fuentes para hacer esto.

Esto, como primera aproximacion para empezar a entender como se monta un plugin
puede estar bien, pero aporta muy poca funcionalidad.

Con lo que dices tambien podrias ser que tu tienes tu propio plugin, y desde
una ventana propia de tu plugin quieres invovcar a una extension del plugin de
AddEventTheme. Para esto, tendras que en el config.xml de tu plugin añadir como
dependencia el plugin de AddEventTheme (como en el caso anterior).
Y en la accion asociada a tu boton (asumo que sabes de swing, como crear tu dialogo
y como poner un boton en el y asociarle acciones, eso es java+swing) invocar al
metodo "execute" de la extension de AddEventTheme. El comentario de Vicente iba por
esa linea...

(como muede ser interesante tener a mano el codigo de AddEventTheme, he añadido
en [3] un enlace para verlo).

Primero obtenemos la instancia de la extension de AddEventTheme

AddEventThemeExtension addEventTheme =
   (AddEventThemeExtension)PluginServices.getExtension(AddEventThemeExtension.class);

y luego invocamos al metodo execute de esta.

addEventTheme.execute("");

Ahora bien, hacer eso asi sin mas puede que no funcione.
Para que se ejecute la extension requiere que haya cargada en el proyecto alguna
tabla (de la que recoger los datos) y que haya activa una vista, en la que crear
la nueva capa.

Si te limitas a invocar al metodo execute sin tener en cuenta esos requerimientos
lo mas facil es que no se cumplan y falle. gvSIG utiliza los metodos isEnabled e
isVisible de la extension para saber si tiene que dejarte ejecutar o no la extension.
Tu podrias llamarlos para habilitar tu boton en funcion de ellos, o como minimo antes
de llamar al execute.

Con los requerimientos que tiene la herramienta addEventTheme puedes tener algun problema...
requiere que haya una vista activa... y ¿ esto que es ?
Pues que tiene que haber un documento vista y este estar en la cima de todas las ventanas
MDI que no sean de tipo paleta (resumiendolo). Si tu has creado una ventana integrada
con gvSIG te encontraras que cuando la extension de addEventTheme vaya a buscar la vista,
en lugar de encontrarla encontrar tu ventana, que no es una vista por lo que no
podras ejecutar la extension. Podrias probar a que tu dialogo sea un cuadro de dialogo
normal de swing o que fuese una ventana de tipo paleta, por ejemplo, o incluso mirar
el codigo que hay en el execute del addEventTheme y invocarlo directamente (es muy simple
ya que delega en otra clase pasandole la vista y demas datos que necesita).

De todos modos, de lo que leo en tus mensajes no tengo claro lo que estas haciendo...
hablas de bajarte el codigo del svn del addEventTheme...
¿ Y el codigo de tu plugin donde esta ?

Lo normal hablando de la 1.X es que te montes un workspace de eclipse con gvSIG y alli añadas
el proyecto con tu plugin (en versiones 2 y posteriores esto ya no es necesario, es mas,
realmente esta desaconsejado).
Bueno... no hay mucha documentacion de como montar el workspace de gvSIG 1.X pero si algunos
documentos. Te aconsejo que si no lo has hecho leas "Construir gvSIG desde el repositorio SVN"[4]
y la guia en PDF que en el se nombra. Ahora mismo hay algunos enlaces al SVN rotos por que estamos
cambiando de plataforma, pero a ver si a lo largo de mañana y pasado los actualizo.

Bueno, si con esto puedes comentar algo mas sobre lo que quieres hacer intentare concretar mas
y ayudarte.

Un saludo
Joaquin

[1]http://www.gvsig.org/web/docdev/docs/v1_0/gvsig/andami
[2]http://www.gvsig.org/web/docdev/docs/v1_0/gvsig/andami/plugins-extensiones
[3]https://devel.gvsig.org/redmine/projects/gvsig-desktop/repository/revisions/25160/entry/trunk/extensions/extAddEventTheme/src/com/iver/gvsig/addeventtheme/AddEventThemeExtension.java
[4]http://www.gvsig.org/web/docdev/building-from-svn/building-gvsig-from-svn






>
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección: http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores


-- 
--------------------------------------
Joaquin Jose del Cerro
Development and software arquitecture manager.
jjdelcerro en gvsig.com
gvSIG Association
www.gvsig.com


Más información sobre la lista de distribución gvSIG_desarrolladores