1 package charactermanaj.ui.scrollablemenu;
3 import java.awt.event.MouseEvent;
5 import javax.swing.Icon;
6 import javax.swing.JMenuItem;
7 import javax.swing.event.EventListenerList;
10 * スクローラブルメニューのスクローラーアイテムのメニュー項目
14 public class JScrollerMenuItem extends JMenuItem {
19 private static final long serialVersionUID = -1749741596476938310L;
23 protected EventListenerList _listeners = new EventListenerList();
26 * スクローラーのアイコンを指定してスクローラーアイテムのメニュー項目を構築します.
31 public JScrollerMenuItem(Icon icon) {
36 * スクローラブルメニューイベントのイベントリスナを登録します.
41 public void addScrollableMenuEventListener(ScrollableMenuEventListener l) {
42 _listeners.add(ScrollableMenuEventListener.class, l);
46 * スクローラブルメニューイベントのイベントリスナを登録解除します.
51 public void removeScrollableMenuEventListener(ScrollableMenuEventListener l) {
52 _listeners.remove(ScrollableMenuEventListener.class, l);
56 * マウスクリックでメニューアイテムとしてのイベントが発生しないように、 マウスイベントをキャプチャして、スクローラブルメニューイベントに変換する。
61 protected void processMouseEvent(MouseEvent e) {
62 ScrollableMenuEvent ee = null;
63 int mouseEventId = e.getID();
64 if (mouseEventId == MouseEvent.MOUSE_PRESSED) {
66 ee = new ScrollableMenuEvent(this, true);
68 if (mouseEventId == MouseEvent.MOUSE_RELEASED) {
69 // マウスアップされた場合、スクロール停止
70 ee = new ScrollableMenuEvent(this, false);
73 fireScrollableMenuEvent(ee);
78 * スクローラブルメニューイベントを送信する
83 protected void fireScrollableMenuEvent(ScrollableMenuEvent e) {
84 for (ScrollableMenuEventListener l : _listeners
85 .getListeners(ScrollableMenuEventListener.class)) {
86 if (e.isScrolling()) {