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

« back to all changes in this revision

Viewing changes to TuxGuitar/src/org/herac/tuxguitar/gui/items/tool/DurationToolItems.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 02-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.items.tool;
 
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.graphics.Image;
 
13
import org.eclipse.swt.graphics.Point;
 
14
import org.eclipse.swt.graphics.Rectangle;
 
15
import org.eclipse.swt.widgets.Menu;
 
16
import org.eclipse.swt.widgets.MenuItem;
 
17
import org.eclipse.swt.widgets.ToolBar;
 
18
import org.eclipse.swt.widgets.ToolItem;
 
19
import org.herac.tuxguitar.gui.TuxGuitar;
 
20
import org.herac.tuxguitar.gui.actions.duration.ChangeDottedDurationAction;
 
21
import org.herac.tuxguitar.gui.actions.duration.ChangeDoubleDottedDurationAction;
 
22
import org.herac.tuxguitar.gui.actions.duration.ChangeTupletoDurationAction;
 
23
import org.herac.tuxguitar.gui.actions.duration.SetEighthDurationAction;
 
24
import org.herac.tuxguitar.gui.actions.duration.SetHalfDurationAction;
 
25
import org.herac.tuxguitar.gui.actions.duration.SetQuarterDurationAction;
 
26
import org.herac.tuxguitar.gui.actions.duration.SetSixteenthDurationAction;
 
27
import org.herac.tuxguitar.gui.actions.duration.SetSixtyFourthDurationAction;
 
28
import org.herac.tuxguitar.gui.actions.duration.SetThirtySecondDurationAction;
 
29
import org.herac.tuxguitar.gui.actions.duration.SetWholeDurationAction;
 
30
import org.herac.tuxguitar.gui.editors.TablatureEditor;
 
31
import org.herac.tuxguitar.gui.items.ToolItems;
 
32
import org.herac.tuxguitar.song.models.TGDuration;
 
33
import org.herac.tuxguitar.song.models.TGTupleto;
 
34
 
 
35
/**
 
36
 * @author julian
 
37
 *
 
38
 * TODO To change the template for this generated type comment go to
 
39
 * Window - Preferences - Java - Code Style - Code Templates
 
40
 */
 
