Ignore:
Timestamp:
09/10/12 16:57:52 (12 years ago)
Author:
pharms
Message:
  • grouping is now also possible for complex children such as iterations or sequences, if all of their children operate on the same GUI element. In this case they can be grouped with other task tree nodes operating on the same GUI element.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/quest-core-tasktrees/src/main/java/de/ugoe/cs/quest/tasktrees/temporalrelation/DefaultEventTargetSequenceDetectionRule.java

    r798 r804  
    5151                } 
    5252                else { 
    53                     handleEventTargetSequence(parent, startingIndex, index - 1, builder, 
    54                                               nodeFactory, result); 
     53                    int endIndex = index - 1; 
     54                     
     55                    // only reduce to a sequence, if it is not a sequence with only one child 
     56                    // or if this child is not a sequence itself 
     57                    if ((startingIndex != endIndex) || 
     58                        (!(parent.getChildren().get(startingIndex) instanceof ISequence))) 
     59                    { 
     60                        handleEventTargetSequence 
     61                            (parent, startingIndex, endIndex, builder, nodeFactory, result); 
    5562 
    56                     return result; 
     63                        result.setRuleApplicationStatus 
     64                            (RuleApplicationStatus.RULE_APPLICATION_FINISHED); 
     65                        return result; 
     66                    } 
     67                    else { 
     68                        // here a new sequence on a new target begins 
     69                        startingIndex = index; 
     70                        currentEventTarget = eventTarget; 
     71                    } 
    5772                } 
    5873            } 
     
    6277 
    6378        if (startingIndex > -1) { 
    64             if (finalize && (startingIndex > 0)) { 
    65                 handleEventTargetSequence(parent, startingIndex, parent.getChildren().size() - 1, 
    66                                           builder, nodeFactory, result); 
     79            int endIndex = parent.getChildren().size() - 1; 
     80             
     81            if (finalize) { 
     82                // only reduce to a sequence, if it is not a sequence with only one child 
     83                // or if this child is not a sequence itself 
     84                if ((startingIndex > 0) && 
     85                    ((startingIndex != endIndex) || 
     86                     (!(parent.getChildren().get(startingIndex) instanceof ISequence)))) 
     87                { 
     88                    handleEventTargetSequence 
     89                        (parent, startingIndex, endIndex, builder, nodeFactory, result); 
     90                 
     91                    result.setRuleApplicationStatus(RuleApplicationStatus.RULE_APPLICATION_FINISHED); 
     92                } 
    6793            } 
    6894            else { 
     
    85111        } 
    86112        else { 
    87             return null; 
     113            IEventTarget commonTarget = null; 
     114             
     115            for (ITaskTreeNode child : node.getChildren()) { 
     116                if (commonTarget == null) { 
     117                    commonTarget = determineEventTarget(child); 
     118                } 
     119                else { 
     120                    if (!commonTarget.equals(determineEventTarget(child))) { 
     121                        return null; 
     122                    } 
     123                } 
     124            } 
     125             
     126            return commonTarget; 
    88127        } 
    89128    } 
     
    110149 
    111150        result.addNewlyCreatedParentNode(sequence); 
    112         result.setRuleApplicationStatus(RuleApplicationStatus.RULE_APPLICATION_FINISHED); 
    113151    } 
    114152 
Note: See TracChangeset for help on using the changeset viewer.