Domanda

Ciao RCP Sviluppatori,

Voglio Implement postWindowClose() nel mio Eclipse RCP Applicazione.

Prima di codificare questo metodo, ho appena fatto un piccolo test per vedere se quando I Chiudi La mia applicazione, il metodo è chiamato, quindi ho fatto questo:

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");
    }

}
.

Mi aspetto di vedere: close in Eclipse console, ma è ancora in bianco dopo aver chiuso l'applicazione.

Tutti i plugin richiesti vengono aggiunti e non ho errori durante il lancio o la chiusura dell'applicazione.

Allora, mi manca qualcosa?

I motivi per cui gli implemetti questo metodo sono:

    .
  1. MSG Box: Are you sure you want to close the application
  2. Uccidi tutti i thread in esecuzione, i file di caricamento dell'applicazione e anche quando chi chiudo l'applicazione che esegue i caricamenti in esecuzione continua. Voglio abandarli quando si chiude l'applicazione.
  3. Modifica:

    My Life Cycle Class:

    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");
      }
    }
    
    .

    My plugin.xml:

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

    Spero che io sia abbastanza chiaro.

    Ismail

È stato utile?

Soluzione

Per un'applicazione Pure Eclipse 4 (E4) Il consulente della finestra del workbench (e gli altri consulenti) non vengono utilizzati.Si utilizza il metodo @PreSave di una classe di ciclo di vita per eseguire il codice durante l'arresto.

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

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

Dichiarare la classe di ciclo di vita nella definizione del prodotto nel 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 ...
.

Per maggiori dettagli vedere qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top