Wichtig
Kleinigkeit
Fehlerbehebung
Wichtig
Die Standardfunktionalität versagt, wenn man von einer Standard-Struktur den Root-Knoten nicht darstellt:
- Baum-Selektion ist inkonsistent: Wenn der Baum leer ist (kein Kind außer dem Root-Knoten) selektiert der Baum den unsichtbaren Root-Knoten.
- Create nicht möglich auf Ebene 1 (direkt unterhalb des unsichtbaren Root-Knotens). Wenn man die Selektion im Baum aufhebt (Ctrl-Click auf die Selektion), dann ist die Selektion im Baum leer und das Create-Kommando verschindet. Man kann also höchstens ein Kind auf Ebene 1 anlegen und das auch nur aufgrund des ersten Bugs.
Verbesserungen
Layout-Template for die Bearbeitung von Strukturen ohne Root-Knoten
Siehe /com.top_logic.element/webapp/WEB-INF/layouts/editStructureNoRoot.xml.
Konfigurierbare Modell-Transformation
Neue Konfigurationsoptionen:
WithModelTransform (neues Mixin-Interface von LayoutComponent.Config und CommandHandler.Config:
List<PolymorphicConfiguration<? extends ModelTransform>> getTransforms()
Eine ModelTransform ist eine Funktion, die ein Komponenten-Modell oder das Basis-Model eines CommandHandler`s transformiert. Bisher kann das Modell, dass ein `CommandHandler in handleCommand(DisplayContext, LayoutComponent, Object model, Map<String, Object>) erhält, über die Konfigurationsoption target relativ zu der Komponente, an der der Handler konfiguriert ist, gewählt werden. Mögliche Werte sind zugriffe auf Komponenten-Kanäle wie z.B. selection(self()). Jetzt kann zusätzlich noch eine Transformation dieses so gewählten Modells konfiguriert werden. Die Transformation wird auf dasjenige Modell angewendet, das über den Komponentenkanal in target gewählt wird. Die Transformation kann entweder in Java implementiert oder direkt über TL-Scritp angegeben werden:
#!xml <open-handler id="openCreateElementDialog" target="selection(self())" > <transforms> <script function="x -> ($x == null).ifElse(`DemoTypes#ROOT`, $x)"/> </transforms> </open-handler>
Hier bekommt der Open-Handler eines Dialogs entweder das selektierte Objekt der öffnenden Komponente, oder das Singleton ROOT der DemoTypes-Struktur, wenn nichts selektiert ist.
Code-Migration
- com.top_logic.layout.component.ModelForwardingDialogOpener ist entfallen. Konfiguration dieses Handlers kann entfallen, Funktionalität ist im Default-Open-Handler verfügbar.
- com.top_logic.mig.html.layout.DialogInfo.getOpenHandler() hat jetzt den com.top_logic.tool.boundsec.OpenModalDialogCommandHandler als Default-Implementierung. Explizite Konfigurationen können entfallen.
Test
- Die Aspekt-Vererbungs-Typen in tl-demo werden jetzt ohne Root-Knoten dargestellt.
- /com.top_logic.demo/src/test/com/top_logic/demo/scripted/tree/TestTreeWithoutRoot.script.xml