1// Copyright 2014 PDFium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7#ifndef _FXFA_FORMFILLER_ANNOTHANDLER_IMP_H 8#define _FXFA_FORMFILLER_ANNOTHANDLER_IMP_H 9class CXFA_FFDocView; 10class CXFA_FFWidgetHandler : public IXFA_WidgetHandler { 11 public: 12 CXFA_FFWidgetHandler(CXFA_FFDocView* pDocView); 13 ~CXFA_FFWidgetHandler(); 14 virtual IXFA_Widget* CreateWidget(IXFA_Widget* hParent, 15 XFA_WIDGETTYPE eType, 16 IXFA_Widget* hBefore = NULL); 17 virtual IXFA_PageView* GetPageView(IXFA_Widget* hWidget); 18 virtual void GetRect(IXFA_Widget* hWidget, CFX_RectF& rt); 19 virtual FX_DWORD GetStatus(IXFA_Widget* hWidget); 20 virtual FX_BOOL GetBBox(IXFA_Widget* hWidget, 21 CFX_RectF& rtBox, 22 FX_DWORD dwStatus, 23 FX_BOOL bDrawFocus = FALSE); 24 virtual CXFA_WidgetAcc* GetDataAcc(IXFA_Widget* hWidget); 25 virtual void GetName(IXFA_Widget* hWidget, 26 CFX_WideString& wsName, 27 int32_t iNameType = 0); 28 virtual FX_BOOL GetToolTip(IXFA_Widget* hWidget, CFX_WideString& wsToolTip); 29 virtual void SetPrivateData(IXFA_Widget* hWidget, 30 void* module_id, 31 void* pData, 32 PD_CALLBACK_FREEDATA callback); 33 virtual void* GetPrivateData(IXFA_Widget* hWidget, void* module_id); 34 virtual FX_BOOL OnMouseEnter(IXFA_Widget* hWidget); 35 virtual FX_BOOL OnMouseExit(IXFA_Widget* hWidget); 36 virtual FX_BOOL OnLButtonDown(IXFA_Widget* hWidget, 37 FX_DWORD dwFlags, 38 FX_FLOAT fx, 39 FX_FLOAT fy); 40 virtual FX_BOOL OnLButtonUp(IXFA_Widget* hWidget, 41 FX_DWORD dwFlags, 42 FX_FLOAT fx, 43 FX_FLOAT fy); 44 virtual FX_BOOL OnLButtonDblClk(IXFA_Widget* hWidget, 45 FX_DWORD dwFlags, 46 FX_FLOAT fx, 47 FX_FLOAT fy); 48 virtual FX_BOOL OnMouseMove(IXFA_Widget* hWidget, 49 FX_DWORD dwFlags, 50 FX_FLOAT fx, 51 FX_FLOAT fy); 52 virtual FX_BOOL OnMouseWheel(IXFA_Widget* hWidget, 53 FX_DWORD dwFlags, 54 int16_t zDelta, 55 FX_FLOAT fx, 56 FX_FLOAT fy); 57 virtual FX_BOOL OnRButtonDown(IXFA_Widget* hWidget, 58 FX_DWORD dwFlags, 59 FX_FLOAT fx, 60 FX_FLOAT fy); 61 virtual FX_BOOL OnRButtonUp(IXFA_Widget* hWidget, 62 FX_DWORD dwFlags, 63 FX_FLOAT fx, 64 FX_FLOAT fy); 65 virtual FX_BOOL OnRButtonDblClk(IXFA_Widget* hWidget, 66 FX_DWORD dwFlags, 67 FX_FLOAT fx, 68 FX_FLOAT fy); 69 70 virtual FX_BOOL OnKeyDown(IXFA_Widget* hWidget, 71 FX_DWORD dwKeyCode, 72 FX_DWORD dwFlags); 73 virtual FX_BOOL OnKeyUp(IXFA_Widget* hWidget, 74 FX_DWORD dwKeyCode, 75 FX_DWORD dwFlags); 76 virtual FX_BOOL OnChar(IXFA_Widget* hWidget, 77 FX_DWORD dwChar, 78 FX_DWORD dwFlags); 79 virtual FX_DWORD OnHitTest(IXFA_Widget* hWidget, FX_FLOAT fx, FX_FLOAT fy); 80 virtual FX_BOOL OnSetCursor(IXFA_Widget* hWidget, FX_FLOAT fx, FX_FLOAT fy); 81 virtual void RenderWidget(IXFA_Widget* hWidget, 82 CFX_Graphics* pGS, 83 CFX_Matrix* pMatrix = NULL, 84 FX_BOOL bHighlight = FALSE); 85 virtual FX_BOOL HasEvent(CXFA_WidgetAcc* pWidgetAcc, 86 XFA_EVENTTYPE eEventType); 87 virtual int32_t ProcessEvent(CXFA_WidgetAcc* pWidgetAcc, 88 CXFA_EventParam* pParam); 89 90 protected: 91 CXFA_Node* CreateWidgetFormItem(XFA_WIDGETTYPE eType, 92 CXFA_Node* pParent, 93 CXFA_Node* pBefore) const; 94 95 CXFA_Node* CreatePushButton(CXFA_Node* pParent, CXFA_Node* pBefore) const; 96 CXFA_Node* CreateCheckButton(CXFA_Node* pParent, CXFA_Node* pBefore) const; 97 CXFA_Node* CreateExclGroup(CXFA_Node* pParent, CXFA_Node* pBefore) const; 98 CXFA_Node* CreateRadioButton(CXFA_Node* pParent, CXFA_Node* pBefore) const; 99 CXFA_Node* CreateDatetimeEdit(CXFA_Node* pParent, CXFA_Node* pBefore) const; 100 CXFA_Node* CreateDecimalField(CXFA_Node* pParent, CXFA_Node* pBefore) const; 101 CXFA_Node* CreateNumericField(CXFA_Node* pParent, CXFA_Node* pBefore) const; 102 CXFA_Node* CreateSignature(CXFA_Node* pParent, CXFA_Node* pBefore) const; 103 CXFA_Node* CreateTextEdit(CXFA_Node* pParent, CXFA_Node* pBefore) const; 104 CXFA_Node* CreateDropdownList(CXFA_Node* pParent, CXFA_Node* pBefore) const; 105 CXFA_Node* CreateListBox(CXFA_Node* pParent, CXFA_Node* pBefore) const; 106 CXFA_Node* CreateImageField(CXFA_Node* pParent, CXFA_Node* pBefore) const; 107 CXFA_Node* CreatePasswordEdit(CXFA_Node* pParent, CXFA_Node* pBefore) const; 108 CXFA_Node* CreateField(XFA_ELEMENT eElement, 109 CXFA_Node* pParent, 110 CXFA_Node* pBefore) const; 111 CXFA_Node* CreateArc(CXFA_Node* pParent, CXFA_Node* pBefore) const; 112 CXFA_Node* CreateRectangle(CXFA_Node* pParent, CXFA_Node* pBefore) const; 113 CXFA_Node* CreateImage(CXFA_Node* pParent, CXFA_Node* pBefore) const; 114 CXFA_Node* CreateLine(CXFA_Node* pParent, CXFA_Node* pBefore) const; 115 CXFA_Node* CreateText(CXFA_Node* pParent, CXFA_Node* pBefore) const; 116 CXFA_Node* CreateDraw(XFA_ELEMENT eElement, 117 CXFA_Node* pParent, 118 CXFA_Node* pBefore) const; 119 120 CXFA_Node* CreateSubform(CXFA_Node* pParent, CXFA_Node* pBefore) const; 121 CXFA_Node* CreateFormItem(XFA_ELEMENT eElement, 122 CXFA_Node* pParent, 123 CXFA_Node* pBefore) const; 124 CXFA_Node* CreateCopyNode(XFA_ELEMENT eElement, 125 CXFA_Node* pParent, 126 CXFA_Node* pBefore = NULL) const; 127 CXFA_Node* CreateTemplateNode(XFA_ELEMENT eElement, 128 CXFA_Node* pParent, 129 CXFA_Node* pBefore) const; 130 CXFA_Node* CreateFontNode(CXFA_Node* pParent) const; 131 CXFA_Node* CreateMarginNode(CXFA_Node* pParent, 132 FX_DWORD dwFlags, 133 FX_FLOAT fInsets[4]) const; 134 CXFA_Node* CreateValueNode(XFA_ELEMENT eValue, CXFA_Node* pParent) const; 135 IXFA_ObjFactory* GetObjFactory() const; 136 CXFA_Document* GetXFADoc() const; 137 138 CXFA_FFDocView* m_pDocView; 139}; 140class CXFA_FFMenuHandler : public IXFA_MenuHandler { 141 public: 142 CXFA_FFMenuHandler(); 143 ~CXFA_FFMenuHandler(); 144 virtual FX_BOOL CanCopy(IXFA_Widget* hWidget); 145 virtual FX_BOOL CanCut(IXFA_Widget* hWidget); 146 virtual FX_BOOL CanPaste(IXFA_Widget* hWidget); 147 virtual FX_BOOL CanSelectAll(IXFA_Widget* hWidget); 148 virtual FX_BOOL CanDelete(IXFA_Widget* hWidget); 149 virtual FX_BOOL CanDeSelect(IXFA_Widget* hWidget); 150 virtual FX_BOOL Copy(IXFA_Widget* hWidget, CFX_WideString& wsText); 151 virtual FX_BOOL Cut(IXFA_Widget* hWidget, CFX_WideString& wsText); 152 virtual FX_BOOL Paste(IXFA_Widget* hWidget, const CFX_WideString& wsText); 153 virtual FX_BOOL SelectAll(IXFA_Widget* hWidget); 154 virtual FX_BOOL Delete(IXFA_Widget* hWidget); 155 virtual FX_BOOL DeSelect(IXFA_Widget* hWidget); 156 virtual FX_BOOL CanUndo(IXFA_Widget* hWidget); 157 virtual FX_BOOL CanRedo(IXFA_Widget* hWidget); 158 virtual FX_BOOL Undo(IXFA_Widget* hWidget); 159 virtual FX_BOOL Redo(IXFA_Widget* hWidget); 160 virtual FX_BOOL GetSuggestWords(IXFA_Widget* hWidget, 161 CFX_PointF pointf, 162 CFX_ByteStringArray& sSuggest); 163 virtual FX_BOOL ReplaceSpellCheckWord(IXFA_Widget* hWidget, 164 CFX_PointF pointf, 165 const CFX_ByteStringC& bsReplace); 166}; 167#endif 168