[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