// Copyright 2014 PDFium Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style license that can be | |
// found in the LICENSE file. | |
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | |
#include "../../include/javascript/JavaScript.h" | |
#include "../../include/javascript/IJavaScript.h" | |
#include "../../include/javascript/JS_Define.h" | |
#include "../../include/javascript/JS_Object.h" | |
#include "../../include/javascript/JS_Value.h" | |
#include "../../include/javascript/JS_EventHandler.h" | |
//#include "../include/JS_ResMgr.h" | |
#include "../../include/javascript/JS_Context.h" | |
#include "../../include/javascript/event.h" | |
#include "../../include/javascript/Field.h" | |
/* -------------------------- event -------------------------- */ | |
BEGIN_JS_STATIC_CONST(CJS_Event) | |
END_JS_STATIC_CONST() | |
BEGIN_JS_STATIC_PROP(CJS_Event) | |
JS_STATIC_PROP_ENTRY(change) | |
JS_STATIC_PROP_ENTRY(changeEx) | |
JS_STATIC_PROP_ENTRY(commitKey) | |
JS_STATIC_PROP_ENTRY(fieldFull) | |
JS_STATIC_PROP_ENTRY(keyDown) | |
JS_STATIC_PROP_ENTRY(modifier) | |
JS_STATIC_PROP_ENTRY(name) | |
JS_STATIC_PROP_ENTRY(rc) | |
JS_STATIC_PROP_ENTRY(richChange) | |
JS_STATIC_PROP_ENTRY(richChangeEx) | |
JS_STATIC_PROP_ENTRY(richValue) | |
JS_STATIC_PROP_ENTRY(selEnd) | |
JS_STATIC_PROP_ENTRY(selStart) | |
JS_STATIC_PROP_ENTRY(shift) | |
JS_STATIC_PROP_ENTRY(source) | |
JS_STATIC_PROP_ENTRY(target) | |
JS_STATIC_PROP_ENTRY(targetName) | |
JS_STATIC_PROP_ENTRY(type) | |
JS_STATIC_PROP_ENTRY(value) | |
JS_STATIC_PROP_ENTRY(willCommit) | |
END_JS_STATIC_PROP() | |
BEGIN_JS_STATIC_METHOD(CJS_Event) | |
END_JS_STATIC_METHOD() | |
IMPLEMENT_JS_CLASS(CJS_Event,event) | |
event::event(CJS_Object * pJsObject) : CJS_EmbedObj(pJsObject) | |
{ | |
} | |
event::~event(void) | |
{ | |
} | |
FX_BOOL event::change(OBJ_PROP_PARAMS) | |
{ | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
CFX_WideString &wChange = pEvent->Change(); | |
if (vp.IsSetting()) | |
{ | |
if (vp.GetType() == VT_string) | |
vp >> wChange; | |
} | |
else | |
{ | |
vp << wChange; | |
} | |
return TRUE; | |
} | |
FX_BOOL event::changeEx(OBJ_PROP_PARAMS) | |
{ | |
if (!vp.IsGetting())return FALSE; | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
vp << pEvent->ChangeEx(); | |
return TRUE; | |
} | |
FX_BOOL event::commitKey(OBJ_PROP_PARAMS) | |
{ | |
if (!vp.IsGetting())return FALSE; | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
vp << pEvent->CommitKey(); | |
return TRUE; | |
} | |
FX_BOOL event::fieldFull(OBJ_PROP_PARAMS) | |
{ | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
if (!vp.IsGetting() && wcscmp((const wchar_t*)pEvent->Name(),L"Keystroke") != 0) | |
return FALSE; | |
if (pEvent->FieldFull()) | |
vp << TRUE; | |
else | |
vp << FALSE; | |
return TRUE; | |
} | |
FX_BOOL event::keyDown(OBJ_PROP_PARAMS) | |
{ | |
if (!vp.IsGetting())return FALSE; | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
if (pEvent->KeyDown()) | |
vp << TRUE; | |
else | |
vp << FALSE; | |
return TRUE; | |
} | |
FX_BOOL event::modifier(OBJ_PROP_PARAMS) | |
{ | |
if (!vp.IsGetting())return FALSE; | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
if (pEvent->Modifier()) | |
vp << TRUE; | |
else | |
vp << FALSE; | |
return TRUE; | |
} | |
FX_BOOL event::name(OBJ_PROP_PARAMS) | |
{ | |
if (!vp.IsGetting())return FALSE; | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
vp << pEvent->Name(); | |
return TRUE; | |
} | |
FX_BOOL event::rc(OBJ_PROP_PARAMS) | |
{ | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
FX_BOOL &bRc = pEvent->Rc(); | |
if (vp.IsSetting()) | |
{ | |
vp>>bRc; | |
} | |
else | |
{ | |
vp<<bRc; | |
} | |
return TRUE; | |
} | |
FX_BOOL event::richChange(OBJ_PROP_PARAMS) | |
{ | |
return TRUE; | |
if (vp.IsSetting()) | |
{ | |
} | |
else | |
{ | |
; | |
} | |
return TRUE; | |
} | |
FX_BOOL event::richChangeEx(OBJ_PROP_PARAMS) | |
{ | |
return TRUE; | |
if (vp.IsSetting()) | |
{ | |
} | |
else | |
{ | |
; | |
} | |
return TRUE; | |
} | |
FX_BOOL event::richValue(OBJ_PROP_PARAMS) | |
{ | |
return TRUE; | |
if (vp.IsSetting()) | |
{ | |
} | |
else | |
{ | |
; | |
} | |
return TRUE; | |
} | |
FX_BOOL event::selEnd(OBJ_PROP_PARAMS) | |
{ | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
if (wcscmp((const wchar_t*)pEvent->Name(),L"Keystroke") != 0) | |
{ | |
return TRUE; | |
} | |
int &iSelEnd = pEvent->SelEnd(); | |
if (vp.IsSetting()) | |
{ | |
vp >> iSelEnd; | |
} | |
else | |
{ | |
vp << iSelEnd; | |
} | |
return TRUE; | |
} | |
FX_BOOL event::selStart(OBJ_PROP_PARAMS) | |
{ | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
if (wcscmp((const wchar_t*)pEvent->Name(),L"Keystroke") != 0) | |
{ | |
return TRUE; | |
} | |
int &iSelStart = pEvent->SelStart(); | |
if (vp.IsSetting()) | |
{ | |
vp >> iSelStart; | |
} | |
else | |
{ | |
vp << iSelStart; | |
} | |
return TRUE; | |
} | |
FX_BOOL event::shift(OBJ_PROP_PARAMS) | |
{ | |
if (!vp.IsGetting())return FALSE; | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
if (pEvent->Shift()) | |
vp << TRUE; | |
else | |
vp << FALSE; | |
return TRUE; | |
} | |
FX_BOOL event::source(OBJ_PROP_PARAMS) | |
{ | |
if (!vp.IsGetting())return FALSE; | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
vp << pEvent->Source()->GetJSObject(); | |
return TRUE; | |
} | |
FX_BOOL event::target(OBJ_PROP_PARAMS) | |
{ | |
if (!vp.IsGetting())return FALSE; | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
vp<<pEvent->Target_Field()->GetJSObject(); | |
return TRUE; | |
} | |
FX_BOOL event::targetName(OBJ_PROP_PARAMS) | |
{ | |
if (!vp.IsGetting())return FALSE; | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
vp << pEvent->TargetName(); | |
return TRUE; | |
} | |
FX_BOOL event::type(OBJ_PROP_PARAMS) | |
{ | |
if (!vp.IsGetting())return FALSE; | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
vp << pEvent->Type(); | |
return TRUE; | |
} | |
FX_BOOL event::value(OBJ_PROP_PARAMS) | |
{ | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
if (wcscmp((const wchar_t*)pEvent->Type(),L"Field") != 0) | |
return FALSE; | |
if(!pEvent->m_pValue) | |
return FALSE; | |
CFX_WideString & val = pEvent->Value(); | |
if (vp.IsSetting()) | |
{ | |
val = vp; | |
} | |
else | |
{ | |
vp << val; | |
} | |
return TRUE; | |
} | |
FX_BOOL event::willCommit(OBJ_PROP_PARAMS) | |
{ | |
if (!vp.IsGetting())return FALSE; | |
CJS_Context* pContext = (CJS_Context*)cc; | |
ASSERT(pContext != NULL); | |
CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
ASSERT(pEvent != NULL); | |
if (pEvent->WillCommit()) | |
vp << TRUE; | |
else | |
vp << FALSE; | |
return TRUE; | |
} | |