2016-12-12 2 views
0

Nach meiner Execute-Methode möchte ich die aktuelle Auswahl null setzen. Ich bin so weit gekommen, aber es wird nicht funktionieren. Danach hält selection immer noch den a-Wert, der nicht null ist.e4 Set ESelectionService Null

@Inject 
    private ESelectionService selection; 

    @Execute 
    public void execute(@Named(IServiceConstants.ACTIVE_SELECTION) Foo foo, Shell shell) { 
     if (true) { 
      //do something! 
      final Object NULL_OBJECT = new Object(); 
      selection.setSelection(NULL_OBJECT); 
     } 
    } 

Antwort

1

Es gibt mehrere Auswahldienste, eine pro Kontext (IEclipseContext). Möglicherweise setzen Sie die Auswahl im falschen Kontext.

Das Einfügen der ESelectionService als ein Feld Ihrer Klasse kann bedeuten, dass Sie mit dem falschen Service enden. Injizieren Sie dies immer als Parameter der Methode execute.

... no field injection 

@Execute 
public void execute(ESelectionService selection, @Named(IServiceConstants.ACTIVE_SELECTION) Foo foo, Shell shell) { 
+0

Danke für Ihre Hilfe. Es funktionierte!! Wunderbar – Hammelkeule