enhancement
major
defect
major
minor
major
#29728
FlowChartComponent: Ein Neubau des Diagramms entfernt Objekte aus der Selektion, die im Diagramm nicht dargestellt werden
Problem
Nicht jedes Objekt, das logisch zum Modell eines FlowChartComponent gehört, wird auch als Inhalt in das Diagramm gerendert. Ein solches Objekt kann trotzdem selektiert sein, z.B. wenn ein Selektions-Partner dasselbe Modell anzeigt und dort ein Teil X selektiert wird, den das Diagramm nicht darstellt.
Wird das Diagramm dann neu gebaut, filtert FlowChartComponent.handleNewModel(Object) die Selektion auf die Objekte, die im Diagramm als SelectableBox vorkommen. X wird dabei aus dem Selektionskanal entfernt und damit insbesondere auch im Selektions-Partner deselektiert.
Dasselbe passiert bei jeder Selektionsänderung im Diagramm: Die Kanal-Selektion wird ausschließlich aus den im Diagramm selektierten Boxen gebildet, ein CTRL-Klick wirft X also ebenfalls aus der Selektion. Auch das Löschen eines im Diagramm dargestellten Objekts schreibt die Kanal-Selektion ohne X zurück.
Umgekehrt werden gelöschte Objekte, die das Diagramm nicht darstellt, nie aus der Selektion entfernt.
Lösung
Die Selektion ist logisch zweigeteilt: der indizierte Teil (Objekte, die im Diagramm als selektierbare Box dargestellt werden) und der Rest.
- Neubau des Diagramms: Nur der Teil der Selektion, der im bisherigen Diagramm dargestellt war, wird angepasst: Objekte daraus, die das neue Diagramm nicht mehr darstellt, werden entfernt. Der Rest bleibt unverändert.
- CTRL-Klick (inkrementelle Änderung): Das Element wird in den indizierten Teil aufgenommen bzw. daraus entfernt, der Rest bleibt erhalten.
- Normaler Klick (absolute Änderung, auch Klick in den Hintergrund): Der indizierte Teil wird auf das eine Element gesetzt, der Rest wird geleert.
- Gelöschte Objekte werden immer aus der Selektion entfernt, sowohl aus dem indizierten Teil als auch aus dem Rest.