Edit online

Customizing the CSS Styles Filter

You can modify the CSS styles for each ro.sync.ecss.extensions.api.node.AuthorNode rendered in the Author mode using an implementation of ro.sync.ecss.extensions.api.StylesFilter. You can implement the various callbacks of the interface either by returning the default value given by Oxygen XML Author or by contributing to the value. The received styles ro.sync.ecss.css.Styles can be processed and values can be overwritten with your own. For example, you can override the KEY_BACKGROUND_COLOR style to return your own implementation of ro.sync.exml.view.graphics.Color or override the KEY_FONT style to return your own implementation of ro.sync.exml.view.graphics.Font.

For instance, in this simple document example, the filter can change the value of the KEY_FONT property for the <table> element:

package simple.documentation.framework;

import ro.sync.ecss.css.Styles;
import ro.sync.ecss.extensions.api.StylesFilter;
import ro.sync.ecss.extensions.api.node.AuthorNode;
import ro.sync.exml.view.graphics.Font;

public class SDFStylesFilter implements StylesFilter {

    public Styles filter(Styles styles, AuthorNode authorNode) {
        if (AuthorNode.NODE_TYPE_ELEMENT == authorNode.getType() 
          && "table".equals(authorNode.getName())) {
          styles.setProperty(Styles.KEY_FONT, new Font(null, Font.BOLD, 12));
        }
        return styles;
    }
}
Note: The complete source code for framework customization examples can be found in the oxygen-sample-framework module of the Oxygen SDK, available as a Maven archetype on the Oxygen XML Author website.