Studio Developer Manual / Version 2304
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
(which basically
is providing a settingsVE
configuration) and can then start using property editors bound to
sub properties of the settingsVE
ValueExpression
via extendBy
.
Note
Like every property editor the annotated link list form should consider the read-only state. For this our
default property editors always provide the config forceReadOnlyValueExpression
. Either implement
this manually or utilize a base component like PropertyFieldGroup
(see example below).
The row expander of an Annotated LinkList
changes its appearance based upon the state of its row
widget(s) (see Figure 9.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.