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);
     }
 }