package open.dolphin.impl.scheam; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; /** * ATOK 2011 On でショートカットでツールを選んだあと * 最初の mousePressed が ATOK に取られて無視されるのの workaround * * @author pns */ public class AtokAvoidableMouseListener implements MouseListener, MouseMotionListener { private final StateMgr stateMgr; private boolean pressed = false; public AtokAvoidableMouseListener(StateMgr stateMgr) { this.stateMgr = stateMgr; } @Override public void mouseClicked(MouseEvent e) { stateMgr.setMouseEvent(e); stateMgr.mouseClicked(e); } @Override public void mousePressed(MouseEvent e) { pressed = true; stateMgr.setMouseEvent(e); stateMgr.mouseDown(e.getPoint()); } @Override public void mouseReleased(MouseEvent e) { // mousePressed されないで released された if (!pressed) { mousePressed(e); mouseClicked(e); } pressed = false; stateMgr.setMouseEvent(e); stateMgr.mouseUp(e.getPoint()); } @Override public void mouseEntered(MouseEvent e) {} @Override public void mouseExited(MouseEvent e) {} @Override public void mouseDragged(MouseEvent e) { // mousePressed されないで drag された if (!pressed) { mousePressed(e); } stateMgr.mouseDragged(e.getPoint()); } @Override public void mouseMoved(MouseEvent e) {} }