UINT CConfigFrame::GetHelpID() { ASSERT (m_bAllViewCreated == TRUE); CConfRightDlg* pConfigRightDlg = GetCConfRightDlg(); CConfLeftDlg* pConfigLeftDlg = GetCConfLeftDlg(); ASSERT (pConfigLeftDlg); if (!pConfigLeftDlg) return 0; HTREEITEM hTreeItem = pConfigLeftDlg->m_tree_ctrl.GetSelectedItem(); // // Nothing has been selected in the left pane, the help is the one // of the left pane: if (!hTreeItem) return IDD_CONFIG_LEFT; // // If there is a selected item in the left pane, then check to see // if there is no pane in the right side, if so we must handle the special case: CuPageInformation* pPageInfo = NULL; CuCbfListViewItem* pItem = (CuCbfListViewItem*)pConfigLeftDlg->m_tree_ctrl.GetItemData (hTreeItem); if (!pItem) return IDD_CONFIG_LEFT; if (pItem && pItem->GetPageInformation() && pItem->GetPageInformation()->GetNumberOfPage() == 0) { // // No page in the right pane: pPageInfo = pItem->GetPageInformation(); if (pPageInfo->GetClassName().CompareNoCase (_T("RECOVER")) == 0) return IDHELP_RECOVER; if (pPageInfo->GetClassName().CompareNoCase (_T("ARCHIVE")) == 0) return IDHELP_ACHIVER; if (pPageInfo->GetClassName().CompareNoCase (_T("RMCMD")) == 0) return IDHELP_RMCMD; } UINT nIDHelp = 0; ASSERT (pConfigRightDlg); if (!pConfigRightDlg) return nIDHelp; CuCbfProperty* pProp = pConfigRightDlg->GetCurrentProperty(); if (!pProp) return nIDHelp; pPageInfo = pProp->GetPageInfo(); if (!pPageInfo) return nIDHelp; int nCurSel = pProp->GetCurSel(); if (nCurSel>=0 && nCurSel<pPageInfo->GetNumberOfPage() && pPageInfo->GetNumberOfPage()>0) nIDHelp = pPageInfo->GetDlgID(nCurSel); // // For the cache page the are three sub-panes (cache buffer, parameter, derived): if (nIDHelp == IDD_DBMS_PAGE_CACHE) { CuDlgDbmsCache* pCachePage = (CuDlgDbmsCache*)pConfigRightDlg->GetCurrentPage(); if (pCachePage) { CvDbmsCacheViewLeft* pCacheBuffer = pCachePage->GetLeftPane(); if (pCacheBuffer) { CuCacheCheckListCtrl* pListBuffer = pCacheBuffer->GetCacheListCtrl(); // // Cache buffer: if (pListBuffer->GetSelectedCount() == 0) nIDHelp = IDD_CACHE_LIST; else { CvDbmsCacheViewRight* pCacheRightPane = pCachePage->GetRightPane(); if (pCacheRightPane) { CuDlgCacheTab* pTab = pCacheRightPane->GetCacheTabDlg(); if (pTab) nIDHelp = pTab->GetHelpID(); } } } } } return nIDHelp; }
void CuDlgIpmTabCtrl::DisplayPage (CuPageInformation* pPageInfo, LPCTSTR lpszHeader, int nSel) { CRect r; TCITEM item; int i, nPages; UINT* nTabID; UINT* nDlgID; CString strTab; CString strTitle; UINT nIDD; CWnd* pDlg; try { CView* pView = (CView*)GetParent(); ASSERT (pView); CdIpmDoc* pDoc = (CdIpmDoc*)pView->GetDocument(); ASSERT (pDoc); if (m_bIsLoading) { m_bIsLoading = FALSE; pDoc->SetLoadDoc(FALSE); // Masqued Emb April 9, 97 for bug fix // return; } if (!pPageInfo) { if (m_pCurrentPage) m_pCurrentPage->ShowWindow (SW_HIDE); m_cTab1.DeleteAllItems(); if (m_pCurrentProperty) { m_pCurrentProperty->SetPageInfo (NULL); delete m_pCurrentProperty; m_pCurrentProperty = NULL; m_pCurrentPage = NULL; } if (lpszHeader) m_staticHeader.SetWindowText (lpszHeader); else m_staticHeader.SetWindowText (_T("")); UINT uFlags = SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER; m_staticHeader.ResetBitmap (NULL); // No Image m_staticHeader.SetWindowPos (NULL, 0, 0, 0, 0, uFlags); return; } ASSERT (!lpszHeader); if (!m_pCurrentProperty) { m_pCurrentProperty = new CuIpmProperty (0, pPageInfo); // // Set up the Title: pPageInfo->GetTitle (strTitle); m_staticHeader.SetWindowText (strTitle); UINT uFlags = SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER; if (!strTitle.IsEmpty()) { switch (pPageInfo->GetImageType()) { case 0: m_staticHeader.ResetBitmap (pPageInfo->GetIconImage()); break; case 1: m_staticHeader.ResetBitmap (pPageInfo->GetBitmapImage(), pPageInfo->GetImageMask()); break; default: m_staticHeader.ResetBitmap (NULL); } } else m_staticHeader.ResetBitmap (NULL); m_staticHeader.SetWindowPos(NULL, 0, 0, 0, 0, uFlags); nPages = pPageInfo->GetNumberOfPage(); if (nPages < 1) { m_pCurrentPage = NULL; return; } // // Construct the Tab(s) nTabID = pPageInfo->GetTabID(); nDlgID = pPageInfo->GetDlgID(); memset (&item, 0, sizeof (item)); item.mask = TCIF_TEXT; item.cchTextMax = 32; m_cTab1.DeleteAllItems(); for (i=0; i<nPages; i++) { strTab.LoadString (nTabID [i]); item.pszText = (LPTSTR)(LPCTSTR)strTab; m_cTab1.InsertItem (i, &item); } // // Display the default (the first) page, except if context-driven specified tab int initialSel = (nSel != -1)? nSel: 0; if (initialSel >= nPages) initialSel = 0; nIDD = pPageInfo->GetDlgID (initialSel); pDlg= GetPage (nIDD); m_cTab1.SetCurSel (initialSel); m_cTab1.GetClientRect (r); m_cTab1.AdjustRect (FALSE, r); pDlg->MoveWindow (r); pDlg->ShowWindow(SW_SHOW); m_pCurrentPage = pDlg; // // Properties: UINT nMask = IPMMASK_FONT|IPMMASK_SHOWGRID; m_pCurrentPage->SendMessage (WMUSRMSG_CHANGE_SETTING, (WPARAM)nMask, (LPARAM)&(pDoc->GetProperty())); // // Update data: m_pCurrentPage->SendMessage (WM_USER_IPMPAGE_UPDATEING, (WPARAM)pDoc, (LPARAM)pPageInfo->GetUpdateParam()); } else // !m_pCurrentProperty { CuPageInformation* pCurrentPageInfo = m_pCurrentProperty->GetPageInfo(); pPageInfo->GetTitle (strTitle); m_staticHeader.SetWindowText (strTitle); UINT uFlags = SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER; if (!strTitle.IsEmpty()) { switch (pPageInfo->GetImageType()) { case 0: m_staticHeader.ResetBitmap (pPageInfo->GetIconImage()); break; case 1: m_staticHeader.ResetBitmap (pPageInfo->GetBitmapImage(), pPageInfo->GetImageMask()); break; default: m_staticHeader.ResetBitmap (NULL); } } else m_staticHeader.ResetBitmap (NULL); m_staticHeader.SetWindowPos(NULL, 0, 0, 0, 0, uFlags); // Cloned from dgdomc02.cpp : pCurrentPageInfo can have become NULL // example: current selection was system obj, and system checkbox has been unchecked BOOL bNoMoreCurrentClassName = FALSE; CString CurrentClassName; if (pCurrentPageInfo) CurrentClassName = pCurrentPageInfo->GetClassName(); else { bNoMoreCurrentClassName = TRUE; CurrentClassName = _T("No More Current Class Name!!!"); } CString ClassName = pPageInfo->GetClassName(); if ((CurrentClassName == ClassName) && (!bNoMoreCurrentClassName) ) { m_pCurrentProperty->SetPageInfo (pPageInfo); // // wParam, and lParam will contain the information needed // by the dialog to refresh itself. if (m_pCurrentPage) m_pCurrentPage->SendMessage (WM_USER_IPMPAGE_UPDATEING, (WPARAM)pDoc, (LPARAM)pPageInfo->GetUpdateParam()); // // Special re-initialize the Activity page of a Static Replication Item // It is not optimal, but we have to do like this due to no specification for replication. int i; for (i=0; i<pPageInfo->GetNumberOfPage(); i++) { nIDD = pPageInfo->GetDlgID (i); if (nIDD == IDD_REPSTATIC_PAGE_ACTIVITY) { pDlg= GetPage (nIDD); // // Properties: UINT nMask = IPMMASK_FONT|IPMMASK_SHOWGRID; pDlg->SendMessage (WMUSRMSG_CHANGE_SETTING, (WPARAM)nMask, (LPARAM)&(pDoc->GetProperty())); // // Update data: pDlg->SendMessage (WM_USER_IPMPAGE_UPDATEING, (WPARAM)pDoc, (LPARAM)pPageInfo->GetUpdateParam()); break; } } } else { int initialSel = (nSel != -1)? nSel: 0; if (initialSel >= pPageInfo->GetNumberOfPage()) initialSel = 0; if (m_pCurrentPage) m_pCurrentPage->ShowWindow (SW_HIDE); m_cTab1.DeleteAllItems(); nPages = pPageInfo->GetNumberOfPage(); m_pCurrentProperty->SetPageInfo (pPageInfo); m_pCurrentProperty->SetCurSel (initialSel); if (nPages < 1) { m_pCurrentPage = NULL; return; } UINT nIDD; CWnd* pDlg; // // Construct the Tab(s) nTabID = pPageInfo->GetTabID(); nDlgID = pPageInfo->GetDlgID(); memset (&item, 0, sizeof (item)); item.mask = TCIF_TEXT; item.cchTextMax = 32; m_cTab1.DeleteAllItems(); for (i=0; i<nPages; i++) { strTab.LoadString (nTabID [i]); item.pszText = (LPTSTR)(LPCTSTR)strTab; m_cTab1.InsertItem (i, &item); } // // Display the default (the first) page. nIDD = pPageInfo->GetDlgID (initialSel); pDlg= GetPage (nIDD); m_cTab1.SetCurSel (initialSel); m_cTab1.GetClientRect (r); m_cTab1.AdjustRect (FALSE, r); pDlg->MoveWindow (r); pDlg->ShowWindow(SW_SHOW); m_pCurrentPage = pDlg; // // Properties: UINT nMask = IPMMASK_FONT|IPMMASK_SHOWGRID; m_pCurrentPage->SendMessage (WMUSRMSG_CHANGE_SETTING, (WPARAM)nMask, (LPARAM)&(pDoc->GetProperty())); // // Update Data: m_pCurrentPage->SendMessage (WM_USER_IPMPAGE_UPDATEING, (WPARAM)pDoc, (LPARAM)pPageInfo->GetUpdateParam()); } } } catch (CMemoryException* e) { theApp.OutOfMemoryMessage(); if (m_pCurrentPage) m_pCurrentPage->ShowWindow (SW_HIDE); if (m_pCurrentProperty) { m_pCurrentProperty->SetPageInfo (NULL); delete m_pCurrentProperty; } m_pCurrentPage = NULL; m_pCurrentProperty = NULL; e->Delete(); return; } catch (CResourceException* e) { AfxMessageBox (IDS_E_LOAD_RESOURCE);//"Load resource failed" if (m_pCurrentPage) m_pCurrentPage->ShowWindow (SW_HIDE); if (m_pCurrentProperty) { m_pCurrentProperty->SetPageInfo (NULL); delete m_pCurrentProperty; } m_pCurrentPage = NULL; m_pCurrentProperty = NULL; e->Delete(); return; } }
void CConfRightDlg::DisplayPage (CuPageInformation* pPageInfo) { CRect r; TC_ITEM item; int i, nPages; UINT* nTabID; UINT* nDlgID; CString strTab; CString strTitle; UINT nIDD; CWnd* pDlg; CView* pView = (CView*)GetParent(); ASSERT (pView); // // Set the default label of the two buttons: (Derfault, Restore) CWnd* pB1 = GetDlgItem (IDC_BUTTON1); CWnd* pB2 = GetDlgItem (IDC_BUTTON2); CString csButtonTitle; csButtonTitle.LoadString(IDS_BUTTON_EDIT_VALUE); pB1->SetWindowText (csButtonTitle); csButtonTitle.LoadString(IDS_BUTTON_RESTORE); pB2->SetWindowText (csButtonTitle); pB1->EnableWindow (FALSE); pB2->EnableWindow (FALSE); // hide buttons 1 and 2 if no page int showFlag = SW_HIDE; if (pPageInfo && pPageInfo->GetNumberOfPage() > 0) showFlag = SW_SHOW; pB1->ShowWindow(showFlag); pB2->ShowWindow(showFlag); // Always Hide the other buttons CWnd* pB3 = GetDlgItem (IDC_BUTTON3); CWnd* pB4 = GetDlgItem (IDC_BUTTON4); CWnd* pB5 = GetDlgItem (IDC_BUTTON5); pB3->ShowWindow(SW_HIDE); pB3->SetWindowText(_T("Button &3")); pB4->ShowWindow(SW_HIDE); pB4->SetWindowText(_T("Button &4")); pB5->ShowWindow(SW_HIDE); pB5->SetWindowText(_T("Button &5")); // always enable all buttons pB1->EnableWindow(TRUE); pB2->EnableWindow(TRUE); pB3->EnableWindow(TRUE); pB4->EnableWindow(TRUE); pB5->EnableWindow(TRUE); if (m_bIsLoading) { m_bIsLoading = FALSE; } if (!pPageInfo) { if (m_pCurrentPage) { // // Try to save (and validate) the data that has been changed // in the old page before displaying a new page. m_pCurrentPage->SendMessage(WMUSRMSG_CBF_PAGE_VALIDATE, (WPARAM)0, (LPARAM)0); m_pCurrentPage->ShowWindow (SW_HIDE); } m_cTab1.DeleteAllItems(); if (m_pCurrentProperty) { m_pCurrentProperty->SetPageInfo (NULL); delete m_pCurrentProperty; m_pCurrentProperty = NULL; m_pCurrentPage = NULL; } return; } if (!m_pCurrentProperty) { try { m_pCurrentProperty = new CuCbfProperty (0, pPageInfo); } catch (CMemoryException* e) { VCBF_OutOfMemoryMessage(); e->Delete(); m_pCurrentPage = NULL; m_pCurrentProperty = NULL; return; } // // Set up the Title: pPageInfo->GetTitle (strTitle); nPages = pPageInfo->GetNumberOfPage(); if (nPages < 1) { m_pCurrentPage = NULL; return; } // // Construct the Tab(s) nTabID = pPageInfo->GetTabID(); nDlgID = pPageInfo->GetDlgID(); memset (&item, 0, sizeof (item)); item.mask = TCIF_TEXT; item.cchTextMax = 32; m_cTab1.DeleteAllItems(); for (i=0; i<nPages; i++) { strTab.LoadString (nTabID [i]); item.pszText = (LPTSTR)(LPCTSTR)strTab; m_cTab1.InsertItem (i, &item); } // // Display the default (the first in general) page, int iPage = pPageInfo->GetDefaultPage (); nIDD = pPageInfo->GetDlgID (iPage); try { pDlg= GetPage (nIDD); if (!pDlg) return; } catch (CMemoryException* e) { VCBF_OutOfMemoryMessage (); e->Delete(); return; } catch (CResourceException* e) { AfxMessageBox (_T("Load resource failed")); e->Delete(); return; } m_cTab1.SetCurSel (iPage); m_cTab1.GetClientRect (r); m_cTab1.AdjustRect (FALSE, r); pDlg->MoveWindow (r); pDlg->ShowWindow(SW_SHOW); m_pCurrentPage = pDlg; m_pCurrentPage->SendMessage (WMUSRMSG_CBF_PAGE_UPDATING, (WPARAM)0, (LPARAM)pPageInfo->GetCbfItem()); } else { CuPageInformation* pCurrentPageInfo = m_pCurrentProperty->GetPageInfo(); if (pCurrentPageInfo->GetClassName()==pPageInfo->GetClassName()) { m_pCurrentProperty->SetPageInfo (pPageInfo); // // In general, when the selection changes on the left-pane, // and if the new selected item if the same class as the old one // then we keep the current selected page (Tab) at the right-pane. // Special case: // ------------ // For the class LOGFILE, we use the default page setting !!! if (pCurrentPageInfo->GetClassName()== "LOGFILE") { int iPage = pPageInfo->GetDefaultPage (); nIDD = pPageInfo->GetDlgID (iPage); CWnd* pDlg= GetPage (nIDD); if (!pDlg) return; m_cTab1.SetCurSel (iPage); m_cTab1.GetClientRect (r); m_cTab1.AdjustRect (FALSE, r); if (m_pCurrentPage) { // // Try to save (and validate) the data that has been changed // in the old page before displaying a new page. m_pCurrentPage->SendMessage(WMUSRMSG_CBF_PAGE_VALIDATE, (WPARAM)0, (LPARAM)0); m_pCurrentPage->ShowWindow (SW_HIDE); } pDlg->MoveWindow (r); pDlg->ShowWindow(SW_SHOW); m_pCurrentPage = pDlg; } // // wParam, and lParam will contain the information needed // by the dialog to refresh itself. if (m_pCurrentPage) m_pCurrentPage->SendMessage (WMUSRMSG_CBF_PAGE_UPDATING, (WPARAM)0, (LPARAM)pPageInfo->GetCbfItem()); } else { if (m_pCurrentPage) { // // Try to save (and validate) the data that has been changed // in the old page before displaying a new page. m_pCurrentPage->SendMessage(WMUSRMSG_CBF_PAGE_VALIDATE, (WPARAM)0, (LPARAM)0); m_pCurrentPage->ShowWindow (SW_HIDE); } m_cTab1.DeleteAllItems(); nPages = pPageInfo->GetNumberOfPage(); m_pCurrentProperty->SetPageInfo (pPageInfo); m_pCurrentProperty->SetCurSel (0); if (nPages < 1) { m_pCurrentPage = NULL; return; } UINT nIDD; CWnd* pDlg; // // Construct the Tab(s) nTabID = pPageInfo->GetTabID(); nDlgID = pPageInfo->GetDlgID(); memset (&item, 0, sizeof (item)); item.mask = TCIF_TEXT; item.cchTextMax = 32; m_cTab1.DeleteAllItems(); for (i=0; i<nPages; i++) { strTab.LoadString (nTabID [i]); item.pszText = (LPTSTR)(LPCTSTR)strTab; m_cTab1.InsertItem (i, &item); } // // Display the default (the first) page. int iPage = pPageInfo->GetDefaultPage (); nIDD = pPageInfo->GetDlgID (iPage); try { pDlg= GetPage (nIDD); if (!pDlg) return; } catch (CMemoryException* e) { VCBF_OutOfMemoryMessage(); e->Delete(); return; } catch (CResourceException* e) { AfxMessageBox (_T("Load resource failed")); e->Delete(); return; } m_cTab1.SetCurSel (iPage); m_cTab1.GetClientRect (r); m_cTab1.AdjustRect (FALSE, r); pDlg->MoveWindow (r); pDlg->ShowWindow(SW_SHOW); m_pCurrentPage = pDlg; m_pCurrentPage->SendMessage (WMUSRMSG_CBF_PAGE_UPDATING, (WPARAM)0, (LPARAM)pPageInfo->GetCbfItem()); } } }