DHBW-Karlsruhe/wouf — pull request #20 by juliushacker (2012-12-09 19:32:43+00:00)
Title: Fix: Erzeugung eines neuen Fensters bei Klick in Top-Navigation

Fix für Issue #3

Erklärung:
Das Programm verwendet für die zentrale GUI-Steuerung die Klasse
PlatformController. Sie übernimmt hierbei u. a. den Aufbau des
Programmfensters und die Verwaltung der Inhalte des Hauptfensters. Diese
verwaltet folglich auch die offenen Projekte. Bei der Neuanlage eines
Projektes wird das neu angelegte Projekt folglich auch im
PlatformController registriert.

Die Klasse ist hierbei als Singleton realisiert, da innerhalb des
Programmes nur ein Hauptfenster existieren sollte.

Der Fehler beruhte nun darauf, dass zum Start des Programmes über eine
eigene Runnable innerhalb des Event Dispatching Threads von Swing dieses
Singleton erzeugt wird. Hierbei wird korrekterweise das Programmfenster
erzeugt. Das erzeugte Objekt von PlatformController wird jedoch nirgends
innerhalb des Programmes gespeichert - nach der Ausführung des Runnables
wird es folglicherweise wieder zerstört.

Die Folge des Ganzen: Beim ersten Anlegen eines neuen Projektes versucht
der zuständige ActionListener nun, das neue Projekt im
PlatformController zu registrieren. Da allerdings kein Objekt der Klasse
mehr existiert, wird nun ein neues Objekt des Controllers erstellt und
somit ein neues Hauptfenster des Programmes aufgebaut.

Lösung:
Die Erzeugung des PlattformControllers beim Programmstart erfolgt nun
nichtmehr über den EDT von Swing, sondern im Hauptthread des Programmes,
da die Erzeugung hier auchnoch keinen Freeze des Programmes o. ä.
hervorruft, sondern zum normalen Programmstart dazugehört.