Пример #1
0
    /// <summary>
    /// 创建一个 HTML 表单对象
    /// </summary>
    /// <param name="element">表单元素</param>
    /// <param name="configuration">表单配置</param>
    /// <param name="provider">表单控件提供程序</param>
    public HtmlForm( IHtmlElement element, FormConfiguration configuration = null, IFormProvider provider = null )
    {

      if ( element == null )
        throw new ArgumentNullException( "element" );

      var document = element.Document;

      if ( document == null )
        throw new InvalidOperationException();


      var modifier = document.DomModifier as ISynchronizedDomModifier;
      if ( modifier == null )
        throw new InvalidOperationException();


      SyncRoot = modifier.SyncRoot;
      
      _element = element;

      Configuration = configuration ?? new FormConfiguration();
      Provider = provider ?? new StandardFormProvider();


      RefreshForm();
    }
Пример #2
0
 public FieldApiController(IFormProvider formProvider, IFieldProvider fieldProvider, IControlMatcher controlMatcher, IHumanizer humanizer)
 {
     FormProvider   = formProvider;
     FieldProvider  = fieldProvider;
     ControlMatcher = controlMatcher;
     Humanizer      = humanizer;
 }
Пример #3
0
        public Form1(ILogger <Form1> logger, IFormProvider formProvider)
        {
            InitializeComponent();
            _logger       = logger;
            _formProvider = formProvider;

            ThreadLabel.Text = $"{Thread.CurrentThread.ManagedThreadId} {Thread.CurrentThread.Name}";
        }
Пример #4
0
    /// <summary>
    /// 尝试将一个HTML元素转换为表单
    /// </summary>
    /// <param name="element">要转换为表单的元素</param>
    /// <param name="configuration">表单配置</param>
    /// <param name="provider">表单控件提供程序</param>
    /// <returns></returns>
    public static HtmlForm AsForm( this IHtmlElement element, FormConfiguration configuration = null, IFormProvider provider = null )
    {

      if ( element == null )
        throw new ArgumentNullException( "element" );


      return new HtmlForm( element, configuration, provider );
    }
 public FormSpawnHostedService(
     ILogger <FormSpawnHostedService> logger,
     IFormProvider formProvider,
     IGuiContext guiContext)
 {
     _logger     = logger;
     _fp         = formProvider;
     _guiContext = guiContext;
 }
Пример #6
0
 public FieldApiController(ILogger <FieldApiController> logger, IFormProvider formProvider, IFieldProvider fieldProvider, IControlMatcher controlMatcher, IHumanizer humanizer, IPluralizer pluralizer, ISingularizer singularizer)
 {
     Logger         = logger;
     FormProvider   = formProvider;
     FieldProvider  = fieldProvider;
     ControlMatcher = controlMatcher;
     Humanizer      = humanizer;
     Pluralizer     = pluralizer;
     Singularizer   = singularizer;
 }
Пример #7
0
 public FieldProvider(IFormProvider formProvider, IFieldCreator fieldCreator)
 {
     FieldsByFormId = formProvider.GetAll().ToDictionary(
         f => f.Id,
         f => f.Type
         .GetProperties()
         .Where(p => p.GetGetMethod() != null && p.GetSetMethod() != null)
         .Select(fieldCreator.Create)
         );
 }
Пример #8
0
 public FormDefinitionController(IWfEngine wfEngine)
 {
     _wfEngine     = wfEngine;
     _formProvider = _wfEngine.GetFormProvider();
 }
Пример #9
0
 /// <summary>
 /// Specifying FormProvider
 /// </summary>
 /// <returns></returns>
 public DialogContextConfigureOptionsBuilder <TContext> UseFormProvider(IFormProvider formProvider)
 {
     Base.Data.FormProvider = formProvider;
     return(this);
 }
 public PolymorphicFormConverter(ILogger <PolymorphicFormConverter> logger, IFormProvider formProvider)
 {
     Logger       = logger;
     FormProvider = formProvider;
 }
Пример #11
0
 public PropertyForHtmlGenerator(IObjectIdentifier objectIdentifier, IPropertyExpressionMetaDataProvider propertyExpressionMetaDataProvider, IFormProvider formProvider)
 {
     ObjectIdentifier = objectIdentifier;
     PropertyExpressionMetaDataProvider = propertyExpressionMetaDataProvider;
     FormProvider = formProvider;
 }
