1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.javascript.host.event;
16
17 import org.htmlunit.corejs.javascript.Context;
18 import org.htmlunit.corejs.javascript.Function;
19 import org.htmlunit.corejs.javascript.NativeObject;
20 import org.htmlunit.corejs.javascript.Scriptable;
21 import org.htmlunit.corejs.javascript.ScriptableObject;
22 import org.htmlunit.html.DomNode;
23 import org.htmlunit.javascript.JavaScriptEngine;
24 import org.htmlunit.javascript.configuration.JsxClass;
25 import org.htmlunit.javascript.configuration.JsxConstructor;
26 import org.htmlunit.javascript.configuration.JsxGetter;
27
28
29
30
31
32
33
34
35
36
37 @JsxClass
38 public class PointerEvent extends MouseEvent {
39
40 private int pointerId_;
41 private int width_;
42 private int height_;
43 private double pressure_;
44 private int tiltX_;
45 private int tiltY_;
46 private String pointerType_ = "";
47 private boolean isPrimary_;
48
49
50
51
52 public PointerEvent() {
53 super();
54 }
55
56
57
58
59
60
61
62
63
64
65 @JsxConstructor
66 public static Scriptable jsConstructor(final Context cx, final Scriptable scope,
67 final Object[] args, final Function ctorObj, final boolean inNewExpr) {
68 final PointerEvent event = new PointerEvent();
69 if (args.length != 0) {
70 event.setType(JavaScriptEngine.toString(args[0]));
71 event.setBubbles(false);
72 event.setCancelable(false);
73 event.width_ = 1;
74 event.height_ = 1;
75 }
76
77 if (args.length > 1) {
78 final NativeObject object = (NativeObject) args[1];
79 event.setBubbles((boolean) getValue(object, "bubbles", event.isBubbles()));
80 event.pointerId_ = (int) getValue(object, "pointerId", event.pointerId_);
81 event.width_ = (int) getValue(object, "width", event.width_);
82 event.height_ = (int) getValue(object, "height", event.height_);
83 event.pressure_ = (double) getValue(object, "pressure", event.pressure_);
84 event.tiltX_ = (int) getValue(object, "tiltX", event.tiltX_);
85 event.tiltY_ = (int) getValue(object, "tiltY", event.tiltY_);
86 event.pointerType_ = (String) getValue(object, "pointerType", event.pointerType_);
87 event.isPrimary_ = (boolean) getValue(object, "isPrimary", event.isPrimary_);
88 }
89 return event;
90 }
91
92 private static Object getValue(final ScriptableObject object, final String name, final Object defaulValue) {
93 Object value = object.get(name);
94 if (value == null) {
95 value = defaulValue;
96 }
97 else {
98 if (defaulValue instanceof String) {
99 value = String.valueOf(value);
100 }
101 else if (defaulValue instanceof Double) {
102 value = JavaScriptEngine.toNumber(value);
103 }
104 else if (defaulValue instanceof Number) {
105 value = (int) JavaScriptEngine.toNumber(value);
106 }
107 else {
108 value = JavaScriptEngine.toBoolean(value);
109 }
110 }
111 return value;
112 }
113
114
115
116
117
118
119
120
121
122
123
124
125 public PointerEvent(final DomNode domNode, final String type, final boolean shiftKey,
126 final boolean ctrlKey, final boolean altKey, final int button, final int detail) {
127 super(domNode, type, shiftKey, ctrlKey, altKey, button, detail);
128
129 pointerId_ = 1;
130 width_ = 1;
131 height_ = 1;
132 pointerType_ = "mouse";
133 isPrimary_ = true;
134 }
135
136
137
138
139 @JsxGetter
140 public long getPointerId() {
141 return pointerId_;
142 }
143
144
145
146
147 @JsxGetter
148 public long getWidth() {
149 return width_;
150 }
151
152
153
154
155 @JsxGetter
156 public long getHeight() {
157 return height_;
158 }
159
160
161
162
163 @JsxGetter
164 public double getPressure() {
165 return pressure_;
166 }
167
168
169
170
171 @JsxGetter
172 public long getTiltX() {
173 return tiltX_;
174 }
175
176
177
178
179 @JsxGetter
180 public long getTiltY() {
181 return tiltY_;
182 }
183
184
185
186
187 @JsxGetter
188 public String getPointerType() {
189 return pointerType_;
190 }
191
192
193
194
195 @JsxGetter(propertyName = "isPrimary")
196 public boolean isPrimary_js() {
197 return isPrimary_;
198 }
199
200
201
202
203 @JsxGetter
204 @SuppressWarnings("PMD.UseUnderscoresInNumericLiterals")
205 public double getAltitudeAngle() {
206 return 1.5707963267948966;
207 }
208
209
210
211
212 @JsxGetter
213 public double getAzimuthAngle() {
214 return 0d;
215 }
216
217
218
219
220 @JsxGetter
221 public double getPersistentDeviceId() {
222
223
224 return 0d;
225 }
226 }