Newer
Older
PureATN_M / src / main / java / cit / PureATN / MultiNote / PopupMenu_forMN.java
@motoki miura motoki miura on 3 Jul 2022 2 KB Inspector
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.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				fframe.iroduke();
			}
		});
		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);
		}
	}

}