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 | } |