More specifically, the provider service allows implementors to do the following:
-A provider of the decoration service will be able to add an adornment to any diagram element.
-The decoration is typically an image, but can be any sort of graphics object or figure. A provider of the decoration service is not restricted to any specific graphic type.
-The provider can specify any of the following enumerated locations for a decoration on a shape, label, or list compartment item: center, north, northeast, northwest, south, southeast, southwest, east, west. For a connector, the percentage of the distance from the source end of the connector is used to provide a location for the decoration.
-The decoration can be any size that fits within the shape or connector boundary.
-The decoration would be justified accordingly to its position on the shape, i.e. northwest would be left justified with an offset from the top left hand side of the shape and northeast would be right justified with an offset from the top right hand side of the shape.
-Each decoration can either be included in the printed output of the diagram or not.
-If more than one provider adds a decoration to the same location, the decoration from the highest priority provider will appear on top of the other decoration(s).
<!ELEMENT extension (decoratorProvider)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
Describes the extension point.
<!ELEMENT decoratorProvider (Priority , object* , context*)>
<!ATTLIST decoratorProvider
class CDATA #REQUIRED>
The decorator provider description tag.
<!ELEMENT Priority EMPTY>
<!ATTLIST Priority
name (Lowest|Low|Medium|High|Highest) >
The description for the priority of the decorator provider
If more than one provider adds a decoration to the same location, the decoration(s) from the highest priority provider will appear on top of decoration(s) supplied by lower priority provider(s).
<!ELEMENT object (method* , staticMethod*)>
<!ATTLIST object
id CDATA #REQUIRED
class CDATA #IMPLIED>
A descriptor of an object that is examined by this provider. The object can have an optional set of methods to call upon.
<!ELEMENT staticMethod (value* , notValue*)>
<!ATTLIST staticMethod
name CDATA #REQUIRED
value CDATA #IMPLIED
notValue CDATA #IMPLIED>
A static method to call by reflection on the class. The static method has a name and a value. The value could be described by its string representation (value & notValue), or as an object "value" or "notValue". The rules of evaluation are as follows: 1- The return value string has to be in the "value" string set. 2- The return value string has to be not in the "notValue" string set. 3- The return value object has to be in the "value" object set. 4- The return value object has to be not in the "notValue" object set.
<!ELEMENT method (value* , notValue*)>
<!ATTLIST method
name CDATA #REQUIRED
value CDATA #IMPLIED
notValue CDATA #IMPLIED>
A method to call by reflection on the object. The method has a name and a value. The value could be described by its string representation (value & notValue), or as an object "value" or "notValue". The rules of evaluation are as follows: 1- The return value string has to be in the "value" string set. 2- The return value string has to be not in the "notValue" string set. 3- The return value object has to be in the "value" object set. 4- The return value object has to be not in the "notValue" object set.
<func(<param<,param>*>?)<.func(<param<,param>*>?)>* >?
<!ATTLIST value
class CDATA #IMPLIED>
A descriptor of an object that represents a method's returned value. The descriptor can include an optional set of methods to call on the "value" object.
<!ATTLIST notValue
class CDATA #IMPLIED>
A descriptor of an object that represents a method's returned value that is not required. The descriptor can include an optional set of methods to call on the "notValue" object.
<!ELEMENT context EMPTY>
<!ATTLIST context
decoratorTargets CDATA #IMPLIED>
The context contains a list of objects to be decorated using this provider. The list defined in decoratorTargets is comprised of items previously defined in the XML using the object element.
<extension id="myDecoratorProvider" name="%ext.myDecoratorProvider" point="org.eclipse.gmf.runtime.diagram.ui.decoratorProviders"> <decoratorProvider class="org.eclipse.gmf.runtime.diagram.ui.providers.MyDecoratorProvider"> <Priority name="Lowest"> </Priority> <object class="org.eclipse.gmf.runtime.notation.Node(org.eclipse.gmf.runtime.notation)" id="NODE"> <method name="getType()" value="MyNodeType"> </method> </object> <context decoratorTargets="NODE"> </context> </decoratorProvider> </extension>
Clients providing an extension to the decorator service need to create classes that implement the following interfaces:
org.eclipse.gmf.runtime.diagram.ui.services.decorator.IDecorator
org.eclipse.gmf.runtime.diagram.ui.services.decorator.IDecoratorProvider
Copyright (c) 2004, 2018 Model RealTime, HCL and others. All Rights Reserved.