Пример #12
0
        public void Initialize(IDialogContextConfigureOptionsBuilder optionsBuilder)
        {
            var options = optionsBuilder.Data;

            formProvider           = options.FormProvider;
            formProvider.Width     = options.Width ?? formProvider.Width;
            formProvider.Form.Text = options.Title ?? context.GetType().Name;
            formProvider.SetStartPosition(options.StartPosition);

            onShownEvent = options.OnShownEvent;

            var currentHeight = formProvider.InitialTopPadding;
            var count         = options.Items.Count();

            for (int i = 0; i < count; i++)
            {
                var currentItem              = options.Items.ElementAt(i);
                var currentItemData          = currentItem.Data;
                var control                  = currentItemData.Control;
                var fullRowValueControlWidth = formProvider.Width + formProvider.ExtraPaddingForFullRow - 55;

                if (currentItemData.Ignore == true)
                {
                    continue;
                }

                if (control == null)
                {
                    throw ExceptionBuilder.ControlIsNotSpecifiedException(currentItem);
                }

                if (currentItemData.ControlSpecifiedFromBuilder && (currentItemData.GetterSpecifiedFromBuilder || currentItemData.SetterSpecifiedFromBuilder) == false)
                {
                    throw currentItemData.GetterSpecifiedFromBuilder == false
                        ? ExceptionBuilder.GetterIsNotConfiguredException(currentItem)
                        : ExceptionBuilder.SetterIsNotConfiguredException(currentItem);
                }

                control.Enabled  = currentItemData.Enabled;
                control.AutoSize = false;

                if (currentItemData.SeparatorBefore != null)
                {
                    var seperatorControl = currentItemData.SeparatorBefore.BuildControl(fullRowValueControlWidth);
                    seperatorControl.Location = new Point(PADDING, currentHeight);
                    formProvider.AddControl(seperatorControl);
                    currentHeight += seperatorControl.Size.Height;
                }

                if (currentItemData.FullRow == false)
                {
                    var label = new Label
                    {
                        Text     = currentItemData.Name,
                        Location = new Point(25, currentHeight + 3)
                    };

                    formProvider.AddControl(label);
                }

                if (currentItem is IDialogCollectionSet collectionSet)
                {
                    if (collectionSet.Data.ControlSpecifiedFromBuilder && collectionSet.OnUpdateItemsActionSpecifiedFromBuilder == false)
                    {
                        throw ExceptionBuilder.UpdateItemsEventNotSpecifiedException(currentItem);
                    }

                    collectionSet.Data.ControlHeight = collectionSet.DataSource?.Count() * 20 + 30;
                    collectionSet.OnUpdateItemsAction(collectionSet.Data.Control, collectionSet.DataSource);
                }

                if (currentItemData.PreValue != null)
                {
                    currentItemData.Setter.Invoke(currentItemData.Control, currentItemData.PreValue);
                }

                control.Size = new Size
                {
                    Width  = currentItemData.FullRow ? fullRowValueControlWidth : formProvider.Width / 2 - 30,
                    Height = currentItemData.ControlHeight ?? DEFAULT_VALUE_CONTROL_HEIGHT
                };
                control.Location = new Point
                {
                    X = currentItemData.FullRow ? PADDING : formProvider.Width / 2,
                    Y = currentHeight,
                };

                formProvider.AddControl(control);
                currentHeight += control.Size.Height + 10;

                if (currentItemData.SeparatorAfter != null)
                {
                    var seperatorControl = currentItemData.SeparatorAfter.BuildControl(fullRowValueControlWidth);
                    seperatorControl.Location = new Point(PADDING, currentHeight);
                    formProvider.AddControl(seperatorControl);
                    currentHeight += seperatorControl.Size.Height;
                }
            }

            formProvider.Height = formProvider.InitialTopPadding + currentHeight + DEFAULT_BUTTON_HEIGHT +
                                  formProvider.BottomSpace;

            var buttonControl = ResolveButton(options);

            formProvider.AddControl(buttonControl);
            buttonControl.Select();
        }
Пример #13
0
 public PolymorphicFormApiController(IFormProvider formProvider, IContentTypeProvider contentTypeProvider, IHumanizer humanizer)
 {
     FormProvider        = formProvider;
     ContentTypeProvider = contentTypeProvider;
     Humanizer           = humanizer;
 }
Пример #14
0
 public PolymorphicFormDeserializationCandidateCreator(IFormProvider formProvider, IContentTypeProvider contentTypeProvider)
 {
     FormProvider        = formProvider;
     ContentTypeProvider = contentTypeProvider;
 }
Пример #15
0
 public PolymorphicFormFinder(IContentTypeProvider contentTypeProvider, IFormProvider formProvider)
 {
     ContentTypeProvider = contentTypeProvider;
     FormProvider        = formProvider;
 }
Пример #16
0
        /// <summary>
        /// 创建一个 HTML 表单对象
        /// </summary>
        /// <param name="element">表单元素</param>
        /// <param name="configuration">表单配置</param>
        /// <param name="provider">表单控件提供程序</param>
        public HtmlForm(IHtmlElement element, FormConfiguration configuration = null, IFormProvider provider = null)
        {
            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            var document = element.Document;

            if (document == null)
            {
                throw new InvalidOperationException();
            }


            var modifier = document.DomModifier as ISynchronizedDomModifier;

            if (modifier == null)
            {
                throw new InvalidOperationException();
            }


            SyncRoot = modifier.SyncRoot;

            _element = element;

            Configuration = configuration ?? new FormConfiguration();
            Provider      = provider ?? new StandardFormProvider();


            RefreshForm();
        }
 public FormFieldController(IFormProvider formFieldProvider)
 {
     FormProvider = formFieldProvider;
 }
Пример #18
0
        /// <summary>
        /// 尝试将一个HTML元素转换为表单
        /// </summary>
        /// <param name="element">要转换为表单的元素</param>
        /// <param name="configuration">表单配置</param>
        /// <param name="provider">表单控件提供程序</param>
        /// <returns></returns>
        public static HtmlForm AsForm(this IHtmlElement element, FormConfiguration configuration = null, IFormProvider provider = null)
        {
            if (element == null)
            {
                throw new ArgumentNullException("element");
            }


            return(new HtmlForm(element, configuration, provider));
        }
Пример #19
0
 public FormController(IFormProvider formProvider, IMapper mapper)
 {
     this.formProvider = formProvider;
     this.mapper       = mapper;
 }
 public FormInstanceInitializer(IFormProvider formProvider, IFieldProvider fieldProvider, IPropertySetter propertySetter)
 {
     FormProvider   = formProvider;
     FieldProvider  = fieldProvider;
     PropertySetter = propertySetter;
 }
Пример #21
0
 public ContentFormInstanceInitializer(IFormProvider formProvider, IFormInstanceInitializer formInstanceInitializer)
 {
     FormProvider            = formProvider;
     FormInstanceInitializer = formInstanceInitializer;
 }