/// <summary>
/// Creates a new OverlayElement of the type requested.
/// </summary>
/// <param name="typeName">The type of element to create is passed in as a string because this
/// allows plugins to register new types of component.</param>
/// <param name="instanceName">The type of element to create.</param>
/// <param name="isTemplate"></param>
/// <returns></returns>
public OverlayElement CreateElement(string typeName, string instanceName, bool isTemplate)
{
Hashtable elements = GetElementTable(isTemplate);
if (elements.ContainsKey(instanceName))
{
throw new AxiomException("OverlayElement with the name '{0}' already exists.", instanceName);
}
OverlayElement element = CreateElementFromFactory(typeName, instanceName);
element.Initialize();
// register
elements.Add(instanceName, element);
return(element);
}