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/DefaultValueRule.java

    r1941 r2042  
    2929 
    3030import de.ugoe.cs.autoquest.eventcore.Event; 
     31import de.ugoe.cs.autoquest.eventcore.gui.MouseClick; 
    3132import de.ugoe.cs.autoquest.eventcore.gui.TextInput; 
    3233import de.ugoe.cs.autoquest.eventcore.gui.ValueSelection; 
    3334import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel; 
    3435import de.ugoe.cs.autoquest.eventcore.guimodel.ICheckBox; 
     36import de.ugoe.cs.autoquest.eventcore.guimodel.IComboBox; 
    3537import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement; 
    3638import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec; 
     
    136138            maxObserved = Math.max(maxObserved, selectedValue.getValue()); 
    137139             
    138             if (mostOftenSelected.size() > 0) { 
    139                 ListIterator<Object> iterator = mostOftenSelected.listIterator(); 
    140                 while (iterator.hasNext()) { 
    141                     if (selectedValues.get(iterator.next()) < selectedValue.getValue()) { 
    142                         iterator.previous(); 
    143                         iterator.add(selectedValue.getKey()); 
    144                      
    145                         while (mostOftenSelected.size() > 5) { 
    146                             mostOftenSelected.removeLast(); 
    147                         } 
    148                      
    149                         break; 
    150                     } 
    151                 } 
    152             } 
    153             else { 
     140            boolean added = false; 
     141            ListIterator<Object> iterator = mostOftenSelected.listIterator(); 
     142            while (iterator.hasNext()) { 
     143                if (selectedValues.get(iterator.next()) < selectedValue.getValue()) { 
     144                    iterator.previous(); 
     145                    iterator.add(selectedValue.getKey()); 
     146                    added = true; 
     147                    break; 
     148                } 
     149            } 
     150             
     151            if (!added) { 
    154152                mostOftenSelected.add(selectedValue.getKey()); 
     153            } 
     154             
     155            while (mostOftenSelected.size() > 5) { 
     156                mostOftenSelected.removeLast(); 
    155157            } 
    156158        } 
     
    163165        } 
    164166         
    165         if ((expected.length == 1) || 
     167        if ((expected.length > 1) && 
    166168            (new ChiSquareTest().chiSquareTest(expected, observed, 0.05))) 
    167169        { 
     
    218220     */ 
    219221    private boolean isValueSelection(ITaskInstance instance) { 
    220         return (instance instanceof IEventTaskInstance) && 
    221             ((((IEventTaskInstance) instance).getEvent().getType() instanceof TextInput) || 
    222              (((IEventTaskInstance) instance).getEvent().getType() instanceof ValueSelection)); 
     222        if (instance instanceof IEventTaskInstance) { 
     223            Event event = ((IEventTaskInstance) instance).getEvent(); 
     224         
     225            if ((event.getType() instanceof TextInput) || 
     226                (event.getType() instanceof ValueSelection)) 
     227            { 
     228                return true; 
     229            } 
     230             
     231            if (("JFC".equals(event.getTarget().getPlatform())) && 
     232                (event.getTarget() instanceof ICheckBox) && 
     233                (event.getType() instanceof MouseClick)) 
     234            { 
     235                return true; 
     236            } 
     237        } 
     238         
     239        return false; 
    223240    } 
    224241 
     
    439456                        ((ValueSelection<?>) valueChange.getEvent().getType()).getSelectedValue(); 
    440457                     
    441                     if ((target instanceof IRadioButton) || (target instanceof ICheckBox)) { 
     458                    if ((target.target instanceof IRadioButton) || 
     459                        (target.target instanceof ICheckBox)) 
     460                    { 
    442461                        selectedValue = selectedValue + " (" + target + ")"; 
     462                    } 
     463                    else if (target.target instanceof IComboBox) { 
     464                        if (selectedValue == null) { 
     465                            // this may have happened due to the recording issue that selected 
     466                            // values of combo boxes are not logged correctly. In this case, 
     467                            // pretend to have the a random value selected 
     468                            selectedValue = "randomValueDueToRecordingBug_" + Math.random();  
     469                        } 
     470                    } 
     471                } 
     472                else if (valueChange.getEvent().getType() instanceof MouseClick) { 
     473                    if ((target.target instanceof IRadioButton) || 
     474                        (target.target instanceof ICheckBox)) 
     475                    { 
     476                        selectedValue = target.toString(); 
     477                    } 
     478                    else { 
     479                        throw new IllegalStateException("the implementation needs to be extended " + 
     480                                                        "to fully support clicks as value changes"); 
    443481                    } 
    444482                } 
Note: See TracChangeset for help on using the changeset viewer.