1 #ifndef __MODELTREEDIALOG_H__
2 #define __MODELTREEDIALOG_H__
3 
4 class LDLMainModel;
5 class CUIWindowResizer;
6 class CUIColorButton;
7 class ModelWindow;
8 class TCAlert;
9 
10 #include <CUI/CUIDialog.h>
11 #include <TCFoundation/TCStlIncludes.h>
12 #include <LDLoader/LDLFileLine.h>
13 #include <LDLib/LDModelTree.h>
14 
15 typedef std::vector<HWND> HWndVector;
16 typedef std::map<UINT, LDLLineType> UIntLineTypeMap;
17 typedef std::map<LDLLineType, UINT> LineTypeUIntMap;
18 
19 class ModelTreeDialog: public CUIDialog
20 {
21 public:
22 	ModelTreeDialog(HINSTANCE hInstance, HWND hParentWindow);
23 	void show(ModelWindow *modelWindow, HWND hParentWnd = NULL);
24 protected:
25 	virtual LRESULT doClose(void);
26 
27 	virtual ~ModelTreeDialog(void);
28 	virtual void dealloc(void);
29 	HTREEITEM addLine(HTREEITEM parent, const LDModelTree *tree);
30 	void addChildren(HTREEITEM parent, const LDModelTree *tree);
31 	void fillTreeView(void);
32 	void refreshTreeView(void);
33 	void clearTreeView(void);
34 	void setModel(LDLMainModel *model);
35 	void setModelWindow(ModelWindow *modelWindow);
36 	void modelAlertCallback(TCAlert *alert);
37 	void setupLineCheck(UINT checkId, LDLLineType lineType);
38 	void updateLineChecks(void);
39 	void hideOptions(void);
40 	void showOptions(void);
41 	void adjustWindow(int widthDelta);
42 	void swapWindowText(UCCHAR oldChar, UCCHAR newChar);
43 	void selectFromHighlightPath(std::string path);
44 	HTREEITEM getChild(HTREEITEM hParent, int index);
45 
46 	virtual BOOL doInitDialog(HWND /*hKbControl*/);
47 	virtual LRESULT doNotify(int controlId, LPNMHDR notification);
48 	virtual LRESULT doSize(WPARAM sizeType, int newWidth, int newHeight);
49 	virtual LRESULT doCommand(int notifyCode, int commandId,
50 		HWND control);
51 	virtual LRESULT doTimer(UINT_PTR);
52 	virtual void doOK(void);
53 
54 	BOOL doTreeCopy(void);
55 	LRESULT doTreeKeyDown(LPNMTVKEYDOWN notification);
56 	LRESULT doTreeCustomDraw(LPNMTVCUSTOMDRAW notification);
57 	LRESULT doToggleOptions(void);
58 	LRESULT doHighlightCheck(void);
59 	LRESULT doSearchChange(void);
60 	LRESULT doSearch(LDModelTree::SearchMode mode, bool updateFocus);
61 	LRESULT doTreeItemExpanding(LPNMTREEVIEW notification);
62 	LRESULT doLineCheck(UINT checkId, LDLLineType lineType);
63 	LRESULT doTreeSelChanged(LPNMTREEVIEW notification);
64 	LRESULT doHighlightColorChanged(void);
65 	void highlightItem(HTREEITEM hItem);
66 	void initStatusBar(void);
67 	void updateStatusText(void);
68 	LDModelTree* getItemTree(HTREEITEM hItem);
69 	void addToolToTooltip(int controlId, const ucstring& tooltipText);
70 
71 	ModelWindow *m_modelWindow;
72 	LDLMainModel *m_model;
73 	LDModelTree *m_modelTree;
74 	HWND m_hTreeView;
75 	HWND m_hStatus;
76 	HWND m_hTooltip;
77 	CUIWindowResizer *m_resizer;
78 	HWndVector m_lineChecks;
79 	UIntLineTypeMap m_checkLineTypes;
80 	LineTypeUIntMap m_checkIds;
81 	bool m_optionsShown;
82 	bool m_highlight;
83 	bool m_clearing;
84 	int m_optionsDelta;
85 	//HWND m_hResizeGrip;
86 	CUIColorButton *m_colorButton;
87 	int m_highlightR;
88 	int m_highlightG;
89 	int m_highlightB;
90 	std::string m_searchPath;
91 };
92 
93 #endif // __MODELTREEDIALOG_H__
94