Only xclick can catch callback execution.
[scilab.git] / scilab / modules / gui / src / java / org / scilab / modules / gui / events / GlobalEventWatcher.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2007 - INRIA - Bruno Jofret
4  * 
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at    
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 package org.scilab.modules.gui.events;
14
15 import java.awt.AWTEvent;
16 import java.awt.Toolkit;
17
18 /**
19  * This implements a Global event watcher,
20  * means a very high level one : quite the same level as the JVM
21  * @author Bruno Jofret
22  */
23 public final class GlobalEventWatcher {
24
25         private static GlobalEventWatcher me;
26         private static GlobalKeyEventWatcher keyWatcher;
27         private static GlobalMouseEventWatcher mouseWatcher;
28         private static boolean activated;
29     private static String axesUID = null;
30     private static boolean catchingCallback = false;
31
32         /**
33          * Private Constructor : SINGLETON.
34          */
35         private GlobalEventWatcher() {  }
36         
37         /**
38          * Singleton enable.
39          * 
40          * @return the global watcher instance
41          */     
42         public static GlobalEventWatcher getInstance() {
43                 if (me == null) {
44                         me = new GlobalEventWatcher();
45                 }
46                 return me;
47         }
48         
49         
50         /**
51          * Singleton enable keyWatcher.
52          * 
53          * @param keyWatcher : the Key Listener.
54          */
55         public static void enable(GlobalKeyEventWatcher keyWatcher) {
56                 GlobalEventWatcher.keyWatcher = keyWatcher;
57                 Toolkit.getDefaultToolkit().addAWTEventListener(keyWatcher,
58                                 AWTEvent.KEY_EVENT_MASK);
59                 activated = true;
60         }
61
62         /**
63          * Singleton enable keyWatcher.
64          * 
65          * @param mouseWatcher : the Mouse Listener.
66          */
67         public static void enable(GlobalMouseEventWatcher mouseWatcher) {
68                 GlobalEventWatcher.mouseWatcher = mouseWatcher;
69                 Toolkit.getDefaultToolkit().addAWTEventListener(mouseWatcher,
70                                 mouseWatcher.getEventMask());
71                         activated = true;
72         }
73
74         
75         /**
76          * Disable the global watcher
77          */
78         public static void disable() {
79                 Toolkit.getDefaultToolkit().removeAWTEventListener(GlobalEventWatcher.keyWatcher);
80                 Toolkit.getDefaultToolkit().removeAWTEventListener(GlobalEventWatcher.mouseWatcher);
81                 activated = false;
82                 catchingCallback = false;
83         }
84
85         /**
86          * Is the GlobalWatcher active or not.
87          * @return activation status.
88          */
89         public static boolean isActivated() {
90                 return activated;
91         }
92         
93     public static void setAxesUID(String axesUID) {
94         GlobalEventWatcher.axesUID = axesUID;
95     }
96
97     public static String getAxesUID() {
98         return axesUID ;
99     }
100
101     public static void enableCatchingCallback() {
102         catchingCallback = true;  
103     }
104
105     public static void disableableCatchingCallback() {
106         catchingCallback = false;  
107     }
108
109     public static boolean isCatchingCallback() {
110         return catchingCallback;  
111     }
112     
113 }