internal WidgetFunctionRuntimeTreeNode(IWidgetFunction widgetFunction, string label, HelpDefinition helpDefinition, string bindingSourceName, List<BaseParameterRuntimeTreeNode> parameters) { _widgetFunction = widgetFunction; this.Label = label; this.HelpDefinition = helpDefinition; this.BindingSourceName = bindingSourceName; this.Parameters = parameters; }
internal WidgetFunctionRuntimeTreeNode(IWidgetFunction widgetFunction, string label, HelpDefinition helpDefinition, string bindingSourceName, List <BaseParameterRuntimeTreeNode> parameters) { _widgetFunction = widgetFunction; this.Label = label; this.HelpDefinition = helpDefinition; this.BindingSourceName = bindingSourceName; this.Parameters = parameters; }
/// <exclude /> public WidgetFunctionProvider(IWidgetFunction widgetFunction) { if (widgetFunction == null) { throw new ArgumentNullException("widgetFunction"); } _widgetFunction = widgetFunction; }
/// <exclude /> public static bool TryGetWidgetFunction(out IWidgetFunction foundFunction, string name) { if (MetaFunctionProviderRegistry.WidgetFunctionNames.Contains(name)) { foundFunction = GetWidgetFunction(name); return(true); } foundFunction = null; return(false); }
private void EnsureWidgetFunction() { lock (_lock) { if (_widgetFunction == null && _serializedWidgetFunction != null) { WidgetFunctionRuntimeTreeNode functionNode = (WidgetFunctionRuntimeTreeNode)FunctionFacade.BuildTree(_serializedWidgetFunction); _setParameters = functionNode.GetSetParameters().ToList(); _widgetFunction = functionNode.GetWidgetFunction(); } } }
/// <exclude /> public static FormTreeCompiler BuildWidgetForParameters(IEnumerable <ParameterProfile> parameterProfiles, Dictionary <string, object> bindings, string uniqueName, string panelLabel, IFormChannelIdentifier channelIdentifier) { XNamespace stdControlLibSpace = Namespaces.BindingFormsStdUiControls10; var bindingsDeclaration = new XElement(Namespaces.BindingForms10 + "bindings"); var widgetPlaceholder = new XElement(stdControlLibSpace + "FieldGroup", new XAttribute("Label", panelLabel)); var bindingsValidationRules = new Dictionary <string, List <ClientValidationRule> >(); foreach (ParameterProfile parameterProfile in parameterProfiles.Where(f => f.WidgetFunction != null)) { IWidgetFunction widgetFunction = parameterProfile.WidgetFunction; Type bindingType = widgetFunction != null && parameterProfile.Type.IsLazyGenericType() ? widgetFunction.ReturnType : parameterProfile.Type; bindingsDeclaration.Add( new XElement(Namespaces.BindingForms10 + "binding", new XAttribute("optional", true), new XAttribute("name", parameterProfile.Name), new XAttribute("type", bindingType.AssemblyQualifiedName))); var context = new FunctionContextContainer(); XElement uiMarkup = FunctionFacade.GetWidgetMarkup(widgetFunction, parameterProfile.Type, parameterProfile.WidgetFunctionParameters, parameterProfile.Label, parameterProfile.HelpDefinition, parameterProfile.Name, context); widgetPlaceholder.Add(uiMarkup); if (!bindings.ContainsKey(parameterProfile.Name)) { bindings.Add(parameterProfile.Name, ""); } if (parameterProfile.IsRequired) { bindingsValidationRules.Add(parameterProfile.Name, new List <ClientValidationRule> { new NotNullClientValidationRule() }); } } FormDefinition widgetFormDefinition = BuildFormDefinition(bindingsDeclaration, widgetPlaceholder, bindings); var compiler = new FormTreeCompiler(); using (XmlReader reader = widgetFormDefinition.FormMarkup) { compiler.Compile(reader, channelIdentifier, widgetFormDefinition.Bindings, false, "WidgetParameterSetters" + uniqueName, bindingsValidationRules); } return(compiler); }
private static WidgetFunctionRuntimeTreeNode BuildWidgetFunctionRuntimeNode(XElement element) { XAttribute nameAttribute = element.Attribute(FunctionTreeConfigurationNames.NameAttributeName); if (nameAttribute == null) { throw new InvalidOperationException(string.Format("Missing attribute named '{0}'", FunctionTreeConfigurationNames.NameAttributeName)); } string label = AttributeValueOrEmpty(element, FunctionTreeConfigurationNames.LabelAttributeName); string bindingSourceName = AttributeValueOrEmpty(element, FunctionTreeConfigurationNames.BindingSourceNameAttributeName); HelpDefinition helpDefinition = null; var parameters = new List <BaseParameterRuntimeTreeNode>(); foreach (XElement childElement in element.Elements()) { if (childElement.Name.LocalName == FunctionTreeConfigurationNames.HelpDefinitionTagName) { helpDefinition = HelpDefinition.Deserialize(childElement); } else if (childElement.Name.LocalName == FunctionTreeConfigurationNames.ParamTagName) { BaseParameterRuntimeTreeNode parameterTreeNode = BuildParameterFunctionRuntimeNode(childElement); parameters.Add(parameterTreeNode); } else { throw new InvalidOperationException(string.Format("Only '{0}' tags allowed inside '{1}' tags", FunctionTreeConfigurationNames.ParamTagName, FunctionTreeConfigurationNames.FunctionTagName)); } } if (helpDefinition == null) { helpDefinition = new HelpDefinition(""); } IWidgetFunction widgetFunction = FunctionFacade.GetWidgetFunction(nameAttribute.Value); foreach (BaseParameterRuntimeTreeNode parameter in parameters) { if (widgetFunction.ParameterProfiles.All(pp => pp.Name != parameter.Name)) { throw new InvalidOperationException(string.Format("The parameter '{0}' is not defined in the function named '{1}' parameter profiles", parameter.Name, widgetFunction.CompositeName())); } } return(new WidgetFunctionRuntimeTreeNode(widgetFunction, label, helpDefinition, bindingSourceName, parameters)); }
//public static XElement GetWidgetMarkup(IWidgetFunction widgetFunction, Type targetType, IDictionary<string, object> parameters, string label, HelpDefinition helpDefinition, string bindingSourceName, FunctionContextContainer functionContextContainer) //{ // List<BaseParameterRuntimeTreeNode> parameterNodes = new List<BaseParameterRuntimeTreeNode>(); // if (parameters != null) // { // foreach (KeyValuePair<string, object> kvp in parameters) // { // parameterNodes.Add(new ConstantObjectParameterRuntimeTreeNode(kvp.Key, kvp.Value)); // } // } // BaseRuntimeTreeNode node = new WidgetFunctionRuntimeTreeNode(widgetFunction, label, helpDefinition, bindingSourceName, parameterNodes); // return (XElement)node.GetValue(functionContextContainer); //} /// <exclude /> public static XElement GetWidgetMarkup(IWidgetFunction widgetFunction, Type targetType, IEnumerable <BaseParameterRuntimeTreeNode> parameters, string label, HelpDefinition helpDefinition, string bindingSourceName, FunctionContextContainer functionContextContainer) { List <BaseParameterRuntimeTreeNode> parameterNodes = new List <BaseParameterRuntimeTreeNode>(); if (parameters != null) { foreach (BaseParameterRuntimeTreeNode parameterNode in parameters) { parameterNodes.Add(parameterNode); } } BaseRuntimeTreeNode node = new WidgetFunctionRuntimeTreeNode(widgetFunction, label, helpDefinition, bindingSourceName, parameterNodes); return((XElement)node.GetValue(functionContextContainer)); }
/// <exclude /> public WidgetFunctionRuntimeTreeNode(IWidgetFunction widgetFunction, List <BaseParameterRuntimeTreeNode> parameters) : this(widgetFunction, "", new HelpDefinition(""), "", parameters) { }
/// <exclude /> public static WidgetFunctionRuntimeTreeNode BuildWidgetFunction(string widgetFunctionName, string label, HelpDefinition helpDefinition, string bindingSourceName) { IWidgetFunction widgetFunction = FunctionFacade.GetWidgetFunction(widgetFunctionName); return(new WidgetFunctionRuntimeTreeNode(widgetFunction, label, helpDefinition, bindingSourceName)); }
/// <exclude /> public WidgetFunctionRuntimeTreeNode(IWidgetFunction widgetFunction, string label, HelpDefinition helpDefinition, string bindingSourceName) : this(widgetFunction, label, helpDefinition, bindingSourceName, new List<BaseParameterRuntimeTreeNode>()) { }
internal WidgetFunctionWrapper(IWidgetFunction widgetFunctionToWrap) { _widgetFunctionToWrap = widgetFunctionToWrap; }
/// <exclude /> public WidgetFunctionProvider(IWidgetFunction widgetFunction) { if (widgetFunction == null) throw new ArgumentNullException("widgetFunction"); _widgetFunction = widgetFunction; }
/// <exclude /> public static WidgetFunctionProvider GetDefaultWidgetFunctionProviderByType(Type type, bool required) { if (type == typeof(string)) { return(StandardWidgetFunctions.TextBoxWidget); } if (type == typeof(int) || type == typeof(int?)) { return(StandardWidgetFunctions.IntegerTextBoxWidget); } if (type == typeof(Decimal) || type == typeof(Decimal?)) { return(StandardWidgetFunctions.DecimalTextBoxWidget); } if (type == typeof(DateTime) || type == typeof(DateTime?)) { return(StandardWidgetFunctions.DateSelectorWidget); } if (type == typeof(Guid) || type == typeof(Guid?)) { return(StandardWidgetFunctions.GuidTextBoxWidget); } if (type == typeof(bool) || type == typeof(bool?)) { return(StandardWidgetFunctions.CheckBoxWidget); } if (type == typeof(DataReference <IImageFile>)) { return(StandardWidgetFunctions.GetImageSelectorWidget(required)); } if (type == typeof(NullableDataReference <IImageFile>)) { return(StandardWidgetFunctions.GetImageSelectorWidget(false)); } if (type == typeof(DataReference <IMediaFile>)) { return(StandardWidgetFunctions.GetMediaFileSelectorWidget(required)); } if (type == typeof(NullableDataReference <IMediaFile>)) { return(StandardWidgetFunctions.GetMediaFileSelectorWidget(false)); } if (type == typeof(XhtmlDocument)) { return(StandardWidgetFunctions.VisualXhtmlDocumentEditorWidget); } IEnumerable <string> functionNames = FunctionFacade.GetWidgetFunctionNamesByType(type); foreach (string functionName in functionNames) { IWidgetFunction widgetFunction = FunctionFacade.GetWidgetFunction(functionName); bool sameType = widgetFunction.ReturnType == type; if (!sameType && !required && type.IsGenericType && type.GetGenericTypeDefinition() == typeof(DataReference <>) && type.IsAssignableFrom(widgetFunction.ReturnType) && widgetFunction.ReturnType == typeof(NullableDataReference <>).MakeGenericType(type.GetGenericArguments())) { sameType = true; } if (sameType && !widgetFunction.ParameterProfiles.Any(p => p.IsRequired)) { return(new WidgetFunctionProvider(widgetFunction)); } } if (type.IsLazyGenericType()) { var lazyType = type.GetGenericArguments().First(); var provider = GetDefaultWidgetFunctionProviderByType(lazyType, required); if (provider != null) { return(provider); } } return(null); }
/// <exclude /> public WidgetFunctionRuntimeTreeNode(IWidgetFunction widgetFunction, string label, HelpDefinition helpDefinition, string bindingSourceName) : this(widgetFunction, label, helpDefinition, bindingSourceName, new List <BaseParameterRuntimeTreeNode>()) { }
/// <exclude /> public WidgetFunctionRuntimeTreeNode(IWidgetFunction widgetFunction, List<BaseParameterRuntimeTreeNode> parameters) : this(widgetFunction, "", new HelpDefinition(""), "", parameters) { }