Aufgabe: Aufbau des GUI-Frameworks

aus AlricgWiki, der freien Wissensdatenbank

Hierzu auch die aktuelle Diskussion im Forum beachten! Evtl. wollen wir Eclipse RCP einsetzen!

Inhaltsverzeichnis

Profil

Dringlichkeit: Hoch
Schwierigkeit: Schwer zu sagen, geschätzt: Mittel.
Ziele: Aufbau eines gut zu erweiternden, leicht zu verstehenden Systems zum Management einer GUI mit "Docking-Windows". Hierfür soll ein Framework eingesetzt werden.
Wird bearbeitet von: Keiner
Für Rückfragen: Vincent

Beschreibung

Der Grundgedanke ist eine Umgebung wie bei "Eclipse", wo verschiedene Fenster möglichst beliebig angeordet werden können.

Generelle Anforderungen

  • Es gibt eine zur Startzeit festgelegte Menge von Fenstern, die angezeigt werden können. Dazu gehört zum Beispiel: "Liste aller Talente", "Liste aller Talente des Helden", "Liste aller Zauber" .... usw. ..., spezielle Fenster wie "Navigation", "Übersicht über den Helden", "Hilfe", uvm. (Was genau ist momentan nicht so wichtig.).
  • Es soll leicht möglich sein neue Fenster zu definieren.
  • Diese Fenster können möglichst beliebig innerhalb des Programms angeordnet werden. (wie gesagt: Ähnlich Eclipse)
  • Es gibt eine Menge von definierten "Sichten". Jede Sicht definiert eine Menge von Fenstern die angezeigt werden sollen, und wo/wie diese angezeigt werden. So gibt es z.B. eine Sicht für "Talente Auswählen", bei der das Fenster "Liste aller Talente" und "Liste aller Talente des Helden" angezeigt wird. Der User kann die Sichten aus einer Liste auswählen und so zwischen ihnen wechseln.
  • Beim auswählen einer Sicht wird die komplette GUI quasi neu aufgebaut.
  • Die Liste der Sichten kann dynamisch geändert werden. Der User kann die momentane Anordnung der Fenster einfach per Knopfdruck speichern, und diese in die Liste der Sichten hinzufügen. Es können auch Sichten gelöscht werden. Dies macht es notwendig, das die Sichten in eine Datei gespeichert werden, am besten per XML. ("InfoNode Docking Windows" unterstütz ein Speichern der Sichten)
  • Der Inhalt der Fenster ist dabei erstmal egal. Wenn es fertig ist, sollte jedes Fenster ein Panel beinhalten.

Unter Grundsätzlicher Aufbau der GUI ist nochmal der Grundgedanke beschrieben. Das was dort steht ist aber nicht bindend, sondern war nur die Grundidee. Das was hier steht ist weiter Fortgeschritten.


Anforderungen an Aktionen

  • Bei öffnen eines Fensters, das zuvor nicht angezeigt wurde, muss dieses eine Art "load-Methode" aufrufen, um die Daten zu laden.
  • Wenn ein Fenster aktiviert wird, also den Focus bekommt, soll dieses ebenfalls ein Event auslösen können. (wird später noch wichtig um die richtigen Steuerelemente ansprechen zu können)
  • Ein Fenster kann nicht nur über eine Sicht geöffnet werden, sondern auch aus dem Menu heraus.

Zur Performance

  • Fenster die nicht angezeigt werden, sollen auch nicht im Speicher stehen.
  • Es sollte zwar hübsch aussehen, aber Performance ist wichtiger.
  • Beim Wechsel zwischen zwei Sichten sollten nur diese Fenster neu geladen werden, die auch neu sind. "Alte" Fenster sollen dann ggf. nur verschoben werden.


Lösungsansatz

Frameworks

Gut geeignet scheint zu sein: InfoNode Docking Windows. Dieses hat auch eine gute Doku. Anderes Frameworks was in Frame kommt: flexdock (beides ist mit unserer GPL-Lizens OK)

Vorgehen

  • Generell erstmal ein Framework ausprobieren und schauen ob es die Anforderungen erfüllt. Ich schlage "InfoNode Docking Windows" vor, das auch eine gute Doku besitzt.
  • Nach der Einarbeitung erstmal einen Mechanismus für das Laden der Fenster überlegen. Denkbar währe z.B. alle möglichen Fenster in einer "Enumeration" zu defnieren, und eine Manager-Klasse zu implementieren, die das Laden u.ä. von Fenstern übernimmt und diese mit Daten füllt.
  • Dann eine Mechanismus für die Sichten überlegen (hier sollte das Framework schon was anbieten).
'Persönliche Werkzeuge