Salut,

j'ai cherché sur internet mais je n'ai pas trouvé une réponse claire. Espérant la trouvée ici .
j'ai une application de type plugin qui ajoute un bouton dans un menu dans Eclipse. En cliquant sur ce bouton une fenêtre s'ouvre, voici le code de création de cette fenêtre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
final Display display = PlatformUI.getWorkbench().getDisplay();
      final Shell shell = new Shell(display, SWT.APPLICATION_MODAL 
         | SWT.CLOSE
         | SWT.MAX
         | SWT.RESIZE);
...
final Button report = new Button(composite, 0);
      report.setText("report");
      report.addSelectionListener(new SelectionAdapter()
      {
         @Override
         public void widgetSelected(final SelectionEvent event)
         {
            Report.reportShell(shell);
         }
      });
...
while (!shell.isDisposed())
      {
         if (!display.readAndDispatch())
         {
            display.sleep();
         }
      }
"report" est un bouton permettant de lancer une autre fenêtre; la fenêtre de génération de rapport.

Report.reportShell(shell) est la méthode permettant la création de la fenêtre de génération du rapport.
Voici le code de la fenêtre de génération:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
public static final void reportShell(final Shell parent)
   {
      final Shell reportShell = new Shell(parent);
      ...
      reportShell.pack();
      reportShell.open();
   }
Cette dernière contient un bouton permettant la génération d'un rapport XML.Tout fonctionne bel et bien mais après la fermeture de la fenêtre de génération de rapport. une exception a été levée:
org.eclipse.swt.SWTException: Widget is disposed
...
La ligne qui pose le problème est : if (!display.readAndDispatch()) du boucle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
while (!shell.isDisposed())
      {
         if (!display.readAndDispatch())
         {
            display.sleep();
         }
      }
Est-ce quelqu'un peut m'aider concernant ce point?

Merci d'avance