Newer
Older
PureATN_M / src / main / java / cit / PureATN / MultiNote / MouseEvent_onMN.java
package cit.PureATN.MultiNote;

import java.awt.event.MouseEvent;
import java.awt.geom.Point2D;

import org.piccolo2d.PCamera;
import org.piccolo2d.PNode;
import org.piccolo2d.event.PBasicInputEventHandler;
import org.piccolo2d.event.PInputEvent;
import org.piccolo2d.nodes.PText;
import org.piccolo2d.util.PDimension;

import cit.PureATN.Note;

public class MouseEvent_onMN extends PBasicInputEventHandler {
	Note frame;

	PInputEvent pressEv = null;
	PNode pressPN;
	PNode moveTarget;
	Point2D pressP = null;
	int dragCount = 0;

	public MouseEvent_onMN(Note _ff) {
		frame = _ff;
	}

	public void mousePressed(final PInputEvent aEvent) {
		pressEv = aEvent;
		pressPN = aEvent.getPickedNode();
		dragCount = 0;
		if (pressEv != null && pressEv.getButton() == MouseEvent.BUTTON1) {
			if (pressPN.getAttribute("moveTarget") != null) {
				if (pressPN instanceof PNode) {
					moveTarget = (PNode) pressPN.getAttribute("moveTarget");
					// System.out.println("moveTarget: " + moveTarget.getClass().getName());
				}
			}
		}
	}

	public void mouseDragged(final PInputEvent aEvent) {
		dragCount++;
		if (pressEv.getButton() == MouseEvent.BUTTON1) {
			if (moveTarget != null) {
				PDimension d = aEvent.getDeltaRelativeTo(frame.getCanvas().getLayer());
				moveTarget.translate(d.getWidth(), d.getHeight()); // 履歴に関係ない動作

				// 確認表示
				System.out.println("target offset: " + moveTarget.getOffset().toString());
				System.out.println("target bounds: " + moveTarget.getBounds().toString());
				System.out.println("target bounds->origin: " + moveTarget.getBounds().getOrigin().toString());
			}
		}
	}

	public void mouseReleased(final PInputEvent aEvent) {
		if (pressEv == null)
			return;
		if (pressPN.getAttribute("nozoom") != null)
			return;// nozoomタグがついていたら,ズームインしない(色付けボタン:FRPaletteのPPathなので)
		if (dragCount < 3) {
			if (pressEv.getButton() == MouseEvent.BUTTON3) {
				// ポップアップメニュー
				if (pressPN instanceof PCamera || pressPN instanceof PText) // Sheetのときは表示しない.
					new PopupMenu_forMN(frame, pressEv, frame.getCanvas());
			} else if (pressEv.getButton() == MouseEvent.BUTTON1) {
				// if (SimpleATN.theapp.zrh.selection == null){
				// frame.focus();
				// }
			}
		}
		moveTarget = null;
		pressPN = null;
	}
}