Verbesserung
Top-Thema
Wichtig
Kleinigkeit
Wichtig
Momentan kann man in Grids mehrere Zeilen über Checkboxen "markieren", sowie eine einzelne Zeile durch Mausklicks "selektieren". Manche Kommandos wirken auf markierte Zeilen, manche auf die selektierte Zeile. Der Unterschied zwischen "markieren" und "selektieren" soll für Nutzer transparent sein.
Die Selektion einzelner sowie mehrerer Zeilen soll (wie z.B. in Excel) möglich sein (per Strg/Shift).
Alle Kommandos sollen sich in Folge auf die selektierte(n) Zeilen beziehen, und eventuell deaktiviert werden, wenn sie keine Mehrfachselektion unterstützen. Bearbeitungs-Modus der Grid erlaubt nur Einfachselektion.
Am Wichtigsten ist die Erweiterung der Selektion per "Shift", die Selektion einzelner nicht zusammenhängender Zeilen per Ctrl ist weniger wichtig.
Wunschdatum: 20.08.2019
Umsetzung
Die Selektionen wurden vereinheitlicht, sodass es keinen Unterschied zwischen einer Zeilen- oder Checkboxselektion mehr gibt. Eine Zeile kann dadurch über eine Checkbox oder durch einen Klick auf die Zeile selektiert werden. Alle Aktionen für selektierte Zeilen verhalten sich jetzt gleich, unabhängig davon wie die Zeilen selektiert wurden. // Die Multiselektion mittels STRG/SHIFT wurde implementiert. Da das bisher verwendete Selektionsmodel aus dem TableViewModel nicht dazu geeignet ist, Multiselektion umzusetzen, wurde das Selektionsmodel durch das Model aus TableModel ersetzt. Ob eine Mutliselektion erlaubt ist, kann innerhalb der selectionModelFactory mit multiple konfiguriert werden.
Code Migration
GridComponent.getSelectionModel() verwendet bei Bäumen nicht mehr die FormGroups, sondern die GridTreeTableNodes. Code der das verwendet, muss entsprechend angepasst werden. Für den Wechseln zwischen diesen Objekten-Arten wurden unter #24566 neuen Methoden hinzugefügt. Siehe dazu den Abschnitt "Details" jenes Tickets.
Folgende API-Änderungen haben stattgefunden:
GridComponent.initViewModel(FormContext, TableViewModel) -> GridComponent.initViewModel(TableViewModel)
Test
Da selektierte Zeilen nun im TableModel statt im TableViewModel gespeichert werden, kann es in onReturn() zu Fehlern oder Merge Konflikten in #23466 kommen, da dort die aktuelle Zeile durch das TableViewModel ermittelt wird. Daher muss getestet werden, ob das Wechseln der Zeile mit Return noch korrekt funktioniert.