Hey ihr Softwaretechniker
ich hab hier ein Problemchen, bei dem ich eure Hilfe brauchen kann.
Ich arbeite an einer Visualisierungsanwendung. Dort gibt es eine View-Klasse, die verschiedene grafische Objekte verwaltet. Letztlich sind das Flächen, auf denen dann "irgendwas" passiert.
Der View sortiert diese Flächen, ruft ihre Darstellungsmethoden auf und bietet grundlegende Funktionen wie Verschieben, Skalieren etc. an.
Innerhalb der Objekte kann so ziemlich alles passieren. Das können statische Bilder sein, die sich nie ändern, das könnte ein Film sein, oder die Darstellung eines PDF-Dokuments, oder auch sonst jedes Widget, was man sich so allgemein vorstellen kann.
Nun haben alle diese Objekte unterschiedliche Interaktionsmöglichkeiten. Der Film kann starten, stoppen, spulen usw. das PDF kann blättern, scrollen, zoomen ... solche Sachen eben.
Der einfachste Fall ist, dass alle Interaktionen direkt mit Schaltflächen gesteuert werden, die auch gleich beim Objekt gezeichnet werden. Dann muss man nur ein wenig Picking betrieben und ein paar Listener verkabeln.
Aber wenns so einfach wäre ... wärs ja langweilig.
1) Wie verheirate ich den View mit seinen Komponenten, so dass er deren Funktionen aufrufen bzw. nach oben anbieten kann, ohne die Komponenten zu kennen?
Wenn ich von einem anderen Teil der Software die Anweisung "nächste PDF Seite anzeigen" bekomme, muss das irgendwie durchgereicht werden. Und statt "irgendwie" hätte ich ganz gern "sinnvoll".
2.1) Wie biete ich im View dynamische Schaltflächen an, die je nach aktiver Komponente gewechselt werden?
So in etwa, wie die Leiste bei OSX.
2.2) Gibt es eine Lösung für 2.1 bei der ich nicht direkt an Swing etc. gekoppelt bin? Ich habe verschiedene Grafikschnittstellen im Einsatz (Java2D, OpenGL, ...). Nicht jede temporäre Schaltfläche muss in einem Swing Menü landen, sondern wird vielleicht ganz anders dargestellt.
Kann man in einer ersten Schicht die Funktionen ermitteln, die der View sich temporär von der Komponente holt und in einer zweiten Stufe dann erst zuordnen, ob daraus graue Knöpfe in der Menüleiste, oder ein fliegendes Widget irgendwo in der Darstellung, oder ganz was anderes wird?
Quasi eine Art "Patchfeld" für Interaktionen?
Ich bin für jeden Tipp dankbar.
ich hab hier ein Problemchen, bei dem ich eure Hilfe brauchen kann.
Ich arbeite an einer Visualisierungsanwendung. Dort gibt es eine View-Klasse, die verschiedene grafische Objekte verwaltet. Letztlich sind das Flächen, auf denen dann "irgendwas" passiert.
Der View sortiert diese Flächen, ruft ihre Darstellungsmethoden auf und bietet grundlegende Funktionen wie Verschieben, Skalieren etc. an.
Innerhalb der Objekte kann so ziemlich alles passieren. Das können statische Bilder sein, die sich nie ändern, das könnte ein Film sein, oder die Darstellung eines PDF-Dokuments, oder auch sonst jedes Widget, was man sich so allgemein vorstellen kann.
Nun haben alle diese Objekte unterschiedliche Interaktionsmöglichkeiten. Der Film kann starten, stoppen, spulen usw. das PDF kann blättern, scrollen, zoomen ... solche Sachen eben.
Der einfachste Fall ist, dass alle Interaktionen direkt mit Schaltflächen gesteuert werden, die auch gleich beim Objekt gezeichnet werden. Dann muss man nur ein wenig Picking betrieben und ein paar Listener verkabeln.
Aber wenns so einfach wäre ... wärs ja langweilig.
1) Wie verheirate ich den View mit seinen Komponenten, so dass er deren Funktionen aufrufen bzw. nach oben anbieten kann, ohne die Komponenten zu kennen?
Wenn ich von einem anderen Teil der Software die Anweisung "nächste PDF Seite anzeigen" bekomme, muss das irgendwie durchgereicht werden. Und statt "irgendwie" hätte ich ganz gern "sinnvoll".
2.1) Wie biete ich im View dynamische Schaltflächen an, die je nach aktiver Komponente gewechselt werden?
So in etwa, wie die Leiste bei OSX.
2.2) Gibt es eine Lösung für 2.1 bei der ich nicht direkt an Swing etc. gekoppelt bin? Ich habe verschiedene Grafikschnittstellen im Einsatz (Java2D, OpenGL, ...). Nicht jede temporäre Schaltfläche muss in einem Swing Menü landen, sondern wird vielleicht ganz anders dargestellt.
Kann man in einer ersten Schicht die Funktionen ermitteln, die der View sich temporär von der Komponente holt und in einer zweiten Stufe dann erst zuordnen, ob daraus graue Knöpfe in der Menüleiste, oder ein fliegendes Widget irgendwo in der Darstellung, oder ganz was anderes wird?
Quasi eine Art "Patchfeld" für Interaktionen?
Ich bin für jeden Tipp dankbar.