//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Core Movie Maker UI API
//
//=============================================================================

#include "toolutils/toolmenubar.h"
#include "vgui_controls/Label.h"

// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"


using namespace vgui;


//-----------------------------------------------------------------------------
//
// Version that only has tool name and info
//
//-----------------------------------------------------------------------------


//-----------------------------------------------------------------------------
// Constructor
//-----------------------------------------------------------------------------
CToolMenuBar::CToolMenuBar( CBaseToolSystem *pParent, const char *pPanelName ) :
	BaseClass( (Panel *)pParent, pPanelName ),
	m_pToolSystem( pParent )
{
	m_pInfo = new Label( this, "Info", "" );
	m_pToolName = new Label( this, "ToolName", "" );
}

CBaseToolSystem *CToolMenuBar::GetToolSystem()
{
	return m_pToolSystem;
}

//-----------------------------------------------------------------------------
// Sets the tool bar's name
//-----------------------------------------------------------------------------
void CToolMenuBar::SetToolName( const char *pName )
{
	m_pToolName->SetText( pName );
	InvalidateLayout();
}


//-----------------------------------------------------------------------------
// Sets the tool bar info
//-----------------------------------------------------------------------------
void CToolMenuBar::SetInfo( const char *pInfo )
{
	m_pInfo->SetText( pInfo );
	InvalidateLayout();
}


//-----------------------------------------------------------------------------
// Lays out the menu bar 
//-----------------------------------------------------------------------------
void CToolMenuBar::PerformLayout()
{
	BaseClass::PerformLayout();

	int w, h;
	GetSize( w, h );

	int cw, ch;
	m_pInfo->GetContentSize( cw, ch );

	int right = w - cw - 20;
	m_pInfo->SetBounds( right, 0, cw, h );

	m_pToolName->GetContentSize( cw, ch );
	m_pToolName->SetBounds( right - cw - 5, 0, cw, h );
}


//-----------------------------------------------------------------------------
//
// Version that only has tool name, info, and file name
//
//-----------------------------------------------------------------------------


//-----------------------------------------------------------------------------
// Constructor
//-----------------------------------------------------------------------------
CToolFileMenuBar::CToolFileMenuBar( CBaseToolSystem *parent, const char *panelName ) :
	BaseClass( parent, panelName )
{
	m_pFileName = new Label( this, "FileName", "" );
}


void CToolFileMenuBar::SetFileName( char const *name )
{
	m_pFileName->SetText( name );
	InvalidateLayout();
}


//-----------------------------------------------------------------------------
// Performs layout
//-----------------------------------------------------------------------------
void CToolFileMenuBar::PerformLayout()
{
	BaseClass::PerformLayout();

	int w, h;
	GetSize( w, h );

	int cw, ch;
	m_pInfo->GetContentSize( cw, ch );

	int right = w - cw - 20;

	m_pToolName->GetContentSize( cw, ch );

	int barx, bary;
	GetContentSize( barx, bary );

	int faredge = right - cw - 5- 2;
	int nearedge = barx + 2;

	int mid = ( nearedge + faredge ) * 0.5f;

	m_pFileName->GetContentSize( cw, ch );
	m_pFileName->SetBounds( mid - cw * 0.5f, 0, cw, h );
}