De primaire aanpassing die wordt geleverd door de BrowserAdvisor in het browservoorbeeld, wordt gevormd door het toewijzen van de inhoud van de actiebalk van het workbenchvenster:
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); }
Hoe worden deze acties in de BrowserActionBuilder gedefinieerd? In het bijzonder de acties die door de browserview worden afgehandeld:
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); ... }
De acties worden gedefinieerd als herbruikbare acties, zodat afzonderlijke views de afhandelingsroutineacties kunnen implementeren. De BrowserView koppelt zijn afhandelingsroutineacties aan de herbruikbare acties van het venster bij het maken van de viewbesturingsfuncties:
private Browser createBrowser(Composite parent, final IActionBars actionBars) { ... actionBars.setGlobalActionHandler("back", backAction); actionBars.setGlobalActionHandler("forward", forwardAction); actionBars.setGlobalActionHandler("stop", stopAction); actionBars.setGlobalActionHandler("refresh", refreshAction); ... }
Deze acties worden gedefinieerd als de view voor het eerst wordt gemaakt.
private Action backAction = new Action("Back") { public void run() { browser.back(); } };
Zie Herbruikbare acties voor een uitgebreide beschrijving van de herbruikbare acties en hoe deze worden gedefinieerd en geïmplementeerd.