samer@0
|
1 /*
|
samer@0
|
2 * MouseRetarget.java
|
samer@0
|
3 *
|
samer@0
|
4 * Copyright (c) 2000, Samer Abdallah, King's College London.
|
samer@0
|
5 * All rights reserved.
|
samer@0
|
6 *
|
samer@0
|
7 * This software is provided AS iS and WITHOUT ANY WARRANTY;
|
samer@0
|
8 * without even the implied warranty of MERCHANTABILITY or
|
samer@0
|
9 * FITNESS FOR A PARTICULAR PURPOSE.
|
samer@0
|
10 */
|
samer@0
|
11
|
samer@0
|
12 package samer.core.util;
|
samer@0
|
13 import java.awt.*;
|
samer@0
|
14 import java.awt.event.*;
|
samer@0
|
15
|
samer@0
|
16
|
samer@0
|
17 /**
|
samer@0
|
18 This is a mouse event handler that makes
|
samer@0
|
19 a component effectively invisible to
|
samer@0
|
20 mouse clicks by routing a events through
|
samer@0
|
21 to the parent container.
|
samer@0
|
22 */
|
samer@0
|
23
|
samer@0
|
24 public class MouseRetarget extends MouseAdapter
|
samer@0
|
25 {
|
samer@0
|
26 private void retarget(MouseEvent e)
|
samer@0
|
27 {
|
samer@0
|
28 if (!e.isConsumed()) { // no point otherwise
|
samer@0
|
29 Component c=e.getComponent();
|
samer@0
|
30 Component parent=c.getParent();
|
samer@0
|
31
|
samer@0
|
32 if (parent!=null) {
|
samer@0
|
33 Point origin=c.getLocation();
|
samer@0
|
34
|
samer@0
|
35 // Must make new event look as if it
|
samer@0
|
36 // was generated by parent
|
samer@0
|
37
|
samer@0
|
38 MouseEvent ee = new MouseEvent(
|
samer@0
|
39 parent,
|
samer@0
|
40 e.getID(),
|
samer@0
|
41 e.getWhen(),
|
samer@0
|
42 e.getModifiers(),
|
samer@0
|
43 e.getX() + origin.x,
|
samer@0
|
44 e.getY() + origin.y,
|
samer@0
|
45 e.getClickCount(),
|
samer@0
|
46 e.isPopupTrigger());
|
samer@0
|
47
|
samer@0
|
48 parent.dispatchEvent(ee);
|
samer@0
|
49 }
|
samer@0
|
50 }
|
samer@0
|
51 }
|
samer@0
|
52
|
samer@0
|
53 public void mouseClicked(MouseEvent e) { retarget(e); }
|
samer@0
|
54 public void mousePressed(MouseEvent e) { retarget(e); }
|
samer@0
|
55 public void mouseReleased(MouseEvent e) { retarget(e); }
|
samer@0
|
56
|
samer@0
|
57 // This one static object can handle all the mouse
|
samer@0
|
58 // event redirection for everyone
|
samer@0
|
59
|
samer@0
|
60 public static final MouseListener listener=new MouseRetarget();
|
samer@0
|
61 public static void mouseInvisibilityFor(Component c) {
|
samer@0
|
62 c.addMouseListener(listener);
|
samer@0
|
63 }
|
samer@0
|
64 }
|
samer@0
|
65
|
samer@0
|
66
|
samer@0
|
67
|