View Full Version : Desktop: close and minimize window events
andreym
17 Jul 2009, 5:40 AM
Hello!
I am using Desktop API.
How can I distinguish between window closing (x) and minimize events (_) if they both fire Events.Hide ?
I need to release some resources if window is closed (i.e. removed from desktop) and i don't need to release them if it is just minimized.
Thanks in advance!
brunonandolpho
23 Jul 2009, 8:29 AM
Hi,
i have the same problem and I solve like below:
every new Window, I add a Listener to get the Event.Hide. the Listener Know your Window
The trick is when i got the event.hide, i saw if the Window is minimized... if not, is because the "close" events was called...so, you get the desktop and remove that window
public class MyWindow extends Window{
public MyWindow () {
super();
this.setMonitorWindowResize(true);
this.setSize("98%", "98%");
setIconStyle("icon-grid");
// add the listener
this.addListener(Events.Hide, new ListenerCloseWindow(this));
}
public class ListenerCloseWindow extends WindowListener{
private MyWindow myWindow;
public ListenerCloseWindow(MyWindow myWindow) {
this. myWindow = myWindow;
}
public void handleEvent(WindowEvent e) {
EventType type = e.getType();
if (type == Events.Hide){
//get the Desktop Manager
Desktop desktop =AplicacaoRoot.getInstance().getDesktop();
// if not is minimize, remove the window from the Windows List
if(myWindow.getData("minimize") == null)
desktop.getWindows().remove(myWindow);
}
}
}
}
andreym
23 Jul 2009, 10:43 PM
Thanks, brunonandolpho!
Offtop:
I thought that when window is closed it is removed from desktop and garbage collected. As I see now I was wrong.
Is it true that I must always listen to close event and call desktop.removeWindow(window) manually?
brunonandolpho
24 Jul 2009, 7:34 AM
It is true that the window is not removed from the desktop list windows when the hide event is fired...so, I call desktop.removeWindow(window) manually to remove that..I put that because in my application, i migrate from 1.2.4 to 2.0...and in 1.2.4 the evenst.close works...
so, if i want the same stuff from my application in v 2.0, i need to call deskto.removeWindow to complete the action of Desktop class...
Powered by vBulletin® Version 4.1.5 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.