50 |
import java.awt.event.MouseEvent; |
import java.awt.event.MouseEvent; |
51 |
import java.beans.PropertyChangeEvent; |
import java.beans.PropertyChangeEvent; |
52 |
import java.beans.PropertyChangeListener; |
import java.beans.PropertyChangeListener; |
53 |
|
import java.awt.event.ItemEvent; |
54 |
|
import java.awt.event.ItemListener; |
55 |
import java.util.ArrayList; |
import java.util.ArrayList; |
56 |
|
|
57 |
import javax.swing.ButtonModel; |
import javax.swing.ButtonModel; |
58 |
import javax.swing.Icon; |
import javax.swing.Icon; |
59 |
|
import javax.swing.JCheckBoxMenuItem; |
60 |
import javax.swing.JComponent; |
import javax.swing.JComponent; |
61 |
import javax.swing.JMenu; |
import javax.swing.JMenu; |
62 |
import javax.swing.JMenuItem; |
import javax.swing.JMenuItem; |
164 |
* PropertyChangeListener to listen for property changes in the menu item |
* PropertyChangeListener to listen for property changes in the menu item |
165 |
*/ |
*/ |
166 |
private PropertyChangeListener propertyChangeListener; |
private PropertyChangeListener propertyChangeListener; |
167 |
|
|
168 |
|
/** |
169 |
|
* ItemListener to listen for item changes in the menu item |
170 |
|
*/ |
171 |
|
private ItemListener itemListener; |
172 |
|
|
173 |
/** |
/** |
174 |
* Number of spaces between accelerator and menu item's label. |
* Number of spaces between accelerator and menu item's label. |
189 |
menuDragMouseListener = createMenuDragMouseListener(menuItem); |
menuDragMouseListener = createMenuDragMouseListener(menuItem); |
190 |
menuKeyListener = createMenuKeyListener(menuItem); |
menuKeyListener = createMenuKeyListener(menuItem); |
191 |
propertyChangeListener = new PropertyChangeHandler(); |
propertyChangeListener = new PropertyChangeHandler(); |
192 |
|
itemListener = new ItemHandler(); |
193 |
} |
} |
194 |
|
|
195 |
/** |
/** |
440 |
menuItem.addMenuDragMouseListener(menuDragMouseListener); |
menuItem.addMenuDragMouseListener(menuDragMouseListener); |
441 |
menuItem.addMenuKeyListener(menuKeyListener); |
menuItem.addMenuKeyListener(menuKeyListener); |
442 |
menuItem.addPropertyChangeListener(propertyChangeListener); |
menuItem.addPropertyChangeListener(propertyChangeListener); |
443 |
|
menuItem.addItemListener(itemListener); |
444 |
} |
} |
445 |
|
|
446 |
/** |
/** |
729 |
menuItem.removeMenuDragMouseListener(menuDragMouseListener); |
menuItem.removeMenuDragMouseListener(menuDragMouseListener); |
730 |
menuItem.removeMenuKeyListener(menuKeyListener); |
menuItem.removeMenuKeyListener(menuKeyListener); |
731 |
menuItem.removePropertyChangeListener(propertyChangeListener); |
menuItem.removePropertyChangeListener(propertyChangeListener); |
732 |
|
menuItem.removeItemListener(itemListener); |
733 |
} |
} |
734 |
|
|
735 |
/** |
/** |
960 |
/** |
/** |
961 |
* This class handles mouse dragged events. |
* This class handles mouse dragged events. |
962 |
*/ |
*/ |
963 |
protected class MenuDragMouseHandler implements MenuDragMouseListener |
private class MenuDragMouseHandler implements MenuDragMouseListener |
964 |
{ |
{ |
965 |
/** |
/** |
966 |
* Tbis method is invoked when mouse is dragged over the menu item. |
* Tbis method is invoked when mouse is dragged over the menu item. |
1021 |
* This class handles key events occuring when menu item is visible on the |
* This class handles key events occuring when menu item is visible on the |
1022 |
* screen. |
* screen. |
1023 |
*/ |
*/ |
1024 |
protected class MenuKeyHandler implements MenuKeyListener |
private class MenuKeyHandler implements MenuKeyListener |
1025 |
{ |
{ |
1026 |
/** |
/** |
1027 |
* This method is invoked when key has been pressed |
* This method is invoked when key has been pressed |
1062 |
* Helper class that listens for changes to the properties of the {@link |
* Helper class that listens for changes to the properties of the {@link |
1063 |
* JMenuItem}. |
* JMenuItem}. |
1064 |
*/ |
*/ |
1065 |
protected class PropertyChangeHandler implements PropertyChangeListener |
private class PropertyChangeHandler implements PropertyChangeListener |
1066 |
{ |
{ |
1067 |
/** |
/** |
1068 |
* This method is called when one of the menu item's properties change. |
* This method is called when one of the menu item's properties change. |
1074 |
menuItem.revalidate(); |
menuItem.revalidate(); |
1075 |
menuItem.repaint(); |
menuItem.repaint(); |
1076 |
} |
} |
1077 |
|
} |
1078 |
|
|
1079 |
|
/** |
1080 |
|
* Helper class that listens for item changes to the properties of the {@link |
1081 |
|
* JMenuItem}. |
1082 |
|
*/ |
1083 |
|
private class ItemHandler implements ItemListener |
1084 |
|
{ |
1085 |
|
/** |
1086 |
|
* This method is called when one of the menu item changes. |
1087 |
|
* |
1088 |
|
* @param evt A {@link ItemEvent}. |
1089 |
|
*/ |
1090 |
|
public void itemStateChanged(ItemEvent evt) |
1091 |
|
{ |
1092 |
|
boolean state = false; |
1093 |
|
if (menuItem instanceof JCheckBoxMenuItem) |
1094 |
|
{ |
1095 |
|
if (evt.getStateChange() == ItemEvent.SELECTED) |
1096 |
|
state = true; |
1097 |
|
((JCheckBoxMenuItem) menuItem).setState(state); |
1098 |
|
} |
1099 |
|
menuItem.revalidate(); |
1100 |
|
menuItem.repaint(); |
1101 |
|
} |
1102 |
} |
} |
1103 |
} |
} |