blob: cb86fde24d9b05cfaba04fc29ed40a26a22a036b [file] [log] [blame]
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07001// Copyright 2014 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
Lei Zhanga6d9f0e2015-06-13 00:48:38 -07004
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07005// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
Tom Sepez37458412015-10-06 11:33:46 -07007#include "JS_EventHandler.h"
8
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07009#include "../../include/javascript/IJavaScript.h"
Tom Sepez37458412015-10-06 11:33:46 -070010#include "Document.h"
11#include "Field.h"
12#include "JS_Context.h"
13#include "JS_Define.h"
14#include "JS_Object.h"
15#include "JS_Runtime.h"
16#include "JS_Value.h"
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070017
18/* ---------------------------- CJS_EventHandler ---------------------------- */
19
Nico Weber9d8ec5a2015-08-04 13:00:21 -070020CJS_EventHandler::CJS_EventHandler(CJS_Context* pContext)
21 : m_pJSContext(pContext),
22 m_eEventType(JET_UNKNOWN),
23 m_bValid(FALSE),
24 m_pWideStrChange(NULL),
25 m_nCommitKey(-1),
26 m_bKeyDown(FALSE),
27 m_bModifier(FALSE),
28 m_bShift(FALSE),
29 m_pISelEnd(NULL),
30 m_nSelEndDu(0),
31 m_pISelStart(NULL),
32 m_nSelStartDu(0),
33 m_bWillCommit(FALSE),
34 m_pValue(NULL),
35 m_bFieldFull(FALSE),
36 m_pbRc(NULL),
37 m_bRcDu(FALSE),
38 m_pSourceDoc(NULL),
39 m_pTargetBookMark(NULL),
40 m_pTargetDoc(NULL),
41 m_pTargetAnnot(NULL) {}
42
43CJS_EventHandler::~CJS_EventHandler() {}
44
45void CJS_EventHandler::OnApp_Init() {
46 Initial(JET_APP_INIT);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070047}
48
Nico Weber9d8ec5a2015-08-04 13:00:21 -070049void CJS_EventHandler::OnDoc_Open(CPDFSDK_Document* pDoc,
50 const CFX_WideString& strTargetName) {
51 Initial(JET_DOC_OPEN);
52
53 m_pTargetDoc = pDoc;
54 m_strTargetName = strTargetName;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070055}
56
Nico Weber9d8ec5a2015-08-04 13:00:21 -070057void CJS_EventHandler::OnDoc_WillPrint(CPDFSDK_Document* pDoc) {
58 Initial(JET_DOC_WILLPRINT);
59
60 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070061}
62
Nico Weber9d8ec5a2015-08-04 13:00:21 -070063void CJS_EventHandler::OnDoc_DidPrint(CPDFSDK_Document* pDoc) {
64 Initial(JET_DOC_DIDPRINT);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070065
Nico Weber9d8ec5a2015-08-04 13:00:21 -070066 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070067}
68
Nico Weber9d8ec5a2015-08-04 13:00:21 -070069void CJS_EventHandler::OnDoc_WillSave(CPDFSDK_Document* pDoc) {
70 Initial(JET_DOC_WILLSAVE);
71 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070072}
73
Nico Weber9d8ec5a2015-08-04 13:00:21 -070074void CJS_EventHandler::OnDoc_DidSave(CPDFSDK_Document* pDoc) {
75 Initial(JET_DOC_DIDSAVE);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -070076
Nico Weber9d8ec5a2015-08-04 13:00:21 -070077 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070078}
79
Nico Weber9d8ec5a2015-08-04 13:00:21 -070080void CJS_EventHandler::OnDoc_WillClose(CPDFSDK_Document* pDoc) {
81 Initial(JET_DOC_WILLCLOSE);
82
83 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070084}
85
Nico Weber9d8ec5a2015-08-04 13:00:21 -070086void CJS_EventHandler::OnPage_Open(CPDFSDK_Document* pDoc) {
87 Initial(JET_PAGE_OPEN);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -070088
Nico Weber9d8ec5a2015-08-04 13:00:21 -070089 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070090}
91
Nico Weber9d8ec5a2015-08-04 13:00:21 -070092void CJS_EventHandler::OnPage_Close(CPDFSDK_Document* pDoc) {
93 Initial(JET_PAGE_CLOSE);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070094
Nico Weber9d8ec5a2015-08-04 13:00:21 -070095 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070096}
97
Nico Weber9d8ec5a2015-08-04 13:00:21 -070098void CJS_EventHandler::OnPage_InView(CPDFSDK_Document* pDoc) {
99 Initial(JET_PAGE_INVIEW);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700100
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700101 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700102}
103
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700104void CJS_EventHandler::OnPage_OutView(CPDFSDK_Document* pDoc) {
105 Initial(JET_PAGE_OUTVIEW);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700106
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700107 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700108}
109
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700110void CJS_EventHandler::OnField_MouseEnter(FX_BOOL bModifier,
111 FX_BOOL bShift,
112 CPDF_FormField* pTarget) {
113 Initial(JET_FIELD_MOUSEENTER);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700114
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700115 m_bModifier = bModifier;
116 m_bShift = bShift;
117
118 ASSERT(pTarget != NULL);
119 m_strTargetName = pTarget->GetFullName();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700120}
121
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700122void CJS_EventHandler::OnField_MouseExit(FX_BOOL bModifier,
123 FX_BOOL bShift,
124 CPDF_FormField* pTarget) {
125 Initial(JET_FIELD_MOUSEEXIT);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700126
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700127 m_bModifier = bModifier;
128 m_bShift = bShift;
129 ASSERT(pTarget != NULL);
130 m_strTargetName = pTarget->GetFullName();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700131}
132
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700133void CJS_EventHandler::OnField_MouseDown(FX_BOOL bModifier,
134 FX_BOOL bShift,
135 CPDF_FormField* pTarget) {
136 Initial(JET_FIELD_MOUSEDOWN);
137 m_eEventType = JET_FIELD_MOUSEDOWN;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700138
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700139 m_bModifier = bModifier;
140 m_bShift = bShift;
141 ASSERT(pTarget != NULL);
142 m_strTargetName = pTarget->GetFullName();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700143}
144
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700145void CJS_EventHandler::OnField_MouseUp(FX_BOOL bModifier,
146 FX_BOOL bShift,
147 CPDF_FormField* pTarget) {
148 Initial(JET_FIELD_MOUSEUP);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700149
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700150 m_bModifier = bModifier;
151 m_bShift = bShift;
152 ASSERT(pTarget != NULL);
153 m_strTargetName = pTarget->GetFullName();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700154}
155
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700156void CJS_EventHandler::OnField_Focus(FX_BOOL bModifier,
157 FX_BOOL bShift,
158 CPDF_FormField* pTarget,
159 const CFX_WideString& Value) {
160 Initial(JET_FIELD_FOCUS);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700161
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700162 m_bModifier = bModifier;
163 m_bShift = bShift;
164 ASSERT(pTarget != NULL);
165 m_strTargetName = pTarget->GetFullName();
166 m_pValue = (CFX_WideString*)&Value;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700167}
168
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700169void CJS_EventHandler::OnField_Blur(FX_BOOL bModifier,
170 FX_BOOL bShift,
171 CPDF_FormField* pTarget,
172 const CFX_WideString& Value) {
173 Initial(JET_FIELD_BLUR);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700174
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700175 m_bModifier = bModifier;
176 m_bShift = bShift;
177 ASSERT(pTarget != NULL);
178 m_strTargetName = pTarget->GetFullName();
179 m_pValue = (CFX_WideString*)&Value;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700180}
181
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700182void CJS_EventHandler::OnField_Keystroke(CFX_WideString& strChange,
183 const CFX_WideString& strChangeEx,
184 FX_BOOL KeyDown,
185 FX_BOOL bModifier,
186 int& nSelEnd,
187 int& nSelStart,
188 FX_BOOL bShift,
189 CPDF_FormField* pTarget,
190 CFX_WideString& Value,
191 FX_BOOL bWillCommit,
192 FX_BOOL bFieldFull,
193 FX_BOOL& bRc) {
194 Initial(JET_FIELD_KEYSTROKE);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700195
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700196 m_nCommitKey = 0;
197 m_pWideStrChange = &strChange;
198 m_WideStrChangeEx = strChangeEx;
199 m_bKeyDown = KeyDown;
200 m_bModifier = bModifier;
201 m_pISelEnd = &nSelEnd;
202 m_pISelStart = &nSelStart;
203 m_bShift = bShift;
204 ASSERT(pTarget != NULL);
205 m_strTargetName = pTarget->GetFullName();
206 m_pValue = &Value;
207 m_bWillCommit = bWillCommit;
208 m_pbRc = &bRc;
209 m_bFieldFull = bFieldFull;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700210}
211
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700212void CJS_EventHandler::OnField_Validate(CFX_WideString& strChange,
213 const CFX_WideString& strChangeEx,
214 FX_BOOL bKeyDown,
215 FX_BOOL bModifier,
216 FX_BOOL bShift,
217 CPDF_FormField* pTarget,
218 CFX_WideString& Value,
219 FX_BOOL& bRc) {
220 Initial(JET_FIELD_VALIDATE);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700221
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700222 m_pWideStrChange = &strChange;
223 m_WideStrChangeEx = strChangeEx;
224 m_bKeyDown = bKeyDown;
225 m_bModifier = bModifier;
226 m_bShift = bShift;
227 ASSERT(pTarget != NULL);
228 m_strTargetName = pTarget->GetFullName();
229 m_pValue = &Value;
230 m_pbRc = &bRc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700231}
232
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700233void CJS_EventHandler::OnField_Calculate(CPDF_FormField* pSource,
234 CPDF_FormField* pTarget,
235 CFX_WideString& Value,
236 FX_BOOL& bRc) {
237 Initial(JET_FIELD_CALCULATE);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700238
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700239 if (pSource)
240 m_strSourceName = pSource->GetFullName();
241 ASSERT(pTarget != NULL);
242 m_strTargetName = pTarget->GetFullName();
243 m_pValue = &Value;
244 m_pbRc = &bRc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700245}
246
Lei Zhang0aa0e732015-06-10 15:23:23 -0700247void CJS_EventHandler::OnField_Format(CPDF_FormField* pTarget,
248 CFX_WideString& Value,
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700249 FX_BOOL bWillCommit) {
250 Initial(JET_FIELD_FORMAT);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700251
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700252 m_nCommitKey = 0;
253 ASSERT(pTarget != NULL);
254 m_strTargetName = pTarget->GetFullName();
255 m_pValue = &Value;
256 m_bWillCommit = bWillCommit;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700257}
258
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700259void CJS_EventHandler::OnScreen_Focus(FX_BOOL bModifier,
260 FX_BOOL bShift,
261 CPDFSDK_Annot* pScreen) {
262 Initial(JET_SCREEN_FOCUS);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700263
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700264 m_bModifier = bModifier;
265 m_bShift = bShift;
266 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700267}
268
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700269void CJS_EventHandler::OnScreen_Blur(FX_BOOL bModifier,
270 FX_BOOL bShift,
271 CPDFSDK_Annot* pScreen) {
272 Initial(JET_SCREEN_BLUR);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700273
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700274 m_bModifier = bModifier;
275 m_bShift = bShift;
276 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700277}
278
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700279void CJS_EventHandler::OnScreen_Open(FX_BOOL bModifier,
280 FX_BOOL bShift,
281 CPDFSDK_Annot* pScreen) {
282 Initial(JET_SCREEN_OPEN);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700283
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700284 m_bModifier = bModifier;
285 m_bShift = bShift;
286 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700287}
288
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700289void CJS_EventHandler::OnScreen_Close(FX_BOOL bModifier,
290 FX_BOOL bShift,
291 CPDFSDK_Annot* pScreen) {
292 Initial(JET_SCREEN_CLOSE);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700293
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700294 m_bModifier = bModifier;
295 m_bShift = bShift;
296 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700297}
298
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700299void CJS_EventHandler::OnScreen_MouseDown(FX_BOOL bModifier,
300 FX_BOOL bShift,
301 CPDFSDK_Annot* pScreen) {
302 Initial(JET_SCREEN_MOUSEDOWN);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700303
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700304 m_bModifier = bModifier;
305 m_bShift = bShift;
306 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700307}
308
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700309void CJS_EventHandler::OnScreen_MouseUp(FX_BOOL bModifier,
310 FX_BOOL bShift,
311 CPDFSDK_Annot* pScreen) {
312 Initial(JET_SCREEN_MOUSEUP);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700313
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700314 m_bModifier = bModifier;
315 m_bShift = bShift;
316 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700317}
318
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700319void CJS_EventHandler::OnScreen_MouseEnter(FX_BOOL bModifier,
320 FX_BOOL bShift,
321 CPDFSDK_Annot* pScreen) {
322 Initial(JET_SCREEN_MOUSEENTER);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700323
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700324 m_bModifier = bModifier;
325 m_bShift = bShift;
326 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700327}
328
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700329void CJS_EventHandler::OnScreen_MouseExit(FX_BOOL bModifier,
330 FX_BOOL bShift,
331 CPDFSDK_Annot* pScreen) {
332 Initial(JET_SCREEN_MOUSEEXIT);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700333
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700334 m_bModifier = bModifier;
335 m_bShift = bShift;
336 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700337}
338
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700339void CJS_EventHandler::OnScreen_InView(FX_BOOL bModifier,
340 FX_BOOL bShift,
341 CPDFSDK_Annot* pScreen) {
342 Initial(JET_SCREEN_INVIEW);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700343
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700344 m_bModifier = bModifier;
345 m_bShift = bShift;
346 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700347}
348
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700349void CJS_EventHandler::OnScreen_OutView(FX_BOOL bModifier,
350 FX_BOOL bShift,
351 CPDFSDK_Annot* pScreen) {
352 Initial(JET_SCREEN_OUTVIEW);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700353
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700354 m_bModifier = bModifier;
355 m_bShift = bShift;
356 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700357}
358
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700359void CJS_EventHandler::OnLink_MouseUp(CPDFSDK_Document* pTarget) {
360 Initial(JET_LINK_MOUSEUP);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700361
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700362 m_pTargetDoc = pTarget;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700363}
364
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700365void CJS_EventHandler::OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) {
366 Initial(JET_BOOKMARK_MOUSEUP);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700367
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700368 m_pTargetBookMark = pBookMark;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700369}
370
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700371void CJS_EventHandler::OnMenu_Exec(CPDFSDK_Document* pTarget,
372 const CFX_WideString& strTargetName) {
373 Initial(JET_MENU_EXEC);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700374
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700375 m_pTargetDoc = pTarget;
376 m_strTargetName = strTargetName;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700377}
378
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700379void CJS_EventHandler::OnExternal_Exec() {
380 Initial(JET_EXTERNAL_EXEC);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700381}
382
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700383void CJS_EventHandler::OnBatchExec(CPDFSDK_Document* pTarget) {
384 Initial(JET_BATCH_EXEC);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700385
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700386 m_pTargetDoc = pTarget;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700387}
388
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700389void CJS_EventHandler::OnConsole_Exec() {
390 Initial(JET_CONSOLE_EXEC);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700391}
392
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700393void CJS_EventHandler::Initial(JS_EVENT_T type) {
394 m_eEventType = type;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700395
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700396 m_strTargetName = L"";
397 m_strSourceName = L"";
398 m_pWideStrChange = NULL;
399 m_WideStrChangeDu = L"";
400 m_WideStrChangeEx = L"";
401 m_nCommitKey = -1;
402 m_bKeyDown = FALSE;
403 m_bModifier = FALSE;
404 m_bShift = FALSE;
405 m_pISelEnd = NULL;
406 m_nSelEndDu = 0;
407 m_pISelStart = NULL;
408 m_nSelStartDu = 0;
409 m_bWillCommit = FALSE;
410 m_pValue = NULL;
411 m_bFieldFull = FALSE;
412 m_pbRc = NULL;
413 m_bRcDu = FALSE;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700414
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700415 m_pSourceDoc = NULL;
416 m_pTargetBookMark = NULL;
417 m_pTargetDoc = NULL;
418 m_pTargetAnnot = NULL;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700419
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700420 m_bValid = TRUE;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700421}
422
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700423void CJS_EventHandler::Destroy() {
424 m_bValid = FALSE;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700425}
426
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700427FX_BOOL CJS_EventHandler::IsValid() {
428 return m_bValid;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700429}
430
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700431CFX_WideString& CJS_EventHandler::Change() {
432 if (m_pWideStrChange) {
433 return *m_pWideStrChange;
434 }
435 return m_WideStrChangeDu;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700436}
437
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700438CFX_WideString CJS_EventHandler::ChangeEx() {
439 return m_WideStrChangeEx;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700440}
441
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700442int CJS_EventHandler::CommitKey() {
443 return m_nCommitKey;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700444}
445
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700446FX_BOOL CJS_EventHandler::FieldFull() {
447 return m_bFieldFull;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700448}
449
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700450FX_BOOL CJS_EventHandler::KeyDown() {
451 return m_bKeyDown;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700452}
453
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700454FX_BOOL CJS_EventHandler::Modifier() {
455 return m_bModifier;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700456}
457
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700458const FX_WCHAR* CJS_EventHandler::Name() {
459 switch (m_eEventType) {
460 case JET_APP_INIT:
461 return L"Init";
462 case JET_BATCH_EXEC:
463 return L"Exec";
464 case JET_BOOKMARK_MOUSEUP:
465 return L"Mouse Up";
466 case JET_CONSOLE_EXEC:
467 return L"Exec";
468 case JET_DOC_DIDPRINT:
469 return L"DidPrint";
470 case JET_DOC_DIDSAVE:
471 return L"DidSave";
472 case JET_DOC_OPEN:
473 return L"Open";
474 case JET_DOC_WILLCLOSE:
475 return L"WillClose";
476 case JET_DOC_WILLPRINT:
477 return L"WillPrint";
478 case JET_DOC_WILLSAVE:
479 return L"WillSave";
480 case JET_EXTERNAL_EXEC:
481 return L"Exec";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700482 case JET_FIELD_FOCUS:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700483 case JET_SCREEN_FOCUS:
484 return L"Focus";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700485 case JET_FIELD_BLUR:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700486 case JET_SCREEN_BLUR:
487 return L"Blur";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700488 case JET_FIELD_MOUSEDOWN:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700489 case JET_SCREEN_MOUSEDOWN:
490 return L"Mouse Down";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700491 case JET_FIELD_MOUSEUP:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700492 case JET_SCREEN_MOUSEUP:
493 return L"Mouse Up";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700494 case JET_FIELD_MOUSEENTER:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700495 case JET_SCREEN_MOUSEENTER:
496 return L"Mouse Enter";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700497 case JET_FIELD_MOUSEEXIT:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700498 case JET_SCREEN_MOUSEEXIT:
499 return L"Mouse Exit";
500 case JET_FIELD_CALCULATE:
501 return L"Calculate";
502 case JET_FIELD_FORMAT:
503 return L"Format";
504 case JET_FIELD_KEYSTROKE:
505 return L"Keystroke";
506 case JET_FIELD_VALIDATE:
507 return L"Validate";
508 case JET_LINK_MOUSEUP:
509 return L"Mouse Up";
510 case JET_MENU_EXEC:
511 return L"Exec";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700512 case JET_PAGE_OPEN:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700513 case JET_SCREEN_OPEN:
514 return L"Open";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700515 case JET_PAGE_CLOSE:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700516 case JET_SCREEN_CLOSE:
517 return L"Close";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700518 case JET_SCREEN_INVIEW:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700519 case JET_PAGE_INVIEW:
520 return L"InView";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700521 case JET_PAGE_OUTVIEW:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700522 case JET_SCREEN_OUTVIEW:
523 return L"OutView";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700524 default:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700525 return L"";
526 }
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700527
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700528 return L"";
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700529}
530
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700531const FX_WCHAR* CJS_EventHandler::Type() {
532 switch (m_eEventType) {
533 case JET_APP_INIT:
534 return L"App";
535 case JET_BATCH_EXEC:
536 return L"Batch";
537 case JET_BOOKMARK_MOUSEUP:
538 return L"BookMark";
539 case JET_CONSOLE_EXEC:
540 return L"Console";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700541 case JET_DOC_DIDPRINT:
542 case JET_DOC_DIDSAVE:
543 case JET_DOC_OPEN:
544 case JET_DOC_WILLCLOSE:
545 case JET_DOC_WILLPRINT:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700546 case JET_DOC_WILLSAVE:
547 return L"Doc";
548 case JET_EXTERNAL_EXEC:
549 return L"External";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700550 case JET_FIELD_BLUR:
551 case JET_FIELD_FOCUS:
552 case JET_FIELD_MOUSEDOWN:
553 case JET_FIELD_MOUSEENTER:
554 case JET_FIELD_MOUSEEXIT:
555 case JET_FIELD_MOUSEUP:
556 case JET_FIELD_CALCULATE:
557 case JET_FIELD_FORMAT:
558 case JET_FIELD_KEYSTROKE:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700559 case JET_FIELD_VALIDATE:
560 return L"Field";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700561 case JET_SCREEN_FOCUS:
562 case JET_SCREEN_BLUR:
563 case JET_SCREEN_OPEN:
564 case JET_SCREEN_CLOSE:
565 case JET_SCREEN_MOUSEDOWN:
566 case JET_SCREEN_MOUSEUP:
567 case JET_SCREEN_MOUSEENTER:
568 case JET_SCREEN_MOUSEEXIT:
569 case JET_SCREEN_INVIEW:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700570 case JET_SCREEN_OUTVIEW:
571 return L"Screen";
572 case JET_LINK_MOUSEUP:
573 return L"Link";
574 case JET_MENU_EXEC:
575 return L"Menu";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700576 case JET_PAGE_OPEN:
577 case JET_PAGE_CLOSE:
578 case JET_PAGE_INVIEW:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700579 case JET_PAGE_OUTVIEW:
580 return L"Page";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700581 default:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700582 return L"";
583 }
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700584
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700585 return L"";
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700586}
587
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700588FX_BOOL& CJS_EventHandler::Rc() {
589 if (m_pbRc) {
590 return *m_pbRc;
591 }
592 return m_bRcDu;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700593}
594
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700595int& CJS_EventHandler::SelEnd() {
596 if (m_pISelEnd) {
597 return *m_pISelEnd;
598 }
599 return m_nSelEndDu;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700600}
601
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700602int& CJS_EventHandler::SelStart() {
603 if (m_pISelStart) {
604 return *m_pISelStart;
605 }
606 return m_nSelStartDu;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700607}
608
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700609FX_BOOL CJS_EventHandler::Shift() {
610 return m_bShift;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700611}
612
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700613Field* CJS_EventHandler::Source() {
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700614 CJS_Runtime* pRuntime = m_pJSContext->GetJSRuntime();
Tom Sepez39bfe122015-09-17 15:25:23 -0700615 v8::Local<v8::Object> pDocObj = FXJS_NewFxDynamicObj(
Tom Sepez33420902015-10-13 15:00:10 -0700616 pRuntime->GetIsolate(), pRuntime, CJS_Document::g_nObjDefnID);
Tom Sepezcd56a7d2015-10-06 11:45:28 -0700617 ASSERT(!pDocObj.IsEmpty());
618
619 v8::Local<v8::Object> pFieldObj = FXJS_NewFxDynamicObj(
Tom Sepez33420902015-10-13 15:00:10 -0700620 pRuntime->GetIsolate(), pRuntime, CJS_Field::g_nObjDefnID);
Tom Sepezcd56a7d2015-10-06 11:45:28 -0700621 ASSERT(!pFieldObj.IsEmpty());
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700622
Tom Sepezd5a0e952015-09-17 15:40:06 -0700623 CJS_Document* pJSDocument =
624 (CJS_Document*)FXJS_GetPrivate(pRuntime->GetIsolate(), pDocObj);
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700625 Document* pDocument = (Document*)pJSDocument->GetEmbedObject();
Tom Sepezd5a0e952015-09-17 15:40:06 -0700626 pDocument->AttachDoc(m_pTargetDoc ? m_pTargetDoc
627 : m_pJSContext->GetReaderDocument());
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700628
Tom Sepezd5a0e952015-09-17 15:40:06 -0700629 CJS_Field* pJSField =
630 (CJS_Field*)FXJS_GetPrivate(pRuntime->GetIsolate(), pFieldObj);
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700631 Field* pField = (Field*)pJSField->GetEmbedObject();
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700632 pField->AttachField(pDocument, m_strSourceName);
633 return pField;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700634}
635
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700636Field* CJS_EventHandler::Target_Field() {
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700637 CJS_Runtime* pRuntime = m_pJSContext->GetJSRuntime();
Tom Sepez39bfe122015-09-17 15:25:23 -0700638 v8::Local<v8::Object> pDocObj = FXJS_NewFxDynamicObj(
Tom Sepez33420902015-10-13 15:00:10 -0700639 pRuntime->GetIsolate(), pRuntime, CJS_Document::g_nObjDefnID);
Tom Sepezcd56a7d2015-10-06 11:45:28 -0700640 ASSERT(!pDocObj.IsEmpty());
641
642 v8::Local<v8::Object> pFieldObj = FXJS_NewFxDynamicObj(
Tom Sepez33420902015-10-13 15:00:10 -0700643 pRuntime->GetIsolate(), pRuntime, CJS_Field::g_nObjDefnID);
Tom Sepezcd56a7d2015-10-06 11:45:28 -0700644 ASSERT(!pFieldObj.IsEmpty());
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700645
Tom Sepezd5a0e952015-09-17 15:40:06 -0700646 CJS_Document* pJSDocument =
647 (CJS_Document*)FXJS_GetPrivate(pRuntime->GetIsolate(), pDocObj);
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700648 Document* pDocument = (Document*)pJSDocument->GetEmbedObject();
Tom Sepezd5a0e952015-09-17 15:40:06 -0700649 pDocument->AttachDoc(m_pTargetDoc ? m_pTargetDoc
650 : m_pJSContext->GetReaderDocument());
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700651
Tom Sepezd5a0e952015-09-17 15:40:06 -0700652 CJS_Field* pJSField =
653 (CJS_Field*)FXJS_GetPrivate(pRuntime->GetIsolate(), pFieldObj);
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700654 Field* pField = (Field*)pJSField->GetEmbedObject();
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700655 pField->AttachField(pDocument, m_strTargetName);
656 return pField;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700657}
658
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700659CFX_WideString& CJS_EventHandler::Value() {
660 return *m_pValue;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700661}
662
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700663FX_BOOL CJS_EventHandler::WillCommit() {
664 return m_bWillCommit;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700665}
666
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700667CFX_WideString CJS_EventHandler::TargetName() {
668 return m_strTargetName;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700669}