[Gvsig_desarrolladores] <label-set>

César Martínez Izquierdo cesar.martinez en iver.es
Mie Jul 2 09:19:04 CEST 2008


Juan Guillermo Jordán Aldasoro escribió:
> Buenas
> 
> Estamos realizando una extensión para gvSIG y queremos escribir en la 
> barra de estado. Hemos leído en la documentación que existe un tag en el 
> fichero config.xml llamado <label-set> para este mismo propósito.
> 
> Hemos buscado en el workspace extensiones que hagan uso de esta 
> etiqueta, y sólo la hemos encontrado el config.xml de appgvSIG. Este es 
> un extracto del config.xml:
> 
>     <label-set 
> class-name="com.iver.cit.gvsig.project.documents.view.gui.View">
>         <label id="units" size="85"/>
>         <label id="x" size="126"/>
>         <label id="y" size="126"/>
>         <label id="4" size="110"/>
>         <label id="5" size="140"/>
>         <label id="projection" size="85"/>
>     </label-set>
>     <label-set class-name="com.iver.cit.gvsig.gui.layout.Layout">
>         <label id="units" size="80"/>
>         <label id="2" size="180"/>
>         <label id="3" size="180"/>
>         <label id="4" size="50"/>
>         <label id="5" size="50"/>
>     </label-set>
> 
> 
> Según la documentación, las etiquetas sólo son visibles cuando la vista 
> activa es instancia del nombre de la clase declarada en el atributo 
> class-name de label-set. Según esto, para que nuestras etiquetas fueran 
> visibles al trabajar con una vista, yo interpreto que habría que poner 
> como class-name la clase View o la clase Layout también. Es decir, en el 
> config.xml de nuestra extensión aparecería:
> 
>     <label-set 
> class-name="com.iver.cit.gvsig.project.documents.view.gui.View">
>         <label id="gpsx" size="126"/>
>         <label id="gpsy" size="126"/>
>     </label-set>
> 
> Posteriormente, deberíamos poder escribir en las etiquetas con:
> 
> PluginServices.getMainFrame().getStatusBar().setMessage("gpsx",valorx);
> PluginServices.getMainFrame().getStatusBar().setMessage("gpsy",valory);
> 
> 
> Esto no funciona, de hecho ni siquiera aparecen las etiquetas en la 
> barra de estado. He trazado el funcionamiento de la aplicación y he 
> encontrado que al abrir la vista, hace una llamada al método 
> setLabelSet(Label[] labels) de la clase 
> com.iver.andami.ui.mdiFrame.NewStatusBar. Este parámetro labels incluye 
> las etiquetas definidas en el config.xml de appgvSIG, pero ninguna de 
> las que define nuestro plugin.
> 
> ¿Alguien que haya usado esta característica <label-set> nos puede echar 
> un cable?
> 
> Gracias
> Juan G. Jordán Aldasoro
> Instituto de Robótica

Hola Juan,
tu interpretación del uso de label-set es correcta, pero hemos detectado 
un bug que provoca que no funciona como corresponde.

Sin embargo, hay una alternativa. Puedes añadir labels a la barra de 
estado desde una extensión. Para ello necesitas:
- crearte una clase Label que extienda de JLabel e implemente IControl 
(que está en libUI).
- Añadir las Label que necesites en el initialize() de tu extensión, 
usando el método
PluginServices.getMainFrame().addStatusBarControl(CoordsExtension.class, 
getXLabel());

Estas Labels estarán visibles y activas cuando lo esté tu extensión, 
igual que cualquier botón de la barra de herramientas.
Para escribir en ellas, puedes usar el mismo método que comentabas:

PluginServices.getMainFrame().getStatusBar().setMessage("gpsx",valorx);

El ID de una Label se toma de su método getName().

Espero que te sirva. Saludos,


-- 
César Martínez Izquierdo
Equipo de desarrollo gvSIG
http://www.gvsig.gva.es

IVER T.I.
C/ Lérida 20
46009 Valencia - Spain
http://www.iver.es


Este mensaje y sus archivos son confidenciales. No está permitida su reproducción o distribución sin la autorización expresa de "IVER Tecnologías de la Información". Si usted no es el destinatario previsto, queda desautorizado cualquier uso, acceso o copia de este mensaje. Si ha recibido este mensaje por error, por favor bórrelo e infórmenos por esta misma vía.




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