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
|
/*
@VaadinApache2LicenseForJavaFiles@
*/
package com.vaadin.terminal.gwt.client.ui;
import com.google.gwt.event.dom.client.BlurEvent;
import com.google.gwt.event.dom.client.BlurHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.FocusEvent;
import com.google.gwt.event.dom.client.FocusHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
import com.vaadin.terminal.gwt.client.ApplicationConnection;
import com.vaadin.terminal.gwt.client.EventId;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
import com.vaadin.terminal.gwt.client.MouseEventDetailsBuilder;
import com.vaadin.terminal.gwt.client.Util;
import com.vaadin.terminal.gwt.client.VTooltip;
public class VCheckBox extends com.google.gwt.user.client.ui.CheckBox implements
Field, FocusHandler, BlurHandler {
public static final String VARIABLE_STATE = "state";
public static final String CLASSNAME = "v-checkbox";
String id;
boolean immediate;
ApplicationConnection client;
Element errorIndicatorElement;
Icon icon;
HandlerRegistration focusHandlerRegistration;
HandlerRegistration blurHandlerRegistration;
public VCheckBox() {
setStyleName(CLASSNAME);
addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
if (id == null || client == null || !isEnabled()) {
return;
}
// Add mouse details
MouseEventDetails details = MouseEventDetailsBuilder
.buildMouseEventDetails(event.getNativeEvent(),
getElement());
client.updateVariable(id, "mousedetails", details.serialize(),
false);
client.updateVariable(id, VARIABLE_STATE, getValue(), immediate);
}
});
sinkEvents(VTooltip.TOOLTIP_EVENTS);
Element el = DOM.getFirstChild(getElement());
while (el != null) {
DOM.sinkEvents(el,
(DOM.getEventsSunk(el) | VTooltip.TOOLTIP_EVENTS));
el = DOM.getNextSibling(el);
}
}
@Override
public void onBrowserEvent(Event event) {
if (icon != null && (event.getTypeInt() == Event.ONCLICK)
&& (DOM.eventGetTarget(event) == icon.getElement())) {
// Click on icon should do nothing if widget is disabled
if (isEnabled()) {
setValue(!getValue());
}
}
super.onBrowserEvent(event);
if (event.getTypeInt() == Event.ONLOAD) {
Util.notifyParentOfSizeChange(this, true);
}
if (client != null) {
client.handleTooltipEvent(event, this);
}
}
@Override
public void setWidth(String width) {
super.setWidth(width);
}
@Override
public void setHeight(String height) {
super.setHeight(height);
}
public void onFocus(FocusEvent arg0) {
client.updateVariable(id, EventId.FOCUS, "", true);
}
public void onBlur(BlurEvent arg0) {
client.updateVariable(id, EventId.BLUR, "", true);
}
}
|