Exemplo n.º 1
0
        public NamespaceTreeBuilderFolder GetFolder(string namespaceName)
        {
            if (namespaceName == null)
            {
                throw new ArgumentNullException("namespaceName");
            }
            if (namespaceName.IsCorrectNamespace(_namespaceSeparator) == false)
            {
                throw new ArgumentException(string.Format("The namespace '{0}' is not correctly formattet", namespaceName));
            }

            NamespaceTreeBuilderFolder currentNode = _rootFolder;

            string[] namespaceComponents = namespaceName.Split(_namespaceSeparator);
            foreach (string namespaceComponent in namespaceComponents.Where(s => s != ""))
            {
                currentNode = currentNode.SubFolders.Where(n => n.Name == namespaceComponent).FirstOrDefault();

                if (currentNode == null)
                {
                    return(null);
                }
            }

            return(currentNode);
        }
Exemplo n.º 2
0
        public NamespaceTreeBuilder(IEnumerable<INamespaceTreeBuilderLeafInfo> namespaceTreeBuilderInfos, char namespaceSeparator)
        {
            if (namespaceTreeBuilderInfos == null) throw new ArgumentNullException("namespaceTreeBuilderInfos");
            _namespaceSeparator = namespaceSeparator;

            _rootFolder = new NamespaceTreeBuilderFolder("", "");

            foreach (INamespaceTreeBuilderLeafInfo namespaceTreeBuilderInfo in namespaceTreeBuilderInfos)
            {
                NamespaceTreeBuilderFolder folderNode = GetOrCreateFolder(namespaceTreeBuilderInfo.Namespace);

                folderNode.Leafs.Add(namespaceTreeBuilderInfo);
            }
        }
Exemplo n.º 3
0
        private NamespaceTreeBuilderFolder FindFolder(NamespaceTreeBuilderFolder currentFolder, Func<NamespaceTreeBuilderFolder, bool> predicate)
        {
            if (predicate(currentFolder)) return currentFolder;

            foreach (NamespaceTreeBuilderFolder subFolder in currentFolder.SubFolders)
            {
                NamespaceTreeBuilderFolder foundFolder = FindFolder(subFolder, predicate);

                if (foundFolder != null)
                {
                    return foundFolder;
                }
            }

            return null;
        }
Exemplo n.º 4
0
        public NamespaceTreeBuilder(IEnumerable <INamespaceTreeBuilderLeafInfo> namespaceTreeBuilderInfos, char namespaceSeparator)
        {
            if (namespaceTreeBuilderInfos == null)
            {
                throw new ArgumentNullException("namespaceTreeBuilderInfos");
            }
            _namespaceSeparator = namespaceSeparator;

            _rootFolder = new NamespaceTreeBuilderFolder("", "");

            foreach (INamespaceTreeBuilderLeafInfo namespaceTreeBuilderInfo in namespaceTreeBuilderInfos)
            {
                NamespaceTreeBuilderFolder folderNode = GetOrCreateFolder(namespaceTreeBuilderInfo.Namespace);

                folderNode.Leafs.Add(namespaceTreeBuilderInfo);
            }
        }
Exemplo n.º 5
0
        private NamespaceTreeBuilderFolder FindFolder(NamespaceTreeBuilderFolder currentFolder, Func <NamespaceTreeBuilderFolder, bool> predicate)
        {
            if (predicate(currentFolder))
            {
                return(currentFolder);
            }

            foreach (NamespaceTreeBuilderFolder subFolder in currentFolder.SubFolders)
            {
                NamespaceTreeBuilderFolder foundFolder = FindFolder(subFolder, predicate);

                if (foundFolder != null)
                {
                    return(foundFolder);
                }
            }

            return(null);
        }
