A szerkesztő egy munkaterület rész, amelynek segítségével a felhasználó szerkeszthet egy objektumot (általában egy fájlt). A szerkesztők a fájlrendszer-szerkesztési eszközökhöz hasonlóan működnek azzal a kivétellel, hogy szorosan integrálva vannak a platform munkaterület felhasználói felületbe. A szerkesztő mindig társítva van egy bemeneti objektumhoz (IEditorInput). A bementi objektumok egy szerkesztendő dokumentumként vagy fájlként képzelhető el. A szerkesztőben végzett módosítások nem kerülnek véglegesítésre, amíg a felhasználó el nem menti őket.
Egy adott szerkesztőbemenethez a munkaterület-oldalon csak egy szerkesztő nyitható meg. Ha a felhasználó szerkeszti a readme.txt fájlt a munkaterületen, és ugyanabban a perspektívában megnyitja újra, akkor ugyanazt a szerkesztőt aktiválja. (Ugyanazon a fájlon egy másik munkaterület-ablakból vagy perspektívából megnyitható egy másik szerkesztő). A nézetekkel szemben ugyanaz a szerkesztőtípus - mint például a szövegszerkesztő - egy munkaterület-oldalon belül különböző bemenetekhez többször is megnyitható.
Az org.eclipse.ui.editors munkaterület kiterjesztési pontot a bedolgozók használják a szerkesztők munkaterülethez adásához. A bedolgozóknak, amelyek egy szerkesztőt adnak közre, a szerkesztő konfigurációs információival be kell jegyezniük a szerkesztő kiterjesztési pontot a plugin.xml fájlba. A szerkesztőinformációk egy része, mint például a munkaterület-menük és címkék által használt megvalósítási osztály, név és ikon, a nézetinformációkhoz hasonlók. Ezen felül a szerkesztőkiterjesztések megadják a szerkesztő által értelmezhető fájlkiterjesztéseket és fájlnévmintákat. A szerkesztők egy contributorClass elemet is megadhatnak, amely egy osztály, és tevékenységeket ad a munkaterület-menükhöz valamint az eszköztárakhoz, ha a szerkesztő aktív.
A szerkesztő felülete az IEditorPart, elemben került megadásra, de az IEditorPart nulláról megvalósítása helyett a bedolgozók kiterjeszthetik az EditorPart osztályt.
Megjegyzés: A szerkesztőkiterjesztés beállítható egy külső program elindításához vagy egy már meglévő java kód meghívásához. Ebben a leírásban azon szerkesztőkre koncentrálunk, amelyek szorosan integrálva vannak a munkaterülettel és az IEditorPart segítségével kerülnek megvalósításra.
A readme eszköz egy egyéni szerkesztőt biztosít elsődlegesen a saját kiemelőoldal munkaterület kiemelőnézethez biztosítása céljából.
A szerkesztőkiterjesztés konfigurációja az alábbiak szerint van megadva.
<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>
Megtekintjük az azonosító, név, ikon és osztály ismerős konfigurációs leírónyelvét. A extensions attribútum leírja a szerkesztő által értelmezett fájltípusokat. (filenames elemek is megadhat, ha speciálisabbra van szüksége.) A class megvalósítja a szerkesztőt, és a contributorClass felelős a szerkesztővel kapcsolatos tevékenységek biztosításáért. Tekintsük meg a közreadót részletesebben.
A közreadóosztály szerkesztővel kapcsolatos tevékenységeket ad hozzá a munkaterület-menühoz és -eszköztárhoz. Ennek meg kell valósítani az IEditorActionBarContributor felületet. A közreadó a szerkesztőtől független, mivel minden munkaterület-oldal rendelkezhet több azonos típusú szerkesztővel. Adott típusú szerkesztők egy közreadót osztanak meg ahelyett, hogy a szerkesztő minden példánya tevékenységeket és képeket hozna létre.
A ReadmeEditorActionBarContributor elemben három tevékenységet adunk közre: "Editor Action1," "Editor Action2," és "Editor Action3." Ezek a konstruktorban vannak beállítva.
public ReadmeEditorActionBarContributor() { ... action1 = new EditorAction(MessageUtil.getString("Editor_Action1")); action1.setToolTipText(MessageUtil.getString("Readme_Editor_Action1")); action1.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE_DISABLE); action1.setImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE_ENABLE); ... 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); ... }
A tevékenységek neve és ikonja a plugin.xml. helyett a kódban kerül beállításra. (Figyelmen kívül hagyjuk a tevékenységosztályok közötti különbségeket addig, amíg meg nem tekintjük az áttervezhető tevékenységeket.)
Figyelje meg, hogy a tevékenységinformációk mennyire hasonlítanak a nézettevékenység leírónyelvében látott viewActions információkhoz. A tevékenységek a kódban kerülnek leállításra, mivel kezelni kell a tevékenységek ugyanazon szerkesztő különböző példányai közötti megosztását. Ha a tevékenységek létrehozásra kerültek a konstruktorban, akkor a szerkesztő adott példányától függetlenek.
Ha a szerkesztő aktívvá válik és rendelkezik olyan tevékenységekkel, amelyeket telepíteni kell a munkaterület-menükben és eszköztáron, akkor a setActiveEditor üzenet átküldésre kerül a közreadóhoz. A közreadó csatlakoztatja a tevékenységeket egy adott szerkesztőhöz.
public void setActiveEditor(IEditorPart editor) { ... action1.setActiveEditor(editor); ... }
Ahogy láthatta, a tevékenységek megjelennek a munkaterület-menüben és az eszköztáron, ha a readme szerkesztő aktív.
Ezek a menü- és eszköztárelemek csak akkor jelennek meg, ha a szerkesztő aktív. A menü- és eszköztárelemek helye csak a Menü és eszköztár elérési utak részben leírt módon adható meg.
Maga a readme szerkesztő - ReadmeEditor - nem túl bonyolult. Kiterjeszti a TextEditor osztályt, így ez egy egyéni tartalomkiemelő-oldalt tud közreadni a kimenetnézethez, amikor a readme fájl szerkesztésre kerül. Nem változtatja meg a szövegszerkesztőn belüli viselkedést.
A szerkesztők gyakran rendelkeznek megfelelő tartalomkiemelőkkel, amelyek a szerkesztő tartalmának strukturált nézetét biztosítják és segítséget nyújtanak a felhasználó számára a szerkesztő tartalmában navigálás során. Részletes információkat a Tartalomkiemelők rész tartalmaz.
A Szövegszerkesztők és platformszöveg részben megtekintjük a szövegszerkesztők megvalósítását.