コード例 #1
0
        private static void writeFormItemGetter(
            TextWriter writer, ModificationField field, string controlTypeForName, IEnumerable <CSharpParameter> requiredParams, bool controlIsLabeled,
            IEnumerable <CSharpParameter> preValueOptionalParams, string valueParamTypeName, IEnumerable <CSharpParameter> postValueOptionalParams,
            bool includeAdditionalValidationMethodParam, Func <string, string> formControlExpressionGetter, string preFormItemStatements = "",
            string postFormItemStatements = "", IEnumerable <string> additionalSummarySentences = null)
        {
            var parameters = new List <CSharpParameter>();

            parameters.AddRange(requiredParams);
            parameters.Add(new CSharpParameter("FormItemSetup", "formItemSetup", "null"));
            parameters.Add(new CSharpParameter("IReadOnlyCollection<PhrasingComponent>", "label", "null"));
            if (controlIsLabeled)
            {
                parameters.Add(new CSharpParameter("IReadOnlyCollection<PhrasingComponent>", "formItemLabel", "null"));
            }
            parameters.AddRange(preValueOptionalParams);
            parameters.Add(new CSharpParameter(valueParamTypeName, "value", "null"));
            parameters.AddRange(postValueOptionalParams);
            if (includeAdditionalValidationMethodParam)
            {
                parameters.Add(
                    new CSharpParameter(
                        "System.Action<Validator>",
                        "additionalValidationMethod",
                        defaultValue: "null",
                        description: "A method that takes the form control’s validator and performs additional validation."));
            }

            CodeGenerationStatics.AddSummaryDocComment(
                writer,
                getFormItemGetterSummary(field, controlTypeForName, additionalSummarySentences ?? new string[0]));
            foreach (var i in parameters)
            {
                CodeGenerationStatics.AddParamDocComment(writer, i.Name, i.Description);
            }
            writer.WriteLine(
                "public FormItem " + EwlStatics.GetCSharpIdentifier("Get" + field.PascalCasedName + controlTypeForName + "FormItem") + "( " +
                parameters.Select(i => i.MethodSignatureDeclaration).GetCommaDelimitedStringFromCollection() + " ) {");
            writer.WriteLine("label = label ?? \"{0}\".ToComponents();".FormatWith(getDefaultLabel(field)));
            writer.WriteLine(
                StringTools.ConcatenateWithDelimiter(
                    Environment.NewLine,
                    preFormItemStatements,
                    "var formItem = {0}.ToFormItem( setup: formItemSetup, label: {1} );".FormatWith(
                        formControlExpressionGetter(EwlStatics.GetCSharpIdentifier(field.PrivateFieldName)),
                        controlIsLabeled ? "formItemLabel" : "label"),
                    postFormItemStatements,
                    "return formItem;"));
            writer.WriteLine("}");
        }
コード例 #2
0
        private static void writeFormItemGetter(
            TextWriter writer, string controlType, ModificationField field, string controlTypeForName, string valueParamTypeName,
            IEnumerable <CSharpParameter> requiredControlParams, IEnumerable <CSharpParameter> requiredValidationParams, string valueParamDefaultValue,
            IEnumerable <CSharpParameter> optionalControlParams, bool includeValidationParams, IEnumerable <CSharpParameter> optionalValidationParams, string body,
            IEnumerable <string> additionalSummarySentences)
        {
            CodeGenerationStatics.AddSummaryDocComment(writer, getFormItemGetterSummary(field, controlTypeForName, additionalSummarySentences));
            CodeGenerationStatics.AddParamDocComment(writer, "additionalValidationMethod", "Passes the labelAndSubject and a validator to the function.");
            CodeGenerationStatics.AddParamDocComment(writer, "validationList", validationListParamDocComment);

            var parameters = new List <CSharpParameter>();

            if (valueParamTypeName.Length > 0)
            {
                parameters.Add(new CSharpParameter("bool", "useValueParameter"));
            }
            parameters.AddRange(requiredControlParams);
            parameters.AddRange(requiredValidationParams);
            parameters.Add(new CSharpParameter("string", "labelAndSubject", "\"" + getDefaultLabelAndSubject(field) + "\""));
            parameters.Add(new CSharpParameter("FormItemLabel", "labelOverride", "null"));
            if (valueParamTypeName.Length > 0)
            {
                parameters.Add(new CSharpParameter(valueParamTypeName, "value", valueParamDefaultValue));
            }
            parameters.AddRange(optionalControlParams);
            parameters.Add(new CSharpParameter("int?", "cellSpan", "null"));
            parameters.Add(new CSharpParameter("TextAlignment", "textAlignment", "TextAlignment.NotSpecified"));
            if (includeValidationParams)
            {
                parameters.Add(new CSharpParameter("System.Func<bool>", "validationPredicate", "null"));
            }
            parameters.AddRange(optionalValidationParams);
            if (includeValidationParams)
            {
                parameters.Add(new CSharpParameter("System.Action", "validationErrorNotifier", "null"));
                parameters.Add(new CSharpParameter("System.Action<string,Validator>", "additionalValidationMethod", "null"));
                parameters.Add(new CSharpParameter("ValidationList", "validationList", "null"));
            }

            writer.WriteLine(
                "public FormItem<" + controlType + "> " +
                StandardLibraryMethods.GetCSharpIdentifierSimple("Get" + field.PascalCasedName + controlTypeForName + "FormItem") + "( " +
                parameters.Select(i => i.MethodSignatureDeclaration).GetCommaDelimitedStringFromCollection() + " ) {");
            writer.WriteLine(body);
            writer.WriteLine("}");
        }
