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

« back to all changes in this revision

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