aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/main/java/com/vaadin/tests/dnd/DragSourcesInTabSheet.java
blob: a493f987a39b1694cc628e23f1561894bb6fbd35 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package com.vaadin.tests.dnd;

import com.vaadin.annotations.Widgetset;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.grid.DropMode;
import com.vaadin.tests.components.AbstractTestUIWithLog;
import com.vaadin.tests.data.bean.Person;
import com.vaadin.ui.Button;
import com.vaadin.ui.Grid;
import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;
import com.vaadin.ui.components.grid.GridDragSource;
import com.vaadin.ui.components.grid.GridDropTarget;
import com.vaadin.ui.dnd.DragSourceExtension;
import com.vaadin.ui.dnd.DropTargetExtension;

@Widgetset("com.vaadin.DefaultWidgetSet")
public class DragSourcesInTabSheet extends AbstractTestUIWithLog {

    @Override
    protected void setup(VaadinRequest request) {
        TabSheet tabSheet = new TabSheet();
        addComponent(tabSheet);

        tabSheet.addTab(new VerticalLayout(createLabels()))
                .setCaption("Labels");

        Button dsButton = new Button("DragSource");
        new DragSourceExtension<>(dsButton)
                .addDragEndListener(event -> log("drag end button"));
        Button dtButton = new Button("DropTarget");
        new DropTargetExtension<>(dtButton).addDropListener(event -> log("drop "
                + event.getDragSourceComponent().orElse(null) + " on button"));
        tabSheet.addTab(new VerticalLayout(dsButton, dtButton))
                .setCaption("Buttons");

        tabSheet.addTab(new VerticalLayout(createGrids())).setCaption("Grids");

        addComponent(new Button("Open window", event -> openWindow()));
    }

    private Label[] createLabels() {
        Label dragSource = new Label("DragSource");
        new DragSourceExtension<>(dragSource)
                .addDragEndListener(event -> log("drag end label"));
        Label dropTarget = new Label("DropTarget");
        new DropTargetExtension<>(dropTarget).addDropListener(event -> log(
                "drop " + event.getDragSourceComponent().orElse(null)
                        + " on label"));
        return new Label[] { dragSource, dropTarget };
    }

    private Grid[] createGrids() {
        Grid<Person> dsGrid = new Grid<>(Person.class);
        dsGrid.setItems(Person.createTestPerson1(), Person.createTestPerson2());
        new GridDragSource<>(dsGrid).addGridDragEndListener(event -> log(
                "drag end " + event.getDraggedItems().iterator().next()));
        Grid<Person> dtGrid = new Grid<>(Person.class);
        dtGrid.setItems(Person.createTestPerson1(), Person.createTestPerson2());
        new GridDropTarget<>(dtGrid, DropMode.BETWEEN)
                .addGridDropListener(event -> log("drop on grid row "
                        + event.getDropTargetRow().orElse(null) + " "
                        + event.getDragData().orElse(null)));
        return new Grid[] { dsGrid, dtGrid };
    }

    private void openWindow() {
        Window window = new Window("Window with drag sources");
        VerticalLayout layout = new VerticalLayout();
        layout.addComponents(createLabels());
        layout.addComponents(createGrids());
        window.setContent(layout);
        addWindow(window);
    }

    @Override
    protected String getTestDescription() {
        return "Verify that removing drag source and drop target components in a tabsheet/window works";
    }

}