Dekoratoren

Kennung: org.eclipse.ui.decorators

Seit: Release 2.0

Beschreibung: An diesem Erweiterungspunkt können Dekoratoren zu Sichten hinzugefügt werden, die eine Subskription auf einen Dekoratormanager besitzen. Wie bei Release 2.1 wird das Konzept eines Lightweightdekorators eingesetzt, der die Imageverwaltung für den Dekorator übernimmt. Es ist außerdem möglich, einen Lightweightdekorator zu deklarieren, der ein Symbol, das keine Implementierung aus dem Plug-in benötigt, bei dessen Aktivierung einfach überlagert.

Die Aktivierung und/oder Sichtbarkeit einer Aktion kann mit den Elementen enablement bzw. visibility definiert werden. Diese beiden Elemente enthalten einen Booleschen Ausdruck, dessen Auswertung die Aktivierung und/oder Sichtbarkeit bestimmt.

Die Syntax ist für beide Elemente enablement und visibility identisch. Beide Elemente enthalten nur ein Unterelement für den Booleschen Ausdruck. Im einfachsten Fall handelt es sich hierbei um ein Element objectClass, objectState, pluginState oder systemProperty. In komplexeren Angaben können die Elemente and, or und not zu einem Booleschen Ausdruck kombiniert werden. Sowohl das Element and als auch das Element or muss 2 Unterelemente enthalten. Das Element not darf lediglich 1 Unterelement enthalten.

