1 /*
2  * Created on 17-dic-2005
3  *
4  * TODO To change the template for this generated file go to
5  * Window - Preferences - Java - Code Style - Code Templates
6  */
7 package org.herac.tuxguitar.gui.actions.measure;
8 
9 import org.eclipse.swt.events.TypedEvent;
10 import org.herac.tuxguitar.gui.TuxGuitar;
11 import org.herac.tuxguitar.gui.actions.Action;
12 import org.herac.tuxguitar.gui.editors.tab.Caret;
13 import org.herac.tuxguitar.gui.editors.tab.TGTrackImpl;
14 import org.herac.tuxguitar.gui.undo.undoables.measure.UndoableAddMeasure;
15 import org.herac.tuxguitar.song.models.TGMeasure;
16 
17 /**
18  * @author julian
19  *
20  * TODO To change the template for this generated type comment go to
21  * Window - Preferences - Java - Code Style - Code Templates
22  */
23 public class GoNextMeasureAction extends Action{
24 	public static final String NAME = "action.measure.go-next";
25 
GoNextMeasureAction()26 	public GoNextMeasureAction() {
27 		super(NAME, AUTO_LOCK | AUTO_UNLOCK | AUTO_UPDATE | KEY_BINDING_AVAILABLE);
28 	}
29 
execute(TypedEvent e)30 	protected int execute(TypedEvent e){
31 		Caret caret = getEditor().getTablature().getCaret();
32 		//si es el ultimo compas, agrego uno nuevo
33 		if(getSongManager().getTrackManager().isLastMeasure(caret.getMeasure())){
34 			int number = (getSongManager().getSong().countMeasureHeaders() + 1);
35 
36 			//comienza el undoable
37 			UndoableAddMeasure undoable = UndoableAddMeasure.startUndo(number);
38 
39 			this.getSongManager().addNewMeasure(number);
40 			this.fireUpdate(number);
41 			this.moveToNext();
42 
43 			//termia el undoable
44 			this.addUndoableEdit(undoable.endUndo());
45 		}
46 		else{
47 			this.moveToNext();
48 		}
49 
50 		return 0;
51 	}
52 
moveToNext()53 	private void moveToNext(){
54 		if(TuxGuitar.instance().getPlayer().isRunning()){
55 			TuxGuitar.instance().getTransport().gotoNext();
56 		}
57 		else{
58 			Caret caret = getEditor().getTablature().getCaret();
59 			TGTrackImpl track = caret.getTrack();
60 			TGMeasure measure = getSongManager().getTrackManager().getNextMeasure(caret.getMeasure());
61 			if(track != null && measure != null){
62 				caret.update(track.getNumber(),measure.getStart(),caret.getSelectedString().getNumber());
63 			}
64 		}
65 	}
66 }
67