Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

497 lines
12 KiB

/*--------------------------------------------------------------------------*
*
* Microsoft Windows
* Copyright (C) Microsoft Corporation, 1999 - 1999
*
* File: amcview.inl
*
* Contents: Inline functions for CAMCView class.
*
* History: 29-Oct-99 AnandhaG Created
*
*--------------------------------------------------------------------------*/
#ifndef AMCVIEW_INL
#define AMCVIEW_INL
#pragma once
//+-------------------------------------------------------------------
//
// Member: SetScopePaneVisible
//
// Synopsis: Sets the flag in the view data that indicates whether
// the scope pane is visible or not. The window is
// physically shown by ScShowScopePane.
//
// Arguments: [bVisible] -
//
// Returns: None
//
//--------------------------------------------------------------------
inline void CAMCView::SetScopePaneVisible(bool bVisible)
{
/*
* we should only be marking the scope pane visible if it is
* allowed on this view
*/
ASSERT (!bVisible || IsScopePaneAllowed());
m_ViewData.SetScopePaneVisible (bVisible);
}
/*+-------------------------------------------------------------------------*
* CAMCView::IsScopePaneVisible
*
* Returns true if the scope pane is visible in this view, false otherwise
*--------------------------------------------------------------------------*/
inline bool CAMCView::IsScopePaneVisible(void) const
{
bool fVisible = m_ViewData.IsScopePaneVisible();
/*
* the scope pane should only be visible if it is
* permitted on this view
*/
ASSERT (IsScopePaneAllowed() || !fVisible);
return (fVisible);
}
//+-------------------------------------------------------------------
//
// Member: SetRootNode
//
// Synopsis: Set the root node.
//
// Arguments:
//
// Returns:
//
//--------------------------------------------------------------------
inline void CAMCView::SetRootNode(HMTNODE hMTNode)
{
ASSERT(hMTNode != 0);
ASSERT(m_hMTNode == 0);
m_hMTNode = hMTNode;
}
//+-------------------------------------------------------------------
//
// Member: GetNodeCallback
//
// Synopsis:
//
// Arguments:
//
// Returns:
//
//--------------------------------------------------------------------
inline INodeCallback* CAMCView::GetNodeCallback()
{
return m_spNodeCallback;
}
//+-------------------------------------------------------------------
//
// Member: GetScopeIterator
//
// Synopsis:
//
// Arguments:
//
// Returns:
//
//--------------------------------------------------------------------
inline IScopeTreeIter* CAMCView::GetScopeIterator()
{
return m_spScopeTreeIter;
}
//+-------------------------------------------------------------------
//
// Member: DeleteView
//
// Synopsis:
//
// Arguments:
//
// Returns:
//
//--------------------------------------------------------------------
inline void CAMCView::DeleteView()
{
GetParentFrame()->PostMessage(WM_SYSCOMMAND, SC_CLOSE, 0);
}
//+-------------------------------------------------------------------
//
// Member: GetScopeTreePtr
//
// Synopsis:
//
// Arguments:
//
// Returns:
//
//
// Note: The document may release the scope tree without
// notifying the view. The view should always go
// through this function to obtain a pointer to the
// the scope tree.
//
//--------------------------------------------------------------------
inline IScopeTree* CAMCView::GetScopeTreePtr()
{
CAMCDoc* const pDoc = GetDocument();
ASSERT(pDoc);
if (!pDoc)
return NULL;
IScopeTree* const pScopeTree = pDoc->GetScopeTree();
return pScopeTree;
}
//+-------------------------------------------------------------------
//
// Member: GetScopeTree
//
// Synopsis:
//
// Arguments:
//
// Returns:
//
//--------------------------------------------------------------------
inline IScopeTree* CAMCView::GetScopeTree()
{
IScopeTree* const pScopeTree = GetScopeTreePtr();
return pScopeTree;
}
//+-------------------------------------------------------------------
//
// Member: SetChildFrameWnd
//
// Synopsis:
//
// Arguments:
//
// Returns:
//
//--------------------------------------------------------------------
inline void CAMCView::SetChildFrameWnd(HWND hwndChildFrame)
{
if (hwndChildFrame == NULL || !::IsWindow(hwndChildFrame))
{
ASSERT(FALSE); // Invalid Arguments
return;
}
m_ViewData.m_hwndChildFrame = hwndChildFrame;
}
//+-------------------------------------------------------------------
//
// Member: GetParentFrame
//
// Synopsis:
//
// Arguments:
//
// Returns:
//
//--------------------------------------------------------------------
inline CChildFrame* CAMCView::GetParentFrame () const
{
CChildFrame* pFrame = dynamic_cast<CChildFrame*>(CView::GetParentFrame());
ASSERT (pFrame != NULL);
ASSERT_VALID (pFrame);
ASSERT_KINDOF (CChildFrame, pFrame);
return (pFrame);
}
//+-------------------------------------------------------------------
//
// Member: IsTracking
//
// Synopsis:
//
// Arguments:
//
// Returns:
//
//--------------------------------------------------------------------
inline bool CAMCView::IsTracking () const
{
return (m_pTracker != NULL);
}
//+-------------------------------------------------------------------
//
// Member: IsVerbEnabled
//
// Synopsis:
//
// Arguments:
//
// Returns:
//
//--------------------------------------------------------------------
inline BOOL CAMCView::IsVerbEnabled(MMC_CONSOLE_VERB verb)
{
BOOL bFlag = FALSE;
if (m_ViewData.m_spVerbSet != NULL)
{
HRESULT hr = m_ViewData.m_spVerbSet->GetVerbState(verb, ENABLED, &bFlag);
if (FAILED(hr))
bFlag = FALSE;
}
return bFlag;
}
//+-------------------------------------------------------------------
//
// Member: GetDefaultColumnWidths
//
// Synopsis:
//
// Arguments:
//
// Returns:
//
//--------------------------------------------------------------------
inline void CAMCView::GetDefaultColumnWidths(int columnWidth[2])
{
columnWidth[0] = m_columnWidth[0];
columnWidth[1] = m_columnWidth[1];
}
//+-------------------------------------------------------------------
//
// Member: SetDefaultColumnWidths
//
// Synopsis:
//
// Arguments:
//
// Returns:
//
//--------------------------------------------------------------------
inline void CAMCView::SetDefaultColumnWidths(int columnWidth[2], BOOL fUpdate)
{
// Bug 157408: remove the "Type" column for static nodes
columnWidth[1] = 0;
m_columnWidth[0] = columnWidth[0];
m_columnWidth[1] = columnWidth[1];
if (fUpdate == TRUE && m_pListCtrl != NULL)
{
CListCtrl& lc = m_pListCtrl->GetListCtrl();
lc.SetColumnWidth(0, m_columnWidth[0]);
lc.SetColumnWidth(1, m_columnWidth[1]);
}
SetDirty();
}
//+-------------------------------------------------------------------
//
// Member: GetDefaultListViewStyle
//
// Synopsis:
//
//--------------------------------------------------------------------
inline long CAMCView::GetDefaultListViewStyle() const
{
return m_DefaultLVStyle;
}
//+-------------------------------------------------------------------
//
// Member: SetDefaultListViewStyle
//
// Synopsis:
//
//--------------------------------------------------------------------
inline void CAMCView::SetDefaultListViewStyle(long style)
{
m_DefaultLVStyle = style;
}
//+-------------------------------------------------------------------
//
// Member: GetViewMode
//
// Synopsis:
//
//--------------------------------------------------------------------
inline int CAMCView::GetViewMode() const
{
return m_nViewMode;
}
//+-------------------------------------------------------------------
//
// Member: CanDoDragDrop
//
// Synopsis: if there are posted messages for multiselection changes
// to be processed then do not do drag&drop.
//
//--------------------------------------------------------------------
inline bool CAMCView::CanDoDragDrop()
{
if (m_pListCtrl && m_pListCtrl->IsListPad())
return false;
return !m_bProcessMultiSelectionChanges;
}
//+-------------------------------------------------------------------
//
// Member: HasListOrListPad
//
// Synopsis:
//
//--------------------------------------------------------------------
inline bool CAMCView::HasListOrListPad() const
{
return (HasList() || HasListPad());
}
//+-------------------------------------------------------------------
//
// Member: HasListPad
//
// Synopsis:
//
//--------------------------------------------------------------------
inline bool CAMCView::HasListPad() const
{
if (m_pListCtrl)
return m_pListCtrl->IsListPad();
return false;
}
//+-------------------------------------------------------------------
//
// Member: GetStdToolbar
//
// Synopsis:
//
//--------------------------------------------------------------------
inline CStandardToolbar* CAMCView::GetStdToolbar() const
{
return dynamic_cast<CStandardToolbar*>(m_ViewData.GetStdVerbButtons());
}
//+-------------------------------------------------------------------
//
// Member: CAMCView::ScColumnInfoListChanged
//
// Synopsis: The column-info-list (width/order/hiddeness) for currently
// selected node has changed ask nodemgr to persist the new data.
//
// Arguments: [colInfoList] - new data
//
// Returns: SC
//
//--------------------------------------------------------------------
inline SC CAMCView::ScColumnInfoListChanged (const CColumnInfoList& colInfoList)
{
DECLARE_SC(sc, _T("CAMCView::ScColumnInfoListChanged"));
INodeCallback* spNodeCallback = GetNodeCallback();
HNODE hNode = GetSelectedNode();
sc = ScCheckPointers(spNodeCallback, hNode, E_UNEXPECTED);
if(sc)
return sc;
sc = spNodeCallback->SaveColumnInfoList(hNode, colInfoList);
return (sc);
}
//+-------------------------------------------------------------------
//
// Member: CAMCView::ScGetPersistedColumnInfoList
//
// Synopsis: The list-view requests the column-data (no sort data) to setup the headers
// before any items are inserted into the list-view. Forward this
// request to nodemgr.
//
// Arguments: [pColInfoList] - [out param]
//
// Returns: SC
//
//--------------------------------------------------------------------
inline SC CAMCView::ScGetPersistedColumnInfoList (CColumnInfoList *pColInfoList)
{
DECLARE_SC(sc, _T("CAMCView::ScGetPersistedColumnInfoList"));
INodeCallback* spNodeCallback = GetNodeCallback();
HNODE hNode = GetSelectedNode();
sc = ScCheckPointers(spNodeCallback, hNode, E_UNEXPECTED);
if(sc)
return sc;
sc = spNodeCallback->GetPersistedColumnInfoList(hNode, pColInfoList);
return (sc);
}
//+-------------------------------------------------------------------
//
// Member: CAMCView::ScDeletePersistedColumnData
//
// Synopsis: The column data for currently selected node is invalid,
// ask nodemgr to remove it.
//
// Returns: SC
//
//--------------------------------------------------------------------
inline SC CAMCView::ScDeletePersistedColumnData ()
{
DECLARE_SC(sc, _T("CAMCView::ScDeletePersistedColumnData"));
INodeCallback* spNodeCallback = GetNodeCallback();
HNODE hNode = GetSelectedNode();
sc = ScCheckPointers(spNodeCallback, hNode, E_UNEXPECTED);
if(sc)
return sc;
sc = spNodeCallback->DeletePersistedColumnData(hNode);
return (sc);
}
//+-------------------------------------------------------------------
//
// Member: CanInsertScopeItemInResultPane
//
// Synopsis: Can we insert child scope items of currently selected scope
// item in the listview.
//
//--------------------------------------------------------------------
inline bool CAMCView::CanInsertScopeItemInResultPane()
{
// Can insert only if
// a) it is a non-virtual result list,
// b) Don't add the item if a node select is in progress
// because the tree control will automatically add all
// scope items as part of the select procedure.
// c) view-option to exclude scope items in result pane is not specified.
return (!IsVirtualList() && !IsSelectingNode() && !(GetListOptions() & RVTI_LIST_OPTIONS_EXCLUDE_SCOPE_ITEMS_FROM_LIST) );
}
#endif // AMCVIEW_INL