Primární přizpůsobení, které nabízí BrowserAdvisor v příkladu s prohlížečem, je určení obsahu řádku s akcemi pro okno pracovní plochy:
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);
}
Podívejme se blíže na to, jak jsou tyto akce v BrowserActionBuilder definovány. Zejména se podívejme na akce ošetřované pohledem prohlížeče.
private void makeActions() {
...
backAction = new RetargetAction("zpět", "&Zpět");
backAction.setToolTipText("Zpět");
backAction.setImageDescriptor(images.getImageDescriptor(ISharedImages.IMG_TOOL_BACK));
window.getPartService().addPartListener(backAction);
forwardAction = new RetargetAction("vpřed", "&Vpřed");
forwardAction.setToolTipText("Vpřed");
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("obnovit", "&Obnovit");
refreshAction.setToolTipText("Obnovit");
window.getPartService().addPartListener(refreshAction);
...
}
Tyto akce jsou definované jako přecílitelné akce, takže jednotlivé pohledy mohou implementovat akce obslužného programu. BrowserView přiřazuje své akce obslužného programu k přecílitelným akcím okna, když vytváří obslužné prvky pohledu:
private Browser createBrowser(Composite parent, final IActionBars actionBars) {
...
actionBars.setGlobalActionHandler("zpět", backAction);
actionBars.setGlobalActionHandler("vpřed", forwardAction);
actionBars.setGlobalActionHandler("stop", stopAction);
actionBars.setGlobalActionHandler("obnovit", refreshAction);
...
}
Tyto akce jsou vytvořeny, když je poprvé vytvořen daný pohled.
private Action backAction = new Action("Zpět") {
public void run() {
browser.back();
}
};
Úplné pojednání o přecílitelných akcích a o tom, jak je definovat a implementovat, naleznete v tématu Přecílitelné akce.