1 // 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.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #include "../../include/javascript/JavaScript.h"
8 #include "../../include/javascript/IJavaScript.h"
9 #include "../../include/javascript/JS_EventHandler.h"
10 //#include "../../include/javascript/JS_ResMgr.h"
11 #include "../../include/javascript/JS_Context.h"
12 #include "../../include/javascript/JS_Runtime.h"
13 #include "../../include/javascript/JS_Define.h"
14 #include "../../include/javascript/JS_Object.h"
15 #include "../../include/javascript/JS_Value.h"
16 #include "../../include/javascript/Document.h"
17 #include "../../include/javascript/Field.h"
18
19 /* ---------------------------- CJS_EventHandler ---------------------------- */
20
CJS_EventHandler(CJS_Context * pContext)21 CJS_EventHandler::CJS_EventHandler(CJS_Context * pContext) :
22 m_pJSContext(pContext),
23 m_eEventType(JET_UNKNOWN),
24 m_bValid(FALSE),
25 m_pWideStrChange(NULL),
26 m_nCommitKey(-1),
27 m_bKeyDown(FALSE),
28 m_bModifier(FALSE),
29 m_bShift(FALSE),
30 m_pISelEnd(NULL),
31 m_nSelEndDu(0),
32 m_pISelStart(NULL),
33 m_nSelStartDu(0),
34 m_bWillCommit(FALSE),
35 m_pValue(NULL),
36 m_bFieldFull(FALSE),
37 m_pbRc(NULL),
38 m_bRcDu(FALSE),
39 m_pSourceDoc(NULL),
40 m_pTargetBookMark(NULL),
41 m_pTargetDoc(NULL),
42 m_pTargetAnnot(NULL)
43 {
44 }
45
~CJS_EventHandler()46 CJS_EventHandler::~CJS_EventHandler()
47 {
48 }
49
OnApp_Init()50 void CJS_EventHandler::OnApp_Init()
51 {
52 Initial(JET_APP_INIT);
53 }
54
OnDoc_Open(CPDFSDK_Document * pDoc,const CFX_WideString & strTargetName)55 void CJS_EventHandler::OnDoc_Open(CPDFSDK_Document* pDoc, const CFX_WideString& strTargetName)
56 {
57 Initial(JET_DOC_OPEN);
58
59 m_pTargetDoc = pDoc;
60 m_strTargetName = strTargetName;
61 }
62
OnDoc_WillPrint(CPDFSDK_Document * pDoc)63 void CJS_EventHandler::OnDoc_WillPrint(CPDFSDK_Document* pDoc)
64 {
65 Initial(JET_DOC_WILLPRINT);
66
67 m_pTargetDoc = pDoc;
68 }
69
OnDoc_DidPrint(CPDFSDK_Document * pDoc)70 void CJS_EventHandler::OnDoc_DidPrint(CPDFSDK_Document* pDoc)
71 {
72 Initial(JET_DOC_DIDPRINT);
73
74 m_pTargetDoc = pDoc;
75 }
76
OnDoc_WillSave(CPDFSDK_Document * pDoc)77 void CJS_EventHandler::OnDoc_WillSave(CPDFSDK_Document* pDoc)
78 {
79 Initial(JET_DOC_WILLSAVE);
80 m_pTargetDoc = pDoc;
81 }
82
OnDoc_DidSave(CPDFSDK_Document * pDoc)83 void CJS_EventHandler::OnDoc_DidSave(CPDFSDK_Document* pDoc)
84 {
85 Initial(JET_DOC_DIDSAVE);
86
87 m_pTargetDoc = pDoc;
88 }
89
OnDoc_WillClose(CPDFSDK_Document * pDoc)90 void CJS_EventHandler::OnDoc_WillClose(CPDFSDK_Document* pDoc)
91 {
92 Initial(JET_DOC_WILLCLOSE);
93
94 m_pTargetDoc = pDoc;
95 }
96
OnPage_Open(CPDFSDK_Document * pDoc)97 void CJS_EventHandler::OnPage_Open(CPDFSDK_Document* pDoc)
98 {
99 Initial(JET_PAGE_OPEN);
100
101 m_pTargetDoc = pDoc;
102 }
103
OnPage_Close(CPDFSDK_Document * pDoc)104 void CJS_EventHandler::OnPage_Close(CPDFSDK_Document* pDoc)
105 {
106 Initial(JET_PAGE_CLOSE);
107
108 m_pTargetDoc = pDoc;
109 }
110
OnPage_InView(CPDFSDK_Document * pDoc)111 void CJS_EventHandler::OnPage_InView(CPDFSDK_Document* pDoc)
112 {
113 Initial(JET_PAGE_INVIEW);
114
115 m_pTargetDoc = pDoc;
116 }
117
OnPage_OutView(CPDFSDK_Document * pDoc)118 void CJS_EventHandler::OnPage_OutView(CPDFSDK_Document* pDoc)
119 {
120 Initial(JET_PAGE_OUTVIEW);
121
122 m_pTargetDoc = pDoc;
123 }
124
OnField_MouseEnter(FX_BOOL bModifier,FX_BOOL bShift,CPDF_FormField * pTarget)125 void CJS_EventHandler::OnField_MouseEnter(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget)
126 {
127 Initial(JET_FIELD_MOUSEENTER);
128
129 m_bModifier = bModifier;
130 m_bShift = bShift;
131
132 ASSERT(pTarget != NULL);
133 m_strTargetName = pTarget->GetFullName();
134 }
135
OnField_MouseExit(FX_BOOL bModifier,FX_BOOL bShift,CPDF_FormField * pTarget)136 void CJS_EventHandler::OnField_MouseExit(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget)
137 {
138 Initial(JET_FIELD_MOUSEEXIT);
139
140 m_bModifier = bModifier;
141 m_bShift = bShift;
142 ASSERT(pTarget != NULL);
143 m_strTargetName = pTarget->GetFullName();
144 }
145
OnField_MouseDown(FX_BOOL bModifier,FX_BOOL bShift,CPDF_FormField * pTarget)146 void CJS_EventHandler::OnField_MouseDown(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget)
147 {
148 Initial(JET_FIELD_MOUSEDOWN);
149 m_eEventType = JET_FIELD_MOUSEDOWN;
150
151 m_bModifier = bModifier;
152 m_bShift = bShift;
153 ASSERT(pTarget != NULL);
154 m_strTargetName = pTarget->GetFullName();
155 }
156
OnField_MouseUp(FX_BOOL bModifier,FX_BOOL bShift,CPDF_FormField * pTarget)157 void CJS_EventHandler::OnField_MouseUp(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget)
158 {
159 Initial(JET_FIELD_MOUSEUP);
160
161 m_bModifier = bModifier;
162 m_bShift = bShift;
163 ASSERT(pTarget != NULL);
164 m_strTargetName = pTarget->GetFullName();
165 }
166
OnField_Focus(FX_BOOL bModifier,FX_BOOL bShift,CPDF_FormField * pTarget,const CFX_WideString & Value)167 void CJS_EventHandler::OnField_Focus(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget,
168 const CFX_WideString& Value)
169 {
170 Initial(JET_FIELD_FOCUS);
171
172 m_bModifier = bModifier;
173 m_bShift = bShift;
174 ASSERT(pTarget != NULL);
175 m_strTargetName = pTarget->GetFullName();
176 m_pValue = (CFX_WideString*)&Value;
177 }
178
OnField_Blur(FX_BOOL bModifier,FX_BOOL bShift,CPDF_FormField * pTarget,const CFX_WideString & Value)179 void CJS_EventHandler::OnField_Blur(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget,
180 const CFX_WideString& Value)
181 {
182 Initial(JET_FIELD_BLUR);
183
184 m_bModifier = bModifier;
185 m_bShift = bShift;
186 ASSERT(pTarget != NULL);
187 m_strTargetName = pTarget->GetFullName();
188 m_pValue = (CFX_WideString*)&Value;
189 }
190
OnField_Keystroke(int nCommitKey,CFX_WideString & strChange,const CFX_WideString & strChangeEx,FX_BOOL KeyDown,FX_BOOL bModifier,int & nSelEnd,int & nSelStart,FX_BOOL bShift,CPDF_FormField * pTarget,CFX_WideString & Value,FX_BOOL bWillCommit,FX_BOOL bFieldFull,FX_BOOL & bRc)191 void CJS_EventHandler::OnField_Keystroke(int nCommitKey, CFX_WideString &strChange,
192 const CFX_WideString& strChangeEx, FX_BOOL KeyDown,
193 FX_BOOL bModifier, int& nSelEnd, int& nSelStart,
194 FX_BOOL bShift, CPDF_FormField* pTarget,
195 CFX_WideString& Value, FX_BOOL bWillCommit,
196 FX_BOOL bFieldFull, FX_BOOL& bRc)
197 {
198 Initial(JET_FIELD_KEYSTROKE);
199
200 m_nCommitKey = nCommitKey;
201 m_pWideStrChange = &strChange;
202 m_WideStrChangeEx = strChangeEx;
203 m_bKeyDown = KeyDown;
204 m_bModifier = bModifier;
205 m_pISelEnd = &nSelEnd;
206 m_pISelStart = &nSelStart;
207 m_bShift = bShift;
208 ASSERT(pTarget != NULL);
209 m_strTargetName = pTarget->GetFullName();
210 m_pValue = &Value;
211 m_bWillCommit = bWillCommit;
212 m_pbRc = &bRc;
213 m_bFieldFull = bFieldFull;
214 }
215
OnField_Validate(CFX_WideString & strChange,const CFX_WideString & strChangeEx,FX_BOOL bKeyDown,FX_BOOL bModifier,FX_BOOL bShift,CPDF_FormField * pTarget,CFX_WideString & Value,FX_BOOL & bRc)216 void CJS_EventHandler::OnField_Validate(CFX_WideString& strChange, const CFX_WideString& strChangeEx,
217 FX_BOOL bKeyDown, FX_BOOL bModifier, FX_BOOL bShift,
218 CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL& bRc)
219 {
220 Initial(JET_FIELD_VALIDATE);
221
222 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;
231 }
232
OnField_Calculate(CPDF_FormField * pSource,CPDF_FormField * pTarget,CFX_WideString & Value,FX_BOOL & bRc)233 void CJS_EventHandler::OnField_Calculate(CPDF_FormField* pSource, CPDF_FormField* pTarget,
234 CFX_WideString& Value, FX_BOOL& bRc)
235 {
236 Initial(JET_FIELD_CALCULATE);
237
238 if (pSource)
239 m_strSourceName = pSource->GetFullName();
240 ASSERT(pTarget != NULL);
241 m_strTargetName = pTarget->GetFullName();
242 m_pValue = &Value;
243 m_pbRc = &bRc;
244 }
245
OnField_Format(int nCommitKey,CPDF_FormField * pTarget,CFX_WideString & Value,FX_BOOL bWillCommit)246 void CJS_EventHandler::OnField_Format(int nCommitKey, CPDF_FormField* pTarget,
247 CFX_WideString& Value, FX_BOOL bWillCommit)
248 {
249 Initial(JET_FIELD_FORMAT);
250
251 m_nCommitKey = nCommitKey;
252 ASSERT(pTarget != NULL);
253 m_strTargetName = pTarget->GetFullName();
254 m_pValue = &Value;
255 m_bWillCommit = bWillCommit;
256 }
257
OnScreen_Focus(FX_BOOL bModifier,FX_BOOL bShift,CPDFSDK_Annot * pScreen)258 void CJS_EventHandler::OnScreen_Focus(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
259 {
260 Initial(JET_SCREEN_FOCUS);
261
262 m_bModifier = bModifier;
263 m_bShift = bShift;
264 m_pTargetAnnot = pScreen;
265 }
266
OnScreen_Blur(FX_BOOL bModifier,FX_BOOL bShift,CPDFSDK_Annot * pScreen)267 void CJS_EventHandler::OnScreen_Blur(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
268 {
269 Initial(JET_SCREEN_BLUR);
270
271 m_bModifier = bModifier;
272 m_bShift = bShift;
273 m_pTargetAnnot = pScreen;
274 }
275
OnScreen_Open(FX_BOOL bModifier,FX_BOOL bShift,CPDFSDK_Annot * pScreen)276 void CJS_EventHandler::OnScreen_Open(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
277 {
278 Initial(JET_SCREEN_OPEN);
279
280 m_bModifier = bModifier;
281 m_bShift = bShift;
282 m_pTargetAnnot = pScreen;
283 }
284
OnScreen_Close(FX_BOOL bModifier,FX_BOOL bShift,CPDFSDK_Annot * pScreen)285 void CJS_EventHandler::OnScreen_Close(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
286 {
287 Initial(JET_SCREEN_CLOSE);
288
289 m_bModifier = bModifier;
290 m_bShift = bShift;
291 m_pTargetAnnot = pScreen;
292 }
293
OnScreen_MouseDown(FX_BOOL bModifier,FX_BOOL bShift,CPDFSDK_Annot * pScreen)294 void CJS_EventHandler::OnScreen_MouseDown(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
295 {
296 Initial(JET_SCREEN_MOUSEDOWN);
297
298 m_bModifier = bModifier;
299 m_bShift = bShift;
300 m_pTargetAnnot = pScreen;
301 }
302
OnScreen_MouseUp(FX_BOOL bModifier,FX_BOOL bShift,CPDFSDK_Annot * pScreen)303 void CJS_EventHandler::OnScreen_MouseUp(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
304 {
305 Initial(JET_SCREEN_MOUSEUP);
306
307 m_bModifier = bModifier;
308 m_bShift = bShift;
309 m_pTargetAnnot = pScreen;
310 }
311
OnScreen_MouseEnter(FX_BOOL bModifier,FX_BOOL bShift,CPDFSDK_Annot * pScreen)312 void CJS_EventHandler::OnScreen_MouseEnter(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
313 {
314 Initial(JET_SCREEN_MOUSEENTER);
315
316 m_bModifier = bModifier;
317 m_bShift = bShift;
318 m_pTargetAnnot = pScreen;
319 }
320
OnScreen_MouseExit(FX_BOOL bModifier,FX_BOOL bShift,CPDFSDK_Annot * pScreen)321 void CJS_EventHandler::OnScreen_MouseExit(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
322 {
323 Initial(JET_SCREEN_MOUSEEXIT);
324
325 m_bModifier = bModifier;
326 m_bShift = bShift;
327 m_pTargetAnnot = pScreen;
328 }
329
OnScreen_InView(FX_BOOL bModifier,FX_BOOL bShift,CPDFSDK_Annot * pScreen)330 void CJS_EventHandler::OnScreen_InView(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
331 {
332 Initial(JET_SCREEN_INVIEW);
333
334 m_bModifier = bModifier;
335 m_bShift = bShift;
336 m_pTargetAnnot = pScreen;
337 }
338
OnScreen_OutView(FX_BOOL bModifier,FX_BOOL bShift,CPDFSDK_Annot * pScreen)339 void CJS_EventHandler::OnScreen_OutView(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
340 {
341 Initial(JET_SCREEN_OUTVIEW);
342
343 m_bModifier = bModifier;
344 m_bShift = bShift;
345 m_pTargetAnnot = pScreen;
346 }
347
OnLink_MouseUp(CPDFSDK_Document * pTarget)348 void CJS_EventHandler::OnLink_MouseUp(CPDFSDK_Document* pTarget)
349 {
350 Initial(JET_LINK_MOUSEUP);
351
352 m_pTargetDoc = pTarget;
353 }
354
OnBookmark_MouseUp(CPDF_Bookmark * pBookMark)355 void CJS_EventHandler::OnBookmark_MouseUp(CPDF_Bookmark* pBookMark)
356 {
357 Initial(JET_BOOKMARK_MOUSEUP);
358
359 m_pTargetBookMark = pBookMark;
360 }
361
OnMenu_Exec(CPDFSDK_Document * pTarget,const CFX_WideString & strTargetName)362 void CJS_EventHandler::OnMenu_Exec(CPDFSDK_Document* pTarget, const CFX_WideString& strTargetName)
363 {
364 Initial(JET_MENU_EXEC);
365
366 m_pTargetDoc = pTarget;
367 m_strTargetName = strTargetName;
368 }
369
OnExternal_Exec()370 void CJS_EventHandler::OnExternal_Exec()
371 {
372 Initial(JET_EXTERNAL_EXEC);
373 }
374
OnBatchExec(CPDFSDK_Document * pTarget)375 void CJS_EventHandler::OnBatchExec(CPDFSDK_Document* pTarget)
376 {
377 Initial(JET_BATCH_EXEC);
378
379 m_pTargetDoc = pTarget;
380 }
381
OnConsole_Exec()382 void CJS_EventHandler::OnConsole_Exec()
383 {
384 Initial(JET_CONSOLE_EXEC);
385 }
386
387
Initial(JS_EVENT_T type)388 void CJS_EventHandler::Initial(JS_EVENT_T type)
389 {
390 m_eEventType = type;
391
392 m_strTargetName = L"";
393 m_strSourceName = L"";
394 m_pWideStrChange = NULL;
395 m_WideStrChangeDu = L"";
396 m_WideStrChangeEx = L"";
397 m_nCommitKey = -1;
398 m_bKeyDown = FALSE;
399 m_bModifier = FALSE;
400 m_bShift = FALSE;
401 m_pISelEnd = NULL;
402 m_nSelEndDu = 0;
403 m_pISelStart = NULL;
404 m_nSelStartDu = 0;
405 m_bWillCommit = FALSE;
406 m_pValue = NULL;
407 m_bFieldFull = FALSE;
408 m_pbRc = NULL;
409 m_bRcDu = FALSE;
410
411 m_pSourceDoc = NULL;
412 m_pTargetBookMark = NULL;
413 m_pTargetDoc = NULL;
414 m_pTargetAnnot = NULL;
415
416 m_bValid = TRUE;
417 }
418
Destroy()419 void CJS_EventHandler::Destroy()
420 {
421 m_bValid = FALSE;
422 }
423
IsValid()424 FX_BOOL CJS_EventHandler::IsValid()
425 {
426 return m_bValid;
427 }
428
Change()429 CFX_WideString & CJS_EventHandler::Change()
430 {
431 if (m_pWideStrChange != NULL)
432 return *m_pWideStrChange;
433 else
434 {
435 return m_WideStrChangeDu;
436 }
437 }
438
ChangeEx()439 CFX_WideString CJS_EventHandler::ChangeEx()
440 {
441 return m_WideStrChangeEx;
442 }
443
CommitKey()444 int CJS_EventHandler::CommitKey()
445 {
446 return m_nCommitKey;
447 }
448
FieldFull()449 FX_BOOL CJS_EventHandler::FieldFull()
450 {
451 return m_bFieldFull;
452 }
453
KeyDown()454 FX_BOOL CJS_EventHandler::KeyDown()
455 {
456 return m_bKeyDown;
457 }
458
Modifier()459 FX_BOOL CJS_EventHandler::Modifier()
460 {
461 return m_bModifier;
462 }
463
Name()464 FX_LPCWSTR CJS_EventHandler::Name()
465 {
466 switch (m_eEventType)
467 {
468 case JET_APP_INIT: return (FX_LPCWSTR)L"Init";
469 case JET_BATCH_EXEC: return (FX_LPCWSTR)L"Exec";
470 case JET_BOOKMARK_MOUSEUP: return (FX_LPCWSTR)L"Mouse Up";
471 case JET_CONSOLE_EXEC: return (FX_LPCWSTR)L"Exec";
472 case JET_DOC_DIDPRINT: return (FX_LPCWSTR)L"DidPrint";
473 case JET_DOC_DIDSAVE: return (FX_LPCWSTR)L"DidSave";
474 case JET_DOC_OPEN: return (FX_LPCWSTR)L"Open";
475 case JET_DOC_WILLCLOSE: return (FX_LPCWSTR)L"WillClose";
476 case JET_DOC_WILLPRINT: return (FX_LPCWSTR)L"WillPrint";
477 case JET_DOC_WILLSAVE: return (FX_LPCWSTR)L"WillSave";
478 case JET_EXTERNAL_EXEC: return (FX_LPCWSTR)L"Exec";
479 case JET_FIELD_FOCUS:
480 case JET_SCREEN_FOCUS: return (FX_LPCWSTR)L"Focus";
481 case JET_FIELD_BLUR:
482 case JET_SCREEN_BLUR: return (FX_LPCWSTR)L"Blur";
483 case JET_FIELD_MOUSEDOWN:
484 case JET_SCREEN_MOUSEDOWN: return (FX_LPCWSTR)L"Mouse Down";
485 case JET_FIELD_MOUSEUP:
486 case JET_SCREEN_MOUSEUP: return (FX_LPCWSTR)L"Mouse Up";
487 case JET_FIELD_MOUSEENTER:
488 case JET_SCREEN_MOUSEENTER: return (FX_LPCWSTR)L"Mouse Enter";
489 case JET_FIELD_MOUSEEXIT:
490 case JET_SCREEN_MOUSEEXIT: return (FX_LPCWSTR)L"Mouse Exit";
491 case JET_FIELD_CALCULATE: return (FX_LPCWSTR)L"Calculate";
492 case JET_FIELD_FORMAT: return (FX_LPCWSTR)L"Format";
493 case JET_FIELD_KEYSTROKE: return (FX_LPCWSTR)L"Keystroke";
494 case JET_FIELD_VALIDATE: return (FX_LPCWSTR)L"Validate";
495 case JET_LINK_MOUSEUP: return (FX_LPCWSTR)L"Mouse Up";
496 case JET_MENU_EXEC: return (FX_LPCWSTR)L"Exec";
497 case JET_PAGE_OPEN:
498 case JET_SCREEN_OPEN: return (FX_LPCWSTR)L"Open";
499 case JET_PAGE_CLOSE:
500 case JET_SCREEN_CLOSE: return (FX_LPCWSTR)L"Close";
501 case JET_SCREEN_INVIEW:
502 case JET_PAGE_INVIEW: return (FX_LPCWSTR)L"InView";
503 case JET_PAGE_OUTVIEW:
504 case JET_SCREEN_OUTVIEW: return (FX_LPCWSTR)L"OutView";
505 default:
506 return (FX_LPCWSTR)L"";
507 }
508
509 return (FX_LPCWSTR)L"";
510 }
511
Type()512 FX_LPCWSTR CJS_EventHandler::Type()
513 {
514 switch (m_eEventType)
515 {
516 case JET_APP_INIT: return (FX_LPCWSTR)L"App";
517 case JET_BATCH_EXEC: return (FX_LPCWSTR)L"Batch";
518 case JET_BOOKMARK_MOUSEUP: return (FX_LPCWSTR)L"BookMark";
519 case JET_CONSOLE_EXEC: return (FX_LPCWSTR)L"Console";
520 case JET_DOC_DIDPRINT:
521 case JET_DOC_DIDSAVE:
522 case JET_DOC_OPEN:
523 case JET_DOC_WILLCLOSE:
524 case JET_DOC_WILLPRINT:
525 case JET_DOC_WILLSAVE: return (FX_LPCWSTR)L"Doc";
526 case JET_EXTERNAL_EXEC: return (FX_LPCWSTR)L"External";
527 case JET_FIELD_BLUR:
528 case JET_FIELD_FOCUS:
529 case JET_FIELD_MOUSEDOWN:
530 case JET_FIELD_MOUSEENTER:
531 case JET_FIELD_MOUSEEXIT:
532 case JET_FIELD_MOUSEUP:
533 case JET_FIELD_CALCULATE:
534 case JET_FIELD_FORMAT:
535 case JET_FIELD_KEYSTROKE:
536 case JET_FIELD_VALIDATE: return (FX_LPCWSTR)L"Field";
537 case JET_SCREEN_FOCUS:
538 case JET_SCREEN_BLUR:
539 case JET_SCREEN_OPEN:
540 case JET_SCREEN_CLOSE:
541 case JET_SCREEN_MOUSEDOWN:
542 case JET_SCREEN_MOUSEUP:
543 case JET_SCREEN_MOUSEENTER:
544 case JET_SCREEN_MOUSEEXIT:
545 case JET_SCREEN_INVIEW:
546 case JET_SCREEN_OUTVIEW: return (FX_LPCWSTR)L"Screen";
547 case JET_LINK_MOUSEUP: return (FX_LPCWSTR)L"Link";
548 case JET_MENU_EXEC: return (FX_LPCWSTR)L"Menu";
549 case JET_PAGE_OPEN:
550 case JET_PAGE_CLOSE:
551 case JET_PAGE_INVIEW:
552 case JET_PAGE_OUTVIEW:return (FX_LPCWSTR)L"Page";
553 default:
554 return (FX_LPCWSTR)L"";
555 }
556
557 return (FX_LPCWSTR)L"";
558 }
559
Rc()560 FX_BOOL& CJS_EventHandler::Rc()
561 {
562 if (m_pbRc != NULL)
563 return *m_pbRc;
564 else
565 {
566 return m_bRcDu;
567 }
568 }
569
SelEnd()570 int & CJS_EventHandler::SelEnd()
571 {
572 if (m_pISelEnd != NULL)
573 {
574 return *m_pISelEnd;
575 }
576 else
577 {
578 return m_nSelEndDu;
579 }
580 }
581
SelStart()582 int & CJS_EventHandler::SelStart()
583 {
584 if (m_pISelStart != NULL)
585 return * m_pISelStart;
586 else
587 {
588 return m_nSelStartDu;
589 }
590 }
591
Shift()592 FX_BOOL CJS_EventHandler::Shift()
593 {
594 return m_bShift;
595 }
596
Source()597 Field* CJS_EventHandler::Source()
598 {
599 ASSERT(m_pJSContext != NULL);
600
601 CJS_Runtime* pRuntime = m_pJSContext->GetJSRuntime();
602
603 JSFXObject pDocObj = JS_NewFxDynamicObj(*pRuntime, m_pJSContext, JS_GetObjDefnID(*pRuntime, L"Document"));
604 ASSERT(pDocObj.IsEmpty() == FALSE);
605 JSFXObject pFieldObj = JS_NewFxDynamicObj(*pRuntime, m_pJSContext, JS_GetObjDefnID(*pRuntime, L"Field"));
606 ASSERT(pFieldObj.IsEmpty() == FALSE);
607
608 CJS_Document* pJSDocument = (CJS_Document*)JS_GetPrivate(pDocObj);
609 ASSERT(pJSDocument != NULL);
610 Document* pDocument = (Document*)pJSDocument->GetEmbedObject();
611 ASSERT(pDocument != NULL);
612 if (m_pTargetDoc != NULL)
613 pDocument->AttachDoc(m_pTargetDoc);
614 else
615 pDocument->AttachDoc(m_pJSContext->GetReaderDocument());
616
617 //if (m_pSourceField == NULL)
618 // return NULL;
619 //CRAO_Widget *pWidget = IBCL_Widget::GetWidget(m_pSourceField);
620 //CPDF_FormField* pFormField = pWidget->GetFormField();
621 //ASSERT(pFormField);
622 //CFX_WideString csFieldName = pFormField->GetFullName();
623 CJS_Field * pJSField = (CJS_Field*)JS_GetPrivate(pFieldObj);
624 ASSERT(pJSField != NULL);
625 Field * pField = (Field *)pJSField->GetEmbedObject();
626 ASSERT(pField != NULL);
627 pField->AttachField(pDocument, m_strSourceName);
628 return pField;
629 }
630
Target_Field()631 Field* CJS_EventHandler::Target_Field()
632 {
633 ASSERT(m_pJSContext != NULL);
634
635 CJS_Runtime* pRuntime = m_pJSContext->GetJSRuntime();
636
637 JSFXObject pDocObj = JS_NewFxDynamicObj(*pRuntime, m_pJSContext, JS_GetObjDefnID(*pRuntime, L"Document"));
638 ASSERT(pDocObj.IsEmpty() == FALSE);
639 JSFXObject pFieldObj = JS_NewFxDynamicObj(*pRuntime, m_pJSContext, JS_GetObjDefnID(*pRuntime, L"Field"));
640 ASSERT(pFieldObj.IsEmpty() == FALSE);
641
642 CJS_Document* pJSDocument = (CJS_Document*)JS_GetPrivate(pDocObj);
643 ASSERT(pJSDocument != NULL);
644 Document* pDocument = (Document*)pJSDocument->GetEmbedObject();
645 ASSERT(pDocument != NULL);
646 if (m_pTargetDoc != NULL)
647 pDocument->AttachDoc(m_pTargetDoc);
648 else
649 pDocument->AttachDoc(m_pJSContext->GetReaderDocument());
650
651 CJS_Field* pJSField = (CJS_Field*)JS_GetPrivate(pFieldObj);
652 ASSERT(pJSField != NULL);
653
654 Field* pField = (Field *)pJSField->GetEmbedObject();
655 ASSERT(pField != NULL);
656
657 pField->AttachField(pDocument, m_strTargetName);
658 return pField;
659 }
660
Value()661 CFX_WideString& CJS_EventHandler::Value()
662 {
663 return *m_pValue;
664 }
665
WillCommit()666 FX_BOOL CJS_EventHandler::WillCommit()
667 {
668 return m_bWillCommit;
669 }
670
TargetName()671 CFX_WideString CJS_EventHandler::TargetName()
672 {
673 return m_strTargetName;
674 }
675
676
677