2
* Created on 17-dic-2005
4
* TODO To change the template for this generated file go to
5
* Window - Preferences - Java - Code Style - Code Templates
7
package org.herac.tuxguitar.gui.actions.transport;
9
import org.eclipse.swt.events.TypedEvent;
10
import org.eclipse.swt.widgets.Display;
11
import org.herac.tuxguitar.gui.TuxGuitar;
12
import org.herac.tuxguitar.gui.actions.Action;
13
import org.herac.tuxguitar.gui.util.MessageDialog;
14
import org.herac.tuxguitar.gui.util.MidiTickUtil;
15
import org.herac.tuxguitar.player.base.MidiPlayer;
16
import org.herac.tuxguitar.player.base.MidiPlayerException;
17
import org.herac.tuxguitar.song.models.TGMeasureHeader;
18
import org.herac.tuxguitar.util.TGSynchronizer;
23
* TODO To change the template for this generated type comment go to Window - Preferences - Java - Code Style - Code Templates
25
public class TransportPlayAction extends Action {
26
public static final String NAME = "action.transport.play";
28
public TransportPlayAction() {
29
super(NAME, AUTO_LOCK | AUTO_UNLOCK | AUTO_UPDATE | KEY_BINDING_AVAILABLE);
32
protected int execute(TypedEvent e){
33
MidiPlayer player = TuxGuitar.instance().getPlayer();
34
if(!player.isRunning()){
36
player.getMode().reset();
39
}catch(MidiPlayerException exception){
40
MessageDialog.errorMessage(exception);
49
protected void playThread() {
50
final Display display = TuxGuitar.instance().getDisplay();
51
final TGSynchronizer.TGRunnable playing = new TGSynchronizer.TGRunnable() {
53
if(TuxGuitar.instance().getPlayer().isRunning()){
54
TuxGuitar.instance().redrawPayingMode();
58
final TGSynchronizer.TGRunnable finish = new TGSynchronizer.TGRunnable() {
61
TuxGuitar.instance().updateCache(true);
64
new Thread(new Runnable() {
67
while (TuxGuitar.instance().getPlayer().isRunning()) {
68
synchronized(playing){
69
TGSynchronizer.instance().addRunnable(playing);
73
if(!display.isDisposed()){
74
TGSynchronizer.instance().addRunnable(finish);
76
} catch (Throwable throwable) {
77
throwable.printStackTrace();
83
protected void updateTickPosition(){
84
MidiPlayer player = TuxGuitar.instance().getPlayer();
85
TGMeasureHeader header = getSongManager().getMeasureHeaderAt(MidiTickUtil.getStart(player.getTickPosition()));
87
player.setTickPosition(MidiTickUtil.getTick(header.getStart()));
89
getEditor().getTablature().getCaret().goToTickPosition();
b'\\ No newline at end of file'