gvSIG bugs #3561

No se pueden cerrar de forma uniforme ventanas creadas con Andami (addWindow) y con WindowManager (showWindow)

Added by Cesar Martinez Izquierdo almost 9 years ago. Updated over 8 years ago.

Status:Closed% Done:

0%

Priority:NormalSpent time:-
Assignee:Joaquín del Cerro Murciano
Category:-
Target version:2.3.0-2414 (rev. org.gvsig.desktop-2.0.120)
Severity:Minor Add-on version:
gvSIG version:2.2.0 Add-on build:
gvSIG build: Add-on resolve version:
Operative System: Add-on resolve build:
Keywords: Proyecto:
Has patch: Hito:
Add-on name:Unknown

Description

org.gvsig.tools.swing.api.windowmanager.WindowManager proporciona una forma alternativa de crear ventanas en gvSIG, que permite elegir el tipo de ventana a crear. Sin embargo, las ventanas creadas de esta forma no se pueden cerrar usando el método closeWindow() del MDIManager de Andami. Esto es debido a que el showWindow() crea un nuevo IWindow que envuelve al JPanel que se le pasa y es este nuevo IWindow el que se registra en Andami. La forma de cerrar estas ventanas es usando el método setVisible(false) sobre el JPanel, pero esto significa que hay 2 formas incompatibles de cerrar una ventana y que no se sabe cuál se debe usar si no se sabe cómo se creó la ventana (por ejemplo si la ventana se crea desde una clase pero se cierra desde otra independiente).

Para solucionarlo, se podría añadir un método closeWindow() en la clase WindowManager, o bien se podría modificar el closeWindow existente en Andami. Para implementarlo, habría que crear una interfaz (p. ej. WrapperWindow) que deben implementar los IWindow que crea el WindowManager.showWindow.

Si la solución se implementa en Andami (en el método closeWindow(IWindow), se comprobaría si se trata de un IWindow registrado, o bien si alguno de los WrapperWindows registrados contiene el IWindow que se quiere cerrar.


Related issues

Related to Application: gvSIG desktop - gvSIG bugs #4014: Añadir capa de BBDD, cerrar ventana "parametros de conexi... Closed 01/16/2016

Associated revisions

Revision 42601
Added by Joaquín del Cerro Murciano over 8 years ago

refs #3561, añadido soporte a coreplugin para que poniendo setVisible a false en el panel de una ventana se cierre.

Revision 42613
Added by Joaquín del Cerro Murciano over 8 years ago

refs #3561, soporte para cerrar los dialogos de andami poniendo visible a false el panel que lo forma.

Revision 42636
Added by Joaquín del Cerro Murciano over 8 years ago

refs #3561, #4014, al parecer en relacion al ticket #3561 meti mas codigo del que tocaba, que elimino ahora, y provocaba un efecto extraño cuando un dialogo mostraba otro dialogo.

Revision 42637
Added by Joaquín del Cerro Murciano over 8 years ago

refs #3561, añadido un comentario al javadoc del closeWindow.

Revision 42638
Added by Joaquín del Cerro Murciano over 8 years ago

refs #3561, modificado el FrameWindowSupport para que una ventana mostrada con el WindowManager pueda cerrarse con el closeWindow.

History

#1 Updated by Joaquín del Cerro Murciano almost 9 years ago

  • Target version changed from 2.3.0-2400 (rev. org.gvsig.desktop-2.0.102) to 98

#2 Updated by Joaquín del Cerro Murciano over 8 years ago

  • Status changed from New to Fixed

Al final en lugar de añadir ningun interface o metodo para hacer que las ventanas presentadas con el WindowManager se puedan cerrar "al modo de andami", lo he hecho al reves por que ha sido mucho mas simple. Si ponemos a setVisible(false) una ventana abierta con andami se cierra correctamente como las creadas con el WindowManager.

#3 Updated by Cesar Martinez Izquierdo over 8 years ago

Si lo entiendo bien, significa que el closeWindow del MDIManager sigue sin funcionar para las ventanas creadas con WindowManager.
Si es así, estaría bien marcar este método como deprecated y poner en el Javadoc que la nueva forma recomendada (= que funciona en todos los casos) de cerrar las ventanas es haciendo un setVisible(false) sobre la ventana.

#4 Updated by Joaquín del Cerro Murciano over 8 years ago

  • Target version changed from 98 to 2.3.0-2414 (rev. org.gvsig.desktop-2.0.120)

#5 Updated by Joaquín del Cerro Murciano over 8 years ago

  • Related to gvSIG bugs #4014: Añadir capa de BBDD, cerrar ventana "parametros de conexion" cierrar "añadir capa". added

#6 Updated by Joaquín del Cerro Murciano over 8 years ago

Cesar Martinez Izquierdo wrote:

Si lo entiendo bien, significa que el closeWindow del MDIManager sigue sin funcionar para las ventanas creadas con WindowManager.
Si es así, estaría bien marcar este método como deprecated y poner en el Javadoc que la nueva forma recomendada (= que funciona en todos los casos) de cerrar las ventanas es haciendo un setVisible(false) sobre la ventana.

Hola Cesar, no habia visto tu comentario.
La idea es que se puiesen cerrar las ventanas tanto con setVisile(false), como con el closeWindow, hay demasiado codigo que usa el closeWindow como para que este deje de funcionar.

He añadido codigo para que funcione tambien el closeWindow.

Apesar de que funcionen los dos, lo ideal es acostumbrarse a usar siempre que sea posible el WindowManager ya que nos permite hacer codigo que podemos meter en una libreria y no dependen de gvSIG (aplicacion) para que funcione. Es una buena practica usarlo incluso en los plugins, ya que no es algo extraño que codigo que empieza en un plugin acabe llevandose a una libreria y si se tiene la costumbre de usar el WindowManager acaba siendo mas facil.

#7 Updated by Álvaro Anguix over 8 years ago

  • Status changed from Fixed to Closed

Also available in: Atom PDF