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 852)
+++ /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCComponent.java	(revision 853)
@@ -26,5 +26,6 @@
  * </p>
  * 
- * @author Steffen Herbold, Fabian Glaser
+ * @author Steffen Herbold 
+ * @author Fabian Glaser
  * @version 1.0
  */
@@ -44,8 +45,12 @@
      * </p>
      */
-    
     private static List<PropertyChangeListener> propertyChangeListeners = 
     	new ArrayList<PropertyChangeListener>();
     
+    /**
+     * <p>
+     * List of ContainerListeners that are registered on the components.
+     * </p>
+     */
     private static List<ContainerListener> containerListeners =
     		new ArrayList<ContainerListener>();
@@ -64,12 +69,33 @@
     }
     
+    /**
+     * <p>
+     * Adds a new PropertyChangeListener to the components.
+     * </p> 
+     * @param list 
+     * 			the PropertyChangeListener
+     */
     public static void addPropertyChangeListener(PropertyChangeListener list){
     	propertyChangeListeners.add(list);
     }
     
+    /**
+     * <p> 
+     * Adds a new ContainerListener to the components.
+     * </p> 
+     * @param list
+     * 			the ContainerListener
+     */
     public static void addContainerListener(ContainerListener list){
     	containerListeners.add(list);
     }
     
+    /**
+     * <p>
+     * Tests if a component is already known.
+     * </p>
+     * @param component to be tested
+     * @return true, if component is already known, false otherwise.
+     */
     public static boolean isKnown(Component component){
     	if (knownComponents.containsKey(component))
@@ -238,5 +264,5 @@
         setTitle();
         StringBuilder builder = new StringBuilder();
-        builder.append("  <component");
+        builder.append("<component");
         if (parent != null){
         	if (!JFCComponent.isKnown(parent.component))
@@ -245,12 +271,13 @@
         }
         builder.append(">"+ StringTools.ENDLINE);
-        builder.append("   <param name=\"title\" value=\"" + title + "\" />" + StringTools.ENDLINE);
-        builder.append("   <param name=\"class\" value=\"" + componentClass + "\" />" +
+        builder.append(" <param name=\"title\" value=\"" + title + "\" />" + StringTools.ENDLINE);
+        builder.append(" <param name=\"class\" value=\"" + componentClass + "\" />" +
             StringTools.ENDLINE);
-        builder.append("   <param name=\"icon\" value=\"" + icon + "\" />" + StringTools.ENDLINE);
-        builder.append("   <param name=\"index\" value=\"" + index + "\" />" + StringTools.ENDLINE);
-        builder.append("   <param name=\"hash\" value=\"" +
+        builder.append(" <param name=\"icon\" value=\"" + icon + "\" />" + StringTools.ENDLINE);
+        builder.append(" <param name=\"index\" value=\"" + index + "\" />" + StringTools.ENDLINE);
+        builder.append(" <param name=\"hash\" value=\"" +
             Integer.toHexString(component.hashCode()) + "\" />" + StringTools.ENDLINE);
-        builder.append("  </component>" + StringTools.ENDLINE);
+        builder.append(getInheritanceTree());
+        builder.append("</component>" + StringTools.ENDLINE);
         return builder.toString();
     }
@@ -392,3 +419,21 @@
         }
     }
+    
+    /**
+     * <p>
+     * Constructs a string that represents inheritance of component.
+     * </p>
+     * @return
+     */
+    private String getInheritanceTree(){
+    	StringBuilder builder = new StringBuilder();
+    	Class<? extends Object> classobject = component.getClass();
+    	while(classobject.getSuperclass() != null){
+    		classobject = classobject.getSuperclass();
+    		builder.append(" <ancestor name=\"");
+    		builder.append(classobject.getName());
+    		builder.append("\" />" + StringTools.ENDLINE);
+    	}
+    	return builder.toString();
+    }
 }
