• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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