Пример #1
0
        private void LoadFieldControls([NotNull] ContentModel contentModel)
        {
            Debug.ArgumentNotNull(contentModel, nameof(contentModel));

            foreach (var field in contentModel.Fields)
            {
                if (!field.IsVisible)
                {
                    field.Control = null;
                    continue;
                }

                var fieldType = field.Type;
                if (AppearanceOptions.RawValues)
                {
                    fieldType = @"__raw_textfield";
                }

                var fieldControl = FieldTypeManager.GetInstance(fieldType);

                if (!fieldControl.IsSupported(field))
                {
                    fieldType    = @"__raw_textfield";
                    fieldControl = FieldTypeManager.GetInstance(fieldType);
                }

                field.ActualFieldType = fieldType;
                field.Control         = fieldControl;
                field.Control.SetField(field);
                field.Control.SetValue(field.Value);
                field.Control.ValueModified += contentModel.ValueModified;
            }
        }
Пример #2
0
        public void ClearFieldControls([NotNull] ContentModel contentModel)
        {
            Assert.ArgumentNotNull(contentModel, nameof(contentModel));

            foreach (var field in contentModel.Fields)
            {
                if (field.Control == null)
                {
                    continue;
                }

                FieldControlManager.RemoveWatcher(field.Control);
                field.Control.ValueModified -= contentModel.ValueModified;
            }

            var skin = AppearanceOptions.Skin as ISupportsReusableFieldControls;

            if (skin == null)
            {
                return;
            }

            foreach (var field in contentModel.Fields)
            {
                var removed = skin.RemoveFieldControl(field);
                if (!removed)
                {
                    continue;
                }

                var reusableFieldControl = field.Control as IReusableFieldControl;
                if (reusableFieldControl == null)
                {
                    continue;
                }

                reusableFieldControl.UnsetField();

                FieldTypeManager.Reuse(field.ActualFieldType, reusableFieldControl);
            }

            skin.Clear();
        }
Пример #3
0
        public override void Initialize(Type type)
        {
            Assert.ArgumentNotNull(type, nameof(type));

            FieldTypeManager.LoadType(type, this);
        }