Actions redirigeables

Les vues et les éditeurs d'un plug-in ont pour habitude d'implémenter des actions identiques sur le plan sémantique vers des actions existantes du plan de travail, telles que couper/copier/coller dans le presse-papiers, régénérer une vue ou encore les propriétés. Le menu en incrustation des vues et des éditeurs peut rapidement s'encombrer si chaque vue ou éditeur doit définir des actions uniques pour des opérations et les inclure dans les menus. 

Pour remédier à problème, le plan de travail définit des actions redirigeables (également appelées globales) pouvant être traitées par toute vue ou tout éditeur. Lorsqu'une vue ou un éditeur sont actifs, le traitement est effectué si l'utilisateur choisit l'action dans le menu ou la barre d'outils du plan de travail. Les vues et les éditeurs peuvent ainsi partager l'espace du menu du plan de travail pour des actions identiques sur le plan sémantique.

IWorkbenchActionConstants documente toutes les actions du plan de travail et qualifie les actions redirigeables de globales. Par exemple, voici une définition de l'action Propriétés.

public static final String PROPERTIES = "properties"; // Global action. 

Le tableau suivant répertorie certaines actions redirigeables courantes que des vues et des éditeurs implémentent :

  Menu Fichier Menu Editer Menu Naviguer Menu Projet
vues déplacer
renommer
régénérer
propriétés
  accéder à
accès à une ressource
synch. avec éditeur
vers l'arrière
vers l'avant
vers le haut
suivant
précédent
ouvrir
fermer
compiler
recompiler
éditeurs inverser
imprimer
rechercher    
vues et éditeurs   couper
copier
coller
supprimer
tout sélectionner
annuler
répéter
   

Les actions redirigeables sont créées à l'aide de RetargetAction. Le fragment de code suivant est extrait de WorkbenchActionBuilder.

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

La méthode createGlobalAction illustre exactement comment effectuer 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;
}

Lors de la création d'une action redirigeable, le plan de travail attribue l'ID de l'action et le libellé par défaut. Il existe deux styles d'actions redirigeables. RetargetAction permet simplement à une vue ou un éditeur d'implémenter à nouveau une action. LabelRetargetAction permet en outre de redéfinir le libellé de l'action.  Cette opération est utile pour obtenir un libellé plus spécifique, en renommant par exemple l'action Annuler en Annuler la frappe.  

Nous savons à présent que les actions redirigeables sont définies par le plan de travail. Voyons maintenant comment votre vue (ou éditeur) peut fournir une implémentation pour ce type d'action. Il s'agit pour ce faire de définir un gestionnaire d'action globale.