Herbruikbare acties

Met de views en editors van plugins worden vaak acties geïmplementeerd die semantisch vergelijkbaar zijn met bestaande workbenchacties, zoals knippen/kopiëren/plakken, het vernieuwen van een view of eigenschappen. Het voorgrondmenu van views en editors kan behoorlijk vervuild raken als voor iedere view of editor unieke acties moeten worden gedefinieerd voor de bovenstaande bewerkingen.

In de workbench wordt dit probleem opgelost door middel van herbruikbare (ook wel globale) acties die in elke willekeurige view of editor kunnen worden afgehandeld. Wanneer een view of editor actief is, wordt de afhandelingsroutine ervan uitgevoerd zodra de actie wordt gekozen in het menu of de werkbalk van de workbench. Op deze manier kunnen views en editors van dezelfde menu's gebruik maken voor acties die semantisch vergelijkbaar zijn.

Door IWorkbenchActionConstants worden alle workbenchacties gedocumenteerd en worden herbruikbare acties als globaal aangeduid. Hieronder volgt de definitie van de actie Properties:

public static final String PROPERTIES = "properties"; // Globale actie 

De volgende tabel bevat een overzicht van een aantal gangbare herbruikbare acties die door views en editors worden geïmplementeerd:

  Menu Bestand Menu Bewerken Menu Navigeren Menu Project
Views Verplaatsen
Hernoemen
Automatisch vernieuwen
Eigenschappen
  Gaan in
Naar resource gaan
Synchroniseren met editor
Terug
Verder
Omhoog
Volgende
Vorige
Openen
Sluiten
Bouwen
Opnieuw bouwen
Editors Vorige versie terugzetten
Afdrukken
Zoeken    
Views en editors   Knippen
Kopiëren
Plakken
Wissen
Alles selecteren
Ongedaan maken
Opnieuw uitvoeren
   

Herbruikbare acties worden gemaakt met RetargetAction. Het volgende fragment is van WorkbenchActionBuilder.

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

De methode createGlobalAction geeft precies aan hoe een RetargetAction moet worden gemaakt.

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

Bij het maken van een herbruikbare actie wordt het ID en het standaardlabel door de workbench toegewezen aan de actie. Merk op dat er twee stijlen zijn voor herbruikbare acties. Met RetargetAction kunt u acties in views of editors simpelweg opnieuw implementeren. LabelRetargetAction biedt zelfs de mogelijkheid ook het label van de actie opnieuw in te stellen. Gebruik deze laatste methode als u het menulabel specifieker wilt maken, zoals het wijzigen van de actie Ongedaan maken in Typen ongedaan maken.

Herbruikbare acties worden door de workbench gedefinieerd zoals hierboven beschreven. In het volgende onderwerp wordt uitgelegd hoe de implementatie van een herbruikbare actie door een view of editor kan worden verstrekt. U moet hiervoor een globale actie-afhandelingsroutine instellen.