1 package camidion.chordhelper;
3 import java.awt.Component;
4 import java.awt.event.MouseEvent;
5 import java.awt.event.MouseListener;
7 import javax.swing.ButtonGroup;
8 import javax.swing.JCheckBoxMenuItem;
9 import javax.swing.JLabel;
10 import javax.swing.JPopupMenu;
11 import javax.swing.JRadioButtonMenuItem;
12 import javax.swing.event.PopupMenuEvent;
13 import javax.swing.event.PopupMenuListener;
18 class InversionAndOmissionLabel extends JLabel
19 implements MouseListener, PopupMenuListener
21 JPopupMenu popup_menu;
22 ButtonGroup omission_group = new ButtonGroup();
23 ButtonIcon icon = new ButtonIcon(ButtonIcon.INVERSION_ICON);
24 JRadioButtonMenuItem radioButtonitems[] = new JRadioButtonMenuItem[4];
25 JCheckBoxMenuItem cb_inversion;
27 public InversionAndOmissionLabel() {
29 popup_menu = new JPopupMenu();
31 cb_inversion = new JCheckBoxMenuItem("Auto Inversion",true)
33 popup_menu.addSeparator();
35 radioButtonitems[0] = new JRadioButtonMenuItem("All notes",true)
37 popup_menu.add(radioButtonitems[0]);
39 radioButtonitems[1] = new JRadioButtonMenuItem("Omit 5th")
41 popup_menu.add(radioButtonitems[1]);
43 radioButtonitems[2] = new JRadioButtonMenuItem("Omit 3rd (Power Chord)")
45 popup_menu.add(radioButtonitems[2]);
47 radioButtonitems[3] = new JRadioButtonMenuItem("Omit root")
49 popup_menu.add(radioButtonitems[3]);
50 addMouseListener(this);
51 popup_menu.addPopupMenuListener(this);
52 setToolTipText("Automatic inversion and Note omission - 自動転回と省略音の設定");
54 public void mousePressed(MouseEvent e) {
55 Component c = e.getComponent();
56 if( c == this ) popup_menu.show( c, 0, getHeight() );
58 public void mouseReleased(MouseEvent e) { }
59 public void mouseEntered(MouseEvent e) { }
60 public void mouseExited(MouseEvent e) { }
61 public void mouseClicked(MouseEvent e) { }
62 public void popupMenuCanceled(PopupMenuEvent e) { }
63 public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
64 repaint(); // To repaint icon image
66 public void popupMenuWillBecomeVisible(PopupMenuEvent e) { }
67 public boolean isAutoInversionMode() {
68 return cb_inversion.isSelected();
70 public void setAutoInversion(boolean is_auto) {
71 cb_inversion.setSelected(is_auto);
73 public int getOmissionNoteIndex() {
74 if( radioButtonitems[3].isSelected() ) { // Root
77 else if( radioButtonitems[2].isSelected() ) { // 3rd
80 else if( radioButtonitems[1].isSelected() ) { // 5th
87 public void setOmissionNoteIndex(int index) {
89 case 0: radioButtonitems[3].setSelected(true); break;
90 case 1: radioButtonitems[2].setSelected(true); break;
91 case 2: radioButtonitems[1].setSelected(true); break;
92 default: radioButtonitems[0].setSelected(true); break;