You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

BrowserContextMenuInSubComponent.java 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package com.vaadin.tests.contextclick;
  2. import com.vaadin.annotations.Widgetset;
  3. import com.vaadin.server.AbstractExtension;
  4. import com.vaadin.server.VaadinRequest;
  5. import com.vaadin.tests.components.AbstractReindeerTestUI;
  6. import com.vaadin.tests.widgetset.TestingWidgetSet;
  7. import com.vaadin.ui.AbstractComponent;
  8. import com.vaadin.ui.Button;
  9. import com.vaadin.ui.Notification;
  10. import com.vaadin.ui.Panel;
  11. import com.vaadin.ui.VerticalLayout;
  12. import com.vaadin.v7.ui.TextArea;
  13. @Widgetset(TestingWidgetSet.NAME)
  14. public class BrowserContextMenuInSubComponent extends AbstractReindeerTestUI {
  15. @Override
  16. protected void setup(VaadinRequest request) {
  17. Panel panel = new Panel();
  18. VerticalLayout layout = new VerticalLayout();
  19. final TextArea textArea = new TextArea();
  20. // Make TextArea show regular context menu instead of firing the
  21. // server-side event.
  22. BrowserContextMenuExtension.extend(textArea);
  23. final Button button = new Button("Submit",
  24. event -> Notification.show(textArea.getValue()));
  25. layout.addComponent(textArea);
  26. layout.addComponent(button);
  27. panel.setContent(layout);
  28. panel.addContextClickListener(event -> button.click());
  29. addComponent(panel);
  30. }
  31. /**
  32. * A simple extension for making extended component stop propagation of the
  33. * context click events, so the browser will handle the context click and
  34. * show its own context menu.
  35. */
  36. public static class BrowserContextMenuExtension extends AbstractExtension {
  37. private BrowserContextMenuExtension(AbstractComponent c) {
  38. super(c);
  39. }
  40. public static BrowserContextMenuExtension extend(AbstractComponent c) {
  41. return new BrowserContextMenuExtension(c);
  42. }
  43. }
  44. }