Menüs, Symbolleisten und Aktionen in Editoren

Kennung: org.eclipse.ui.editorActions

Beschreibung: An diesem Erweiterungspunkt können Aktionen zu den Menü- und Symbolleisten von Editoren hinzugefügt werden, die durch andere Plug-ins definiert werden.

Die anfängliche Ergänzungsgruppe für einen Editor wird durch einen anderen Erweiterungspunkt (org.eclipse.ui.editors) definiert. Ein Aktionsset wird erstellt und von allen Exemplaren desselben Editortyps gemeinsam verwendet. Wenn sie aufgerufen wird, bezieht sich diese Aktion auf den aktiven Editor. Dieser Erweiterungspunkt folgt demselben Muster. Jede Aktionserweiterung wird erstellt und von allen Exemplaren desselben Editortyps gemeinsam benutzt. Die Aktionsklasse muss org.eclipse.ui.IEditorActionDelegate implementieren.  Der aktive Editor wird durch den Aufruf von IEditorActionDelegate#setActiveEditor an den Stellvertreter übergeben.

Konfigurationsbefehle:

   <!ELEMENT editorContribution (menu | action)*>
   <!ATTLIST editorContribution
      id         CDATA #REQUIRED
      targetID   CDATA #REQUIRED
   >

  • id - Eine eindeutige Kennung, mit der auf diese Ergänzung verwiesen werden kann.
  • editorID: Die eindeutige Kennung eines zuvor registrierten Editors, der das Ziel dieser Ergänzung ist.
  •    <!ELEMENT menu (separator)+>
       <!ATTLIST menu
          id         CDATA #REQUIRED
          label      CDATA #REQUIRED
          path       CDATA #IMPLIED
       >    <!ELEMENT separator EMPTY>
       <!ATTLIST separator
          name       CDATA #REQUIRED
       >
  • name: Ein Name des Trennzeichens, auf das später im Aktionspfad als letztes Token verwiesen werden kann. Trennzeichen dienen daher als benannte Gruppen, in denen Aktionen hinzugefügt werden können.
  •    <!ELEMENT action (selection)* (enablement)?>
       <!ATTLIST action
          id                NMTOKEN #REQUIRED
          label             CDATA #REQUIRED
          accelerator       CDATA #IMPLIED
          menubarPath       CDATA #IMPLIED
          toolbarPath       CDATA #IMPLIED
          icon              CDATA #IMPLIED
          disabledIcon      CDATA #OPTIONAL
          hoverIcon         CDATA #OPTIONAL
          tooltip           CDATA #IMPLIED
          helpContextId     CDATA #IMPLIED
          state             (true | false) #IMPLIED
          class             CDATA #REQUIRED
          enablesFor        CDATA #IMPLIED
       >    <!ELEMENT selection EMPTY>
       <!ATTLIST selection
          class             CDATA #REQUIRED
          name              CDATA #IMPLIED
       >    <!ELEMENT enablement (and | or | not | objectClass | objectState | systemProperty
            | pluginState)>
       <!ATTLIST enablement EMPTY>
    In Version 2.0 von Eclipse kann das Element enablement verwendet werden, um die Aktivierung für die Aktion zu definieren. Weitere Informationen zur Verwendung des Elements enablement finden Sie unter actionExpressions.html.
    Die in der Anfangseinstellung geltenden Aktivierungskriterien für eine Aktionserweiterung werden durch enablesFor, selection und enablement definiert. Sobald der Aktionsstellvertreter jedoch als Exemplar erstellt wurde, kann er den Aktivierungsstatus einer Aktion direkt mit seiner Methode selectionChanged steuern.

    Aktions- und Menübezeichnungen können Sonderzeichen enthalten, die mnemonische Zeichen und Direktaufrufzeichen gemäß den folgenden Regeln codieren:

    1. Mnemonische Zeichen werden angegeben, indem ein Et-Zeichen (&) vor ein ausgewähltes Zeichen des umsetzbaren Textes gesetzt wird. Da das Et-Zeichen in XML-Zeichenfolgen nicht zulässig ist, muss die Zeichenentität &amp; verwendet werden.
    2. Optionale Direktaufrufzeichen werden am Ende der Namenszeichenfolge mit dem Zeichen @ angegeben, auf das eine Reihe von Änderungswerte und das eigentliche Direktaufrufzeichen folgen (Beispiel: &amp;Speichern@Strg+S). Änderungswerte können mit dem Zeichen + als Begrenzer verkettet werden (Beispiel. @Strg+Umschalt+S).
    Wenn zwei oder mehr Aktionen einem Menü oder einer Symbolleiste durch eine einzige Erweiterung hinzugefügt werden sollen, werden die Aktion in umgekehrter Reihenfolge (als in der Datei plugin.xml aufgelistet) angezeigt. Dieses Verhalten ist nicht sehr intuitiv, wurde jedoch erst nach dem Code-Freeze der Eclipse-Plattform-API festgestellt. Würde dieses Verhalten jetzt geändert, wäre jedes Plug-in, das auf dem vorhandenen Verhalten aufbaut, nicht funktionsfähig.

    Beispiele:

    Das folgende Beispiel stellt einen Erweiterungspunkt für eine Editoraktion dar:

       <extension point="org.eclipse.ui.editorActions">
          <editorContribution
             id="com.xyz.xyzContribution"
             targetID="com.ibm.XMLEditor">
             <menu id="XYZ" label="&amp;XYZ Menu">
                <separator name="group1"/>
             </menu>
             <action
                  id="com.xyz.runXYZ"
                  label="&amp;Run XYZ Tool"
                  menubarPath="XYZ/group1"
                  toolbarPath="Normal/additions"
                  state="true"
                  icon="icons/runXYZ.gif"
                  tooltip="XYZ-Tool ausführen"
                  helpContextId="com.xyz.run_action_context"
                  class="com.xyz.actions.RunXYZ">
             </action>
          </editorContribution>
       </extension>

    In diesem Beispiel wird die angegebene Aktion im neuen Menü der obersten Ebene namens "XYZ Menü" durch ein Markierungsfeldelement und in der Symbolleiste durch eine Umschaltfläche dargestellt.

    Das folgende Beispiel stellt einen Erweiterungspunkt für eine Editoraktion dar:

       <extension point="org.eclipse.ui.editorActions">
          <editorContribution
             id="com.xyz.xyz2Contribution"
             targetID="com.ibm.XMLEditor">
             <menu
                id="XYZ2"
                label="&amp;XYZ2 Menu"
                path="edit/additions">
                <separator name="group1"/>
             </menu>
             <action
                  id="com.xyz.runXYZ2"
                  label="&amp;Run XYZ2 Tool"
                  menubarPath="edit/XYZ2/group1"
                  state="true"
                  icon="icons/runXYZ2.gif"
                  tooltip="Run XYZ2 Tool"
                  helpContextId="com.xyz.run_action_context2"
                  class="com.xyz.actions.RunXYZ2">
             </action>
          </editorContribution>
       </extension>

    In diesem Beispiel wird die angegebene Aktion im Untermenü namens "XYZ2 Menü" im Menü der obersten Ebene "Bearbeiten" durch ein Markierungsfeldelement dargestellt.

    API-Informationen: Der Wert des Attributs class muss der vollständig qualifizierte Name einer Java-Klasse sein, die org.eclipse.ui.IEditorActionDelegate implementiert. Diese Schnittstelle wird so spät wie möglich geladen, um ein Laden des Plug-ins zu verhindern, bevor es wirklich benötigt wird. Die Methode setActiveEditor wird immer dann aufgerufen, wenn ein Editor des angegebenen Typs aktiviert wird. Für alle Exemplare des angegebenen Editortyps wird - ungeachtet der Anzahl von Editorexemplaren, die gegenwärtig in der Workbench geöffnet sind - nur 1 Set mit Aktionen und Menüs erstellt.

    An diesem Erweiterungspunkt können Menüs, die zuvor durch den Zieleditor erstellt wurden, durch Aktionen ergänzt werden. Außerdem kann das Workbench-Fenster durch Aktionen und Menüs ergänzt werden. Die Kennungen für die Aktionen und Hauptgruppen im Workbench-Fenster sind in org.eclipse.ui.IWorkbenchActionConstants definiert. Sie sollten als Verweispunkt für das Hinzufügen neuer Aktionen verwendet werden.  Menüs der höchsten Ebene werden erstellt, indem die folgenden Werte für das Attribut path verwendet werden:

    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 integrierten Standardtexteditor zur Verfügung. Plug-ins können diesen Standardeditor ergänzen wie auch Editoren, die durch andere Plug-ins bereitgestellt werden.

    Copyright IBM Corporation und Andere 2000, 2002.