//
// Copyright 1997 Nicholas J. Irias.  All rights reserved.
//
//


#include "stdafx.h"
#include "p4win.h"
#include "DepotView.h"
#include "MainFrm.h"
#include "ImageList.h"

/////////////////////////////////////////////////////////////////////////////
// CDepotView

IMPLEMENT_DYNCREATE(CDepotView, CP4PaneView)

BEGIN_MESSAGE_MAP(CDepotView, CP4PaneView)
ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR, OnDropDown)
ON_UPDATE_COMMAND_UI(ID_VIEW_DEPOT, OnUpdateViewDepot)
END_MESSAGE_MAP()

CDepotView::CDepotView() 
{
	m_content = &m_depotTreeCtrl;
}

CDepotView::~CDepotView() {}

bool CDepotView::CreateContent()
{
	if(!m_depotTreeCtrl.Create( WS_CHILD | WS_VISIBLE, CRect(0, 0, 10, 10), this, 1))
		return false;
	return true;
}

void CDepotView::SetToolBarButtons()
{
	m_toolBar.SetButtons(NULL, 4);
	m_toolBar.SetButtonInfo(0, ID_VIEW_UPDATE_LEFT, TBBS_BUTTON, 
		CP4WinToolBarImageList::TBI_REFRESH);
	m_toolBar.SetButtonInfo(1, ID_VIEW_FILTEREDVIEW, TBBS_BUTTON, 
		CP4WinToolBarImageList::TBI_SETFILTER);
	m_toolBar.SetButtonInfo(2, ID_VIEW_CLEARFILTER, TBBS_BUTTON, 
		CP4WinToolBarImageList::TBI_CLEARFILTER);
	m_toolBar.SetButtonInfo(3, ID_VIEW_DEPOT, TBBS_DROPDOWN|BTNS_WHOLEDROPDOWN, 
		CP4WinToolBarImageList::TBI_VIEWOPTIONS);
	if (MainFrame()->m_osVer.dwMajorVersion >= 5 && MainFrame()->m_IconsInMenus)
	{
		MainFrame()->SaveToolBarBitmap(CP4WinToolBarImageList::TBI_REFRESH, ID_VIEW_UPDATE);	// use ID_VIEW_UPDATE because that's in menu
		MainFrame()->SaveToolBarBitmap(CP4WinToolBarImageList::TBI_SETFILTER, ID_VIEW_FILTEREDVIEW);
		MainFrame()->SaveToolBarBitmap(CP4WinToolBarImageList::TBI_CLEARFILTER, ID_VIEW_CLEARFILTER);
	}

}

void CDepotView::OnUpdateViewDepot(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( !SERVER_BUSY() );	
}

void CDepotView::OnDropDown(NMHDR* pNotifyStruct, LRESULT* pResult)
{
	// this function handles the dropdown menus from the toolbar
	NMTOOLBAR* pNMToolBar = (NMTOOLBAR*)pNotifyStruct;
	CRect rect;

	// translate the current toolbar item rectangle into screen coordinates
	// so that we'll know where to pop up the menu
	m_toolBar.GetToolBarCtrl().GetRect(pNMToolBar->iItem, &rect);
	rect.top = rect.bottom;
	::ClientToScreen(pNMToolBar->hdr.hwndFrom, &rect.TopLeft());
	CMenu menu;
	switch(pNMToolBar->iItem)
	{
	case ID_VIEW_DEPOT:
		menu.LoadMenu(IDR_VIEW_DEPOT);
		break;
	default:
		MainFrame()->OnDropDown(pNotifyStruct, pResult);
		return;
	}

	menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, rect.left, rect.top + 1, AfxGetMainWnd());
	*pResult = TBDDRET_DEFAULT;
}

void CDepotView::LButtonDblClk()
{
#ifdef _DEBUG
	CMenu menu;
	menu.LoadMenu(IDR_VIEW_DEPOT);
	menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, 0, 0 + 1, AfxGetMainWnd());
#endif
}