hiho,
ich bin wieder an einem Punkt angelangt wo ich jedesmal verzweifel, da ich noch keine einigermaßen brauchbare Lösung dazu gefunden habe.
Folgendes Szenario:
Es gib eine Action "NewFileAction" .. diese wird in einem Menü und in einer Toolbar eingebunden. Bei Klick auf die Action soll nun eine neue Datei erstellt werden (können versch. Kontext haben, zB neue Formeldatei oder neue Grammatikdatei). So, bei einer neuen Formeldatei brauch ich bspw ein neues Tab in einer JTabbedPane.
Soll heissen beim Auslösen der Action muss ich irgendwie in meine Editor-Klasse rein, welche das JTabbedPane darstellt um ein neues Tab zu erstellen. Ok, könnte man sich ja n Listener oder sowas schreiben, und den Editor bei der Action registriern .. oder einen Controller welcher das ganze vermittelt.
Nun gibt es aber noch ganz paar andere Actions .. und ich bin nicht gewillt für jede Action nen Controller oder ListenerKonzept bereitzustellen, da mir das rein konzeptionell irgendwie nicht zusagt. Ausserdem würde ich dann mit implements um mich werfen, was nicht wirklich schön ist.
Wie löst man denn solche Probleme elegant? Man hat haufen Actions, die man am besten wo lagert und wie mit diversen Sachen verknüpft?
Beispiel:
der Weg an jeder Action Listener zu registrieren kann doch nicht der wahre sein oder, zumal das Interfaces mit, in der Regel, 1 Methode werden.
ich bin wieder an einem Punkt angelangt wo ich jedesmal verzweifel, da ich noch keine einigermaßen brauchbare Lösung dazu gefunden habe.
Folgendes Szenario:
Es gib eine Action "NewFileAction" .. diese wird in einem Menü und in einer Toolbar eingebunden. Bei Klick auf die Action soll nun eine neue Datei erstellt werden (können versch. Kontext haben, zB neue Formeldatei oder neue Grammatikdatei). So, bei einer neuen Formeldatei brauch ich bspw ein neues Tab in einer JTabbedPane.
Soll heissen beim Auslösen der Action muss ich irgendwie in meine Editor-Klasse rein, welche das JTabbedPane darstellt um ein neues Tab zu erstellen. Ok, könnte man sich ja n Listener oder sowas schreiben, und den Editor bei der Action registriern .. oder einen Controller welcher das ganze vermittelt.
Nun gibt es aber noch ganz paar andere Actions .. und ich bin nicht gewillt für jede Action nen Controller oder ListenerKonzept bereitzustellen, da mir das rein konzeptionell irgendwie nicht zusagt. Ausserdem würde ich dann mit implements um mich werfen, was nicht wirklich schön ist.
Wie löst man denn solche Probleme elegant? Man hat haufen Actions, die man am besten wo lagert und wie mit diversen Sachen verknüpft?
Beispiel:
Java:
public class MainFrame extends JFrame {
...
toolbar.add(/** NewFileAction .. Zugriff? */);
...
}
// --------------------------------
public class Editor extends JTabbedPane {
//muss auf "newFile" reagieren können, wie an der Action ankoppeln
//Action hier non-static deklarieren macht kein Sinn, komm ich in MainFrame
//nie und nimmer ran
}
// -------------------------------
public class NewFileAction extends AbstractAction {
public NewFileAction() {
//settings
}
public void actionPerformed {
//Interessenten anschubsen
}
}
der Weg an jeder Action Listener zu registrieren kann doch nicht der wahre sein oder, zumal das Interfaces mit, in der Regel, 1 Methode werden.