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.
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.
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.