Ações Reatingíveis

É comum para as exibições e editores de um plug-in implementar ações semanticamente semelhantes em ações existentes do workbench, tal como recortar/copiar/colar, atualizar exibição ou propriedades da área de transferência.  O menu popup das exibições e editores poderá tornar-se bem confuso se cada exibição ou editor tiver que definir ações exclusivas para essas operações e incluí-las em seus menus. 

Para resolver esse problema, o workbench define ações reatingíveis (também chamadas de globais) que podem ser manipuladas por qualquer exibição ou editor.  Quando uma exibição ou editor estiver ativo, sua rotina de tratamento será executada quando o usuário escolher a ação no menu ou na barra de ferramentas do workbench.  Isso permite que as exibições e editores compartilhem o espaço de menu do workbench para ações semanticamente semelhantes.

IWorkbenchActionConstants documenta todas as ações do workbench e indica as ações reatingíveis como globais.  Por exemplo, a seguir, está a definição da ação Properties.

public static final String PROPERTIES = "properties"; // Ação global. 

A tabela a seguir resume algumas das ações reatingíveis mais comuns que foram implementadas pelas exibições e editores:

  Menu Arquivo Menu Editar Menu Navegar
exibições mover
renomear
atualizar
propriedades
  entrar
voltar
avançar
para cima
próximo
anterior
editores reverter
imprimir
localizar  
exibições e editores   recortar
copiar
colar
excluir
selecionar tudo
desfazer
refazer
 

As ações reatingíveis são criadas utilizando RetargetAction.  O trecho a seguir foi obtido de WorkbenchActionBuilder.

 propertiesAction = createGlobalAction(IWorkbenchActionConstants.PROPERTIES, "file", false); 

O método createGlobalAction nos mostra exatamente como criar uma RetargetAction.

private RetargetAction createGlobalAction(String id, String actionDefPrefix, boolean labelRetarget) {
	RetargetAction action;
	if (labelRetarget) {
		action = new LabelRetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); 
	}
	else {
		action = new RetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); 
	}
	...
	return action;
}

Ao criar uma ação reatingível, o workbench atribui o id da ação e o rótulo padrão.  Observe que há dois estilos de ações reatingíveis.  RetargetAction apenas permite que uma exibição ou editor reimplemente uma ação.  LabelRetargetAction também permite que as exibições e editores redefinam o rótulo da ação.   Isso é útil para que o rótulo do menu fique mais específico, como, por exemplo, rotular novamente uma ação Undo para Undo Typing.  

Agora sabemos como as ações reatingíveis são definidas pelo workbench.  Em seguida, veremos como sua exibição ou editor pode fornecer uma implementação para uma ação reatingível.  Isso é feito definindo-se uma rotina de tratamento de ação global.

Copyright IBM Corp. e outros 2000,2002.