Ignore:
Timestamp:
10/20/15 10:11:04 (9 years ago)
Author:
pharms
Message:
  • finalized smell detection for phd thesis
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-core-usability/src/main/java/de/ugoe/cs/autoquest/usability/MisleadingClickCueRule.java

    r1918 r2042  
    2424import de.ugoe.cs.autoquest.eventcore.gui.MouseClick; 
    2525import de.ugoe.cs.autoquest.eventcore.gui.MouseDoubleClick; 
     26import de.ugoe.cs.autoquest.eventcore.guimodel.IButton; 
    2627import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement; 
    2728import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView; 
     
    6566                                   UsabilityEvaluationResult results) 
    6667    { 
    67         for (Map.Entry<IGUIView, Map<IGUIElement, Integer>> uselessClickCounter : 
     68        for (Map.Entry<IGUIElement, Map<IGUIView, Integer>> uselessClickCounter : 
    6869                statistics.getUselessClickCounters().entrySet()) 
    6970        { 
    70             for (Map.Entry<IGUIElement, Integer> counter : uselessClickCounter.getValue().entrySet()) 
    71             { 
    72                 int uselessClicks = counter.getValue(); 
    73                 int noOfViewDisplays = statistics.getViewOpenedCount(uselessClickCounter.getKey()); 
    74  
    75                 int ratio = Math.min(1000, 1000 * uselessClicks / noOfViewDisplays); 
    76  
    77                 UsabilitySmellIntensity intensity = 
    78                     UsabilitySmellIntensity.getIntensity(ratio, uselessClicks, -1); 
    79  
    80                 if (intensity != null) { 
    81                     Map<String, Object> parameters = new HashMap<String, Object>(); 
    82                     parameters.put("noOfViewDisplays", noOfViewDisplays); 
    83                     parameters.put("uselessClicks", uselessClicks); 
    84                     parameters.put("element", counter.getKey()); 
    85                     parameters.put("view", uselessClickCounter.getKey()); 
    86  
    87                     results.addSmell 
    88                         (intensity, UsabilitySmellDescription.MISLEADING_CLICK_CUE, parameters); 
    89                 } 
     71            int uselessClicks = 0; 
     72            int noOfViewDisplays = 0; 
     73             
     74            for (Map.Entry<IGUIView, Integer> counter : uselessClickCounter.getValue().entrySet()) { 
     75                uselessClicks += counter.getValue(); 
     76                noOfViewDisplays += statistics.getViewOpenedCount(counter.getKey()); 
     77            } 
     78 
     79            int ratio = Math.min(1000, 1000 * uselessClicks / noOfViewDisplays); 
     80 
     81            UsabilitySmellIntensity intensity = 
     82                UsabilitySmellIntensity.getIntensity(ratio, uselessClicks, -1); 
     83 
     84            if (intensity != null) { 
     85                Map<String, Object> parameters = new HashMap<String, Object>(); 
     86                parameters.put("noOfViewDisplays", noOfViewDisplays); 
     87                parameters.put("uselessClicks", uselessClicks); 
     88                parameters.put("element", uselessClickCounter.getKey()); 
     89 
     90                results.addSmell 
     91                    (intensity, UsabilitySmellDescription.MISLEADING_CLICK_CUE, parameters); 
    9092            } 
    9193        } 
     
    155157            (target instanceof IText)) 
    156158        { 
    157             return true; 
     159            // check if the parent is a button 
     160            IGUIElement parent = target; 
     161            while ((parent != null) && !(parent instanceof IButton)) { 
     162                parent = parent.getParent(); 
     163            } 
     164             
     165            return !(parent instanceof IButton); 
    158166        } 
    159167        else { 
     
    171179         
    172180        /** */ 
    173         private Map<IGUIView, Map<IGUIElement, Integer>> uselessClickCounters = new HashMap<>(); 
     181        private Map<IGUIElement, Map<IGUIView, Integer>> uselessClickCounters = new HashMap<>(); 
    174182 
    175183        /** 
     
    199207         */ 
    200208        private void addUselessClick(IEventTaskInstance eventTaskInstance) { 
    201             Map<IGUIElement, Integer> counterMap = uselessClickCounters.get 
    202                 (((IGUIElement) eventTaskInstance.getEvent().getTarget()).getView()); 
     209            IGUIElement target = (IGUIElement) eventTaskInstance.getEvent().getTarget(); 
     210             
     211            Map<IGUIView, Integer> counterMap = uselessClickCounters.get(target); 
    203212             
    204213            if (counterMap == null) { 
    205214                counterMap = new HashMap<>(); 
    206                 uselessClickCounters.put 
    207                     (((IGUIElement) eventTaskInstance.getEvent().getTarget()).getView(), counterMap); 
    208             } 
    209              
    210             Integer counter = counterMap.get(eventTaskInstance.getEvent().getTarget()); 
     215                uselessClickCounters.put(target, counterMap); 
     216            } 
     217             
     218            Integer counter = counterMap.get(target.getView()); 
    211219             
    212220            if (counter == null) { 
    213                 counterMap.put((IGUIElement) eventTaskInstance.getEvent().getTarget(), 1); 
     221                counterMap.put(target.getView(), 1); 
    214222            } 
    215223            else { 
    216                 counterMap.put((IGUIElement) eventTaskInstance.getEvent().getTarget(), counter + 1); 
    217             } 
    218         } 
    219  
    220         /** 
    221          * 
    222          */ 
    223         private Map<IGUIView, Map<IGUIElement, Integer>> getUselessClickCounters() { 
     224                counterMap.put(target.getView(), counter + 1); 
     225            } 
     226        } 
     227 
     228        /** 
     229         * 
     230         */ 
     231        private Map<IGUIElement, Map<IGUIView, Integer>> getUselessClickCounters() { 
    224232            return uselessClickCounters; 
    225233        } 
Note: See TracChangeset for help on using the changeset viewer.