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.

DndTableTargetDetails.java 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package com.vaadin.tests.components.table;
  2. import com.vaadin.event.dd.DragAndDropEvent;
  3. import com.vaadin.event.dd.DropHandler;
  4. import com.vaadin.event.dd.TargetDetailsImpl;
  5. import com.vaadin.event.dd.acceptcriteria.AcceptAll;
  6. import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
  7. import com.vaadin.server.VaadinRequest;
  8. import com.vaadin.shared.MouseEventDetails;
  9. import com.vaadin.tests.components.AbstractReindeerTestUI;
  10. import com.vaadin.ui.Label;
  11. import com.vaadin.ui.VerticalLayout;
  12. import com.vaadin.v7.data.util.BeanItemContainer;
  13. import com.vaadin.v7.ui.Table;
  14. import com.vaadin.v7.ui.Table.TableDragMode;
  15. /**
  16. * Test UI for table as a drop target: AbstractSelectTargetDetails should
  17. * provide getMouseEvent() method.
  18. *
  19. * @author Vaadin Ltd
  20. */
  21. public class DndTableTargetDetails extends AbstractReindeerTestUI {
  22. @Override
  23. protected void setup(VaadinRequest request) {
  24. createSourceTable();
  25. Table target = new Table();
  26. BeanItemContainer<TestBean> container = new BeanItemContainer<>(
  27. TestBean.class);
  28. container.addBean(new TestBean("target-item"));
  29. target.setContainerDataSource(container);
  30. target.setPageLength(1);
  31. target.addStyleName("target");
  32. target.setWidth(100, Unit.PERCENTAGE);
  33. target.setDropHandler(new TestDropHandler());
  34. addComponent(target);
  35. }
  36. protected void createSourceTable() {
  37. Table table = new Table();
  38. table.setPageLength(1);
  39. table.setDragMode(TableDragMode.ROW);
  40. table.setWidth(100, Unit.PERCENTAGE);
  41. BeanItemContainer<TestBean> container = new BeanItemContainer<>(
  42. TestBean.class);
  43. container.addBean(new TestBean("item"));
  44. table.setContainerDataSource(container);
  45. addComponent(table);
  46. }
  47. @Override
  48. protected String getTestDescription() {
  49. return "Mouse details should be available for AbstractSelectTargetDetails DnD when table is a target";
  50. }
  51. @Override
  52. protected Integer getTicketNumber() {
  53. return 13416;
  54. }
  55. protected static class TestDropHandler implements DropHandler {
  56. public TestDropHandler() {
  57. }
  58. @Override
  59. public void drop(DragAndDropEvent event) {
  60. TargetDetailsImpl details = (TargetDetailsImpl) event
  61. .getTargetDetails();
  62. MouseEventDetails mouseDetails = details.getMouseEvent();
  63. VerticalLayout layout = (VerticalLayout) details.getTarget().getUI()
  64. .getContent();
  65. Label name = new Label(
  66. "Button name=" + mouseDetails.getButtonName());
  67. name.addStyleName("dnd-button-name");
  68. layout.addComponent(name);
  69. if (mouseDetails.isCtrlKey()) {
  70. name.addStyleName("ctrl");
  71. }
  72. if (mouseDetails.isAltKey()) {
  73. name.addStyleName("alt");
  74. }
  75. if (mouseDetails.isShiftKey()) {
  76. name.addStyleName("shift");
  77. }
  78. layout.addComponent(name);
  79. }
  80. @Override
  81. public AcceptCriterion getAcceptCriterion() {
  82. return AcceptAll.get();
  83. }
  84. }
  85. public static class TestBean {
  86. private String name;
  87. public TestBean(String name) {
  88. this.name = name;
  89. }
  90. public String getName() {
  91. return name;
  92. }
  93. }
  94. }