Jumping Stage Flash

MiMa

Top Contributor
Die Erste FX Anwendung ist immer so ne Sache und da starte ich gleich bei einer MVC Anwendung mit einer BorderPane 😉.
Ich habe mir vorgenommen für jeden Bereich eines Fensters eine eigene FXML und Controller Datei zu erstellen.
Von der Startdatei rufe ich mit initLinks() eine Methode auf, in der ich den Linken Bereich der BorderPane mit der Dateiliste fülle. Dort wird der FXML Loader und den Controller für die Seite aufgerufen. In diesem Controller stecken die Methoden für das Listen der Dateien, das Selektieren und das finden der Medientypen, damit die entsprechenden Medaten in der Mitte angezeigt werden können.
Eigentlich wollte ich in der Startdatei dann mit der Methode initMitte() den mittleren Bereich aufrufen und die anderen Bereiche genau so.
Jetzt hänge ich aber im Controller links und habe alle Medienwerte um weiter zu verfahren.
Mir ist jetzt nicht ganz klar ob mein ursprügliches Verfahren, die Bereiche von der Startdatei zu füllen optimal sind?
Die Pane habe ich nicht an den SeitenController weiter geleitet (Nur das Modell), daher möchte ich nachfragen wie man das in der Regel macht.
Entweder schleife ich die BorderPane in den SeitenController, oder die gefundenen Werte müssen in die Startdatei zurück?
Über eine Tipp würde ich mich sehr freuen.
Danke
Mi
 
Du bräuchtest vermutlich ein (View)-Model, welches allen Controllern bekannt ist - zumindest wenn ich dein Problem richtig verstanden habe.

Kannst du das etwas abstrakter beschreiben?
 
In der BorderPane sollen im oberen Bereich später eine Toolbar implemetiert werden.
Der untere Bereich möchte ich mir für eine Statuszeile frei halten.
Der linke Bereich ist primär und wird als erstes mit Dateien aus einem festgelegten Verzeichnis gefüllt.
Bei selektion "einer" Datei wird im mittleren Bereich eine Vorschau des Dateiinhaltes angezeigt und Metadaten werden in veränderbare Textfelder dargestellt. Dort kann man Informationen ändern oder hinzufügen. Je nach Datei wird im mittleren Bereich die Anzeige anders dargestellt. Bei Büchern werden andere Metadaten angezeigt als bei Schriftverkehr, Rechnungen oder MP3 Audiodateien.
Im rechten Bereich sollen je nach Datei verschiedene Werkzeuge zur Verfügung gestellt werden.
Je nach Werkzeug kann sich die Darstellung im mittleren Bereich ändern. Zum Beispiel wenn man eine PDF aufsplittet oder zusammenfügt, ...
 
Ich habe das BorderPane Layout mit zum Kontroller übergeben.
Konnte den mittleren aus dem Seitenkontroller richtig anzeigen.
Weiß aber nicht, ob das die richtige Vorgehensweise ist?
 
Das ist eher konkreter, als abstrakter 😛

Wenn ich das Problem richtig verstehe, musst du Daten aus einem Controller an einen anderen weiter geben?
zB gewählte Datei, gewähltes Werkzeug, etc
 
Das habe ich soweit auch gemacht.
Das BorderPane als auch der Aufruf des Seitenkontrollers wird in der Startdatei erzeugt bzw. aufgerufen. Sollten dann nicht auch die anderen Bereiche im Startkontroller aufgerufen werden? Einerseits müsste dann auch nicht das BorderPane übergeben werden, andererseits muss ich die die erzeugten Daten zurück in die Startdatei bekommen?
Ist es egal in welchen Kontrollern die anderen Fenster aufgerufen werden?
Leider konnte zu dieser Konstellation keine Literatur finden, die beschreibt wie der Verlauf einer Anwendung im MVC Modell ist.
 
Generell sollte kein Controller, der nicht semantisch Teil eines anderen ist, einem anderem übergeben werden. Das führt in den meisten Fällen nur zu schlechterem Design.

Stattdessen wäre der Weg, die zu teilenden Daten in passenden Daten zu kapseln (=Model), und dieses Model kennen alle Controller, die es kennen müssen.
Das läuft dann ganz normal nach MVC mit zB Observer-Pattern. Der eine Controller speichert bei einer Aktion die Daten im Model, das informiert alle Observer, und diese zeigen dann ihrerseits die entsprechenden Dinge an.
 

Zurück
Oben