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
|
/*
@VaadinApache2LicenseForJavaFiles@
*/
package com.vaadin.terminal.gwt.client.ui.dd;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.user.client.Element;
import com.vaadin.terminal.gwt.client.Util;
public class DDUtil {
/**
* @deprecated use the version with the actual event instead of detected
* clientY value
*
* @param element
* @param clientY
* @param topBottomRatio
* @return
*/
@Deprecated
public static VerticalDropLocation getVerticalDropLocation(Element element,
int clientY, double topBottomRatio) {
int offsetHeight = element.getOffsetHeight();
return getVerticalDropLocation(element, offsetHeight, clientY,
topBottomRatio);
}
public static VerticalDropLocation getVerticalDropLocation(Element element,
NativeEvent event, double topBottomRatio) {
int offsetHeight = element.getOffsetHeight();
return getVerticalDropLocation(element, offsetHeight, event,
topBottomRatio);
}
public static VerticalDropLocation getVerticalDropLocation(Element element,
int offsetHeight, NativeEvent event, double topBottomRatio) {
int clientY = Util.getTouchOrMouseClientY(event);
return getVerticalDropLocation(element, offsetHeight, clientY,
topBottomRatio);
}
public static VerticalDropLocation getVerticalDropLocation(Element element,
int offsetHeight, int clientY, double topBottomRatio) {
int absoluteTop = element.getAbsoluteTop();
int fromTop = clientY - absoluteTop;
float percentageFromTop = (fromTop / (float) offsetHeight);
if (percentageFromTop < topBottomRatio) {
return VerticalDropLocation.TOP;
} else if (percentageFromTop > 1 - topBottomRatio) {
return VerticalDropLocation.BOTTOM;
} else {
return VerticalDropLocation.MIDDLE;
}
}
public static HorizontalDropLocation getHorizontalDropLocation(
Element element, NativeEvent event, double leftRightRatio) {
int touchOrMouseClientX = Util.getTouchOrMouseClientX(event);
return getHorizontalDropLocation(element, touchOrMouseClientX,
leftRightRatio);
}
/**
* @deprecated use the version with the actual event
* @param element
* @param clientX
* @param leftRightRatio
* @return
*/
@Deprecated
public static HorizontalDropLocation getHorizontalDropLocation(
Element element, int clientX, double leftRightRatio) {
int absoluteLeft = element.getAbsoluteLeft();
int offsetWidth = element.getOffsetWidth();
int fromTop = clientX - absoluteLeft;
float percentageFromTop = (fromTop / (float) offsetWidth);
if (percentageFromTop < leftRightRatio) {
return HorizontalDropLocation.LEFT;
} else if (percentageFromTop > 1 - leftRightRatio) {
return HorizontalDropLocation.RIGHT;
} else {
return HorizontalDropLocation.CENTER;
}
}
}
|