Index: /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/AbstractDefaultGUIElementFactory.java
===================================================================
--- /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/AbstractDefaultGUIElementFactory.java	(revision 584)
+++ /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/AbstractDefaultGUIElementFactory.java	(revision 585)
@@ -7,4 +7,7 @@
 package de.ugoe.cs.quest.eventcore.guimodel;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
@@ -14,11 +17,35 @@
 import java.util.logging.Logger;
 
+import de.ugoe.cs.util.console.Console;
+
 /**
  * TODO comment
+ * 
+ * TODO rename class to GUIElementFactory
  * 
  * @version $Revision: $ $Date: 13.05.2012$
  * @author 2012, last modified by $Author: patrick$
  */
-public abstract class AbstractDefaultGUIElementFactory implements IGUIElementFactory {
+public class AbstractDefaultGUIElementFactory implements IGUIElementFactory {
+    
+    /** */
+    private static AbstractDefaultGUIElementFactory instance = new AbstractDefaultGUIElementFactory();
+
+    /**
+     * TODO: comment
+     * 
+     */
+    private AbstractDefaultGUIElementFactory() {
+    }
+
+    /**
+     * TODO: comment
+     * 
+     * @return
+     */
+    public static synchronized AbstractDefaultGUIElementFactory getInstance() {
+        return instance;
+    }
+
     
     /** */
@@ -53,8 +80,8 @@
      * @throws GUIModelConfigurationException
      */
-    protected IGUIElement instantiateGUIElementFromConfiguredMappings(IGUIElementSpec specification)
-        throws GUIModelConfigurationException
-    {
+    @Override
+    public IGUIElement instantiateGUIElement(IGUIElementSpec specification) {
         Properties mappings = getMappingsFromConfiguration();
+        IGUIElement guiElement = null;
 
         String className = mappings.getProperty(specification.getType());
@@ -74,5 +101,5 @@
                 parameterTypes[0] = specification.getClass();
 
-                IGUIElement guiElement =
+                guiElement =
                     (IGUIElement) clazz.getConstructor(parameterTypes).newInstance(specification);
 
@@ -136,6 +163,9 @@
             }
         }
-
-        return null;
+        if( guiElement==null ) {
+            Console.printerrln("could not find GUI element representing class " + specification.getType());
+        }
+
+        return guiElement;
     }
 
@@ -151,17 +181,22 @@
         else {
             mappingsFromConfiguration = new Properties();
-
-            InputStream inStream =
-                this.getClass().getClassLoader().getResourceAsStream("GUIElementMapping.txt");
-
-            if (inStream != null) {
-                try {
-                    mappingsFromConfiguration.load(inStream);
+            
+            File mappingsFolder = new File("data/guimappings");
+            for( File mappingsFile : mappingsFolder.listFiles()) {
+                if(!mappingsFile.isDirectory() && mappingsFile.getName().startsWith("guimapping") && mappingsFile.getName().endsWith(".txt")) {
+                    InputStream inStream;
+                    try {
+                        inStream = new FileInputStream(mappingsFile);
+                        mappingsFromConfiguration.load(inStream);
+                    }
+                    catch (FileNotFoundException e1) {
+                        // TODO Auto-generated catch block
+                        e1.printStackTrace();
+                    }
+                    catch (IOException e) {
+                        Logger.getLogger(this.getClass().getName()).warning
+                            ("invalid GUI mappings files " + mappingsFile.getName());
+                    }
                 }
-                catch (IOException e) {
-                    Logger.getLogger(this.getClass().getName()).warning
-                        ("could not load GUIElementMapping.txt from classpath, but this may be " +
-                         "intended");
-                }
             }
 
Index: /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/GUIModelException.java
===================================================================
--- /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/GUIModelException.java	(revision 584)
+++ /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/GUIModelException.java	(revision 585)
@@ -12,5 +12,5 @@
  * @author 2012, last modified by $Author: pharms$
  */
-public class GUIModelException extends Exception {
+public class GUIModelException extends RuntimeException {
 
     /**  */
Index: /trunk/quest-plugin-jfc/data/guimappings/guimapping-argouml.txt
===================================================================
--- /trunk/quest-plugin-jfc/data/guimappings/guimapping-argouml.txt	(revision 585)
+++ /trunk/quest-plugin-jfc/data/guimappings/guimapping-argouml.txt	(revision 585)
@@ -0,0 +1,19 @@
+org.argouml.ui.ProjectBrowser = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCFrame
+org.tigris.toolbar.ToolBar = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCToolBar
+org.tigris.toolbar.toolbutton.ModalButton = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCButton
+org.tigris.swidgets.BorderSplitPane = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCSplitPane
+org.tigris.swidgets.MultipleSplitPane = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCSplitPane
+org.argouml.ui.MultiEditorPane = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCPanel
+org.argouml.uml.diagram.ui.TabDiagram = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCPanel
+org.argouml.uml.diagram.ui.DnDJGraph = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCCanvas
+org.tigris.gef.graph.presentation.JGraphInternalPane = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCCanvas
+org.tigris.toolbar.toolbutton.PopupToolBoxButton = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCMenuButton
+org.argouml.ui.DetailsPane = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCPanel
+org.argouml.cognitive.ui.TabToDo = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCPanel
+org.tigris.swidgets.Splitter = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCSplitPane
+org.argouml.ui.MenuBar14 = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCMenuBar
+org.tigris.gef.presentation.FigTextEditor = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCTextField
+org.argouml.core.propertypanels.ui.UMLLinkedList = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCShape
+org.argouml.core.propertypanels.ui.LabelledComponent = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCShape
+org.argouml.core.propertypanels.ui.UMLTextField = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCTextField
+org.argouml.core.propertypanels.ui.UMLComboBox = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCGUIElement
Index: /trunk/quest-plugin-jfc/data/guimappings/guimapping-swing.txt
===================================================================
--- /trunk/quest-plugin-jfc/data/guimappings/guimapping-swing.txt	(revision 585)
+++ /trunk/quest-plugin-jfc/data/guimappings/guimapping-swing.txt	(revision 585)
@@ -0,0 +1,12 @@
+javax.swing.JPanel = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCPanel
+javax.swing.JRootPane = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCPanel
+javax.swing.JLayeredPane = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCPanel
+javax.swing.JTabbedPane= de.ugoe.cs.quest.plugin.jfc.guimodel.JFCTabbedPane
+javax.swing.JScrollPane = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCScrollPane
+javax.swing.JViewport = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCPanel
+javax.swing.JScrollPane$ScrollBar = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCScrollBar
+javax.swing.JMenu = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCMenu
+javax.swing.JMenu$1 = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCMenu
+javax.swing.JDialog = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCDialog
+javax.swing.JFileChooser = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCDialog
+javax.swing.plaf.metal.MetalFileChooserUI$3 = de.ugoe.cs.quest.plugin.jfc.guimodel.JFCPanel
Index: /trunk/quest-plugin-jfc/pom.xml
===================================================================
--- /trunk/quest-plugin-jfc/pom.xml	(revision 584)
+++ /trunk/quest-plugin-jfc/pom.xml	(revision 585)
@@ -36,4 +36,22 @@
 				</configuration>
 			</plugin>
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.2-beta-2</version>
+				<configuration>
+					<descriptors>
+						<descriptor>src/main/assembly/config.xml</descriptor>
+					</descriptors>
+				</configuration>
+				<executions>
+					<execution>
+						<id>make-assembly</id>
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
 		</plugins>
 	</build>
Index: /trunk/quest-plugin-jfc/src/main/assembly/config.xml
===================================================================
--- /trunk/quest-plugin-jfc/src/main/assembly/config.xml	(revision 585)
+++ /trunk/quest-plugin-jfc/src/main/assembly/config.xml	(revision 585)
@@ -0,0 +1,19 @@
+<assembly
+    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
+  <id>config</id>
+  <formats>
+    <format>zip</format>
+  </formats>
+  <includeBaseDirectory>false</includeBaseDirectory>
+  <fileSets>
+    <fileSet>
+      <directory>data</directory>
+      <outputDirectory></outputDirectory>
+      <includes>
+        <include>**/*</include>
+      </includes>
+    </fileSet>
+  </fileSets>
+</assembly>
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/JFCLogParser.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/JFCLogParser.java	(revision 584)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/JFCLogParser.java	(revision 585)
@@ -40,4 +40,5 @@
 import de.ugoe.cs.quest.eventcore.gui.MouseButtonUp;
 import de.ugoe.cs.quest.eventcore.gui.MouseClick;
+import de.ugoe.cs.quest.eventcore.guimodel.AbstractDefaultGUIElementFactory;
 import de.ugoe.cs.quest.eventcore.guimodel.GUIModel;
 import de.ugoe.cs.quest.eventcore.guimodel.GUIModelException;
@@ -45,5 +46,4 @@
 import de.ugoe.cs.quest.plugin.jfc.eventcore.JFCEvent;
 import de.ugoe.cs.quest.plugin.jfc.eventcore.JFCEventId;
-import de.ugoe.cs.quest.plugin.jfc.guimodel.JFCGUIElementFactory;
 import de.ugoe.cs.quest.plugin.jfc.guimodel.JFCGUIElementSpec;
 import de.ugoe.cs.tasktree.keyboardmaps.VirtualKey;
@@ -394,6 +394,7 @@
                 IGUIElement currentGUIElement;
                 try {
+                    // TODO right now, there is null pointer exception possible, if the factory cannot create a the GUIElement. We need to devise where and how this should be handled best
                     currentGUIElement = guiModel.integratePath
-                        (currentGuiElementPath, JFCGUIElementFactory.getInstance());
+                        (currentGuiElementPath, AbstractDefaultGUIElementFactory.getInstance());
                 }
                 catch (GUIModelException e) {
Index: unk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCGUIElementFactory.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCGUIElementFactory.java	(revision 584)
+++ 	(revision )
@@ -1,139 +1,0 @@
-// Module    : $RCSfile: GUIModelFactory.java,v $
-// Version   : $Revision: 0.0 $  $Author: patrick $  $Date: 13.05.2012 $
-// Project   : JavaInteractionParser
-// Creation  : 2012 by patrick
-// Copyright : Patrick Harms, 2012
-
-package de.ugoe.cs.quest.plugin.jfc.guimodel;
-
-import java.util.logging.Logger;
-
-import de.ugoe.cs.quest.eventcore.guimodel.AbstractDefaultGUIElementFactory;
-import de.ugoe.cs.quest.eventcore.guimodel.IGUIElement;
-import de.ugoe.cs.quest.eventcore.guimodel.GUIModelConfigurationException;
-import de.ugoe.cs.quest.eventcore.guimodel.IGUIElementSpec;
-
-/**
- * TODO comment
- * 
- * @version $Revision: $ $Date: 13.05.2012$
- * @author 2012, last modified by $Author: patrick$
- */
-public class JFCGUIElementFactory extends AbstractDefaultGUIElementFactory {
-    
-    /** */
-    private static JFCGUIElementFactory instance = new JFCGUIElementFactory();
-
-    /**
-     * TODO: comment
-     * 
-     */
-    private JFCGUIElementFactory() {
-        super();
-    }
-
-    /**
-     * TODO: comment
-     * 
-     * @return
-     */
-    public static synchronized JFCGUIElementFactory getInstance() {
-        return instance;
-    }
-
-    /* (non-Javadoc)
-     * @see de.ugoe.cs.quest.eventcore.guimodel.IGUIElementFactory#instantiateGUIElement(IGUIElementSpec)
-     */
-    @Override
-    public IGUIElement instantiateGUIElement(IGUIElementSpec specification) {
-        if (!(specification instanceof JFCGUIElementSpec)) {
-            throw new IllegalArgumentException
-                ("can only process gui element specifications of type JFCHGUIElementSpec");
-        }
-        
-        JFCGUIElementSpec jfcGuiElemSpec = (JFCGUIElementSpec) specification;
-        
-        return createNewGUIElementInternal(jfcGuiElemSpec);
-    }
-
-    /**
-     * TODO: comment
-     * 
-     * @param name
-     * @param type
-     * @param icon
-     * @param index
-     * @param hash
-     * @return
-     */
-    private synchronized JFCGUIElement createNewGUIElementInternal(JFCGUIElementSpec specification)
-    {
-        JFCGUIElement retVal = null;
-
-        IGUIElement guiElement = null;
-        try {
-            guiElement = super.instantiateGUIElementFromConfiguredMappings(specification);
-        }
-        catch (GUIModelConfigurationException e) {
-            throw new IllegalArgumentException
-                ("detected a configuration error in the GUI element mapping", e);
-        }
-
-        if ((guiElement != null) && (!(guiElement instanceof JFCGUIElement))) {
-            Logger.getLogger(this.getClass().getName()).warning
-                ("configured GUI element representing class " +
-                 guiElement.getClass().getName() + " is no valid GUIElement derivate.");
-        }
-        else {
-            retVal = (JFCGUIElement) guiElement;
-        }
-
-        String type = specification.getType();
-
-        if (retVal == null) {
-            if ("javax.swing.JPanel".equals(type)) {
-                retVal = new JFCPanel(specification);
-            }
-            else if ("javax.swing.JRootPane".equals(type)) {
-                retVal = new JFCPanel(specification);
-            }
-            else if ("javax.swing.JLayeredPane".equals(type)) {
-                retVal = new JFCPanel(specification);
-            }
-            else if ("javax.swing.JTabbedPane".equals(type)) {
-                retVal = new JFCTabbedPane(specification);
-            }
-            else if ("javax.swing.JScrollPane".equals(type)) {
-                retVal = new JFCScrollPane(specification);
-            }
-            else if ("javax.swing.JViewport".equals(type)) {
-                retVal = new JFCPanel(specification);
-            }
-            else if ("javax.swing.JScrollPane$ScrollBar".equals(type)) {
-                retVal = new JFCScrollBar(specification);
-            }
-            else if ("javax.swing.JMenu".equals(type)) {
-                retVal = new JFCMenu(specification);
-            }
-            else if ("javax.swing.JMenu$1".equals(type)) {
-                retVal = new JFCMenu(specification);
-            }
-            else if ("javax.swing.JDialog".equals(type)) {
-                retVal = new JFCDialog(specification);
-            }
-            else if ("javax.swing.JFileChooser".equals(type)) {
-                retVal = new JFCDialog(specification);
-            }
-            else if ("javax.swing.plaf.metal.MetalFileChooserUI$3".equals(type)) {
-                retVal = new JFCPanel(specification);
-            }
-            else {
-                throw new IllegalArgumentException
-                    ("could not find a GUIElement representation for type specification " + type);
-            }
-        }
-
-        return retVal;
-    }
-
-}
Index: /trunk/quest-runner/pom.xml
===================================================================
--- /trunk/quest-runner/pom.xml	(revision 584)
+++ /trunk/quest-runner/pom.xml	(revision 585)
@@ -152,4 +152,23 @@
           </execution>
           <execution>
+            <id>get-jfc-plugin-config</id>
+            <phase>process-classes</phase>
+            <goals>
+              <goal>unpack</goal>
+            </goals>
+            <configuration>
+              <artifactItems>
+                <artifactItem>
+                  <groupId>de.ugoe.cs.quest</groupId>
+                  <artifactId>quest-plugin-jfc</artifactId>
+                  <version>0.0.1-SNAPSHOT</version>
+                  <classifier>config</classifier>
+                  <type>zip</type>
+                  <outputDirectory>${project.build.directory}/data</outputDirectory>
+                </artifactItem>
+              </artifactItems>
+            </configuration>
+          </execution>
+          <execution>
             <id>get-mfc-plugin-config</id>
             <phase>process-classes</phase>
