コード例 #1
0
 private NodeViewModel findRoot(IISOViewModel vm)
 {
     while (!isRoot(vm))
     {
         vm = addOrRetrieveISOVM(vm.Parent);
     }
     return(addOrRetrieveNode(vm));
 }
コード例 #2
0
        public virtual void addGenerator(IISOViewModel vm)
        {
            var genNode = addOrRetrieveNode(vm);

            _generators.Add(genNode);
            genNode.IsGenerator = true;

            addParents(vm);
        }
コード例 #3
0
 private void addPropertiesToSelection(IISOViewModel vm)
 {
     if (vm.Properties != null)
     {
         foreach (var property in vm.Properties)
         {
             _selection.Add(property);
         }
     }
 }
コード例 #4
0
        private void recursiveAddToSelection(IISOViewModel vm)
        {
            _selection.Add(vm.ISO);
            addPropertiesToSelection(vm);

            foreach (var child in vm.Children)
            {
                var childVM = addOrRetrieveISOVM(child);
                recursiveAddToSelection(childVM);
            }
        }
コード例 #5
0
        private NodeViewModel addOrRetrieveNode(IISOViewModel vm)
        {
            NodeViewModel node = null;

            if (!_nodes.TryGetValue(vm.Rowguid, out node))
            {
                node = new NodeViewModel(vm, this);
                _nodes.Add(vm.Rowguid, node);
            }

            return(node);
        }
コード例 #6
0
        public virtual void removeGenerator(IISOViewModel vm)
        {
            NodeViewModel node = null;

            if (_nodes.TryGetValue(vm.Rowguid, out node))
            {
                _generators.Remove(node);
                node.IsGenerator = false;
                if (!node.isNecessary())
                {
                    trimBranchContaining(node);
                }
            }
        }
            public NodeViewModel(IISOViewModel vm, TreeViewModel owner)
            {
                _vm = vm;
                _owner = owner;
                if(_vm != null && _vm.Properties != null)
                    foreach (var property in _vm.Properties)
                    {
                        _propertyVMs.Add(_owner.addOrRetrieveISOVM(property));
                    }

                _childNodes = new List<NodeViewModel>();
                var firstChilld = _vm.Children.FirstOrDefault();
                if (firstChilld != null)
                {
                    var childVM = _owner.addOrRetrieveISOVM(firstChilld);
                    var node = _owner.addOrRetrieveNode(childVM);
                    _childNodes.Add(node);
                }
            }
コード例 #8
0
        public override void removeGenerator(IISOViewModel vm)
        {
            if (!_sealed)
            {
                lock (this)
                {
                    _queuesEmpty.Reset();
                    _suspendUpdates = false;
                    _removeQueue.Enqueue(vm);
                    queueForWork(this);
                }
            }
#if DEBUG
            else
            {
                throw new InvalidOperationException("Object is currently locked against further changes!");
            }
#endif
        }
            public NodeViewModel(IISOViewModel vm, TreeViewModel owner)
            {
                _vm    = vm;
                _owner = owner;
                if (_vm != null && _vm.Properties != null)
                {
                    foreach (var property in _vm.Properties)
                    {
                        _propertyVMs.Add(_owner.addOrRetrieveISOVM(property));
                    }
                }

                _childNodes = new List <NodeViewModel>();
                var firstChilld = _vm.Children.FirstOrDefault();

                if (firstChilld != null)
                {
                    var childVM = _owner.addOrRetrieveISOVM(firstChilld);
                    var node    = _owner.addOrRetrieveNode(childVM);
                    _childNodes.Add(node);
                }
            }
