Verbesserung
Top-Thema
Detail
Wichtig
Detail
Detail
#25907
Layout-Editor: Inkonsistentes Verhalten von Aufklappzustand, Selektion und Reaktion auf Objektanlage
Ich habe für jede Komponentenart ein Tab erstellt, bestehend aus Selektionskomponente links und Formular rechts. Das Formular reagiert auf die Selektion der Selektionskomponente. Die Konfiguration erfolgt mittels der UI und den vereinfachten Templates. Die sich daraus ergebende Konfiguration wird als Standardkonfig beibehalten, es erfolgt keine Anpassung.
Desweiteren wird an der Selektionskomponente ein Dialog "Objektanlage" hinzugefügt und der Dialog auf die generischen Handler konfiguriert.
Das Fachmodell ist eine einfache Struktur. Projektwurzel extends StructuredElementContainer; Projektelement extends StructuredElement; ProjektelementContainer extends StructuredElementContainer, Projekelelement; Die Hierarchie ist homogen aufgebaut aus Projekt > Arbeitspaket > Aktivität, children jeweils entsprechend überschrieben, Aktivität ist nur Projektelement, kein Container.
Anschließend habe ich die Komponenten auf ihr Verhalten verglichen.
Im Ergebnis ist es stabil, aber im Detail ist das Verhalten inkonsistent.
Standardverhalten nach Login
Tree: Keine Selektion, Baum aufgeklappt auf Stufe 1
TreeTable: Keine Selektion, Baum nicht aufgeklappt
TreeGrid: Erste Zeile selektiert, Baum nicht aufgeklappt
Table: Erste Zeile selektiert
Grid: Erste Zeile selektiert
Vorschlag zur Konsistenz: Erstes Objekt wird selektiert. Falls es die Wurzel ist, dann aufklappen. Oder falls erstes Objekt keine Nachbarn hat, dann aufklappen.
Standardverhalten bei Selektion
Tree: Knoten wird selektiert
TreeTable: Knoten wird selektiert und Knoten wird aufgeklappt
TreeGrid: Knoten wird selektiert
Table: Zeile wird selektiert
Grid: Zeile wird selektiert
Vorschlag zur Konsistenz: keine Ahnung, beide Verhaltensweisen haben ihren Charme. Aus Performancesicht ist es vermutlich im Allgemeinen besser, Knoten bei Selektion nicht automatisch aufzuklappen.
Standardverhalten nach Anlage eines neuen Objekts
Grid: Zeilenselektion bleibt auf alten Objekt, neues Objekt wird gemäß der Sortierung eingefügt
Table: Zeilenselektion bleibt auf alten Objekt, neues Objekt wird gemäß der Sortierung eingefügt
TreeGrid: Selektion bleibt auf alten Objekt, Aufklappzustand bleibt erhalten, neues Objekt wird am Ende der Kinder eingefügt, Einordnung nach Sortierung erfolgt erst nach nochmaliger Betätigung der Sortierung oder Zuklappen/Aufklappen
TreeTable: Selektion bleibt auf alten Objekt, Aufklappzustand von Unterknoten der Selektion geht verloren, neues Objekt wird gemäß der Sortierung eingefügt
Tree: Selektion bleibt auf alten Objekt, Aufklappzustand bleibt erhalten, neues Objekt wird am Ende der Kinder eingefügt (klar, keine Sortierung vorhanden)
Vorschlag zur Konsistenz: Selektion bleibt auf alten Objekt, Aufklappzustand bleibt erhalten, neues Objekt wird gemäß der Sortierung eingefügt.
Vergleich der Konfigurationsoptionen für Baumdarstellungen
Tree: Wurzelknoten anzeigen, Zeige ausschließlich selektierbare Baumknoten an, Expandiere Knoten bei Selektion, Kollabieren der Selektion, Selektiere einen Baumknoten standardmäßig
TreeTable: Wurzelknoten anzeigen
TreeGrid: Wurzelknoten anzeigen
Die Option "Kollabieren der Selektion" bei Tree ist offenbar ohne Funktion.
Für ein konsistentes Verhalten bräuchte man mindestens "Selektiere einen Baumknoten standardmäßig" an der TreeTable und/oder "Expandiere Knoten bei Selektion" an der TreeGrid.
Code-Migration
Es wurde eine Konfiguration TreeViewConfig für baumartige Komponenten als Abstraktion eingeführt. Die Option in der Grid, TreeTable und Tree wurde von root-visible in rootVisible umbenannt.
Test
Unter Technisches Demo > Komponenten > Tabellen und Bäume befinden sich Test-Komponenten.
Die baumartigen Komponenten (TreeGrid, TreeTable und Tree) besitzen nun insbesondere die gleichen vier Konfigurationsoptionen, die auch getestet werden sollten:
- Baumknoten standardmäßig selektieren
- Selektion expandieren
- Wurzelknoten anzeigen
- Wurzelknoten expandieren