blob: 76c6d37f03a841d3019d421962a19cc2b3595951 [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.
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
21CJS_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
46CJS_EventHandler::~CJS_EventHandler()
47{
48}
49
50void CJS_EventHandler::OnApp_Init()
51{
52 Initial(JET_APP_INIT);
53}
54
55void 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
63void CJS_EventHandler::OnDoc_WillPrint(CPDFSDK_Document* pDoc)
64{
65 Initial(JET_DOC_WILLPRINT);
66
67 m_pTargetDoc = pDoc;
68}
69
70void CJS_EventHandler::OnDoc_DidPrint(CPDFSDK_Document* pDoc)
71{
72 Initial(JET_DOC_DIDPRINT);
73
74 m_pTargetDoc = pDoc;
75}
76
77void CJS_EventHandler::OnDoc_WillSave(CPDFSDK_Document* pDoc)
78{
79 Initial(JET_DOC_WILLSAVE);
80 m_pTargetDoc = pDoc;
81}
82
83void CJS_EventHandler::OnDoc_DidSave(CPDFSDK_Document* pDoc)
84{
85 Initial(JET_DOC_DIDSAVE);
86
87 m_pTargetDoc = pDoc;
88}
89
90void CJS_EventHandler::OnDoc_WillClose(CPDFSDK_Document* pDoc)
91{
92 Initial(JET_DOC_WILLCLOSE);
93
94 m_pTargetDoc = pDoc;
95}
96
97void CJS_EventHandler::OnPage_Open(CPDFSDK_Document* pDoc)
98{
99 Initial(JET_PAGE_OPEN);
100
101 m_pTargetDoc = pDoc;
102}
103
104void CJS_EventHandler::OnPage_Close(CPDFSDK_Document* pDoc)
105{
106 Initial(JET_PAGE_CLOSE);
107
108 m_pTargetDoc = pDoc;
109}
110
111void CJS_EventHandler::OnPage_InView(CPDFSDK_Document* pDoc)
112{
113 Initial(JET_PAGE_INVIEW);
114
115 m_pTargetDoc = pDoc;
116}
117
118void CJS_EventHandler::OnPage_OutView(CPDFSDK_Document* pDoc)
119{
120 Initial(JET_PAGE_OUTVIEW);
121
122 m_pTargetDoc = pDoc;
123}
124
125void 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
136void 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
146void 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
157void 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
167void 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
179void 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
191void 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
216void 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
233void 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
246void 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
258void 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
267void 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
276void 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
285void 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
294void 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
303void 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
312void 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
321void 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
330void 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
339void 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
348void CJS_EventHandler::OnLink_MouseUp(CPDFSDK_Document* pTarget)
349{
350 Initial(JET_LINK_MOUSEUP);
351
352 m_pTargetDoc = pTarget;
353}
354
355void CJS_EventHandler::OnBookmark_MouseUp(CPDF_Bookmark* pBookMark)
356{
357 Initial(JET_BOOKMARK_MOUSEUP);
358
359 m_pTargetBookMark = pBookMark;
360}
361
362void 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
370void CJS_EventHandler::OnExternal_Exec()
371{
372 Initial(JET_EXTERNAL_EXEC);
373}
374
375void CJS_EventHandler::OnBatchExec(CPDFSDK_Document* pTarget)
376{
377 Initial(JET_BATCH_EXEC);
378
379 m_pTargetDoc = pTarget;
380}
381
382void CJS_EventHandler::OnConsole_Exec()
383{
384 Initial(JET_CONSOLE_EXEC);
385}
386
387
388void 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
419void CJS_EventHandler::Destroy()
420{
421 m_bValid = FALSE;
422}
423
424FX_BOOL CJS_EventHandler::IsValid()
425{
426 return m_bValid;
427}
428
429CFX_WideString & CJS_EventHandler::Change()
430{
431 if (m_pWideStrChange != NULL)
432 return *m_pWideStrChange;
433 else
434 {
435 return m_WideStrChangeDu;
436 }
437}
438
439CFX_WideString CJS_EventHandler::ChangeEx()
440{
441 return m_WideStrChangeEx;
442}
443
444int CJS_EventHandler::CommitKey()
445{
446 return m_nCommitKey;
447}
448
449FX_BOOL CJS_EventHandler::FieldFull()
450{
451 return m_bFieldFull;
452}
453
454FX_BOOL CJS_EventHandler::KeyDown()
455{
456 return m_bKeyDown;
457}
458
459FX_BOOL CJS_EventHandler::Modifier()
460{
461 return m_bModifier;
462}
463
464FX_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
512FX_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
560FX_BOOL& CJS_EventHandler::Rc()
561{
562 if (m_pbRc != NULL)
563 return *m_pbRc;
564 else
565 {
566 return m_bRcDu;
567 }
568}
569
570int & 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
582int & CJS_EventHandler::SelStart()
583{
584 if (m_pISelStart != NULL)
585 return * m_pISelStart;
586 else
587 {
588 return m_nSelStartDu;
589 }
590}
591
592FX_BOOL CJS_EventHandler::Shift()
593{
594 return m_bShift;
595}
596
597Field* 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
631Field* 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
661CFX_WideString& CJS_EventHandler::Value()
662{
663 return *m_pValue;
664}
665
666FX_BOOL CJS_EventHandler::WillCommit()
667{
668 return m_bWillCommit;
669}
670
671CFX_WideString CJS_EventHandler::TargetName()
672{
673 return m_strTargetName;
674}
675
676