Interne und externe Editoren

Kennung: org.eclipse.ui.editors

Beschreibung: An diesem Erweiterungspunkt können neue Editoren zur Workbench hinzugefügt werden. Ein Editor ist eine optische Komponente auf einer Workbenchseite. Er wird in der Regel zum Bearbeiten oder Anzeigen eines Dokuments oder Eingabeobjekts verwendet. Zum Öffnen eines Editors ruft der Benutzer normalerweise den Befehl "Öffnen" für ein Objekt IFile auf. Sobald diese Aktion ausgeführt wird, wird anhand der Workbenchregistrierung ein geeigneter Editor für den Dateityp entwickelt und anschließend ein neues Exemplar des Editortyps erstellt. Das tatsächliche Ergebnis hängt vom Typ des Editors ab. Die Workbench unterstützt die Erstellung interner Editoren, die eng in die Workbench integriert sind, sowie externer Editoren, die in einem separaten Framefenster gestartet werden. Zwischen diesen Extremformen gibt es jedoch verschiedene Integrationsstufen.

Bei einem internen Editor kann die enge Integration zwischen dem Workbenchfenster und der Editorkomponente erzielt werden. Das Menü und die Symbolleiste der Workbench werden mit einer Reihe von allgemeinen Aktionen (z. B. Ausschneiden, Kopieren und Einfügen) vorinstalliert. Die aktive Komponente, also die Sicht oder der Editor, stellt erwartungsgemäß die Implementierung für diese Aktionen bereit. Ein interner Editor kann außerdem neue Aktionen definieren, die im Workbenchfenster angezeigt werden. Diese Aktionen sind nur dann sichtbar, wenn der Editor aktiv ist.

Die Integration zwischen der Workbench und externen Editoren ist weniger stark. In diesem Fall kann die Workbench einen Editor zwar starten, hat jedoch anschließend keine Möglichkeit, den Status des externen Editors zu ermitteln oder über andere Wege als das Dateisystem mit ihm zusammenzuarbeiten.

Konfigurationsbefehle:

   <!ELEMENT extension (editor*)>

   <!ATTLIST extension
     point CDATA #REQUIRED
     id    CDATA #IMPLIED
     name  CDATA #IMPLIED
   >

   <!ELEMENT editor EMPTY>

   <!ATTLIST editor
      id               CDATA #REQUIRED
     name             CDATA #REQUIRED
      icon             CDATA #IMPLIED
      extensions       CDATA #IMPLIED
     class            CDATA #IMPLIED
     command          CDATA #IMPLIED
     contributorClass CDATA #IMPLIED
     default          (true | false) "false"
     filenames        CDATA #IMPLIED
     launcher         CDATA #IMPLIED
     symbolicFontName CDATA #IMPLIED
   >

Beispiele: Das folgende Beispiel zeigt die Definition für eine Erweiterung durch einen internen Editor.

   <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> 

API-Informationen: Falls das Attribut "command" verwendet wird, wird es als externe Programmbefehlszeile behandelt, die auf plattformspezifische Weise ausgeführt wird.

Bei Verwendung des Attributs "launcher" wird der Editor ebenfalls wie ein externes Programm behandelt. In diesem Fall muss die angegebene Klasse org.eclipse.ui.IEditorLauncher implementieren Das Startprogramm wird als Exemplar erstellt. Anschließend wird open(IFile file) aufgerufen, um den Editor zu starten.

Falls das Attribut "class" verwendet wird, geht die Workbench davon aus, dass es sich um einen internen Editor handelt, und die Klasse muss org.eclipse.ui.IEditorPart implementieren. Beim Definieren eines neuen Editortyps hat sich subclass org.eclipse.ui.EditorPart bewährt. Außerdem muss ein Attribut contributorClass definiert werden. Die angegebene Klasse muss org.eclipse.ui.IEditorActionBarContributor implementieren. Sie wird verwendet, um neue Aktionen zum Menü und zur Symbolleiste der Workbench hinzuzufügen, die die Funktionen des Editortyps wiedergeben.

Innerhalb der Workbench können mehrere Editoren eines bestimmten Typs geöffnet sein. So können beispielsweise einer oder mehrere geöffnete Java-Editoren vorhanden sein. Um die Erstellung doppelter Aktionen und Aktionsimages zu verhindern, ist das Editorkonzept zweigeteilt. Ein Ergänzungselement IEditorActionBarContributor ist für die Erstellung von Aktionen zuständig. Der Editor ist für die Aktionsimplementierung verantwortlich. Des Weiteren wird das Ergänzungselement von allen geöffneten Editoren gemeinsam benutzt. Dieser Entwurf bewirkt, dass für einen oder mehrere geöffnete Editoren immer nur ein Aktionsset vorhanden ist.

Das Ergänzungselement fügt neue Aktionen zum Menü und zur Symbolleiste der Workbench hinzugefügt, die den Editortyp wiedergeben. Diese Aktion werden gemeinsam benutzt und bei ihrem Aufruf für den aktiven Editor ausgeführt. Der aktive Editor wird an das Ergänzungselemente durch den Aufruf von IEditorActionBarContributor.setActiveEditor übergeben. Die Kennungen für Aktionen und Hauptgruppe im Workbenchfenster sind in org.eclipse.ui.IWorkbenchActionConstants definiert. Sie sollten als Referenzpunkt für das Hinzufügen neuer Aktionen verwendet werden. Menüs der höchsten Ebene werden unter Verwendung der folgenden Werte für das Attribut "path" erstellt:

Aktionen und Menüs, die zu diesen Pfaden hinzugefügt werden, werden nur dann angezeigt, wenn der zugeordnete Editor aktiv ist. Beim Schließen des Editors werden die Menüs und Aktionen entfernt.

Bereitgestellte Implementierung: Die Workbench stellt einen Standardtexteditor zur Verfügung. Im Lieferumfang von Endbenutzerprodukten können weitere Editoren enthalten sein. In einem solchen Fall werden die Editoren mit der oben beschriebenen Syntax als Erweiterungen registriert.

Copyright (c) 2002,2003 IBM Corporation und Andere. Alle Rechte vorbehalten. Dieses Programm und sein Begleitmaterial werden gemäß den Bedingungen der "Common Public License v1.0" zur Verfügung gestellt, die diese Verteilung begleitet und unter "http://www.eclipse.org/legal/cpl-v10.html" abgerufen werden kann.