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

« back to all changes in this revision

Viewing changes to src/org/herac/tuxguitar/gui/items/menu/ChordMenuItem.java

  • Committer: Bazaar Package Importer
  • Author(s): Philippe Coval
  • Date: 2007-02-04 01:41:23 UTC
  • Revision ID: james.westby@ubuntu.com-20070204014123-9pv7okph0iaiqkvw
Tags: upstream-0.9.1
ImportĀ upstreamĀ versionĀ 0.9.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.herac.tuxguitar.gui.items.menu;
 
2
 
 
3
import org.eclipse.swt.SWT;
 
4
import org.eclipse.swt.events.SelectionEvent;
 
5
import org.eclipse.swt.graphics.Point;
 
6
import org.eclipse.swt.graphics.Rectangle;
 
7
import org.eclipse.swt.widgets.Menu;
 
8
import org.eclipse.swt.widgets.MenuItem;
 
9
import org.eclipse.swt.widgets.Shell;
 
10
import org.eclipse.swt.widgets.ToolItem;
 
11
import org.herac.tuxguitar.gui.TuxGuitar;
 
12
import org.herac.tuxguitar.gui.actions.insert.InsertChordAction;
 
13
import org.herac.tuxguitar.gui.editors.TablatureEditor;
 
14
import org.herac.tuxguitar.gui.items.MenuItems;
 
15
import org.herac.tuxguitar.song.models.Chord;
 
16
 
 
17
public class ChordMenuItem   implements MenuItems{
 
18
    private TablatureEditor tablatureEditor;
 
19
    private Shell shell;
 
20
    private MenuItem chordMenuItem;
 
21
    private Menu menu; 
 
22
    private MenuItem insertChord;
 
23
    private MenuItem[] subMenuItems;
 
24
    
 
25
    private long lastEdit;
 
26
    
 
27
    public ChordMenuItem(Shell shell,Menu parent, int style,TablatureEditor tablatureEditor) {
 
28
        this.chordMenuItem = new MenuItem(parent, style);
 
29
        this.tablatureEditor = tablatureEditor;
 
30
        this.shell = shell;
 
31
        this.menu = new Menu(shell, SWT.DROP_DOWN);
 
32
    }    
 
33
    
 
34
        public void showItems() {
 
35
        //--INSERT CHORD--
 
36
        this.insertChord = new MenuItem(this.menu, SWT.PUSH);
 
37
        this.insertChord.addSelectionListener(TuxGuitar.instance().getAction(InsertChordAction.NAME)); 
 
38
        //--SEPARATOR--
 
39
        new MenuItem(this.menu, SWT.SEPARATOR);
 
40
        //--CUSTOM CHORDS--
 
41
                this.addItems();
 
42
                
 
43
                this.chordMenuItem.setMenu(this.menu);    
 
44
                
 
45
                this.loadProperties();
 
46
        }    
 
47
    
 
48
    
 
49
    public void addItems() {    
 
50
        this.disposeItems();
 
51
        this.subMenuItems = new MenuItem[TuxGuitar.instance().getCustomChordManager().countChords()];            
 
52
        for(int i = 0;i < this.subMenuItems.length; i++){               
 
53
                Chord chord = TuxGuitar.instance().getCustomChordManager().getChord(i);                 
 
54
                this.subMenuItems[i] = new MenuItem(this.menu, SWT.PUSH);
 
55
                this.subMenuItems[i].setData(chord);
 
56
                this.subMenuItems[i].setText(chord.getName());       
 
57
                this.subMenuItems[i].addSelectionListener(TuxGuitar.instance().getAction(InsertChordAction.NAME));
 
58
        }
 
59
    }
 
60
 
 
61
    public void disposeItems() {                
 
62
        if(this.subMenuItems != null){
 
63
                for(int i = 0;i < this.subMenuItems.length; i++){                                       
 
64
                        this.subMenuItems[i].dispose();          
 
65
                }
 
66
        }
 
67
    }
 
68
    
 
69
    public void widgetSelected(SelectionEvent event) {
 
70
        if (event.detail == SWT.ARROW && this.subMenuItems != null && this.subMenuItems.length > 0) {            
 
71
            ToolItem item = (ToolItem) event.widget;
 
72
            Rectangle rect = item.getBounds();
 
73
            Point pt = item.getParent().toDisplay(new Point(rect.x, rect.y));
 
74
            this.menu.setLocation(pt.x, pt.y + rect.height);
 
75
            this.menu.setVisible(true);
 
76
        }else{
 
77
                TuxGuitar.instance().getAction(InsertChordAction.NAME).process(event); 
 
78
        }
 
79
    }
 
80
    
 
81
    public void update(){
 
82
        if(lastEdit != TuxGuitar.instance().getCustomChordManager().getLastEdit()){
 
83
                this.addItems();
 
84
                this.lastEdit = TuxGuitar.instance().getCustomChordManager().getLastEdit();
 
85
        }                
 
86
        }       
 
87
        
 
88
        public void loadProperties() {
 
89
                this.chordMenuItem.setText(TuxGuitar.getProperty("chord"));
 
90
                this.insertChord.setText(TuxGuitar.getProperty("insert.chord"));  
 
91
        }
 
92
        
 
93
        
 
94
        
 
95
        
 
96
        
 
97
        
 
98
        
 
99
        
 
100
        
 
101
        
 
102
 
 
103
}