Statistics
| Revision:

root / branches / v2_0_0_prep / applications / appgvSIG / src / org / gvsig / app / gui / command / CommandTableModel.java @ 38562

History | View | Annotate | Download (1.98 KB)

1 29596 jpiera
package org.gvsig.app.gui.command;
2 4120 caballero
3
import javax.swing.table.AbstractTableModel;
4
5 37597 jpiera
import org.slf4j.Logger;
6
import org.slf4j.LoggerFactory;
7
8 25065 vcaballero
import org.gvsig.tools.undo.RedoException;
9
import org.gvsig.tools.undo.UndoException;
10
import org.gvsig.tools.undo.UndoRedoStack;
11 24962 vcaballero
import org.gvsig.tools.undo.command.Command;
12 4120 caballero
13 20994 jmvivo
14 37597 jpiera
@SuppressWarnings("serial")
15 37573 jpiera
public class CommandTableModel extends AbstractTableModel{
16 37597 jpiera
    private static final Logger LOG =
17
        LoggerFactory.getLogger(CommandTableModel.class);
18
19 37814 jpiera
    private UndoRedoStack undoRedoStack;
20
21
    public CommandTableModel(UndoRedoStack undoRedoStack) {
22
        this.undoRedoStack = undoRedoStack;
23 4120 caballero
        }
24 37597 jpiera
25 4120 caballero
        public int getPos() {
26 37814 jpiera
                if ((undoRedoStack == null) || undoRedoStack.getUndoInfos() == null){
27 37606 jpiera
                    return 0;
28
                }
29 37814 jpiera
            return undoRedoStack.getUndoInfos().size() - 1;
30 4120 caballero
        }
31 37597 jpiera
32 4120 caballero
        public int getColumnCount() {
33
                return 1;
34
        }
35 37597 jpiera
36 4120 caballero
        public int getRowCount() {
37 37814 jpiera
                if ((undoRedoStack == null) || undoRedoStack.getUndoInfos() == null || undoRedoStack.getRedoInfos() == null){
38 37606 jpiera
                    return 0;
39
                }
40 37814 jpiera
                return undoRedoStack.getRedoInfos().size() + undoRedoStack.getUndoInfos().size();
41 4120 caballero
        }
42 37597 jpiera
43
        @SuppressWarnings("unchecked")
44
    public Object getValueAt(int i, int j) {
45 37814 jpiera
                Command[] undos=(Command[])undoRedoStack.getUndoInfos().toArray(new Command[0]);
46
                Command[] redos=(Command[])undoRedoStack.getRedoInfos().toArray(new Command[0]);
47 4120 caballero
                if (i<undos.length){
48
                        //System.out.println("undo i=" + i + " index=" + (undos.length-1-i));
49
                        return undos[undos.length-1-i];
50
                }else{
51
                        //System.out.println("redo i=" + i + " index=" + (i-undos.length));
52
                        return redos[i-undos.length];
53
                }
54
        }
55 37597 jpiera
56 25065 vcaballero
        public void setPos(int newpos) {
57
                try {
58 37814 jpiera
                    int currentPos = getPos();
59 37597 jpiera
                        if (newpos > getPos()) {
60 37814 jpiera
                                undoRedoStack.redo(newpos - getPos());
61 37597 jpiera
                        }else if (newpos < getPos()) {
62 37814 jpiera
                                undoRedoStack.undo(getPos() - newpos);
63 25065 vcaballero
                        }
64
                } catch (RedoException e) {
65 37597 jpiera
                        LOG.error("Error executing the command", e);
66 25065 vcaballero
                } catch (UndoException e) {
67 37597 jpiera
                    LOG.error("Error executing the command", e);
68 25065 vcaballero
                }
69
        }
70 4120 caballero
}