Konfigurationsbefehle:

   <!ELEMENT extension (decorator*)>

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

   <!ELEMENT decorator (description? , enablement?)>

   <!ATTLIST decorator
      id          CDATA #REQUIRED
      label       CDATA #REQUIRED
     class       CDATA #IMPLIED
     objectClass CDATA #IMPLIED
     adaptable   (true | false)
     state       (true | false)
     quadrant    (TOP_LEFT|TOP_RIGHT|BOTTOM_RIGHT|BOTTOM_LEFT)
     lightweight (true|false)
      icon        CDATA #IMPLIED
     location    (TOP_LEFT|TOP_RIGHT|BOTTOM_LEFT|BOTTOM_RIGHT|UNDERLAY)
   >

   <!ELEMENT description (#CDATA)>

   Ein optionales Unterelement, dessen Hauptteil Text enthalten sollte, der den Dekorator kurz beschreibt. Da dies auf der Seite für Benutzervorgaben des Dekorators angezeigt wird, empfiehlt es sich, dieses Element hinzuzufügen. Der Standardwert ist eine leere Zeichenfolge.

   <!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>

   Mit diesem Element wird die Aktivierung der Aktion definiert.

   <!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>

   Mit diesem Element wird die Sichtbarkeit der Aktion definiert.

   <!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>

   Dieses Element stellt eine Boolesche Operation AND für das Ergebnis der Auswertung seiner beiden Unterelementausdrücke dar.

   <!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>

   Dieses Element stellt eine Boolesche Operation OR für das Ergebnis der Auswertung seiner beiden Unterelementausdrücke dar.

   <!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>

   Dieses Element stellt eine Boolesche Operation NOT für das Auswertungsergebnis seiner Unterelementausdrücke dar.

   <!ELEMENT objectClass EMPTY>

   Mit diesem Element wird die Klasse oder Schnittstelle aller Objekte in der aktuellen Auswahl ausgewertet. Wenn alle Objekte in der Auswahl die angegebene Klasse oder Schnittstelle implementieren, wird der Ausdruck mit dem Ergebnis "true" ausgewertet.

   <!ATTLIST objectClass
     name CDATA #REQUIRED
   >

   <!ELEMENT objectState EMPTY>

   Mit diesem Element wird der Attributstatus aller Objekte in der aktuellen Auswahl ausgewertet. Wenn alle Objekte in der Auswahl den angegebenen Attributstatus aufweisen, wird der Ausdruck mit dem Ergebnis "true" ausgewertet. Damit ein solcher Ausdruckstyp ausgewertet wird, müssen alle Objekte in der Auswahl die Schnittstelle org.eclipse.ui.IActionFilter implementieren bzw. ihr zugeordnet sein.

   <!ATTLIST objectState
     name  CDATA #REQUIRED
     value CDATA #REQUIRED
   >

   <!ELEMENT pluginState EMPTY>

   Mit diesem Element wird der Status eines Plug-ins ausgewertet. Der Status des Plug-ins kann installed oder activated lauten.

   <!ATTLIST pluginState
      id    CDATA #REQUIRED
     value (installed|activated) "installed"
   >

   <!ELEMENT systemProperty EMPTY>

   Mit diesem Element wird der Status einer bestimmten Systemeigenschaft ausgewertet. Der Eigenschaftswert wird aus java.lang.System abgerufen.

   <!ATTLIST systemProperty
     name  CDATA #REQUIRED
     value CDATA #REQUIRED
   >
Beispiele: Das folgende Beispiel zeigt Dekoratoren:

Zunächst ein vollständiger Dekorator. Der Plug-in-Entwickler muss die Imageunterstützung selbst verwalten.

 <extension point="org.eclipse.ui.decorators"> 
        <decorator
            id="com.xyz.decorator" 
            label="XYZ Decorator" 
            state="true" 
            class="com.xyz.DecoratorContributor">
            <enablement>
                <objectClass name="org.eclipse.core.resources.IResource"/> 
            </enablement>
        </decorator>
    </extension> 

Nun ein Lightweightdekorator. Es gibt zwar eine konkrete Klasse, aber da es sich um ein Element "ILightweightLabelDecorator" handelt, muss lediglich Text und ein Element "ImageDescriptor" bereitgestellt werden, und es ist somit keine Ressourcenverarbeitung erforderlich.

 <extension point="org.eclipse.ui.decorators"> 
        <decorator
            id="com.xyz.lightweight.decorator" 
            label="XYZ Lightweight Decorator"                 
            state="false" 
            class="com.xyz.LightweightDecoratorContributor" 
            lightweight="true" >
            <enablement>
                <objectClass name="org.eclipse.core.resources.IResource"/> 
            </enablement>
        </decorator>
    </extension> 

Als Nächstes ein deklarierender Lightweightdekorator. Es gibt keine konkrete Klasse. Daher wird ein Symbol und ein Quadrant für die Anwendung des Symbols angegeben.

 <extension point="org.eclipse.ui.decorators"> 
        <decorator
            id="com.xyz.lightweight.declarative.decorator" 
            label="XYZ Lightweight Declarative Decorator" 
            state="false" 
            lightweight="true" 
            icon="icons/full/declarative.gif" 
            location="TOP_LEFT"> 
            <enablement>
                <objectClass name="org.eclipse.core.resources.IResource"/> 
            </enablement>
        </decorator>
    </extension>

API-Informationen: Der Wert des Attributs class muss der vollständig qualifizierte Name einer Klasse sein, die org.eclipse.jface.viewers.ILabelDecorator (bei "lightweight" = "false") oder org.eclipse.jface.viewers.ILightweightLabelDecorator implementiert. Diese Klasse wird so spät wie möglich geladen, um ein Laden des Plug-ins zu verhindern, bevor es wirklich benötigt wird. Deklarierende Dekoratoren enthalten keine Plug-in-Aktivierung und sollten verwendet werden, wo immer dies möglich ist. Nicht-Lightweightdekoratoren werden tatsächlich veraltet sein.

Bereitgestellte Implementierung: Plug-ins können an diesem Erweiterungspunkt neue Dekoratoren für die Anwendung in Sichten hinzufügen, die den Dekoratormanager als Bezeichnungsdekorator verwenden. Zur Verwendung des Dekoratormanagers verwenden Sie das Ergebnis von "IViewPart.getDecoratorManager()" als Dekorator für ein Exemplar von "DecoratingLabelProvider". Dies wird gegenwärtig durch den Ressourcennavigator genutzt.

Copyright (c) 2002,2003 IBM Corporation und Andere. Alle Rechte vorbehalten. Dieses Programm und sein Begleitmaterial werden gemäß den Bedingungen in 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.