Index: /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCComponent.java
===================================================================
--- /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCComponent.java	(revision 853)
+++ /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCComponent.java	(revision 854)
@@ -218,4 +218,5 @@
         this.component = component;
         
+        // add PropertyChangeListeners to AccessibleContext
         AccessibleContext context = component.getAccessibleContext();
         if (context != null){
@@ -223,4 +224,8 @@
         		context.addPropertyChangeListener(listener);
         }
+        
+        // add PropertyChangeListeners to component itself 
+        for (PropertyChangeListener listener: propertyChangeListeners)
+        	this.component.addPropertyChangeListener(listener);
         
         this.parent = parent;
Index: /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCNameChangeListener.java
===================================================================
--- /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCNameChangeListener.java	(revision 853)
+++ /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCNameChangeListener.java	(revision 854)
@@ -30,5 +30,5 @@
      * <p>
      * Constructor. Creates a new JFCNameChangeListener with a given 
-     * {@link JFCMonitorOutputWriter}	
+     * {@link JFCMonitorOutputWriter}.	
      * </p>
      * @param outputWriter
@@ -40,18 +40,33 @@
 	@Override
 	public void propertyChange(PropertyChangeEvent evt) {
-		if (evt.getPropertyName().equals("AccessibleName")){
+		String propertyName = evt.getPropertyName();
+		Component component = null;
+		
+		if (propertyName.equals("AccessibleName")){
 			AccessibleContext context = (AccessibleContext) evt.getSource();
-			Component component = (Component) context.getAccessibleParent();
+			component = (Component) context.getAccessibleParent();
+		}
+		
+		if (propertyName.equals("name")){
+			component = (Component) evt.getSource();
+		}
+		
+		if (propertyName.equals("")){
+			
+		}
+		
+		if (component != null){
+			if (!JFCComponent.isKnown(component)){
+				System.err.println("Referenced component is not known");
+				throw new AssertionError("Referenced component is not known.");
+			}
 			StringBuilder builder = new StringBuilder();
 			builder.append("<componentNameChange hash=\"");
-			if (!JFCComponent.isKnown(component)){
-					System.err.println("Referenced component is not known");
-					throw new AssertionError("Referenced component is not known.");
-			}
 			builder.append(Integer.toHexString(component.hashCode()));
 			builder.append("\" newName=\"" + evt.getNewValue());
-			builder.append("\"/>" + StringTools.ENDLINE);
+			builder.append("\" source=\"" + propertyName);
+			builder.append("\" />" + StringTools.ENDLINE);
 			outputWriter.write(builder.toString());
-		}		
+		}
 	}
 	
