2017-05-08 1 views
0

In E3 hatten wir ein paar Handler, die überprüft werden mussten, und so musste der Handler herausfinden, wann er überprüft werden sollte. Damals war die eine leichte Aufgabe:Update Checked State of Handler in E4

public class MyHandler extends AbstractHandler implements IElementUpdater { 
    @Override 
    public void updateElement(UIElement element, Map parameters) { 
     element.setChecked(calculateCheckState()); 
    } 
} 

ich this similar question gefunden, aber es ist viel breiter (alle Befehle zu aktualisieren, während ich nur den Überprüfungsstatus gesetzt werden soll, wenn der Rahmen es notwendig erscheint). Da Werkzeug- und Menüpunkte Check- oder Radio-Objekte sein können, muss dies irgendwie möglich sein.

Wie kann ich den Prüfstatus eines Handlers in E4 setzen?

Antwort

1

Sie können die Prüfung (ausgewählt) Zustand in der @CanExecute Methode des Handlers setzen mit so etwas wie:

@CanExecute 
public boolean canExecute(MItem item) 
{ 
    item.setSelected(... checked state ....); 

    return true; 
} 

Für einen Menüpunkt der @CanExecute Methode wird jedes Mal das Menü aufgerufen wird angezeigt.

Für ein Toolbar-Element müssen Sie möglicherweise das IEventBrokerUIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC-Ereignis verwenden, um die Ausführung der Methode zu erzwingen.

eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, argument); 

argument kann

sein
  • UIEvents.ALL_ELEMENT_ID alle Einzelteile zu aktualisieren.
  • Die ID eines einzelnen Elements, das aktualisiert werden soll.
  • A Selector (org.eclipse.e4.ui.workbench.Selector), um die Elemente auszuwählen, die aktualisiert werden sollen.