2
* Created on 02-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.items.tool;
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;
38
* TODO To change the template for this generated type comment go to
39
* Window - Preferences - Java - Code Style - Code Templates
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;
49
public DurationToolItems(){
53
public void showItems(ToolBar toolBar){
54
this.toolBar = toolBar;
55
this.durationItems = new ToolItem[7];
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));
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));
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));
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));
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));
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));
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));
86
new ToolItem(toolBar, SWT.SEPARATOR);
88
this.dotted = new ToolItem(toolBar, SWT.CHECK);
89
this.dotted.setToolTipText("Puntillo");
90
this.dotted.addSelectionListener(TuxGuitar.instance().getAction(ChangeDottedDurationAction.NAME));
92
this.doubleDotted = new ToolItem(toolBar, SWT.CHECK);
93
this.doubleDotted.setToolTipText("Doble Puntillo");
94
this.doubleDotted.addSelectionListener(TuxGuitar.instance().getAction(ChangeDoubleDottedDurationAction.NAME));
96
this.tupletoItems = new TupletoMenuItem();
97
this.tupletoItems.addItems();
100
this.loadProperties();
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 );
111
this.dotted.setSelection(duration.isDotted());
112
this.dotted.setEnabled( !running );
113
this.doubleDotted.setSelection(duration.isDoubleDotted());
114
this.doubleDotted.setEnabled( !running );
116
this.tupletoItems.setEnabled( !running );
117
this.tupletoItems.update();
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"));
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());
146
protected TablatureEditor getEditor(){
147
return super.getEditor();
150
private class TupletoMenuItem extends SelectionAdapter {
151
private ToolItem tupleto;
152
private Menu subMenu;
153
private MenuItem[] subMenuItems;
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());
162
public void setText(String text){
163
this.tupleto.setToolTipText(text);
166
public void setImage(Image image){
167
this.tupleto.setImage(image);
170
public void setEnabled(boolean enabled){
171
this.tupleto.setEnabled(enabled);
174
public void addItems() {
175
this.subMenuItems = new MenuItem[8];
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));
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));
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));
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));
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));
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));
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));
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));
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);
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);
231
((TGTupleto)this.tupleto.getData()).setEnters(1);
232
((TGTupleto)this.tupleto.getData()).setTimes(1);
234
TuxGuitar.instance().getAction(ChangeTupletoDurationAction.NAME).process(event);
238
public void update(){
239
TGDuration duration = getEditor().getTablature().getCaret().getDuration();
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())));
247
private TGTupleto newTupleto(int enters,int times){
248
TGTupleto tupleto = TuxGuitar.instance().getSongManager().getFactory().newTupleto();
249
tupleto.setEnters(enters);
250
tupleto.setTimes(times);