1
package org.herac.tuxguitar.gui.items.menu;
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;
17
public class ChordMenuItem implements MenuItems{
18
private TablatureEditor tablatureEditor;
20
private MenuItem chordMenuItem;
22
private MenuItem insertChord;
23
private MenuItem[] subMenuItems;
25
private long lastEdit;
27
public ChordMenuItem(Shell shell,Menu parent, int style,TablatureEditor tablatureEditor) {
28
this.chordMenuItem = new MenuItem(parent, style);
29
this.tablatureEditor = tablatureEditor;
31
this.menu = new Menu(shell, SWT.DROP_DOWN);
34
public void showItems() {
36
this.insertChord = new MenuItem(this.menu, SWT.PUSH);
37
this.insertChord.addSelectionListener(TuxGuitar.instance().getAction(InsertChordAction.NAME));
39
new MenuItem(this.menu, SWT.SEPARATOR);
43
this.chordMenuItem.setMenu(this.menu);
45
this.loadProperties();
49
public void addItems() {
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));
61
public void disposeItems() {
62
if(this.subMenuItems != null){
63
for(int i = 0;i < this.subMenuItems.length; i++){
64
this.subMenuItems[i].dispose();
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);
77
TuxGuitar.instance().getAction(InsertChordAction.NAME).process(event);
82
if(lastEdit != TuxGuitar.instance().getCustomChordManager().getLastEdit()){
84
this.lastEdit = TuxGuitar.instance().getCustomChordManager().getLastEdit();
88
public void loadProperties() {
89
this.chordMenuItem.setText(TuxGuitar.getProperty("chord"));
90
this.insertChord.setText(TuxGuitar.getProperty("insert.chord"));