예제 #1
0
        public virtual string GetNewViewName()
        {
            var takenNames = new HashSet <string>(BuiltInViewSpecs.Select(viewSpec => viewSpec.Name));

            takenNames.UnionWith(CustomViewSpecs.Select(viewSpec => viewSpec.Name));
            const string baseName = "CustomView";

            for (int index = 1;; index++)
            {
                string name = baseName + index;
                if (!takenNames.Contains(name))
                {
                    return(name);
                }
            }
        }
예제 #2
0
        public virtual ViewSpec MakeEditable(ViewSpec viewSpec)
        {
            if (!IsReadOnly(viewSpec) && !string.IsNullOrEmpty(viewSpec.Name))
            {
                return(viewSpec);
            }
            var viewNames = new HashSet <string>(BuiltInViewSpecs.Select(builtInViewSpec => builtInViewSpec.Name));

            viewNames.UnionWith(CustomViewSpecs.Select(customViewSpec => customViewSpec.Name));
            for (int index = 1; ; index++)
            {
                string name = "CustomView" + index;
                if (!viewNames.Contains(name))
                {
                    return(viewSpec.SetName(name));
                }
            }
        }
예제 #3
0
 protected virtual bool IsReadOnly(ViewSpec viewSpec)
 {
     return(BuiltInViewSpecs.Any(builtInViewSpec => viewSpec.Name == builtInViewSpec.Name));
 }