Ignore:
Timestamp:
10/29/14 21:02:55 (10 years ago)
Author:
dmay
Message:

more click fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/commands/CMDgenerateJacaretoReplay.java

    r1808 r1809  
    3333import de.ugoe.cs.util.console.Command; 
    3434import de.ugoe.cs.autoquest.eventcore.Event; 
     35import de.ugoe.cs.autoquest.eventcore.IEventTarget; 
    3536import de.ugoe.cs.autoquest.eventcore.gui.*; 
    3637import de.ugoe.cs.autoquest.keyboardmaps.VirtualKey; 
     
    111112    private StructureNode lastFocusChangeEvent; 
    112113    private StructureNode lastItemActionEvent; 
     114    private IEventTarget lastMouseDownTarget; 
    113115 
    114116    /* 
     
    245247                    commitFocusEvent(); 
    246248                    lastKeySequenceEvent = null; 
    247                     checkIfMouseDragged(); 
    248249 
    249250                    lastMouseClickEvent = new StructureNode("MouseClick"); 
     251                    lastMouseDownTarget = event.getTarget(); 
    250252                    writeMouseClickEvent(writer, event, EVENT_DURATION, 501); 
    251253                } 
     
    272274                } 
    273275                else if (event.getType() instanceof MouseClick) { 
     276                    lastKeySequenceEvent = null; 
     277 
    274278                    if (lastMouseClickEvent != null) { 
    275                         lastKeySequenceEvent = null; 
    276  
    277                         writeMouseClickEvent(writer, event, EVENT_DURATION, 500); 
    278                         // FIXME: don't always write an item action 
    279                         writeItemActionEvent(writer, event); 
    280                         // FIXME: don't write it all here because there 
    281                         // might be no item action at all 
    282                         if (lastFocusChangeEvent == null) { 
    283                             // write structure sequentially 
    284                             structure.children.add(lastMouseClickEvent); 
    285                             structure.children.add(lastItemActionEvent); 
     279                        if (lastMouseDownTarget == event.getTarget()) { 
     280                            // this is the standard case: 
     281                            // mouseDown, mouseUp and mouseClick sequence 
     282                            // was triggered on this target 
     283 
     284                            writeMouseClickEvent(writer, event, EVENT_DURATION, 500); 
     285                            writeItemActionEvent(writer, event); 
     286 
     287                            if (lastFocusChangeEvent == null) { 
     288                                // write structure sequentially 
     289                                structure.children.add(lastMouseClickEvent); 
     290                                structure.children.add(lastItemActionEvent); 
     291                            } 
     292                            else { 
     293                                // with nested structure 
     294                                structure.children.add(lastItemActionEvent); 
     295                                lastItemActionEvent.children.add(0, lastFocusChangeEvent); 
     296                                lastFocusChangeEvent.children.add(0, lastMouseClickEvent); 
     297 
     298                                lastFocusChangeEvent = null; 
     299                                lastMouseClickEvent = null; 
     300                            } 
    286301                        } 
    287302                        else { 
    288                             // with nested structure 
    289                             structure.children.add(lastItemActionEvent); 
    290                             lastItemActionEvent.children.add(0, lastFocusChangeEvent); 
    291                             lastFocusChangeEvent.children.add(0, lastMouseClickEvent); 
    292  
    293                             lastFocusChangeEvent = null; 
    294                             lastMouseClickEvent = null; 
     303                            // target of mouseDown and mouseClick are different 
     304                            // -> this is, for example, a click on a menu item 
     305                            // within a condensed sequence 
     306                            commitFocusEvent(); 
     307 
     308                            // finish the last click on the old target 
     309                            writeMouseClickEvent(writer, event, EVENT_DURATION, 500); 
     310                            structure.children.add(lastMouseClickEvent); 
     311 
     312                            // and generate a new one 
     313                            generateFullClick(writer, event); 
    295314                        } 
     315                    } 
     316                    else { 
     317                        // a target was clicked repeatedly: 
     318                        // the condensed sequence contains no mouseDowns or 
     319                        // mouseUps anymore 
     320                        // -> just generate another full click 
     321                        generateFullClick(writer, event); 
    296322                    } 
    297323                } 
     
    303329                else if (event.getType() instanceof KeyPressed) { 
    304330                    commitFocusEvent(); 
    305                     // checkIfMouseDragged(); 
    306331 
    307332                    if (lastKeySequenceEvent == null) { 
     
    313338                else if (event.getType() instanceof KeyReleased) { 
    314339                    commitFocusEvent(); 
    315                     // checkIfMouseDragged(); 
    316340 
    317341                    writeKeyEvent(writer, event, 402); 
     
    328352    } 
    329353 
    330     private void checkIfMouseDragged() { 
    331         if (lastMouseClickEvent != null) { 
    332             // this was not really a click, just a drag 
    333             lastMouseClickEvent.setContent("MouseDrag"); 
    334             structure.children.add(lastMouseClickEvent); 
    335             lastMouseClickEvent = null; 
    336         } 
     354    private void generateFullClick(BufferedWriter writer, Event event) throws IOException { 
     355        lastMouseClickEvent = new StructureNode("MouseClick"); 
     356        lastMouseDownTarget = event.getTarget(); 
     357 
     358        writeMouseClickEvent(writer, event, EVENT_DURATION, 501); 
     359        writeMouseClickEvent(writer, event, EVENT_DURATION, 502); 
     360        writeMouseClickEvent(writer, event, EVENT_DURATION, 500); 
     361        writeItemActionEvent(writer, event); 
     362 
     363        structure.children.add(lastMouseClickEvent); 
     364        structure.children.add(lastItemActionEvent); 
     365 
     366        lastMouseDownTarget = null; 
     367 
    337368    } 
    338369 
Note: See TracChangeset for help on using the changeset viewer.