Acciones redirigibles

Es habitual que las vistas y los editores de un conector implementen acciones similares desde el punto de vista semántico a las acciones existentes en el entorno de trabajo, como las de cortar/copiar/pegar del portapapeles, renovar las vistas, o las relacionadas con propiedades.  El menú emergente de las vistas y editores puede llenarse desordenadamente si cada vista o editor tiene que definir acciones exclusivas para estas operaciones e incluirlas en sus menús. 

Para solucionar este problema, el entorno de trabajo define acciones redirigibles (llamadas también globales) que cualquier vista o editor puede manejar.  Si una vista o un editor está activo, el correspondiente manejador se ejecutará cuando el usuario elija la acción en el menú o en la barra de herramientas del entorno de trabajo.  Así, las vistas y los editores pueden compartir el espacio de los menús del entorno de trabajo para las acciones similares desde el punto de vista semántico.

En la interfaz IWorkbenchActionConstants se documentan todas las acciones del entorno de trabajo y se indican las acciones redirigibles como globales.  Por ejemplo, a continuación figura la definición de la acción Propiedades (properties).

public static final String PROPERTIES = "properties"; // Acción global. 

La siguiente tabla ofrece un resumen de algunas de las acciones redirigibles más comunes implementadas por las vistas y los editores:

  Menú Archivo Menú Editar Menú Navegar Menú Proyecto
vistas mover
redenominar
renovar
propiedades
  ir adentro
ir a recurso
sincronizar con editor
retroceder
avanzar
subir
siguiente
anterior
abrir
cerrar
construir
reconstruir
editores revertir
imprimir
buscar    
vistas y editores   cortar
copiar
pegar
suprimir
seleccionar todo
deshacer
rehacer
   

Las acciones redirigibles se crean con el objeto RetargetAction.  El fragmento de código que figura a continuación procede de WorkbenchActionBuilder.

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

El método createGlobalAction nos muestra exactamente cómo crear un objeto 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;
}

Al crear una acción redirigible, el entorno de trabajo asigna el ID de la acción y la etiqueta por omisión.  Tenga en cuenta que existen dos estilos de acciones redirigibles.  RetargetAction simplemente permite a una vista o editor reimplementar una acción.  LabelRetargetAction también permite a las vistas y editores volver a establecer la etiqueta de la acción.   Esto resulta de utilidad para que la etiqueta del menú sea más específica, como por ejemplo volver a etiquetar una acción Deshacer como Deshacer escritura.  

Ahora ya sabemos cómo define el entorno de trabajo las acciones de redestinar.  Veamos a continuación qué hace nuestra vista o nuestro editor para proporcionar una implementación de una acción redirigible.  Para ello se establece un manejador de acciones globales.