Bonjour,

Dans mon programme je veux faire des undo et redo, seulement je suis dans une architecture client/serveur , pour un Undo il faut tapé plusieurs fois CTRL+Z , parcequ'il y a plusieurs évémenements donc il annule une par une. Moi j'aimerai annuler seulement les INSERT et les DELETE et donc une seul fois CTRL+Z. qu'est ce que je dois ajouter dans mon programme, pour qu'il prend en considération seulement ces deux cas s'il vous plait ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
JTextComponent textcomp = new JTextArea();
    final UndoManager undo = new UndoManager();
    Document doc = textcomp.getDocument();
 doc.addUndoableEditListener(new UndoableEditListener() {
        public void undoableEditHappened(UndoableEditEvent evt) {
            undo.addEdit(evt.getEdit());
        }
    });
 
    textcomp.getActionMap().put("Undo",
        new AbstractAction("Undo") {
            public void actionPerformed(ActionEvent evt) {
                try {
                    if (undo.canUndo()) {
                        undo.undo();
                    }
                } catch (CannotUndoException e) {
                }
            }
       });
    textcomp.getInputMap().put(KeyStroke.getKeyStroke("control Z"), "Undo");
 
    textcomp.getActionMap().put("Redo",
        new AbstractAction("Redo") {
            public void actionPerformed(ActionEvent evt) {
                try {
                    if (undo.canRedo()) {
                        undo.redo();
                    }
                } catch (CannotRedoException e) {
                }
            }
        });
 
    textcomp.getInputMap().put(KeyStroke.getKeyStroke("control Y"), "Redo");