Schnittstelle für durchgereichte Interaktionen in Komponentenhierarchie?

muckelzwerg

Bekanntes Mitglied
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.
 

Marco13

Top Contributor
Das klingt schon sehr ähnlich zu den Fragen, die ich mir im Zusammenhang mit Swogl gerade (mal wieder ;) ) stelle. Ein paar Gedanken dazu habe ich schon, aber ... bei mir bezieht sich das auf eine sehr niedrige Ebene (eben Events) und ist vielleicht nicht direkt übertragbar. Vielleicht können wir da ja mal (hier oder per PN) drüber philosophieren.
 

muckelzwerg

Bekanntes Mitglied
Gerne hier. :)
Die meisten kennen bestimmt die diversen "Multitouch-Tabletops". Da werden oft jede Menge Objekte auf den Tisch geworfen, umhergeschubbst, gestreckt, gepinched, gewasauchimmert ...
Diese Funktionen liegen in der höheren Ebene, bei mir ist das der "View".
Bei Dir (Marco) ist das vermutlich die Situation, wenn Du Swing Komponenten auf dem OpenGL Canvas gezeichnet hast und ihre zugehörigen Flächen irgendwie verwaltet werden müssen.
Genau das machen meine Views, auch wenn ich aktuell keine Swing Widgets als Objekte habe.

Solange man jetzt auf das Widget draufklicken kann, damit es was tut, ist alles kein Problem. Da bringt dann jedes Objekt sein eigenes Menü mit.
... möööööp .... leider nicht. ;) Wenn man z.B. Bilder skaliert oder gar streckt, dann wird es mit klassischen Menüleisten etwas eklig.
Also wechselt man z.B. auf Menüs die irgendwie auf der gleichen Fläche schweben, auf der auch das Objekt liegt.
Wenn ich mit einem Bild arbeiten will, dann werden um das Bild herum Schaltflächen angezeigt, egal, wie es skaliert ist.
Diese Schaltflächen liegen aber jetzt außerhalb der Fläche des Bildes. Irgendwer muss die verwalten. Irgendwo muss auch der Code hin, der die Ausrichtung bestimmt usw.
Im Prinzip ist das Menü dann eine Art Dekoration. (geht vielleicht in der Richtung was?)

Ein anderer Fall ist, dass ich z.B: zwei PDF-Dokumente nebeneinander anzeige. Jedes kann geblättert, gescrolled usw werden.
Ich will aber nicht, dass um jedes Dokument die volle Palette an Menüleisten angebracht wird, sondern einige Menüs lieber eine Ebene höher (im View) anbieten. Der View aber hat keine Ahnung, was ein PDF ist, oder welche Menüs man dafür braucht. Er kann sie nur irgendwie blind übernehmen. Wie er das macht, ist die Frage.


Was hast Du denn so für Gedanken/Probleme bei dem Thema?
 

Marco13

Top Contributor
Die Sache mit den Menüs hat sich mir nicht ganz erschlossen. Es geht nicht um menüs die wirklich innerhalb des (i.a. rechteckigen) Bereichs der dargestellten Dinge sind, sondern wirklich um etwas, was außen dran gehängt wird?

Sooo viele Ähnlichkeiten zu Swogl hat das vielleicht doch nicht, weil dort die Frage nach der Eingabe auf viel niedrigerer Ebene behandelt werden muss (d.h. "Soll dieser MouseEvent an die Swogl-Component weitergeleitet werden, oder von irgendeinem anderen Listener verarbeitet werden?")

