public override void UpdateNode(ModelNode node) { ViewItemVisibility visibility = ViewItemVisibility.Hide; if (node.Application is IModelApplicationConditionalEditorStates) { if (((IModelApplicationConditionalEditorStates)node.Application).ConditionalEditorState.HideEditorMode == HideEditorMode.ShowEmptySpace) { visibility = ViewItemVisibility.ShowEmptySpace; } } IModelClass modelClass = node.Parent as IModelClass; CreateAppearanceRuleNodes(EditorStateRuleManager.FindAttributes(modelClass.TypeInfo), modelClass, String.Empty, visibility); foreach (MethodInfo methodInfo in modelClass.TypeInfo.Type.GetMethods(EditorStateRuleManager.MethodRuleBindingFlags)) { CreateAppearanceRuleNodes(EditorStateRuleManager.FindAttributes(methodInfo), modelClass, methodInfo.Name, visibility); } }
public void UpdateNode(IModelConditionalEditorState node, IModelApplication application) { foreach (IModelEditorStateRule rule in node.Rules) { if (((ModelNode)rule).IsNewNode) { IModelClass modelClass = rule.ModelClass; if (modelClass == null) { modelClass = GetModelClassNode(((ModelNode)rule).Application, ((ModelNode)rule).GetValue("ModelClass_ID").ToString()); } if (modelClass != null) { ViewItemVisibility visibility = ViewItemVisibility.Hide; if (node.HideEditorMode == HideEditorMode.ShowEmptySpace) { visibility = ViewItemVisibility.ShowEmptySpace; } CreateAppearanceRuleNode(modelClass, rule.Id, rule.Properties, rule.EditorState, rule.Criteria, rule.ViewType, rule.MethodName, rule.Index, visibility); rule.Remove(); } } } }
public static void CreateAppearanceRuleNode(IModelClass modelClass, string id, string properties, EditorState editorState, string criteria, ViewType viewType, string methodName, int?index, ViewItemVisibility visibility) { if (modelClass is IModelConditionalAppearance) { IModelConditionalAppearance appearance = modelClass as IModelConditionalAppearance; IModelAppearanceRule targetRule = appearance.AppearanceRules.AddNode <IModelAppearanceRule>(id); targetRule.TargetItems = properties; switch (editorState) { case EditorState.Default: if (!String.IsNullOrEmpty(methodName)) { throw new ArgumentException(MethodNameMemberPresentErrorsMessage + "\r\nIn class: " + modelClass.Name + " Attribute.Id=" + id); } break; case EditorState.Disabled: targetRule.Enabled = false; break; case EditorState.Hidden: targetRule.Visibility = visibility; break; } targetRule.Criteria = criteria; targetRule.Method = methodName; targetRule.Context = viewType.ToString(); targetRule.Index = index; if (id.Contains(LayoutItemRuleTargetItemTypeMark)) { targetRule.AppearanceItemType = AppearanceItemType.LayoutItem.ToString(); } else { targetRule.AppearanceItemType = AppearanceItemType.ViewItem.ToString(); } } }
public void ResetVisibility() { Visibility = ViewItemVisibility.Show; }
public static void CreateAppearanceRuleNodes(IEnumerable <EditorStateRuleAttribute> attributes, IModelClass modelClass, string methodName, ViewItemVisibility visibility) { foreach (EditorStateRuleAttribute attribute in attributes) { ConditionalEditorStateConverter.CreateAppearanceRuleNode(modelClass, attribute.Id, attribute.Properties, attribute.EditorState, attribute.Criteria, attribute.ViewType, methodName, default(int?), visibility); } }