コード例 #3
0
        private static void writeGenericGetter(
            TextWriter writer, ModificationField field, bool includeValueParams, bool?includeValidationMethodReturnValue, string body)
        {
            CodeGenerationStatics.AddSummaryDocComment(writer, getFormItemGetterSummary(field, "", new string[0]));
            CodeGenerationStatics.AddParamDocComment(writer, "additionalValidationMethod", "Passes the labelAndSubject and a validator to the function.");
            CodeGenerationStatics.AddParamDocComment(writer, "validationList", validationListParamDocComment);

            var parameters = new List <CSharpParameter>();

            if (includeValueParams)
            {
                parameters.Add(new CSharpParameter("bool", "useValueParameter"));
            }
            parameters.Add(
                new CSharpParameter("System.Func<" + (includeValueParams ? field.NullableTypeName : field.TypeName) + ",string,ControlType>", "controlGetter"));
            if (includeValidationMethodReturnValue.HasValue)
            {
                parameters.Add(
                    includeValidationMethodReturnValue.Value
                                                ? new CSharpParameter("System.Func<ControlType,PostBackValueDictionary,string,Validator," + field.TypeName + ">", "validationMethod")
                                                : new CSharpParameter("System.Action<ControlType,PostBackValueDictionary,string,Validator>", "validationMethod"));
            }
            parameters.Add(new CSharpParameter("string", "labelAndSubject", "\"" + getDefaultLabelAndSubject(field) + "\""));
            parameters.Add(new CSharpParameter("FormItemLabel", "labelOverride", "null"));
            if (includeValueParams)
            {
                parameters.Add(new CSharpParameter(field.NullableTypeName, "value", field.TypeIs(typeof(string)) ? "\"\"" : "null"));
            }
            parameters.Add(new CSharpParameter("int?", "cellSpan", "null"));
            parameters.Add(new CSharpParameter("TextAlignment", "textAlignment", "TextAlignment.NotSpecified"));
            if (includeValidationMethodReturnValue.HasValue)
            {
                parameters.Add(new CSharpParameter("System.Func<bool>", "validationPredicate", "null"));
                parameters.Add(new CSharpParameter("System.Action", "validationErrorNotifier", "null"));
                parameters.Add(new CSharpParameter("System.Action<string,Validator>", "additionalValidationMethod", "null"));
                parameters.Add(new CSharpParameter("ValidationList", "validationList", "null"));
            }

            writer.WriteLine(
                "public FormItem<ControlType> " + StandardLibraryMethods.GetCSharpIdentifierSimple("Get" + field.PascalCasedName + "FormItem") + "<ControlType>( " +
                parameters.Select(i => i.MethodSignatureDeclaration).GetCommaDelimitedStringFromCollection() + " ) where ControlType: Control {");
            writer.WriteLine(body);
            writer.WriteLine("}");
        }