Das Decorator-Pattern könnte dort evtl. sinnvoll sein, aber das ist im Moment noch schwer zu sagen. Das Beispiel mit den PDFs klingt irgendwie, als könnte man dort sowas ähnliches wie ein "Plugin"-Konzept verwenden (muss ja nicht gleich OSGi sein ;)). Aber es könnte eine öffentliche Stelle geben, wo man GUI/Bedienelemente in ganz abstrakter Form "einklinken" kann. Die erscheinen dann wirklich auf der obersten Ebene. Wenn man nun so ein PDF-Ding in den Sichtbereich einfügt, dann sagt das an dieser Stelle bescheid, und übergibt dort seine GUI-Elemente (die in diesem Fall z.B. zwei Buttons sind, mit denen man vor- und zurückblättern kann - davon braucht aber die oberste Ebene nichts mehr zu wissen, die zeigt sie ja nur an). Aber ob das wirklich passt, kann man ohne weitere Infos schwer einschätzen... Und irgendwie klingt es zu einfach, als dass man annehmen sollte, das du da nicht selbst schon drauf gekommen bist, und festgestellt hast, dass das aus irgendeinem Grund nicht passt ... ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Java - perfekte Schnittstelle für Hacker? Allgemeine Java-Themen 8
B Schnittstelle von Facebook zu Java(Eclipse) für meine Internetseite Allgemeine Java-Themen 20
H javax.comm und Parallele Schnittstelle (PIN für PIN) Allgemeine Java-Themen 7
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
Tarrew OpenAPI Schnittstelle - Mehrere Kunden mit unterschiedlichen Zugriffsrechten Allgemeine Java-Themen 2
B Schnittstelle zwischen MySQL und Apache Allgemeine Java-Themen 8
J Daten über serielle Schnittstelle empfangen Allgemeine Java-Themen 4
Meeresgott Best Practice Mini REST-Schnittstelle Allgemeine Java-Themen 4
Q Selbständig ActionEvent auslösen zum Daten senden über serielle Schnittstelle Allgemeine Java-Themen 7
stroggi Serielle Schnittstelle (jssc) - Flush benötigt? Allgemeine Java-Themen 2
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
T Input und Outputstream , serielle Schnittstelle Allgemeine Java-Themen 1
M Schnittstelle Datanorm Allgemeine Java-Themen 2
H Daten via COM Schnittstelle erhalten Allgemeine Java-Themen 2
M Java-Pawn Schnittstelle ? Allgemeine Java-Themen 0
S Threads Serielle Schnittstelle mit Listener / Aufrufendes GUI Allgemeine Java-Themen 4
L COM Schnittstelle in Java programmieren Allgemeine Java-Themen 4
T Schnittstelle zu Bash?! Allgemeine Java-Themen 2
D Aufgabe: Schnittstelle und Proxy implementieren Allgemeine Java-Themen 2
H Interface Generische Schnittstelle (rekusiv) Allgemeine Java-Themen 2
M Serielle Schnittstelle ansteuern - mit Processing Bibliothek Allgemeine Java-Themen 4
U Realisierung einer "Plugin-Schnittstelle": Allgemeine Java-Themen 12
I Serielle Schnittstelle Allgemeine Java-Themen 5
A Input/Output Applet-Zugriff auf PHP-Schnittstelle (externer Server) Allgemeine Java-Themen 22
P Auslesen serieller Schnittstelle - umwandeln von byteArray Allgemeine Java-Themen 3
N Serielle Schnittstelle / COM-Port auslesen und die empfangenen Daten verarbeiten Allgemeine Java-Themen 1
O Zugriff auf Serielle Schnittstelle - Keine Ports gefunden. Allgemeine Java-Themen 8
S Problem mit serieller Schnittstelle Allgemeine Java-Themen 10
M Zugriff auf Parallel-Schnittstelle Allgemeine Java-Themen 2
P Schnittstelle über Webservice SOAP Allgemeine Java-Themen 11
MQue Schnittstelle programmieren Allgemeine Java-Themen 2
H lpt1 schnittstelle Allgemeine Java-Themen 6
M Schnittstelle java.util.Set Allgemeine Java-Themen 9
G Kommunikation mit der seriellen Schnittstelle Allgemeine Java-Themen 6
G serielle Schnittstelle einlesen Allgemeine Java-Themen 13
M Paralle Schnittstelle ansprechen Allgemeine Java-Themen 2
P TCPIP Schnittstelle Allgemeine Java-Themen 2
D Datenübertragung über serielle Schnittstelle Allgemeine Java-Themen 4
D Daten aus einer Seriellen Schnittstelle empfangen Allgemeine Java-Themen 22
G Problemme mit serielle Schnittstelle Allgemeine Java-Themen 9
MQue serielle Schnittstelle Allgemeine Java-Themen 2
E serielle Schnittstelle Allgemeine Java-Themen 6
N Serielle Schnittstelle ansprechen Allgemeine Java-Themen 9
D HTML Schnittstelle Allgemeine Java-Themen 4
J serielle Schnittstelle unter Linux Allgemeine Java-Themen 3
T parallele Schnittstelle auslesen Allgemeine Java-Themen 5
S Problem mit Ansteuerung von serieller Schnittstelle Allgemeine Java-Themen 7
Q Schnittstelle/Abstrakte Klasse schreibt Annotation vor? Allgemeine Java-Themen 4
W Zugriff auf lokale serielle Schnittstelle via Applet Allgemeine Java-Themen 3
T Java Schnittstelle Active Directory Allgemeine Java-Themen 5
Q Typecast zwischen Klassen mit implementierter Schnittstelle Allgemeine Java-Themen 4
M RS232 Schnittstelle ansteuern (Floppy durch Laptop ersetzen) Allgemeine Java-Themen 2
Z java->schnittstelle->excel Allgemeine Java-Themen 2
V gezielte Datenbankeinträge über JDBC schnittstelle Allgemeine Java-Themen 10
A Serielle Schnittstelle | Barcodescan | ohne Tastatur Allgemeine Java-Themen 11
X Java Schnittstelle zu AIML Allgemeine Java-Themen 2
S String an COM-Schnittstelle senden Allgemeine Java-Themen 6
D Schnittstelle zwischen zwei Klassen? Allgemeine Java-Themen 2
J PS/2-Schnittstelle ansprechen Allgemeine Java-Themen 7
Y Zugriff auf Com-Schnittstelle Allgemeine Java-Themen 5
S Abhören der com-Schnittstelle Allgemeine Java-Themen 3
H Zugriff auf parallele Schnittstelle Allgemeine Java-Themen 4
G Zugriff auf serielle Schnittstelle mit Java 1.5.0 Allgemeine Java-Themen 11
C Implementieren einer Schnittstelle (Interface), Ausnahmen Allgemeine Java-Themen 7
J serielle schnittstelle unter linux Allgemeine Java-Themen 3
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
kodela Eingabe für TextArray bedingt sperren Allgemeine Java-Themen 3
Karl_Der_Nette_Anfänger Hat wer ne Lösung für verknüpfte Postleitzahlen? (Baum/Wurzel Struktur) Allgemeine Java-Themen 11
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
G KeyListener für JTextField Allgemeine Java-Themen 5
webracer999 Library für Textsuche (z. B. include/exclude, and/or)? Allgemeine Java-Themen 5
I Module-Info für Jar erzeugen Allgemeine Java-Themen 7
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
B Simpler Eventlistener für Tastaturtaste bauen? Allgemeine Java-Themen 13
_user_q Eingegebenen Text Zeile für Zeile ausgeben lassen Allgemeine Java-Themen 11
E Key für TOTP Algorythmus(Google Authentificator) Allgemeine Java-Themen 0
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
M pfx-Zertifikat in Tomcat für SSL-Verschlüsselung nutzen Allgemeine Java-Themen 14
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
jhCDtGVjcZGcfzug Klassen Was genau passiert hier? Kann mir das jemand bitte Zeile für Zeile erklären? Allgemeine Java-Themen 1
rosima26 Bester Sortieralgorithmus für kurze Arrays Allgemeine Java-Themen 40
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
MangoTango Operatoren while-Schleife für Potenz Allgemeine Java-Themen 3
B Lottospiel, genug Reihen tippen für 3 Richtige (Spaß mit Arrays)? Allgemeine Java-Themen 46
B Mit welchen Datentypen und Strukturierung am Besten dutzende Baccaratspiele Shcritt für Schritt durchsimulieren? Allgemeine Java-Themen 26
D Klassendesign für einen Pascal Interpreter Allgemeine Java-Themen 6
I OCR Library für Belegerkennung Allgemeine Java-Themen 7
farah GetterMathod für Farbkanäle Allgemeine Java-Themen 6
B Welcher Datentyp für sehr große Zahlenbereiche? Allgemeine Java-Themen 1
S Webservices für binäre Daten? Allgemeine Java-Themen 5
G Licence-Header für InHouse entwickelten Source Allgemeine Java-Themen 8
M Schleife für einen TicTacToe Computer Allgemeine Java-Themen 5
O git ignore für Intellji braucht es die .idea Dateien? Allgemeine Java-Themen 8
F Java Script für das Vorhaben das richtige? Allgemeine Java-Themen 9
M wiviel Java muss ich für die Berufswelt können ? Allgemeine Java-Themen 5
Robertop Datumsformat für GB ab Java 16 Allgemeine Java-Themen 1
Thallius Verschiedene entities für gleichen Code…. Allgemeine Java-Themen 8
OnDemand Zentrale "Drehscheibe" für verschiedene APIs Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben