Ignore:
Timestamp:
08/30/12 14:07:33 (12 years ago)
Author:
pharms
Message:
  • removed default event filter
  • improved detection of equal and distinct GUI elements specified through toString only
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/quest-plugin-jfc/src/main/java/de/ugoe/cs/quest/plugin/jfc/JFCLogParser.java

    r704 r713  
    1212import java.util.Collection; 
    1313import java.util.HashMap; 
    14 import java.util.HashSet; 
    1514import java.util.LinkedList; 
    1615import java.util.List; 
     
    149148     * </p> 
    150149     */ 
    151     ParamSource paramSource = null; 
     150    private ParamSource paramSource = null; 
    152151 
    153152    /** 
     
    167166        sequences = new LinkedList<List<Event>>(); 
    168167        currentSequence = null; 
    169         setupDefaultEventFilter(); 
     168        //setupDefaultEventFilter(); 
    170169    } 
    171170 
     
    340339                    } 
    341340                    else if ("hash".equals(atts.getValue("name"))) { 
    342                         currentGuiElementSpec.setElementHash(atts.getValue("value")); 
     341                        currentGuiElementSpec.setElementHash 
     342                            (Integer.parseInt(atts.getValue("value"), 16)); 
    343343                    } 
    344344                } 
     
    386386                IGUIElement currentGUIElement; 
    387387                try { 
    388                     // 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 
    389388                    currentGUIElement = guiModel.integratePath 
    390389                        (currentGuiElementPath, GUIElementFactory.getInstance()); 
     
    628627        try 
    629628        { 
    630             String pattern = "([\\w$\\.]*)\\[.*\\]"; 
    631  
    632             Matcher matcher1 = Pattern.compile(pattern).matcher(toStringValue); 
    633  
    634             if (!matcher1.find()) 
     629            // match the following: <type>[<parameters>] 
     630            String pattern = "([\\w$\\.]*)\\[(.*)\\]"; 
     631            Matcher matcher = Pattern.compile(pattern).matcher(toStringValue); 
     632 
     633            if (!matcher.find()) 
    635634            { 
    636635                throw new IllegalArgumentException 
     
    638637            } 
    639638 
    640             String type = matcher1.group(1); 
    641  
    642             currentGuiElementSpec.setName("unknown"); 
     639            String type = matcher.group(1); 
     640             
     641            // match the following: <parameter>|, 
     642            // where <parameter> := <digitValue>|<value>|<key>"="<value> 
     643            pattern = "([\\w$@=\\.]*)|,"; 
     644 
     645            matcher = Pattern.compile(pattern).matcher(matcher.group(2)); 
     646             
     647            float elementHash = -1; 
     648             
     649            pattern = "(([\\d]*)|([\\w$]*)|(([\\w$@\\.]*)=([\\w$@\\.]*)))\\z"; 
     650            Pattern valuePattern = Pattern.compile(pattern); 
     651             
     652            while (matcher.find()) { 
     653                Matcher valueMatcher = valuePattern.matcher(matcher.group(1)); 
     654                if (valueMatcher.find()) { 
     655                    if ((valueMatcher.group(2) != null) && (!"".equals(valueMatcher.group(2)))) { 
     656                        // found digit value. Those in combination usually denote the position 
     657                        // of the GUI element. So calculate an element has out of them 
     658                        elementHash += Integer.parseInt(valueMatcher.group(2)); 
     659                    } 
     660                    else if ((valueMatcher.group(5) != null) && 
     661                             (!"".equals(valueMatcher.group(5))) && 
     662                             (valueMatcher.group(6) != null) && 
     663                             (!"".equals(valueMatcher.group(6)))) 
     664                    { 
     665                        // found a key value pair. Get some of them and integrate them into the hash  
     666                        String key = valueMatcher.group(5); 
     667                         
     668                        if ("alignmentX".equals(key) || "alignmentY".equals(key)) { 
     669                            elementHash += Float.parseFloat(valueMatcher.group(6)); 
     670                        } 
     671                    } 
     672                } 
     673            } 
     674 
     675            currentGuiElementSpec.setName("unknown(" + ((int) elementHash) + ")"); 
    643676            currentGuiElementSpec.setType(type); 
    644             currentGuiElementSpec.setIcon("unknown"); 
    645677            currentGuiElementSpec.setIndex(-1); 
    646             currentGuiElementSpec.setElementHash("-1"); 
     678            currentGuiElementSpec.setElementHash((int) elementHash); 
    647679        } 
    648680        catch (Exception e) 
     
    651683        } 
    652684    } 
    653  
     685     
    654686    /** 
    655687     * <p> 
     
    658690     * </p> 
    659691     */ 
    660     private void setupDefaultEventFilter() { 
     692    /*private void setupDefaultEventFilter() { 
    661693        eventFilter = new HashSet<JFCEventId>(); 
    662694        eventFilter.add(JFCEventId.MOUSE_PRESSED); 
    663695        eventFilter.add(JFCEventId.MOUSE_RELEASED); 
    664696        eventFilter.add(JFCEventId.FOCUS_GAINED); 
    665     } 
     697    }*/ 
    666698 
    667699} 
Note: See TracChangeset for help on using the changeset viewer.