blob: e11cfa39ae142a98081e08258e671d0493de3966 [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
Dan Sinclairefbc1912016-02-17 16:54:43 -05007#include "fpdfsdk/src/javascript/JS_EventHandler.h"
Tom Sepez37458412015-10-06 11:33:46 -07008
Lei Zhangbde53d22015-11-12 22:21:30 -08009#include "fpdfsdk/include/javascript/IJavaScript.h"
Dan Sinclairefbc1912016-02-17 16:54:43 -050010#include "fpdfsdk/src/javascript/Document.h"
11#include "fpdfsdk/src/javascript/Field.h"
12#include "fpdfsdk/src/javascript/JS_Context.h"
13#include "fpdfsdk/src/javascript/JS_Define.h"
14#include "fpdfsdk/src/javascript/JS_Object.h"
15#include "fpdfsdk/src/javascript/JS_Runtime.h"
16#include "fpdfsdk/src/javascript/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
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700118 m_strTargetName = pTarget->GetFullName();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700119}
120
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700121void CJS_EventHandler::OnField_MouseExit(FX_BOOL bModifier,
122 FX_BOOL bShift,
123 CPDF_FormField* pTarget) {
124 Initial(JET_FIELD_MOUSEEXIT);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700125
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700126 m_bModifier = bModifier;
127 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700128 m_strTargetName = pTarget->GetFullName();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700129}
130
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700131void CJS_EventHandler::OnField_MouseDown(FX_BOOL bModifier,
132 FX_BOOL bShift,
133 CPDF_FormField* pTarget) {
134 Initial(JET_FIELD_MOUSEDOWN);
135 m_eEventType = JET_FIELD_MOUSEDOWN;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700136
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700137 m_bModifier = bModifier;
138 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700139 m_strTargetName = pTarget->GetFullName();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700140}
141
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700142void CJS_EventHandler::OnField_MouseUp(FX_BOOL bModifier,
143 FX_BOOL bShift,
144 CPDF_FormField* pTarget) {
145 Initial(JET_FIELD_MOUSEUP);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700146
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700147 m_bModifier = bModifier;
148 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700149 m_strTargetName = pTarget->GetFullName();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700150}
151
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700152void CJS_EventHandler::OnField_Focus(FX_BOOL bModifier,
153 FX_BOOL bShift,
154 CPDF_FormField* pTarget,
155 const CFX_WideString& Value) {
156 Initial(JET_FIELD_FOCUS);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700157
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700158 m_bModifier = bModifier;
159 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700160 m_strTargetName = pTarget->GetFullName();
161 m_pValue = (CFX_WideString*)&Value;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700162}
163
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700164void CJS_EventHandler::OnField_Blur(FX_BOOL bModifier,
165 FX_BOOL bShift,
166 CPDF_FormField* pTarget,
167 const CFX_WideString& Value) {
168 Initial(JET_FIELD_BLUR);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700169
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700170 m_bModifier = bModifier;
171 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700172 m_strTargetName = pTarget->GetFullName();
173 m_pValue = (CFX_WideString*)&Value;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700174}
175
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700176void CJS_EventHandler::OnField_Keystroke(CFX_WideString& strChange,
177 const CFX_WideString& strChangeEx,
178 FX_BOOL KeyDown,
179 FX_BOOL bModifier,
180 int& nSelEnd,
181 int& nSelStart,
182 FX_BOOL bShift,
183 CPDF_FormField* pTarget,
184 CFX_WideString& Value,
185 FX_BOOL bWillCommit,
186 FX_BOOL bFieldFull,
187 FX_BOOL& bRc) {
188 Initial(JET_FIELD_KEYSTROKE);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700189
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700190 m_nCommitKey = 0;
191 m_pWideStrChange = &strChange;
192 m_WideStrChangeEx = strChangeEx;
193 m_bKeyDown = KeyDown;
194 m_bModifier = bModifier;
195 m_pISelEnd = &nSelEnd;
196 m_pISelStart = &nSelStart;
197 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700198 m_strTargetName = pTarget->GetFullName();
199 m_pValue = &Value;
200 m_bWillCommit = bWillCommit;
201 m_pbRc = &bRc;
202 m_bFieldFull = bFieldFull;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700203}
204
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700205void CJS_EventHandler::OnField_Validate(CFX_WideString& strChange,
206 const CFX_WideString& strChangeEx,
207 FX_BOOL bKeyDown,
208 FX_BOOL bModifier,
209 FX_BOOL bShift,
210 CPDF_FormField* pTarget,
211 CFX_WideString& Value,
212 FX_BOOL& bRc) {
213 Initial(JET_FIELD_VALIDATE);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700214
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700215 m_pWideStrChange = &strChange;
216 m_WideStrChangeEx = strChangeEx;
217 m_bKeyDown = bKeyDown;
218 m_bModifier = bModifier;
219 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700220 m_strTargetName = pTarget->GetFullName();
221 m_pValue = &Value;
222 m_pbRc = &bRc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700223}
224
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700225void CJS_EventHandler::OnField_Calculate(CPDF_FormField* pSource,
226 CPDF_FormField* pTarget,
227 CFX_WideString& Value,
228 FX_BOOL& bRc) {
229 Initial(JET_FIELD_CALCULATE);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700230
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700231 if (pSource)
232 m_strSourceName = pSource->GetFullName();
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700233 m_strTargetName = pTarget->GetFullName();
234 m_pValue = &Value;
235 m_pbRc = &bRc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700236}
237
Lei Zhang0aa0e732015-06-10 15:23:23 -0700238void CJS_EventHandler::OnField_Format(CPDF_FormField* pTarget,
239 CFX_WideString& Value,
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700240 FX_BOOL bWillCommit) {
241 Initial(JET_FIELD_FORMAT);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700242
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700243 m_nCommitKey = 0;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700244 m_strTargetName = pTarget->GetFullName();
245 m_pValue = &Value;
246 m_bWillCommit = bWillCommit;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700247}
248
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700249void CJS_EventHandler::OnScreen_Focus(FX_BOOL bModifier,
250 FX_BOOL bShift,
251 CPDFSDK_Annot* pScreen) {
252 Initial(JET_SCREEN_FOCUS);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700253
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700254 m_bModifier = bModifier;
255 m_bShift = bShift;
256 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700257}
258
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700259void CJS_EventHandler::OnScreen_Blur(FX_BOOL bModifier,
260 FX_BOOL bShift,
261 CPDFSDK_Annot* pScreen) {
262 Initial(JET_SCREEN_BLUR);
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_Open(FX_BOOL bModifier,
270 FX_BOOL bShift,
271 CPDFSDK_Annot* pScreen) {
272 Initial(JET_SCREEN_OPEN);
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_Close(FX_BOOL bModifier,
280 FX_BOOL bShift,
281 CPDFSDK_Annot* pScreen) {
282 Initial(JET_SCREEN_CLOSE);
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_MouseDown(FX_BOOL bModifier,
290 FX_BOOL bShift,
291 CPDFSDK_Annot* pScreen) {
292 Initial(JET_SCREEN_MOUSEDOWN);
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_MouseUp(FX_BOOL bModifier,
300 FX_BOOL bShift,
301 CPDFSDK_Annot* pScreen) {
302 Initial(JET_SCREEN_MOUSEUP);
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_MouseEnter(FX_BOOL bModifier,
310 FX_BOOL bShift,
311 CPDFSDK_Annot* pScreen) {
312 Initial(JET_SCREEN_MOUSEENTER);
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_MouseExit(FX_BOOL bModifier,
320 FX_BOOL bShift,
321 CPDFSDK_Annot* pScreen) {
322 Initial(JET_SCREEN_MOUSEEXIT);
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_InView(FX_BOOL bModifier,
330 FX_BOOL bShift,
331 CPDFSDK_Annot* pScreen) {
332 Initial(JET_SCREEN_INVIEW);
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_OutView(FX_BOOL bModifier,
340 FX_BOOL bShift,
341 CPDFSDK_Annot* pScreen) {
342 Initial(JET_SCREEN_OUTVIEW);
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::OnLink_MouseUp(CPDFSDK_Document* pTarget) {
350 Initial(JET_LINK_MOUSEUP);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700351
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700352 m_pTargetDoc = pTarget;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700353}
354
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700355void CJS_EventHandler::OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) {
356 Initial(JET_BOOKMARK_MOUSEUP);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700357
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700358 m_pTargetBookMark = pBookMark;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700359}
360
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700361void CJS_EventHandler::OnMenu_Exec(CPDFSDK_Document* pTarget,
362 const CFX_WideString& strTargetName) {
363 Initial(JET_MENU_EXEC);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700364
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700365 m_pTargetDoc = pTarget;
366 m_strTargetName = strTargetName;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700367}
368
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700369void CJS_EventHandler::OnExternal_Exec() {
370 Initial(JET_EXTERNAL_EXEC);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700371}
372
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700373void CJS_EventHandler::OnBatchExec(CPDFSDK_Document* pTarget) {
374 Initial(JET_BATCH_EXEC);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700375
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700376 m_pTargetDoc = pTarget;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700377}
378
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700379void CJS_EventHandler::OnConsole_Exec() {
380 Initial(JET_CONSOLE_EXEC);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700381}
382
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700383void CJS_EventHandler::Initial(JS_EVENT_T type) {
384 m_eEventType = type;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700385
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700386 m_strTargetName = L"";
387 m_strSourceName = L"";
388 m_pWideStrChange = NULL;
389 m_WideStrChangeDu = L"";
390 m_WideStrChangeEx = L"";
391 m_nCommitKey = -1;
392 m_bKeyDown = FALSE;
393 m_bModifier = FALSE;
394 m_bShift = FALSE;
395 m_pISelEnd = NULL;
396 m_nSelEndDu = 0;
397 m_pISelStart = NULL;
398 m_nSelStartDu = 0;
399 m_bWillCommit = FALSE;
400 m_pValue = NULL;
401 m_bFieldFull = FALSE;
402 m_pbRc = NULL;
403 m_bRcDu = FALSE;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700404
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700405 m_pSourceDoc = NULL;
406 m_pTargetBookMark = NULL;
407 m_pTargetDoc = NULL;
408 m_pTargetAnnot = NULL;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700409
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700410 m_bValid = TRUE;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700411}
412
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700413void CJS_EventHandler::Destroy() {
414 m_bValid = FALSE;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700415}
416
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700417FX_BOOL CJS_EventHandler::IsValid() {
418 return m_bValid;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700419}
420
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700421CFX_WideString& CJS_EventHandler::Change() {
422 if (m_pWideStrChange) {
423 return *m_pWideStrChange;
424 }
425 return m_WideStrChangeDu;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700426}
427
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700428CFX_WideString CJS_EventHandler::ChangeEx() {
429 return m_WideStrChangeEx;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700430}
431
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700432int CJS_EventHandler::CommitKey() {
433 return m_nCommitKey;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700434}
435
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700436FX_BOOL CJS_EventHandler::FieldFull() {
437 return m_bFieldFull;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700438}
439
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700440FX_BOOL CJS_EventHandler::KeyDown() {
441 return m_bKeyDown;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700442}
443
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700444FX_BOOL CJS_EventHandler::Modifier() {
445 return m_bModifier;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700446}
447
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700448const FX_WCHAR* CJS_EventHandler::Name() {
449 switch (m_eEventType) {
450 case JET_APP_INIT:
451 return L"Init";
452 case JET_BATCH_EXEC:
453 return L"Exec";
454 case JET_BOOKMARK_MOUSEUP:
455 return L"Mouse Up";
456 case JET_CONSOLE_EXEC:
457 return L"Exec";
458 case JET_DOC_DIDPRINT:
459 return L"DidPrint";
460 case JET_DOC_DIDSAVE:
461 return L"DidSave";
462 case JET_DOC_OPEN:
463 return L"Open";
464 case JET_DOC_WILLCLOSE:
465 return L"WillClose";
466 case JET_DOC_WILLPRINT:
467 return L"WillPrint";
468 case JET_DOC_WILLSAVE:
469 return L"WillSave";
470 case JET_EXTERNAL_EXEC:
471 return L"Exec";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700472 case JET_FIELD_FOCUS:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700473 case JET_SCREEN_FOCUS:
474 return L"Focus";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700475 case JET_FIELD_BLUR:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700476 case JET_SCREEN_BLUR:
477 return L"Blur";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700478 case JET_FIELD_MOUSEDOWN:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700479 case JET_SCREEN_MOUSEDOWN:
480 return L"Mouse Down";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700481 case JET_FIELD_MOUSEUP:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700482 case JET_SCREEN_MOUSEUP:
483 return L"Mouse Up";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700484 case JET_FIELD_MOUSEENTER:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700485 case JET_SCREEN_MOUSEENTER:
486 return L"Mouse Enter";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700487 case JET_FIELD_MOUSEEXIT:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700488 case JET_SCREEN_MOUSEEXIT:
489 return L"Mouse Exit";
490 case JET_FIELD_CALCULATE:
491 return L"Calculate";
492 case JET_FIELD_FORMAT:
493 return L"Format";
494 case JET_FIELD_KEYSTROKE:
495 return L"Keystroke";
496 case JET_FIELD_VALIDATE:
497 return L"Validate";
498 case JET_LINK_MOUSEUP:
499 return L"Mouse Up";
500 case JET_MENU_EXEC:
501 return L"Exec";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700502 case JET_PAGE_OPEN:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700503 case JET_SCREEN_OPEN:
504 return L"Open";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700505 case JET_PAGE_CLOSE:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700506 case JET_SCREEN_CLOSE:
507 return L"Close";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700508 case JET_SCREEN_INVIEW:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700509 case JET_PAGE_INVIEW:
510 return L"InView";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700511 case JET_PAGE_OUTVIEW:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700512 case JET_SCREEN_OUTVIEW:
513 return L"OutView";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700514 default:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700515 return L"";
516 }
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700517
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700518 return L"";
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700519}
520
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700521const FX_WCHAR* CJS_EventHandler::Type() {
522 switch (m_eEventType) {
523 case JET_APP_INIT:
524 return L"App";
525 case JET_BATCH_EXEC:
526 return L"Batch";
527 case JET_BOOKMARK_MOUSEUP:
528 return L"BookMark";
529 case JET_CONSOLE_EXEC:
530 return L"Console";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700531 case JET_DOC_DIDPRINT:
532 case JET_DOC_DIDSAVE:
533 case JET_DOC_OPEN:
534 case JET_DOC_WILLCLOSE:
535 case JET_DOC_WILLPRINT:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700536 case JET_DOC_WILLSAVE:
537 return L"Doc";
538 case JET_EXTERNAL_EXEC:
539 return L"External";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700540 case JET_FIELD_BLUR:
541 case JET_FIELD_FOCUS:
542 case JET_FIELD_MOUSEDOWN:
543 case JET_FIELD_MOUSEENTER:
544 case JET_FIELD_MOUSEEXIT:
545 case JET_FIELD_MOUSEUP:
546 case JET_FIELD_CALCULATE:
547 case JET_FIELD_FORMAT:
548 case JET_FIELD_KEYSTROKE:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700549 case JET_FIELD_VALIDATE:
550 return L"Field";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700551 case JET_SCREEN_FOCUS:
552 case JET_SCREEN_BLUR:
553 case JET_SCREEN_OPEN:
554 case JET_SCREEN_CLOSE:
555 case JET_SCREEN_MOUSEDOWN:
556 case JET_SCREEN_MOUSEUP:
557 case JET_SCREEN_MOUSEENTER:
558 case JET_SCREEN_MOUSEEXIT:
559 case JET_SCREEN_INVIEW:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700560 case JET_SCREEN_OUTVIEW:
561 return L"Screen";
562 case JET_LINK_MOUSEUP:
563 return L"Link";
564 case JET_MENU_EXEC:
565 return L"Menu";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700566 case JET_PAGE_OPEN:
567 case JET_PAGE_CLOSE:
568 case JET_PAGE_INVIEW:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700569 case JET_PAGE_OUTVIEW:
570 return L"Page";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700571 default:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700572 return L"";
573 }
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700574
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700575 return L"";
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700576}
577
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700578FX_BOOL& CJS_EventHandler::Rc() {
579 if (m_pbRc) {
580 return *m_pbRc;
581 }
582 return m_bRcDu;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700583}
584
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700585int& CJS_EventHandler::SelEnd() {
586 if (m_pISelEnd) {
587 return *m_pISelEnd;
588 }
589 return m_nSelEndDu;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700590}
591
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700592int& CJS_EventHandler::SelStart() {
593 if (m_pISelStart) {
594 return *m_pISelStart;
595 }
596 return m_nSelStartDu;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700597}
598
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700599FX_BOOL CJS_EventHandler::Shift() {
600 return m_bShift;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700601}
602
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700603Field* CJS_EventHandler::Source() {
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700604 CJS_Runtime* pRuntime = m_pJSContext->GetJSRuntime();
Tom Sepez39bfe122015-09-17 15:25:23 -0700605 v8::Local<v8::Object> pDocObj = FXJS_NewFxDynamicObj(
Tom Sepez33420902015-10-13 15:00:10 -0700606 pRuntime->GetIsolate(), pRuntime, CJS_Document::g_nObjDefnID);
Tom Sepezcd56a7d2015-10-06 11:45:28 -0700607 ASSERT(!pDocObj.IsEmpty());
608
609 v8::Local<v8::Object> pFieldObj = FXJS_NewFxDynamicObj(
Tom Sepez33420902015-10-13 15:00:10 -0700610 pRuntime->GetIsolate(), pRuntime, CJS_Field::g_nObjDefnID);
Tom Sepezcd56a7d2015-10-06 11:45:28 -0700611 ASSERT(!pFieldObj.IsEmpty());
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700612
Tom Sepezd5a0e952015-09-17 15:40:06 -0700613 CJS_Document* pJSDocument =
614 (CJS_Document*)FXJS_GetPrivate(pRuntime->GetIsolate(), pDocObj);
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700615 Document* pDocument = (Document*)pJSDocument->GetEmbedObject();
Tom Sepezd5a0e952015-09-17 15:40:06 -0700616 pDocument->AttachDoc(m_pTargetDoc ? m_pTargetDoc
617 : m_pJSContext->GetReaderDocument());
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700618
Tom Sepezd5a0e952015-09-17 15:40:06 -0700619 CJS_Field* pJSField =
620 (CJS_Field*)FXJS_GetPrivate(pRuntime->GetIsolate(), pFieldObj);
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700621 Field* pField = (Field*)pJSField->GetEmbedObject();
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700622 pField->AttachField(pDocument, m_strSourceName);
623 return pField;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700624}
625
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700626Field* CJS_EventHandler::Target_Field() {
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700627 CJS_Runtime* pRuntime = m_pJSContext->GetJSRuntime();
Tom Sepez39bfe122015-09-17 15:25:23 -0700628 v8::Local<v8::Object> pDocObj = FXJS_NewFxDynamicObj(
Tom Sepez33420902015-10-13 15:00:10 -0700629 pRuntime->GetIsolate(), pRuntime, CJS_Document::g_nObjDefnID);
Tom Sepezcd56a7d2015-10-06 11:45:28 -0700630 ASSERT(!pDocObj.IsEmpty());
631
632 v8::Local<v8::Object> pFieldObj = FXJS_NewFxDynamicObj(
Tom Sepez33420902015-10-13 15:00:10 -0700633 pRuntime->GetIsolate(), pRuntime, CJS_Field::g_nObjDefnID);
Tom Sepezcd56a7d2015-10-06 11:45:28 -0700634 ASSERT(!pFieldObj.IsEmpty());
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700635
Tom Sepezd5a0e952015-09-17 15:40:06 -0700636 CJS_Document* pJSDocument =
637 (CJS_Document*)FXJS_GetPrivate(pRuntime->GetIsolate(), pDocObj);
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700638 Document* pDocument = (Document*)pJSDocument->GetEmbedObject();
Tom Sepezd5a0e952015-09-17 15:40:06 -0700639 pDocument->AttachDoc(m_pTargetDoc ? m_pTargetDoc
640 : m_pJSContext->GetReaderDocument());
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700641
Tom Sepezd5a0e952015-09-17 15:40:06 -0700642 CJS_Field* pJSField =
643 (CJS_Field*)FXJS_GetPrivate(pRuntime->GetIsolate(), pFieldObj);
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700644 Field* pField = (Field*)pJSField->GetEmbedObject();
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700645 pField->AttachField(pDocument, m_strTargetName);
646 return pField;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700647}
648
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700649CFX_WideString& CJS_EventHandler::Value() {
650 return *m_pValue;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700651}
652
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700653FX_BOOL CJS_EventHandler::WillCommit() {
654 return m_bWillCommit;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700655}
656
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700657CFX_WideString CJS_EventHandler::TargetName() {
658 return m_strTargetName;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700659}