Index: /trunk/quest-plugin-jfc/.classpath
===================================================================
--- /trunk/quest-plugin-jfc/.classpath	(revision 572)
+++ /trunk/quest-plugin-jfc/.classpath	(revision 573)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" output="target/classes" path="src/main/java">
+	<classpathentry excluding="de/ugoe/cs/quest/plugin/jfc/eventcore/JFCTargetComparator.java" kind="src" output="target/classes" path="src/main/java">
 		<attributes>
 			<attribute name="optional" value="true"/>
Index: /trunk/quest-plugin-jfc/pom.xml
===================================================================
--- /trunk/quest-plugin-jfc/pom.xml	(revision 572)
+++ /trunk/quest-plugin-jfc/pom.xml	(revision 573)
@@ -20,4 +20,9 @@
 			<version>0.0.1-SNAPSHOT</version>
 		</dependency>
+                <dependency>
+                        <groupId>de.ugoe.cs.quest</groupId>
+                        <artifactId>quest-ui-core</artifactId>
+                        <version>0.0.1-SNAPSHOT</version>
+                </dependency>
 	</dependencies>
 	<build>
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 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/JFCLogParser.java	(revision 573)
@@ -0,0 +1,676 @@
+
+package de.ugoe.cs.quest.plugin.jfc;
+
+import java.awt.event.MouseEvent;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.security.InvalidParameterException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.eventcore.gui.IInteraction;
+import de.ugoe.cs.quest.eventcore.gui.InteractionEventList;
+import de.ugoe.cs.quest.eventcore.gui.KeyPressed;
+import de.ugoe.cs.quest.eventcore.gui.KeyReleased;
+import de.ugoe.cs.quest.eventcore.gui.KeyboardFocusChange;
+import de.ugoe.cs.quest.eventcore.gui.MouseButtonDown;
+import de.ugoe.cs.quest.eventcore.gui.MouseButtonInteraction;
+import de.ugoe.cs.quest.eventcore.gui.MouseButtonUp;
+import de.ugoe.cs.quest.eventcore.gui.MouseClick;
+import de.ugoe.cs.quest.eventcore.guimodel.GUIModel;
+import de.ugoe.cs.quest.eventcore.guimodel.GUIModelException;
+import de.ugoe.cs.quest.eventcore.guimodel.IGUIElement;
+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;
+import de.ugoe.cs.util.console.Console;
+
+/**
+ * <p>
+ * This class provides functionality to parse XML log files generated by the JFCMonitor of
+ * EventBench. The result of parsing a file is a collection of event sequences.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class JFCLogParser extends DefaultHandler {
+
+    /**
+     * <p>
+     * Collection of event sequences that is contained in the log file, which is parsed.
+     * </p>
+     */
+    private Collection<List<Event>> sequences;
+
+    /**
+     * <p>
+     * Internal handle to the id of the event that is currently being parsed.
+     * </p>
+     */
+    private JFCEventId currentEventId;
+    
+    /**
+     * <p>
+     * Internal handle to the parameters of the event that is currently being parsed.
+     * </p>
+     */
+    private Map<String, String> currentEventParameters;
+
+    /**
+     * <p>
+     * Internal handle to the source parameters of the event that is currently being parsed.
+     * </p>
+     */
+    private Map<String, String> currentSourceParameters;
+
+    /**
+     * <p>
+     * Internal handle to the parent parameters of the event that is currently being parsed.
+     * </p>
+     */
+    private Map<String, String> currentParentParameters;
+
+    /**
+     * <p>
+     * Internal handle to the event sequence that is currently being parsed.
+     * </p>
+     */
+    private InteractionEventList currentSequence;
+   
+    /**
+     * <p>
+     * internal handle to the parameters currently parsed for a component
+     * </p>
+     */
+    private JFCGUIElementSpec currentGuiElementSpec;
+
+    /**
+     * <p>
+     * internal handle to the last parsed component
+     * </p>
+     */
+    private List<JFCGUIElementSpec> currentGuiElementPath = new ArrayList<JFCGUIElementSpec>();
+
+    /**
+     * <p>
+     * internal handle to the component of the previous event to be potentially reused for the
+     * current
+     * </p>
+     */
+    private IGUIElement lastGUIElement;
+
+    /**
+     * <p>
+     * the model of the GUI elements, that were found during parsing
+     * </p>
+     */
+    private GUIModel guiModel = new GUIModel();
+
+    /**
+     * <p>
+     * this is used to check, if for every pressed key, there is a release of it
+     * </p>
+     */
+    private List<VirtualKey> mPressedKeys = new ArrayList<VirtualKey>();
+
+    /**
+     * <p>
+     * Enumeration to differentiate if a parameter belongs to an event, a source or the parent of a
+     * source.
+     * </p>
+     * 
+     * @author Steffen Herbold
+     * @version 1.0
+     */
+    private enum ParamSource {
+        EVENT, SOURCE, PARENT, COMPONENT
+    };
+
+    /**
+     * <p>
+     * Specifies whether the parameters that are currently being read belong the the event, the
+     * source or the parent.
+     * </p>
+     */
+    ParamSource paramSource = null;
+
+    /**
+     * <p>
+     * a specification for event ids to be omitted by the parser
+     * </p>
+     */
+    private Collection<JFCEventId> eventFilter;
+
+    /**
+     * <p>
+     * Constructor. Creates a new JFCLogParser with a default event filter. This ignores focus
+     * events, mouse pressed, and mouse released events.
+     * </p>
+     */
+    public JFCLogParser() {
+        sequences = new LinkedList<List<Event>>();
+        currentSequence = new InteractionEventList();
+        setupDefaultEventFilter();
+    }
+
+    /**
+     * <p>
+     * Constructor. Creates a new JFCLogParser with a specific event filter. The events in the
+     * provided collection are ignored by the parser. As events, the constants of the different
+     * event classes must be used. E.g. creating a collection and putting
+     * <code>MouseEvent.MOUSE_PRESSED</code> will cause the parser to ignore all mouse pressed
+     * events. If the provided collection is null, no event is ignored.
+     * </p>
+     * 
+     * @param ignoredEvents
+     *            the events to be ignored by the parser, can be null
+     */
+    public JFCLogParser(Collection<JFCEventId> ignoredEvents) {
+        sequences = new LinkedList<List<Event>>();
+        currentSequence = new InteractionEventList();
+        eventFilter = ignoredEvents;
+    }
+
+    /**
+     * <p>
+     * Parses a log file written by the JFCMonitor and creates a collection of event sequences.
+     * </p>
+     * 
+     * @param filename
+     *            name and path of the log file
+     */
+    public void parseFile(String filename) {
+        if (filename == null) {
+            throw new InvalidParameterException("filename must not be null");
+        }
+
+        parseFile(new File(filename));
+    }
+
+    /**
+     * <p>
+     * Parses a log file written by the JFCMonitor and creates a collection of event sequences.
+     * </p>
+     * 
+     * @param file
+     *            name and path of the log file
+     */
+    public void parseFile(File file) {
+        if (file == null) {
+            throw new InvalidParameterException("file must not be null");
+        }
+
+        SAXParserFactory spf = SAXParserFactory.newInstance();
+        spf.setValidating(true);
+
+        SAXParser saxParser = null;
+        InputSource inputSource = null;
+        try {
+            saxParser = spf.newSAXParser();
+            inputSource =
+                new InputSource(new InputStreamReader(new FileInputStream(file), "UTF-8"));
+        }
+        catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        catch (ParserConfigurationException e) {
+            e.printStackTrace();
+        }
+        catch (SAXException e) {
+            e.printStackTrace();
+        }
+        catch (FileNotFoundException e) {
+            e.printStackTrace();
+        }
+        if (inputSource != null) {
+            inputSource.setSystemId("file://" + file.getAbsolutePath());
+            try {
+                if (saxParser == null) {
+                    throw new RuntimeException("SAXParser creation failed");
+                }
+                saxParser.parse(inputSource, this);
+            }
+            catch (SAXParseException e) {
+                Console.printerrln("Failure parsing file in line " + e.getLineNumber() +
+                    ", column " + e.getColumnNumber() + ".");
+                e.printStackTrace();
+            }
+            catch (SAXException e) {
+                e.printStackTrace();
+            }
+            catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * <p>
+     * Returns the collection of event sequences that is obtained from parsing log files.
+     * </p>
+     * 
+     * @return collection of event sequences
+     */
+    public Collection<List<Event>> getSequences() {
+        return sequences;
+    }
+
+    /**
+     * <p>
+     * Returns the gui model that is obtained from parsing log files.
+     * </p>
+     * 
+     * @return collection of event sequences
+     */
+    public GUIModel getGuiModel() {
+        return guiModel;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.xml.sax.helpers.DefaultHandler#startElement(java.lang.String, java.lang.String,
+     * java.lang.String, org.xml.sax.Attributes)
+     */
+    public void startElement(String uri, String localName, String qName, Attributes atts)
+        throws SAXException
+    {
+        if (qName.equals("sessions")) {
+            currentSequence = new InteractionEventList();
+        }
+        if (qName.equals("newsession")) {
+            Console.traceln("start of session");
+            if (currentSequence != null && !currentSequence.isEmpty()) {
+                // create a copy of the list just to have a correctly typed one.
+                sequences.add(currentSequence.subList(0, currentSequence.size() - 1));
+            }
+            currentSequence = new InteractionEventList();
+        }
+        else if (qName.equals("event")) {
+            JFCEventId eventId = JFCEventId.parseEventId(atts.getValue("id"));
+            if ((eventFilter == null) || (!eventFilter.contains(eventId))) {
+                currentEventId = eventId;
+                currentEventParameters = new HashMap<String, String>();
+                currentSourceParameters = new HashMap<String, String>();
+                currentParentParameters = new HashMap<String, String>();
+                paramSource = ParamSource.EVENT;
+            }
+        }
+        else if (currentEventId != null) {
+            if (qName.equals("param")) {
+                if (paramSource == ParamSource.EVENT) {
+                    currentEventParameters.put(atts.getValue("name"), atts.getValue("value"));
+                }
+                else if (paramSource == ParamSource.SOURCE) {
+                    currentSourceParameters.put(atts.getValue("name"), atts.getValue("value"));
+                }
+                else if (paramSource == ParamSource.PARENT) {
+                    currentParentParameters.put(atts.getValue("name"), atts.getValue("value"));
+                }
+                else if (paramSource == ParamSource.COMPONENT) {
+                    if ("title".equals(atts.getValue("name"))) {
+                        currentGuiElementSpec.setName(atts.getValue("value"));
+                    }
+                    else if ("class".equals(atts.getValue("name"))) {
+                        currentGuiElementSpec.setType(atts.getValue("value"));
+                    }
+                    else if ("icon".equals(atts.getValue("name"))) {
+                        currentGuiElementSpec.setIcon(atts.getValue("value"));
+                    }
+                    else if ("index".equals(atts.getValue("name"))) {
+                        currentGuiElementSpec.setIndex(Integer.parseInt(atts.getValue("value")));
+                    }
+                    else if ("hash".equals(atts.getValue("name"))) {
+                        currentGuiElementSpec.setElementHash
+                            (Integer.parseInt(atts.getValue("value"), 16));
+                    }
+                }
+            }
+            else if (qName.equals("source")) {
+                paramSource = ParamSource.SOURCE;
+            }
+            else if (qName.equals("parent")) {
+                paramSource = ParamSource.PARENT;
+            }
+            else if (qName.equals("component")) {
+                paramSource = ParamSource.COMPONENT;
+                currentGuiElementSpec = new JFCGUIElementSpec();
+            }
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String, java.lang.String,
+     * java.lang.String)
+     */
+    @Override
+    public void endElement(String uri, String localName, String qName) throws SAXException {
+        if (qName.equals("sessions")) {
+            if (currentSequence != null && !currentSequence.isEmpty()) {
+                sequences.add(currentSequence);
+            }
+            currentSequence = null;
+        }
+        else if (currentEventId != null) {
+            if (qName.equals("event")) {
+                
+                if (currentGuiElementPath.size() <= 0)
+                {
+                    // no component specification available. Try to parse the GUI element from
+                    // the toString parameter
+                    currentGuiElementSpec = new JFCGUIElementSpec();
+                    getGUIElementSpecFromToString(currentSourceParameters.get("toString"));
+                    currentGuiElementPath.add(currentGuiElementSpec);
+                    currentGuiElementSpec = null;
+                }
+                
+                IGUIElement currentGUIElement;
+                try {
+                    currentGUIElement = guiModel.integratePath
+                        (currentGuiElementPath, JFCGUIElementFactory.getInstance());
+                }
+                catch (GUIModelException e) {
+                    throw new SAXException("error in the GUI model provided in the log", e);
+                }
+                
+                JFCEvent event = new JFCEvent
+                  (instantiateInteraction(currentEventId, currentEventParameters),
+                   (currentGUIElement == null ? lastGUIElement : currentGUIElement),
+                   currentEventParameters, currentSourceParameters, currentParentParameters);
+                
+                currentSequence.add(event);
+                
+                currentEventParameters = null;
+                currentSourceParameters = null;
+                currentParentParameters = null;
+                currentGuiElementSpec = null;
+                currentGuiElementPath.clear();
+                
+                currentEventId = null;
+                
+                if (currentGUIElement != null) {
+                    lastGUIElement = currentGUIElement;
+                }
+                
+                currentGUIElement = null;
+            }
+            else if (qName.equals("source")) {
+                paramSource = ParamSource.EVENT;
+            }
+            else if (qName.equals("parent")) {
+                paramSource = ParamSource.SOURCE;
+            }
+            else if (qName.equals("component")) {
+                paramSource.equals(ParamSource.SOURCE);
+                currentGuiElementPath.add(currentGuiElementSpec);
+                currentGuiElementSpec = null;
+            }
+        }
+    }
+
+    /**
+     * <p>
+     * depending on the event id and the event parameters, this method instantiates the concrete
+     * interaction, that took place, i.e. the event type
+     * </p>
+     *
+     * @param eventId
+     *            the id of the event
+     * @param eventParameters
+     *            the parameters provided for the event
+     *            
+     * @return as described
+     * 
+     * @throws SAXException thrown if the provided event id is unknown
+     */
+    private IInteraction instantiateInteraction(JFCEventId          eventId,
+                                                Map<String, String> eventParameters)
+      throws SAXException
+    {
+        switch (eventId)
+        {
+            case FOCUS_GAINED:
+                return handleNewFocus(eventId, eventParameters);
+
+            case KEY_PRESSED:
+            case KEY_RELEASED:
+            case KEY_TYPED:
+                return handleKeyAction(eventId, eventParameters);
+
+            case MOUSE_CLICKED:
+            case MOUSE_PRESSED:
+            case MOUSE_RELEASED:
+            case MOUSE_MOVED:
+            case MOUSE_ENTERED:
+            case MOUSE_EXITED:
+            case MOUSE_DRAGGED:
+            case MOUSE_WHEEL:
+                return handleMouseAction(eventId, eventParameters);
+
+            default:
+                throw new SAXException("unhandled event id " + eventId);
+        }
+    }
+
+    /**
+     * <p>
+     * handles a mouse interaction. The method determines based on the event id and the parameters
+     * which mouse button is pressed, released or clicked.
+     * </p>
+     *
+     * @param eventId
+     *            the id of the event
+     * @param eventParameters
+     *            the parameters provided for the event
+     *            
+     * @return as described
+     * 
+     * @throws SAXException thrown if the provided event id or button index is unknown
+     */
+    private IInteraction handleMouseAction(JFCEventId eventId, Map<String, String> eventParameters)
+        throws SAXException
+    {
+        MouseButtonInteraction.Button button = null;
+
+        if (eventParameters.get("Button") != null)
+        {
+            int buttonId = Integer.parseInt(eventParameters.get("Button"));
+            if (buttonId == MouseEvent.BUTTON1)
+            {
+                button = MouseButtonInteraction.Button.LEFT;
+            }
+            else if (buttonId == MouseEvent.BUTTON2)
+            {
+                button = MouseButtonInteraction.Button.MIDDLE;
+            }
+            else if (buttonId == MouseEvent.BUTTON3)
+            {
+                button = MouseButtonInteraction.Button.RIGHT;
+            }
+            else
+            {
+                throw new SAXException("unknown mouse button index " + buttonId);
+            }
+        }
+
+        if (JFCEventId.MOUSE_CLICKED == eventId)
+        {
+            return new MouseClick(button);
+        }
+        else if (JFCEventId.MOUSE_PRESSED == eventId)
+        {
+            return new MouseButtonDown(button);
+        }
+        else if (JFCEventId.MOUSE_RELEASED == eventId)
+        {
+            return new MouseButtonUp(button);
+        }
+        else
+        {
+            throw new SAXException("unknown event id " + eventId);
+        }
+    }
+
+    /**
+     * <p>
+     * handles a keyboard interaction. The method determines based on the event id and the
+     * parameters which key on the keyboard is pressed or released. It further checks, if for 
+     * every released key there is also a pressed event
+     * </p>
+     *
+     * @param eventId
+     *            the id of the event
+     * @param eventParameters
+     *            the parameters provided for the event
+     *            
+     * @return as described
+     * 
+     * @throws SAXException thrown if the provided event id is unknown or if there is a key
+     *                      release without a preceding press of the same key
+     */
+    private IInteraction handleKeyAction(JFCEventId eventId, Map<String, String> eventParameters)
+      throws SAXException
+    {
+        // TODO handle shortcuts
+        if (JFCEventId.KEY_PRESSED == eventId)
+        {
+            VirtualKey key = VirtualKey.parseVirtualKey(eventParameters.get("KeyCode"));
+            mPressedKeys.add(key);
+
+            return new KeyPressed(key);
+        }
+        else if (JFCEventId.KEY_RELEASED == eventId)
+        {
+            VirtualKey key = VirtualKey.parseVirtualKey(eventParameters.get("KeyCode"));
+            if (mPressedKeys.contains(key))
+            {
+                mPressedKeys.remove(key);
+            }
+            else
+            {
+                throw new SAXException
+                  ("log file has an error, as it contains a key up event on key " + key +
+                   " for which there is no preceeding key down event");
+            }
+
+            return new KeyReleased(key);
+        }
+
+        throw new SAXException("unknown event id " + eventId);
+    }
+
+    /**
+     * <p>
+     * handles explicit keyboard focus changes.
+     * </p>
+     *
+     * @param eventId
+     *            the id of the event
+     * @param eventParameters
+     *            the parameters provided for the event
+     *            
+     * @return as described
+     * 
+     * @throws SAXException thrown if the provided event id is unknown
+     */
+    private IInteraction handleNewFocus(JFCEventId eventId, Map<String, String> eventParameters)
+        throws SAXException
+    {
+        if (JFCEventId.FOCUS_GAINED == eventId)
+        {
+            return new KeyboardFocusChange();
+        }
+        else
+        {
+            throw new SAXException("unknown event id " + eventId);
+        }
+    }
+
+    /**
+     * <p>
+     * for some events in the log file, no component specification is provided. In this case the
+     * GUI element on which the event is executed must be determined based on the
+     * <code>toString</code> parameter of the event. This is achieved through this method. The
+     * <code>toString</code> parameter does not always carry sufficient information for the GUI
+     * elements. For example the title is not necessarily provided. Therefore some of this
+     * information is generated.
+     * </p>
+     *
+     * @param toStringValue
+     *            the <code>toString</code> parameter of the event to be parsed for the GUI element
+     *            
+     * @return the appropriate GUI Element
+     * 
+     * @throws SAXException thrown if the provided value of the <code>toString</code> parameter
+     *                      can not be parsed
+     */
+    private void getGUIElementSpecFromToString(String toStringValue)
+        throws SAXException
+    {
+        try
+        {
+            String pattern = "([\\w$\\.]*)\\[.*\\]";
+
+            Matcher matcher1 = Pattern.compile(pattern).matcher(toStringValue);
+
+            if (!matcher1.find())
+            {
+                throw new IllegalArgumentException
+                    ("could not parse target from toString parameter");
+            }
+
+            String type = matcher1.group(1);
+
+            currentGuiElementSpec.setName("unknown");
+            currentGuiElementSpec.setType(type);
+            currentGuiElementSpec.setIcon("unknown");
+            currentGuiElementSpec.setIndex(-1);
+            currentGuiElementSpec.setElementHash(-1);
+        }
+        catch (Exception e)
+        {
+            throw new SAXException("could not parse target", e);
+        }
+    }
+
+    /**
+     * <p>
+     * creates a default event filter that ignores focus changes, mouse pressed and mouse released
+     * events.
+     * </p>
+     */
+    private void setupDefaultEventFilter() {
+        eventFilter = new HashSet<JFCEventId>();
+        eventFilter.add(JFCEventId.MOUSE_PRESSED);
+        eventFilter.add(JFCEventId.MOUSE_RELEASED);
+        eventFilter.add(JFCEventId.FOCUS_GAINED);
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/JFCPlugin.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/JFCPlugin.java	(revision 572)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/JFCPlugin.java	(revision 573)
@@ -1,2 +1,3 @@
+
 package de.ugoe.cs.quest.plugin.jfc;
 
@@ -13,30 +14,31 @@
 public class JFCPlugin implements QuestPlugin {
 
-	/**
-	 * <p>
-	 * The command packages of this plug-in.
-	 * </p>
-	 */
-	private final static String[] commandPackages = new String[] { "de.ugoe.cs.quest.plugin.jfc.commands" };
+    /**
+     * <p>
+     * The command packages of this plug-in.
+     * </p>
+     */
+    private final static String[] commandPackages = new String[]
+        { "de.ugoe.cs.quest.plugin.jfc.commands" };
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see de.ugoe.cs.quest.plugin.QuestPlugin#getTitle()
-	 */
-	@Override
-	public String getTitle() {
-		return "JFC-Plugin";
-	}
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.quest.plugin.QuestPlugin#getTitle()
+     */
+    @Override
+    public String getTitle() {
+        return "JFC-Plugin";
+    }
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see de.ugoe.cs.quest.plugin.QuestPlugin#getCommandPackages()
-	 */
-	@Override
-	public String[] getCommandPackages() {
-		return commandPackages;
-	}
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.quest.plugin.QuestPlugin#getCommandPackages()
+     */
+    @Override
+    public String[] getCommandPackages() {
+        return commandPackages;
+    }
 
 }
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/commands/CMDparseDirJFC.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/commands/CMDparseDirJFC.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/commands/CMDparseDirJFC.java	(revision 573)
@@ -0,0 +1,82 @@
+
+package de.ugoe.cs.quest.plugin.jfc.commands;
+
+import java.io.File;
+import java.security.InvalidParameterException;
+import java.util.Collection;
+import java.util.List;
+
+import de.ugoe.cs.quest.CommandHelpers;
+import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.plugin.jfc.JFCLogParser;
+import de.ugoe.cs.quest.ui.GlobalDataContainer;
+import de.ugoe.cs.util.console.Command;
+import de.ugoe.cs.util.console.Console;
+
+/**
+ * <p>
+ * Command that tries to parse all files in a folder as if they were log files generated by the
+ * JFCMonitor. The result is one set of sequences for all files (not one set of sequences for each
+ * file!).
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class CMDparseDirJFC implements Command {
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.util.console.Command#run(java.util.List)
+     */
+    @Override
+    public void run(List<Object> parameters) {
+        String path;
+        String sequencesName = "sequences";
+
+        try {
+            path = (String) parameters.get(0);
+            if (parameters.size() >= 2) {
+                sequencesName = (String) parameters.get(1);
+            }
+        }
+        catch (Exception e) {
+            throw new InvalidParameterException();
+        }
+
+        File folder = new File(path);
+        if (!folder.isDirectory()) {
+            Console.printerrln(path + " is not a directory");
+            return;
+        }
+
+        JFCLogParser parser = new JFCLogParser();
+
+        String absolutPath = folder.getAbsolutePath();
+        for (String filename : folder.list()) {
+            String source = absolutPath + "/" + filename;
+            Console.traceln("Processing file: " + source);
+
+            parser.parseFile(source);
+        }
+
+        Collection<List<Event>> sequences = parser.getSequences();
+
+        if (GlobalDataContainer.getInstance().addData(sequencesName, sequences)) {
+            CommandHelpers.dataOverwritten(sequencesName);
+        }
+
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.util.console.Command#help()
+     */
+    @Override
+    public void help() {
+        Console.println("Usage: parseDirJFC <path> {<sequencesName>}");
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/commands/CMDparseJFC.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/commands/CMDparseJFC.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/commands/CMDparseJFC.java	(revision 573)
@@ -0,0 +1,64 @@
+package de.ugoe.cs.quest.plugin.jfc.commands;
+
+import java.security.InvalidParameterException;
+import java.util.Collection;
+import java.util.List;
+
+import de.ugoe.cs.quest.CommandHelpers;
+import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.plugin.jfc.JFCLogParser;
+import de.ugoe.cs.quest.ui.GlobalDataContainer;
+import de.ugoe.cs.util.console.Command;
+import de.ugoe.cs.util.console.Console;
+
+/**
+ * <p>
+ * Command to parse an XML file with sessions monitored by EventBench's
+ * JFCMonitor.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class CMDparseJFC implements Command {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.util.console.Command#run(java.util.List)
+	 */
+	@Override
+	public void run(List<Object> parameters) {
+		String filename;
+		String sequencesName = "sequences";
+
+		try {
+			filename = (String) parameters.get(0);
+			if (parameters.size() >= 2) {
+				sequencesName = (String) parameters.get(1);
+			}
+		} catch (Exception e) {
+			throw new InvalidParameterException();
+		}
+		
+		JFCLogParser parser = new JFCLogParser();
+
+		parser.parseFile(filename);
+		Collection<List<Event>> sequences = parser.getSequences();
+
+		if (GlobalDataContainer.getInstance().addData(sequencesName, sequences)) {
+			CommandHelpers.dataOverwritten(sequencesName);
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.util.console.Command#help()
+	 */
+	@Override
+	public void help() {
+		Console.println("Usage: parseJFC <filename> {<sequencesName>}");
+	}
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/commands/CMDpreprocessDirJFC.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/commands/CMDpreprocessDirJFC.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/commands/CMDpreprocessDirJFC.java	(revision 573)
@@ -0,0 +1,119 @@
+package de.ugoe.cs.quest.plugin.jfc.commands;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.security.InvalidParameterException;
+import java.util.List;
+
+import de.ugoe.cs.util.console.Command;
+import de.ugoe.cs.util.console.Console;
+
+/**
+ * <p>
+ * Command to pre-process files written by EventBench's JFCMonitor located in a
+ * directory. The only task of the pre-processing is checking if the session was
+ * closed properly, i.e., if the XML file ends with a {@code </sessions>} tag.
+ * If this is not the case, the tag will be appended to the file.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class CMDpreprocessDirJFC implements Command {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.util.console.Command#run(java.util.List)
+	 */
+	@Override
+	public void run(List<Object> parameters) {
+		String sourcePath;
+		String targetPath;
+		try {
+			sourcePath = (String) parameters.get(0);
+			targetPath = (String) parameters.get(1);
+		} catch (Exception e) {
+			throw new InvalidParameterException();
+		}
+
+		File sourceFolder = new File(sourcePath);
+		if (!sourceFolder.isDirectory()) {
+			Console.printerrln(sourcePath + " is not a directory");
+		}
+		String absolutPathSource = sourceFolder.getAbsolutePath();
+		File targetFolder = new File(targetPath);
+		if (!targetFolder.isDirectory()) {
+			Console.printerrln(targetPath + " is not a directory");
+		}
+		String absolutPathTarget = targetFolder.getAbsolutePath();
+
+		for (String filename : sourceFolder.list()) {
+			String source = absolutPathSource + "/" + filename;
+			Console.traceln("Preprocessing file: " + source);
+			File file = new File(source);
+			InputStreamReader reader;
+			try {
+				FileInputStream fis = new FileInputStream(file);
+				reader = new InputStreamReader(fis, "UTF-16");
+			} catch (FileNotFoundException e) {
+				Console.printerrln(e.getMessage());
+				return;
+			} catch (UnsupportedEncodingException e) {
+				Console.printerrln(e.getMessage());
+				return;
+			}
+			char[] buffer = new char[(int) file.length()];
+			try {
+				reader.read(buffer);
+				reader.close();
+			} catch (IOException e) {
+				Console.printerrln(e.getMessage());
+				return;
+			}
+
+			String content = new String(buffer).trim();
+
+			int index = filename.lastIndexOf('.');
+			String target = absolutPathTarget + "/"
+					+ filename.substring(0, index) + ".xml";
+
+			Console.traceln("   Saving as: " + target);
+
+			OutputStreamWriter writer;
+			try {
+				FileOutputStream fos = new FileOutputStream(target);
+				writer = new OutputStreamWriter(fos, "UTF-8");
+			} catch (IOException e) {
+				Console.printerrln(e.getMessage());
+				return;
+			}
+			try {
+				writer.write(content);
+				if (!content.endsWith("</sessions>")) {
+					writer.write("</sessions>");
+				}
+				writer.close();
+			} catch (IOException e) {
+				Console.printerrln(e.getMessage());
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.util.console.Command#help()
+	 */
+	@Override
+	public void help() {
+		Console.println("Usage: preprocessDirJFC <sourcePath> <targetPath>");
+	}
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/commands/CMDpreprocessJFC.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/commands/CMDpreprocessJFC.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/commands/CMDpreprocessJFC.java	(revision 573)
@@ -0,0 +1,98 @@
+package de.ugoe.cs.quest.plugin.jfc.commands;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.security.InvalidParameterException;
+import java.util.List;
+
+import de.ugoe.cs.util.console.Command;
+import de.ugoe.cs.util.console.Console;
+
+/**
+ * <p>
+ * Command to pre-process files written by EventBench's JFCMonitor. The only
+ * task of the pre-processing is checking if the session was closed properly,
+ * i.e., if the XML file ends with a {@code </sessions>} tag. If this is not the
+ * case, the tag will be appended to the file.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class CMDpreprocessJFC implements Command {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.util.console.Command#run(java.util.List)
+	 */
+	@Override
+	public void run(List<Object> parameters) {
+		String source;
+		String target;
+		try {
+			source = (String) parameters.get(0);
+			target = (String) parameters.get(1);
+		} catch (Exception e) {
+			throw new InvalidParameterException();
+		}
+
+		File file = new File(source);
+		InputStreamReader reader;
+		try {
+			FileInputStream fis = new FileInputStream(file);
+			reader = new InputStreamReader(fis, "UTF-16");
+		} catch (FileNotFoundException e) {
+			Console.printerrln(e.getMessage());
+			return;
+		} catch (UnsupportedEncodingException e) {
+			Console.printerrln(e.getMessage());
+			return;
+		}
+		char[] buffer = new char[(int) file.length()];
+		try {
+			reader.read(buffer);
+			reader.close();
+		} catch (IOException e) {
+			Console.printerrln(e.getMessage());
+			return;
+		}
+
+		String content = new String(buffer).trim();
+
+		OutputStreamWriter writer;
+		try {
+			FileOutputStream fos = new FileOutputStream(target);
+			writer = new OutputStreamWriter(fos, "UTF-8");
+		} catch (IOException e) {
+			Console.printerrln(e.getMessage());
+			return;
+		}
+		try {
+			writer.write(content);
+			if (!content.endsWith("</sessions>")) {
+				writer.write("</sessions>");
+			}
+			writer.close();
+		} catch (IOException e) {
+			Console.printerrln(e.getMessage());
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.util.console.Command#help()
+	 */
+	@Override
+	public void help() {
+		Console.println("Usage: preprocessJFC <sourceFile> <targetFile>");
+	}
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/eventcore/JFCEvent.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/eventcore/JFCEvent.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/eventcore/JFCEvent.java	(revision 573)
@@ -0,0 +1,108 @@
+
+package de.ugoe.cs.quest.plugin.jfc.eventcore;
+
+import java.util.Map;
+
+import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.eventcore.IEventTarget;
+import de.ugoe.cs.quest.eventcore.gui.IInteraction;
+
+/**
+ * <p>
+ * This class defines JFC events.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class JFCEvent extends Event {
+
+    /**
+     * <p>
+     * Id for object serialization.
+     * </p>
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * <p>
+     * Internal map of parameters associated with the event.
+     * </p>
+     */
+    private Map<String, String> parameters;
+
+    /**
+     * <p>
+     * Information about the event source.
+     * </p>
+     */
+    private Map<String, String> sourceParameters;
+
+    /**
+     * <p>
+     * Information about the parent of the event source.
+     * </p>
+     */
+    private Map<String, String> parentParameters;
+
+    /**
+     * <p>
+     * Constructor. Creates a new JFCEvent.
+     * </p>
+     * 
+     * @param type
+     *            type of the event
+     */
+    public JFCEvent(IInteraction        type,
+                    IEventTarget        target,
+                    Map<String, String> parameters,
+                    Map<String, String> sourceParameters,
+                    Map<String, String> parentParameters)
+    {
+        super(type);
+        super.setTarget(target);
+        this.parameters = parameters;
+        this.sourceParameters = sourceParameters;
+        this.parentParameters = parentParameters;
+    }
+
+    /**
+     * <p>
+     * Retrieves the value of a parameter.
+     * </p>
+     * 
+     * @param name
+     *            name of the parameter
+     * @return value of the parameter
+     */
+    public String getParameter(String name) {
+        return parameters.get(name);
+    }
+
+    /**
+     * <p>
+     * Retrieves information about the source of the event.
+     * </p>
+     * 
+     * @param name
+     *            name of the information
+     * @return value of the information
+     */
+    public String getSourceInformation(String name) {
+        return sourceParameters.get(name);
+    }
+
+    /**
+     * <p>
+     * Retrieves information about the parent of the source of the event.
+     * </p>
+     * 
+     * @param name
+     *            name of the information
+     * @return value of the information
+     */
+    public String getParentInformation(String name) {
+        return parentParameters.get(name);
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/eventcore/JFCEventId.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/eventcore/JFCEventId.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/eventcore/JFCEventId.java	(revision 573)
@@ -0,0 +1,78 @@
+// Module    : $RCSfile: MessageType.java,v $
+// Version   : $Revision: 0.0 $  $Author: Patrick $  $Date: 26.11.2011 14:36:45 $
+// Project   : TaskTreePerformanceTest
+// Creation  : 2011 by Patrick
+// Copyright : Patrick Harms, 2011
+
+package de.ugoe.cs.quest.plugin.jfc.eventcore;
+
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: $
+ * @author 2011, last modified by $Author: $
+ */
+public enum JFCEventId {
+    
+    MOUSE_CLICKED(MouseEvent.MOUSE_CLICKED),
+    MOUSE_PRESSED(MouseEvent.MOUSE_PRESSED),
+    MOUSE_RELEASED(MouseEvent.MOUSE_RELEASED),
+    MOUSE_MOVED(MouseEvent.MOUSE_MOVED),
+    MOUSE_ENTERED(MouseEvent.MOUSE_ENTERED),
+    MOUSE_EXITED(MouseEvent.MOUSE_EXITED),
+    MOUSE_DRAGGED(MouseEvent.MOUSE_DRAGGED),
+    MOUSE_WHEEL(MouseEvent.MOUSE_WHEEL),
+    FOCUS_GAINED(FocusEvent.FOCUS_GAINED),
+    FOCUS_LOST(FocusEvent.FOCUS_LOST),
+    KEY_TYPED(KeyEvent.KEY_TYPED),
+    KEY_PRESSED(KeyEvent.KEY_PRESSED),
+    KEY_RELEASED(KeyEvent.KEY_RELEASED);
+
+    /** the numerical representation of the event type */
+    private int mNumber;
+
+    /**
+     * @param number
+     */
+    JFCEventId(int number) {
+        mNumber = number;
+    }
+
+    /**
+     * @return Returns the number.
+     */
+    public int getNumber() {
+        return mNumber;
+    }
+
+    /**
+     *
+     */
+    public static JFCEventId parseEventId(String numberString) {
+        try {
+            int number = Integer.parseInt(numberString);
+            return valueOf(number);
+        }
+        catch (NumberFormatException e) {
+            return JFCEventId.valueOf(JFCEventId.class, numberString);
+        }
+    }
+
+    /**
+     *
+     */
+    public static JFCEventId valueOf(int number) {
+        for (JFCEventId type : JFCEventId.values()) {
+            if (type.mNumber == number) {
+                return type;
+            }
+        }
+
+        throw new IllegalArgumentException("there is no event type with number " + number);
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCButton.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCButton.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCButton.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.IButton;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCButton extends JFCGUIElement implements IButton {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCButton(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "Button(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCCanvas.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCCanvas.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCCanvas.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.ICanvas;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCCanvas extends JFCGUIElement implements ICanvas {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCCanvas(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "Canvas(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCDialog.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCDialog.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCDialog.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.IFrame;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCDialog extends JFCGUIElement implements IFrame {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCDialog(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "Dialog(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCFrame.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCFrame.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCFrame.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.IFrame;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCFrame extends JFCGUIElement implements IFrame {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCFrame(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "Frame(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCGUIElement.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCGUIElement.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCGUIElement.java	(revision 573)
@@ -0,0 +1,81 @@
+// Module    : $RCSfile: GUIElementFromReplay.java,v $
+// Version   : $Revision: 0.0 $  $Author: Patrick $  $Date: 27.11.2011 17:18:00 $
+// Project   : TaskTreePerformanceTest
+// Creation  : 2011 by Patrick
+// Copyright : Patrick Harms, 2011
+
+package de.ugoe.cs.quest.plugin.jfc.guimodel;
+
+import de.ugoe.cs.quest.eventcore.guimodel.AbstractDefaultGUIElement;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: $
+ * @author 2011, last modified by $Author: $
+ */
+public class JFCGUIElement extends AbstractDefaultGUIElement {
+    
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /** the specification of the GUI Element */
+    private JFCGUIElementSpec specification;
+
+    /**
+     * @param name
+     * @param id
+     * @param isModal
+     */
+    public JFCGUIElement(JFCGUIElementSpec specification)
+    {
+        super(specification);
+        this.specification = specification;
+    }
+
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.quest.eventcore.IEventTarget#getPlatform()
+     */
+    @Override
+    public String getPlatform() {
+        return "JFC";
+    }
+
+    /**
+     * TODO: comment
+     * 
+     * @return
+     */
+    public String getJavaType() {
+        return specification.getType();
+    }
+
+    /**
+     * @return Returns the name.
+     */
+    String getName() {
+        return specification.getName();
+    }
+
+    /**
+     * @return the icon
+     */
+    String getIcon() {
+        return specification.getIcon();
+    }
+
+    /**
+     * @return the index
+     */
+    int getIndex() {
+        return specification.getIndex();
+    }
+
+    /**
+     * @return the hashCode
+     */
+    int getElementHash() {
+        return specification.getElementHash();
+    }
+
+}
Index: /trunk/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 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCGUIElementFactory.java	(revision 573)
@@ -0,0 +1,139 @@
+// 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-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCGUIElementSpec.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCGUIElementSpec.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCGUIElementSpec.java	(revision 573)
@@ -0,0 +1,170 @@
+// Module    : $RCSfile: JFCHGUIElementSpec.java,v $
+// Version   : $Revision: 0.0 $  $Author: pharms $  $Date: 17.08.2012 $
+// Project   : quest-plugin-jfc
+// Creation  : 2012 by pharms
+// Copyright : Patrick Harms, 2012
+package de.ugoe.cs.quest.plugin.jfc.guimodel;
+
+import de.ugoe.cs.quest.eventcore.guimodel.IGUIElementSpec;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @version $Revision: $ $Date: 17.08.2012$
+ * @author 2012, last modified by $Author: pharms$
+ */
+public class JFCGUIElementSpec implements IGUIElementSpec {
+
+    /** */
+    private String name;
+    
+    /** */
+    private String type;
+    
+    /** */
+    private String icon;
+    
+    /** */
+    private int index;
+    
+    /** */
+    private int elementHash;
+    
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.quest.eventcore.guimodel.IGUIElementSpec#getSecificationSimilarity(IGUIElementSpec)
+     */
+    @Override
+    public int getSimilarity(IGUIElementSpec other) {
+        if (this == other)
+        {
+            return 100;
+        }
+        
+        if (!(other instanceof JFCGUIElementSpec))
+        {
+            return 0;
+        }
+        
+        JFCGUIElementSpec otherSpec = (JFCGUIElementSpec) other;
+        int result = 0;
+
+        if ((type == otherSpec.type) || ((type != null) && (type.equals(otherSpec.type)))) {
+            result += 50;
+        }
+
+        if ((icon == otherSpec.icon) || ((icon != null) && (icon.equals(otherSpec.icon)))) {
+            result += 10;
+        }
+
+        if (index == otherSpec.index) {
+            result += 10;
+        }
+
+        if ((name == otherSpec.name) || ((name != null) && (name.equals(otherSpec.name)))) {
+            result += 15;
+        }
+
+        if (elementHash == otherSpec.elementHash) {
+            result += 15;
+        }
+        
+        return result;
+    }
+
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.quest.eventcore.guimodel.IGUIElementSpec#equals(IGUIElementSpec)
+     */
+    @Override
+    public boolean equals(IGUIElementSpec other) {
+        if (this == other)
+        {
+            return true;
+        }
+        
+        if (!(other instanceof JFCGUIElementSpec))
+        {
+            return false;
+        }
+        
+        JFCGUIElementSpec otherSpec = (JFCGUIElementSpec) other;
+        
+        return
+            ((name == otherSpec.name) || ((name != null) && (name.equals(otherSpec.name)))) &&
+            ((type == otherSpec.type) || ((type != null) && (type.equals(otherSpec.type)))) &&
+            ((icon == otherSpec.icon) || ((icon != null) && (icon.equals(otherSpec.icon)))) &&
+            (index == otherSpec.index) && (elementHash == otherSpec.elementHash);
+    }
+
+    /**
+     * @return the name
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * @return the title
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * @return the icon
+     */
+    public String getIcon() {
+        return icon;
+    }
+
+    /**
+     * @return the index
+     */
+    public int getIndex() {
+        return index;
+    }
+
+    /**
+     * @return the elementHash
+     */
+    public int getElementHash() {
+        return elementHash;
+    }
+
+    /**
+     * @param name the name to set
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * @param title the title to set
+     */
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    /**
+     * @param icon the icon to set
+     */
+    public void setIcon(String icon) {
+        this.icon = icon;
+    }
+
+    /**
+     * @param index the index to set
+     */
+    public void setIndex(int index) {
+        this.index = index;
+    }
+
+    /**
+     * @param elementHash the elementHash to set
+     */
+    public void setElementHash(int elementHash) {
+        this.elementHash = elementHash;
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCMenu.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCMenu.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCMenu.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.IMenu;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCMenu extends JFCGUIElement implements IMenu {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCMenu(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "MenuBar(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCMenuBar.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCMenuBar.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCMenuBar.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.IMenuBar;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCMenuBar extends JFCMenu implements IMenuBar {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCMenuBar(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "MenuBar(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCMenuButton.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCMenuButton.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCMenuButton.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.IMenuButton;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCMenuButton extends JFCButton implements IMenuButton {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCMenuButton(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "MenuButton(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCPanel.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCPanel.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCPanel.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.IPanel;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCPanel extends JFCGUIElement implements IPanel {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCPanel(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "Panel(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCScrollBar.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCScrollBar.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCScrollBar.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.IScrollBar;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCScrollBar extends JFCGUIElement implements IScrollBar {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCScrollBar(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "ScrollBar(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCScrollPane.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCScrollPane.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCScrollPane.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.IScrollPane;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCScrollPane extends JFCGUIElement implements IScrollPane {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCScrollPane(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "ScrollPane(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCShape.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCShape.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCShape.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.IShape;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCShape extends JFCGUIElement implements IShape {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCShape(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "Shape(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCSplitPane.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCSplitPane.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCSplitPane.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.ISplitPane;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCSplitPane extends JFCGUIElement implements ISplitPane {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCSplitPane(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "SplitPane(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCTabbedPane.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCTabbedPane.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCTabbedPane.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.ITabbedPane;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCTabbedPane extends JFCGUIElement implements ITabbedPane {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCTabbedPane(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "TabbedPane(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCTextField.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCTextField.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCTextField.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.ITextField;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCTextField extends JFCGUIElement implements ITextField {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCTextField(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "TextField(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
Index: /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCToolBar.java
===================================================================
--- /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCToolBar.java	(revision 573)
+++ /trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/guimodel/JFCToolBar.java	(revision 573)
@@ -0,0 +1,45 @@
+// Module    : $RCSfile: JavaPanel.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 de.ugoe.cs.quest.eventcore.guimodel.IToolBar;
+
+/**
+ * TODO comment
+ * 
+ * @version $Revision: $ $Date: 13.05.2012$
+ * @author 2012, last modified by $Author: patrick$
+ */
+public class JFCToolBar extends JFCGUIElement implements IToolBar {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * TODO: comment
+     * 
+     * @param name
+     * @param type
+     * @param icon
+     * @param index
+     * @param hashCode
+     */
+    public JFCToolBar(JFCGUIElementSpec specification) {
+        super(specification);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "ToolBar(" + super.getName() + ", " + super.getElementHash() + ")";
+    }
+
+}