41
public class DurationToolItems  extends ToolItems{
 
42
        public static final String NAME = "duration.items";
 
43
        protected ToolBar toolBar;
 
44
        private ToolItem[] durationItems;
 
45
        private ToolItem dotted;
 
46
        private ToolItem doubleDotted;
 
47
        private TupletoMenuItem tupletoItems;
 
48
        
 
49
        public DurationToolItems(){
 
50
                super(NAME);
 
51
        }
 
52
        
 
53
        public void showItems(ToolBar toolBar){
 
54
                this.toolBar = toolBar;
 
55
                this.durationItems = new ToolItem[7];
 
56
                
 
57
                this.durationItems[0] = new ToolItem(toolBar, SWT.RADIO);
 
58
                this.durationItems[0].setToolTipText("Redonda");
 
59
                this.durationItems[0].addSelectionListener(TuxGuitar.instance().getAction(SetWholeDurationAction.NAME));
 
60
                
 
61
                this.durationItems[1] = new ToolItem(toolBar, SWT.RADIO);
 
62
                this.durationItems[1].setToolTipText("Blanca");
 
63
                this.durationItems[1].addSelectionListener(TuxGuitar.instance().getAction(SetHalfDurationAction.NAME));
 
64
                
 
65
                this.durationItems[2] = new ToolItem(toolBar, SWT.RADIO);
 
66
                this.durationItems[2].setToolTipText("Negra");
 
67
                this.durationItems[2].setSelection(true);
 
68
                this.durationItems[2].addSelectionListener(TuxGuitar.instance().getAction(SetQuarterDurationAction.NAME));
 
69
                
 
70
                this.durationItems[3] = new ToolItem(toolBar, SWT.RADIO);
 
71
                this.durationItems[3].setToolTipText("Corchea");
 
72
                this.durationItems[3].addSelectionListener(TuxGuitar.instance().getAction(SetEighthDurationAction.NAME));
 
73
                
 
74
                this.durationItems[4] = new ToolItem(toolBar, SWT.RADIO);
 
75
                this.durationItems[4].setToolTipText("Semi-Corchea");
 
76
                this.durationItems[4].addSelectionListener(TuxGuitar.instance().getAction(SetSixteenthDurationAction.NAME));
 
77
                
 
78
                this.durationItems[5] = new ToolItem(toolBar, SWT.RADIO);
 
79
                this.durationItems[5].setToolTipText("Fusa");
 
80
                this.durationItems[5].addSelectionListener(TuxGuitar.instance().getAction(SetThirtySecondDurationAction.NAME));
 
81
                
 
82
                this.durationItems[6] = new ToolItem(toolBar, SWT.RADIO);
 
83
                this.durationItems[6].setToolTipText("Semi-Fusa");
 
84
                this.durationItems[6].addSelectionListener(TuxGuitar.instance().getAction(SetSixtyFourthDurationAction.NAME));
 
85
                
 
86
                new ToolItem(toolBar, SWT.SEPARATOR);
 
87
                
 
88
                this.dotted = new ToolItem(toolBar, SWT.CHECK);
 
89
                this.dotted.setToolTipText("Puntillo");
 
90
                this.dotted.addSelectionListener(TuxGuitar.instance().getAction(ChangeDottedDurationAction.NAME));
 
91
                
 
92
                this.doubleDotted = new ToolItem(toolBar, SWT.CHECK);
 
93
                this.doubleDotted.setToolTipText("Doble Puntillo");
 
94
                this.doubleDotted.addSelectionListener(TuxGuitar.instance().getAction(ChangeDoubleDottedDurationAction.NAME));
 
95
                
 
96
                this.tupletoItems = new TupletoMenuItem();
 
97
                this.tupletoItems.addItems();
 
98
                
 
99
                this.loadIcons();
 
100
                this.loadProperties();
 
101
        }
 
102
        
 
103
        public void update(){
 
104
                TGDuration duration = getEditor().getTablature().getCaret().getDuration();
 
105
                boolean running = TuxGuitar.instance().getPlayer().isRunning();
 
106
                int index = duration.getIndex();
 
107
                for(int i = 0;i < this.durationItems.length;i++){
 
108
                        this.durationItems[i].setSelection( (i == index) );
 
109
                        this.durationItems[i].setEnabled( !running );
 
110
                }
 
111
                this.dotted.setSelection(duration.isDotted());
 
112
                this.dotted.setEnabled( !running );
 
113
                this.doubleDotted.setSelection(duration.isDoubleDotted());
 
114
                this.doubleDotted.setEnabled( !running );
 
115
                
 
116
                this.tupletoItems.setEnabled( !running );
 
117
                this.tupletoItems.update();
 
118
        }
 
119
        
 
120
        public void loadProperties(){
 
121
                this.durationItems[0].setToolTipText(TuxGuitar.getProperty("duration.whole"));
 
122
                this.durationItems[1].setToolTipText(TuxGuitar.getProperty("duration.half"));
 
123
                this.durationItems[2].setToolTipText(TuxGuitar.getProperty("duration.quarter"));
 
124
                this.durationItems[3].setToolTipText(TuxGuitar.getProperty("duration.eighth"));
 
125
                this.durationItems[4].setToolTipText(TuxGuitar.getProperty("duration.sixteenth"));
 
126
                this.durationItems[5].setToolTipText(TuxGuitar.getProperty("duration.thirtysecond"));
 
127
                this.durationItems[6].setToolTipText(TuxGuitar.getProperty("duration.sixtyfourth"));
 
128
                this.dotted.setToolTipText(TuxGuitar.getProperty("duration.dotted"));
 
129
                this.doubleDotted.setToolTipText(TuxGuitar.getProperty("duration.doubledotted"));
 
130
                this.tupletoItems.setText(TuxGuitar.getProperty("duration.tupleto"));
 
131
        }
 
132
        
 
133
        public void loadIcons(){
 
134
                this.durationItems[0].setImage(TuxGuitar.instance().getIconManager().getDuration(TGDuration.WHOLE));
 
135
                this.durationItems[1].setImage(TuxGuitar.instance().getIconManager().getDuration(TGDuration.HALF));
 
136
                this.durationItems[2].setImage(TuxGuitar.instance().getIconManager().getDuration(TGDuration.QUARTER));
 
137
                this.durationItems[3].setImage(TuxGuitar.instance().getIconManager().getDuration(TGDuration.EIGHTH));
 
138
                this.durationItems[4].setImage(TuxGuitar.instance().getIconManager().getDuration(TGDuration.SIXTEENTH));
 
139
                this.durationItems[5].setImage(TuxGuitar.instance().getIconManager().getDuration(TGDuration.THIRTY_SECOND));
 
140
                this.durationItems[6].setImage(TuxGuitar.instance().getIconManager().getDuration(TGDuration.SIXTY_FOURTH));
 
141
                this.dotted.setImage(TuxGuitar.instance().getIconManager().getDurationDotted());
 
142
                this.doubleDotted.setImage(TuxGuitar.instance().getIconManager().getDurationDoubleDotted());
 
143
                this.tupletoItems.setImage(TuxGuitar.instance().getIconManager().getDurationTupleto());
 
144
        }
 
145
        
 
146
        protected TablatureEditor getEditor(){
 
147
                return super.getEditor();
 
148
        }
 
149
        
 
150
        private class TupletoMenuItem extends SelectionAdapter {
 
151
                private ToolItem tupleto;
 
152
                private Menu subMenu;
 
153
                private MenuItem[] subMenuItems;
 
154
                
 
155
                public TupletoMenuItem() {
 
156
                        this.tupleto = new ToolItem(DurationToolItems.this.toolBar, SWT.DROP_DOWN);
 
157
                        this.tupleto.addSelectionListener(this);
 
158
                        this.tupleto.setData(newTupleto(3,2));
 
159
                        this.subMenu = new Menu(this.tupleto.getParent().getShell());
 
160
                }
 
161
                
 
162
                public void setText(String text){
 
163
                        this.tupleto.setToolTipText(text);
 
164
                }
 
165
                
 
166
                public void setImage(Image image){
 
167
                        this.tupleto.setImage(image);
 
168
                }
 
169
                
 
170
                public void setEnabled(boolean enabled){
 
171
                        this.tupleto.setEnabled(enabled);
 
172
                }
 
173
                
 
174
                public void addItems() {
 
175
                        this.subMenuItems = new MenuItem[8];
 
176
                        
 
177
                        this.subMenuItems[0] = new MenuItem(this.subMenu, SWT.CHECK);
 
178
                        this.subMenuItems[0].setText("3");
 
179
                        this.subMenuItems[0].setData(newTupleto(3,2));
 
180
                        this.subMenuItems[0].addSelectionListener(TuxGuitar.instance().getAction(ChangeTupletoDurationAction.NAME));
 
181
                        
 
182
                        this.subMenuItems[1] = new MenuItem(this.subMenu, SWT.CHECK);
 
183
                        this.subMenuItems[1].setText("5");
 
184
                        this.subMenuItems[1].setData(newTupleto(5,4));
 
185
                        this.subMenuItems[1].addSelectionListener(TuxGuitar.instance().getAction(ChangeTupletoDurationAction.NAME));
 
186
                        
 
187
                        this.subMenuItems[2] = new MenuItem(this.subMenu, SWT.CHECK);
 
188
                        this.subMenuItems[2].setText("6");
 
189
                        this.subMenuItems[2].setData(newTupleto(6,4));
 
190
                        this.subMenuItems[2].addSelectionListener(TuxGuitar.instance().getAction(ChangeTupletoDurationAction.NAME));
 
191
                        
 
192
                        this.subMenuItems[3] = new MenuItem(this.subMenu, SWT.CHECK);
 
193
                        this.subMenuItems[3].setText("7");
 
194
                        this.subMenuItems[3].setData(newTupleto(7,4));
 
195
                        this.subMenuItems[3].addSelectionListener(TuxGuitar.instance().getAction(ChangeTupletoDurationAction.NAME));
 
196
                        
 
197
                        this.subMenuItems[4] = new MenuItem(this.subMenu, SWT.CHECK);
 
198
                        this.subMenuItems[4].setText("9");
 
199
                        this.subMenuItems[4].setData(newTupleto(9,8));
 
200
                        this.subMenuItems[4].addSelectionListener(TuxGuitar.instance().getAction(ChangeTupletoDurationAction.NAME));
 
201
                        
 
202
                        this.subMenuItems[5] = new MenuItem(this.subMenu, SWT.CHECK);
 
203
                        this.subMenuItems[5].setText("10");
 
204
                        this.subMenuItems[5].setData(newTupleto(10,8));
 
205
                        this.subMenuItems[5].addSelectionListener(TuxGuitar.instance().getAction(ChangeTupletoDurationAction.NAME));
 
206
                        
 
207
                        this.subMenuItems[6] = new MenuItem(this.subMenu, SWT.CHECK);
 
208
                        this.subMenuItems[6].setText("11");
 
209
                        this.subMenuItems[6].setData(newTupleto(11,8));
 
210
                        this.subMenuItems[6].addSelectionListener(TuxGuitar.instance().getAction(ChangeTupletoDurationAction.NAME));
 
211
                        
 
212
                        this.subMenuItems[7] = new MenuItem(this.subMenu, SWT.CHECK);
 
213
                        this.subMenuItems[7].setText("12");
 
214
                        this.subMenuItems[7].setData(newTupleto(12,8));
 
215
                        this.subMenuItems[7].addSelectionListener(TuxGuitar.instance().getAction(ChangeTupletoDurationAction.NAME));
 
216
                }
 
217
                
 
218
                public void widgetSelected(SelectionEvent event) {
 
219
                        if (event.detail == SWT.ARROW) {
 
220
                                ToolItem item = (ToolItem) event.widget;
 
221
                                Rectangle rect = item.getBounds();
 
222
                                Point pt = item.getParent().toDisplay(new Point(rect.x, rect.y));
 
223
                                this.subMenu.setLocation(pt.x, pt.y + rect.height);
 
224
                                this.subMenu.setVisible(true);
 
225
                        }else{
 
226
                                TGDuration duration = getEditor().getTablature().getCaret().getDuration();
 
227
                                if(duration.getTupleto().isEqual(TGTupleto.NORMAL)){
 
228
                                        ((TGTupleto)this.tupleto.getData()).setEnters(3);
 
229
                                        ((TGTupleto)this.tupleto.getData()).setTimes(2);
 
230
                                }else{
 
231
                                        ((TGTupleto)this.tupleto.getData()).setEnters(1);
 
232
                                        ((TGTupleto)this.tupleto.getData()).setTimes(1);
 
233
                                }
 
234
                                TuxGuitar.instance().getAction(ChangeTupletoDurationAction.NAME).process(event);
 
235
                        }
 
236
                }
 
237
                
 
238
                public void update(){
 
239
                        TGDuration duration = getEditor().getTablature().getCaret().getDuration();
 
240
                        
 
241
                        for(int i = 0;i < this.subMenuItems.length;i++){
 
242
                                TGTupleto tupleto = (TGTupleto)this.subMenuItems[i].getData();
 
243
                                this.subMenuItems[i].setSelection((tupleto.isEqual(duration.getTupleto())));
 
244
                        }
 
245
                }
 
246
                
 
247
                private TGTupleto newTupleto(int enters,int times){
 
248
                        TGTupleto tupleto = TuxGuitar.instance().getSongManager().getFactory().newTupleto();
 
249
                        tupleto.setEnters(enters);
 
250
                        tupleto.setTimes(times);
 
251
                        return tupleto;
 
252
                }
 
253
        }
 
254
}