#pragma once

// Универсальный немодальный диалог для поиска в окнах

class CLASS_DECL_APL_GUI CaplFindInTableDlg : public CaplTranslateDialog
{
	DECLARE_DYNAMIC(CaplFindInTableDlg)

public:
	CaplFindInTableDlg(CWnd* pParent = NULL);   // standard constructor
	virtual ~CaplFindInTableDlg();

	void Show(CWnd *wnd4find); // Окно может быть - treeliscCtrl или Listctrl
	void Hide();
	static void Install (CWnd *wnd4find); // Устанавливает обработчик для отображения по Ctrl+F
	static void DeInstall (CWnd *wnd4find); // Убирает обработчик для отображения по Ctrl+F

	// Dialog Data
	//	enum { IDD = IDD_FIND_IN_TABLE };

protected:
	CaplTreeListCtrl *m_treelist;  // Дерево, если для дерева
	CListCtrl *m_list;  //Список, если для списка
	CString m_prev_column;
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	void FindNextItem(int delta);  // +1 -next, -1 - prev, 0 - с начала

	static LRESULT UniversalEditKeyProc(WNDPROC proc, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
	static LRESULT EditKeyProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
	static LRESULT btnFindFirstProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
	static LRESULT btnFindNextKeyProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
	static LRESULT btnFindPrevKeyProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
	static LRESULT ComboColumnKeyProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

	static WNDPROC st_DefEditProc; // Исходим из ттго, что экземпляр каласса всегда будет только один
	static WNDPROC st_DefProcComboColumn; 
	static WNDPROC st_DefProcbtnFindFirst; 
	static WNDPROC st_DefProcbtnFindNext; 
	static WNDPROC st_DefProcbtnFindPrev; 

	DECLARE_MESSAGE_MAP()
public:
	CaplButton m_btnFindFirst;
	CaplButton m_btnFindNext;
	CaplButton m_btnFindPrev;
	CEdit m_text_ctrl;
	CComboBox m_colums_box;
	BOOL m_bFindWholeString;
	afx_msg void OnBnClickedFindFirst();
	afx_msg void OnBnClickedFindNext();
	afx_msg void OnBnClickedFindPrev();
	afx_msg void OnClose();
	virtual BOOL OnInitDialog();
};