Hallo,
ich würde gerne der JComboBox undo und redo beibringen - nur das ganze bestenfalls ohne eine eigene Liste zu pflegen, sondern so das es später mit dem UndoManager zusammenarbeitet.
Und da kommen auch schon die ersten Fragen auf, wo werden denn jetzt die Änderungen überhaupt gespeichert? Im UndoManager oder im jeweiligen Objekt, z.B. im Document?
Sollten die Änderungen (logischerweise) im Objekt und nicht im Manager gespeichert werden würde ich einfach ein CompoundEdit mit in meine ComboBox packen um dort über den ItemListener bei itemStateChanged() änderungen hinzuzufügen.
Die nächste Frage ist wie ich erfahre wann eine undo oder redo vom undomanager ausgeführt wird? Konkret hätte ich gerne eine Event aus dem UndoManager welches ich abfangen kann. Denn ich möchte ja nichts über .setText() automatisch ändern lassen, sondern dann selber .setSelectedItem() oder .setSelectedIndex() aufrufen.
Irgendwie steh ich da ein wenig im Wald vielleicht hat jemand von euch sowas ja schonmal gemacht?!
Freundliche Grüsse
Spontex
ich würde gerne der JComboBox undo und redo beibringen - nur das ganze bestenfalls ohne eine eigene Liste zu pflegen, sondern so das es später mit dem UndoManager zusammenarbeitet.
Und da kommen auch schon die ersten Fragen auf, wo werden denn jetzt die Änderungen überhaupt gespeichert? Im UndoManager oder im jeweiligen Objekt, z.B. im Document?
Sollten die Änderungen (logischerweise) im Objekt und nicht im Manager gespeichert werden würde ich einfach ein CompoundEdit mit in meine ComboBox packen um dort über den ItemListener bei itemStateChanged() änderungen hinzuzufügen.
Die nächste Frage ist wie ich erfahre wann eine undo oder redo vom undomanager ausgeführt wird? Konkret hätte ich gerne eine Event aus dem UndoManager welches ich abfangen kann. Denn ich möchte ja nichts über .setText() automatisch ändern lassen, sondern dann selber .setSelectedItem() oder .setSelectedIndex() aufrufen.
Irgendwie steh ich da ein wenig im Wald vielleicht hat jemand von euch sowas ja schonmal gemacht?!
Code:
public class JExtComboBox extends JComboBox implements ItemListener {
private CompoundEdit m_Edit = new CompoundEdit();
private UndoableEditListener m_Listener;
public void itemStateChanged(ItemEvent arg0) {
// Dieser ??
m_Listener.undoableEditHappened((UndoableEditEvent) arg0.getItem());
// Oder jender??
m_Edit.addEdit((UndoableEdit) arg0.getItem());
}
public void addUndoableEditListener(UndoableEditListener IListener) {
m_Listener = IListener;
}
//Wie komme ich an die Undo / Redo Events aus dem UndoManager
}
Freundliche Grüsse
Spontex