Exemplo n.º 6
0
        private NamespaceTreeBuilderFolder GetOrCreateFolder(string namespaceName)
        {
            if (namespaceName.IsCorrectNamespace(_namespaceSeparator) == false)
            {
                throw new ArgumentException(string.Format("The namespace '{0}' is not correctly formattet", namespaceName != null ? namespaceName : "(null)"));
            }

            string[] namespaceComponents = namespaceName.Split(_namespaceSeparator);

            if ((namespaceComponents.Length == 1) && (namespaceComponents[0] == ""))
            {
                return(_rootFolder);
            }

            NamespaceTreeBuilderFolder currentNode = _rootFolder;
            string currentNamespace = "";

            foreach (string namespaceComponent in namespaceComponents)
            {
                NamespaceTreeBuilderFolder node = currentNode.SubFolders.Where(n => n.Name == namespaceComponent).FirstOrDefault();

                if (node == null)
                {
                    node = new NamespaceTreeBuilderFolder(namespaceComponent, currentNamespace);
                    currentNode.SubFolders.Add(node);
                }

                if (currentNamespace == "")
                {
                    currentNamespace = namespaceComponent;
                }
                else
                {
                    currentNamespace = string.Format("{0}{1}{2}", currentNamespace, _namespaceSeparator, namespaceComponent);
                }

                currentNode = node;
            }

            return(currentNode);
        }
        private bool SubTreeContainsToken(NamespaceTreeBuilderFolder folder, SearchToken searchToken)
        {
            if (string.IsNullOrEmpty(searchToken.Keyword))
            {
                return true;

            }

            if (folder.Name.Contains(searchToken.Keyword))
            {
                return true;
            }

            foreach (INamespaceTreeBuilderLeafInfo leaf in folder.Leafs)
            {
                if (leaf.Name.Contains(searchToken.Keyword))
                {
                    return true;
                }
            }
            foreach (NamespaceTreeBuilderFolder subFolder in folder.SubFolders)
            {
                if (SubTreeContainsToken(subFolder, searchToken))
                {
                    return true;
                }
            }

            return false;
        }
        private Element CreateFolderElement(NamespaceTreeBuilderFolder node)
        {
            bool hasChildren = (node.SubFolders.Count != 0) || (node.Leafs.Count != 0);

            var element = new Element(_context.CreateElementHandle(new BaseFunctionFolderElementEntityToken(CreateId(node, _context.ProviderName))))
            {
                VisualData = new ElementVisualizedData
                {
                    Label = node.Name,
                    ToolTip = node.Name,
                    HasChildren = (node.SubFolders.Count != 0) || (node.Leafs.Count != 0),
                    Icon = hasChildren ? this.FolderIcon : this.EmptyFolderIcon,
                    OpenedIcon = this.OpenFolderIcon
                },
                TreeLockBehavior = OnGetTreeLockBehavior()
            };

            IEnumerable<ElementAction> actions = OnGetFolderActions();
            if (actions != null)
            {
                foreach (ElementAction action in actions)
                {
                    element.AddAction(action);
                }
            }

            return element;
        }
        /// <exclude />
        public static string CreateId(NamespaceTreeBuilderFolder folderNode, string providerName)
        {
            if (folderNode.Namespace == "")
            {
                return CreateId(folderNode.Name, providerName);
            }

            return CreateId(string.Format("{0}.{1}", folderNode.Namespace, folderNode.Name), providerName);
        }
Exemplo n.º 10
0
        private NamespaceTreeBuilderFolder GetOrCreateFolder(string namespaceName)
        {
            if (namespaceName.IsCorrectNamespace(_namespaceSeparator) == false) throw new ArgumentException(string.Format("The namespace '{0}' is not correctly formattet", namespaceName != null ? namespaceName : "(null)"));

            string[] namespaceComponents = namespaceName.Split(_namespaceSeparator);

            if ((namespaceComponents.Length == 1) && (namespaceComponents[0] == ""))
            {
                return _rootFolder;
            }

            NamespaceTreeBuilderFolder currentNode = _rootFolder;
            string currentNamespace = "";

            foreach (string namespaceComponent in namespaceComponents)
            {
                NamespaceTreeBuilderFolder node = currentNode.SubFolders.Where(n => n.Name == namespaceComponent).FirstOrDefault();

                if (node == null)
                {
                    node = new NamespaceTreeBuilderFolder(namespaceComponent, currentNamespace);
                    currentNode.SubFolders.Add(node);
                }

                if (currentNamespace == "")
                {
                    currentNamespace = namespaceComponent;
                }
                else
                {
                    currentNamespace = string.Format("{0}{1}{2}", currentNamespace, _namespaceSeparator, namespaceComponent);
                }

                currentNode = node;
            }

            return currentNode;
        }