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); }
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); }
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); }