Beispiel #1
0
BOOL CuDlgIpmTabCtrl::OnInitDialog() 
{
	CDialog::OnInitDialog();
	VERIFY (m_staticHeader.SubclassDlgItem (IDC_STATIC, this));
	m_staticHeader.SetImage (-1); // No Image for Now

	CWnd* pParent1 = GetParent();    // The view: CImView2
	ASSERT (pParent1);
	CdIpmDoc* pDoc = (CdIpmDoc*)((CView*)pParent1)->GetDocument();
	ASSERT (pDoc);
	if (!pDoc->GetCurrentProperty())
		return TRUE;

	//
	// When the document is Loaded ...
	try
	{
		CfIpmFrame* pFrame = (CfIpmFrame*)GetParentFrame();
		CvIpmLeft*  pIpmView1= (CvIpmLeft*)pFrame->GetLeftPane();
		CTreeCtrl& treeCtrl = pIpmView1->GetTreeCtrl();
		HTREEITEM  hSelected= treeCtrl.GetSelectedItem ();
		ASSERT (hSelected);
		if (!hSelected)
			return TRUE;
		CTreeItem* pItem = (CTreeItem*)treeCtrl.GetItemData (hSelected);
		CuPageInformation* pPageInfo = pDoc->GetCurrentProperty()->GetPageInfo();
		LPIPMUPDATEPARAMS pUps = pPageInfo->GetUpdateParam();
		pUps->nType   = pItem->GetType();
		pUps->pStruct = pItem->GetPTreeItemData()? pItem->GetPTreeItemData()->GetDataPtr(): NULL;
		pUps->pSFilter= pDoc->GetFilter();

		int nImage = -1, nSelectedImage = -1;
		CImageList* pImageList = treeCtrl.GetImageList (TVSIL_NORMAL);
		HICON hIcon = NULL;
		int nImageCount = pImageList? pImageList->GetImageCount(): 0;
		if (pImageList && treeCtrl.GetItemImage(hSelected, nImage, nSelectedImage))
		{
			if (nImage < nImageCount)
				hIcon = pImageList->ExtractIcon(nImage);
		}
		pPageInfo->SetImage  (hIcon);

		LoadPage (pDoc->GetCurrentProperty());
		m_bIsLoading = TRUE;
		if (m_pCurrentPage)
		{
			UINT nMask = IPMMASK_FONT|IPMMASK_SHOWGRID;
			m_pCurrentPage->SendMessage (WMUSRMSG_CHANGE_SETTING, (UINT)nMask, (LPARAM)&(pDoc->GetProperty()));
		}
	}
	catch (CMemoryException* e)
	{
		theApp.OutOfMemoryMessage ();
		m_pCurrentPage     = NULL;
		m_pCurrentProperty = NULL;
		e->Delete();
	}
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
Beispiel #2
0
void CuDlgReplicationServerPageStatus::OnButtonStart() 
{
	CWaitCursor hourglass;
	try
	{
		CfIpmFrame* pFrame = (CfIpmFrame*)GetParentFrame();
		CdIpmDoc* pDoc = (CdIpmDoc*)pFrame->GetActiveDocument();

		IPM_StartReplicationServer(pDoc, &m_SvrDta, m_strEdit2);
		UpdateData (FALSE);
	}
	catch (CMemoryException* e)
	{
		theApp.OutOfMemoryMessage();
		e->Delete();
	}
	catch (CeIpmException e)
	{
		AfxMessageBox (e.GetReason(), MB_ICONEXCLAMATION|MB_OK);
	}
	catch (...)
	{
	}

	EnableButtons();
}
Beispiel #3
0
void CuDlgReplicationServerPageStartupSetting::OnButtonSave() 
{
	int iret;
	CWaitCursor hourglass;

	CdIpmDoc* pIpmDoc = NULL;
	CfIpmFrame* pIpmFrame = (CfIpmFrame*)GetParentFrame();
	ASSERT(pIpmFrame);
	if (pIpmFrame)
	{
		pIpmDoc = pIpmFrame->GetIpmDoc();
		ASSERT (pIpmDoc);
	}
	if (!pIpmDoc)
		return;

	ASSERT (m_FlagsList.IsEmpty());
	while (!m_FlagsList.IsEmpty())
		delete m_FlagsList.RemoveHead();
	int i, nCount = m_cListCtrl.GetItemCount();
	CaReplicationItem* pItem = NULL;
	for (i=0; i<nCount; i++)    {
		pItem = (CaReplicationItem*)m_cListCtrl.GetItemData (i);
		if (pItem)
			m_FlagsList.AddTail (pItem);
	}

	CString csVnodeAndUsers;
	int nNodeHdl = -1;
	if (lstrcmp((char *)m_pSvrDta->LocalDBNode,(char *)m_pSvrDta->RunNode) == 0)
		csVnodeAndUsers.Format(_T("%s%s%s%s"), m_pSvrDta->LocalDBNode,
		                                   LPUSERPREFIXINNODENAME,
		                                   (LPCTSTR)m_csDBAOwner,
										   LPUSERSUFFIXINNODENAME);
	else
		csVnodeAndUsers = m_pSvrDta->RunNode;

	nNodeHdl  = LIBMON_OpenNodeStruct ((LPUCHAR)(LPCTSTR)csVnodeAndUsers);
	if (nNodeHdl == -1) {
		CString strMsg,strMsg1;
		strMsg.LoadString(IDS_MAX_NB_CONNECT);   // _T("Maximum number of connections has been reached"
		strMsg1.LoadString(IDS_E_SAVE_FILE);     //    " - Cannot save file."
		strMsg += _T("\n")+strMsg1;
		AfxMessageBox(strMsg, NULL, MB_ICONHAND | MB_OK | MB_TASKMODAL);
		return;
	}
	iret = SetReplicServerParams ( pIpmDoc, m_pSvrDta, &m_FlagsList );
	LIBMON_CloseNodeStruct (nNodeHdl);

	if ( iret == RES_SUCCESS )
		m_FlagsList.SetModifyEdit(); // Not modify.
	if (!m_FlagsList.IsEmpty())
		m_FlagsList.RemoveAll();

	EnableButtons();
}
Beispiel #4
0
void CdIpmDoc::SearchItem()
{
	CTreeCtrl* pTree = m_pTreeGD->GetPTree();
	ASSERT (pTree);
	if (!pTree)
		return;
	CfIpmFrame* pIpmFrame = (CfIpmFrame*)pTree->GetParentFrame();
	CvIpmLeft* pView = (CvIpmLeft*)pIpmFrame->GetLeftPane();
	if (!pView)
		return;
	pView->SearchItem();
}
Beispiel #5
0
void CdIpmDoc::ProhibitActionOnTreeCtrl(BOOL bProhibit)
{
	CTreeCtrl* pTree = m_pTreeGD->GetPTree();
	ASSERT (pTree);
	if (!pTree)
		return;
	CfIpmFrame* pIpmFrame = (CfIpmFrame*)pTree->GetParentFrame();
	CvIpmLeft* pView = (CvIpmLeft*)pIpmFrame->GetLeftPane();
	if (!pView)
		return;
	pView->ProhibitActionOnTreeCtrl(bProhibit);
}
Beispiel #6
0
BOOL CuDlgReplicationStaticPageCollision::OnInitDialog() 
{
	CDialog::OnInitDialog();
	m_cEdit1.ShowWindow (SW_HIDE);
	try
	{
		CRect    r;
		GetClientRect (r);

		m_pFrameLayout = new CfReplicationPageCollision ();
		m_pFrameLayout->Create (
			NULL,
			NULL,
			WS_CHILD,
			r,
			this);
		m_pFrameLayout->InitialUpdateFrame(NULL, FALSE);
		if (m_pFrameLayout && IsWindow (m_pFrameLayout->m_hWnd))
		{
			CvReplicationPageCollisionViewLeft* pView = (CvReplicationPageCollisionViewLeft*)m_pFrameLayout->GetLeftPane();
			ASSERT (pView);
			if (pView)
			{
				CfIpmFrame* pIpmFrame = (CfIpmFrame*)GetParentFrame();
				ASSERT(pIpmFrame);
				if (pIpmFrame)
				{
					CdIpmDoc* pIpmDoc = (CdIpmDoc*)pIpmFrame->GetIpmDoc();
					if (pIpmDoc)
					{
						CTreeCtrl& treeCtrl = pView->GetTreeCtrl();
						CaIpmProperty& property = pIpmDoc->GetProperty();
						treeCtrl.SetFont (CFont::FromHandle(property.GetFont()));
					}
				}
			}
		}
	}
	catch (CMemoryException* e)
	{
		theApp.OutOfMemoryMessage();
		e->Delete();
	}
	catch (...)
	{
		if (m_pFrameLayout)
			m_pFrameLayout->DestroyWindow();
		m_pFrameLayout = NULL;
		TRACE0 ("Cannot allocate frame (collision page new design)\n");
	}
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
Beispiel #7
0
BOOL CuDlgIpmTabCtrl::ChangeTab()
{
	int nSel;
	CRect r;
	CWnd* pNewPage;
	CuPageInformation* pPageInfo;
	CWnd* pParent1 = GetParent(); // The view: CImView2
	ASSERT (pParent1);
	CfIpmFrame* pFrame = (CfIpmFrame*)GetParentFrame(); // The Frame Window
	ASSERT (pFrame);
	CdIpmDoc* pDoc  = (CdIpmDoc*)((CView*)pParent1)->GetDocument();
	ASSERT (pDoc);
	
	if (!pFrame->IsAllViewCreated())
		return FALSE;
	if (!m_pCurrentProperty)
		return FALSE;
	CWaitCursor doWaitCursor;
	m_cTab1.GetClientRect (r);
	m_cTab1.AdjustRect (FALSE, r);
	nSel = m_cTab1.GetCurSel();
	m_pCurrentProperty->SetCurSel(nSel);
	pPageInfo = m_pCurrentProperty->GetPageInfo();
	try
	{
		pNewPage  = GetPage (pPageInfo->GetDlgID (nSel));
	}
	catch (CMemoryException* e)
	{
		theApp.OutOfMemoryMessage();
		e->Delete();
		return FALSE;
	}
	catch (CResourceException* e)
	{
		AfxMessageBox (IDS_E_LOAD_RESOURCE);//"Fail to load resource"
		e->Delete();
		return FALSE;
	}
	if (m_pCurrentPage)
		m_pCurrentPage->ShowWindow (SW_HIDE);
	m_pCurrentPage = pNewPage;
	m_pCurrentPage->MoveWindow (r);
	m_pCurrentPage->ShowWindow(SW_SHOW);
	//
	// 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());
	return TRUE;
}
Beispiel #8
0
void CvIpmLeft::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{
	CdIpmDoc* pDoc = (CdIpmDoc*)GetDocument();
	ASSERT (pDoc);
	if (!pDoc)
		return;
	CaIpmProperty& property = pDoc->GetProperty();

	BOOL bSetToDefaultPercentage = FALSE; //UKS
	BOOL bRegularStaticSet = TRUE;
	int nHint = (int)lHint;
	switch (nHint)
	{
	case 1: // Invoked by CdIpmDoc::Initiate()
		GetTreeCtrl().SendMessage (WM_SETFONT, (WPARAM)property.GetFont(), MAKELPARAM(TRUE, 0));
		if (bSetToDefaultPercentage) 
		{
			CRect rcClient;
			CfIpmFrame* pFrame = (CfIpmFrame*)GetParentFrame();
			ASSERT (pFrame);
			CSplitterWnd* pSplit = (CSplitterWnd *)pFrame->GetSplitterWnd();
			ASSERT (pSplit);
			pFrame->GetClientRect (rcClient);
			pSplit->SetColumnInfo(0, (int) (0.4 * (double)rcClient.Width()), 10);
			pSplit->RecalcLayout();
		}

		// Create regular static set, if needed
		if (bRegularStaticSet) 
		{
			CuTMServerStatic    *pItem1 = new CuTMServerStatic   (pDoc->GetPTreeGD());
			CuTMLockinfoStatic  *pItem3 = new CuTMLockinfoStatic (pDoc->GetPTreeGD());
			CuTMLoginfoStatic   *pItem4 = new CuTMLoginfoStatic  (pDoc->GetPTreeGD());
			CuTMAllDbStatic     *pItem5 = new CuTMAllDbStatic    (pDoc->GetPTreeGD());
			CuTMActiveUsrStatic *pItem6 = new CuTMActiveUsrStatic(pDoc->GetPTreeGD());
			CuTMReplAllDbStatic *pItem7 = new CuTMReplAllDbStatic(pDoc->GetPTreeGD());

			HTREEITEM hItem1 = pItem1->CreateTreeLine();
			HTREEITEM hItem2 = pItem3->CreateTreeLine();
			HTREEITEM hItem3 = pItem4->CreateTreeLine();
			HTREEITEM hItem4 = pItem5->CreateTreeLine();
			HTREEITEM hItem5 = pItem6->CreateTreeLine();
			HTREEITEM hItem6 = pItem7->CreateTreeLine();
			ASSERT (hItem1 && hItem2 && hItem3 && hItem4 && hItem5 && hItem6);
			CTreeCtrl& cTree = GetTreeCtrl();
			cTree.SelectItem(hItem1);
		}
		break;
	default:
		break;
	}
}
Beispiel #9
0
void CuDlgIpmTabCtrl::NotifyPageSelChanging()
{
	if (m_pCurrentProperty)
	{
		if (m_pCurrentPage)
		{
			CfIpmFrame* pFrame = (CfIpmFrame*)GetParentFrame();
			CIpmCtrl* pIpmCtrl = (CIpmCtrl*)pFrame->GetParent();
			if (pIpmCtrl)
				pIpmCtrl->ContainerNotifySelChange();
			m_pCurrentPage->SendMessage (WM_USER_IPMPAGE_LEAVINGPAGE, (WPARAM)LEAVINGPAGE_CHANGELEFTSEL, 0L);
		}
	}
}
Beispiel #10
0
void CuDlgReplicationStaticPageRaiseEvent::OnButtonRaiseEventAllServer() 
{
	CdIpmDoc* pIpmDoc = NULL;
	CfIpmFrame* pIpmFrame = (CfIpmFrame*)GetParentFrame();
	ASSERT(pIpmFrame);
	if (pIpmFrame)
	{
		pIpmDoc = pIpmFrame->GetIpmDoc();
		ASSERT (pIpmDoc);
	}
	if (!pIpmDoc)
		return;

	CxDlgReplicationServerList dlg;
	dlg.m_pDBResourceDataMin = m_pSvrDta;
	dlg.m_pIpmDoc = pIpmDoc;

	int i, nSel = -1, nCount = m_cListCtrl.GetItemCount();
	for (i=0; i<nCount; i++)
	{
		if (m_cListCtrl.GetItemState(i, LVIS_SELECTED) & LVIS_SELECTED)
		{
			nSel = i;
			dlg.m_strEventFlag = m_cListCtrl.GetItemText(i, 1);
			dlg.m_strServerFlag= m_cListCtrl.GetItemText(i, 2);
			break;
		}
	}
	if (nSel == -1)
		return;
	int iret;
	CaReplicationRaiseDbevent* pItem = (CaReplicationRaiseDbevent*)m_cListCtrl.GetItemData (nSel);
	if(pItem->AskQuestion()) 
	{
		iret = pItem->AskQuestion4FilledServerFlag(&dlg.m_strServerFlag);
		if (iret == IDCANCEL) {
			m_cListCtrl.SetFocus();
			EnableButtons();
			return;
		}
	}

	dlg.DoModal();
	m_cListCtrl.SetFocus();
	EnableButtons();
}
Beispiel #11
0
void CvReplicationPageCollisionViewLeft::ResolveCurrentTransaction()
{
	CTreeCtrl& treectrl = GetTreeCtrl();
	HTREEITEM hCurrentSelected = treectrl.GetSelectedItem();
	if (!hCurrentSelected)
		return;
	HTREEITEM hSaveSelected = hCurrentSelected;
	CaCollisionItem* pItem = (CaCollisionItem*)treectrl.GetItemData(hCurrentSelected);
	if (!pItem)
		return;
	if (!pItem->IsTransaction())
	{
		hCurrentSelected = treectrl.GetParentItem(hCurrentSelected);
		pItem = (CaCollisionItem*)treectrl.GetItemData(hCurrentSelected);
	}

	if (pItem && pItem->IsTransaction())
	{
		CFrameWnd* pParent = (CFrameWnd*)GetParentFrame();
		CfIpmFrame* pFrame = (CfIpmFrame*)pParent->GetParentFrame();
		ASSERT(pFrame);
		if (!pFrame)
			return;
		CdIpmDoc* pDoc = pFrame->GetIpmDoc();

		CaCollisionTransaction* pTrans = (CaCollisionTransaction*)pItem;
		IPM_ResolveCurrentTransaction(pDoc, pItem);
		treectrl.SetItemImage (hCurrentSelected, pTrans->GetImageType(), pTrans->GetImageType());
	}


	CfReplicationPageCollision* pFrame = (CfReplicationPageCollision*)GetParentFrame();
	ASSERT (pFrame);
	if (pFrame)
	{
		CvReplicationPageCollisionViewRight* pViewR = (CvReplicationPageCollisionViewRight*)pFrame->GetRightPane();
		ASSERT (pViewR);
		if (pViewR)
		{
			CaCollisionItem* pItem = (CaCollisionItem*)treectrl.GetItemData (hSaveSelected);
			pViewR->SendMessage (WM_USER_IPMPAGE_UPDATEING, (WPARAM)hSaveSelected, (LPARAM)pItem);
		}
	}
}
Beispiel #12
0
BOOL IpmCurSelHasStaticChildren(CWnd* pPropWnd)
{
    CfIpmFrame* pIpmFrame = (CfIpmFrame*)pPropWnd->GetParentFrame();
    ASSERT (pIpmFrame->IsKindOf(RUNTIME_CLASS(CfIpmFrame)));

    // Get selected item handle
    HTREEITEM hItem = pIpmFrame->GetSelectedItem();
    ASSERT (hItem);
    if (!hItem)
        return FALSE;

    CTreeItem *pItem = (CTreeItem*)pIpmFrame->GetPTree()->GetItemData(hItem);
    ASSERT (pItem);
    if (!pItem)
        return FALSE;
    SubBK subBranchKind = pItem->GetSubBK();
    if (subBranchKind == SUBBRANCH_KIND_STATIC)
        return TRUE;
    else
        return FALSE;
}
Beispiel #13
0
BOOL ExpandUpToSearchedItem(CWnd* pPropWnd, CTypedPtrList<CObList, CuIpmTreeFastItem*>& rIpmTreeFastItemList, BOOL bAutomated)
{
    CfIpmFrame* pIpmFrame = NULL;
    if (bAutomated) {
        ASSERT (pPropWnd->IsKindOf(RUNTIME_CLASS(CfIpmFrame)));
        pIpmFrame = (CfIpmFrame*)pPropWnd;
    }
    else {
        pIpmFrame = (CfIpmFrame*)pPropWnd->GetParentFrame();
        ASSERT (pIpmFrame->IsKindOf(RUNTIME_CLASS(CfIpmFrame)));
    }
    ASSERT (pIpmFrame);

    // Get selected item handle
    HTREEITEM hItem = 0;
    if (bAutomated) {
        hItem = 0;      // Will force search on all root items
    }
    else {
        hItem = pIpmFrame->GetSelectedItem();
        ASSERT (hItem);
    }

    // Loop on fastitemlist
    POSITION pos = rIpmTreeFastItemList.GetHeadPosition();
    while (pos) {
        CuIpmTreeFastItem* pFastItem = rIpmTreeFastItemList.GetNext (pos);
        hItem = pIpmFrame->FindSearchedItem(pFastItem, hItem);
        if (!hItem) {
            ASSERT (FALSE);
            return FALSE;
        }
    }
    pIpmFrame->SelectItem(hItem);
    return TRUE;
}
Beispiel #14
0
void CvIpmLeft::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
	IPMUPDATEPARAMS ups;
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	CdIpmDoc* pDoc = (CdIpmDoc *)GetDocument();

	try 
	{
		ASSERT(pDoc);
		if (!pDoc)
			return;
		if (pDoc->GetLockDisplayRightPane())
			return;
		CfIpmFrame* pFrame = (CfIpmFrame*)GetParentFrame();
		ASSERT (pFrame);
		if (!pFrame)
			return;
		if (!pFrame->IsAllViewCreated())
			return;

		CuDlgIpmTabCtrl* pTabDlg  = (CuDlgIpmTabCtrl*)pFrame->GetTabDialog();
		if (!pTabDlg)
			return;
		CWaitCursor doWaitCursor ;
		//
		// Notify the container of sel change:
		CIpmCtrl* pIpmCtrl = (CIpmCtrl*)pFrame->GetParent();
		if (pIpmCtrl)
			pIpmCtrl->ContainerNotifySelChange();

		memset (&ups, 0, sizeof (ups));
		CTreeCtrl& treeCtrl = GetTreeCtrl();
		CTreeItem* pItem = (CTreeItem*)treeCtrl.GetItemData (pNMTreeView->itemNew.hItem);
		if (pItem->IsNoItem() || pItem->IsErrorItem())
		{
			pTabDlg->DisplayPage (NULL);
			*pResult = 0;
			return;
		}
		if (pItem->ItemDisplaysNoPage()) {
			CString caption = pItem->ItemNoPageCaption();
			pTabDlg->DisplayPage (NULL, caption);
			*pResult = 0;
			return;
		}

		if (pItem->HasReplicMonitor())
		{
			pDoc->InitializeReplicator(pItem->GetDBName());
		}

		int nImage = -1, nSelectedImage = -1;
		CImageList* pImageList = treeCtrl.GetImageList (TVSIL_NORMAL);
		HICON hIcon = NULL;
		int nImageCount = pImageList? pImageList->GetImageCount(): 0;
		if (pImageList && treeCtrl.GetItemImage(pNMTreeView->itemNew.hItem, nImage, nSelectedImage))
		{
			if (nImage < nImageCount)
				hIcon = pImageList->ExtractIcon(nImage);
		}
		CuPageInformation* pPageInfo = pItem->GetPageInformation();

		CString strItem = pItem->GetRightPaneTitle();
		pItem->UpdateDataWhenSelChange(); // Has an effect only if the class has specialied the method.
		ups.nType   = pItem->GetType();
		ups.pStruct = pItem->GetPTreeItemData()? pItem->GetPTreeItemData()->GetDataPtr(): NULL;
		ups.pSFilter= pDoc->GetPTreeGD()->GetPSFilter();
		pPageInfo->SetUpdateParam (&ups);
		pPageInfo->SetTitle ((LPCTSTR)strItem, pItem, pDoc);

		pPageInfo->SetImage  (hIcon);
		pTabDlg->DisplayPage (pPageInfo);
	}
	catch(CMemoryException* e)
	{
		theApp.OutOfMemoryMessage();
		e->Delete();
	}
	catch(CResourceException* e)
	{
		AfxMessageBox (IDS_E_LOAD_DLG);
		e->Delete();
	}
	catch(...)
	{
		AfxMessageBox (IDS_E_CONSTRUCT_PROPERTY);
	}
	*pResult = 0;
}
Beispiel #15
0
BOOL CdIpmDoc::UpdateDisplay()
{
	TRACE0("CdIpmDoc::UpdateDisplay()\n");
	try
	{
		m_pTreeGD->RefreshAllTreeBranches(); // refresh left pane
		
		IPMUPDATEPARAMS ups;
		memset (&ups, 0, sizeof (ups));
		CTreeItem* pItem = NULL;
		CTreeCtrl* pTree = m_pTreeGD->GetPTree();
		ASSERT (pTree);
		HTREEITEM hSelectedItem = pTree->GetSelectedItem();
		if (!hSelectedItem)
			return FALSE;
		pItem = (CTreeItem*)pTree->GetItemData(hSelectedItem);
		ASSERT (pItem);
		if (pItem->IsNoItem() || pItem->IsErrorItem())
		{
			m_pTabDialog->DisplayPage (NULL);
		}
		else 
		if (pItem->ItemDisplaysNoPage()) 
		{
			CString caption = pItem->ItemNoPageCaption();
			m_pTabDialog->DisplayPage (NULL, caption);
		}
		else 
		{
			int nImage = -1, nSelectedImage = -1;
			CImageList* pImageList = pTree->GetImageList (TVSIL_NORMAL);
			HICON hIcon = NULL;
			int nImageCount = pImageList? pImageList->GetImageCount(): 0;
			if (pImageList && pTree->GetItemImage(hSelectedItem, nImage, nSelectedImage))
			{
				if (nImage < nImageCount)
					hIcon = pImageList->ExtractIcon(nImage);
			}
			CuPageInformation* pPageInfo = pItem->GetPageInformation();
			CString strItem = pItem->GetRightPaneTitle();

			ups.nType   = pItem->GetType();
			ups.pStruct = pItem->GetPTreeItemData()? pItem->GetPTreeItemData()->GetDataPtr(): NULL;
			ups.pSFilter= m_pTreeGD->GetPSFilter();
			pPageInfo->SetUpdateParam (&ups);
			pPageInfo->SetTitle ((LPCTSTR)strItem, pItem, this);

			pPageInfo->SetImage  (hIcon);
			m_pTabDialog->DisplayPage (pPageInfo);
		}

		// Replicator Monitor special management
		// ASSUMES we did not change the current item!
		BOOL bReplMonWasOn = (m_hReplMonHandle != -1) ? TRUE: FALSE;
		BOOL bReplMonToBeOn = pItem->HasReplicMonitor();
		// 3 cases :
		//    - on to off ---> replicator has been uninstalled
		//    - off to on ---> replicator has been installed
		//    - on to on, or off to off: state has not changed
		if (bReplMonWasOn && !bReplMonToBeOn) 
		{
			BOOL bOK = TerminateReplicator();
			ASSERT (bOK);
		}
		else 
		if (!bReplMonWasOn && bReplMonToBeOn)
		{
			CString csDbName = pItem->GetDBName();
			BOOL bOK = InitializeReplicator(csDbName);
			ASSERT (bOK);
		}
		//
		// Refresh right pane
		CfIpmFrame* pIpmFrame = (CfIpmFrame*)pTree->GetParentFrame();
		UpdateAllViews((CView *)pIpmFrame->GetLeftPane());
	}
	catch(CMemoryException* e)
	{
		theApp.OutOfMemoryMessage();
		e->Delete();
		return FALSE;
	}
	catch(CResourceException* e)
	{
		//_T("Cannot load dialog box");
		AfxMessageBox (IDS_E_LOAD_DLG);
		e->Delete();
		return FALSE;
	}
	catch(...)
	{
		//_T("Cannot construct the property pane");
		AfxMessageBox (IDS_E_CONSTRUCT_PROPERTY);
		return FALSE;
	}

	return TRUE;
}
Beispiel #16
0
void CvIpmLeft::OnSelchanging(NMHDR* pNMHDR, LRESULT* pResult) 
{
	CTreeCtrl& tree = GetTreeCtrl();
	CdIpmDoc* pDoc = (CdIpmDoc *)GetDocument();
	ASSERT(pDoc);

	*pResult = 0;   // default to allow selchange
	try
	{
		// Manage "update all after load on first action"
		if (!pDoc)
			return;
		if (pDoc->GetPTreeGD()->CurrentlyLoading())
			return;
		if (pDoc->GetLockDisplayRightPane())
			return;
		if (pDoc->ManageMonSpecialState() || m_bProhibitActionOnTreeCtrl)
		{
			*pResult = 1;
			return;
		}

		NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
		HTREEITEM hItem = pNMTreeView->itemNew.hItem;
		CTreeItem *pItem;
		pItem = (CTreeItem *)tree.GetItemData(hItem);
		if (pItem) {
			if (!pItem->CompleteStruct()) { //"Structure Not Completed"
				AfxMessageBox(IDS_E_STRUCTURE, MB_OK | MB_ICONEXCLAMATION);
				*pResult = 1;     // prevent selchange
				return;
			}
			// Manage old item replicator dbevents
			HTREEITEM hOldItem = pNMTreeView->itemOld.hItem;
			if (hOldItem) 
			{
				CTreeItem *pOldItem;
				pOldItem = (CTreeItem *)tree.GetItemData(hOldItem);
				ASSERT (pOldItem);
				if (pOldItem) {
					// Cannot rely on "if (!pOldItem->ItemDisplaysNoPage())"
					// because replication can have been installed/uninstalled since then
					// ---> must terminate or not according to m_ReplMonHandle value
					if (pOldItem->HasReplicMonitor()) 
					{
						pDoc->TerminateReplicator();
					}
				}
			}

			// Notify current page on the right that we are about to leave it
			CfIpmFrame* pFrame = (CfIpmFrame*)GetParentFrame();
			ASSERT (pFrame);
			if (pFrame) 
			{
				if (pFrame->IsAllViewCreated()) 
				{
					CuDlgIpmTabCtrl* pTabDlg  = (CuDlgIpmTabCtrl*)pFrame->GetTabDialog();
					if (pTabDlg)
						pTabDlg->NotifyPageSelChanging();
				}
			}
		}
	}
	catch (...)
	{
		AfxMessageBox (IDS_E_CONSTRUCT_PROPERTY);
	}
}
Beispiel #17
0
LONG CuDlgReplicationServerPageStartupSetting::OnUpdateData (WPARAM wParam, LPARAM lParam)
{
	int iret,ires,irestype, nNodeHdl = -1;
	UCHAR DBAUsernameOntarget[MAXOBJECTNAME];
	UCHAR buf[EXTRADATASIZE];
	UCHAR extradata[EXTRADATASIZE];
	LPUCHAR parentstrings [MAXPLEVEL];
	CString cDefNumSvr,cDefDbName,cLocal;
	CString strMsg,strMsg1;

	LPIPMUPDATEPARAMS pUps = (LPIPMUPDATEPARAMS)lParam;
	m_pSvrDta = (LPREPLICSERVERDATAMIN)pUps->pStruct;
	EnableButtons();
	//
	// Specialize the OnUpdateData:
	if (!m_pSvrDta->m_bRefresh)
		return 0L;
	m_pSvrDta->m_bRefresh = FALSE;

	CdIpmDoc* pIpmDoc = NULL;
	CfIpmFrame* pIpmFrame = (CfIpmFrame*)GetParentFrame();
	ASSERT(pIpmFrame);
	if (pIpmFrame)
	{
		pIpmDoc = pIpmFrame->GetIpmDoc();
		ASSERT (pIpmDoc);
	}
	if (!pIpmDoc)
		return 0L;

	nNodeHdl  = LIBMON_OpenNodeStruct (m_pSvrDta->LocalDBNode);
	if (nNodeHdl == -1) {
		strMsg.LoadString(IDS_MAX_NB_CONNECT);  // _T("Maximum number of connections has been reached"
		strMsg1.LoadString (IDS_E_READ_FILE);   //    " - Cannot read file."
		strMsg += _T("\n") + strMsg1;
		MessageBox(strMsg ,NULL, MB_ICONHAND | MB_OK | MB_TASKMODAL);
		return 0L;
	}

	// Temporary for activate a session
	ires = DOMGetFirstObject (nNodeHdl, OT_DATABASE, 0, NULL, FALSE, NULL, buf, NULL, NULL);
	cDefDbName.Format(_T("%s::%s"), m_pSvrDta->LocalDBNode,m_pSvrDta->LocalDBName);
	//
	//Get DBA user name for this database
	parentstrings[0]=m_pSvrDta->LocalDBName;
	parentstrings[1]=NULL;
	memset (DBAUsernameOntarget,'\0',sizeof(DBAUsernameOntarget));
	iret = DOMGetObjectLimitedInfo( nNodeHdl,
	                                parentstrings [0],
	                                (UCHAR *)"",
	                                OT_DATABASE,
	                                0,
	                                parentstrings,
	                                TRUE,
	                                &irestype,
	                                buf,
	                                DBAUsernameOntarget,
	                                extradata
	                              );
	if (iret != RES_SUCCESS) {
		LIBMON_CloseNodeStruct(nNodeHdl);
		//wsprintf((char *)buf,"DBA owner on database : %s not found. Read file aborted.",parentstrings[0]);
		strMsg.Format(IDS_F_DB_OWNER,parentstrings[0]);
		MessageBox(strMsg, NULL, MB_ICONEXCLAMATION | MB_OK | MB_TASKMODAL);
		return 0L;
	}
	LIBMON_CloseNodeStruct(nNodeHdl);
	m_csDBAOwner=DBAUsernameOntarget;
	cDefNumSvr.Format(_T("%d"),m_pSvrDta->serverno);
	
	if (m_csDBAOwner.IsEmpty() ||cDefNumSvr.IsEmpty()||cDefDbName.IsEmpty())   {
		return 0L;
	}

	Cleanup();
	m_cListCtrl.DeleteAllItems();

	CString csVnodeAndUsers;
	// Read default flags on "LocalDBNode (user:XXX)"
	csVnodeAndUsers.Format(_T("%s%s%s%s"),  m_pSvrDta->LocalDBNode,
	                                    LPUSERPREFIXINNODENAME,
	                                    (LPCTSTR)m_csDBAOwner,
										LPUSERSUFFIXINNODENAME);
	nNodeHdl  = LIBMON_OpenNodeStruct ((LPUCHAR)(LPCTSTR)csVnodeAndUsers);
	if (nNodeHdl == -1) {
		strMsg.LoadString (IDS_MAX_NB_CONNECT);  // _T("Maximum number of connections has been reached"
		strMsg1.LoadString (IDS_E_READ_FILE);    //    " - Cannot read file."
		strMsg +=  _T("\n") + strMsg1;
		MessageBox(strMsg ,NULL, MB_ICONHAND | MB_OK | MB_TASKMODAL);
		return 0L;
	}
	memset (DBAUsernameOntarget,'\0',sizeof(DBAUsernameOntarget));
	iret = DOMGetObjectLimitedInfo( nNodeHdl,
	                                parentstrings [0],
	                                (UCHAR *)"",
	                                OT_DATABASE,
	                                0,
	                                parentstrings,
	                                TRUE,
	                                &irestype,
	                                buf,
	                                DBAUsernameOntarget,
	                                extradata
	                              );
	if (iret != RES_SUCCESS) {
		LIBMON_CloseNodeStruct(nNodeHdl);
		//wsprintf((char *)buf,"DBA owner on database : %s not found. Read file aborted.",parentstrings[0]);
		strMsg.Format(IDS_F_DB_OWNER,parentstrings[0]);
		MessageBox(strMsg, NULL, MB_ICONEXCLAMATION | MB_OK | MB_TASKMODAL);
		return 0L;
	}
	m_FlagsList.DefineAllFlagsWithDefaultValues(nNodeHdl , cDefNumSvr, cDefDbName, m_csDBAOwner);
	LIBMON_CloseNodeStruct(nNodeHdl);

	// Read Runrepl.opt from "LocalDBNode (user:XXX)" or From "RunNode"
	if (lstrcmp((char *)m_pSvrDta->LocalDBNode,(char *)m_pSvrDta->RunNode) == 0)
		csVnodeAndUsers.Format(_T("%s%s%s%s"), m_pSvrDta->LocalDBNode,
		                                   LPUSERPREFIXINNODENAME,
		                                   (LPCTSTR)m_csDBAOwner,
										   LPUSERSUFFIXINNODENAME);
	else
		csVnodeAndUsers = m_pSvrDta->RunNode;
	nNodeHdl  = LIBMON_OpenNodeStruct ((LPUCHAR)(LPCTSTR)csVnodeAndUsers);
	if (nNodeHdl == -1) {
		strMsg.LoadString(IDS_MAX_NB_CONNECT);  // _T("Maximum number of connections has been reached"
		strMsg1.LoadString (IDS_E_READ_FILE);   //    " - Cannot read file."
		strMsg += _T("\n") + strMsg1;
		MessageBox(strMsg ,NULL, MB_ICONHAND | MB_OK | MB_TASKMODAL);
		return 0L;
	}

	CWaitCursor hourglass;
	// Read file Runrepl.opt and fill m_FlagsList.
	iret = GetReplicServerParams   ( pIpmDoc, m_pSvrDta, &m_FlagsList );
	
	LIBMON_CloseNodeStruct (nNodeHdl);
	CaReplicationItem* pItem = NULL;
	while (!m_FlagsList.IsEmpty())
	{
		pItem = m_FlagsList.RemoveHead();
		if (pItem->IsDisplay())
			AddItem (pItem);
		else
			delete pItem;
	}

	EnableButtons();
	return 0L;
}