#include "mod/AvHUIFactory.h"
#include "mod/AvHTeamHierarchy.h"
#include "mod/AvHActionButtons.h"
#include "mod/AvHScrollPanel.h"
#include "mod/AvHLogoutComponent.h"
#include "mod/AvHTechImpulsePanel.h"

// Knows how to build custom mod-specific components
UIComponent* AvHUIFactory::BuildComponent(const TRDescription& inTextRep, CSchemeManager* inSchemeManager)
{
    UIComponent* theNewComponent = NULL;

    // If base class can't create it, maybe it's a custom component
    theNewComponent = UIFactory::BuildComponent(inTextRep, inSchemeManager);
    if(!theNewComponent)
    {
    	string theCompType = inTextRep.GetType();

        if(theCompType == "TeamHierarchy")
        {
            theNewComponent = new AvHUITeamHierarchy();
        }
		else if(theCompType == "ActionButtons")
		{
			theNewComponent = new AvHUIActionButtons();
		}
		else if(theCompType == "ScrollPanel")
		{
			theNewComponent = new AvHUIScrollPanel();
		}
		else if(theCompType == "LogoutComponent")
		{
			theNewComponent = new AvHUILogoutComponent();
		}
		else if(theCompType == "TechImpulsePanel")
		{
			theNewComponent = new AvHUITechImpulsePanel();
		}
		
        // Initialize it
	    if(theNewComponent)
	    {
	    	theNewComponent->AllocateAndSetProperties(inTextRep, inSchemeManager);
	    }
    }
    return theNewComponent;
}