void CRepositoryBrowser::OnOK() { if (GetFocus() == &m_RepoList && (GetKeyState(VK_MENU) & 0x8000) == 0) { // list control has focus: 'enter' the folder if (m_RepoList.GetSelectedCount() != 1) return; POSITION pos = m_RepoList.GetFirstSelectedItemPosition(); if (pos) { CShadowFilesTree *item = (CShadowFilesTree *)m_RepoList.GetItemData(m_RepoList.GetNextSelectedItem(pos)); if (item->m_bFolder) { FillListCtrlForShadowTree(item); m_RepoTree.SelectItem(item->m_hTree); } else OpenFile(item->GetFullName(), OPEN, item->m_bSubmodule, item->m_hash); } return; } SaveDividerPosition(); CResizableStandAloneDialog::OnOK(); }
void CRepositoryBrowser::FillListCtrlForTreeNode(HTREEITEM treeNode) { m_RepoList.DeleteAllItems(); CShadowFilesTree* pTree = (CShadowFilesTree*)(m_RepoTree.GetItemData(treeNode)); if (pTree == NULL) { ASSERT(FALSE); return; } CString url = _T("/") + pTree->GetFullName(); GetDlgItem(IDC_REPOBROWSER_URL)->SetWindowText(url); if (!pTree->m_bLoaded) { pTree->m_bLoaded = true; ReadTree(pTree, pTree->GetFullName()); } FillListCtrlForShadowTree(pTree); }
void CRepositoryBrowser::OnTvnItemExpandingRepoTree(NMHDR *pNMHDR, LRESULT *pResult) { LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR); *pResult = 0; CShadowFilesTree* pTree = (CShadowFilesTree*)(m_RepoTree.GetItemData(pNMTreeView->itemNew.hItem)); if (pTree == NULL) { ASSERT(FALSE); return; } if (!pTree->m_bLoaded) { pTree->m_bLoaded = true; ReadTree(pTree, pTree->GetFullName()); } }
void CRepositoryBrowser::OnNMDblclk_RepoList(NMHDR *pNMHDR, LRESULT *pResult) { *pResult = 0; LPNMITEMACTIVATE pNmItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); if (pNmItemActivate->iItem < 0) return; CShadowFilesTree * pItem = (CShadowFilesTree *)m_RepoList.GetItemData(pNmItemActivate->iItem); if (pItem == NULL) return; if (!pItem->m_bFolder) { OpenFile(pItem->GetFullName(), OPEN, pItem->m_bSubmodule, pItem->m_hash); return; } else { FillListCtrlForShadowTree(pItem); m_RepoTree.SelectItem(pItem->m_hTree); } }