/*
* Simple debugging utility that prints dispatched SWT events to stdout
*/
package abbot.swt.utilities;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.*;
public class EventWatcher {
Shell shell;
Text text;
Display display;
public static int[] eventTypes ={ SWT.None, SWT.KeyDown, SWT.KeyUp,
SWT.MouseDown, SWT.MouseUp, SWT.MouseMove,
SWT.MouseEnter, SWT.MouseExit, SWT.MouseDoubleClick,
SWT.Paint, SWT.Move, SWT.Resize,
SWT.Dispose, SWT.Selection, SWT.DefaultSelection,
SWT.FocusIn, SWT.FocusOut, SWT.Expand,
SWT.Collapse, SWT.Iconify, SWT.Deiconify,
SWT.Close, SWT.Show, SWT.Hide,
SWT.Modify, SWT.Verify, SWT.Activate,
SWT.Deactivate, SWT.Help, SWT.DragDetect,
SWT.Arm, SWT.Traverse, SWT.MouseHover,
SWT.HardKeyDown,SWT.HardKeyUp, SWT.MenuDetect };
public static String[] eventNames= {"None", "KeyDown", "KeyUp",
"MouseDown", "MouseUp", "MouseMove",
"MouseEnter", "MouseExit", "MouseDoubleClick",
"Paint", "Move", "Resize",
"Dispose", "Selection", "DefaultSelection",
"FocusIn", "FocusOut", "Expand",
"Collapse", "Iconify", "Deiconify",
"Close", "Show", "Hide",
"Modify", "Verify", "Activate",
"Deactivate", "Help", "DragDetect",
"Arm", "Traverse", "MouseHover",
"HardKeyDown", "HardKeyUp", "MenuDetect" };
public static String getEventName(Event e){
String res= eventNames[e.type];
final int NAME_LENGTH = 12;
for(int i=eventNames[e.type].length(); i<NAME_LENGTH;i++){
res+=" ";
}
return res;
}
static int getAccelerator(Event e){
int accel = 0;
if(e.keyCode!=0){
accel |= SWT.KEYCODE_BIT;
accel |= e.keyCode;
accel |= e.stateMask;
}
else
accel |= e.character;
return accel;
}
// Allows for filtering
public boolean isSignificant(Event e){
return true;
}
Listener recorder = new Listener(){
public void handleEvent(org.eclipse.swt.widgets.Event e){
if(isSignificant(e))
System.out.println(getEventName(e)+
" accel="+getAccelerator(e)+
" button="+e.button+
" count="+e.count+
" detail="+e.detail+
" end="+e.end+
" data="+e.data+
" char="+e.character+
" keycode="+e.keyCode+
" stateMask="+e.stateMask+
" doit="+e.doit+
" display="+e.display+
" gc="+e.gc+
" item="+e.item+
" height="+e.height+
" start="+e.start+
" text="+e.text+
" time="+e.time+
" type="+e.type+
" width="+e.width+
" location=("+e.x+","+e.y+")"+
" widget="+e.widget);
}
};
public EventWatcher(Display display){
// shell = new Shell(display,SWT.SHELL_TRIM);
// shell.setText("Event Watcher");
// text = new Text(shell,SWT.READ_ONLY);
// text.setSize(250,75);
// shell.pack();
//
for(int i=0; i<eventTypes.length;i++){
display.addFilter(eventTypes[i],recorder);
}
}
public void removeEventWatcher(){
for(int i=0; i<eventTypes.length;i++){
display.addFilter(eventTypes[i],recorder);
}
}
}