package com.vaadin.tests.components.button; import com.vaadin.event.ShortcutAction.KeyCode; import com.vaadin.event.ShortcutAction.ModifierKey; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.Component; import com.vaadin.ui.Notification; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; @SuppressWarnings("serial") public class ShortCutListenerModification extends TestBase implements ClickListener { @Override protected String getDescription() { return "Modifiying listeners in shortcuthandler should succeed. Hitting CTRL-C should close windows one by one."; } @Override protected Integer getTicketNumber() { return 5350; } @Override protected void setup() { Button prev = null; for (int j = 0; j < 20; j++) { VerticalLayout layout = new VerticalLayout(); layout.setMargin(true); Window window = new Window(); window.setContent(layout); getMainWindow().addWindow(window); Button button1 = new Button("b1 (CTRL-C)"); Button button2 = new Button("b2 (CTRL-V)"); button1.addClickListener(this); button2.addClickListener(this); button1.setClickShortcut(KeyCode.C, ModifierKey.CTRL); button2.setClickShortcut(KeyCode.V, ModifierKey.CTRL); layout.addComponent(button1); layout.addComponent(button2); button1.focus(); button1.setData(prev); prev = button1; } } @Override public void error(com.vaadin.server.ErrorEvent event) { super.error(event); getMainWindow().showNotification("Failed!", Notification.TYPE_ERROR_MESSAGE); } @Override public void buttonClick(ClickEvent event) { Component c = event.getButton(); while (!(c instanceof Window)) { c = c.getParent(); } ((Window) c).close(); Button prev = (Button) event.getButton().getData(); if (prev != null) { prev.focus(); } } }