2017-04-25 14 views
0

Je suis en train de développer un plug-in pour Eclipse Luna et j'ai voulu ajouter quelques écouteurs à certaines vues et je sais comment le faire. Ma question est de savoir où le faire?Méthode d'appel dès que le plug-in eclipse démarre

Je dois les ajouter dès que le plug-in démarre. Donc je pense qu'il doit y avoir une sorte de méthode qui est appelée quand le plug-in est chargé, je ne peux pas le trouver dans docs. Jusqu'à présent, j'ai essayé d'ajouter cet écouteurs dans la méthode public void start(BundleContext context) throws Exception en classe Activator mais cela n'a pas fonctionné. Je pense que la partie ui n'est pas encore chargée à ce moment-là et c'est pourquoi elle échoue.

Répondre

1

La méthode Activator start d'un plug-in n'est pas exécutée tant que le plug-in ne contient pas d'autre élément, ce qui ne permet pas de mettre les écouteurs à leur place. Par défaut, les plug-ins ne sont pas chargés lors de l'initialisation Eclipse, ils ne sont chargés qu'en cas de besoin.

Vous pouvez utiliser le point d'extension org.eclipse.ui.startup pour définir une classe implémentant IStartup qui sera exécutée pendant l'initialisation Eclipse.

Notez que la méthode earlyStartup définie par cette interface peut être exécutée avant l'initialisation de l'interface utilisateur. Utilisez quelque chose comme ce qui suit pour exécuter le code de l'interface utilisateur de earlyStartup:

Display.getDefault().asyncExec(new Runnable() { 
    public void run() { 
    // UI code 
    } 
}); 

Par exemple, pour obtenir le service de sélection.

@Override 
public void earlyStartup() 
{ 
    Display.getDefault().asyncExec(new Runnable() { 
    @Override 
    public void run() { 
    final ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService(); 
    System.out.println("service " + service); 
    } 
}); 
} 
+0

J'ai essayé d'appeler PlatformUI.getWorkbench() getActiveWorkbenchWindow() getSelectionService.() pour obtenir le service de sélection, mais il jette NPE. –

+0

Cela fonctionne aussi longtemps que vous faites tout cela dans le runnable asyncExec - voir mon exemple supplémentaire dans la réponse. –

+0

Cela n'a pas fonctionné pour moi, je viens de créer UIJob, de tout mettre dans sa méthode d'exécution et de le programmer. –