assertj-swing icon indicating copy to clipboard operation
assertj-swing copied to clipboard

delay setings dont speedup enterText

Open croesch opened this issue 11 years ago • 1 comments

Issue by a from Mon, 30 Nov 2009 05:10:44 -0600 Originally opened as http://jira.codehaus.org/browse/FEST-265


you cant speedup enterText with the delay settings.

robot.settings().delayBetweenEvents(10); 
robot.settings().eventPostingDelay(10); 
XXXXXXX.enterText(text); 

Thas only works for keys without modifiers like Numbers.

Workaround (using awt.Robot, German Keybord and AltGr dont work):

 public void setTextSim(String text, CommonComponentFixture component){
        KeyStrokeMappingProvider_de provider= new KeyStrokeMappingProvider_de();
        KeyStrokeMap.addKeyStrokesFrom(provider);
    java.awt.Robot awtRobot = <span class="code-keyword">null</span>;
    <span class="code-keyword">try</span> {
        awtRobot = <span class="code-keyword">new</span> java.awt.Robot();
    } <span class="code-keyword">catch</span> (AWTException e) {
        e.printStackTrace();
    }
    awtRobot.setAutoDelay(5);

    component.focus();
    

    <span class="code-object">boolean</span> shiftPressed=<span class="code-keyword">false</span>;
    <span class="code-keyword">for</span> (<span class="code-object">int</span> i=0;i&lt;text.length();i++){
        <span class="code-object">char</span> character = text.charAt(i);
        

        <span class="code-object">boolean</span> needShift=((KeyStrokeMap.keyStrokeFor(character).getModifiers() &amp; InputEvent.SHIFT_DOWN_MASK) != 0 );

        <span class="code-keyword">if</span> (needShift){
            <span class="code-keyword">if</span> (!shiftPressed){
                awtRobot.keyPress(KeyEvent.VK_SHIFT);
                awtRobot.waitForIdle();
                shiftPressed=<span class="code-keyword">true</span>;
            }   
        } <span class="code-keyword">else</span> {<span class="code-comment">//dont need shift

if (shiftPressed){ awtRobot.keyRelease(KeyEvent.VK_SHIFT); awtRobot.waitForIdle(); shiftPressed=false; }
}

        <span class="code-object">int</span> keyCode=KeyStrokeMap.keyStrokeFor(character).getKeyCode();
        
        awtRobot.keyRelease(keyCode);
        awtRobot.waitForIdle();
        awtRobot.keyPress(keyCode);
        awtRobot.waitForIdle();
    }
    
    
    <span class="code-keyword">if</span> (shiftPressed){
        robot.releaseKey(KeyEvent.VK_SHIFT);
    }   

}

votes (original issue): 0 watches (original issue): 1

croesch avatar Feb 08 '14 12:02 croesch

Comment by henningb from Mon, 30 Nov 2009 05:17:52 -0600


with source tags:

public void setTextSim(String text, CommonComponentFixture component){
    KeyStrokeMappingProvider_de provider= new KeyStrokeMappingProvider_de();
    KeyStrokeMap.addKeyStrokesFrom(provider);
java.awt.Robot awtRobot = <span class="code-keyword">null</span>;
<span class="code-keyword">try</span> {
    awtRobot = <span class="code-keyword">new</span> java.awt.Robot();
} <span class="code-keyword">catch</span> (AWTException e) {
    e.printStackTrace();
}
awtRobot.setAutoDelay(5);
component.focus();

<span class="code-object">boolean</span> shiftPressed=<span class="code-keyword">false</span>;
<span class="code-keyword">for</span> (<span class="code-object">int</span> i=0;i&lt;text.length();i++){
    <span class="code-object">char</span> character = text.charAt(i);
    
    <span class="code-object">boolean</span> needShift=((KeyStrokeMap.keyStrokeFor(character).getModifiers() &amp; InputEvent.SHIFT_DOWN_MASK) != 0 );
    <span class="code-keyword">if</span> (needShift){
        <span class="code-keyword">if</span> (!shiftPressed){
            awtRobot.keyPress(KeyEvent.VK_SHIFT);
            awtRobot.waitForIdle();
            shiftPressed=<span class="code-keyword">true</span>;
        }   
    } <span class="code-keyword">else</span> {<span class="code-comment">//dont need shift

if (shiftPressed){ awtRobot.keyRelease(KeyEvent.VK_SHIFT); awtRobot.waitForIdle(); shiftPressed=false; }
} int keyCode=KeyStrokeMap.keyStrokeFor(character).getKeyCode();

    awtRobot.keyRelease(keyCode);
    awtRobot.waitForIdle();
    awtRobot.keyPress(keyCode);
    awtRobot.waitForIdle();
}

<span class="code-keyword">if</span> (shiftPressed){
    robot.releaseKey(KeyEvent.VK_SHIFT);
}   

}

croesch avatar Feb 08 '14 12:02 croesch