1e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved. 2e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// found in the LICENSE file. 4e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 5e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 7e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#ifndef FPDFSDK_INCLUDE_JAVASCRIPT_JS_EVENTHANDLER_H_ 8e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define FPDFSDK_INCLUDE_JAVASCRIPT_JS_EVENTHANDLER_H_ 9e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 10e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "../../../core/include/fxcrt/fx_string.h" 11e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "../../../core/include/fxcrt/fx_system.h" 12e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 13e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CJS_Context; 14e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDFSDK_Annot; 15e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDFSDK_Document; 16e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_Bookmark; 17e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_FormField; 18e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass Field; 19e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 20e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovenum JS_EVENT_T 21e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 22e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_UNKNOWN, 23e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_APP_INIT, 24e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_DOC_OPEN, 25e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_DOC_WILLPRINT, 26e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_DOC_DIDPRINT, 27e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_DOC_WILLSAVE, 28e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_DOC_DIDSAVE, 29e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_DOC_WILLCLOSE, 30e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_PAGE_OPEN, 31e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_PAGE_CLOSE, 32e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_PAGE_INVIEW, 33e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_PAGE_OUTVIEW, 34e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_FIELD_MOUSEDOWN, 35e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_FIELD_MOUSEUP, 36e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_FIELD_MOUSEENTER, 37e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_FIELD_MOUSEEXIT, 38e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_FIELD_FOCUS, 39e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_FIELD_BLUR, 40e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_FIELD_KEYSTROKE, 41e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_FIELD_VALIDATE, 42e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_FIELD_CALCULATE, 43e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_FIELD_FORMAT, 44e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_SCREEN_FOCUS, 45e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_SCREEN_BLUR, 46e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_SCREEN_OPEN, 47e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_SCREEN_CLOSE, 48e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_SCREEN_MOUSEDOWN, 49e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_SCREEN_MOUSEUP, 50e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_SCREEN_MOUSEENTER, 51e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_SCREEN_MOUSEEXIT, 52e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_SCREEN_INVIEW, 53e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_SCREEN_OUTVIEW, 54e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_BATCH_EXEC, 55e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_MENU_EXEC, 56e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_CONSOLE_EXEC, 57e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_EXTERNAL_EXEC, 58e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_BOOKMARK_MOUSEUP, 59e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JET_LINK_MOUSEUP 60e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 61e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 62e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CJS_EventHandler 63e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 64e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 65e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CJS_EventHandler(CJS_Context * pContext); 66e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~CJS_EventHandler(); 67e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 68e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnApp_Init(); 69e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 70e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnDoc_Open(CPDFSDK_Document* pDoc, const CFX_WideString& strTargetName); 71e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnDoc_WillPrint(CPDFSDK_Document* pDoc); 72e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnDoc_DidPrint(CPDFSDK_Document* pDoc); 73e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnDoc_WillSave(CPDFSDK_Document* pDoc); 74e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnDoc_DidSave(CPDFSDK_Document* pDoc); 75e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnDoc_WillClose(CPDFSDK_Document* pDoc); 76e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 77e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnPage_Open(CPDFSDK_Document* pDoc); 78e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnPage_Close(CPDFSDK_Document* pDoc); 79e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnPage_InView(CPDFSDK_Document* pTarget); 80e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnPage_OutView(CPDFSDK_Document* pTarget); 81e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 82e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnField_Calculate(CPDF_FormField* pSource, CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL& bRc); 83e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnField_Format(int nCommitKey, CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL bWillCommit); 84e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnField_Keystroke(int nCommitKey, CFX_WideString& strChange, const CFX_WideString& strChangeEx, 85e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL KeyDown, FX_BOOL bModifier, int &nSelEnd,int &nSelStart, FX_BOOL bShift, 86e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL bWillCommit, 87e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL bFieldFull, FX_BOOL &bRc); 88e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnField_Validate(CFX_WideString& strChange, const CFX_WideString& strChangeEx, FX_BOOL bKeyDown, 89e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL& bRc); 90e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 91e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnField_MouseDown(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField *pTarget); 92e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnField_MouseEnter(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField *pTarget); 93e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnField_MouseExit(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField *pTarget); 94e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnField_MouseUp(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField *pTarget); 95e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnField_Blur(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget, const CFX_WideString& Value); 96e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnField_Focus(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget, const CFX_WideString& Value); 97e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 98e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnScreen_Focus(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen); 99e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnScreen_Blur(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen); 100e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnScreen_Open(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen); 101e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnScreen_Close(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen); 102e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnScreen_MouseDown(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen); 103e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnScreen_MouseUp(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen); 104e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnScreen_MouseEnter(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen); 105e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnScreen_MouseExit(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen); 106e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnScreen_InView(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen); 107e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnScreen_OutView(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen); 108e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 109e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnBookmark_MouseUp(CPDF_Bookmark* pBookMark); 110e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnLink_MouseUp(CPDFSDK_Document* pTarget); 111e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 112e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnMenu_Exec(CPDFSDK_Document* pTarget, const CFX_WideString& strTargetName); 113e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnBatchExec(CPDFSDK_Document *pTarget); 114e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnConsole_Exec(); 115e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void OnExternal_Exec(); 116e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 117e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 118e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void Initial(JS_EVENT_T type); 119e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void Destroy(); 120e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsValid(); 121e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 122e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 123e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_WideString& Change(); 124e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_WideString ChangeEx(); 125e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int CommitKey(); 126e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL FieldFull(); 127e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL KeyDown(); 128e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL Modifier(); 129e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_LPCWSTR Name(); 130e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_LPCWSTR Type(); 131e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL& Rc(); 132e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int& SelEnd(); 133e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int& SelStart(); 134e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL Shift(); 135e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov Field* Source(); 136e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov Field* Target_Field(); 137e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_WideString& Value(); 138e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL WillCommit(); 139e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_WideString TargetName(); 140e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 141e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JS_EVENT_T EventType() {return m_eEventType;}; 142e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 143e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 144e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CJS_Context* m_pJSContext; 145e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov JS_EVENT_T m_eEventType; 146e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_bValid; 147e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 148e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_WideString m_strTargetName; 149e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_WideString m_strSourceName; 150e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_WideString* m_pWideStrChange; 151e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_WideString m_WideStrChangeDu; 152e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_WideString m_WideStrChangeEx; 153e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int m_nCommitKey; 154e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_bKeyDown; 155e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_bModifier; 156e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_bShift; 157e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int* m_pISelEnd; 158e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int m_nSelEndDu; 159e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int* m_pISelStart; 160e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int m_nSelStartDu; 161e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_bWillCommit; 162e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_WideString* m_pValue; 163e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_bFieldFull; 164e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL* m_pbRc; 165e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_bRcDu; 166e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 167e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDFSDK_Document* m_pSourceDoc; 168e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Bookmark* m_pTargetBookMark; 169e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDFSDK_Document* m_pTargetDoc; 170e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDFSDK_Annot* m_pTargetAnnot; 171e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 172e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 173e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#endif // FPDFSDK_INCLUDE_JAVASCRIPT_JS_EVENTHANDLER_H_ 174