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; } }
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(); }
public override void Initialize(Type type) { Assert.ArgumentNotNull(type, nameof(type)); FieldTypeManager.LoadType(type, this); }