Ich hatte mal als Übungsaufgabe eine mittelgrosse SWT Applikation zusammengeschustert die eine schnelle Bildverarbeitung für Sportfotografen bietet. Also durchgängig Tastaturbedienung (Maus geht natürlich auch) und auf kleine Netbook-Bildschirme optimiert. Die GUIs wurden mit WindowBuilder gemacht, das möchte ich auch gerne beibehalten. Die App ist zur Zeit bei paar Anwendern zur vollen Zufriedenheit im Einsatz.
Im Anhang hab ich mal ein Foto vom Hauptfenster gemacht, was da rot umrahmt ist sind eigenständige Widgets.
Bisserl tricky ist die Tastatursteuerung, welche sich auf verschiedene Bänke verteilt (je nach Modus machen die Tasten was anderes). Im Moment ist die Tastatursteuerung ein einfacher, endlicher Automat der recht aufgeräumt über if/switch gebaut wurde - aufgeteilt auf mehrere Methoden welche die unterschiedlichen Tastaturbänke wiederspiegeln.
Etwas Ärger bereitet mir das Zusammenspiel zwischen Combos und der Tastatur: in den meissten Fällen kann ich im widgetSelected Event einer Combo ein passendes Tastaturevent faken, manchmal muss ich aber auch kleine Teile des Automaten dort abgeändert reinpacken.
Nächstes Problem sind die diversen Erfassungsmasken die um die Applikation herum aufpoppen. Entweder per Tastatur, Menuepunkt oder vom Workflow so vorgegeben (zb. soll wärend des Ladens von Bildern ab einer bestimmten Verarbeitungsstufe der IPTC-Editor aufpoppen und die Verarbeitung weiterlaufen).
Wie macht man das mit Plain SWT ordentlich?
AWT hatte den Vorteil, dass jedes Widget dort ein set//getName() hatte - damit konnte man recht schön irgendwelche propertyChange-Eventbussysteme bauen (bis man sich irgendwo im Namen vertippte und die Fehlersuche losging).
Im Moment groke ich darüber nach, für alle GUI-Elemente ein Interface für einen Eventbus einzuführen und als Event herumzuschicken "ich hätte jetzt gerne den Zustand X" (also zb. ein Bild weiterblättern - die Galerie müsste dann das nächste Bild anzeigen, das Hauptfenster sich das passende Bild aus dem Cache ziehen, das Exif-Fenster was neues anzeigen, Histogram ebenso).
Oder die Events sind einfach nur ganz primitive Events vergleichbar mit den Tastaturevents - halt nur abstrahiert.
Grundsätzlich hätte ich mit einem solchen "Eventbus" den Vorteil, dass der Unterbau sich nicht viel ändert - statt auf Tastaturevents zu lauschen wird das in in ca. 90-100 eindeutige Events aufgedröselt und ich könnte zb. den endlichen Automaten in eine eigene Klasse verlegen.
Oder wie macht man es sonst? (trööt: bitte Posting 3x lesen ehe Du schreibst).
Bernd
Im Anhang hab ich mal ein Foto vom Hauptfenster gemacht, was da rot umrahmt ist sind eigenständige Widgets.
Bisserl tricky ist die Tastatursteuerung, welche sich auf verschiedene Bänke verteilt (je nach Modus machen die Tasten was anderes). Im Moment ist die Tastatursteuerung ein einfacher, endlicher Automat der recht aufgeräumt über if/switch gebaut wurde - aufgeteilt auf mehrere Methoden welche die unterschiedlichen Tastaturbänke wiederspiegeln.
Etwas Ärger bereitet mir das Zusammenspiel zwischen Combos und der Tastatur: in den meissten Fällen kann ich im widgetSelected Event einer Combo ein passendes Tastaturevent faken, manchmal muss ich aber auch kleine Teile des Automaten dort abgeändert reinpacken.
Nächstes Problem sind die diversen Erfassungsmasken die um die Applikation herum aufpoppen. Entweder per Tastatur, Menuepunkt oder vom Workflow so vorgegeben (zb. soll wärend des Ladens von Bildern ab einer bestimmten Verarbeitungsstufe der IPTC-Editor aufpoppen und die Verarbeitung weiterlaufen).
Wie macht man das mit Plain SWT ordentlich?
AWT hatte den Vorteil, dass jedes Widget dort ein set//getName() hatte - damit konnte man recht schön irgendwelche propertyChange-Eventbussysteme bauen (bis man sich irgendwo im Namen vertippte und die Fehlersuche losging).
Im Moment groke ich darüber nach, für alle GUI-Elemente ein Interface für einen Eventbus einzuführen und als Event herumzuschicken "ich hätte jetzt gerne den Zustand X" (also zb. ein Bild weiterblättern - die Galerie müsste dann das nächste Bild anzeigen, das Hauptfenster sich das passende Bild aus dem Cache ziehen, das Exif-Fenster was neues anzeigen, Histogram ebenso).
Oder die Events sind einfach nur ganz primitive Events vergleichbar mit den Tastaturevents - halt nur abstrahiert.
Grundsätzlich hätte ich mit einem solchen "Eventbus" den Vorteil, dass der Unterbau sich nicht viel ändert - statt auf Tastaturevents zu lauschen wird das in in ca. 90-100 eindeutige Events aufgedröselt und ich könnte zb. den endlichen Automaten in eine eigene Klasse verlegen.
Oder wie macht man es sonst? (trööt: bitte Posting 3x lesen ehe Du schreibst).
Bernd