Esempio n. 1
0
        static void AddClientDiffs(
            TreeViewItem parentItem,
            ITreeViewNode parentNode,
            List <TreeViewItem> rows,
            TreeViewItemIds <IDiffCategory, ITreeViewNode> treeViewItemIds)
        {
            for (int i = 0; i < parentNode.GetChildrenCount(); i++)
            {
                ITreeViewNode child = parentNode.GetChild(i);

                int nodeId;
                if (!treeViewItemIds.TryGetInfoItemId(child, out nodeId))
                {
                    nodeId = treeViewItemIds.AddInfoItem(child);
                }

                TreeViewItem changeTreeViewItem =
                    new ClientDiffTreeViewItem(
                        nodeId,
                        parentItem.depth + 1,
                        (ClientDiffInfo)child);

                parentItem.AddChild(changeTreeViewItem);
                rows.Add(changeTreeViewItem);
            }
        }
Esempio n. 2
0
            static ClientDiffInfo FindClientDiffOfType(
                string path,
                ChangeCategoryType type,
                ITreeViewNode node)
            {
                if (node is ClientDiffInfo)
                {
                    ClientDiffInfo clientDiffInfo = (ClientDiffInfo)node;
                    ChangeCategory category       = (ChangeCategory)node.GetParent();

                    if (category.Type == type &&
                        clientDiffInfo.DiffWithMount.Difference.Path == path)
                    {
                        return((ClientDiffInfo)node);
                    }
                }

                for (int i = 0; i < node.GetChildrenCount(); i++)
                {
                    ClientDiffInfo result = FindClientDiffOfType(path, type, node.GetChild(i));
                    if (result != null)
                    {
                        return(result);
                    }
                }

                return(null);
            }
Esempio n. 3
0
 public void AddChildAtLocation(ITreeViewNode item, int index)
 {
     // TODO: new list type that contains a method for this?
     lock (this.Items)
     {
         this.Items.Insert(index, item);
     }
 }
Esempio n. 4
0
 public TreeViewNode(ITreeViewNode parent)
 {
     this.Text = string.Format("ID{0}", num++);
     baseText = this.Text;
     this.Children = new ObservableCollection<ITreeViewNode>();
     this.Parent = parent;
     this.IsExpanded = true;
 }
Esempio n. 5
0
        public void AddChild(ITreeViewNode item)
        {
            this.RegisterNodes(item);

            // TODO: new list type that contains a method for this?
            lock (this.Items)
            {
                this.Items.Add(item);
            }
        }
Esempio n. 6
0
        static void AddClientDiffInfos(ITreeViewNode node, List <ClientDiffInfo> result)
        {
            if (node is ClientDiffInfo)
            {
                result.Add((ClientDiffInfo)node);
                return;
            }

            for (int i = 0; i < node.GetChildrenCount(); i++)
            {
                AddClientDiffInfos(node.GetChild(i), result);
            }
        }
Esempio n. 7
0
                internal static MergeCategory GetMergeCategory(ClientDiffInfo diff)
                {
                    ChangeCategory changeCategory = GetChangeCategory(diff);

                    ITreeViewNode mergeCategory = changeCategory.GetParent();

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

                    return((MergeCategory)mergeCategory);
                }
Esempio n. 8
0
        public override void OnBindViewHolder(TreeView.NodeViewHolder viewHolder, int position)
        {
            ITreeViewNode node   = Nodes[position];
            var           holder = viewHolder as NodeViewHolder;

            if (node is TreeViewNode)
            {
                holder.TreeContainer.Visibility = (node as TreeViewNode).Collapsed ? ViewStates.Gone : ViewStates.Visible;
            }

            if (holder.TextView != null)
            {
                holder.TextView.Text = $"{holder.Level}, {position}, {node.Id}";
            }
        }
Esempio n. 9
0
        public override void OnBindViewHolder(TreeView.LeafViewHolder viewHolder, int position)
        {
            ITreeViewNode node   = Nodes[position];
            var           holder = viewHolder as LeafViewHolder;

            holder.ItemView.SetBackgroundColor(Color.Green);
            if (node is TreeViewNode)
            {
                (node as TreeViewNode).Collapsed = false;
            }

            if (holder.TextView != null)
            {
                holder.TextView.Text = $"{holder.Level}, {position}, {node.Id}";
            }
        }
