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#include "../../include/javascript/JavaScript.h"
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/IJavaScript.h"
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//#include "../../include/javascript/JS_ResMgr.h"
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_Context.h"
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_EventHandler.h"
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_Runtime.h"
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/resource.h"
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* -------------------------- CJS_Context -------------------------- */
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCJS_Context::CJS_Context(CJS_Runtime* pRuntime) :
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pRuntime(pRuntime),
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_bBusy(FALSE),
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_bMsgBoxEnable(TRUE)
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler = new CJS_EventHandler(this);
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCJS_Context::~CJS_Context(void)
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (m_pEventHandler)
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		delete m_pEventHandler;
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		m_pEventHandler = NULL;
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFSDK_Document* CJS_Context::GetReaderDocument()
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pRuntime != NULL);
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return m_pRuntime->GetReaderDocument();
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFDoc_Environment* CJS_Context::GetReaderApp()
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pRuntime != NULL);
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return m_pRuntime->GetReaderApp();
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CJS_Context::DoJob(int nMode, const CFX_WideString& script, CFX_WideString& info)
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (m_bBusy)
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		info = JSGetStringFromID(this, IDS_STRING_JSBUSY);
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_bBusy = TRUE;
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pRuntime != NULL);
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler->IsValid());
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!m_pRuntime->AddEventToLoop(m_pEventHandler->TargetName(), m_pEventHandler->EventType()))
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		info = JSGetStringFromID(this, IDS_STRING_JSEVENT);
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	FXJSErr error ={NULL,NULL, 0};
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int nRet = 0;
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	try
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (script.GetLength() > 0)
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (nMode == 0)
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				nRet = JS_Execute(*m_pRuntime, this, script, script.GetLength(), &error);
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			else
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				nRet = JS_Parse(*m_pRuntime, this, script, script.GetLength(), &error);
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (nRet < 0)
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CFX_WideString sLine;
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			sLine.Format((FX_LPCWSTR)L"[ Line: %05d { %s } ] : %s",error.linnum-1,error.srcline,error.message);
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//			TRACE(L"/* -------------- JS Error -------------- */\n");
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//			TRACE(sLine);
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//			TRACE(L"\n");
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			//CFX_ByteString sTemp = CFX_ByteString::FromUnicode(error.message);
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			info += sLine;
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			info = JSGetStringFromID(this, IDS_STRING_RUN);
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	catch (...)
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		info = JSGetStringFromID(this, IDS_STRING_UNHANDLED);
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nRet = -1;
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pRuntime->RemoveEventInLoop(m_pEventHandler->TargetName(), m_pEventHandler->EventType());
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->Destroy();
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_bBusy = FALSE;
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return nRet >= 0;
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CJS_Context::RunScript(const CFX_WideString& script, CFX_WideString& info)
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	v8::Isolate::Scope isolate_scope(m_pRuntime->GetIsolate());
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	v8::HandleScope handle_scope(m_pRuntime->GetIsolate());
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	v8::Local<v8::Context> context = m_pRuntime->NewJSContext();
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	v8::Context::Scope context_scope(context);
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return DoJob(0, script, info);
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CJS_Context::Compile(const CFX_WideString& script, CFX_WideString& info)
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	v8::Isolate::Scope isolate_scope(m_pRuntime->GetIsolate());
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	v8::HandleScope handle_scope(m_pRuntime->GetIsolate());
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	v8::Local<v8::Context> context = m_pRuntime->NewJSContext();
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	v8::Context::Scope context_scope(context);
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return DoJob(1, script, info);
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnApp_Init()
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnApp_Init();
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnDoc_Open(CPDFSDK_Document* pDoc, const CFX_WideString &strTargetName)
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnDoc_Open(pDoc,strTargetName);
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnDoc_WillPrint(CPDFSDK_Document* pDoc)
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnDoc_WillPrint(pDoc);
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnDoc_DidPrint(CPDFSDK_Document* pDoc)
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnDoc_DidPrint(pDoc);
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnDoc_WillSave(CPDFSDK_Document* pDoc)
161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnDoc_WillSave(pDoc);
164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnDoc_DidSave(CPDFSDK_Document* pDoc)
167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnDoc_DidSave(pDoc);
170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnDoc_WillClose(CPDFSDK_Document* pDoc)
173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnDoc_WillClose(pDoc);
176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnPage_Open(CPDFSDK_Document* pTarget)
179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnPage_Open(pTarget);
182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnPage_Close(CPDFSDK_Document* pTarget)
185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnPage_Close(pTarget);
188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnPage_InView(CPDFSDK_Document* pTarget)
191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnPage_InView(pTarget);
194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnPage_OutView(CPDFSDK_Document* pTarget)
197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnPage_OutView(pTarget);
200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnField_MouseDown(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField *pTarget)
203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnField_MouseDown(bModifier, bShift, pTarget);
206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnField_MouseEnter(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField *pTarget)
209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnField_MouseEnter(bModifier, bShift, pTarget);
212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnField_MouseExit(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField *pTarget)
215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnField_MouseExit(bModifier, bShift, pTarget);
218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnField_MouseUp(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField *pTarget)
221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnField_MouseUp(bModifier, bShift, pTarget);
224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnField_Focus(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget, const CFX_WideString& Value)
227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnField_Focus(bModifier, bShift, pTarget, Value);
230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnField_Blur(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget, const CFX_WideString& Value)
233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnField_Blur(bModifier, bShift, pTarget, Value);
236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnField_Calculate(CPDF_FormField* pSource, CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL& bRc)
239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnField_Calculate(pSource, pTarget, Value, bRc);
242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnField_Format(int nCommitKey, CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL bWillCommit)
245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnField_Format(nCommitKey, pTarget, Value, bWillCommit);
248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnField_Keystroke(int nCommitKey, CFX_WideString& strChange, const CFX_WideString& strChangeEx,
252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov									FX_BOOL bKeyDown, FX_BOOL bModifier, int &nSelEnd,int &nSelStart,
253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov									FX_BOOL bShift, CPDF_FormField* pTarget, CFX_WideString& Value,
254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov									FX_BOOL bWillCommit, FX_BOOL bFieldFull, FX_BOOL& bRc)
255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnField_Keystroke(nCommitKey, strChange, strChangeEx, bKeyDown,
258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bModifier, nSelEnd, nSelStart, bShift, pTarget, Value, bWillCommit, bFieldFull, bRc);
259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnField_Validate(CFX_WideString& strChange,const CFX_WideString& strChangeEx,
262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov								   FX_BOOL bKeyDown, FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget,
263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov								   CFX_WideString& Value, FX_BOOL& bRc)
264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnField_Validate(strChange, strChangeEx, bKeyDown, bModifier, bShift, pTarget, Value, bRc);
267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnScreen_Focus(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnScreen_Focus(bModifier, bShift, pScreen);
273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnScreen_Blur(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnScreen_Blur(bModifier, bShift, pScreen);
279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnScreen_Open(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnScreen_Open(bModifier, bShift, pScreen);
285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnScreen_Close(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnScreen_Close(bModifier, bShift, pScreen);
291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnScreen_MouseDown(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnScreen_MouseDown(bModifier, bShift, pScreen);
297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnScreen_MouseUp(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnScreen_MouseUp(bModifier, bShift, pScreen);
303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnScreen_MouseEnter(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnScreen_MouseEnter(bModifier, bShift, pScreen);
309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnScreen_MouseExit(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnScreen_MouseExit(bModifier, bShift, pScreen);
315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnScreen_InView(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnScreen_InView(bModifier, bShift, pScreen);
321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnScreen_OutView(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnScreen_OutView(bModifier, bShift, pScreen);
327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnBookmark_MouseUp(CPDF_Bookmark* pBookMark)
330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnBookmark_MouseUp(pBookMark);
333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnLink_MouseUp(CPDFSDK_Document* pTarget)
336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnLink_MouseUp(pTarget);
339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnConsole_Exec()
342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnConsole_Exec();
345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnExternal_Exec()
348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnExternal_Exec();
351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnBatchExec(CPDFSDK_Document* pTarget)
354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnBatchExec(pTarget);
357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJS_Context::OnMenu_Exec(CPDFSDK_Document* pTarget,const CFX_WideString& strTargetName)
360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pEventHandler != NULL);
362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pEventHandler->OnMenu_Exec(pTarget, strTargetName);
363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
365