Mercurial > hg > jslab
view src/samer/core_/util/MouseRetarget.java @ 0:bf79fb79ee13
Initial Mercurial check in.
author | samer |
---|---|
date | Tue, 17 Jan 2012 17:50:20 +0000 |
parents | |
children |
line wrap: on
line source
/* * MouseRetarget.java * * Copyright (c) 2000, Samer Abdallah, King's College London. * All rights reserved. * * This software is provided AS iS and WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. */ package samer.core.util; import java.awt.*; import java.awt.event.*; /** This is a mouse event handler that makes a component effectively invisible to mouse clicks by routing a events through to the parent container. */ public class MouseRetarget extends MouseAdapter { private void retarget(MouseEvent e) { if (!e.isConsumed()) { // no point otherwise Component c=e.getComponent(); Component parent=c.getParent(); if (parent!=null) { Point origin=c.getLocation(); // Must make new event look as if it // was generated by parent MouseEvent ee = new MouseEvent( parent, e.getID(), e.getWhen(), e.getModifiers(), e.getX() + origin.x, e.getY() + origin.y, e.getClickCount(), e.isPopupTrigger()); parent.dispatchEvent(ee); } } } public void mouseClicked(MouseEvent e) { retarget(e); } public void mousePressed(MouseEvent e) { retarget(e); } public void mouseReleased(MouseEvent e) { retarget(e); } // This one static object can handle all the mouse // event redirection for everyone public static final MouseListener listener=new MouseRetarget(); public static void mouseInvisibilityFor(Component c) { c.addMouseListener(listener); } }