package cit.PureATN.MultiNote; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.geom.Point2D; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.KeyStroke; import org.piccolo2d.PCanvas; import org.piccolo2d.event.PInputEvent; import cit.PureATN.Note; import cit.PureATN.Inspector.DefaultPlugin; public class PopupMenu_forMN extends JPopupMenu { private static final long serialVersionUID = 7741402910818721975L; MultiNote fframe; PInputEvent ie; PCanvas canvas; public PopupMenu_forMN(Note aFR, PInputEvent _ie, PCanvas _canvas) { fframe = (MultiNote) aFR; // むりやりキャストする (forMN=MultiMenu用なので、大丈夫かと) ie = _ie; canvas = _canvas; setLightWeightPopupEnabled(false); JMenuItem menuItem; menuItem = new JMenuItem("cancel"); menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0));// メニュー表示時のショートカットキー add(menuItem); // add cancel menu addSeparator(); // あたらしいメニューアイテムの設定を開始する。 menuItem = new JMenuItem("exit"); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); add(menuItem);// add exit menu // あたらしいメニューアイテムの設定を開始する。 menuItem = new JMenuItem("色付け"); menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, 0));// メニュー表示時のショートカットキー menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fframe.iroduke(); } }); add(menuItem);// add 色付け menu // あたらしいメニューアイテムの設定を開始する。 menuItem = new JMenuItem("全筆記削除"); menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));// メニュー表示時のショートカットキー menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fframe.deleteAllStrokes(); } }); add(menuItem);// add 色付け menu // 追加のメニューは,プラグインが直接オンデマンドで追加する // fframe.addPluginMenuTo(this); addPluginMenuTo(this, aFR); showPopup(); } public void showPopup() { Point2D cp = ie.getPositionRelativeTo(canvas.getCamera()); show(canvas, (int) cp.getX(), (int) cp.getY()); } // 追加機能分のメニュー public void addPluginMenuTo(JPopupMenu menu, Note note) { for (DefaultPlugin dp : note.plugins) { dp.addMenu(menu); } } }