Áttervezhető tevékenységkészlet-tevékenységek

A readme eszköz tevékenységkészlet szintén megad áttervezhető tevékenységeket.  A tevékenység addig marad látható, amíg a tevékenységkészlet, de csak akkor engedélyezett, ha a tevékenységet megvalósító nézet és szerkesztő aktív. Ha az áttervezhető tevékenységek tevékenységkészletek segítségével kerülnek megadásra, akkor a tevékenységek a kód helyett a tevékenységkészlet-leírónyelvben kerülnek létrehozásra. Az alábbi a readme eszköz tevékenységkészlet-definíciójából származik:

<extension point = "org.eclipse.ui.actionSets">
	   <actionSet id="org_eclipse_ui_examples_readmetool_actionSet"
		   label="%ActionSet.name"
		   visible="true">
...
<action id="org_eclipse_ui_examples_readmetool_readmeRetargetAction"
   menubarPath="window/org_eclipse_ui_examples_readmetool/slot1"
   toolbarPath="readme"
   label="%ReadmeRetargetAction.label"
   tooltip="%ReadmeRetargetAction.tooltip"
   helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
   icon="icons/ctool16/openbrwsr.png"
   retarget="true">
        </action>
<action id="org_eclipse_ui_examples_readmetool_readmeRelabelRetargetAction"
   menubarPath="window/org_eclipse_ui_examples_readmetool/slot1"
   toolbarPath="readme"
   label="%ReadmeRelabelRetargetAction.label"
   tooltip="%ReadmeRelabelRetargetAction.tooltip"
   helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
   icon="icons/ctool16/openbrwsr.png"
   retarget="true"	
   allowLabelUpdate="true">
        </action>
...

Az áttervezett tevékenységek a retarget="true" attribútum segítségével kerültek megadásra. Ennek hatására a tevékenységkészletben létrejön a RetargetAction.  Ne feledje el, hogy az áttervezhető tevékenységek nem adnak meg megvalósítási osztályt, mivel a bedolgozóban levő nézetek és szerkesztők feladata a tevékenységeket megvalósító kezelő beállítása.  Ha az allowLabelUpdate igaz, akkor a LabelRetargetAction jön létre.

Az áttervezett tevékenységek akkor lesznek láthatók az ablakmenüben, amikor a readme tevékenységkészlet látható. Ezek nem kerülnek engedélyezésre, ha a readme eszköz szerkesztő és kiemelő nézete nem aktív.

Tájékoztatófájl-szerkesztő menü két kiszürkített és egy engedélyezett elemmel

 

A szerkesztőnek és nézetnek mit kell tennie?  Az ügyféloldal hasonlít egy kezelő bejegyzésére a munkaterület vagy szerkesztő áttervezhető tevékenységéhez. A leírónyelvben megadott tevékenységazonosítót a globális tevékenységkezelő bejegyzésekor kell használni.

A ReadmeEditorActionBarContributor kezeli ezt a szerkesztő számára. Először létrehozza a kezelőket a tevékenységek számára.

public ReadmeEditorActionBarContributor() {
	...
	handler4 = new EditorAction(MessageUtil.getString("Editor_Action4")); 
	handler5 = new EditorAction(MessageUtil.getString("Editor_Action5")); 
	handler5.setToolTipText(MessageUtil.getString("Readme_Editor_Action5"));
	...
}

A kezelők ugyanakkor kerülnek bejegyzésre, mint a szerkesztő áttervezhető tevékenységeinek kezelői.

public void init(IActionBars bars, IWorkbenchPage page) {
	...
	bars.setGlobalActionHandler(IReadmeConstants.ACTION_SET_RETARGET4, handler4);
	bars.setGlobalActionHandler(IReadmeConstants.ACTION_SET_LABELRETARGET5, handler5);
	...
}

Ne feledje el, hogy a műveletsor kiegészítői megosztásra kerülnek ugyanazon szerkesztő különböző példányai között. Ez azt jelenti, hogy a kezelőket akkor kell módosítani, ha a ReadmeEditorActionBarContributor aktív szerkesztője változik.

public void setActiveEditor(IEditorPart editor) {
	...
	handler4.setActiveEditor(editor);
	handler5.setActiveEditor(editor);
	...
}

Ennyit a szerkesztőről. Ezeknek a tevékenységeknek a szerkesztő aktiválásakor kell engedélyezettnek lenniük.

Readme fájlszerkesztő-menü engedélyezett tevékenységekkel 

Az első áttervezhető tevékenység ("Szerkesztőtevékenység 4") címkéjét nem használja a rendszer, mivel a tevékenységkészlet XML leírónyelv nem állította be az allowLabelUpdate elemet.

A ReadmeContentOutlinePage ugyanazon a helyen adja meg a kezelőket, mint ahol a szerkesztő áttervezhető tevékenységei megadásra kerültek:

public void createControl(Composite parent) {
	...
	action = new OutlineAction(MessageUtil.getString("Outline_Action4")); 
	getSite().getActionBars().setGlobalActionHandler(
		IReadmeConstants.ACTION_SET_RETARGET4, 
		action);  
	action = new OutlineAction(MessageUtil.getString("Outline_Action5")); 
	action.setToolTipText(MessageUtil.getString("Readme_Outline_Action5")); 
	getSite().getActionBars().setGlobalActionHandler(
		IReadmeConstants.ACTION_SET_LABELRETARGET5, 
		action);  
}

Az átcímkézett tevékenységnek akkor kell láthatónak lennie, ha a tartalomkiemelő aktív.

Tájékoztatófájl-szerkesztő menü átnevezett művelettel