Clean up CPDF_AnnotList.
[pdfium.git] / fpdfsdk / include / pdfwindow / PWL_ComboBox.h
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 FPDFSDK_INCLUDE_PDFWINDOW_PWL_COMBOBOX_H_
8 #define FPDFSDK_INCLUDE_PDFWINDOW_PWL_COMBOBOX_H_
9
10 #include "PWL_Edit.h"
11 #include "PWL_ListBox.h"
12 #include "PWL_Wnd.h"
13
14 class CPWL_CBEdit : public CPWL_Edit {
15  public:
16   CPWL_CBEdit() {}
17   ~CPWL_CBEdit() override {}
18 };
19
20 class CPWL_CBListBox : public CPWL_ListBox {
21  public:
22   CPWL_CBListBox() {}
23   ~CPWL_CBListBox() override {}
24
25   // CPWL_ListBox
26   FX_BOOL OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) override;
27
28   FX_BOOL OnKeyDownWithExit(FX_WORD nChar, FX_BOOL& bExit, FX_DWORD nFlag);
29   FX_BOOL OnCharWithExit(FX_WORD nChar, FX_BOOL& bExit, FX_DWORD nFlag);
30 };
31
32 #define PWL_COMBOBOX_BUTTON_WIDTH 13
33
34 class CPWL_CBButton : public CPWL_Wnd {
35  public:
36   CPWL_CBButton() {}
37   ~CPWL_CBButton() override {}
38
39   // CPWL_Wnd
40   void GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) override;
41   void DrawThisAppearance(CFX_RenderDevice* pDevice,
42                           CPDF_Matrix* pUser2Device) override;
43   FX_BOOL OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag) override;
44   FX_BOOL OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) override;
45 };
46
47 class CPWL_ComboBox : public CPWL_Wnd {
48  public:
49   CPWL_ComboBox();
50   ~CPWL_ComboBox() {}
51
52   operator CPWL_Edit*() { return m_pEdit; }
53
54   // CPWL_Wnd
55   CFX_ByteString GetClassName() const override;
56   void OnCreate(PWL_CREATEPARAM& cp) override;
57   FX_BOOL OnKeyDown(FX_WORD nChar, FX_DWORD nFlag) override;
58   FX_BOOL OnChar(FX_WORD nChar, FX_DWORD nFlag) override;
59   void OnNotify(CPWL_Wnd* pWnd,
60                 FX_DWORD msg,
61                 intptr_t wParam = 0,
62                 intptr_t lParam = 0) override;
63   void CreateChildWnd(const PWL_CREATEPARAM& cp) override;
64   void RePosChildWnd() override;
65   CPDF_Rect GetFocusRect() const override;
66   void SetFocus() override;
67   void KillFocus() override;
68   FX_BOOL IsModified() const override;
69
70   void SetFillerNotify(IPWL_Filler_Notify* pNotify);
71
72   CFX_WideString GetText() const;
73   void SetText(const FX_WCHAR* text);
74
75   void AddString(const FX_WCHAR* string);
76   int32_t GetSelect() const;
77   void SetSelect(int32_t nItemIndex);
78
79   void SetEditSel(int32_t nStartChar, int32_t nEndChar);
80   void GetEditSel(int32_t& nStartChar, int32_t& nEndChar) const;
81   void Clear();
82   void SelectAll();
83   FX_BOOL IsPopup() const;
84
85   void SetSelectText();
86
87   void AttachFFLData(void* pData) { m_pFormFiller = pData; }
88
89  private:
90   void CreateEdit(const PWL_CREATEPARAM& cp);
91   void CreateButton(const PWL_CREATEPARAM& cp);
92   void CreateListBox(const PWL_CREATEPARAM& cp);
93   void SetPopup(FX_BOOL bPopup);
94
95   CPWL_CBEdit* m_pEdit;
96   CPWL_CBButton* m_pButton;
97   CPWL_CBListBox* m_pList;
98   FX_BOOL m_bPopup;
99   CPDF_Rect m_rcOldWindow;
100   int32_t m_nPopupWhere;
101   int32_t m_nSelectItem;
102   IPWL_Filler_Notify* m_pFillerNotify;
103
104   void* m_pFormFiller;
105 };
106
107 #endif  // FPDFSDK_INCLUDE_PDFWINDOW_PWL_COMBOBOX_H_