1
package org.herac.tuxguitar.gui.undo.undoables.track;
3
import org.herac.tuxguitar.gui.TuxGuitar;
4
import org.herac.tuxguitar.gui.editors.tab.Caret;
5
import org.herac.tuxguitar.gui.undo.CannotRedoException;
6
import org.herac.tuxguitar.gui.undo.CannotUndoException;
7
import org.herac.tuxguitar.gui.undo.UndoableEdit;
8
import org.herac.tuxguitar.gui.undo.undoables.UndoableCaretHelper;
9
import org.herac.tuxguitar.song.managers.SongManager;
10
import org.herac.tuxguitar.song.models.SongTrack;
11
import org.herac.tuxguitar.song.models.RGBColor;
13
public class UndoableInfoTrack implements UndoableEdit{
15
private int trackNumber;
16
private UndoableCaretHelper undoCaret;
17
private UndoableCaretHelper redoCaret;
18
private String undoName;
19
private String redoName;
20
private RGBColor undoColor;
21
private RGBColor redoColor;
22
private int undoOffset;
23
private int redoOffset;
25
private UndoableInfoTrack(){
29
public void redo() throws CannotRedoException {
31
throw new CannotRedoException();
33
SongManager manager = TuxGuitar.instance().getSongManager();
34
manager.getTrackManager().changeInfo(manager.getTrack(trackNumber),redoName,(RGBColor)redoColor.clone(),redoOffset);
35
TuxGuitar.instance().fireUpdate();
36
TuxGuitar.instance().getMixer().update();
37
this.redoCaret.update();
38
this.doAction = UNDO_ACTION;
41
public void undo() throws CannotUndoException {
43
throw new CannotUndoException();
45
SongManager manager = TuxGuitar.instance().getSongManager();
46
manager.getTrackManager().changeInfo(manager.getTrack(trackNumber),undoName,(RGBColor)undoColor.clone(),undoOffset);
47
TuxGuitar.instance().fireUpdate();
48
TuxGuitar.instance().getMixer().update();
49
this.undoCaret.update();
51
this.doAction = REDO_ACTION;
54
public boolean canRedo() {
55
return (doAction == REDO_ACTION);
58
public boolean canUndo() {
59
return (doAction == UNDO_ACTION);
62
public static UndoableInfoTrack startUndo(SongTrack track){
63
UndoableInfoTrack undoable = new UndoableInfoTrack();
64
Caret caret = getCaret();
65
undoable.doAction = UNDO_ACTION;
66
undoable.trackNumber = track.getNumber();
67
undoable.undoCaret = new UndoableCaretHelper();
68
undoable.undoName = track.getName();
69
undoable.undoColor = (RGBColor)track.getColor().clone();
70
undoable.undoOffset = track.getOffset();
75
public UndoableInfoTrack endUndo(SongTrack track){
76
this.redoCaret = new UndoableCaretHelper();
77
this.redoName = track.getName();
78
this.redoColor = (RGBColor)track.getColor().clone();
79
this.redoOffset = track.getOffset();
84
private static Caret getCaret(){
85
return TuxGuitar.instance().getTablatureEditor().getTablature().getCaret();