Changeset 1146 for trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/GUIEventTaskComparisonRule.java
- Timestamp:
- 04/04/13 16:06:07 (11 years ago)
- Location:
- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality
- Files:
-
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/taskequality/GUIEventTaskComparisonRule.java
r1125 r1146 13 13 // limitations under the License. 14 14 15 package de.ugoe.cs.autoquest.tasktrees. nodeequality;15 package de.ugoe.cs.autoquest.tasktrees.taskequality; 16 16 17 17 import de.ugoe.cs.autoquest.eventcore.IEventTarget; … … 42 42 import de.ugoe.cs.autoquest.eventcore.guimodel.IToolTip; 43 43 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 44 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask TreeNode;44 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 45 45 46 46 /** … … 58 58 * @author Patrick Harms 59 59 */ 60 public class GUIEventTaskComparisonRule implements NodeComparisonRule {60 public class GUIEventTaskComparisonRule implements TaskComparisonRule { 61 61 62 62 /* (non-Javadoc) 63 * @see NodeComparisonRule#isApplicable(ITask TreeNode, ITaskTreeNode)63 * @see NodeComparisonRule#isApplicable(ITask, ITask) 64 64 */ 65 65 @Override 66 public boolean isApplicable(ITask TreeNode node1, ITaskTreeNode node2) {66 public boolean isApplicable(ITask task1, ITask task2) { 67 67 return 68 (( node1 instanceof IEventTask) && (node2 instanceof IEventTask) &&69 (((IEventTask) node1).getEventType() instanceof IInteraction) &&70 (((IEventTask) node2).getEventType() instanceof IInteraction));68 ((task1 instanceof IEventTask) && (task2 instanceof IEventTask) && 69 (((IEventTask) task1).getEventType() instanceof IInteraction) && 70 (((IEventTask) task2).getEventType() instanceof IInteraction)); 71 71 } 72 72 73 73 /* (non-Javadoc) 74 * @see NodeComparisonRule#areLexicallyEqual(ITask TreeNode, ITaskTreeNode)74 * @see NodeComparisonRule#areLexicallyEqual(ITask, ITask) 75 75 */ 76 76 @Override 77 public boolean areLexicallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {78 NodeEquality equality = getEquality(node1, node2, NodeEquality.LEXICALLY_EQUAL);79 return (equality != null) && (equality.isAtLeast( NodeEquality.LEXICALLY_EQUAL));77 public boolean areLexicallyEqual(ITask task1, ITask task2) { 78 TaskEquality equality = getEquality(task1, task2, TaskEquality.LEXICALLY_EQUAL); 79 return (equality != null) && (equality.isAtLeast(TaskEquality.LEXICALLY_EQUAL)); 80 80 } 81 81 82 82 /* (non-Javadoc) 83 * @see NodeComparisonRule#areSyntacticallyEqual(ITask TreeNode, ITaskTreeNode)83 * @see NodeComparisonRule#areSyntacticallyEqual(ITask, ITask) 84 84 */ 85 85 @Override 86 public boolean areSyntacticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {87 NodeEquality equality = getEquality(node1, node2, NodeEquality.SYNTACTICALLY_EQUAL);88 return (equality != null) && (equality.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL));86 public boolean areSyntacticallyEqual(ITask task1, ITask task2) { 87 TaskEquality equality = getEquality(task1, task2, TaskEquality.SYNTACTICALLY_EQUAL); 88 return (equality != null) && (equality.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)); 89 89 } 90 90 91 91 /* (non-Javadoc) 92 * @see NodeComparisonRule#areSemanticallyEqual(ITask TreeNode, ITaskTreeNode)92 * @see NodeComparisonRule#areSemanticallyEqual(ITask, ITask) 93 93 */ 94 94 @Override 95 public boolean areSemanticallyEqual(ITask TreeNode node1, ITaskTreeNode node2) {96 NodeEquality equality = getEquality(node1, node2, NodeEquality.SEMANTICALLY_EQUAL);97 return (equality != null) && (equality.isAtLeast( NodeEquality.SEMANTICALLY_EQUAL));95 public boolean areSemanticallyEqual(ITask task1, ITask task2) { 96 TaskEquality equality = getEquality(task1, task2, TaskEquality.SEMANTICALLY_EQUAL); 97 return (equality != null) && (equality.isAtLeast(TaskEquality.SEMANTICALLY_EQUAL)); 98 98 } 99 99 100 100 /* (non-Javadoc) 101 * @see NodeComparisonRule#compare(ITask TreeNode, ITaskTreeNode)101 * @see NodeComparisonRule#compare(ITask, ITask) 102 102 */ 103 103 @Override 104 public NodeEquality compare(ITaskTreeNode node1, ITaskTreeNode node2) { 105 return getEquality(node1, node2, null); 106 } 107 108 /** 109 * 110 */ 111 private NodeEquality getEquality(ITaskTreeNode node1, 112 ITaskTreeNode node2, 113 NodeEquality requiredEqualityLevel) 114 { 115 IEventTask task1 = (IEventTask) node1; 116 IEventTask task2 = (IEventTask) node2; 117 118 if (!task1.getEventTarget().equals(task2.getEventTarget())) { 119 return NodeEquality.UNEQUAL; 120 } 121 122 IInteraction interaction1 = (IInteraction) task1.getEventType(); 123 IInteraction interaction2 = (IInteraction) task2.getEventType(); 104 public TaskEquality compare(ITask task1, ITask task2) { 105 return getEquality(task1, task2, null); 106 } 107 108 /** 109 * 110 */ 111 private TaskEquality getEquality(ITask task1, ITask task2, TaskEquality requiredEqualityLevel) { 112 IEventTask eventTask1 = (IEventTask) task1; 113 IEventTask eventTask2 = (IEventTask) task2; 114 115 if (!eventTask1.getEventTarget().equals(eventTask2.getEventTarget())) { 116 return TaskEquality.UNEQUAL; 117 } 118 119 IInteraction interaction1 = (IInteraction) eventTask1.getEventType(); 120 IInteraction interaction2 = (IInteraction) eventTask2.getEventType(); 124 121 125 122 return compareInteractions 126 (interaction1, interaction2, task1.getEventTarget(), requiredEqualityLevel);123 (interaction1, interaction2, eventTask1.getEventTarget(), requiredEqualityLevel); 127 124 } 128 125 … … 145 142 * @return as described 146 143 */ 147 private NodeEquality compareInteractions(IInteraction interaction1,144 private TaskEquality compareInteractions(IInteraction interaction1, 148 145 IInteraction interaction2, 149 146 IEventTarget eventTarget, 150 NodeEquality equalityLevel)151 { 152 NodeEquality level = equalityLevel;147 TaskEquality equalityLevel) 148 { 149 TaskEquality level = equalityLevel; 153 150 154 151 if (level == null) { 155 level = NodeEquality.LEXICALLY_EQUAL;152 level = TaskEquality.LEXICALLY_EQUAL; 156 153 } 157 154 158 155 if (interaction1 == interaction2) { 159 return NodeEquality.LEXICALLY_EQUAL;156 return TaskEquality.LEXICALLY_EQUAL; 160 157 } 161 158 else if ((interaction1 instanceof KeyInteraction) && … … 186 183 } 187 184 else if (interaction1.equals(interaction2)) { 188 return NodeEquality.LEXICALLY_EQUAL;185 return TaskEquality.LEXICALLY_EQUAL; 189 186 } 190 187 else { 191 return NodeEquality.UNEQUAL;188 return TaskEquality.UNEQUAL; 192 189 } 193 190 } … … 204 201 * @return 205 202 */ 206 private NodeEquality compareKeyInteractions(KeyInteraction interaction1,203 private TaskEquality compareKeyInteractions(KeyInteraction interaction1, 207 204 KeyInteraction interaction2, 208 NodeEquality equalityLevel)205 TaskEquality equalityLevel) 209 206 { 210 207 if (((interaction1 instanceof KeyPressed) && (interaction2 instanceof KeyPressed)) || … … 212 209 ((interaction1 instanceof KeyTyped) && (interaction2 instanceof KeyTyped))) 213 210 { 214 if ((equalityLevel.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL)) &&211 if ((equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)) && 215 212 (interaction1.getKey() == interaction2.getKey())) 216 213 { 217 return NodeEquality.LEXICALLY_EQUAL;214 return TaskEquality.LEXICALLY_EQUAL; 218 215 } 219 216 else { 220 return NodeEquality.SEMANTICALLY_EQUAL;221 } 222 } 223 224 return NodeEquality.UNEQUAL;217 return TaskEquality.SEMANTICALLY_EQUAL; 218 } 219 } 220 221 return TaskEquality.UNEQUAL; 225 222 } 226 223 … … 236 233 * @return as described 237 234 */ 238 private NodeEquality compareMouseDragAndDrops(MouseDragAndDrop interaction1,235 private TaskEquality compareMouseDragAndDrops(MouseDragAndDrop interaction1, 239 236 MouseDragAndDrop interaction2, 240 NodeEquality equalityLevel)237 TaskEquality equalityLevel) 241 238 { 242 239 if (interaction1.getButton() != interaction2.getButton()) { 243 return NodeEquality.UNEQUAL;244 } 245 246 if (equalityLevel.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL)) {240 return TaskEquality.UNEQUAL; 241 } 242 243 if (equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)) { 247 244 int x1 = interaction1.getX(); 248 245 int x1Start = interaction1.getXStart(); … … 255 252 256 253 if ((x1Start == x2Start) && (x1 == x2) && (y1Start == y2Start) && (y1 == y2)) { 257 return NodeEquality.LEXICALLY_EQUAL;258 } 259 } 260 261 return NodeEquality.SEMANTICALLY_EQUAL;254 return TaskEquality.LEXICALLY_EQUAL; 255 } 256 } 257 258 return TaskEquality.SEMANTICALLY_EQUAL; 262 259 } 263 260 … … 279 276 * @return as described 280 277 */ 281 private NodeEquality compareMouseButtonInteractions(MouseButtonInteraction interaction1,278 private TaskEquality compareMouseButtonInteractions(MouseButtonInteraction interaction1, 282 279 MouseButtonInteraction interaction2, 283 280 IEventTarget eventTarget, 284 NodeEquality equalityLevel)281 TaskEquality equalityLevel) 285 282 { 286 283 boolean coordinatesMatch = true; … … 293 290 } 294 291 else if (interaction1.getButton() != interaction2.getButton()) { 295 return NodeEquality.UNEQUAL;296 } 297 else if (equalityLevel.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL) &&292 return TaskEquality.UNEQUAL; 293 } 294 else if (equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL) && 298 295 clickCoordinatesMakeLexicalDifference(eventTarget)) 299 296 { … … 319 316 { 320 317 if (coordinatesMatch) { 321 return NodeEquality.LEXICALLY_EQUAL;318 return TaskEquality.LEXICALLY_EQUAL; 322 319 } 323 320 else { 324 return NodeEquality.SEMANTICALLY_EQUAL;325 } 326 } 327 328 return NodeEquality.UNEQUAL;321 return TaskEquality.SEMANTICALLY_EQUAL; 322 } 323 } 324 325 return TaskEquality.UNEQUAL; 329 326 } 330 327 … … 346 343 * @return as described 347 344 */ 348 private NodeEquality compareScrolls(Scroll interaction1,345 private TaskEquality compareScrolls(Scroll interaction1, 349 346 Scroll interaction2, 350 NodeEquality equalityLevel)351 { 352 if (equalityLevel.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL)) {347 TaskEquality equalityLevel) 348 { 349 if (equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)) { 353 350 int x1 = interaction1.getXPosition(); 354 351 int x2 = interaction2.getXPosition(); … … 357 354 358 355 if ((x1 == x2) && (y1 == y2)) { 359 return NodeEquality.LEXICALLY_EQUAL;360 } 361 } 362 363 return NodeEquality.SEMANTICALLY_EQUAL;356 return TaskEquality.LEXICALLY_EQUAL; 357 } 358 } 359 360 return TaskEquality.SEMANTICALLY_EQUAL; 364 361 } 365 362 … … 377 374 * @return as described 378 375 */ 379 private NodeEquality compareTextInputs(TextInput interaction1,376 private TaskEquality compareTextInputs(TextInput interaction1, 380 377 TextInput interaction2, 381 NodeEquality equalityLevel)378 TaskEquality equalityLevel) 382 379 { 383 380 switch (equalityLevel) { 384 381 case LEXICALLY_EQUAL: 385 382 if (interaction1.getTextInputEvents().equals(interaction2.getTextInputEvents())) { 386 return NodeEquality.LEXICALLY_EQUAL;383 return TaskEquality.LEXICALLY_EQUAL; 387 384 } 388 385 // fall through 389 386 case SYNTACTICALLY_EQUAL: 390 387 if (interaction1.getEnteredText().equals(interaction2.getEnteredText())) { 391 return NodeEquality.SYNTACTICALLY_EQUAL;388 return TaskEquality.SYNTACTICALLY_EQUAL; 392 389 } 393 390 // fall through 394 391 case SEMANTICALLY_EQUAL: 395 return NodeEquality.SEMANTICALLY_EQUAL;392 return TaskEquality.SEMANTICALLY_EQUAL; 396 393 default: 397 return NodeEquality.UNEQUAL;394 return TaskEquality.UNEQUAL; 398 395 } 399 396 } … … 411 408 * @return as described 412 409 */ 413 private NodeEquality compareValueSelections(ValueSelection<?> interaction1,410 private TaskEquality compareValueSelections(ValueSelection<?> interaction1, 414 411 ValueSelection<?> interaction2, 415 NodeEquality equalityLevel)416 { 417 if (equalityLevel.isAtLeast( NodeEquality.SYNTACTICALLY_EQUAL)) {412 TaskEquality equalityLevel) 413 { 414 if (equalityLevel.isAtLeast(TaskEquality.SYNTACTICALLY_EQUAL)) { 418 415 Object value1 = interaction1.getSelectedValue(); 419 416 Object value2 = interaction2.getSelectedValue(); 420 417 421 418 if ((value1 == value2) || ((value1 != null) && (value1.equals(value2)))) { 422 return NodeEquality.LEXICALLY_EQUAL;423 } 424 } 425 426 return NodeEquality.SEMANTICALLY_EQUAL;419 return TaskEquality.LEXICALLY_EQUAL; 420 } 421 } 422 423 return TaskEquality.SEMANTICALLY_EQUAL; 427 424 } 428 425
Note: See TracChangeset
for help on using the changeset viewer.