1
package org.herac.tuxguitar.gui.editors.lyric;
3
import org.eclipse.swt.events.ModifyEvent;
4
import org.eclipse.swt.events.ModifyListener;
5
import org.eclipse.swt.widgets.Spinner;
6
import org.eclipse.swt.widgets.Text;
7
import org.herac.tuxguitar.gui.TuxGuitar;
8
import org.herac.tuxguitar.gui.undo.undoables.track.UndoableTrackLyric;
9
import org.herac.tuxguitar.song.models.TGTrack;
11
public class LyricModifyListener implements ModifyListener{
13
private boolean enabled;
14
private LyricEditor editor;
15
private int lastPosition;
17
public LyricModifyListener(LyricEditor editor){
21
public void modifyText(ModifyEvent e) {
22
if(isEnabled() && !TuxGuitar.instance().getPlayer().isRunning()){
24
if(e.widget instanceof Text){
25
TGTrack track = this.editor.getTrack();
26
Text text = (Text)e.widget;
27
String value = text.getText();
28
int position = text.getCaretPosition();
30
UndoableTrackLyric undoable = UndoableTrackLyric.startUndo(track,this.lastPosition);
31
track.getLyrics().setLyrics(value);
32
TuxGuitar.instance().getUndoableManager().addEdit( undoable.endUndo(track,position) );
33
TuxGuitar.instance().getFileHistory().setUnsavedFile();
35
this.lastPosition = position;
36
}else if(e.widget instanceof Spinner){
37
TGTrack track = this.editor.getTrack();
38
UndoableTrackLyric undoable = UndoableTrackLyric.startUndo(track,this.lastPosition);
39
track.getLyrics().setFrom(((Spinner)e.widget).getSelection());
40
TuxGuitar.instance().getUndoableManager().addEdit( undoable.endUndo(track,this.lastPosition) );
41
TuxGuitar.instance().getFileHistory().setUnsavedFile();
44
TuxGuitar.instance().updateCache(true);
48
public boolean isEnabled() {
52
public void setEnabled(boolean enabled) {
53
this.enabled = enabled;