Control

This is a control specific for the nodes application. The application has a menu and a toolbar and both are made up of controls.

The controls may have a label or an icon. They either forward directly to some other page or they spawn an applet dialog (see swingControl).

Currently, the control pages are used only to describe the user interface in an consistent way and to allow references between use cases and implementing pages and controls. In the future, however, the pages may be generated from the control description. Of course, this will require some extension, for instance the name of the swing panel class in case of java swing dialogs and the jars required for the dialog.

Schema

nodes:control inherits from nodes:shortId and nodes:versionable. Inheriting nodes:versionable will create a new version each time the node is saved. Inheriting from nodes:shortId will generate a unique property nodes:id the node is created the first time. It will use the value constraint for the nodes:baseId property for a prefix, i.e. it will generate names like GUI-1504.

A node may have properties

  • nodes:name. This is the label of the control and references the corresponding bundle entry.
  • nodes:nagivation. If the control navigates to some other page, this will reference that page. In the user interface, this will be a hyperlink.

The node may have child nodes nodes:description. This is a nodes:htmlDiv, i.e. an HTML DIV used to describe the requirement.

As custom_nodestypes.xml:

<nodeType
   hasOrderableChildNodes="true"
   isMixin="false"
   name="nodes:control"
   primaryItemName="">
  <supertypes>
   <supertype>nt:base</supertype>
   <supertype>nodes:shortId</supertype>
   <supertype>nodes:versionable</supertype>
  </supertypes>
  <propertyDefinition
    autoCreated="false"
    mandatory="false"
    multiple="false"
    name="nodes:navigation"
    onParentVersion="VERSION"
    protected="false"
    requiredType="Reference">
   <valueConstraints>
    <valueConstraint>nodes:page</valueConstraint>
   </valueConstraints>
  </propertyDefinition>
  <propertyDefinition
    autoCreated="false"
    mandatory="false"
    multiple="false"
    name="nodes:baseId"
    onParentVersion="VERSION"
    protected="false"
    requiredType="String">
   <valueConstraints>
    <valueConstraint>GUI</valueConstraint>
   </valueConstraints>
  </propertyDefinition>
  <propertyDefinition
    autoCreated="false"
    mandatory="false"
    multiple="false"
    name="nodes:name"
    onParentVersion="VERSION"
    protected="false"
    requiredType="Reference">
   <valueConstraints>
    <valueConstraint>nodes:bundleEntry</valueConstraint>
   </valueConstraints>
  </propertyDefinition>
  <childNodeDefinition
    autoCreated="false"
    defaultPrimaryType="nodes:htmlDiv"
    mandatory="false"
    name="nodes:description"
    onParentVersion="VERSION"
    protected="false"
    sameNameSiblings="false">
   <requiredPrimaryTypes>
    <requiredPrimaryType>nodes:htmlDiv</requiredPrimaryType>
   </requiredPrimaryTypes>
  </childNodeDefinition>
 </nodeType>

Template

The template looks like

The priority and the risk as well as the type of the sub requirements will be displayed as icons.

For that, in addition to configure the template columns as images here, you have to add the icons. For instance for the enumerated values of nodes:priority you have to add image files with the names HIGH, LOW and MEDIUM in folder /jcr:system/nodes/icons/nodes:requirement/nodes:priority.