--- /dev/null
+package com.vaadin.tests.components.richtextarea;
+
+import com.vaadin.event.ShortcutAction;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUIWithLog;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.RichTextArea;
+import com.vaadin.ui.VerticalLayout;
+
+public class RichTextAreaDelegateToShortcutHandler extends AbstractTestUIWithLog {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ final VerticalLayout layout = new VerticalLayout();
+ final RichTextArea name = new RichTextArea();
+ name.setCaption("Type your name here:");
+
+ Button button = new Button("Click Me");
+ button.setClickShortcut(ShortcutAction.KeyCode.ENTER);
+ button.addClickListener(e -> log("ShortcutHandler invoked " + name.getValue()));
+
+ layout.addComponents(name, button);
+ addComponent(layout);
+ }
+}
--- /dev/null
+package com.vaadin.tests.components.richtextarea;
+
+import java.util.List;
+
+import com.vaadin.testbench.elements.RichTextAreaElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+import org.junit.Test;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.remote.DesiredCapabilities;
+
+import static org.hamcrest.Matchers.containsString;
+import static org.junit.Assert.assertThat;
+
+public class RichTextAreaDelegateToShortcutHandlerTest extends MultiBrowserTest {
+
+ @Override
+ public List<DesiredCapabilities> getBrowsersToTest() {
+ return getBrowsersExcludingPhantomJS();
+ }
+
+ @Test
+ public void shouldDelegateToShortcutActionHandler() {
+ openTestURL();
+
+ WebElement textAreaEditor = $(RichTextAreaElement.class).first().getEditorIframe();
+ textAreaEditor.sendKeys("Test");
+ textAreaEditor.sendKeys(Keys.ENTER);
+
+ assertThat("Shortcut handler has not been invoked",
+ getLogRow(0), containsString("ShortcutHandler invoked Test"));
+
+ textAreaEditor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
+ textAreaEditor.sendKeys("another row");
+ textAreaEditor.sendKeys(Keys.ENTER);
+
+ assertThat("Shortcut handler has not been invoked",
+ getLogRow(0), containsString("ShortcutHandler invoked Test\nanother row"));
+ }
+}