blob: 606a773141c215a841b4c0837cc0baf88d1a4e90 (
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
package com.vaadin.tests.tooltip;
import java.util.Iterator;
import com.vaadin.event.Transferable;
import com.vaadin.event.TransferableImpl;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.event.dd.DropTarget;
import com.vaadin.event.dd.TargetDetails;
import com.vaadin.event.dd.acceptcriteria.AcceptAll;
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.tests.util.TestUtils;
import com.vaadin.ui.Component;
import com.vaadin.ui.CssLayout;
import com.vaadin.ui.DragAndDropWrapper;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;
public class DragAndDropWrapperTooltips extends AbstractTestUI {
private final String BASE = ".v-widget.greenblock {vertical-align: middle; float:left; width:60px;height:60px;background: green !important; padding:0; margin:2px;-webkit-transition: width 0.3s ease-in-out;color: white;}";
private final String B2 = ".v-widget.b2 {background-color: red !important;}";
private final String B3 = ".v-widget.b3 {background-color: yellow !important;color: black;}";
private final String B4 = ".v-widget.b4 {background-color: blue !important;}";
private final String HIDEDRAGSOURCE = ".v-active-drag-source { overflow:hidden; width:0px !important;}";
private DragAndDropWrapper dragAndDropWrapper;
@Override
protected void setup(VaadinRequest request) {
TestUtils.injectCSS(this, BASE + B4 + B2 + B3 + HIDEDRAGSOURCE);
VerticalLayout l = new VerticalLayout();
l.setWidth("400px");
l.setHeight("100px");
dragAndDropWrapper = new DragAndDropWrapper(cssLayout);
dragAndDropWrapper
.setDescription("Tooltip for the wrapper wrapping all the draggable layouts");
dragAndDropWrapper.setSizeFull();
l.addComponent(dragAndDropWrapper);
addComponent(l);
for (int i = 1; i <= 4; i++) {
WrappedLabel wl = new WrappedLabel("Block");
wl.setId("wrapper" + i);
wl.addStyleName("b" + i);
cssLayout.addComponent(wl);
}
getTooltipConfiguration().setOpenDelay(300);
}
int count;
private CssLayout cssLayout = new CssLayout() {
};
class WrappedLabel extends DragAndDropWrapper {
private static final long serialVersionUID = 1L;
public WrappedLabel(String content) {
super(new Label(content + " " + ++count));
getCompositionRoot().setSizeUndefined();
setHeight("60px"); // FIXME custom component seems to be broken:
// can't set height with css only
setWidth("60px");
setDragStartMode(DragStartMode.WRAPPER);
addStyleName("greenblock");
}
@Override
public DropHandler getDropHandler() {
return dh;
}
}
private DropHandler dh = new DropHandler() {
@Override
public AcceptCriterion getAcceptCriterion() {
return AcceptAll.get();
}
@Override
public void drop(DragAndDropEvent dropEvent) {
Transferable transferable = dropEvent.getTransferable();
if (transferable instanceof TransferableImpl) {
TransferableImpl ct = (TransferableImpl) transferable;
Component sourceComponent = ct.getSourceComponent();
if (sourceComponent instanceof WrappedLabel) {
int index = 1;
Iterator<Component> componentIterator = cssLayout
.getComponentIterator();
Component next = componentIterator.next();
TargetDetails dropTargetData = dropEvent.getTargetDetails();
DropTarget target = dropTargetData.getTarget();
while (next != target) {
if (next != sourceComponent) {
index++;
}
next = componentIterator.next();
}
if (dropTargetData.getData("horizontalLocation").equals(
"LEFT")) {
index--;
if (index < 0) {
index = 0;
}
}
cssLayout.removeComponent(sourceComponent);
cssLayout.addComponent(sourceComponent, index);
dragAndDropWrapper
.setDescription("Drag was performed and tooltip was changed");
}
}
}
};
@Override
protected String getTestDescription() {
return "A tooltip should be shown when hovering the DragAndDropWrapper containing all the draggable layouts";
}
@Override
protected Integer getTicketNumber() {
return 7708;
}
}
|