Переглянути джерело

Mark TextField/TextArea as busy when a text change event is pending (#20469)

Change-Id: I404985ae0be1e7dc65171b610032f8649e700f50
tags/7.7.5
Artur Signell 7 роки тому
джерело
коміт
81b2113120

+ 7
- 1
client/src/main/java/com/vaadin/client/ui/VTextField.java Переглянути файл

@@ -34,6 +34,7 @@ import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.TextBoxBase;
import com.vaadin.client.ApplicationConnection;
import com.vaadin.client.BrowserInfo;
import com.vaadin.client.DeferredWorker;
import com.vaadin.client.WidgetUtil;
import com.vaadin.shared.EventId;
import com.vaadin.shared.ui.textfield.TextFieldConstants;
@@ -45,7 +46,7 @@ import com.vaadin.shared.ui.textfield.TextFieldConstants;
*
*/
public class VTextField extends TextBoxBase implements Field, ChangeHandler,
FocusHandler, BlurHandler, KeyDownHandler {
FocusHandler, BlurHandler, KeyDownHandler, DeferredWorker {

/**
* The input node CSS classname.
@@ -528,4 +529,9 @@ public class VTextField extends TextBoxBase implements Field, ChangeHandler,
}
possibleInputError = false;
}

@Override
public boolean isWorkPending() {
return scheduled;
}
}

+ 6
- 0
uitest/src/main/java/com/vaadin/tests/components/textfield/TextChangeEvents.java Переглянути файл

@@ -47,6 +47,12 @@ public class TextChangeEvents extends TestBase {
ta.addListener(inputEventListener);
getLayout().addComponent(ta);

TextArea tat = new TextArea("Timeout 3s");
tat.addListener(inputEventListener);
tat.setTextChangeEventMode(TextChangeEventMode.TIMEOUT);
tat.setTextChangeTimeout(3000);
getLayout().addComponent(tat);

VaadinDeveloperNameField vd = new VaadinDeveloperNameField();
vd.addListener(inputEventListener);
getLayout().addComponent(vd);

+ 58
- 0
uitest/src/test/java/com/vaadin/tests/components/textfield/TextChangeEventsTest.java Переглянути файл

@@ -0,0 +1,58 @@
package com.vaadin.tests.components.textfield;

import org.junit.Assert;
import org.junit.Test;

import com.vaadin.testbench.elements.TextAreaElement;
import com.vaadin.testbench.elements.TextFieldElement;
import com.vaadin.tests.tb3.SingleBrowserTest;

public class TextChangeEventsTest extends SingleBrowserTest {

@Test
public void textAreaWaitsForTextChangeEvents() {
openTestURL();

TextAreaElement taDefault = $(TextAreaElement.class)
.caption("Default text area").first();
taDefault.sendKeys("abc");
Assert.assertEquals(
"1. Text change event for Default text area, text content currently:'abc' Cursor at index:3",
getLogRow(0));

TextAreaElement taTimeout = $(TextAreaElement.class)
.caption("Timeout 3s").first();
taTimeout.sendKeys("abc");
Assert.assertEquals(
"2. Text change event for Timeout 3s, text content currently:'abc' Cursor at index:3",
getLogRow(0));

}

@Test
public void textFieldWaitsForTextChangeEvents() {
openTestURL();

TextFieldElement tfDefault = $(TextFieldElement.class)
.caption("Default").first();
tfDefault.sendKeys("abc");
Assert.assertEquals(
"1. Text change event for Default, text content currently:'abc' Cursor at index:3",
getLogRow(0));

TextFieldElement tfEager = $(TextFieldElement.class).caption("Eager")
.first();
tfEager.sendKeys("abc");
Assert.assertEquals(
"2. Text change event for Eager, text content currently:'abc' Cursor at index:3",
getLogRow(0));

TextFieldElement tfTimeout = $(TextFieldElement.class)
.caption("Timeout 3s").first();
tfTimeout.sendKeys("abc");
Assert.assertEquals(
"3. Text change event for Timeout 3s, text content currently:'abc' Cursor at index:3",
getLogRow(0));

}
}

Завантаження…
Відмінити
Зберегти