Ne feledje el, hogy a readme eszköz saját szerkesztőt ad meg, amely a ReadmeEditorActionBarContributor segítségével tevékenységeket ad hozzá a munkaterület-menühöz.
<extension
point = "org.eclipse.ui.editors">
<editor
id = "org.eclipse.ui.examples.readmetool.ReadmeEditor"
name="%Editors.ReadmeEditor"
icon="icons/obj16/editor.png"
class="org.eclipse.ui.examples.readmetool.ReadmeEditor"
extensions="readme"
contributorClass="org.eclipse.ui.examples.readmetool.ReadmeEditorActionBarContributor">
</editor>
</extension>
Nézzük meg közelebbről, hogy mi történik a közreadó-osztályban.
public ReadmeEditorActionBarContributor() {
...
action2 = new RetargetAction(IReadmeConstants.RETARGET2, MessageUtil.getString("Editor_Action2"));
action2.setToolTipText(MessageUtil.getString("Readme_Editor_Action2"));
action2.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE_DISABLE);
action2.setImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE_ENABLE);
...
action3 = new LabelRetargetAction(IReadmeConstants.LABELRETARGET3, MessageUtil.getString("Editor_Action3"));
action3.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE_DISABLE);
action3.setImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE_ENABLE);
...
handler2 = new EditorAction(MessageUtil.getString("Editor_Action2"));
...
handler3 = new EditorAction(MessageUtil.getString("Editor_Action3"));
...
Ha közreadó létrehozás után létrehoz két áttervezhető tevékenységet (az egyik lehetővé teszi a címkefrissítést, és egy másikat, amely nem). Bizonyos tevékenységek ugyanazt az eljárást használják, mint a munkaterület. Ez szintén létrehoz két kezelőt, amelyet a tevékenységek használnak, ha a szerkesztő az aktív rész.
De a tevékenységek kezelői hol vannak regisztrálva? A globális kezelők beállítása egy kicsit másképp történik, amikor a szerkesztő áttervezett tevékenységeket ad meg. Miért? Mivel a közreadó felelős az aktív nézet nyomkövetéséért és a különböző kezelők különböző nézetekként csatlakoztatásáért, vagy maga a szerkesztő válik aktívvá. (A munkaterület elvégzi ezt, ha beállít egy kezelőt az egyik globális tevékenységhez). Az alábbiakban látható, hogy a ReadmeEditorActionBarContributor hogyan állítja be az elemeket:
public void init(IActionBars bars, IWorkbenchPage page) {
super.init(bars, page);
bars.setGlobalActionHandler(IReadmeConstants.RETARGET2, handler2);
bars.setGlobalActionHandler(IReadmeConstants.LABELRETARGET3, handler3);
...
Először a közreadó bejegyzi a kezelőket az áttervezett tevékenységekhez. Ez biztosítja, hogy a közreadó tevékenységei fussanak, ha a szerkesztő aktív. A következő lépés a RetargetAction elemek bejegyzése az oldalon részfigyelőkként.
...
// Áttervezett tevékenységek csatlakoztatása oldalfigyelőkként
page.addPartListener(action2);
page.addPartListener(action3);
IWorkbenchPart activePart = page.getActivePart();
if (activePart != null) {
action2.partActivated(activePart);
action3.partActivated(activePart);
}
}
A RetargetAction elemek hozzáadása részfigyelőkként azt jelenti, hogy értesítést kap, ha az aktív rész módosul. A tevékenység az újonnan aktivált résztől megkaphatja a megfelelő globális kezelőt. (Részletes információkért tekintse meg a RetargetAction megvalósítását.) Ne feledje, hogy induláskor a tevékenység alapértéke az éppen aktív részből származik.
Ha a szerkesztő-közreadó eltávolításra került, akkor az áttervezhető tevékenységek oldalfigyelőkénti csatolását meg kell szüntetni.
public void dispose() {
// Áttervezhető tevékenységek eltávolítása oldalfigyelőkként
getPage().removePartListener(action2);
getPage().removePartListener(action3);
}
Végül ne feledje el, hogy a műveletsor-közreadók megosztásra kerülnek ugyanazon szerkesztő példányai között. Ezen okból a kezelőknek értesítést kell kapniuk az aktív szerkesztő változásairól, így csatlakozni tudnak a megfelelő szerkesztőpéldányhoz.
public void setActiveEditor(IEditorPart editor) {
...
handler2.setActiveEditor(editor);
handler3.setActiveEditor(editor);
...
}
Ez befejezi a szerkesztőoldali beállítást. Ha a szerkesztő meg van nyitva és aktív, akkor a kezelők (és címkéik) a ReadmeEditorActionBarContributor által megadott módon jelennek meg a munkaterület-menüsoron.

Most, hogy a szerkesztő közreadói helyben vannak, mit tesz a nézet kezelő bejegyzéséhez? Az ügyféloldali kód hasonlít a kezelő munkaterület-tevékenységhez bejegyzéséhez azzal a kivétellel, hogy a tevékenységazonosító a bedolgozó szerkesztő által megadott. A ReadmeContentOutlinePage bejegyez egy kezelőt ezen tevékenységekhez.
public void createControl(Composite parent) {
super.createControl(parent);
...
getSite().getActionBars().setGlobalActionHandler(
IReadmeConstants.RETARGET2,
new OutlineAction(MessageUtil.getString("Outline_Action2")));
OutlineAction action = new OutlineAction(MessageUtil.getString("Outline_Action3"));
action.setToolTipText(MessageUtil.getString("Readme_Outline_Action3"));
getSite().getActionBars().setGlobalActionHandler(
IReadmeConstants.LABELRETARGET3,
action);
...
Ne feledje el, hogy a kiemelő buboréksúgó-szöveget és egy címkét ad meg a második tevékenységhez, mivel ez engedélyezi az átcímkézést. Ha a readme kiemelő nézet aktív, akkor a kezelők (és címkéik) megjelennek a munkaterület-menüsoron.

Az átcímkézett tevékenység megjeleníti az új címkét.