Dokumentation zur Auswahl von ControlElementComponents
======================================================

Methoden des MouseListeners:
----------------------------

 - mousePressed(), wenn die Maustaste heruntergedrückt wird.
 - mouseClicked(), wenn die Maustaste geklickt wird.
 - mouseReleased(), wenn die Maustaste losgelassen wird.

Ablauf bei der Auswahl von Steuerelementen:
-------------------------------------------

Grundsätzlich:
______________

Steuerelemente können nur ausgewählt werden, wenn sie in einem FlowDiagram sind,
weil dort gespeichert wird, ob sie ausgewählt sind oder nicht.

Beim Auswählen sollen sich die Steuerelmente folgendermaßen verhalten: Mit entweder
Strg oder Shift lassen sich durch Klicken mehrere zugleich auswählen. Wenn keine der
beiden Tasten gedrückt ist, wird beim Klicken immer nur das angeklickte Steuerelement
ausgewählt. Das Verschieben von Steuerelemente darf natürlich keinen Einfluss auf das
Auswahl-Verhalten haben.

mousePressed():
_______________

Das Flag movedSinceLastMousePressed wird hier zurückgesetzt (natürlich nur, wenn
die linke Maustaste gedrückt wurde). Es gibt an, ob seit dem letzten MousePressed
das Steuerelement verschoben wurde. Es wird benötigt, um bei mouseReleased()
festzustellen, ob das Steuerelement allein ausgewählt werden soll oder nicht; siehe
dazu unter mouseReleased().

Wenn entweder Shift oder Strg gehalten wird, können mehrere Elemente ausgewählt werden.
In diesem Fall wird ein bereitsausgewähltes Steuerelement aus der Auswahl entfernt,
ansonsten wird es der Auswahl hinzugefügt.

Wenn keine der beiden Modifier-Tasten gedrückt ist UND nicht mehrere ausgewählt sind
bzw. das Steuerelement nicht selbst schon ausgewählt ist, wird erst die Auswahl
gelöscht, und dann nur das eine Steuerelement wieder hinzugefügt.

mouseClicked():
_______________

Hier wird für das Auswählen nichts gemacht. Bei Doppelklick, wird aber der Dialog zum
Ändern der Parameter aufgerufen.

mouseReleased():
________________

Der Cursor wird auf Standard gesetzt, falls er wegen dem Verschieben ein anderes Symbol
hat.

Wenn die ausgewählten Steuerelemente NICHT verschoben wurden (!movedSinceLastMousePressed)
UND NICHT Strg oder Shift gedrückt ist, wird die Auswahl gelöscht, und dieses Steuerelement
dann wieder hinzugefügt. Dies kommt von folgendem Problem: Wenn ich das komplette Auswahl-
Verhalten in mousePressed() implementieren würde, könnte man keine Steuerelemente
verschieben, weil dazu natürlich ein Herunterdrücken der Maustaste nötig ist. Dabei würde
aber mousePressed() aufgerufen und entweder alle Elemente abgewählt und nur noch das eine
ausgewählt, oder (bei Strg/Shift) gerade das eine abgewählt werden. Auf diese Weise, wie
es hier implementiert ist, wird aber das Auswahl-Verhalten nur ausgeführt, wenn die Steuer-
elemente nicht verschoben werden/wurden.

In jedem Fall wird zu dem Steuerelement gescrollt, das zuletzt zur Auswahl hinzugefügt
wurde.