package jp.ac.kyutech.mns.ist;

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 edu.umd.cs.piccolo.PCanvas;
import edu.umd.cs.piccolo.event.PInputEvent;

public class PopupMenu_forFR extends JPopupMenu {
	private static final long serialVersionUID = 7741402910818721975L;

	FocusRectangle frect;
	PInputEvent ie;
	PCanvas canvas;

	public PopupMenu_forFR(FocusRectangle aFR, PInputEvent _ie, PCanvas _canvas /*, JFrame _frame*/) {
		frect = aFR;
		ie = _ie;
		canvas = _canvas;
//		System.out.println(getClass().getName());

		setLightWeightPopupEnabled(false);

		JMenuItem menuItem;

		menuItem = new JMenuItem("cancel");
		add(menuItem);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0));//メニュー表示時のショートカットキー

		addSeparator();

		menuItem = new JMenuItem("focus to region on SATN");
		add(menuItem);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, 0));//メニュー表示時のショートカットキー
		menuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//ここに，機能１の処理をかく．必要に応じて，sheet参照やクリック時イベント参照(ie)をつかう．
				frect.focussrc.focus();
			}
		});

		menuItem = new JMenuItem("focus to sheet on SATN");
		add(menuItem);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, 0));//メニュー表示時のショートカットキー
		menuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//ここに，機能１の処理をかく．必要に応じて，sheet参照やクリック時イベント参照(ie)をつかう．
				frect.focussrc.sheet.focus(null);
			}
		});

		menuItem = new JMenuItem("FR order by Drawing Amount");
		add(menuItem);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, 0));//メニュー表示時のショートカットキー
		menuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//ここに，機能１の処理をかく．必要に応じて，sheet参照やクリック時イベント参照(ie)をつかう．
				frect.focussrc.fframe.sortByDrawingAmount();
			}
		});

		menuItem = new JMenuItem("FR order by PenID");
		add(menuItem);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, 0));//メニュー表示時のショートカットキー
		menuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//ここに，機能１の処理をかく．必要に応じて，sheet参照やクリック時イベント参照(ie)をつかう．
				frect.focussrc.fframe.sortByPenID();
			}
		});

		addSeparator();

		menuItem = new JMenuItem("toggle focus/reference");
		add(menuItem);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, 0));//メニュー表示時のショートカットキー
		menuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//フォーカスリファレンス
				frect.focussrc.fframe.toggleFocusReference();
			}
		});

		if (FocusRectangle.recognizer != null){
			menuItem = new JMenuItem("Recognize Text (未完成)");
			add(menuItem);
			menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, 0));//メニュー表示時のショートカットキー
			menuItem.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					frect.recognize();
				}
			});
		}

		showPopup();
	}

	public void showPopup() {
		Point2D cp = ie.getPositionRelativeTo(canvas.getCamera());

		show(canvas, (int)cp.getX(), (int)cp.getY());
	}
}
