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