Im Browserbeispiel besteht die Hauptanpassung des BrowserAdvisors darin, die Bezeichnung der Aktionsleiste für das Workbench-Fenster zu liefern.
public void fillActionBars(IWorkbenchWindow window, IActionBarConfigurer configurer, int flags) { ... BrowserActionBuilder builder = new BrowserActionBuilder(window); getWorkbenchConfigurer().getWindowConfigurer(window).setData(BUILDER_KEY, builder); builder.fillActionBars(configurer, flags); }
Nachfolgend soll untersucht werden, wie diese Aktionen im BrowserActionBuilder definiert werden. Vor allem werden die Aktionen betrachtet, die von der Browsersicht bearbeitet werden.
private void makeActions() { ... backAction = new RetargetAction("back", "&Back"); backAction.setToolTipText("Back"); backAction.setImageDescriptor(images.getImageDescriptor(ISharedImages.IMG_TOOL_BACK)); window.getPartService().addPartListener(backAction); forwardAction = new RetargetAction("forward", "&Forward"); forwardAction.setToolTipText("Forward"); forwardAction.setImageDescriptor(images.getImageDescriptor(ISharedImages.IMG_TOOL_FORWARD)); window.getPartService().addPartListener(forwardAction); stopAction = new RetargetAction("stop", "Sto&p"); stopAction.setToolTipText("Stop"); window.getPartService().addPartListener(stopAction); refreshAction = new RetargetAction("refresh", "&Refresh"); refreshAction.setToolTipText("Refresh"); window.getPartService().addPartListener(refreshAction); ... }
Die Aktionen sind als umlenkbare Aktionen definiert, damit die unterschiedlichen Sichten die Steuerroutineaktionen implementieren können. BrowserView ordnet bei der Erstellung der Steuerzeichen der Sicht die umlenkbaren Aktionen des Fensters seinen Steuerroutineaktionen zu.
private Browser createBrowser(Composite parent, final IActionBars actionBars) { ... actionBars.setGlobalActionHandler("back", backAction); actionBars.setGlobalActionHandler("forward", forwardAction); actionBars.setGlobalActionHandler("stop", stopAction); actionBars.setGlobalActionHandler("refresh", refreshAction); ... }
Diese Aktionen werden bei der ersten Erstellung der Sicht erzeugt.
private Action backAction = new Action("Back") { public void run() { browser.back(); } };
Eine vollständige Behandlung der umlenkbaren Aktionen mit allen Definitions- und Implementierungsmöglichkeiten finden Sie unter Umlenkbare Aktionen.