KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > applemenu > CtrlClickHack


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.applemenu;
21
22 import java.awt.AWTEvent JavaDoc;
23 import java.awt.event.AWTEventListener JavaDoc;
24 import java.awt.event.InputEvent JavaDoc;
25 import java.awt.event.MouseEvent JavaDoc;
26 import java.lang.reflect.Field JavaDoc;
27 import java.lang.reflect.Method JavaDoc;
28
29 /**
30  * hack for issue #67799, on macosx with single button mouse,
31  * make Ctrl-Click work as right click on multiselections
32  * @author ttran
33  */

34 public class CtrlClickHack implements AWTEventListener JavaDoc {
35
36     /** Creates a new instance of CtrlClickHack */
37     public CtrlClickHack() {
38     }
39
40     public void eventDispatched(AWTEvent JavaDoc e) {
41         if (! (e instanceof MouseEvent JavaDoc)) {
42             return;
43         }
44         MouseEvent JavaDoc evt = (MouseEvent JavaDoc) e;
45         if (evt.getModifiers() != (InputEvent.BUTTON1_MASK | InputEvent.CTRL_MASK)) {
46             return;
47         }
48         try {
49             Field JavaDoc f1 = InputEvent JavaDoc.class.getDeclaredField("modifiers");
50             Field JavaDoc f2 = MouseEvent JavaDoc.class.getDeclaredField("button");
51             Method JavaDoc m = MouseEvent JavaDoc.class.getDeclaredMethod("setNewModifiers", new Class JavaDoc[] {});
52             f1.setAccessible(true);
53             f1.setInt(evt, InputEvent.BUTTON3_MASK);
54             f2.setAccessible(true);
55             f2.setInt(evt, MouseEvent.BUTTON3);
56             m.setAccessible(true);
57             m.invoke(evt, new Object JavaDoc[] {});
58         } catch (Exception JavaDoc ex) {
59             ex.printStackTrace();
60         }
61     }
62     
63 }
64
Popular Tags