1e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved. 2e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// found in the LICENSE file. 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 7e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#ifndef FPDFSDK_INCLUDE_PDFWINDOW_PWL_COMBOBOX_H_ 8e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define FPDFSDK_INCLUDE_PDFWINDOW_PWL_COMBOBOX_H_ 9e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 10e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "PWL_Edit.h" 11e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "PWL_ListBox.h" 12e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "PWL_Wnd.h" 13e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CPWL_CBEdit : public CPWL_Edit { 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_CBEdit() {} 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ~CPWL_CBEdit() override {} 18e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 19e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CPWL_CBListBox : public CPWL_ListBox { 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_CBListBox() {} 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ~CPWL_CBListBox() override {} 24e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // CPWL_ListBox 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) override; 27e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL OnKeyDownWithExit(FX_WORD nChar, FX_BOOL& bExit, FX_DWORD nFlag); 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL OnCharWithExit(FX_WORD nChar, FX_BOOL& bExit, FX_DWORD nFlag); 30e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 31e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_COMBOBOX_BUTTON_WIDTH 13 33e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CPWL_CBButton : public CPWL_Wnd { 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_CBButton() {} 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ~CPWL_CBButton() override {} 38e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // CPWL_Wnd 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) override; 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void DrawThisAppearance(CFX_RenderDevice* pDevice, 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix* pUser2Device) override; 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag) override; 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) override; 45e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 46e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CPWL_ComboBox : public CPWL_Wnd { 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_ComboBox(); 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ~CPWL_ComboBox() override {} 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_Edit* GetEdit() const { return m_pEdit; } 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // CPWL_Wnd: 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString GetClassName() const override; 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void OnCreate(PWL_CREATEPARAM& cp) override; 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL OnKeyDown(FX_WORD nChar, FX_DWORD nFlag) override; 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL OnChar(FX_WORD nChar, FX_DWORD nFlag) override; 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void OnNotify(CPWL_Wnd* pWnd, 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD msg, 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann intptr_t wParam = 0, 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann intptr_t lParam = 0) override; 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void CreateChildWnd(const PWL_CREATEPARAM& cp) override; 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void RePosChildWnd() override; 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Rect GetFocusRect() const override; 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void SetFocus() override; 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void KillFocus() override; 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void SetFillerNotify(IPWL_Filler_Notify* pNotify); 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString GetText() const; 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void SetText(const FX_WCHAR* text); 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void AddString(const FX_WCHAR* string); 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t GetSelect() const; 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void SetSelect(int32_t nItemIndex); 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void SetEditSel(int32_t nStartChar, int32_t nEndChar); 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void GetEditSel(int32_t& nStartChar, int32_t& nEndChar) const; 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void Clear(); 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void SelectAll(); 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL IsPopup() const; 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void SetSelectText(); 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void AttachFFLData(void* pData) { m_pFormFiller = pData; } 87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann private: 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void CreateEdit(const PWL_CREATEPARAM& cp); 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void CreateButton(const PWL_CREATEPARAM& cp); 91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void CreateListBox(const PWL_CREATEPARAM& cp); 92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void SetPopup(FX_BOOL bPopup); 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_CBEdit* m_pEdit; 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_CBButton* m_pButton; 96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_CBListBox* m_pList; 97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL m_bPopup; 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Rect m_rcOldWindow; 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t m_nPopupWhere; 100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t m_nSelectItem; 101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IPWL_Filler_Notify* m_pFillerNotify; 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void* m_pFormFiller; 104e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 105e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 106e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#endif // FPDFSDK_INCLUDE_PDFWINDOW_PWL_COMBOBOX_H_ 107