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 704)
+++ trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/JFCLogParser.java	(revision 713)
@@ -12,5 +12,4 @@
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
@@ -149,5 +148,5 @@
      * </p>
      */
-    ParamSource paramSource = null;
+    private ParamSource paramSource = null;
 
     /**
@@ -167,5 +166,5 @@
         sequences = new LinkedList<List<Event>>();
         currentSequence = null;
-        setupDefaultEventFilter();
+        //setupDefaultEventFilter();
     }
 
@@ -340,5 +339,6 @@
                     }
                     else if ("hash".equals(atts.getValue("name"))) {
-                        currentGuiElementSpec.setElementHash(atts.getValue("value"));
+                        currentGuiElementSpec.setElementHash
+                            (Integer.parseInt(atts.getValue("value"), 16));
                     }
                 }
@@ -386,5 +386,4 @@
                 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, GUIElementFactory.getInstance());
@@ -628,9 +627,9 @@
         try
         {
-            String pattern = "([\\w$\\.]*)\\[.*\\]";
-
-            Matcher matcher1 = Pattern.compile(pattern).matcher(toStringValue);
-
-            if (!matcher1.find())
+            // match the following: <type>[<parameters>]
+            String pattern = "([\\w$\\.]*)\\[(.*)\\]";
+            Matcher matcher = Pattern.compile(pattern).matcher(toStringValue);
+
+            if (!matcher.find())
             {
                 throw new IllegalArgumentException
@@ -638,11 +637,44 @@
             }
 
-            String type = matcher1.group(1);
-
-            currentGuiElementSpec.setName("unknown");
+            String type = matcher.group(1);
+            
+            // match the following: <parameter>|,
+            // where <parameter> := <digitValue>|<value>|<key>"="<value>
+            pattern = "([\\w$@=\\.]*)|,";
+
+            matcher = Pattern.compile(pattern).matcher(matcher.group(2));
+            
+            float elementHash = -1;
+            
+            pattern = "(([\\d]*)|([\\w$]*)|(([\\w$@\\.]*)=([\\w$@\\.]*)))\\z";
+            Pattern valuePattern = Pattern.compile(pattern);
+            
+            while (matcher.find()) {
+                Matcher valueMatcher = valuePattern.matcher(matcher.group(1));
+                if (valueMatcher.find()) {
+                    if ((valueMatcher.group(2) != null) && (!"".equals(valueMatcher.group(2)))) {
+                        // found digit value. Those in combination usually denote the position
+                        // of the GUI element. So calculate an element has out of them
+                        elementHash += Integer.parseInt(valueMatcher.group(2));
+                    }
+                    else if ((valueMatcher.group(5) != null) &&
+                             (!"".equals(valueMatcher.group(5))) &&
+                             (valueMatcher.group(6) != null) &&
+                             (!"".equals(valueMatcher.group(6))))
+                    {
+                        // found a key value pair. Get some of them and integrate them into the hash 
+                        String key = valueMatcher.group(5);
+                        
+                        if ("alignmentX".equals(key) || "alignmentY".equals(key)) {
+                            elementHash += Float.parseFloat(valueMatcher.group(6));
+                        }
+                    }
+                }
+            }
+
+            currentGuiElementSpec.setName("unknown(" + ((int) elementHash) + ")");
             currentGuiElementSpec.setType(type);
-            currentGuiElementSpec.setIcon("unknown");
             currentGuiElementSpec.setIndex(-1);
-            currentGuiElementSpec.setElementHash("-1");
+            currentGuiElementSpec.setElementHash((int) elementHash);
         }
         catch (Exception e)
@@ -651,5 +683,5 @@
         }
     }
-
+    
     /**
      * <p>
@@ -658,10 +690,10 @@
      * </p>
      */
-    private void setupDefaultEventFilter() {
+    /*private void setupDefaultEventFilter() {
         eventFilter = new HashSet<JFCEventId>();
         eventFilter.add(JFCEventId.MOUSE_PRESSED);
         eventFilter.add(JFCEventId.MOUSE_RELEASED);
         eventFilter.add(JFCEventId.FOCUS_GAINED);
-    }
+    }*/
 
 }
