1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// found in the LICENSE file. 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/foxitlib.h" 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxfa/src/common/xfa_common.h" 9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_fwladapter.h" 10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_ffwidgethandler.h" 11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_ffwidget.h" 12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_fffield.h" 13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_ffchoicelist.h" 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_ffdoc.h" 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_ffdocview.h" 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_FFWidgetHandler::CXFA_FFWidgetHandler(CXFA_FFDocView* pDocView) 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : m_pDocView(pDocView) {} 18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_FFWidgetHandler::~CXFA_FFWidgetHandler() {} 19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIXFA_PageView* CXFA_FFWidgetHandler::GetPageView(IXFA_Widget* hWidget) { 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->GetPageView(); 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_FFWidgetHandler::GetRect(IXFA_Widget* hWidget, CFX_RectF& rt) { 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->GetWidgetRect(rt); 24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_DWORD CXFA_FFWidgetHandler::GetStatus(IXFA_Widget* hWidget) { 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->GetStatus(); 27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::GetBBox(IXFA_Widget* hWidget, 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_RectF& rtBox, 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwStatus, 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bDrawFocus) { 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget) 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->GetBBox(rtBox, dwStatus, bDrawFocus); 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_WidgetAcc* CXFA_FFWidgetHandler::GetDataAcc(IXFA_Widget* hWidget) { 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->GetDataAcc(); 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_FFWidgetHandler::GetName(IXFA_Widget* hWidget, 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString& wsName, 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iNameType) { 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->GetDataAcc()->GetName(wsName, 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iNameType); 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::GetToolTip(IXFA_Widget* hWidget, 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString& wsToolTip) { 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->GetToolTip(wsToolTip); 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_FFWidgetHandler::SetPrivateData(IXFA_Widget* hWidget, 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void* module_id, 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void* pData, 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann PD_CALLBACK_FREEDATA callback) { 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget) 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->SetPrivateData(module_id, pData, callback); 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid* CXFA_FFWidgetHandler::GetPrivateData(IXFA_Widget* hWidget, 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void* module_id) { 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->GetPrivateData(module_id); 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnMouseEnter(IXFA_Widget* hWidget) { 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->LockUpdate(); 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRet = static_cast<CXFA_FFWidget*>(hWidget)->OnMouseEnter(); 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->UnlockUpdate(); 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->UpdateDocView(); 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRet; 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnMouseExit(IXFA_Widget* hWidget) { 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->LockUpdate(); 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRet = static_cast<CXFA_FFWidget*>(hWidget)->OnMouseExit(); 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->UnlockUpdate(); 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->UpdateDocView(); 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRet; 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnLButtonDown(IXFA_Widget* hWidget, 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwFlags, 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fx, 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fy) { 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->LockUpdate(); 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy); 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRet = 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->OnLButtonDown(dwFlags, fx, fy); 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bRet && m_pDocView->SetFocus(hWidget)) { 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ((CXFA_FFDoc*)m_pDocView->GetDoc()) 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->GetDocProvider() 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->SetFocusWidget(m_pDocView->GetDoc(), (IXFA_Widget*)hWidget); 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->UnlockUpdate(); 87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->UpdateDocView(); 88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRet; 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnLButtonUp(IXFA_Widget* hWidget, 91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwFlags, 92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fx, 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fy) { 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->LockUpdate(); 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy); 96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->m_bLayoutEvent = TRUE; 97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRet = 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->OnLButtonUp(dwFlags, fx, fy); 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->UnlockUpdate(); 100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->UpdateDocView(); 101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRet; 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnLButtonDblClk(IXFA_Widget* hWidget, 104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwFlags, 105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fx, 106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fy) { 107ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy); 108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRet = 109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->OnLButtonDblClk(dwFlags, fx, fy); 110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->RunInvalidate(); 111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRet; 112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnMouseMove(IXFA_Widget* hWidget, 114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwFlags, 115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fx, 116ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fy) { 117ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy); 118ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRet = 119ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->OnMouseMove(dwFlags, fx, fy); 120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->RunInvalidate(); 121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRet; 122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnMouseWheel(IXFA_Widget* hWidget, 124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwFlags, 125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int16_t zDelta, 126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fx, 127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fy) { 128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy); 129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRet = static_cast<CXFA_FFWidget*>(hWidget) 130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->OnMouseWheel(dwFlags, zDelta, fx, fy); 131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->RunInvalidate(); 132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRet; 133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnRButtonDown(IXFA_Widget* hWidget, 135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwFlags, 136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fx, 137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fy) { 138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy); 139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRet = 140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->OnRButtonDown(dwFlags, fx, fy); 141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bRet && m_pDocView->SetFocus(hWidget)) { 142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ((CXFA_FFDoc*)m_pDocView->GetDoc()) 143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->GetDocProvider() 144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->SetFocusWidget(m_pDocView->GetDoc(), (IXFA_Widget*)hWidget); 145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->RunInvalidate(); 147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRet; 148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnRButtonUp(IXFA_Widget* hWidget, 150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwFlags, 151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fx, 152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fy) { 153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy); 154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRet = 155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->OnRButtonUp(dwFlags, fx, fy); 156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->RunInvalidate(); 157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRet; 158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnRButtonDblClk(IXFA_Widget* hWidget, 160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwFlags, 161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fx, 162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fy) { 163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy); 164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRet = 165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->OnRButtonDblClk(dwFlags, fx, fy); 166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->RunInvalidate(); 167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRet; 168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnKeyDown(IXFA_Widget* hWidget, 170ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwKeyCode, 171ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwFlags) { 172ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRet = 173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->OnKeyDown(dwKeyCode, dwFlags); 174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->RunInvalidate(); 175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->UpdateDocView(); 176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRet; 177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnKeyUp(IXFA_Widget* hWidget, 179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwKeyCode, 180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwFlags) { 181ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRet = 182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->OnKeyUp(dwKeyCode, dwFlags); 183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->RunInvalidate(); 184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRet; 185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnChar(IXFA_Widget* hWidget, 187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwChar, 188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwFlags) { 189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRet = static_cast<CXFA_FFWidget*>(hWidget)->OnChar(dwChar, dwFlags); 190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->RunInvalidate(); 191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRet; 192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_DWORD CXFA_FFWidgetHandler::OnHitTest(IXFA_Widget* hWidget, 194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fx, 195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fy) { 196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!(static_cast<CXFA_FFWidget*>(hWidget)->GetStatus() & 197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_WIDGETSTATUS_Visible)) { 198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FWL_WGTHITTEST_Unknown; 199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy); 201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->OnHitTest(fx, fy); 202ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::OnSetCursor(IXFA_Widget* hWidget, 204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fx, 205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fy) { 206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy); 207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->OnSetCursor(fx, fy); 208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_FFWidgetHandler::RenderWidget(IXFA_Widget* hWidget, 210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Graphics* pGS, 211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix* pMatrix, 212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bHighlight) { 213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CXFA_FFWidget*>(hWidget)->RenderWidget( 214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pGS, pMatrix, bHighlight ? XFA_WIDGETSTATUS_Highlight : 0, 0); 215ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 216ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFWidgetHandler::HasEvent(CXFA_WidgetAcc* pWidgetAcc, 217ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_EVENTTYPE eEventType) { 218ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pWidgetAcc || eEventType == XFA_EVENT_Unknown) { 219ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 220ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 221ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pWidgetAcc->GetClassID() == XFA_ELEMENT_Draw) { 222ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 223ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 224ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (eEventType) { 225ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_EVENT_Calculate: { 226ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Calculate calc = pWidgetAcc->GetCalculate(); 227ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!calc) { 228ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 229ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 230ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (calc.GetScript()) { 231ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 232ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 233ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 234ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 235ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_EVENT_Validate: { 236ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Validate val = pWidgetAcc->GetValidate(); 237ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!val) { 238ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 239ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 240ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (val.GetScript()) { 241ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 242ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 243ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 244ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 245ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 246ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 247ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 248ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_NodeArray eventArray; 249ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pWidgetAcc->GetEventByActivity(gs_EventActivity[eEventType], 250ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eventArray); 251ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 252ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t CXFA_FFWidgetHandler::ProcessEvent(CXFA_WidgetAcc* pWidgetAcc, 253ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_EventParam* pParam) { 254ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pParam || pParam->m_eType == XFA_EVENT_Unknown) { 255ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_EVENTERROR_NotExist; 256ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 257ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pWidgetAcc || pWidgetAcc->GetClassID() == XFA_ELEMENT_Draw) { 258ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_EVENTERROR_NotExist; 259ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 260ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (pParam->m_eType) { 261ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_EVENT_Calculate: 262ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pWidgetAcc->ProcessCalculate(); 263ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_EVENT_Validate: 264ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (((CXFA_FFDoc*)m_pDocView->GetDoc()) 265ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->GetDocProvider() 266ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->IsValidationsEnabled(m_pDocView->GetDoc())) { 267ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pWidgetAcc->ProcessValidate(); 268ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 269ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_EVENTERROR_Disabled; 270ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_EVENT_InitCalculate: { 271ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Calculate calc = pWidgetAcc->GetCalculate(); 272ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!calc) { 273ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_EVENTERROR_NotExist; 274ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 275ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pWidgetAcc->GetNode()->HasFlag(XFA_NODEFLAG_UserInteractive)) { 276ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_EVENTERROR_Disabled; 277ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 278ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Script script = calc.GetScript(); 279ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pWidgetAcc->ExecuteScript(script, pParam); 280ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 281ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 282ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 283ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 284ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iRet = 285ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pWidgetAcc->ProcessEvent(gs_EventActivity[pParam->m_eType], pParam); 286ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return iRet; 287ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 288ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIXFA_Widget* CXFA_FFWidgetHandler::CreateWidget(IXFA_Widget* hParent, 289ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_WIDGETTYPE eType, 290ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IXFA_Widget* hBefore) { 291ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParentFormItem = 292ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann hParent ? static_cast<CXFA_FFWidget*>(hParent)->GetDataAcc()->GetNode() 293ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : NULL; 294ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBeforeFormItem = 295ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann hBefore ? static_cast<CXFA_FFWidget*>(hBefore)->GetDataAcc()->GetNode() 296ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : NULL; 297ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pNewFormItem = 298ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CreateWidgetFormItem(eType, pParentFormItem, pBeforeFormItem); 299ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pNewFormItem == NULL) { 300ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 301ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 302ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNewFormItem->GetTemplateNode()->SetFlag(XFA_NODEFLAG_Initialized); 303ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNewFormItem->SetFlag(XFA_NODEFLAG_Initialized); 304ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->RunLayout(); 305ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutItem* pLayout = 306ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocView->GetXFALayout()->GetLayoutItem(pNewFormItem); 307ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return (IXFA_Widget*)pLayout; 308ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 309ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateWidgetFormItem( 310ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_WIDGETTYPE eType, 311ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParent, 312ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 313ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (eType) { 314ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_Barcode: 315ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 316ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_PushButton: 317ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreatePushButton(pParent, pBefore); 318ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_CheckButton: 319ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateCheckButton(pParent, pBefore); 320ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_ExcludeGroup: 321ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateExclGroup(pParent, pBefore); 322ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_RadioButton: 323ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateRadioButton(pParent, pBefore); 324ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_Arc: 325ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateArc(pParent, pBefore); 326ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_Rectangle: 327ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateRectangle(pParent, pBefore); 328ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_Image: 329ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateImage(pParent, pBefore); 330ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_Line: 331ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateLine(pParent, pBefore); 332ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_Text: 333ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateText(pParent, pBefore); 334ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_DatetimeEdit: 335ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateDatetimeEdit(pParent, pBefore); 336ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_DecimalField: 337ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateDecimalField(pParent, pBefore); 338ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_NumericField: 339ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateNumericField(pParent, pBefore); 340ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_Signature: 341ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateSignature(pParent, pBefore); 342ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_TextEdit: 343ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateTextEdit(pParent, pBefore); 344ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_DropdownList: 345ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateDropdownList(pParent, pBefore); 346ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_ListBox: 347ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateListBox(pParent, pBefore); 348ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_ImageField: 349ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateImageField(pParent, pBefore); 350ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_PasswordEdit: 351ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreatePasswordEdit(pParent, pBefore); 352ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_WIDGETTYPE_Subform: 353ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateSubform(pParent, pBefore); 354ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 355ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 356ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 357ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 358ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 359ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreatePushButton(CXFA_Node* pParent, 360ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 361ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_ELEMENT_Button, pParent, pBefore); 362ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pCaption = CreateCopyNode(XFA_ELEMENT_Caption, pField); 363ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pValue = CreateCopyNode(XFA_ELEMENT_Value, pCaption); 364ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pText = CreateCopyNode(XFA_ELEMENT_Text, pValue); 365ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pText->SetContent(FX_WSTRC(L"Button"), FX_WSTRC(L"Button"), FALSE); 366ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pPara = CreateCopyNode(XFA_ELEMENT_Para, pCaption); 367ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPara->SetEnum(XFA_ATTRIBUTE_VAlign, XFA_ATTRIBUTEENUM_Middle, FALSE); 368ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPara->SetEnum(XFA_ATTRIBUTE_HAlign, XFA_ATTRIBUTEENUM_Center, FALSE); 369ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CreateFontNode(pCaption); 370ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBorder = CreateCopyNode(XFA_ELEMENT_Border, pField); 371ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBorder->SetEnum(XFA_ATTRIBUTE_Hand, XFA_ATTRIBUTEENUM_Right, FALSE); 372ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pEdge = CreateCopyNode(XFA_ELEMENT_Edge, pBorder); 373ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pEdge->SetEnum(XFA_ATTRIBUTE_Stroke, XFA_ATTRIBUTEENUM_Raised, FALSE); 374ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pFill = CreateCopyNode(XFA_ELEMENT_Fill, pBorder); 375ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pColor = CreateCopyNode(XFA_ELEMENT_Color, pFill); 376ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pColor->SetCData(XFA_ATTRIBUTE_Value, FX_WSTRC(L"212, 208, 200"), FALSE); 377ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBind = CreateCopyNode(XFA_ELEMENT_Bind, pField); 378ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBind->SetEnum(XFA_ATTRIBUTE_Match, XFA_ATTRIBUTEENUM_None); 379ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 380ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 381ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateCheckButton(CXFA_Node* pParent, 382ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 383ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_ELEMENT_CheckButton, pParent, pBefore); 384ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 385ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 386ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateExclGroup(CXFA_Node* pParent, 387ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 388ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateFormItem(XFA_ELEMENT_ExclGroup, pParent, pBefore); 389ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 390ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateRadioButton(CXFA_Node* pParent, 391ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 392ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_ELEMENT_CheckButton, pParent, pBefore); 393ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pUi = pField->GetFirstChildByClass(XFA_ELEMENT_Ui); 394ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pWidget = pUi->GetFirstChildByClass(XFA_ELEMENT_CheckButton); 395ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pWidget->SetEnum(XFA_ATTRIBUTE_Shape, XFA_ATTRIBUTEENUM_Round); 396ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 397ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 398ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateDatetimeEdit(CXFA_Node* pParent, 399ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 400ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_ELEMENT_DateTimeEdit, pParent, pBefore); 401ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CreateValueNode(XFA_ELEMENT_Date, pField); 402ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 403ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 404ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateDecimalField(CXFA_Node* pParent, 405ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 406ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateNumericField(pParent, pBefore); 407ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CreateValueNode(XFA_ELEMENT_Decimal, pField); 408ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 409ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 410ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateNumericField(CXFA_Node* pParent, 411ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 412ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_ELEMENT_NumericEdit, pParent, pBefore); 413ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 414ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 415ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateSignature(CXFA_Node* pParent, 416ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 417ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_ELEMENT_Signature, pParent, pBefore); 418ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 419ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 420ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateTextEdit(CXFA_Node* pParent, 421ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 422ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_ELEMENT_TextEdit, pParent, pBefore); 423ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 424ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 425ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateDropdownList(CXFA_Node* pParent, 426ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 427ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_ELEMENT_ChoiceList, pParent, pBefore); 428ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 429ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 430ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateListBox(CXFA_Node* pParent, 431ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 432ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateDropdownList(pParent, pBefore); 433ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pUi = pField->GetNodeItem(XFA_NODEITEM_FirstChild); 434ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pListBox = pUi->GetNodeItem(XFA_NODEITEM_FirstChild); 435ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pListBox->SetEnum(XFA_ATTRIBUTE_Open, XFA_ATTRIBUTEENUM_Always); 436ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pListBox->SetEnum(XFA_ATTRIBUTE_CommitOn, XFA_ATTRIBUTEENUM_Exit); 437ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 438ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 439ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateImageField(CXFA_Node* pParent, 440ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 441ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_ELEMENT_ImageEdit, pParent, pBefore); 442ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 443ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 444ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreatePasswordEdit(CXFA_Node* pParent, 445ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 446ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_ELEMENT_PasswordEdit, pParent, pBefore); 447ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBind = CreateCopyNode(XFA_ELEMENT_Bind, pField); 448ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBind->SetEnum(XFA_ATTRIBUTE_Match, XFA_ATTRIBUTEENUM_None, FALSE); 449ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 450ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 451ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateField(XFA_ELEMENT eElement, 452ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParent, 453ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 454ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateFormItem(XFA_ELEMENT_Field, pParent, pBefore); 455ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CreateCopyNode(eElement, CreateCopyNode(XFA_ELEMENT_Ui, pField)); 456ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CreateFontNode(pField); 457ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 458ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 459ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateArc(CXFA_Node* pParent, 460ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 461ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateDraw(XFA_ELEMENT_Arc, pParent, pBefore); 462ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 463ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateRectangle(CXFA_Node* pParent, 464ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 465ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CreateDraw(XFA_ELEMENT_Rectangle, pParent, pBefore); 466ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 467ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateImage(CXFA_Node* pParent, 468ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 469ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateDraw(XFA_ELEMENT_Image, pParent, pBefore); 470ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CreateCopyNode(XFA_ELEMENT_ImageEdit, CreateCopyNode(XFA_ELEMENT_Ui, pField)); 471ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 472ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 473ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateLine(CXFA_Node* pParent, 474ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 475ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateDraw(XFA_ELEMENT_Line, pParent, pBefore); 476ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 477ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 478ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateText(CXFA_Node* pParent, 479ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 480ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pField = CreateDraw(XFA_ELEMENT_Text, pParent, pBefore); 481ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CreateCopyNode(XFA_ELEMENT_TextEdit, CreateCopyNode(XFA_ELEMENT_Ui, pField)); 482ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CreateFontNode(pField); 483ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pField; 484ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 485ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateDraw(XFA_ELEMENT eElement, 486ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParent, 487ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 488ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pDraw = CreateFormItem(XFA_ELEMENT_Draw, pParent, pBefore); 489ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CreateValueNode(eElement, pDraw); 490ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pDraw; 491ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 492ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateSubform(CXFA_Node* pParent, 493ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 494ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pSubform = CreateFormItem(XFA_ELEMENT_Subform, pParent, pBefore); 495ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pSubform; 496ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 497ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateFormItem(XFA_ELEMENT eElement, 498ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParent, 499ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 500ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pTemplateParent = 501ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pParent != NULL ? pParent->GetTemplateNode() : NULL; 502ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pNewFormItem = pTemplateParent->CloneTemplateToForm(FALSE); 503ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pParent != NULL) { 504ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pParent->InsertChild(pNewFormItem, pBefore); 505ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 506ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pNewFormItem; 507ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 508ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateCopyNode(XFA_ELEMENT eElement, 509ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParent, 510ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 511ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pTemplateParent = 512ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pParent != NULL ? pParent->GetTemplateNode() : NULL; 513ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pNewNode = 514ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CreateTemplateNode(eElement, pTemplateParent, 515ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBefore ? pBefore->GetTemplateNode() : NULL) 516ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->Clone(FALSE); 517ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pParent != NULL) { 518ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pParent->InsertChild(pNewNode, pBefore); 519ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 520ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pNewNode; 521ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 522ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateTemplateNode(XFA_ELEMENT eElement, 523ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParent, 524ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBefore) const { 525ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Document* pXFADoc = GetXFADoc(); 526ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pNewTemplateNode = pXFADoc->GetParser()->GetFactory()->CreateNode( 527ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_XDPPACKET_Template, eElement); 528ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pParent != NULL) { 529ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pParent->InsertChild(pNewTemplateNode, pBefore); 530ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 531ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pNewTemplateNode; 532ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 533ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateFontNode(CXFA_Node* pParent) const { 534ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pFont = CreateCopyNode(XFA_ELEMENT_Font, pParent); 535ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFont->SetCData(XFA_ATTRIBUTE_Typeface, FX_WSTRC(L"Myriad Pro"), FALSE); 536ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pFont; 537ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 538ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateMarginNode(CXFA_Node* pParent, 539ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwFlags, 540ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fInsets[4]) const { 541ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pMargin = CreateCopyNode(XFA_ELEMENT_Margin, pParent); 542ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (dwFlags & 0x01) { 543ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMargin->SetMeasure(XFA_ATTRIBUTE_LeftInset, 544ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Measurement(fInsets[0], XFA_UNIT_Pt), FALSE); 545ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 546ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (dwFlags & 0x02) { 547ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMargin->SetMeasure(XFA_ATTRIBUTE_TopInset, 548ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Measurement(fInsets[1], XFA_UNIT_Pt), FALSE); 549ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 550ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (dwFlags & 0x04) { 551ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMargin->SetMeasure(XFA_ATTRIBUTE_RightInset, 552ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Measurement(fInsets[2], XFA_UNIT_Pt), FALSE); 553ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 554ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (dwFlags & 0x08) { 555ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMargin->SetMeasure(XFA_ATTRIBUTE_BottomInset, 556ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Measurement(fInsets[3], XFA_UNIT_Pt), FALSE); 557ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 558ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pMargin; 559ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 560ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateValueNode(XFA_ELEMENT eValue, 561ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParent) const { 562ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pValue = CreateCopyNode(XFA_ELEMENT_Value, pParent); 563ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CreateCopyNode(eValue, pValue); 564ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pValue; 565ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 566ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIXFA_ObjFactory* CXFA_FFWidgetHandler::GetObjFactory() const { 567ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return GetXFADoc()->GetParser()->GetFactory(); 568ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 569ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Document* CXFA_FFWidgetHandler::GetXFADoc() const { 570ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return ((CXFA_FFDoc*)(m_pDocView->GetDoc()))->GetXFADoc(); 571ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 572ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_FFMenuHandler::CXFA_FFMenuHandler() {} 573ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_FFMenuHandler::~CXFA_FFMenuHandler() {} 574ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::CanCopy(IXFA_Widget* hWidget) { 575ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->CanCopy(); 576ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 577ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::CanCut(IXFA_Widget* hWidget) { 578ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->CanCut(); 579ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 580ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::CanPaste(IXFA_Widget* hWidget) { 581ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->CanPaste(); 582ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 583ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::CanSelectAll(IXFA_Widget* hWidget) { 584ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->CanSelectAll(); 585ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 586ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::CanDelete(IXFA_Widget* hWidget) { 587ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->CanDelete(); 588ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 589ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::CanDeSelect(IXFA_Widget* hWidget) { 590ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->CanDeSelect(); 591ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 592ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::Copy(IXFA_Widget* hWidget, CFX_WideString& wsText) { 593ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->Copy(wsText); 594ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 595ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::Cut(IXFA_Widget* hWidget, CFX_WideString& wsText) { 596ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->Cut(wsText); 597ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 598ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::Paste(IXFA_Widget* hWidget, 599ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_WideString& wsText) { 600ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->Paste(wsText); 601ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 602ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::SelectAll(IXFA_Widget* hWidget) { 603ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->SelectAll(); 604ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 605ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::Delete(IXFA_Widget* hWidget) { 606ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->Delete(); 607ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 608ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::DeSelect(IXFA_Widget* hWidget) { 609ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->DeSelect(); 610ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 611ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::CanUndo(IXFA_Widget* hWidget) { 612ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->CanUndo(); 613ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 614ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::CanRedo(IXFA_Widget* hWidget) { 615ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->CanRedo(); 616ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 617ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::Undo(IXFA_Widget* hWidget) { 618ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->Undo(); 619ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 620ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::Redo(IXFA_Widget* hWidget) { 621ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget)->Redo(); 622ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 623ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_EDIT_ISLATINWORD(u) \ 624ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (u == 0x2D || (u <= 0x005A && u >= 0x0041) || \ 625ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (u <= 0x007A && u >= 0x0061) || (u <= 0x02AF && u >= 0x00C0) || \ 626ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann u == 0x0027) 627ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::GetSuggestWords(IXFA_Widget* hWidget, 628ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_PointF pointf, 629ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteStringArray& sSuggest) { 630ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget) 631ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->GetSuggestWords(pointf, sSuggest); 632ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 633ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FFMenuHandler::ReplaceSpellCheckWord( 634ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IXFA_Widget* hWidget, 635ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_PointF pointf, 636ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_ByteStringC& bsReplace) { 637ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_FFWidget*>(hWidget) 638ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->ReplaceSpellCheckWord(pointf, bsReplace); 639ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 640