Interní a externí editory

org.eclipse.ui.editors

Tento bod rozšíření se používá pro přidávání nových editorů do pracovní plochy. Editor je viditelná komponenta v rámci stránky pracovní plochy. Obvykle se používá k úpravě nebo prohlížení dokumentu nebo vstupního objektu. Pro otevření editoru uživatel obvykle vyvolá příkaz "Otevřít" v IFile. Při provádění této akce je konzultován registr pracovní plochy, který zjistí příslušný editor odpovídající typu souboru, a poté je vytvořena nová instance typu editoru. Skutečný výsledek závisí na typu editoru. Pracovní plocha nabízí podporu pro vytváření interních editorů, které jsou těsně integrovány do pracovní plochy a externích editorů, které jsou spouštěny v samostatném okně. Mezi těmito dvěma extrémy existují různé úrovně integrace.

V případě interního editoru lze dosáhnout těsné integrace mezi oknem pracovní plochy a editorem. Do nabídky a panelu nástrojů pracovní plochy je předinstalována řada běžných akcí, jako například vyjmout, kopírovat a vložit. Aktivní část, tzn. pohled nebo editor, pak poskytuje implementaci pro tyto akce. Interní editor může rovněž definovat nové akce, které budou zobrazeny v okně pracovní plochy. Tyto akce se zobrazí pouze tehdy, když je editor aktivní.

Integrace mezi pracovní plochou a externími editory je menší. V tomto případě může pracovní plocha spustit editor, ale poté již nemá žádnou jinou možnost, jak zjistit stav externího editoru nebo s ním spolupracovat, než prostřednictvím systému souborů.

<!ELEMENT extension (editor*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT editor (contentTypeBinding*)>

<!ATTLIST editor

id               CDATA #REQUIRED

name             CDATA #REQUIRED

icon             CDATA #IMPLIED

extensions       CDATA #IMPLIED

class            CDATA #IMPLIED

command          CDATA #IMPLIED

launcher         CDATA #IMPLIED

contributorClass CDATA #IMPLIED

default          (true | false) "false"

filenames        CDATA #IMPLIED

symbolicFontName CDATA #IMPLIED

matchingStrategy CDATA #IMPLIED>


<!ELEMENT contentTypeBinding EMPTY>

<!ATTLIST contentTypeBinding

contentTypeId CDATA #REQUIRED>

Říká, že obsažený editor rozumí danému typu obsahu a je vhodný k úpravám souborů daného typu.



Dále je uveden příklad definice rozšíření interního editoru:

   

<extension point=

"org.eclipse.ui.editors"

>

<editor id=

"com.xyz.XMLEditor"

name=

"Fancy XYZ XML editor"

icon=

"./icons/XMLEditor.gif"

extensions=

"xml"

class=

"com.xyz.XMLEditor"

contributorClass=

"com.xyz.XMLEditorContributor"

symbolicFontName=

"org.eclipse.jface.textfont"

default=

"false"

>

</editor>

</extension>

Pokud je použit atribut command, bude považován za příkazový řádek externího programu, který bude proveden způsobem závislým na platformě.

Pokud je použit atribut launcher, bude editor rovněž považován za externí program. V tomto případě musí zadaná třída implementovat org.eclipse.ui.IEditorLauncher. Atribut launcher bude konkretizován a poté bude vyvolán open(IFile file) pro spuštění editoru.

Pokud je použit atribut class, pracovní plocha bude předpokládat, že to je interní editor a zadaná třída musí implementovat org.eclipse.ui.IEditorPart. Při definování nového typu editoru je běžným postupem subclass org.eclipse.ui.EditorPart. Je rovněž nezbytné definovat atribut contributorClass. Zadaná třída musí implementovat org.eclipse.ui.IEditorActionBarContributor, tato třída se používá pro přidávání nových akcí odrážejících vlastnosti typu editoru do nabídky a panelu nástrojů pracovní plochy.

V rámci pracovní plochy může existovat více než jeden otevřený editor určitého typu. Může například existovat více než jeden otevřený editor Java. Aby nedocházelo k vytváření duplicitních akcí a jejích obrázků, byl koncept editoru rozdělen na dvě části. IEditorActionBarContributor odpovídá za vytváření akcí. Editor pak odpovídá za implementaci akcí. Navíc je přispěvatel sdílen každým otevřeným editorem. Výsledkem tohoto designu je pouze jediná sada akcí pro jeden nebo více otevřených editorů.

Přispěvatel přidá nové akce odrážející vlastnosti typu editoru do nabídky a panelu nástrojů pracovní plochy. Tyto akce jsou sdíleny a při jejich vyvolání působí na aktivní editor. Aktivní editor je předán přispěvateli vyvoláním IEditorActionBarContributor.setActiveEditor. Identifikátory pro akce a hlavní skupiny v rámci okna pracovní plochy jsou definovány v org.eclipse.ui.IWorkbenchActionConstants. Ty by měly být používány jako referenční místo pro přidávání nových akcí. Nabídky nejvyšší úrovně jsou vytvářeny použitím následujících hodnot atributu cesty (path):

Akce a nabídky přidané do těchto cest budou zobrazeny pouze po dobu, kdy je odpovídající editor aktivní. Po zavření editoru budou nabídky a akce odebrány.

Pracovní plocha poskytuje vestavěný editor "Default Text Editor". Produkt koncového uživatele může obsahovat další editory jako součást dodávaného balíku. V takovém případě budou editory registrovány jako rozšíření pomocí výše uvedené syntaxe.