Index: /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCListener.java
===================================================================
--- /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCListener.java	(revision 852)
+++ /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCListener.java	(revision 853)
@@ -17,5 +17,6 @@
  * </p>
  * 
- * @author Steffen Herbold, Fabian Glaser
+ * @author Steffen Herbold 
+ * @author Fabian Glaser
  * @version 1.0
  */
Index: /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCMonitorOutputWriter.java
===================================================================
--- /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCMonitorOutputWriter.java	(revision 852)
+++ /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCMonitorOutputWriter.java	(revision 853)
@@ -38,5 +38,11 @@
     }
     
-    public void write(String str){
+    /**
+     * <p>
+     * Writes a string to the internal OutputStreamWriter.
+     * </p>
+     * @param str
+     */
+    public synchronized void write(String str){
     	try {
 			outputWriter.write(str);
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 852)
+++ /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCNameChangeListener.java	(revision 853)
@@ -13,6 +13,9 @@
 
 /**
+ * <p>
+ * Listener that listens on the name change of a component.	
+ * </p>
  * @author Fabian Glaser
- *
+ * @version 1.0
  */
 public class JFCNameChangeListener implements PropertyChangeListener {
@@ -22,6 +25,13 @@
      * </p>
      */
-    final private JFCMonitorOutputWriter outputWriter;	
+    final private JFCMonitorOutputWriter outputWriter;
     
+    /**
+     * <p>
+     * Constructor. Creates a new JFCNameChangeListener with a given 
+     * {@link JFCMonitorOutputWriter}	
+     * </p>
+     * @param outputWriter
+     */
     public JFCNameChangeListener(JFCMonitorOutputWriter outputWriter){
     	this.outputWriter = outputWriter;
Index: /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCWindowMonitor.java
===================================================================
--- /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCWindowMonitor.java	(revision 853)
+++ /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCWindowMonitor.java	(revision 853)
@@ -0,0 +1,68 @@
+
+package de.ugoe.cs.quest.jfcmonitor;
+
+import java.awt.AWTEvent;
+import java.awt.Window;
+import java.awt.event.AWTEventListener;
+import java.awt.event.WindowEvent;
+
+/**
+ * <p>
+ * An AWT event listener responsible to monitor the window creation and destruction.
+ * </p>
+ * 
+ * @author Steffen Herbold 
+ * @author Fabian Glaser
+ * @version 1.0
+ */
+public class JFCWindowMonitor implements AWTEventListener {
+	 /**
+     * <p>
+     * Writer for logging events.
+     * </p>
+     */
+    final private JFCMonitorOutputWriter outputWriter;	
+	
+    /**
+     * <p>
+     * Constructor. Creates a new JFCWindowMonitor with a given {@link JFCMonitorOutputWriter}, where the
+     * monitored information is logged.
+     * </p>
+     * 
+     * @param outputWriter
+     *            writer for the logged information
+     */
+    public JFCWindowMonitor(JFCMonitorOutputWriter outputWriter) {
+        this.outputWriter = outputWriter;
+    }
+	
+
+    /**
+     * <p>
+     * Adds all created windows (and their child components) to the GUI hierarchy maintained by
+     * {@link JFCComponent} and removes them if a window is destroyed.
+     * </p>
+     * </p>
+     * 
+     * @see java.awt.event.AWTEventListener#eventDispatched(java.awt.AWTEvent)
+     */
+    @Override
+    public void eventDispatched(AWTEvent event) {
+        Window window;
+        switch (event.getID())
+        {
+            case WindowEvent.WINDOW_OPENED:
+                window = ((WindowEvent) event).getWindow();
+                JFCComponent.add(window);
+                JFCComponent jfcComponent = JFCComponent.find(window);
+                if (jfcComponent != null) {
+                    outputWriter.write(jfcComponent.getXML());
+                    outputWriter.write(jfcComponent.printChildren());
+                }
+                break;
+            default:
+                break;
+        }
+    }
+
+}
Index: /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/Runner.java
===================================================================
--- /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/Runner.java	(revision 852)
+++ /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/Runner.java	(revision 853)
@@ -20,5 +20,6 @@
  * </p>
  * 
- * @author Steffen Herbold, Fabian Glaser
+ * @author Steffen Herbold
+ * @author Fabian Glaser
  * @version 1.0
  */
@@ -62,7 +63,8 @@
         Toolkit.getDefaultToolkit().addAWTEventListener(listenerFile, AWTEvent.MOUSE_EVENT_MASK);
         Toolkit.getDefaultToolkit().addAWTEventListener(listenerFile, FocusEvent.FOCUS_EVENT_MASK);
-        Toolkit.getDefaultToolkit().addAWTEventListener(new WindowMonitor(jfcWriter),
+        Toolkit.getDefaultToolkit().addAWTEventListener(new JFCWindowMonitor(jfcWriter),
                                                         AWTEvent.WINDOW_EVENT_MASK);
         JFCComponent.addPropertyChangeListener(new JFCNameChangeListener(jfcWriter));
+        JFCComponent.addContainerListener(new JFCContainerListener(jfcWriter));
 
         if (stdOutputWrite) {
@@ -78,5 +80,5 @@
                 Toolkit.getDefaultToolkit().addAWTEventListener(listenerStdOut,
                                                                 FocusEvent.FOCUS_EVENT_MASK);
-                Toolkit.getDefaultToolkit().addAWTEventListener(new WindowMonitor(stdJfcWriter),
+                Toolkit.getDefaultToolkit().addAWTEventListener(new JFCWindowMonitor(stdJfcWriter),
                         AWTEvent.WINDOW_EVENT_MASK);
                 JFCComponent.addPropertyChangeListener(new JFCNameChangeListener(stdJfcWriter));
Index: unk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/WindowMonitor.java
===================================================================
--- /trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/WindowMonitor.java	(revision 852)
+++ 	(revision )
@@ -1,67 +1,0 @@
-
-package de.ugoe.cs.quest.jfcmonitor;
-
-import java.awt.AWTEvent;
-import java.awt.Window;
-import java.awt.event.AWTEventListener;
-import java.awt.event.WindowEvent;
-
-/**
- * <p>
- * An AWT event listener responsible to monitor the window creation and destruction.
- * </p>
- * 
- * @author Steffen Herbold, Fabian Glaser
- * @version 1.0
- */
-public class WindowMonitor implements AWTEventListener {
-	 /**
-     * <p>
-     * Writer for logging events.
-     * </p>
-     */
-    final private JFCMonitorOutputWriter outputWriter;	
-	
-    /**
-     * <p>
-     * Constructor. Creates a new WindowMonitor with a given {@link JFCMonitorOutputWriter}, where the
-     * monitored information is logged.
-     * </p>
-     * 
-     * @param outputWriter
-     *            writer for the logged information
-     */
-    public WindowMonitor(JFCMonitorOutputWriter outputWriter) {
-        this.outputWriter = outputWriter;
-    }
-	
-
-    /**
-     * <p>
-     * Adds all created windows (and their child components) to the GUI hierarchy maintained by
-     * {@link JFCComponent} and removes them if a window is destroyed.
-     * </p>
-     * </p>
-     * 
-     * @see java.awt.event.AWTEventListener#eventDispatched(java.awt.AWTEvent)
-     */
-    @Override
-    public void eventDispatched(AWTEvent event) {
-        Window window;
-        switch (event.getID())
-        {
-            case WindowEvent.WINDOW_OPENED:
-                window = ((WindowEvent) event).getWindow();
-                JFCComponent.add(window);
-                JFCComponent jfcComponent = JFCComponent.find(window);
-                if (jfcComponent != null) {
-                    outputWriter.write(jfcComponent.getXML());
-                    outputWriter.write(jfcComponent.printChildren());
-                }
-                break;
-            default:
-                break;
-        }
-    }
-
-}
