2012-04-12 2 views
0

Ich brauche irgendwie Verweis auf Auswahl-Service in Aktivator. Ich versuchte dies:So erhalten Sie Auswahl-Service in Plugin-Aktivator

IWorkbench wb = PlatformUI.getWorkbench(); 
IWorkbenchWindow ww = wb.getActiveWorkbenchWindow(); 
ww.getSelectionService().addSelectionListener(new GlobalSelectionListener()); 

Aber ww ist immer null. Ich habe keinen anderen Code gefunden, um eine Auswahldienst-Referenz zu erhalten. Dieser Code funktioniert nur, wenn Eclepse vollständig initialisiert ist.

Antwort

0

Sie müssen sicherstellen, dass Sie getActiveWorkbenchWindow() in einem Anzeige-Thread aufrufen, um eine Rückgabe ungleich Null zu erhalten.

Versuchen:

final IWorkbench workbench = PlatformUI.getWorkbench(); 
workbench.getDisplay().asyncExec(new Runnable() { 
    public void run() { 
    IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); 
    if (window != null) { 
     // do something 
    } 
    } 
}); 

Dieses Beispiel ist aus dem javadoc aus org.eclipse.ui.IStartup. Wenn Sie möchten, dass Ihr Code nach der Initialisierung der Workbench so schnell wie möglich ausgeführt wird, sollten Sie den Erweiterungspunkt org.eclipse.ui.startup erweitern.