ns/dev/tankefugl/source/ui/UIFactory.cpp

103 lines
2.3 KiB
C++

#include "ui/UIFactory.h"
#include "ui/UIComponents.h"
#include "ui/UIPieMenu.h"
UIComponent* UIFactory::BuildComponent(const TRDescription& inTextRep, CSchemeManager* inSchemeManager)
{
UIComponent* theNewComp = NULL;
string theCompType = inTextRep.GetType();
// Switch on the type to see what kind of component to create
if(theCompType == "Label")
{
theNewComp = new UILabel();
}
if(theCompType == "FadingImageLabel")
{
theNewComp = new UIFadingImageLabel();
}
if(theCompType == "MarqueeComponent")
{
theNewComp = new UIMarqueeComponent();
}
else if(theCompType == "ImageLabel")
{
theNewComp = new UIImageLabel();
}
else if(theCompType == "ProgressBar")
{
theNewComp = new UIProgressBar();
}
else if(theCompType == "TreeFolder")
{
theNewComp = new UITreeFolder();
}
else if(theCompType == "ConfigWizard")
{
theNewComp = new UIConfigWizard();
}
else if(theCompType == "Menu")
{
theNewComp = new UIMenu();
}
else if(theCompType == "PopupMenu")
{
theNewComp = new UIPopupMenu();
}
else if(theCompType == "ImagePanel")
{
theNewComp = new UIImagePanel();
}
else if(theCompType == "Button")
{
theNewComp = new UIButton();
}
else if(theCompType == "PieMenu")
{
theNewComp = new UIPieMenu();
}
else if(theCompType == "ColoredPanel")
{
theNewComp = new UIColoredPanel();
}
else if(theCompType == "InvisiblePanel")
{
theNewComp = new UIInvisiblePanel();
}
else if(theCompType == "Slider")
{
theNewComp = new UISlider();
}
else if(theCompType == "Slider2")
{
theNewComp = new UISlider2();
}
else if(theCompType == "SliderPlus")
{
theNewComp = new UISliderPlus();
}
else if(theCompType == "StaticLabel")
{
theNewComp = new UIStaticLabel();
}
else if(theCompType == "SpritePanel")
{
theNewComp = new UISpritePanel();
}
else if(theCompType == "DummyPanel")
{
theNewComp = new UIDummyPanel();
}
// TODO: More cases here
// If we recognized the type, initialize it and return it
if(theNewComp)
{
theNewComp->AllocateAndSetProperties(inTextRep, inSchemeManager);
}
return theNewComp;
}