PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Laden und Speichern von DockingStation


oezi
06.02.2008, 00:12
Hi Beni,
schon die nächste Frage. Es funktioniert zwar, aber ich frage mich, ob ich da alles richtig gemacht habe:


Dockable tree = new DefaultDockable....
Dockable code = new DefaultDockable....
Dockable view = new DefaultDockable....

// Speichern
PredefinedDockSituation dock = new PredefinedDockSituation();
dock.put("tree", tree);
dock.put("code", code);
dock.put("view", view);

// Es gibt nur eine SplitDockStation namens station
byte[] conf = dock.write(Collections.singletonMap("station", DockStation)station));

// Laden (beim nächsten Aufruf des Programms)
PredefinedDockSituation dock = ... wie oben
DockStation newStation = dock.read(conf).get("station");

frontend.addRoot( station, "station" );

frame.add( ((SplitDockStation)station).getComponent() );


V.a. der Cast ganz am Schluß ist irgendwie seltsam. Aber ich habe keinen anderen Weg gefunden, die Componente der DockStation zu bekommen.

Danke und Gruß,
Christopher

Beni
06.02.2008, 09:46
Variante 1:
Du könntest die DockStation selbst ebenfalls mit "put" speichern, genau gleich wie die drei Dockables:

Dockable tree = new DefaultDockable....
Dockable code = new DefaultDockable....
Dockable view = new DefaultDockable....
SplitDockStation station = ???

frame.add( station.getComponent() );

// Speichern
PredefinedDockSituation dock = new PredefinedDockSituation();
dock.put("tree", tree);
dock.put("code", code);
dock.put("view", view);
dock.put("station", station );

// Es gibt nur eine SplitDockStation namens station
byte[] conf = dock.write(Collections.singletonMap("station", DockStation)station));

// Laden (beim nächsten Aufruf des Programms)
PredefinedDockSituation dock = ... wie oben
dock.read(conf);


Variante 2:
Ich habe in deinem Code gesehen, dass du DockFrontend benutzt. DockFrontend besitzt schon Methoden zum Laden und Speichern von Dock-Elementen (load & save, sowie read & write). Allerdings musst du deine Dockables dann beim DockFrontend anmelden (über die Methode "DockFrontend#add", welche genau gleich wie "put" funktioniert).

oezi
06.02.2008, 10:15
Variante 1:
Du könntest die DockStation selbst ebenfalls mit "put" speichern, genau gleich wie die drei Dockables.

Verstehe und read setzt dann alle Parameter. Habe meine Lösung damit etwas vereinfacht. Danke!


Variante 2:
Ich habe in deinem Code gesehen, dass du DockFrontend benutzt. DockFrontend besitzt schon Methoden zum Laden und Speichern von Dock-Elementen (load & save, sowie read & write). Allerdings musst du deine Dockables dann beim DockFrontend anmelden (über die Methode "DockFrontend#add", welche genau gleich wie "put" funktioniert).

Da ist sind die JavaDocs mir nicht ganz so klar gewesen: Ich registriere also meine Dockables and DockStations, und dann rufe ich load auf und dann werden die Einstellungen der registrierten Dockables gesetzt.

Beni
06.02.2008, 10:18
Da ist sind die JavaDocs mir nicht ganz so klar gewesen: Ich registriere also meine Dockables and DockStations, und dann rufe ich load auf und dann werden die Einstellungen der registrierten Dockables gesetzt.

Ja.
Dockables werden mit "DockFrontend.add" registriert.
Die Wurzel-DockStations werden mit "DockFrontend.addRoot" registriert.
Die save/write-Methoden speichern die Einstellungen aller registrierten und unregistrierten Dock-Elemente.
Die load/read-Methoden laden die Einstellungen aller registrierten Elemente, und erstellt neue Instanzen aller unregistrierten Elemente.