OverlayElement* OverlayContainer::clone(const String& instanceName) { OverlayContainer *newContainer; newContainer = static_cast<OverlayContainer*>(OverlayElement::clone(instanceName)); ChildIterator it = getChildIterator(); while (it.hasMoreElements()) { OverlayElement* oldChildElement = it.getNext(); if (oldChildElement->isCloneable()) { OverlayElement* newChildElement = oldChildElement->clone(instanceName); newContainer->_addChild(newChildElement); } } return newContainer; }
void OverlayContainer::copyFromTemplate(OverlayElement* templateOverlay) { OverlayElement::copyFromTemplate(templateOverlay); if (templateOverlay->isContainer() && isContainer()) { OverlayContainer::ChildIterator it = static_cast<OverlayContainer*>(templateOverlay)->getChildIterator(); while (it.hasMoreElements()) { OverlayElement* oldChildElement = it.getNext(); if (oldChildElement->isCloneable()) { OverlayElement* newChildElement = OverlayManager::getSingleton().createOverlayElement( oldChildElement->getTypeName(), mName+"/"+oldChildElement->getName()); newChildElement->copyFromTemplate(oldChildElement); addChild(static_cast<OverlayContainer*>(newChildElement)); } } } }