[Gvsig_desarrolladores] Mensajes en la status bar
Jorge Sanz
jsanz en prodevelop.es
Jue Jul 26 14:37:16 CEST 2007
Bueno, ya está, doy mi solución por si le sirve a alguien:
Primero, crear una clase que herede de Thread que lanzará la tarea, en el constructor se pasa el texto de la barra de estado a restaurar, ya que el temporal no me ha funcionado y la restauración del texto hay que hacerla al finalizar la tarea (en este caso un sleep de 10 segundos).
public class LoadLayerThread extends Thread{
private String statustext;
public LoadLayerThread(String statusText){
this.statustext = statusText;
}
public void run(){
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
finally{
PluginServices.getMainFrame().getStatusBar().setInfoText(statustext);
PluginServices.getMDIManager().restoreCursor();
}
}
}
A continuación, en el proceso que lanzará el hilo, en mi caso al presionar un botón de una barra de herramientas:
if (actionCommand.compareToIgnoreCase("CARGAR_CALLES") == 0) {
manager.setWaitCursor();
String statuString = statusbar.getStatusText();
statusbar.setInfoText("Mi texto en la barra de estado"));
PluginServices.backgroundExecution(new LoadLayerThread(statuString));
}
He utilizado backgraundExecution que recibe un Runnable en lugar de un AbstractMonirableTask pero para el caso es lo mismo ya que ambas necesitan un método run().
No es que me guste mucho ya que faltaría gestionar el icono (no tiene por que estar la "i" de información) por lo que sería deseable que el mecanismo de textos temporales en la barra de estado funcionara (aunque también es posible que sea yo el que no lo está haciendo bien, claro).
Y bueno, eso es todo.
Gracias por la ayuda.
Un saludo
Jorge Gaspar Sanz Salinas
Ingeniero en Geodesia y Cartografía
Prodevelop S.L. - Valencia - España
Tlf.: 96.351.06.12 - Fax: 96.351.09.68
jsanz[en]prodevelop[punto]es
http://www.prodevelop.es <http://www.prodevelop.es/>
________________________________
De: gvsig_desarrolladores-bounces en runas.cap.gva.es en nombre de Vicente Caballero Navarro
Enviado el: jue 26/07/2007 13:21
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] Mensajes en la status bar
Yo he probado esto y me ha funcionado:
MDIManager manager = PluginServices.getMDIManager();
NewStatusBar statusbar = PluginServices.getMainFrame().getStatusBar();
manager.setWaitCursor();
statusbar.setInfoText("Mi texto en la barra de estado");
PluginServices.cancelableBackgroundExecution(new EvalOperatorsTask());
manager.restoreCursor();
Siendo EvalOperatorsTask una extensión de AbstractMonitorableTask.
Jorge Sanz escribió:
Hola Chema,
No, no estoy lanzando un hilo aparte. El proceso largo es la carga de una capa vectorial algo pesada por código; es un método en la misma clase de la extensión directamente desde el "execute()".
He probado el invalidate/doLayout/repaint pero tampoco funciona.
Entiendo entonces que para que se provoque el repintado debo lanzar la carga en un hilo a parte y al acabar éste, provocar la restauración tanto del cursor como del texto de la statusbar.
Muchas gracias, un saludo
Jorge Gaspar Sanz Salinas
Ingeniero en Geodesia y Cartografía
Prodevelop S.L. - Valencia - España
Tlf.: 96.351.06.12 - Fax: 96.351.09.68
jsanz[en]prodevelop[punto]es
http://www.prodevelop.es <http://www.prodevelop.es/> <http://www.prodevelop.es/> <http://www.prodevelop.es/>
________________________________
De: gvsig_desarrolladores-bounces en runas.cap.gva.es en nombre de Jose Manuel Vivó (Chema)
Enviado el: jue 26/07/2007 12:21
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] Mensajes en la status bar
Hola Jorge:
¿'miprocesolargo' se lanza en un thread distinto?, puede que el problema sea
que el evento de pintado de la barra de estado no llegue a ejecutarse porque
tu proceso no 'libera' el thread principal.
De todas formas, intenta antes un 'invalidate/doLayout/repaint a ver si
funciona.
Un Saludo.
Chema.
El Jueves 26 Julio 2007 11:16, Jorge Sanz escribió:
Hola Vicente,
Si, eso también lo probé, tomaba el texto existente, utilizaba ese método y
luego lo restauraba (vaya lo que hacen los métodos setXXXTextTemporal() y
restaurarTexto()) pero tampoco... :|
¿Puede faltar algún método que refresque la barra de estado o algo del
estilo?
Un saludo
Jorge Gaspar Sanz Salinas
Ingeniero en Geodesia y Cartografía
Prodevelop S.L. - Valencia - España
Tlf.: 96.351.06.12 - Fax: 96.351.09.68
jsanz[en]prodevelop[punto]es
http://www.prodevelop.es <http://www.prodevelop.es/> <http://www.prodevelop.es/> <http://www.prodevelop.es/>
-----Mensaje original-----
De: gvsig_desarrolladores-bounces en runas.cap.gva.es en nombre de Vicente
Caballero Navarro Enviado el: jue 26/07/2007 8:46
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] Mensajes en la status bar
Hola Jorge.
Prueba con statusbar.setInfoText("Mi texto en la barra de estado"); en vez
del método setInfoTextTemporal.
Jorge Sanz escribió:
Hola,
Estoy intentando mostrar un mensaje temporal en la barra de estado
(durante un proceso largo) pero no me está funcionando.
El código es muy simple, algo como:
********************
MDIManager manager = PluginServices.getMDIManager();
NewStatusBar statusbar = PluginServices.getMainFrame().getStatusBar();
manager.setWaitCursor();
statusbar.setInfoTextTemporal("Mi texto en la barra de estado"));
miprocesolargo();
statusbar.restaurarTexto();
manager.restoreCursor();
********************
La clase MDIFrame utiliza estos métodos también para mostrar en la barra
de estado los tooltips de los botones de las barras de herramientas y
funciona sin hacer nada más, así que me pierdo algo...
¿Alguna ayuda?
Un saludo
Jorge Gaspar Sanz Salinas
Ingeniero en Geodesia y Cartografía
Prodevelop S.L. - Valencia - España
Tlf.: 96.351.06.12 - Fax: 96.351.09.68
jsanz[en]prodevelop[punto]es
http://www.prodevelop.es <http://www.prodevelop.es/> <http://www.prodevelop.es/> <http://www.prodevelop.es/>
________________________________
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en runas.cap.gva.es
http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
--
=============
Jose Manuel Vivó (Chema)
Equipo de gvSIG
IVER T.I. S.A.
C/ Salamanca, 50-52
46005-Valencia
Tlf.+34963163400
Spain
www.iver.es <http://www.iver.es/>
www.gvsig.com <http://www.gvsig.com/>
________________________________
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en runas.cap.gva.es
http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
--
Vicente Caballero Navarro
Grupo desarrollo gvSIG.
IVER TI S.A.
C/ Lérida, 20
46005-Valencia
Tlf.+34963354983
www.iver.es <http://www.iver.es/>
www.gvsig.com <http://www.gvsig.com/>
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre : no disponible
Tipo : application/ms-tnef
Tamaño : 10334 bytes
Descripción: no disponible
Url : http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20070726/49fafb24/attachment-0001.bin
Más información sobre la lista de distribución gvSIG_desarrolladores