Zusätzlich zur statischen Zuordnung von Fensterobjekten und Kontext-IDs ist es auch möglich, diese Informationen für eine dynamischere kontextsensitive Hilfefunktionalität dynamisch bereitzustellen. Das Hilfesystem verwendet Kontext-IDs, um das entsprechende Objekt
org.eclipse.help.IContext zu lokalisieren. Die neue Hilfesicht überwacht die Aktivierung der Teile der Workbench (Sichten und Editoren) und prüft, ob sie sich an die Schnittstelle org.eclipse.help.IContextProvider anpassen. Ist dies der Fall, so verwendet die Sicht den Kontextbereitsteller, um das Objekt IContext
zu finden und die benötigten Informationen daraus abzurufen. Dieses Objekt kann während der Verarbeitung in den Cache gestellt oder erstellt werden.
Teile der Workbench, die das Kontextobjekt dynamisch erstellen wollen, sollten sich an das Objekt IContextProvider.class
als Schlüssel anpassen:
public Object getAdapter(Class key) { if (key.equals(IContextProvider.class)) { return new MyContextProvider(); } return super.getAdapter(key); }
Die Schnittstelle für den Kontextbereitsteller erfordert die Implementierung von drei Methoden:
public class MyContextProvider implements IContextProvider { int getContextChangeMask() { return NONE; } IContext getContext(Object target) { return myContext; } String getSearchExpression(Object target) { return null; } }
Wen die Kontextänderungsmaske NONE
zurückgibt, so muss ein Kontextobjekt angegeben werden, wenn der Teil der Workbench aktiviert wird. Wird SELECTION
zurückgegeben, so müssen Sie ein Kontextobjekt angeben, das für die aktuelle Auswahl des Teils sensitiv ist. Jedes Mal, wenn der Bereitsteller für die Teileauswahl ein Auswahlsänderungsereignis startet, wird der Kontextbereitsteller aufgefordert, ein Kontextobjekt zur Verfügung zu stellen.
Optional kann auch ein Suchausdruck für die dynamische Hilfe angegeben werden.
Falls nicht, wird eine Kombination aus dem Teilenamen und dem Perspektivennamen verwendet, was in den meisten Fällen gute Ergebnisse liefert.