org.eclipse.ui.editors

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.

Szerkesztőtevékenység-közreadók

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.

Readme bejegyzés a munkaterület menüsoron három szerkesztőtevékenységgel

Munkaterület-eszköztár három readme tevékenységgel

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.

Szerkesztők és tartalomkiemelők

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.