~ubuntu-branches/ubuntu/lucid/tuxguitar/lucid

« back to all changes in this revision

Viewing changes to src/org/herac/tuxguitar/gui/undo/undoables/track/UndoableInstrumentTrack.java

  • Committer: Bazaar Package Importer
  • Author(s): Philippe Coval
  • Date: 2008-06-19 00:30:30 UTC
  • mfrom: (1.1.1 upstream) (2.1.3 hardy)
  • Revision ID: james.westby@ubuntu.com-20080619003030-agens2gvd5m4dacu
New upstream release (Closes: #481728) also (LP: #176979, #212207)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
package org.herac.tuxguitar.gui.undo.undoables.track;
2
 
 
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
 
 
12
 
public class UndoableInstrumentTrack implements UndoableEdit{
13
 
        private int doAction;
14
 
        private int trackNumber;
15
 
        private UndoableCaretHelper undoCaret;
16
 
        private UndoableCaretHelper redoCaret;          
17
 
        private short undoInstrument;
18
 
        private short redoInstrument;
19
 
        private boolean undoPercusion;
20
 
        private boolean redoPercusion;
21
 
        
22
 
        private UndoableInstrumentTrack(){
23
 
                
24
 
        }
25
 
        
26
 
        public void redo() throws CannotRedoException { 
27
 
                if(!canRedo()){
28
 
                        throw new CannotRedoException();
29
 
                }   
30
 
                SongManager manager = TuxGuitar.instance().getSongManager();
31
 
                manager.getTrackManager().changeInstrument(manager.getTrack(trackNumber),redoInstrument,redoPercusion);
32
 
                TuxGuitar.instance().fireUpdate();
33
 
                TuxGuitar.instance().getMixer().update();
34
 
                if (TuxGuitar.instance().getPlayer().isRunning()) {
35
 
                        TuxGuitar.instance().getPlayer().updatePrograms();
36
 
                }
37
 
                this.redoCaret.update();                
38
 
                this.doAction = UNDO_ACTION;
39
 
        }
40
 
 
41
 
        public void undo() throws CannotUndoException {
42
 
                if(!canUndo()){
43
 
                        throw new CannotUndoException();
44
 
                }                                       
45
 
                SongManager manager = TuxGuitar.instance().getSongManager();
46
 
                manager.getTrackManager().changeInstrument(manager.getTrack(trackNumber),undoInstrument,undoPercusion);
47
 
                TuxGuitar.instance().fireUpdate();
48
 
                TuxGuitar.instance().getMixer().update();
49
 
                if (TuxGuitar.instance().getPlayer().isRunning()) {
50
 
                        TuxGuitar.instance().getPlayer().updatePrograms();
51
 
                }
52
 
                this.undoCaret.update();
53
 
                
54
 
                this.doAction = REDO_ACTION;
55
 
        }
56
 
 
57
 
    public boolean canRedo() {
58
 
        return (doAction == REDO_ACTION);
59
 
    }
60
 
 
61
 
    public boolean canUndo() {
62
 
        return (doAction == UNDO_ACTION);
63
 
    }
64
 
      
65
 
    public static UndoableInstrumentTrack startUndo(SongTrack track){
66
 
        UndoableInstrumentTrack undoable = new UndoableInstrumentTrack();
67
 
        Caret caret = getCaret();               
68
 
        undoable.doAction = UNDO_ACTION;
69
 
        undoable.undoCaret = new UndoableCaretHelper();                 
70
 
        undoable.trackNumber = track.getNumber();
71
 
        undoable.undoInstrument = track.getChannel().getInstrument();
72
 
        undoable.undoPercusion = track.isPercussionTrack();
73
 
        
74
 
        return undoable;
75
 
    }
76
 
    
77
 
    public UndoableInstrumentTrack endUndo(SongTrack track){
78
 
        this.redoCaret = new UndoableCaretHelper();                     
79
 
        this.redoInstrument = track.getChannel().getInstrument();
80
 
        this.redoPercusion = track.isPercussionTrack();
81
 
        
82
 
        return this;
83
 
    }
84
 
    
85
 
    private static Caret getCaret(){
86
 
        return TuxGuitar.instance().getTablatureEditor().getTablature().getCaret();
87
 
    }  
88
 
 
89
 
}