4 using System.Collections.Generic;
6 using System.Reflection;
8 namespace SiliconStudio.
Paradox.UI.Renderers
17 private readonly Dictionary<Type, IElementRendererFactory> typesToUserFactories =
new Dictionary<Type, IElementRendererFactory>();
25 this.defaultFactory = defaultFactory;
30 var elementRenderer = element.ElementRenderer;
31 if (elementRenderer == null)
34 var currentType = element.GetType();
35 while (elementRenderer == null && currentType != null)
37 if (typesToUserFactories.ContainsKey(currentType))
38 elementRenderer = typesToUserFactories[currentType].TryCreateRenderer(element);
40 currentType = currentType.GetTypeInfo().BaseType;
44 if (elementRenderer == null && defaultFactory != null)
45 elementRenderer = defaultFactory.TryCreateRenderer(element);
47 if (elementRenderer == null)
48 throw new InvalidOperationException(
string.Format(
"No renderer found for element {0}", element));
51 element.ElementRenderer = elementRenderer;
54 return elementRenderer;
59 if (uiElementType == null)
throw new ArgumentNullException(
"uiElementType");
60 if (factory == null)
throw new ArgumentNullException(
"factory");
62 if(!typeof(
UIElement).GetTypeInfo().IsAssignableFrom(uiElementType.GetTypeInfo()))
63 throw new InvalidOperationException(uiElementType +
" is not a descendant of UIElement.");
65 typesToUserFactories[uiElementType] = factory;
70 if (element == null)
throw new ArgumentNullException(
"element");
71 if (renderer == null)
throw new ArgumentNullException(
"renderer");
73 element.ElementRenderer = renderer;
Provides a base class for all the User Interface elements in Paradox applications.
RendererManager(IElementRendererFactory defaultFactory)
Create a new instance of RendererManager with provided DefaultFactory
ElementRenderer GetRenderer(UIElement element)
Get the renderer of the corresponding UIElement.
A factory that can create ElementRenderers.
Base class for UI element renderers
void RegisterRendererFactory(Type uiElementType, IElementRendererFactory factory)
Associate a renderer factory to an UI element type.
The interface for managing UI element renderers.
The class in charge to manage the renderer of the different UIElement
void RegisterRenderer(UIElement element, ElementRenderer renderer)
Associate a renderer to an UIElement.