~ubuntu-branches/ubuntu/oneiric/tuxguitar/oneiric

« back to all changes in this revision

Viewing changes to TuxGuitar/src/org/herac/tuxguitar/gui/actions/composition/ChangeTimeSignatureAction.java

  • Committer: Bazaar Package Importer
  • Author(s): Philippe Coval
  • Date: 2008-06-19 00:30:30 UTC
  • mto: (5.1.2 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20080619003030-h719szrhsngou7c6
Tags: upstream-1.0
ImportĀ upstreamĀ versionĀ 1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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.composition;
 
8
 
 
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.Caret;
 
24
import org.herac.tuxguitar.gui.editors.tab.TGMeasureImpl;
 
25
import org.herac.tuxguitar.gui.undo.undoables.custom.UndoableChangeTimeSignature;
 
26
import org.herac.tuxguitar.gui.util.DialogUtils;
 
27
import org.herac.tuxguitar.song.managers.TGSongManager;
 
28
import org.herac.tuxguitar.song.models.TGTimeSignature;
 
29
 
 
30
/**
 
31
 * @author julian
 
32
 *
 
33
 * TODO To change the template for this generated type comment go to
 
34
 * Window - Preferences - Java - Code Style - Code Templates
 
35
 */
 
36
public class ChangeTimeSignatureAction extends Action{
 
37
        public static final String NAME = "action.composition.change-time-signature";
 
38
        
 
39
        public ChangeTimeSignatureAction() {
 
40
                super(NAME, AUTO_LOCK | AUTO_UNLOCK | AUTO_UPDATE | DISABLE_ON_PLAYING | KEY_BINDING_AVAILABLE);
 
41
        }
 
42
        
 
43
        protected int execute(TypedEvent e){
 
44
                showDialog(getEditor().getTablature().getShell());
 
45
                return 0;
 
46
        }
 
47
        
 
48
        public void showDialog(Shell shell) {
 
49
                TGMeasureImpl measure = getEditor().getTablature().getCaret().getMeasure();
 
50
                if (measure != null) {
 
51
                        final Shell dialog = DialogUtils.newDialog(shell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
 
52
                        
 
53
                        dialog.setLayout(new GridLayout());
 
54
                        dialog.setText(TuxGuitar.getProperty("composition.timesignature"));
 
55
                        
 
56
                        //-------------TIME SIGNATURE-----------------------------------------------
 
57
                        Group timeSignature = new Group(dialog,SWT.SHADOW_ETCHED_IN);
 
58
                        timeSignature.setLayout(new GridLayout(2,false));
 
59
                        timeSignature.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
 
60
                        timeSignature.setText(TuxGuitar.getProperty("composition.timesignature"));
 
61
                        
 
62
                        TGTimeSignature currentTimeSignature = measure.getTimeSignature();
 
63
                        //numerator
 
64
                        Label numeratorLabel = new Label(timeSignature, SWT.NULL);
 
65
                        numeratorLabel.setText(TuxGuitar.getProperty("composition.timesignature.Numerator"));
 
66
                        final Combo numerator = new Combo(timeSignature, SWT.DROP_DOWN | SWT.READ_ONLY);
 
67
                        for (int i = 1; i <= 32; i++) {
 
68
                                numerator.add(Integer.toString(i));
 
69
                        }
 
70
                        numerator.setText(Integer.toString(currentTimeSignature.getNumerator()));
 
71
                        numerator.setLayoutData(getComboData());
 
72
                        //denominator
 
73
                        Label denominatorLabel = new Label(timeSignature, SWT.NULL);
 
74
                        denominatorLabel.setText(TuxGuitar.getProperty("composition.timesignature.denominator"));
 
75
                        final Combo denominator = new Combo(timeSignature, SWT.DROP_DOWN | SWT.READ_ONLY);
 
76
                        for (int i = 1; i <= 32; i = i * 2) {
 
77
                                denominator.add(Integer.toString(i));
 
78
                        }
 
79
                        denominator.setText(Integer.toString(currentTimeSignature.getDenominator().getValue()));
 
80
                        denominator.setLayoutData(getComboData());
 
81
                        
 
82
                        //--------------------To End Checkbox-------------------------------
 
83
                        Group check = new Group(dialog,SWT.SHADOW_ETCHED_IN);
 
84
                        check.setLayout(new GridLayout());
 
85
                        check.setText(TuxGuitar.getProperty("options"));
 
86
                        check.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
 
87
                        
 
88
                        final Button toEnd = new Button(check, SWT.CHECK);
 
89
                        toEnd.setText(TuxGuitar.getProperty("composition.timesignature.to-the-end"));
 
90
                        toEnd.setSelection(true);
 
91
                        //------------------BUTTONS--------------------------
 
92
                        Composite buttons = new Composite(dialog, SWT.NONE);
 
93
                        buttons.setLayout(new GridLayout(2,false));
 
94
                        buttons.setLayoutData(new GridData(SWT.END,SWT.FILL,true,true));
 
95
                        
 
96
                        final Button buttonOk = new Button(buttons, SWT.PUSH);
 
97
                        buttonOk.setText(TuxGuitar.getProperty("ok"));
 
98
                        buttonOk.setLayoutData(getButtonData());
 
99
                        buttonOk.addSelectionListener(new SelectionAdapter() {
 
100
                                public void widgetSelected(SelectionEvent arg0) {
 
101
                                        boolean toEndValue = toEnd.getSelection();
 
102
                                        int numeratorValue = Integer.parseInt(numerator.getText());
 
103
                                        int denominatorValue = Integer.parseInt(denominator.getText());
 
104
                                        
 
105
                                        TGTimeSignature timeSignature = getSongManager().getFactory().newTimeSignature();
 
106
                                        timeSignature.setNumerator(numeratorValue);
 
107
                                        timeSignature.getDenominator().setValue(denominatorValue);
 
108
                                        
 
109
                                        setTimeSignature(timeSignature,toEndValue);
 
110
                                        
 
111
                                        dialog.dispose();
 
112
                                }
 
113
                        });
 
114
                        
 
115
                        Button buttonCancel = new Button(buttons, SWT.PUSH);
 
116
                        buttonCancel.setLayoutData(getButtonData());
 
117
                        buttonCancel.setText(TuxGuitar.getProperty("cancel"));
 
118
                        buttonCancel.addSelectionListener(new SelectionAdapter() {
 
119
                                public void widgetSelected(SelectionEvent arg0) {
 
120
                                        dialog.dispose();
 
121
                                }
 
122
                        });
 
123
                        
 
124
                        dialog.setDefaultButton( buttonOk );
 
125
                        
 
126
                        DialogUtils.openDialog(dialog,DialogUtils.OPEN_STYLE_CENTER | DialogUtils.OPEN_STYLE_PACK | DialogUtils.OPEN_STYLE_WAIT);
 
127
                }
 
128
        }
 
129
        
 
130
        private GridData getButtonData(){
 
131
                GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
 
132
                data.minimumWidth = 80;
 
133
                data.minimumHeight = 25;
 
134
                return data;
 
135
        }
 
136
        
 
137
        private GridData getComboData(){
 
138
                GridData data = new GridData(SWT.FILL,SWT.FILL,true,true);
 
139
                data.minimumWidth = 150;
 
140
                return data;
 
141
        }
 
142
        
 
143
        protected void setTimeSignature(TGTimeSignature timeSignature,boolean toEnd){
 
144
                //comienza el undoable
 
145
                UndoableChangeTimeSignature undoable = UndoableChangeTimeSignature.startUndo();
 
146
                
 
147
                Caret caret = getEditor().getTablature().getCaret();
 
148
                TGMeasureImpl measure = caret.getMeasure();
 
149
                
 
150
                getSongManager().changeTimeSignature(measure.getStart(),timeSignature,toEnd);
 
151
                
 
152
                TuxGuitar.instance().getFileHistory().setUnsavedFile();
 
153
                
 
154
                //actualizo la tablatura
 
155
                updateTablature();
 
156
                
 
157
                //termia el undoable
 
158
                addUndoableEdit(undoable.endUndo(timeSignature,toEnd));
 
159
        }
 
160
        
 
161
        public TGSongManager getSongManager(){
 
162
                return super.getSongManager();
 
163
        }
 
164
}