litesoft
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
|
package com.temp.client.foundation.widget.table.cell;
import java.util.List;
import com.temp.client.foundation.handler.DataClickHandler;
import com.temp.shared.utils.DisplayStringHandler;
import com.temp.shared.utils.StringUtils;
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.cell.client.ValueUpdater;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.EventTarget;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
public class ClickableTextListDataCell<E, L extends List<E>> extends AbstractCell<L>{
DataClickHandler<E> clickHandler;
DisplayStringHandler<E> displayStringHandler;
private static final String CLICK_EVENT = "click";
public ClickableTextListDataCell(DataClickHandler<E> _clickHandler, DisplayStringHandler<E> _displayStringHandler) {
super(CLICK_EVENT);
clickHandler = _clickHandler;
displayStringHandler = _displayStringHandler;
if (displayStringHandler == null) {
displayStringHandler = new DisplayStringHandler<E>() {
public String getDisplayString(E value) {
return value.toString();
}
};
}
}
@Override
public void render(Context context, L valueList, SafeHtmlBuilder sb) {
if (valueList != null && !valueList.isEmpty()) {
for (E valueListElement : valueList) {
String displayString = displayStringHandler.getDisplayString(valueListElement);
if (!StringUtils.isBlank(displayString)) {
if (clickHandler != null) {
sb.appendHtmlConstant("<div class='link-button'>");
} else {
sb.appendHtmlConstant("<div>");
}
sb.appendEscaped(displayString);
if (clickHandler != null) {
sb.appendHtmlConstant("</div>");
} else {
sb.appendHtmlConstant("</div>");
}
} else {
sb.appendHtmlConstant("<span></span>");
}
}
}
}
@Override
public void onBrowserEvent(Context context, Element parent, L valueList, NativeEvent event, ValueUpdater<L> valueUpdater) {
if (clickHandler != null
&& event.getType().equals(CLICK_EVENT)
&& valueList != null
&& !valueList.isEmpty()) {
int index = 0;
EventTarget eventTarget = event.getEventTarget();
if (Element.is(eventTarget)) {
Element target = eventTarget.cast();
Element container = parent;
Element wrapper = container.getFirstChildElement();
while (wrapper != null) {
if (wrapper.isOrHasChild(target)) {
clickHandler.onClick(valueList.get(index));
}
index++;
wrapper = wrapper.getNextSiblingElement();
}
}
}
}
}
|
Revision |
Author |
Commited |
Message |
626
|
GeorgeS
|
Wed 11 Apr, 2012 19:39:41 +0000 |
|