Definindo as Ações

A personalização principal fornecida pelo BrowserAdvisor no exemplo do navegador é a atribuição do conteúdo da barra de ação para a janela do workbench:

	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);
	}

Vamos ver mais de perto como essas ações são definidas no BrowserActionBuilder. Em particular, vamos observar as ações que são manipuladas pela visualização do navegador.

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);
		...
	}

As ações são definidas como ações redirecionáveis para que as visualizações individuais possam implementar as ações da rotina de tratamento. A BrowserView associa suas ações da rotina de tratamento com as ações redirecionáveis da janela quando cria os controles para a visualização:

	private Browser createBrowser(Composite parent, final IActionBars actionBars) {
		
		...
		actionBars.setGlobalActionHandler("back", backAction); 
		actionBars.setGlobalActionHandler("forward", forwardAction); 
		actionBars.setGlobalActionHandler("stop", stopAction); 
		actionBars.setGlobalActionHandler("refresh", refreshAction); 
		...
	}

Essas ações são criadas quando a visualização é criada primeiro.

	private Action backAction = new Action("Back") {
               public void run() {
			browser.back();
		}
	};

Consulte as Ações redirecionáveis para uma discussão completa das ações redirecionáveis e como são definidos e implementados.