Changeset 557 for trunk/quest-core-tasktrees/src/main/java/de/ugoe/cs/quest/tasktrees/temporalrelation/DefaultMouseClickReductionRule.java
- Timestamp:
- 08/17/12 08:33:29 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/quest-core-tasktrees/src/main/java/de/ugoe/cs/quest/tasktrees/temporalrelation/DefaultMouseClickReductionRule.java
r451 r557 1 //-------------------------------------------------------------------------------------------------2 1 // Module : $RCSfile: DefaultSequenceDetectionRule.java,v $ 3 2 // Version : $Revision: 0.0 $ $Author: patrick $ $Date: 18.03.2012 $ … … 5 4 // Creation : 2012 by patrick 6 5 // Copyright : Patrick Harms, 2012 7 //------------------------------------------------------------------------------------------------- 6 8 7 package de.ugoe.cs.quest.tasktrees.temporalrelation; 9 8 10 import de.ugoe.cs.quest.eventcore. guimodel.GUIElement;11 import de.ugoe.cs.quest.eventcore. userinteraction.MouseButtonDown;12 import de.ugoe.cs.quest.eventcore. userinteraction.MouseButtonInteraction;13 import de.ugoe.cs.quest.eventcore. userinteraction.MouseButtonUp;14 import de.ugoe.cs.quest.eventcore. userinteraction.MouseClick;15 import de.ugoe.cs.quest.tasktrees.treeifc.I nteractionTask;16 import de.ugoe.cs.quest.tasktrees.treeifc. Sequence;17 import de.ugoe.cs.quest.tasktrees.treeifc. TaskTreeBuilder;18 import de.ugoe.cs.quest.tasktrees.treeifc. TaskTreeNode;19 import de.ugoe.cs.quest.tasktrees.treeifc. TaskTreeNodeFactory;9 import de.ugoe.cs.quest.eventcore.IEventTarget; 10 import de.ugoe.cs.quest.eventcore.gui.MouseButtonDown; 11 import de.ugoe.cs.quest.eventcore.gui.MouseButtonInteraction; 12 import de.ugoe.cs.quest.eventcore.gui.MouseButtonUp; 13 import de.ugoe.cs.quest.eventcore.gui.MouseClick; 14 import de.ugoe.cs.quest.tasktrees.treeifc.IEventTask; 15 import de.ugoe.cs.quest.tasktrees.treeifc.ISequence; 16 import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeBuilder; 17 import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeNode; 18 import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeNodeFactory; 20 19 21 //-------------------------------------------------------------------------------------------------22 20 /** 23 21 * TODO comment … … 26 24 * @author 2012, last modified by $Author: patrick$ 27 25 */ 28 //------------------------------------------------------------------------------------------------- 29 public class DefaultMouseClickReductionRule implements TemporalRelationshipRule 30 { 26 public class DefaultMouseClickReductionRule implements TemporalRelationshipRule { 31 27 32 //----------------------------------------------------------------------------------------------- 33 /* (non-Javadoc) 34 * @see de.ugoe.cs.tasktree.temporalrelation.TemporalRelationshipRule#apply(TaskTreeNode, TaskTreeBuilder, TaskTreeNodeFactory) 35 */ 36 //----------------------------------------------------------------------------------------------- 37 @Override 38 public RuleApplicationResult apply(TaskTreeNode parent, 39 TaskTreeBuilder builder, 40 TaskTreeNodeFactory nodeFactory, 41 boolean finalize) 42 { 43 if (!(parent instanceof Sequence)) 28 /* 29 * (non-Javadoc) 30 * 31 * @see de.ugoe.cs.tasktree.temporalrelation.TemporalRelationshipRule#apply(TaskTreeNode, 32 * TaskTreeBuilder, TaskTreeNodeFactory) 33 */ 34 @Override 35 public RuleApplicationResult apply(ITaskTreeNode parent, 36 ITaskTreeBuilder builder, 37 ITaskTreeNodeFactory nodeFactory, 38 boolean finalize) 44 39 { 45 return null; 40 if (!(parent instanceof ISequence)) { 41 return null; 42 } 43 44 RuleApplicationResult result = new RuleApplicationResult(); 45 46 int index = 0; 47 while (index < parent.getChildren().size() - 2) // -2 because we don't need to go to the end 48 { 49 if (mouseClickSequenceFound(parent.getChildren().get(index), 50 parent.getChildren().get(index + 1), 51 parent.getChildren().get(index + 2))) 52 { 53 builder.removeChild((ISequence) parent, index); 54 builder.removeChild((ISequence) parent, index); 55 result.setRuleApplicationStatus(RuleApplicationStatus.RULE_APPLICATION_FINISHED); 56 return result; 57 } 58 else if 59 ((parent.getChildren().get(index) instanceof ISequence) && 60 (parent.getChildren().get(index).getChildren().size() == 2) && 61 (mouseClickSequenceFound(parent.getChildren().get(index).getChildren().get(0), 62 parent.getChildren().get(index).getChildren().get(1), 63 parent.getChildren().get(index + 1)))) 64 { 65 builder.removeChild((ISequence) parent, index); 66 result.setRuleApplicationStatus(RuleApplicationStatus.RULE_APPLICATION_FINISHED); 67 return result; 68 } 69 70 index++; 71 } 72 73 return result; 46 74 } 47 48 RuleApplicationResult result = new RuleApplicationResult();49 50 int index = 0;51 while (index < parent.getChildren().size() - 2) // -2 because we don't need to go to the end52 {53 if (mouseClickSequenceFound(parent.getChildren().get(index),54 parent.getChildren().get(index + 1),55 parent.getChildren().get(index + 2)))56 {57 builder.removeChild((Sequence) parent, index);58 builder.removeChild((Sequence) parent, index);59 result.setRuleApplicationStatus(RuleApplicationStatus.RULE_APPLICATION_FINISHED);60 return result;61 }62 else if ((parent.getChildren().get(index) instanceof Sequence) &&63 (parent.getChildren().get(index).getChildren().size() == 2) &&64 (mouseClickSequenceFound(parent.getChildren().get(index).getChildren().get(0),65 parent.getChildren().get(index).getChildren().get(1),66 parent.getChildren().get(index + 1))))67 {68 builder.removeChild((Sequence) parent, index);69 result.setRuleApplicationStatus(RuleApplicationStatus.RULE_APPLICATION_FINISHED);70 return result;71 }72 73 index++;74 }75 76 return result;77 }78 75 79 //----------------------------------------------------------------------------------------------- 80 /** 76 /** 81 77 * 82 78 */ 83 //----------------------------------------------------------------------------------------------- 84 private boolean mouseClickSequenceFound(TaskTreeNode mouseButtonDown, 85 TaskTreeNode mouseButtonUp, 86 TaskTreeNode mouseClick) 87 { 88 // check the first in a row of three for validity 89 if (!(mouseButtonDown instanceof InteractionTask)) 79 private boolean mouseClickSequenceFound(ITaskTreeNode mouseButtonDown, 80 ITaskTreeNode mouseButtonUp, 81 ITaskTreeNode mouseClick) 90 82 { 91 return false; 83 // check the first in a row of three for validity 84 if (!(mouseButtonDown instanceof IEventTask)) { 85 return false; 86 } 87 88 IEventTarget eventTarget = ((IEventTask) mouseButtonDown).getEventTarget(); 89 90 if (!(((IEventTask) mouseButtonDown).getEventType() instanceof MouseButtonDown)) { 91 return false; 92 } 93 94 MouseButtonInteraction.Button button = 95 ((MouseButtonDown) ((IEventTask) mouseButtonDown).getEventType()).getButton(); 96 97 // check the second node for validity 98 if (!(mouseButtonUp instanceof IEventTask)) { 99 return false; 100 } 101 102 if (!eventTarget.equals(((IEventTask) mouseButtonUp).getEventTarget())) { 103 return false; 104 } 105 106 if (!(((IEventTask) mouseButtonUp).getEventType() instanceof MouseButtonUp)) { 107 return false; 108 } 109 110 if (!button.equals(((MouseButtonUp) ((IEventTask) mouseButtonUp).getEventType()) 111 .getButton())) 112 { 113 return false; 114 } 115 116 // check the third node for validity 117 if (!(mouseClick instanceof IEventTask)) { 118 return false; 119 } 120 121 if (!eventTarget.equals(((IEventTask) mouseClick).getEventTarget())) { 122 return false; 123 } 124 125 if (!(((IEventTask) mouseClick).getEventType() instanceof MouseClick)) { 126 return false; 127 } 128 129 if (!button.equals(((MouseClick) ((IEventTask) mouseClick).getEventType()).getButton())) { 130 return false; 131 } 132 133 return true; 92 134 } 93 94 GUIElement guiElement = ((InteractionTask) mouseButtonDown).getGUIElement();95 96 if (!(((InteractionTask) mouseButtonDown).getInteraction() instanceof MouseButtonDown))97 {98 return false;99 }100 101 MouseButtonInteraction.Button button =102 ((MouseButtonDown) ((InteractionTask) mouseButtonDown).getInteraction()).getButton();103 104 105 // check the second node for validity106 if (!(mouseButtonUp instanceof InteractionTask))107 {108 return false;109 }110 111 if (!guiElement.equals(((InteractionTask) mouseButtonUp).getGUIElement()))112 {113 return false;114 }115 116 if (!(((InteractionTask) mouseButtonUp).getInteraction() instanceof MouseButtonUp))117 {118 return false;119 }120 121 if (!button.equals122 (((MouseButtonUp) ((InteractionTask) mouseButtonUp).getInteraction()).getButton()))123 {124 return false;125 }126 127 128 // check the third node for validity129 if (!(mouseClick instanceof InteractionTask))130 {131 return false;132 }133 134 if (!guiElement.equals(((InteractionTask) mouseClick).getGUIElement()))135 {136 return false;137 }138 139 if (!(((InteractionTask) mouseClick).getInteraction() instanceof MouseClick))140 {141 return false;142 }143 144 if (!button.equals(((MouseClick) ((InteractionTask) mouseClick).getInteraction()).getButton()))145 {146 return false;147 }148 149 return true;150 }151 135 152 136 }
Note: See TracChangeset
for help on using the changeset viewer.