Esempio n. 10
0
            static void ExtractToMetaCache(
                ITreeViewNode node,
                int nodeIndex,
                Dictionary <string, ClientDiffInfo> cache,
                HashSet <string> indexedKeys)
            {
                if (node is ClientDiffInfo)
                {
                    ClientDiffInfo diff = (ClientDiffInfo)node;

                    string path = diff.DiffWithMount.Difference.Path;

                    if (!MetaPath.IsMetaPath(path))
                    {
                        return;
                    }

                    string realPath = MetaPath.GetPathFromMetaPath(path);

                    if (!indexedKeys.Contains(BuildKey.BuildCacheKey(
                                                  BuildKey.GetMergeCategory(diff),
                                                  BuildKey.GetChangeCategory(diff),
                                                  realPath)))
                    {
                        return;
                    }

                    // found foo.c and foo.c.meta
                    // with the same chage types - move .meta to cache
                    cache.Add(BuildKey.ForDiff(diff), diff);
                    ((ChangeCategory)node.GetParent()).RemoveDiffAt(nodeIndex);
                }

                for (int i = node.GetChildrenCount() - 1; i >= 0; i--)
                {
                    ExtractToMetaCache(
                        node.GetChild(i),
                        i,
                        cache,
                        indexedKeys);
                }
            }
Esempio n. 11
0
        public TreeViewNode(ITreeViewNode parent, int customNumber)
        {
            this.Text = string.Format("{0} - ID{1}", parent != null ? parent.Text : "Root", num++);
            baseText = this.Text;
            this.Children = new ObservableCollection<ITreeViewNode>();
            this.Parent = parent;
            this.IsExpanded = true;
            writable = readonlyy;
            readonlyy = false;

            for (int i = 0; i < customNumber; ++i)
            {
                if (this.writable)
                {
                    this.AddChild(new TreeViewNode(this, 1));
                }

                this.AddChild(new TreeViewNode(this));
                // these are not aware of the tree to get the event hookup
            }
        }
Esempio n. 12
0
 private void CollapseNode(ITreeViewNode item)
 {
     if (item.Children.Any())
     {
         // TODO: new list type that contains a method for this?
         lock (this.Items)
         {
             foreach (ITreeViewNode child in item.Children)
             {
                 // TODO: look into a more efficient implementation
                 this.Items.Remove(child);
             }
         }
     }
 }
Esempio n. 13
0
        private void RegisterNodes(ITreeViewNode node)
        {
            node.ExpansionStateUpdated += this.OnStateUpdated;
            node.ChildAdded += this.OnNodeChildAdded;
            node.LocationUpdate += this.OnNodeLocationUpdated;

            foreach (ITreeViewNode child in node.Children)
            {
                this.RegisterNodes(child);
            }
        }
Esempio n. 14
0
 public void UpdateParent(ITreeViewNode parent)
 {
     this.Text = baseText + " " + this.UpdateTest + " Updating to parent " + (parent == null ? "null" : parent.Text);
     this.Parent = parent;
     this.OnPropertyChanged("HierarchyLevel");
 }
Esempio n. 15
0
 public void AddChild(ITreeViewNode child)
 {
     this.Children.Add(child);
     if (this.ChildAdded != null)
     {
         this.ChildAdded(this, new TreeNodeEventArgs(child));
     }
 }
Esempio n. 16
0
 public TreeNodeEventArgs(ITreeViewNode node)
 {
     this.Node = node;
 }
Esempio n. 17
0
        private void ExpandNode(ITreeViewNode item)
        {
            if (item.Children.Any())
            {
                int location = Items.IndexOf(item);

                // TODO: new list type that contains a method for this?
                lock (this.Items)
                {
                    foreach (ITreeViewNode child in item.Children)
                    {
                        this.Items.Insert(++location, child);
                    }
                }
            }
        }