In this tutorial, we'll only explain how to write the second kind of extension: an editor displaying a dialog box letting the user set or change the value of the XHTML bgcolor attribute. This attribute is defined by the XHTML 1.0 Transitional DTD for the following elements: body, table, tr, th, td. The modal dialog box displayed by this attribute editor is a standard javax.swing.JColorChooser.
A custom attribute editor implements interface SetAttribute.EditorFactory which is a factory class creating modal dialog boxes.
Excerpts from HexColorChooser.java:
public class HexColorChooser implements SetAttribute.EditorFactory { public SetAttribute.Editor createEditor(Component parentComponent, Element element, Name attributeName, DataType attributeType) { return new Chooser(parentComponent, dialogTitle(element, attributeName)); }
The above method is passed information identifying the attribute to be edited: element, attributeName, attributeType.
The modal dialog box created and returned by the above methods must implement interface SetAttribute.Editor.
private static class Chooser implements SetAttribute.Editor { public final Component parentComponent; public final String title; public Chooser(Component parentComponent, String title) { this.parentComponent = parentComponent; this.title = title; } public String editAttributeValue(String attributeValue) {Color color = fromHexString(attributeValue.trim()); if (color == null) { color = Color.black; } color = JColorChooser.showDialog(parentComponent, title, color); if (color == null) { return null; } return toHexString(color); } }
The |