Voilà une petite question que je me pose :

Dans une application SWT :
On crée un shell principal et des shell "secondaires" pour les Dialog par exemple...

Prenons un Dialog avec :
- 1 image
- 2 panneaux
- 2 boutons

Dans une méthode privée, je crée et j'initialise tous ces éléments.

La méthode "open" que j'utilise comme un setVisible(true) en SWING est la suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
public void open() {
		try {
			dialogShell.open();
			Display display = dialogShell.getDisplay();
			while (!dialogShell.isDisposed()) {
				if (!display.readAndDispatch())
					display.sleep();
			}
		} catch (Exception e) {
			e.printStackTrace();
			logger.error("error", e);
		}
	}
le "dialogShell" est le shell que j'utilise pour afficher la dialog.

Quand je demande de fermer la dialog, j'appelle une méthode "close" comme celle qui suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
public void close() {
		dialogShell.dispose();
	}
Etant donné que les panneaux et autres boutons ont été créés en passant le dialogShell en paramètre; je suppose que je ne doit pas les désallouer moi-même.

Mais qu'en est-il des images ?

En fait, comment savoir ce qu'il écrire dans la méthode "close" de mes interfaces graphiques qui étendront des Dialog ou dans la méthode "dispose" surchargée des interfaces qui étendront des Composite ?

Comment être sur et certain que tout à bien été désallouer lorsqu'on ferme une Dialog ou qu'on désire effacer un Composite ?


Merci d'avance pour vos réponses !