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.composition;
9
import org.eclipse.swt.SWT;
10
import org.eclipse.swt.events.SelectionAdapter;
11
import org.eclipse.swt.events.SelectionEvent;
12
import org.eclipse.swt.events.TypedEvent;
13
import org.eclipse.swt.layout.GridData;
14
import org.eclipse.swt.layout.GridLayout;
15
import org.eclipse.swt.widgets.Button;
16
import org.eclipse.swt.widgets.Combo;
17
import org.eclipse.swt.widgets.Composite;
18
import org.eclipse.swt.widgets.Group;
19
import org.eclipse.swt.widgets.Label;
20
import org.eclipse.swt.widgets.Shell;
21
import org.herac.tuxguitar.gui.TuxGuitar;
22
import org.herac.tuxguitar.gui.actions.Action;
23
import org.herac.tuxguitar.gui.editors.tab.TGMeasureImpl;
24
import org.herac.tuxguitar.gui.undo.undoables.custom.UndoableChangeKeySignature;
25
import org.herac.tuxguitar.gui.util.DialogUtils;
26
import org.herac.tuxguitar.song.models.TGMeasure;
27
import org.herac.tuxguitar.song.models.TGTrack;
32
* TODO To change the template for this generated type comment go to
33
* Window - Preferences - Java - Code Style - Code Templates
35
public class ChangeKeySignatureAction extends Action{
36
public static final String NAME = "action.composition.change-key-signature";
38
public ChangeKeySignatureAction() {
39
super(NAME, AUTO_LOCK | AUTO_UNLOCK | AUTO_UPDATE | DISABLE_ON_PLAYING | KEY_BINDING_AVAILABLE);
42
protected int execute(TypedEvent e){
43
showDialog(getEditor().getTablature().getShell());
47
public void showDialog(Shell shell) {
48
TGMeasureImpl measure = getEditor().getTablature().getCaret().getMeasure();
49
if (measure != null) {
50
final Shell dialog = DialogUtils.newDialog(shell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
52
dialog.setLayout(new GridLayout());
53
dialog.setText(TuxGuitar.getProperty("composition.keysignature"));
55
//-------key Signature-------------------------------------
56
Group keySignature = new Group(dialog,SWT.SHADOW_ETCHED_IN);
57
keySignature.setLayout(new GridLayout(2,false));
58
keySignature.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
59
keySignature.setText(TuxGuitar.getProperty("composition.keysignature"));
61
Label numeratorLabel = new Label(keySignature, SWT.NULL);
62
numeratorLabel.setText(TuxGuitar.getProperty("composition.keysignature") + ":");
64
final Combo keySignatures = new Combo(keySignature, SWT.DROP_DOWN | SWT.READ_ONLY);
66
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.natural"));
67
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.sharp-1"));
68
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.sharp-2"));
69
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.sharp-3"));
70
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.sharp-4"));
71
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.sharp-5"));
72
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.sharp-6"));
73
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.sharp-7"));
74
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.flat-1"));
75
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.flat-2"));
76
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.flat-3"));
77
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.flat-4"));
78
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.flat-5"));
79
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.flat-6"));
80
keySignatures.add(TuxGuitar.getProperty("composition.keysignature.flat-7"));
81
keySignatures.select(measure.getKeySignature());
82
keySignatures.setLayoutData(getComboData());
83
//--------------------To End Checkbox-------------------------------
84
Group check = new Group(dialog,SWT.SHADOW_ETCHED_IN);
85
check.setLayout(new GridLayout());
86
check.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
87
check.setText(TuxGuitar.getProperty("options"));
89
final Button toEnd = new Button(check, SWT.CHECK);
90
toEnd.setText(TuxGuitar.getProperty("composition.keysignature.to-the-end"));
91
toEnd.setSelection(true);
92
//------------------BUTTONS--------------------------
93
Composite buttons = new Composite(dialog, SWT.NONE);
94
buttons.setLayout(new GridLayout(2,false));
95
buttons.setLayoutData(new GridData(SWT.END,SWT.FILL,true,true));
97
final Button buttonOK = new Button(buttons, SWT.PUSH);
98
buttonOK.setText(TuxGuitar.getProperty("ok"));
99
buttonOK.setLayoutData(getButtonData());
100
buttonOK.addSelectionListener(new SelectionAdapter() {
101
public void widgetSelected(SelectionEvent arg0) {
102
boolean toEndValue = toEnd.getSelection();
103
setKeySignature(keySignatures.getSelectionIndex(),toEndValue);
109
Button buttonCancel = new Button(buttons, SWT.PUSH);
110
buttonCancel.setText(TuxGuitar.getProperty("cancel"));
111
buttonCancel.setLayoutData(getButtonData());
112
buttonCancel.addSelectionListener(new SelectionAdapter() {
113
public void widgetSelected(SelectionEvent arg0) {
118
dialog.setDefaultButton( buttonOK );
120
DialogUtils.openDialog(dialog,DialogUtils.OPEN_STYLE_CENTER | DialogUtils.OPEN_STYLE_PACK | DialogUtils.OPEN_STYLE_WAIT);
124
private GridData getButtonData(){
125
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
126
data.minimumWidth = 80;
127
data.minimumHeight = 25;
131
private GridData getComboData(){
132
GridData data = new GridData(SWT.FILL,SWT.FILL,true,true);
133
data.minimumWidth = 150;
137
protected void setKeySignature(int keySignature,boolean toEnd){
138
//comienza el undoable
139
UndoableChangeKeySignature undoable = UndoableChangeKeySignature.startUndo();
141
TGMeasure measure = getEditor().getTablature().getCaret().getMeasure();
142
TGTrack track = getEditor().getTablature().getCaret().getTrack();
143
getSongManager().getTrackManager().changeKeySignature(track,measure.getStart(),keySignature,toEnd);
145
TuxGuitar.instance().getFileHistory().setUnsavedFile();
147
//actualizo la tablatura
151
addUndoableEdit(undoable.endUndo(keySignature,toEnd));