Ignore:
Timestamp:
10/28/14 13:39:27 (10 years ago)
Author:
dmay
Message:

fix mouse double clicks - now only works with condensed sequences

File:
1 edited

Legend:

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

    r1719 r1808  
    9696public class CMDgenerateJacaretoReplay implements Command { 
    9797    private static final int EVENT_DURATION = 150; 
     98    private static final int DOUBLE_CLICK_DURATION = 50; 
     99    private static final int STARTUP_DELAY = 10000; 
    98100 
    99101    private JFCGUIElement currentFocus; 
     
    210212        writeLine(writer, "<ComponentMode numberPopupMenues=\"true\" />"); 
    211213        writeLine(writer, "<ApplicationStarter " 
    212             + "procTime=\"0\" " 
    213             + "duration=\"0\" " 
     214            + "procTime=\"" + STARTUP_DELAY + "\" " 
     215            + "duration=\"" + STARTUP_DELAY + "\" " 
    214216            + "name=\"Autoquest Replay\" " 
    215217            + "class=\"" + classname + "\" " 
     
    240242                Event event = eventIter.next(); 
    241243 
    242                 /* 
    243                 System.out.println(event.getType()); 
    244                 System.out.println(event.getTarget()); 
    245                 System.out.println("---"); 
    246                 */ 
    247  
    248244                if (event.getType() instanceof MouseButtonDown) { 
     245                    commitFocusEvent(); 
    249246                    lastKeySequenceEvent = null; 
    250247                    checkIfMouseDragged(); 
    251248 
    252249                    lastMouseClickEvent = new StructureNode("MouseClick"); 
    253                     writeMouseClickEvent(writer, event, 501); 
     250                    writeMouseClickEvent(writer, event, EVENT_DURATION, 501); 
    254251                } 
    255252                else if (event.getType() instanceof MouseButtonUp) { 
    256253                    lastKeySequenceEvent = null; 
    257254 
    258                     writeMouseClickEvent(writer, event, 502); 
     255                    writeMouseClickEvent(writer, event, EVENT_DURATION, 502); 
     256                } 
     257                else if (event.getType() instanceof MouseDoubleClick) { 
     258                    StructureNode multiClick = structure.add("MultipleMouseClick"); 
     259 
     260                    // first click 
     261                    lastMouseClickEvent = multiClick.add("MouseClick"); 
     262                    writeMouseClickEvent(writer, event, DOUBLE_CLICK_DURATION, 501); 
     263                    writeMouseClickEvent(writer, event, DOUBLE_CLICK_DURATION, 502); 
     264                    writeMouseClickEvent(writer, event, DOUBLE_CLICK_DURATION, 500); 
     265                    // second click 
     266                    lastMouseClickEvent = multiClick.add("MouseClick"); 
     267                    writeMouseClickEvent(writer, event, DOUBLE_CLICK_DURATION, 501); 
     268                    writeMouseClickEvent(writer, event, DOUBLE_CLICK_DURATION, 502); 
     269                    writeMouseClickEvent(writer, event, DOUBLE_CLICK_DURATION, 500); 
     270 
     271                    lastMouseClickEvent = null; 
    259272                } 
    260273                else if (event.getType() instanceof MouseClick) { 
    261                     lastKeySequenceEvent = null; 
    262  
    263                     writeMouseClickEvent(writer, event, 500); 
    264                     // FIXME: don't always write an item action 
    265                     writeItemActionEvent(writer, event); 
    266                     // FIXME: don't write it all here because there 
    267                     // might be no item action at all 
    268                     if (lastFocusChangeEvent == null) { 
    269                         // write structure sequentially 
    270                         structure.children.add(lastMouseClickEvent); 
    271                         structure.children.add(lastItemActionEvent); 
    272                     } 
    273                     else { 
    274                         // with nested structure 
    275                         structure.children.add(lastItemActionEvent); 
    276                         lastItemActionEvent.children.add(0, lastFocusChangeEvent); 
    277                         lastFocusChangeEvent.children.add(0, lastMouseClickEvent); 
    278  
    279                         lastFocusChangeEvent = null; 
    280                         lastMouseClickEvent = null; 
     274                    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); 
     286                        } 
     287                        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; 
     295                        } 
    281296                    } 
    282297                } 
     
    287302                } 
    288303                else if (event.getType() instanceof KeyPressed) { 
     304                    commitFocusEvent(); 
    289305                    // checkIfMouseDragged(); 
    290306 
     
    296312                } 
    297313                else if (event.getType() instanceof KeyReleased) { 
     314                    commitFocusEvent(); 
    298315                    // checkIfMouseDragged(); 
    299316 
     
    301318                } 
    302319            } 
     320        } 
     321    } 
     322 
     323    private void commitFocusEvent() { 
     324        if (lastFocusChangeEvent != null) { 
     325            structure.children.add(lastFocusChangeEvent); 
     326            lastFocusChangeEvent = null; 
    303327        } 
    304328    } 
     
    464488    } 
    465489 
    466     private void writeMouseClickEvent(BufferedWriter writer, Event event, int jacId) 
     490    private void writeMouseClickEvent(BufferedWriter writer, Event event, int duration, int jacId) 
    467491        throws IOException 
    468492    { 
     
    476500            "<MouseEvent " 
    477501            + "procTime=\"0\" " 
    478             + "duration=\"" + EVENT_DURATION + "\" " 
     502            + "duration=\"" + duration + "\" " 
    479503            + "source=\"" + target.getJacaretoHierarchy() + "\" " 
    480504            + "class=\"" + target.getSpecification().getType() + "\" " 
Note: See TracChangeset for help on using the changeset viewer.