Studio Developer Manual / Version 2107
Table Of Contents
Annotated LinkLists
are stored in a Struct Property
. This is in contrast to a plain
LinkList
which is stored in a LinkList Property
.
Therefore, when introducing a new Annotated LinkList
, the doctype definition needs to have an XML property
with the Struct grammar.
<XmlProperty Name="structList" Grammar="coremedia-struct-2008" extensions:translatable="true"/>
The property editor for an annotated LinkList usually is a LinkListPropertyField
with the following
configuration:
linkListWrapper: An instance of
StructLinkListWrapper
, that wraps the annotated listrowWidget: An
AnnotatedLinkListWidget
that contains items which implementIAnnotatedLinkListForm
Existing Annotated LinkLists
can be extended with custom forms by using the
AddItemsPlugin
on the AnnotatedLinkListWidget
.
The custom forms need to implement the interface
IAnnotatedLinkListForm
and can then write new annotations using extendBy
of the
ValueExpression
provided by the settingsVE
.
The row expander of an Annotated LinkList
changes its appearance based upon the state of its row
widget(s) (see Figure 7.8, “
Annotated LinkList with item with changed default value
”, the changed parts are highlighted with red border).
That is, if there is at least one row widget instance in a row which differs from the default state, the row expander
icon gets inverted.
So the studio user gets a hint that at least one of the row widget instances has been changed.
To determine if a row widget differs from its default state, every IAnnotatedLinkListForm
may provide
a custom method with the following signature:
isAnnotated(annotatedLinkListProvider:IAnnotatedLinkListProvider, rowIndex:Number):Boolean
These custom methods are set via the LinkListPropertyField
config option
rowWidgetsAnnotatedPredicates
.
If there are no custom methods, a default strategy is chosen to determine if the row expander has to change its
appearance.
If there is at least one custom method, then the default strategy is ignored.