@Override public void keyUp(int keyCode, StubKeyModifiers mods) { if (keyCode == KeyCodes.KEY_BACKSPACE) { // we don't keep track of cursor position, so delete at the end if (getValue().length() > 0) { setValue(getValue().substring(0, getValue().length() - 1)); } } else if (keyCode == KeyCodes.KEY_DELETE) { // we don't keep track of cursor position, so delete at the beginning if (getValue().length() > 0) { setValue(getValue().substring(1, getValue().length())); } } super.keyUp(keyCode, mods); }
/** Simulates the user typing {@code value}, with a key down/press/up for each char, then a final change. */ public void typeEach(String value) { typeEachWithoutBlur(value); blur(); }
@Test public void testBackspace() { box.type("as"); assertThat(box.getValue(), is("as")); box.press(KeyCodes.KEY_BACKSPACE); assertThat(box.getValue(), is("a")); box.press(KeyCodes.KEY_BACKSPACE); assertThat(box.getValue(), is("")); box.press(KeyCodes.KEY_BACKSPACE); assertThat(box.getValue(), is("")); }
@Test public void testPressKeyCodeFiresChange() { box.type("as"); final boolean[] changed = { false }; box.addValueChangeHandler(new ValueChangeHandler<String>() { public void onValueChange(ValueChangeEvent<String> event) { changed[0] = true; } }); box.press(KeyCodes.KEY_BACKSPACE); assertThat(changed[0], is(true)); }
@Test public void testMaxLength() { box.setMaxLength(3); box.type("asdf"); assertThat(box.getValue(), is("asd")); box.press("f"); assertThat(box.getValue(), is("asd")); } }
@Test public void testTypeEachFiresOneChange() { box.type("as"); final int[] changes = { 0 }; box.addValueChangeHandler(new ValueChangeHandler<String>() { public void onValueChange(ValueChangeEvent<String> event) { changes[0]++; } }); box.typeEach("df"); assertThat(changes[0], is(1)); assertThat(box.getText(), is("asdf")); }
@Test public void testKeyCodeMapping() { final int[] keyCode = { -1 }; box.addKeyDownHandler(new KeyDownHandler() { public void onKeyDown(KeyDownEvent event) { keyCode[0] = event.getNativeKeyCode(); } }); box.press("a"); assertThat(keyCode[0], is(65)); box.press("B"); assertThat(keyCode[0], is(66)); }
@Override public String getText() { return getValue(); }
@Override public void setText(String value) { setValue(value); }
@Test public void testPressCharCodeFiresChange() { box.type("as"); final boolean[] changed = { false }; box.addValueChangeHandler(new ValueChangeHandler<String>() { public void onValueChange(ValueChangeEvent<String> event) { changed[0] = true; } }); box.press('d'); assertThat(changed[0], is(true)); }
@Test public void testPressKeyCodesFiresNoChange() { box.type("as"); final int[] changes = { 0 }; box.addValueChangeHandler(new ValueChangeHandler<String>() { public void onValueChange(ValueChangeEvent<String> event) { changes[0]++; } }); box.press("df"); assertThat(changes[0], is(0)); }