1
package org.herac.tuxguitar.gui.undo.undoables.track;
3
import org.herac.tuxguitar.gui.TuxGuitar;
4
import org.herac.tuxguitar.gui.undo.CannotRedoException;
5
import org.herac.tuxguitar.gui.undo.CannotUndoException;
6
import org.herac.tuxguitar.gui.undo.UndoableEdit;
7
import org.herac.tuxguitar.gui.undo.undoables.UndoableCaretHelper;
8
import org.herac.tuxguitar.song.managers.TGSongManager;
9
import org.herac.tuxguitar.song.models.TGColor;
10
import org.herac.tuxguitar.song.models.TGTrack;
12
public class UndoableTrackInfo implements UndoableEdit{
14
private int trackNumber;
15
private UndoableCaretHelper undoCaret;
16
private UndoableCaretHelper redoCaret;
17
private String undoName;
18
private String redoName;
19
private TGColor undoColor;
20
private TGColor redoColor;
21
private int undoOffset;
22
private int redoOffset;
24
private UndoableTrackInfo(){
28
public void redo() throws CannotRedoException {
30
throw new CannotRedoException();
32
TGSongManager manager = TuxGuitar.instance().getSongManager();
33
manager.getTrackManager().changeInfo(manager.getTrack(this.trackNumber),this.redoName,this.redoColor.clone(manager.getFactory()),this.redoOffset);
34
TuxGuitar.instance().fireUpdate();
35
TuxGuitar.instance().getMixer().update();
36
this.redoCaret.update();
37
this.doAction = UNDO_ACTION;
40
public void undo() throws CannotUndoException {
42
throw new CannotUndoException();
44
TGSongManager manager = TuxGuitar.instance().getSongManager();
45
manager.getTrackManager().changeInfo(manager.getTrack(this.trackNumber),this.undoName,this.undoColor.clone(manager.getFactory()),this.undoOffset);
46
TuxGuitar.instance().fireUpdate();
47
TuxGuitar.instance().getMixer().update();
48
this.undoCaret.update();
50
this.doAction = REDO_ACTION;
53
public boolean canRedo() {
54
return (this.doAction == REDO_ACTION);
57
public boolean canUndo() {
58
return (this.doAction == UNDO_ACTION);
61
public static UndoableTrackInfo startUndo(TGTrack track){
62
UndoableTrackInfo undoable = new UndoableTrackInfo();
63
undoable.doAction = UNDO_ACTION;
64
undoable.trackNumber = track.getNumber();
65
undoable.undoCaret = new UndoableCaretHelper();
66
undoable.undoName = track.getName();
67
undoable.undoColor = track.getColor().clone(TuxGuitar.instance().getSongManager().getFactory());
68
undoable.undoOffset = track.getOffset();
73
public UndoableTrackInfo endUndo(TGTrack track){
74
this.redoCaret = new UndoableCaretHelper();
75
this.redoName = track.getName();
76
this.redoColor = track.getColor().clone(TuxGuitar.instance().getSongManager().getFactory());
77
this.redoOffset = track.getOffset();