L
Lau
Gast
Hallo!
Mein aktuelles Projekt, eine Art Mini-Musikstudio, besteht aus mehreren Modulen. Das soll heißen, ich habe ein Trayicon, mit welchem ich aus einer Liste eines von mehreren Modulen auswählen kann. Ein Hauptfenster oder sowas gibt es nicht, vorerst nur mal den Tray. Sagen wir, die Liste im Tray besteht aus
Modul 1
Modul 2
Modul 3
Modul 4
Soweit, so gut. Jedes dieser Module hat seine einene Logik in einer eigenen Klasse. Manche dieser Module sollen ihr eigenes kleines Fenster bekommen, andere nicht (das Fenster soll natürlich nur angezeigt werden, wenn das Modul im Tray auch ausgewählt ist). Wenn ein Modul kein Fenster benötigt, dann liegt es daran, dass das Modul lediglich ein Prozess darstellt, der schnell ausgeführt wird und man keine Visualisierung dafür benötigt.
Falls ein Modul aber doch ein Fenster bekommen soll, dann ist das Fenster stark auf das Modul spezialisiert und nur für dieses brauchbar.
Ich weiß jetzt nicht, wie ich das ganze aufbauen soll. Wenn ich im Tray also Modul 1 auswähle, so soll das zu Modul 1 passende Fenster angezeigt werden, in dem dann die Logik von Modul 1 abläuft. Analog dazu für die anderen Module.
Da die Fenster so stark auf die Module spezialisiert sind, habe ich mir schon überlegt, das Fenster in der jeweiligen Modulklasse zu erzeugen. Da sind ja eh schon alle benötigten Daten und die Fenster wären aufgeräumt.
Andererseits sollte man ja Visualisierungssachen wie Swing aus Logikklassen draussenlassen.
Aber wie dann? Ein allgemeines Fenster erzeugen, in welches jedes Modul reinmalen darf (wenn es gerade dran ist) ist auch blöd. Wie gesagt hat jedes Modul ja andere Anforderungen an das Fenster.. manche wollen setAlwaysOnTop, manche wollen ein Bild anzeigen, andere Text usw...
Was noch zu erwähnen wäre: Alle Module implementieren das Interface "Update", welches von der Hauptanwendung aus aufgerufen werden kann - sofern das jeweilige Modul aktiv ist. Dann ändert die Logik Daten, und logischerweise müsste dann auch das dazu passende Fenster neugemalt werden.
Ich weiß nicht ob MVC und Co. eine Lösung wären, das ist jedoch noch zu hoch für mich, ich wollte erstmal eine gute "Preis-Leistungs-Lösung", ohe dabei die gröbsten Regeln zu brechen (Design und Logik vermischen).
Danke!
Mein aktuelles Projekt, eine Art Mini-Musikstudio, besteht aus mehreren Modulen. Das soll heißen, ich habe ein Trayicon, mit welchem ich aus einer Liste eines von mehreren Modulen auswählen kann. Ein Hauptfenster oder sowas gibt es nicht, vorerst nur mal den Tray. Sagen wir, die Liste im Tray besteht aus
Modul 1
Modul 2
Modul 3
Modul 4
Soweit, so gut. Jedes dieser Module hat seine einene Logik in einer eigenen Klasse. Manche dieser Module sollen ihr eigenes kleines Fenster bekommen, andere nicht (das Fenster soll natürlich nur angezeigt werden, wenn das Modul im Tray auch ausgewählt ist). Wenn ein Modul kein Fenster benötigt, dann liegt es daran, dass das Modul lediglich ein Prozess darstellt, der schnell ausgeführt wird und man keine Visualisierung dafür benötigt.
Falls ein Modul aber doch ein Fenster bekommen soll, dann ist das Fenster stark auf das Modul spezialisiert und nur für dieses brauchbar.
Ich weiß jetzt nicht, wie ich das ganze aufbauen soll. Wenn ich im Tray also Modul 1 auswähle, so soll das zu Modul 1 passende Fenster angezeigt werden, in dem dann die Logik von Modul 1 abläuft. Analog dazu für die anderen Module.
Da die Fenster so stark auf die Module spezialisiert sind, habe ich mir schon überlegt, das Fenster in der jeweiligen Modulklasse zu erzeugen. Da sind ja eh schon alle benötigten Daten und die Fenster wären aufgeräumt.
Andererseits sollte man ja Visualisierungssachen wie Swing aus Logikklassen draussenlassen.
Aber wie dann? Ein allgemeines Fenster erzeugen, in welches jedes Modul reinmalen darf (wenn es gerade dran ist) ist auch blöd. Wie gesagt hat jedes Modul ja andere Anforderungen an das Fenster.. manche wollen setAlwaysOnTop, manche wollen ein Bild anzeigen, andere Text usw...
Was noch zu erwähnen wäre: Alle Module implementieren das Interface "Update", welches von der Hauptanwendung aus aufgerufen werden kann - sofern das jeweilige Modul aktiv ist. Dann ändert die Logik Daten, und logischerweise müsste dann auch das dazu passende Fenster neugemalt werden.
Ich weiß nicht ob MVC und Co. eine Lösung wären, das ist jedoch noch zu hoch für mich, ich wollte erstmal eine gute "Preis-Leistungs-Lösung", ohe dabei die gröbsten Regeln zu brechen (Design und Logik vermischen).
Danke!