package org.geogebra.desktop.euclidian.event; import java.awt.event.InputEvent; import java.awt.event.MouseEvent; import java.util.LinkedList; import org.geogebra.common.awt.GPoint; import org.geogebra.common.euclidian.event.AbstractEvent; import org.geogebra.common.euclidian.event.PointerEventType; import org.geogebra.common.util.debug.Log; public class MouseEventD extends AbstractEvent implements MouseEventND { private static final LinkedList<MouseEventD> pool = new LinkedList<MouseEventD>(); private MouseEvent event; private MouseEventD(MouseEvent e) { Log.debug("possible missing release()"); this.event = e; } public static AbstractEvent wrapEvent(MouseEvent e) { if (!pool.isEmpty()) { MouseEventD wrap = pool.getLast(); wrap.event = e; pool.removeLast(); return wrap; } return new MouseEventD(e); } @Override public GPoint getPoint() { return new GPoint(event.getPoint().x, event.getPoint().y); } @Override public boolean isAltDown() { return event.isAltDown(); } @Override public boolean isShiftDown() { return event.isShiftDown(); } public static MouseEvent getEvent(AbstractEvent e) { return ((MouseEventD) e).event; } @Override public void release() { MouseEventD.pool.add(this); } @Override public int getX() { return event.getX(); } @Override public int getY() { return event.getY(); } @Override public boolean isRightClick() { return (event.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK; } @Override public boolean isControlDown() { return event.isControlDown(); } @Override public int getClickCount() { return event.getClickCount(); } @Override public boolean isMetaDown() { return event.isMetaDown(); } @Override public boolean isMiddleClick() { return (event.getButton() == 2) && (event.getClickCount() == 1); } @Override public boolean isPopupTrigger() { return event.isPopupTrigger(); } @Override public java.awt.Component getComponent() { return event.getComponent(); } @Override public PointerEventType getType() { return PointerEventType.MOUSE; } }