Den primära anpassning som tillhandahålls av BrowserAdvisor i exemplet med webbläsaren är tilldelningen av åtgärdslistens innehåll för arbetsmiljöfönstret:
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); }
Låt oss ta en närmare till på hur dessa åtgärder definieras iBrowserActionBuilder. I synnerhet ska vi titta på åtgärder som hanteras av webbläsarvyn.
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); ... }
Åtgärderna definieras som åtgärder som kan växla mål så att enskilda vyer kan implementera hanteraråtgärderna. BrowserView associerar dess hanteraråtgärder med fönstrets åtgärder som kan växla mål när den skapar kontrollerna för vyn:
private Browser createBrowser(Composite parent, final IActionBars actionBars) { ... actionBars.setGlobalActionHandler("back", backAction); actionBars.setGlobalActionHandler("forward", forwardAction); actionBars.setGlobalActionHandler("stop", stopAction); actionBars.setGlobalActionHandler("refresh", refreshAction); ... }
De här åtgärderna skapas när vyn först skapas.
private Action backAction = new Action("Back") { public void run() { browser.back(); } };
Se Åtgärder som kan växla mål för en fullständig diskussion av åtgärder som kan växlas mål och hur de definieras och implementeras.