Verbesserung
Wichtig
Detail
Fehlerbehebung
Wichtig
Detail
Aktuell können Templates nur für einzelne Teile einer Sicht (Tabelle, Dialog, Formular) formuliert werden. Zusätzlich möchte man im Layout-Editor eine komplette Sicht (Tabelle mit Dialog und Formular) für einen konkreten Modell-Typ erzeugen, aber später die vom Template angelegten Sichten einzeln weiterbearbeiten und auskonfigurieren.
Problem
Ist in einem Template ein Aufruf config:template-call enthalten und wird dieser ge-inlined, so besteht späte keine Möglichkeit diese Komponente selbstständig zu konfigurieren.
Statt dessen soll dieser config:template-call zu einer layout-reference werden, damit der Inhalt separat konfiguriert werden kann.
Umsetzung
- Ein Layout-Editor-Template (*.template.xml) kann mehrere andere Template-Aufrufe (<config:template-call>) enthalten. Diese config:template-call-Knoten werden beim Erstellung von Komponenten nicht expandiert, sondern werden zu eigenständigen Komponenten, die im Anschluss weiterkonfiguriert werden können.
- Es ist möglich sich in den Argumenten eines template-call auf die Komponenten zu beziehen die durch einen anderen template-call erzeugt werden. Dies geschieht, indem dem template-call das Attribut layout-scope gesetzt wird. Dieser Scope kann an anderen Stellen benutzt werden. Bsp.:
<config:template assistant-for="com.top_logic/layout.template.xml" > ... <config> <components> <config:template-call layout-scope="__tableTemplateScope__" template="com.top_logic/table.template.xml" /> <config:template-call template="com.top_logic.element/form.template.xml"> <arguments model="selection(__tableTemplateScope__#Table)"/> </config:template-call> </components> </config> </config:template>
Hier wird der lokale Scope __tableTemplateScope__ für die erste Komponente gesetzt. In der zweiten Komponente kann auf somit auf die Komponente "Table" aus dem Template table.template.xml referenziert werden.
- Es wurde die Konstante __enclosingLayoutScope__ eingeführt um auf Komponenten aus dem eigentlichen Template zu referenzieren.
Test
TestTableWithDetailTemplate.script.xml