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 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 677