示例#1
0
        public void ProcessNodeInfoAndAdd(ITreeNodeViewModel parent)
        {
            if (parent?.InnerStorage == null)
            {
                return;
            }

            var storage         = parent.InnerStorage;
            var storageIterator = new IIteratorCLI();

            storage?.EnumStorages(ref storageIterator);


            var newHandle = new SubHandleCLI();

            while (true)
            {
                bool isDone = storageIterator.ProcessNext(ref newHandle);

                var type = newHandle?.GetType();

                if (isDone || type != StorageType.IStorage || newHandle.IsEmpty())
                {
                    break;
                }

                GenerateNodeAndAdd(newHandle, parent);
            }
        }
示例#2
0
        public ITreeNodeViewModel AddElementInside(ITreeNodeViewModel node, CollectionType parent)
        {
            ITreeNodeViewModel returnTreeView = null;

            if (node != null && parent != null)
            {
                returnTreeView = AddNode(node, parent);
            }

            return(returnTreeView);
        }
示例#3
0
        public void TreeElement_Checked(ITreeNodeViewModel currentNode)
        {
            if (currentNode == null)
            {
                return;
            }

            foreach (var node in currentNode.Items)
            {
                node.IsChecked = currentNode.IsChecked;
            }
        }
示例#4
0
        public void TreeElement_Selected(ITreeNodeViewModel currentNode)
        {
            if (currentNode == null)
            {
                return;
            }

            var args = new ParserEventArgs()
            {
                ArgsType = (currentNode.IsFinalGuiNode ? MessageType.ProcessAll : MessageType.ProcessProperties),
                TreeNode = currentNode,
            };

            Messenger.RaiseEvent(this, args);
        }
示例#5
0
        //TODO MVVM ANTIPATTERNS, but it's kind of tricky to do this via commands, postpone for a while
        public void TreeElement_Expanded(ITreeNodeViewModel currentNode)
        {
            if (currentNode == null)
            {
                return;
            }
            currentNode.Items.Clear(); // remove empty node

            ProcessNodeInfoAndAdd(currentNode);

            foreach (var node in currentNode.Items)
            {
                node.IsChecked = currentNode.IsChecked;
            }
        }
示例#6
0
        public void ProcessNodeData(ITreeNodeViewModel node)
        {
            var storage   = node?.InnerStorage ?? throw new NullReferenceException("Invalid Node was passed");
            var iterator  = new IIteratorCLI();
            var subHandle = new SubHandleCLI();

            storage.EnumStorages(ref iterator);
            while (true)
            {
                bool isDone = iterator?.ProcessNext(ref subHandle) ?? false;
                var  type   = subHandle?.GetType();
                if (type != StorageType.IStorage || isDone)
                {
                    break;
                }
                var childStorage = subHandle.GetStorage();
                ProcessDataInternal(childStorage);
            }
        }
示例#7
0
        /// <summary>
        /// add the task and missing ancestors back into the tree
        /// </summary>
        /// <param name="selectedTaskVM"></param>
        void AddTaskToTree(TaskViewModel selectedTaskVM)
        {
            ITreeNodeViewModel          child  = _removedNodes[selectedTaskVM];
            ITreeNodeContainerViewModel parent = child.Parent;
            bool inParentCollection            = parent.ChildNodes.Contains(child);

            while (parent != null && !inParentCollection)
            {
                parent.ChildNodes.Add(child);
                parent.ChildNodes.OrderBy(n => n.Title);
                SelectedNode = child;
                child        = parent;
                parent       = child.Parent;
                if (parent != null)
                {
                    inParentCollection = parent.ChildNodes.Contains(child);
                }
            }
        }
示例#8
0
        public ITreeNodeViewModel AddElementBack(ITreeNodeViewModel node, ITreeNodeViewModel parent = null)
        {
            ITreeNodeViewModel treeViewItem = null;

            if (node.IsGuiNode)
            {
                treeViewItem = AddElementInside(node, parent?.Items ?? treeItemsCollection);

                if (!node.IsFinalGuiNode) // no empty elements for final gui node
                {
                    var emptyNode = new GeneralTreeNodeViewModel()
                    {
                        Header = "Empty"
                    };

                    AddElementInside(emptyNode, node.Items);
                }
            }

            return(treeViewItem);
        }
示例#9
0
        public void GenerateNodeAndAdd(SubHandleCLI subHandle, ITreeNodeViewModel parent)
        {
            var storageType = (StorageType)subHandle?.GetType();

            if (storageType != StorageType.IStorage)
            {
                PLogger.Log("Wrong/null storage passed...");
                return;
            }

            var iStorage = subHandle.GetStorage();

            if (iStorage.IsNull())
            {
                PLogger.Log("iStorage was null");
                return;
            }

            var node = Utilities.FormNodeFromStorage(iStorage);

            AddElementBack(node, parent);
        }
示例#10
0
        private List <DataTuple> GatherExportList(ITreeNodeViewModel treeNode)
        {
            var storage = treeNode?.InnerStorage;

            var iterator = new IIteratorCLI();

            storage?.EnumStorages(ref iterator);

            var subHandle = new SubHandleCLI();
            var dataList  = new List <DataTuple>();

            while (true)
            {
                bool isDone = iterator.ProcessNext(ref subHandle);

                if (isDone || subHandle?.GetType() != StorageType.IStorage)
                {
                    break;
                }
                dataList.AddRange(ProcessStorage(subHandle?.GetStorage()));
            }

            return(dataList);
        }
示例#11
0
 private static bool IsSelfOrAncestorSelected(ITreeNodeViewModel viewModel)
 {
     return(viewModel.IsSelected || viewModel.Items.Any(IsSelfOrAncestorSelected));
 }
示例#12
0
 private ITreeNodeViewModel AddNode(ITreeNodeViewModel treeNode, CollectionType parent)
 {
     parent?.Add(treeNode);
     return(treeNode);
 }