Re: Swing Komponenten durch den Anwender editiert
- From: Wolfgang Rostek <wolfgang.rostek@xxxxxx>
- Date: Fri, 25 Jan 2008 12:52:18 -0800 (PST)
Ok, wie immer sollte ich mehr Hintergrund bei
den Fragen mitgeben.
Wir pflegen/erweitern eine bestehende Swing Rich Client
Applikation. Der Client hält an einigen Stellen recht
umfangreiche Daten. Um Dateninkonsistenz im Client
zu verhindern wird das Öffnen einiger Fenster verboten,
wenn schon offene Fenster die gleichen Daten verwenden
oder referenzieren. Also ein sehr konservativer Ansatz,
zu konservativ für die Anwender. Sie möchten natürlich
frei navigieren können und nur gelegentlich aufgefordert
werden, die editierten Daten zu speichern.
Heute sehr schön zu sehen in Frameworks wie Eclipse.
Aber meine Anwendung stammt noch aus AWT Zeiten
und es gab leider andere Prioritäten zu erledigen.
Es geht also darum etwas ähnliches wie zu implementieren,
wie es Eclipse mit Resource Changes macht. Ein
globaler Notification Manager, den Windows benachrichtigen
können und worauf andere Windows reagieren.
Z.B. beim Öffnen eines neuen Windows darauf aufmerksam
machen, dass zuerst in schon offenen Windows editierte
Daten gespeichert werden müssen oder das neue Window
auf Daten nur lesenden Zugriff bekommt.
Bisher unterstützen die Windows weder Memento, noch Undo.
Im ersten Schritt möchte ich Ihnen beibringen, wenigsten einen
dirty Zustand durch editieren mitzuteilen.
Und nun zum Kommentar von Uwe. Jedes erste Editieren des
Anwenders im Window soll den Event auslösen.
Für alle JComponents habe ich zum Glück eine Zwischenschicht,
so dass niemals direkt die Sun Klassen instanziiert werden. In
dieser Zwischenschicht möchte ich dies möglichst abhandeln.
Momentan plane ich folgendermaßen vorzugehen.
Die top level Klassen JFrame/JDialog implementieren ein
Interface IDirty (set/get auf boolean). Sie haben sich als
Emitter und Listener bei einem globalen Notification Manager
angemeldet.
Die Komponenten im Window überwachen und finden
Werteänderungen heraus, die direkt durch den Anwender
verursacht wurden (s. meinen anderen Beitrag). Es
wird die Parent Container Hierarchie iteriert, bis ein
IDirty gefunden und gesetzt werden kann. Das Window
schickt die globale Notification und benachrichtigt
andere (und sich selbst). Die Notification ist vetoable
und kann von Listenern zurückgewiesen werden.
Eine Message Box oder andere Aktionen können
daraus resultieren.
Ich bin gerade erst am Anfang des Designs und
versuche mich an Eclipse zu orientieren.
Gruß
Wolfgang R.
.
- References:
- Swing Komponenten durch den Anwender editiert
- From: Wolfgang Rostek
- Re: Swing Komponenten durch den Anwender editiert
- From: Uwe Naumann
- Swing Komponenten durch den Anwender editiert
- Prev by Date: Re: Swing Komponenten durch den Anwender editiert
- Next by Date: Re: Swing Komponenten durch den Anwender editiert
- Previous by thread: Re: Swing Komponenten durch den Anwender editiert
- Next by thread: Re: Swing Komponenten durch den Anwender editiert
- Index(es):
Relevant Pages
|