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;
12
public class UndoableMoveTrackDown implements UndoableEdit{
14
private int trackNumber;
15
private UndoableCaretHelper undoCaret;
16
private UndoableCaretHelper redoCaret;
18
private UndoableMoveTrackDown(){
22
public void redo() throws CannotRedoException {
24
throw new CannotRedoException();
26
SongManager manager = TuxGuitar.instance().getSongManager();
27
manager.moveTrackDown(manager.getTrack(trackNumber - 1));
28
TuxGuitar.instance().fireUpdate();
29
TuxGuitar.instance().getMixer().update();
30
this.redoCaret.update();
31
this.doAction = UNDO_ACTION;
34
public void undo() throws CannotUndoException {
36
throw new CannotUndoException();
38
SongManager manager = TuxGuitar.instance().getSongManager();
39
manager.moveTrackUp(manager.getTrack(trackNumber));
40
TuxGuitar.instance().fireUpdate();
41
TuxGuitar.instance().getMixer().update();
42
this.undoCaret.update();
43
this.doAction = REDO_ACTION;
46
public boolean canRedo() {
47
return (doAction == REDO_ACTION);
50
public boolean canUndo() {
51
return (doAction == UNDO_ACTION);
55
public static UndoableMoveTrackDown startUndo(){
56
UndoableMoveTrackDown undoable = new UndoableMoveTrackDown();
57
undoable.doAction = UNDO_ACTION;
58
undoable.undoCaret = new UndoableCaretHelper();
63
public UndoableMoveTrackDown endUndo(SongTrack track){
64
this.redoCaret = new UndoableCaretHelper();
65
this.trackNumber = track.getNumber();
71
private static Caret getCaret(){
72
return TuxGuitar.instance().getTablatureEditor().getTablature().getCaret();