You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by tv...@apache.org on 2009/10/31 03:26:01 UTC
svn commit: r831509 - in
/incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk:
EventLogger.java EventLoggerSkin.java
Author: tvolkert
Date: Sat Oct 31 02:26:01 2009
New Revision: 831509
URL: http://svn.apache.org/viewvc?rev=831509&view=rev
Log:
Fixes to event logger tool
Modified:
incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLogger.java
incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLoggerSkin.java
Modified: incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLogger.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLogger.java?rev=831509&r1=831508&r2=831509&view=diff
==============================================================================
--- incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLogger.java (original)
+++ incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLogger.java Sat Oct 31 02:26:01 2009
@@ -137,14 +137,17 @@
Component previousSource = this.source;
if (source != previousSource) {
- this.source = source;
-
if (previousSource != null) {
- unregisterEventListeners(previousSource);
+ unregisterEventListeners();
}
+ this.source = source;
+
+ declaredEvents.clear();
+ includeEvents.clear();
+
if (source != null) {
- registerEventListeners(source);
+ registerEventListeners();
}
eventLoggerListeners.sourceChanged(this, previousSource);
@@ -177,9 +180,7 @@
return includeEvents.contains(event);
}
- private void registerEventListeners(Component source) {
- declaredEvents.clear();
-
+ private void registerEventListeners() {
Method[] methods = source.getClass().getMethods();
for (int i = 0; i < methods.length; i++) {
@@ -244,10 +245,53 @@
}
}
- private void unregisterEventListeners(Component source) {
- declaredEvents.clear();
+ private void unregisterEventListeners() {
+ Method[] methods = source.getClass().getMethods();
+
+ for (int i = 0; i < methods.length; i++) {
+ Method method = methods[i];
+
+ if (ListenerList.class.isAssignableFrom(method.getReturnType())
+ && (method.getModifiers() & Modifier.STATIC) == 0) {
+ ParameterizedType genericType = (ParameterizedType)method.getGenericReturnType();
+ Type[] typeArguments = genericType.getActualTypeArguments();
+
+ if (typeArguments.length == 1) {
+ Class<?> listenerInterface = (Class<?>)typeArguments[0];
- // TODO
+ // Get the listener list
+ Object listenerList;
+ try {
+ listenerList = method.invoke(source);
+ } catch (InvocationTargetException exception) {
+ throw new RuntimeException(exception);
+ } catch (IllegalAccessException exception) {
+ throw new RuntimeException(exception);
+ }
+
+ // Get the listener for this interface
+ Object listener = eventListenerProxies.get(listenerInterface);
+
+ // Remove the listener
+ Class<?> listenerListClass = listenerList.getClass();
+ Method removeMethod;
+ try {
+ removeMethod = listenerListClass.getMethod("remove",
+ new Class<?>[] {Object.class});
+ } catch (NoSuchMethodException exception) {
+ throw new RuntimeException(exception);
+ }
+
+ try {
+ removeMethod.invoke(listenerList, new Object[] {listener});
+ } catch (IllegalAccessException exception) {
+ throw new RuntimeException(exception);
+ } catch (InvocationTargetException exception) {
+ throw new RuntimeException(exception);
+ }
+ }
+ }
+ }
}
public ListenerList<EventLoggerListener> getEventLoggerListeners() {
Modified: incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLoggerSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLoggerSkin.java?rev=831509&r1=831508&r2=831509&view=diff
==============================================================================
--- incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLoggerSkin.java (original)
+++ incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLoggerSkin.java Sat Oct 31 02:26:01 2009
@@ -66,6 +66,8 @@
@WTKX private TreeView declaredEventsTreeView = null;
@WTKX private TableView firedEventsTableView = null;
+ private boolean updating = false;
+
private static TreeNodeComparator treeNodeComparator = new TreeNodeComparator();
@Override
@@ -99,8 +101,6 @@
wtkxSerializer.bind(this, EventLoggerSkin.class);
declaredEventsTreeView.getTreeViewNodeStateListeners().add(new TreeViewNodeStateListener() {
- private boolean updating = false;
-
@Override
public void nodeCheckStateChanged(TreeView treeView, Path path,
TreeView.NodeCheckState previousCheckState) {
@@ -231,17 +231,29 @@
ArrayList<TreeNode> treeData = new ArrayList<TreeNode>(treeNodeComparator);
- for (Class<?> listenerInterface : buckets) {
- TreeBranch treeBranch = new TreeBranch(listenerInterface.getSimpleName());
- treeBranch.setComparator(treeNodeComparator);
- treeData.add(treeBranch);
+ updating = true;
+ try {
+ for (Class<?> listenerInterface : buckets) {
+ TreeBranch treeBranch = new TreeBranch(listenerInterface.getSimpleName());
+ treeBranch.setComparator(treeNodeComparator);
+ treeData.add(treeBranch);
+
+ for (Method event : buckets.get(listenerInterface)) {
+ treeBranch.add(new EventNode(event));
+ eventLogger.includeEvent(event);
+ }
+ }
+
+ declaredEventsTreeView.setTreeData(treeData);
- for (Method event : buckets.get(listenerInterface)) {
- treeBranch.add(new EventNode(event));
+ Sequence.Tree.ItemIterator<TreeNode> iter = Sequence.Tree.depthFirstIterator(treeData);
+ while (iter.hasNext()) {
+ iter.next();
+ declaredEventsTreeView.setNodeChecked(iter.getPath(), true);
}
+ } finally {
+ updating = false;
}
-
- declaredEventsTreeView.setTreeData(treeData);
}
@Override