Question

Salut RCP les développeurs,

Je veux mettre en œuvre postWindowClose() dans mon ÉCLIPSE RCP application.

Avant de coder cette méthode, j'ai juste fait un petit test pour voir si quand je fermer mon application, la méthode est appelée, donc j'ai fait ça :

import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;


public class MainWindowControl extends WorkbenchWindowAdvisor{

    public MainWindowControl(IWorkbenchWindowConfigurer configurer) {
        super(configurer);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void postWindowClose() {
        // TODO Auto-generated method stub
        super.postWindowClose();
        System.out.println("close");
    }

}

Je m'attends à voir : close dans ÉCLIPSE console, mais il est toujours vide après la fermeture de l'application.

Tous les plugins requis sont ajoutés et je n'ai aucune erreur lors du lancement ou de la fermeture de l'application.

Alors, est-ce que j'ai raté quelque chose ?

Les raisons pour lesquelles implémenter cette méthode sont :

  1. Boîte de message : Are you sure you want to close the application
  2. Tuez tous les threads en cours d'exécution, mon application télécharge des fichiers et même lorsque je ferme l'application, les téléchargements en cours d'exécution continuent.Je souhaite les abandonner lors de la fermeture de l'application.

Modifier :

Mon cours de cycle de vie :

package upload.center.util;

import org.eclipse.e4.ui.workbench.lifecycle.PostContextCreate;
import org.eclipse.e4.ui.workbench.lifecycle.PreSave;

public class WindowLifeCycle {

 @PostContextCreate
 public void postContextCreate()
  {
    // TODO start up code here
     System.out.println("open");
  }

@PreSave
  public void preSave()
  {
     // TODO add shutdown code here
    System.out.println("close");
  }
}

Mon plugin.xml :

<product ....
<property
           name="windowLifeCycle"
           value="bundleclass://UploadCenter.Source/upload.center.util.WindowLifeCycle">
     </property>
 ...</product>

J'espère que je suis assez clair.

Ismaïl

Était-ce utile?

La solution

Pour une application Eclipse 4 (e4) pure, le conseiller de fenêtre du plan de travail (et les autres conseillers) ne sont pas utilisés.Vous utilisez le @PreSave méthode d’une classe de cycle de vie pour exécuter du code pendant l’arrêt.

public class LifeCycle
{
  @PostContextCreate
  public void postContextCreate()
  {
    // TODO start up code here
  }

  @PreSave
  public void preSave()
  {
     // TODO add shutdown code here
  }
}

déclarer la classe de cycle de vie dans la définition du produit dans le plugin.xml:

<extension
     id="product"
     point="org.eclipse.core.runtime.products">
  <product
        name="%product.name"
        application="org.eclipse.e4.ui.workbench.swt.E4Application">
      <property
           name="lifeCycleURI"
           value="bundleclass://plugin-id/package.LifeCycle">
     </property>
     .... more properties ...

Pour plus de détails, voir ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top