/****************************************************************************************************

		IHierarchyWindow.h
		Copyright: (c) 2001 Eovia Corp. All rights reserved.

		Author:	Arnaud
		Date:	6/29/2005

****************************************************************************************************/

#ifndef __IHierarchyWindow__
#define __IHierarchyWindow__

#if CP_PRAGMA_ONCE
#pragma once
#endif


#include "MCCompObj.h"


MCDEFINE_GUID_H(IID_IHierarchyWindow);

struct IMFPart;
struct IMFWindow;
struct I3DExHierarchyModule;

/// \addtogroup ShellInterface
/// \{


enum EHierarchyTabs
{
	kHierarchyTab	= 'hier',
	kBrowserTab		= 'brow',
	kNoTab			= 'void',
};
	
enum EShowHideAction
{
	kHideContent,
	kShowContent,
	kToggleContent,
};

/// Interface to access the hierarchy (or sequencer) window
///
struct IHierarchyWindow : public IMCUnknown
{
	/// IHierarchyWindow is always an IMFPart
	virtual IMFPart*			MCCOMAPI GetThisPart		() = 0;
	
	/// IHierarchyWindow is always an IMFWindow
	virtual IMFWindow*			MCCOMAPI GetThisWindow		() = 0;

	/// Removes the default content (browser) from the window
	virtual void				MCCOMAPI HideDefaultContent	() = 0;

	/// Restores the default content (browser) into the window
	virtual void				MCCOMAPI ShowDefaultContent	() = 0;

	/// Hides or shows the given content depending on the current tab and whether the drawer is showing or not
	virtual void				MCCOMAPI ShowHideContent	(EHierarchyTabs contentID, EShowHideAction action) = 0;

	/// Sets the I3DExHierarchyModule on the hierarchy window
	virtual void				MCCOMAPI SetModule			(I3DExHierarchyModule* inModule) = 0;
};

/// \}


#endif