コード例 #10
0
        private void addParents(IISOViewModel vm)
        {
            Stack <IISOViewModel> familyLine = new Stack <IISOViewModel>();

            while (!isRoot(vm))
            {
                familyLine.Push(vm);
                vm = addOrRetrieveISOVM(vm.Parent);
            }

            NodeViewModel rootNode = addOrRetrieveNode(vm);

            addRoot(rootNode);

            var currentNode = rootNode;

            while (familyLine.Count > 0)
            {
                var childNode = addOrRetrieveNode(familyLine.Pop());
                currentNode.injectChild(childNode);
                currentNode.IsExpanded = true;
                currentNode            = childNode;
            }
        }
コード例 #11
0
 void SelectionTree_SelectionBuildProgressChanged(int rootCount, int rootsDone, IISOViewModel currentVM)
 {
     DispatcherHelper.CheckBeginInvokeOnUI(() =>
         {
             RootCount = rootCount;
             CurrentRootNo = rootsDone;
             BuildProgress = (rootCount > 0) ? 100*rootsDone / RootCount : 100;
             BuildingSelection = true;
         });
 }
コード例 #12
0
        private void recursiveAddToSelection(IISOViewModel vm)
        {
            _selection.Add(vm.ISO);
            addPropertiesToSelection(vm);

            foreach (var child in vm.Children)
            {
                var childVM = addOrRetrieveISOVM(child);
                recursiveAddToSelection(childVM);
            }
        }
コード例 #13
0
 private bool isRoot(IISOViewModel vm)
 {
     return vm.Parent == null;
 }
コード例 #14
0
 private NodeViewModel findRoot(IISOViewModel vm)
 {
     while (!isRoot(vm))
         vm = addOrRetrieveISOVM(vm.Parent);
     return addOrRetrieveNode(vm);
 }
コード例 #15
0
 private void addPropertiesToSelection(IISOViewModel vm)
 {
     if (vm.Properties != null)
     {
         foreach (var property in vm.Properties)
             _selection.Add(property);
     }
 }
コード例 #16
0
        private void addParents(IISOViewModel vm)
        {
            Stack<IISOViewModel> familyLine = new Stack<IISOViewModel>();
            while (!isRoot(vm))
            {
                familyLine.Push(vm);
                vm = addOrRetrieveISOVM(vm.Parent);
            }

            NodeViewModel rootNode = addOrRetrieveNode(vm);
            addRoot(rootNode);

            var currentNode = rootNode;
            while (familyLine.Count > 0)
            {
                var childNode = addOrRetrieveNode(familyLine.Pop());
                currentNode.injectChild(childNode);
                currentNode.IsExpanded = true;
                currentNode = childNode;
            }
        }
コード例 #17
0
        private NodeViewModel addOrRetrieveNode(IISOViewModel vm)
        {
            NodeViewModel node = null;
            if (!_nodes.TryGetValue(vm.Rowguid, out node))
            {
                node = new NodeViewModel(vm, this);
                _nodes.Add(vm.Rowguid, node);
            }

            return node;
        }
コード例 #18
0
 public virtual void removeGenerator(IISOViewModel vm)
 {
     NodeViewModel node = null;
     if (_nodes.TryGetValue(vm.Rowguid, out node))
     {
         _generators.Remove(node);
         node.IsGenerator = false;
         if(!node.isNecessary())
             trimBranchContaining(node);
     }
 }
コード例 #19
0
 private bool isRoot(IISOViewModel vm)
 {
     return(vm.Parent == null);
 }
コード例 #20
0
 void SelectionTree_SelectionBuildProgressChanged(int rootCount, int rootsDone, IISOViewModel currentVM)
 {
     DispatcherHelper.CheckBeginInvokeOnUI(() =>
     {
         RootCount         = rootCount;
         CurrentRootNo     = rootsDone;
         BuildProgress     = (rootCount > 0) ? 100 * rootsDone / RootCount : 100;
         BuildingSelection = true;
     });
 }
コード例 #21
0
        public virtual void addGenerator(IISOViewModel vm)
        {
            var genNode = addOrRetrieveNode(vm);
            _generators.Add(genNode);
            genNode.IsGenerator = true;

            addParents(vm);
        }