Interní a externí editory
Identifikátor:
org.eclipse.ui.editors
Popis:
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ů.
Konfigurační markup:
<!ELEMENT extension (editor*)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
- point - Úplný identifikátor cílového bodu rozšíření.
- ID - Nepovinný identifikátor instance rozšíření.
- name - Nepovinný název instance rozšíření.
<!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>
- id - Jedinečný název, který bude použit pro identifikaci tohoto editoru.
- name - Přeložitelný název, který bude použit v uživatelském rozhraní pro tento editor.
- icon - Relativní název ikony, která bude použita pro všechny prostředky odpovídající zadaným rozšířením.
Ikona není vyžadována, pokud zadáte příkaz namísto třídy. V takovém případě použije pracovní plocha ikonu nabízenou operačním systémem.
- extensions - Volitelné pole obsahující seznam typů souborů srozumitelných pro editor. Jedná se o řetězec obsahující přípony souborů oddělené čárkami. Například editor, který rozpozná hypertextové dokumenty může registrovat "htm, html".
- class - Název třídy, která implementuje org.eclipse.ui.IEditorPart. Atributy class, command a launcher se navzájem vylučují. Pokud je tento atribut definován, měl by být také definován atribut contributorClass.
- command - Příkaz sloužící ke spuštění externího editoru. Spustitelný příkaz musí být umístěn v systémové cestě nebo v adresáři modulu plug-in. Atributy class, command a launcher se navzájem vylučují.
- launcher - Název třídy, která implementuje org.eclipse.ui.IEditorLauncher.
Atribut launcher otevře externí editor. Atributy class, command a launcher se navzájem vylučují.
- contributorClass - Název třídy, která implementuje org.eclipse.ui.IEditorActionBarContributor.
Tento atribut by měl být definován pouze, pokud je definován atribut class. 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.
- default - Pokud je hodnota true, bude tento editor použit jako výchozí editor pro daný typ. To je relevantní pouze v případě, kdy je pro stejný typ registrován více než jeden editor. Pokud není editor výchozím editorem pro daný typ, stále je možné jej pro vybraný prostředek spustit pomocí podnabídky "Otevřít pomocí...".
Věnujte pozornost skutečnosti, že tento atribut je v současnosti dodržován pouze pro přiřazování názvu souboru a přípon. Nebude dodržován pro vazby typu obsahu. Rozlišení na základě typu obsahu se bude provádět podle zásady kdo dřív přijde, ten dříve mele, a není zadáno explicitně.
- filenames - Volitelné pole obsahující seznam názvů souborů srozumitelných pro editor. Jedná se o řetězec obsahující názvy souborů oddělené čárkami. Například editor, který rozpozná konkrétní hypertextové dokumenty může registrovat "ejb.htm, ejb.html".
- symbolicFontName - Symbolický název písma. Symbolickým názvem písma musí být id definovaného písma (viz org.eclipse.ui.fontDefinitions). Pokud tento atribut chybí nebo je neplatný, potom je názvem písma hodnota "org.eclipse.jface.textfont" v paměti předvoleb editoru. Pokud neexistuje paměť předvolby nebo pokud není klíč definován, bude použito písmo JFace. Implementace editoru rozhodne, zda použije tento symbolický název písma pro nastavení písma.
- matchingStrategy - Název třídy, která implementuje org.eclipse.ui.IEditorMatchingStrategy.
Tento atribut by měl být definován pouze, pokud je definován atribut class. Díky tomu může rozšíření editoru nabízet svůj vlastní algoritmus pro porovnávání vstupu jednoho ze svých editorů se vstupem daného editoru.
<!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.
- contentTypeId - Identifikátor typu obsahu.
Příklady:
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>
Informace rozhraní API:
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):
-
additions - Představuje skupinu nalevo od nabídky Okno.
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.
Dodaná implementace:
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.
Copyright (c) 2002, 2005 IBM Corporation a další.
Všechna práva vyhrazena.
Tento program a doprovodné materiály jsou zpřístupněny za podmínek licence Eclipse Public License
v1.0, která je součástí této distribuce a je k dispozici na adrese
http://www.eclipse.org/legal/epl-v10.html