package com.google.code.joto.eventrecorder.spy.awtspy;
import java.awt.AWTEvent;
import java.awt.event.ActionEvent;
import java.awt.event.AdjustmentEvent;
import java.awt.event.ComponentEvent;
import java.awt.event.ContainerEvent;
import java.awt.event.FocusEvent;
import java.awt.event.HierarchyEvent;
import java.awt.event.InputMethodEvent;
import java.awt.event.InvocationEvent;
import java.awt.event.ItemEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.PaintEvent;
import java.awt.event.TextEvent;
import java.awt.event.WindowEvent;
/**
* infos about AWTEvent, and AWT_EVENT_MASKS, with event sub-groups
*/
public class AWTEventInfos {
public static final long ALL_AWTEVENTS_MASK =
AWTEvent.COMPONENT_EVENT_MASK
| AWTEvent.CONTAINER_EVENT_MASK // cf ContainerEvent
| AWTEvent.FOCUS_EVENT_MASK // cf FocusEvent
| AWTEvent.KEY_EVENT_MASK
| AWTEvent.MOUSE_EVENT_MASK
| AWTEvent.MOUSE_MOTION_EVENT_MASK
| AWTEvent.WINDOW_EVENT_MASK
| AWTEvent.ACTION_EVENT_MASK
| AWTEvent.ADJUSTMENT_EVENT_MASK
| AWTEvent.ITEM_EVENT_MASK
| AWTEvent.TEXT_EVENT_MASK
| AWTEvent.INPUT_METHOD_EVENT_MASK
// | AWTEvent.INPUT_METHODS_ENABLED_MASK
| AWTEvent.PAINT_EVENT_MASK
| AWTEvent.INVOCATION_EVENT_MASK
| AWTEvent.HIERARCHY_EVENT_MASK
| AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK
| AWTEvent.MOUSE_WHEEL_EVENT_MASK
| AWTEvent.WINDOW_STATE_EVENT_MASK
| AWTEvent.WINDOW_FOCUS_EVENT_MASK;
/**
* info for AWTEvent
*/
public static enum AWTEventInfo {
// ComponentEvent
COMPONENT_SHOWN(ComponentEvent.COMPONENT_SHOWN, "COMPONENT_SHOWN", "ComponentEvent", "Shown"),
COMPONENT_HIDDEN(ComponentEvent.COMPONENT_HIDDEN, "COMPONENT_HIDDEN", "ComponentEvent", "Hidden"),
COMPONENT_MOVED(ComponentEvent.COMPONENT_MOVED, "COMPONENT_MOVED", "ComponentEvent", "Moved"),
COMPONENT_RESIZED(ComponentEvent.COMPONENT_RESIZED, "COMPONENT_RESIZED", "ComponentEvent", "Resized"),
// ContainerEvent
COMPONENT_ADDED(ContainerEvent.COMPONENT_ADDED, "COMPONENT_ADDED", "ContainerEvent", "Added"),
COMPONENT_REMOVED(ContainerEvent.COMPONENT_REMOVED, "COMPONENT_REMOVED", "ContainerEvent", "Removed"),
// FocusEvent
FOCUS_GAINED(FocusEvent.FOCUS_GAINED, "FOCUS_GAINED", "FocusEvent", "FocusGained"),
FOCUS_LOST(FocusEvent.FOCUS_LOST, "FOCUS_LOST", "FocusEvent", "FocusLost"),
// KeyEvent
KEY_PRESSED(KeyEvent.KEY_PRESSED, "KEY_PRESSED", "KeyEvent", "Pressed"),
KEY_RELEASED(KeyEvent.KEY_RELEASED, "KEY_RELEASED", "KeyEvent", "Released"),
KEY_TYPED(KeyEvent.KEY_TYPED, "KEY_TYPED", "KeyEvent", "Typed"),
// MouseEvent
MOUSE_PRESSED(MouseEvent.MOUSE_PRESSED, "MOUSE_PRESSED", "MouseEvent", "Pressed"),
MOUSE_RELEASED(MouseEvent.MOUSE_RELEASED, "MOUSE_RELEASED", "MouseEvent", "Released"),
MOUSE_CLICKED(MouseEvent.MOUSE_CLICKED, "MOUSE_CLICKED", "MouseEvent", "Clicked"),
MOUSE_MOVED(MouseEvent.MOUSE_MOVED, "MOUSE_MOVED", "MouseEvent", "Moved"),
MOUSE_DRAGGED(MouseEvent.MOUSE_DRAGGED, "MOUSE_DRAGGED", "MouseEvent", "Dragged"),
MOUSE_ENTERED(MouseEvent.MOUSE_ENTERED, "MOUSE_ENTERED", "MouseEvent", "Eventered"),
MOUSE_EXITED(MouseEvent.MOUSE_EXITED, "MOUSE_EXITED", "MouseEvent", "Exited"),
MOUSE_WHEEL(MouseEvent.MOUSE_WHEEL, "MOUSE_WHEEL", "MouseEvent", "Wheel"),
// WindowEvent
WINDOW_OPENED(WindowEvent.WINDOW_OPENED, "WINDOW_OPENED", "WindowEvent", "Opened"),
WINDOW_CLOSING(WindowEvent.WINDOW_CLOSING, "WINDOW_CLOSING", "WindowEvent", "Closing"),
WINDOW_CLOSED(WindowEvent.WINDOW_CLOSED, "WINDOW_CLOSED", "WindowEvent", "Closed"),
WINDOW_ICONIFIED(WindowEvent.WINDOW_ICONIFIED, "WINDOW_ICONIFIED", "WindowEvent", "Iconified"),
WINDOW_DEICONIFIED(WindowEvent.WINDOW_DEICONIFIED, "WINDOW_DEICONIFIED", "WindowEvent", "Deiconified"),
WINDOW_ACTIVATED(WindowEvent.WINDOW_ACTIVATED, "WINDOW_ACTIVATED", "WindowEvent", "Activated"),
WINDOW_DEACTIVATED(WindowEvent.WINDOW_DEACTIVATED, "WINDOW_DEACTIVATED", "WindowEvent", "Deactivated"),
WINDOW_GAINED_FOCUS(WindowEvent.WINDOW_GAINED_FOCUS, "WINDOW_GAINED_FOCUS", "WindowEvent", "GainedFocus"),
WINDOW_LOST_FOCUS(WindowEvent.WINDOW_LOST_FOCUS, "WINDOW_LOST_FOCUS", "WindowEvent", "LostFocus"),
WINDOW_STATE_CHANGED(WindowEvent.WINDOW_STATE_CHANGED, "WINDOW_STATE_CHANGED", "WindowEvent", "StateChanged"),
// ActionEvent
ACTION_PERFORMED(ActionEvent.ACTION_PERFORMED, "ACTION_PERFORMED", "ActionEvent", "Performed"),
// AdjustmentEvent
ADJUSTMENT_VALUE_CHANGED(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED, "ADJUSTMENT_VALUE_CHANGED", "AdjustmentEvent", "ValueChanged"),
// ItemEvent
ITEM_STATE_CHANGED(ItemEvent.ITEM_STATE_CHANGED, "ITEM_STATE_CHANGED", "ItemEvent", "StateChanged"),
// TextEvent
TEXT_VALUE_CHANGED(TextEvent.TEXT_VALUE_CHANGED, "TEXT_VALUE_CHANGED", "TextEvent", "ValueChanged"),
// InputMethodEvent
INPUT_METHOD_TEXT_CHANGED(InputMethodEvent.INPUT_METHOD_TEXT_CHANGED, "INPUT_METHOD_TEXT_CHANGED", "InputMethodEvent", "TextChanged"),
CARET_POSITION_CHANGED(InputMethodEvent.CARET_POSITION_CHANGED, "CARET_POSITION_CHANGED", "InputMethodEvent", "CaretPosChanged"),
// PaintEvent ??
PAINT_FIRST(PaintEvent.PAINT_FIRST, "PAINT_FIRST", "PaintEvent", "PaintFirst"),
PAINT_LAST(PaintEvent.PAINT_LAST, "PAINT_LAST", "PaintEvent", "PaintLast"),
// InvocationEvent, INVOCATION_EVENT_MASK
INVOCATION_DEFAULT(InvocationEvent.INVOCATION_DEFAULT, "INVOCATION_DEFAULT", "InvocationEvent", "Default"),
// HierarchyEvent, HIERARCHY_EVENT_MASK
ANCESTOR_MOVED(HierarchyEvent.ANCESTOR_MOVED, "ANCESTOR_MOVED", "HierarchyEvent", "Moved"),
ANCESTOR_RESIZED(HierarchyEvent.ANCESTOR_RESIZED, "ANCESTOR_RESIZED", "HierarchyEvent", "Resized"),
HIERARCHY_CHANGED(HierarchyEvent.HIERARCHY_CHANGED, "HIERARCHY_CHANGED", "HierarchyEvent", "Changed"),
UNKNOWN_EVENT(-1,"UNKNOWN", "", "");
private final long id;
private final String eventName;
private final String eventClassName;
private final String eventMethodName;
private AWTEventGroupInfo eventGroup; // cf inverse relationship, initialization next in AWTEventGroupInfo enum ctor
private AWTEventInfo(long id, String eventName, String eventClassName, String eventMethodName) {
this.id = id;
this.eventName = eventName;
this.eventClassName = eventClassName;
this.eventMethodName = eventMethodName;
}
public long getId() {
return id;
}
public String getEventName() {
return eventName;
}
public String getEventClassName() {
return eventClassName;
}
public String getEventMethodName() {
return eventMethodName;
}
public AWTEventGroupInfo getEventGroup() {
return eventGroup;
}
}
/**
* info for group of AWTEvent, to be enabled/disabled together
*/
public static class AWTEventGroupInfo {
public static final AWTEventGroupInfo UNKNOWN = new AWTEventGroupInfo("unknown", false);
private final String groupName;
private boolean defaultSelected;
private final AWTEventInfo[] eventInfos;
AWTEventGroupInfo(String groupName, boolean defaultSelected, AWTEventInfo... eventInfos) {
this.groupName = groupName;
this.defaultSelected = defaultSelected;
this.eventInfos = eventInfos;
if (eventInfos != null) {
for (AWTEventInfo e : eventInfos) {
e.eventGroup = this;
}
}
}
public String getGroupName() {
return groupName;
}
public boolean getDefaultSelected() {
return defaultSelected;
}
public AWTEventInfo[] getEventInfos() {
return eventInfos;
}
}
/**
* info for AWTEvent MASK
*/
public static enum AWTEventMaskInfo {
COMPONENT_EVENT_MASK(AWTEvent.COMPONENT_EVENT_MASK, "COMPONENT_EVENT_MASK", "ComponentEvent", //
new AWTEventGroupInfo("Shown-Hiden", true, AWTEventInfo.COMPONENT_SHOWN, AWTEventInfo.COMPONENT_HIDDEN),
new AWTEventGroupInfo("Moved-Resized", false, AWTEventInfo.COMPONENT_MOVED, AWTEventInfo.COMPONENT_RESIZED)),
CONTAINER_EVENT_MASK(AWTEvent.CONTAINER_EVENT_MASK, "CONTAINER_EVENT_MASK", "ContainerEvent", //
new AWTEventGroupInfo("Added-Removed", false, AWTEventInfo.COMPONENT_ADDED, AWTEventInfo.COMPONENT_REMOVED)),
FOCUS_EVENT_MASK(AWTEvent.FOCUS_EVENT_MASK, "FOCUS_EVENT_MASK", "FocusEvent", //
new AWTEventGroupInfo("Focus Gained-Lost", false, AWTEventInfo.FOCUS_GAINED, AWTEventInfo.FOCUS_LOST)),
KEY_EVENT_MASK(AWTEvent.KEY_EVENT_MASK, "KEY_EVENT_MASK", "KeyEvent", //
new AWTEventGroupInfo("Pressed-Released", false, AWTEventInfo.KEY_PRESSED, AWTEventInfo.KEY_RELEASED),
new AWTEventGroupInfo("Typed", true, AWTEventInfo.KEY_TYPED)),
MOUSE_EVENT_MASK(AWTEvent.MOUSE_EVENT_MASK, "MOUSE_EVENT_MASK", "MouseEvent", //
new AWTEventGroupInfo("Pressed-Released", false, AWTEventInfo.MOUSE_PRESSED, AWTEventInfo.MOUSE_RELEASED),
new AWTEventGroupInfo("Clicked", true, AWTEventInfo.MOUSE_CLICKED),
new AWTEventGroupInfo("Moved", false, AWTEventInfo.MOUSE_MOVED),
new AWTEventGroupInfo("Dragged", true, AWTEventInfo.MOUSE_DRAGGED),
new AWTEventGroupInfo("Wheel", false, AWTEventInfo.MOUSE_WHEEL),
new AWTEventGroupInfo("Entered-Leaved", false, AWTEventInfo.MOUSE_ENTERED, AWTEventInfo.MOUSE_EXITED)
),
MOUSE_MOTION_EVENT_MASK(AWTEvent.MOUSE_MOTION_EVENT_MASK, "MOUSE_MOTION_EVENT_MASK", "MouseEvent" //
),
WINDOW_EVENT_MASK(AWTEvent.WINDOW_EVENT_MASK, "WINDOW_EVENT_MASK", "WindowEvent", //
new AWTEventGroupInfo("Opened-Closed", true, AWTEventInfo.WINDOW_OPENED, AWTEventInfo.WINDOW_CLOSING, AWTEventInfo.WINDOW_CLOSED),
new AWTEventGroupInfo("Iconified-Deiconified", false, AWTEventInfo.WINDOW_ICONIFIED, AWTEventInfo.WINDOW_DEICONIFIED),
new AWTEventGroupInfo("Activated-Deiconified", false, AWTEventInfo.WINDOW_ACTIVATED, AWTEventInfo.WINDOW_DEACTIVATED),
new AWTEventGroupInfo("Focus Gained-Lost", false, AWTEventInfo.WINDOW_GAINED_FOCUS, AWTEventInfo.WINDOW_LOST_FOCUS),
new AWTEventGroupInfo("State Changed", false, AWTEventInfo.WINDOW_STATE_CHANGED)
),
ACTION_EVENT_MASK(AWTEvent.ACTION_EVENT_MASK, "ACTION_EVENT_MASK", "ActionEvent", //
new AWTEventGroupInfo("ActionPerformed", true, AWTEventInfo.ACTION_PERFORMED)
),
ADJUSTMENT_EVENT_MASK(AWTEvent.ADJUSTMENT_EVENT_MASK, "ADJUSTMENT_EVENT_MASK", "AdjustmentEvent", //
new AWTEventGroupInfo("ValuedChanged", true, AWTEventInfo.ADJUSTMENT_VALUE_CHANGED)
),
ITEM_EVENT_MASK(AWTEvent.ITEM_EVENT_MASK, "ITEM_EVENT_MASK", "ItemEvent", //
new AWTEventGroupInfo("ItemStateChanged", true, AWTEventInfo.ITEM_STATE_CHANGED)),
TEXT_EVENT_MASK(AWTEvent.TEXT_EVENT_MASK, "TEXT_EVENT_MASK", "TextEvent", //
new AWTEventGroupInfo("TextValueChanged", true, AWTEventInfo.TEXT_VALUE_CHANGED)),
INPUT_METHOD_EVENT_MASK(AWTEvent.INPUT_METHOD_EVENT_MASK, "INPUT_METHOD_EVENT_MASK", "InputMethodEvent", //
new AWTEventGroupInfo("TextChanged", true, AWTEventInfo.INPUT_METHOD_TEXT_CHANGED, AWTEventInfo.CARET_POSITION_CHANGED)),
PAINT_EVENT_MASK(AWTEvent.PAINT_EVENT_MASK, "PAINT_EVENT_MASK", "PainEvent", //
new AWTEventGroupInfo("PaintEvent", false, AWTEventInfo.PAINT_FIRST, AWTEventInfo.PAINT_LAST)),
INVOCATION_EVENT_MASK(AWTEvent.INVOCATION_EVENT_MASK, "INVOCATION_EVENT_MASK", "InvocationEvent", //
new AWTEventGroupInfo("Invocation", true, AWTEventInfo.INVOCATION_DEFAULT)),
HIERARCHY_EVENT_MASK(AWTEvent.HIERARCHY_EVENT_MASK, "HIERARCHY_EVENT_MASK", "HierarchyEvent",
new AWTEventGroupInfo("Ancestor Moved-Resized", false, AWTEventInfo.ANCESTOR_MOVED, AWTEventInfo.ANCESTOR_RESIZED, AWTEventInfo.HIERARCHY_CHANGED)),
HIERARCHY_BOUNDS_EVENT_MASK(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK, "HIERARCHY_BOUNDS_EVENT_MASK", "HierarchyEvent", //
new AWTEventGroupInfo("Hierarchy Changed", false, AWTEventInfo.HIERARCHY_CHANGED)),
MOUSE_WHEEL_EVENT_MASK(AWTEvent.MOUSE_WHEEL_EVENT_MASK, "MOUSE_WHEEL_EVENT_MASK", "MouseEvent" //
),
WINDOW_STATE_EVENT_MASK(AWTEvent.WINDOW_STATE_EVENT_MASK, "WINDOW_STATE_EVENT_MASK", "WindowEvent" //
),
WINDOW_FOCUS_EVENT_MASK(AWTEvent.WINDOW_FOCUS_EVENT_MASK, "WINDOW_FOCUS_EVENT_MASK", "WindowEvent" //
);
private final long flag;
private final String flagName;
private final String eventClassName;
private final AWTEventGroupInfo[] eventGroups;
AWTEventMaskInfo(long flag, String flagName, String eventClassName, AWTEventGroupInfo... eventGroups) {
this.flag = flag;
this.flagName = flagName;
this.eventClassName = eventClassName;
this.eventGroups = eventGroups;
}
public long getFlag() {
return flag;
}
public String getFlagName() {
return flagName;
}
public String getEventClassName() {
return eventClassName;
}
public AWTEventGroupInfo[] getEventGroups() {
return eventGroups;
}
public boolean getDefaultSelected() {
boolean res = false;
if (eventGroups != null) {
for (AWTEventGroupInfo g : eventGroups) {
if (g.getDefaultSelected()) {
res = true;
break;
}
}
}
return res;
}
}
}