Implementing an Image Decorator for Author Mode
The AuthorImageDecorator extension point allows you to add a custom
decorator over images in Author mode. For example, you could use it to
add a message over an image informing the user that they can double-click the image
to edit
it.
How to Implement an AuthorImageDecorator
To implement your own AuthorImageDecorator, follow this procedure:
- Implement the
ro.sync.ecss.extensions.api.AuthorImageDecoratorinterface. - To instruct Oxygen XML Editor plugin to use this newly created implementation, use
either of the following methods:
- If you have configured an extensions bundle, you can return the
AuthorImageDecoratorimplementation using thero.sync.ecss.extensions.api.ExtensionsBundle.getAuthorImageDecorator()method. - Specify the
AuthorImageDecoratorin the Author image decorator individual extension in the Extensions tab of the Document Type configuration dialog box for your particular document type.
- If you have configured an extensions bundle, you can return the
Example
The following example illustrates an implementation for presenting a simple message over an image that informs the user that they can double-click the image to edit it:
/**
* Custom Author image decorator for drawing string over images.
*/
public class CustomAuthorImageDecorator extends AuthorImageDecorator {
/**
* @see ro.sync.ecss.extensions.api.AuthorImageDecorator#paint
(ro.sync.exml.view.graphics.Graphics, int, int, int, int,
ro.sync.exml.view.graphics.Rectangle,
ro.sync.ecss.extensions.api.node.AuthorNode,
ro.sync.ecss.extensions.api.AuthorAccess, boolean)
*/
@Override
public void paint(Graphics g, int x, int y, int imageWidth, int imageHeight,
Rectangle originalSize, AuthorNode element,
AuthorAccess authorAccess, boolean wasAnnotated) {
if ("image".equals(CommonsOperationsUtil.getLocalName(element.getName()))) {
g.drawString(
"[Double-click to edit image]",
// Draw near the top-left corner
x + 15,
y + 15);
}
}
Example result: In the top-left corner of the image, the following message will be displayed: [Double-click to edit image].