Ignore:
Timestamp:
08/17/14 18:45:48 (10 years ago)
Author:
dmay
Message:

implement middle clicks, right clicks and double clicks - still a bit untested though

File:
1 edited

Legend:

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

    r1684 r1685  
    3131import de.ugoe.cs.util.console.Command; 
    3232import de.ugoe.cs.autoquest.eventcore.Event; 
     33import de.ugoe.cs.autoquest.eventcore.gui.*; 
    3334import de.ugoe.cs.autoquest.plugin.jfc.guimodel.JFCGUIElement; 
    3435import de.ugoe.cs.util.console.Console; 
     
    133134            for (Iterator<Event> eventIter = sequence.iterator(); eventIter.hasNext();) { 
    134135                Event event = eventIter.next(); 
    135                 JFCGUIElement target = (JFCGUIElement) event.getTarget(); 
    136  
    137                 switch (event.getType().getName()) 
    138                 { 
    139                     case "LeftMouseButtonDown": 
    140                         structure.add("<StructureElement class=\"jacareto.struct.MouseClick\">"); 
    141                         writeMouseClickEvent(writer, structure, event.getTimestamp(), target, 501); 
    142                         break; 
    143                     case "LeftMouseButtonUp": 
    144                         writeMouseClickEvent(writer, structure, event.getTimestamp(), target, 502); 
    145                         break; 
    146                     case "LeftMouseClick": 
    147                         writeMouseClickEvent(writer, structure, event.getTimestamp(), target, 500); 
    148                         structure.add("</StructureElement>"); 
    149                         // FIXME: don't always write an item action 
    150                         writeItemActionEvent(writer, structure, target); 
    151                         break; 
     136 
     137                if (event.getType() instanceof MouseButtonDown) { 
     138                    structure.add("<StructureElement class=\"jacareto.struct.MouseClick\">"); 
     139                    writeMouseClickEvent(writer, structure, event, 501); 
    152140                } 
    153  
     141                else if (event.getType() instanceof MouseButtonUp) { 
     142                    writeMouseClickEvent(writer, structure, event, 502); 
     143                } 
     144                else if (event.getType() instanceof MouseClick) { 
     145                    writeMouseClickEvent(writer, structure, event, 500); 
     146                    structure.add("</StructureElement>"); 
     147                    // FIXME: don't always write an item action 
     148                    writeItemActionEvent(writer, structure, event); 
     149                } 
    154150            } 
    155151        } 
     
    230226    private void writeItemActionEvent(BufferedWriter writer, 
    231227                                      ArrayList<String> structure, 
    232                                       JFCGUIElement target) throws IOException 
     228                                      Event event) throws IOException 
    233229    { 
     230        JFCGUIElement target = (JFCGUIElement) event.getTarget(); 
     231        MouseButtonInteraction info = (MouseButtonInteraction) event.getType(); 
     232 
    234233        //@formatter:off 
    235234        writeLine(writer, 
     
    253252            + "ID=\"1001\" " 
    254253            + "command=" + target.getName() + " " 
    255             + "modifiers=\"16\" />" 
     254            + "modifiers=\"" + getButtonModifier(info) + "\" />" 
    256255        ); 
    257256        //@formatter:on 
     
    264263    private void writeMouseClickEvent(BufferedWriter writer, 
    265264                                      ArrayList<String> structure, 
    266                                       long timestamp, 
    267                                       JFCGUIElement target, 
     265                                      Event event, 
    268266                                      int jacId) throws IOException 
    269267    { 
    270         // Note, that all position related attributes appear to be meaningless 
    271         // for our purposes. 
     268        MouseButtonInteraction info = (MouseButtonInteraction) event.getType(); 
     269        JFCGUIElement target = (JFCGUIElement) event.getTarget(); 
     270        int clickCount = event.getType() instanceof MouseDoubleClick ? 2 : 1; 
     271 
    272272        // TODO: change procTime and duration to adequate values 
    273273        //@formatter:off 
     
    286286            + "width=\"0\" " 
    287287            + "height=\"0\" " 
    288             + "when=\"" + timestamp + "\" "  
     288            + "when=\"" + event.getTimestamp() + "\" "  
    289289            + "isConsumed=\"false\">"  
    290290        ); 
    291291        writeLine(writer, 
    292292            "<MouseInfo " 
    293             + "xPosition=\"0\" " 
    294             + "yPosition=\"0\" " 
     293            + "xPosition=\"" + info.getX()+ "\" " 
     294            + "yPosition=\"" + info.getY()+ "\" " 
    295295            + "rootX=\"0\" " 
    296296            + "rootY=\"0\" " 
    297             + "clickCount=\"1\" " 
    298             + "modifiers=\"16\" " 
     297            + "clickCount=\"" + clickCount + "\" " 
     298            + "modifiers=\"" + getButtonModifier(info) + "\" " 
    299299            + "isPopupTrigger=\"false\" />" 
    300300        ); 
     
    304304        structure.add("<Recordable ref=\"" + (nextRef++) + "\" />"); 
    305305    } 
     306 
     307    private int getButtonModifier(MouseButtonInteraction info) { 
     308        switch (info.getButton()) 
     309        { 
     310            case LEFT: 
     311                return 16; 
     312            case MIDDLE: 
     313                return 8; 
     314            case RIGHT: 
     315                return 4; 
     316            default: 
     317                // TODO: handle unknown mouse button 
     318                return -1; 
     319        } 
     320    } 
    306321} 
Note: See TracChangeset for help on using the changeset viewer.