OSDN Git Service

BrowseRefsDlg: Started treeview context menu
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / BrowseRefsDlg.h
1 #pragma once\r
2 \r
3 #include "Git.h"\r
4 #include <map>\r
5 #include "afxcmn.h"\r
6 #include "StandAloneDlg.h"\r
7 \r
8 class CShadowTree\r
9 {\r
10 public:\r
11         typedef std::map<CString,CShadowTree> TShadowTreeMap;\r
12 \r
13         CShadowTree():m_hTree(NULL),m_pParent(NULL){}\r
14         \r
15         CShadowTree*    GetNextSub(CString& nameLeft);\r
16 \r
17         bool                    IsLeaf()const {return m_ShadowTree.empty();}\r
18         CString                 GetRefName()const\r
19         {\r
20                 if(m_pParent==NULL)\r
21                         return m_csRefName;\r
22                 return m_pParent->GetRefName()+"/"+m_csRefName;\r
23         }\r
24 \r
25         CString                 m_csRefName;\r
26         CString                 m_csRefHash;\r
27         CString                 m_csDate;\r
28         CString                 m_csAuthor;\r
29         CString                 m_csSubject;\r
30 \r
31         HTREEITEM               m_hTree;\r
32 \r
33         TShadowTreeMap  m_ShadowTree;\r
34         CShadowTree*    m_pParent;\r
35 };\r
36 \r
37 class CBrowseRefsDlg : public CResizableStandAloneDialog\r
38 {\r
39         DECLARE_DYNAMIC(CBrowseRefsDlg)\r
40 \r
41 public:\r
42         CBrowseRefsDlg(CWnd* pParent = NULL);   // standard constructor\r
43         virtual ~CBrowseRefsDlg();\r
44 \r
45         enum eCmd\r
46         {\r
47                 eCmd_ViewLog = WM_APP,\r
48                 eCmd_AddRemote\r
49         };\r
50 \r
51 // Dialog Data\r
52         enum { IDD = IDD_DIALOG_BROWSE_REFS };\r
53 \r
54 protected:\r
55         virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support\r
56 \r
57         DECLARE_MESSAGE_MAP()\r
58 public:\r
59         afx_msg void OnBnClickedOk();\r
60         virtual BOOL OnInitDialog();\r
61 \r
62         void                    Refresh();\r
63 \r
64         CShadowTree&    GetTreeNode(CString refName, CShadowTree* pTreePos=NULL);\r
65 \r
66         void                    FillListCtrlForTreeNode(HTREEITEM treeNode);\r
67 \r
68         void                    FillListCtrlForShadowTree(CShadowTree* pTree, CString refNamePrefix, bool isFirstLevel);\r
69 \r
70         bool                    SelectRef(CString refName);\r
71 \r
72 private:\r
73 \r
74         CShadowTree             m_TreeRoot;\r
75         CTreeCtrl               m_RefTreeCtrl;\r
76         CListCtrl               m_ListRefLeafs;\r
77         afx_msg void OnTvnSelchangedTreeRef(NMHDR *pNMHDR, LRESULT *pResult);\r
78 public:\r
79 \r
80         afx_msg void OnContextMenu(CWnd* pWndFrom, CPoint point);\r
81 \r
82         void            OnContextMenu_ListRefLeafs(CPoint point);\r
83         void            OnContextMenu_RefTreeCtrl(CPoint point);\r
84 };\r