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.TGTrack;
11
public class UndoableMoveTrackDown implements UndoableEdit{
13
private int trackNumber;
14
private UndoableCaretHelper undoCaret;
15
private UndoableCaretHelper redoCaret;
17
private UndoableMoveTrackDown(){
21
public void redo() throws CannotRedoException {
23
throw new CannotRedoException();
25
TGSongManager manager = TuxGuitar.instance().getSongManager();
26
manager.moveTrackDown(manager.getTrack(this.trackNumber - 1));
27
TuxGuitar.instance().fireUpdate();
28
TuxGuitar.instance().getMixer().update();
29
this.redoCaret.update();
30
this.doAction = UNDO_ACTION;
33
public void undo() throws CannotUndoException {
35
throw new CannotUndoException();
37
TGSongManager manager = TuxGuitar.instance().getSongManager();
38
manager.moveTrackUp(manager.getTrack(this.trackNumber));
39
TuxGuitar.instance().fireUpdate();
40
TuxGuitar.instance().getMixer().update();
41
this.undoCaret.update();
42
this.doAction = REDO_ACTION;
45
public boolean canRedo() {
46
return (this.doAction == REDO_ACTION);
49
public boolean canUndo() {
50
return (this.doAction == UNDO_ACTION);
54
public static UndoableMoveTrackDown startUndo(){
55
UndoableMoveTrackDown undoable = new UndoableMoveTrackDown();
56
undoable.doAction = UNDO_ACTION;
57
undoable.undoCaret = new UndoableCaretHelper();
62
public UndoableMoveTrackDown endUndo(TGTrack track){
63
this.redoCaret = new UndoableCaretHelper();
64
this.trackNumber = track.getNumber();