Property Editors

The extension method described in this chapter requires Java programming skills and knowledge of:

  • The Swing GUI component kit

  • The Escenic content model

When a Content Studio user opens a content item for editing, it is opened in a content editor: a tab displayed in the main editing area of the Content Studio window. Content editors are specialized for each content type: only the appropriate fields for each content type are displayed, and each field is displayed in a specialized control suited to the field's data type. A plain text field, for example, is displayed in a simple text field control, an HTML field is displayed in a rich text editing field, a boolean field is displayed as a check box, an enumeration field is displayed as a combo box and so on. These field editing controls are called property editors.

If the built-in property editors are not sufficient for your needs, you can implement more specialized property editors as plug-ins. You might, for example, want to build an editor composed of several inter-dependent controls to represent a complex field.

In order to make a custom property editor, you must be familiar with Swing. If you are familiar with Swing, making a property editor is quite straightforward. It involves the following tasks:

  • Define the mark-up that will be used in the content-type resource to identify the fields for which the custom property editor is to be used.

  • Add the defined markup to the required fields in the content-type resource.

  • Implement a class to display the custom property editor. This class must implements the PropertyEditorUI interface.

  • Implement a PropertyEditorSpi subclass that responds to property descriptors containing the markup values you have defined by creating an instance of your PropertyEditorUI implementation.

  • Create a JAR file containing your property editor components and a service loader definition file.

The first of the above tasks is straightforward Swing programming. For detailed information about PropertyEditorUI, see the API Javadoc.