Пример #1
0
        private static void MoveElementInsideTree(DataTreeView target, BranchView branchItem)
        {
            if (target.Tree.Children.Count == 0)
            {
                return;
            }

            if (branchItem.Element.DataStructure == null)
            {
                Debug.Write("Can not remove datapoints, only datastructures");
                return;
            }

            var ix = target.Tree.Children.IndexOf(branchItem.Element.DataStructure);

            if (ix != -1)
            {
                if (ix == target.Tree.Children.Count - 1)
                {
                    return;
                }

                target.Tree.Children.Move(ix, target.Tree.Children.Count - 1);
                return;
            }

            var branchParent = XamarinHelpers.GetTypedElementFromParents <BranchView>(branchItem.Parent);

            branchParent.Element.DataStructure.Children.Remove(branchItem.Element.DataStructure);
            target.Tree.Children.Add(branchItem.Element.DataStructure);
        }
Пример #2
0
        private static bool IsOwnParent(BranchView target, BranchView item)
        {
            var parent = XamarinHelpers.GetTypedElementFromParents <BranchView>(target.Parent);

            while (parent != null)
            {
                if (parent == item)
                {
                    return(true);
                }
                parent = XamarinHelpers.GetTypedElementFromParents <BranchView>(parent.Parent);
            }

            return(false);
        }
Пример #3
0
        private static void MoveElementInsideTree(BranchView target, BranchView item)
        {
            if (target.Element.DataPoint != null || item.Element.DataPoint != null)
            {
                Debug.WriteLine("Reordering of data points not implemented yet");
                return;
            }

            if (IsOwnParent(target, item))
            {
                Debug.WriteLine("You shouldn't become your own grandmother.");
                return;
            }

            // If immediate element of parent, move to top
            if (target.Element.DataStructure.Children.Contains(item.Element.DataStructure))
            {
                var ix = target.Element.DataStructure.Children.IndexOf(item.Element.DataStructure);
                if (ix == 0)
                {
                    return;
                }
                target.Element.DataStructure.Children.Move(ix, 0);
                return;
            }

            var parent = XamarinHelpers.GetTypedElementFromParents <BranchView>(item.Parent);

            if (parent != null)
            {
                parent.Element.DataStructure.Children.Remove(item.Element.DataStructure);
            }
            else
            {
                var treeParent = XamarinHelpers.GetTypedElementFromParents <DataTreeView>(item.Parent);
                if (treeParent == null)
                {
                    Debug.WriteLine("Unknown parent");
                    return;
                }
                treeParent.Tree.Children.Remove(item.Element.DataStructure);
            }
            target.Element.DataStructure.Children.Add(item.Element.DataStructure);
        }