public void RemovingLastChildrenSetsIsExpandedToFalse() { var treeViewRoot = new TreeViewNode(); var treeViewNode1 = new TreeViewNode(); var treeViewNode2 = new TreeViewNode(); var treeViewNode3 = new TreeViewNode(); var treeViewNode4 = new TreeViewNode(); var treeViewNode5 = new TreeViewNode(); // Need root since in TreeView we otherwise // could collapse whole tree and hide it forever treeViewRoot.Children.Add(treeViewNode1); treeViewNode1.Children.Add(treeViewNode2); treeViewNode1.Children.Add(treeViewNode3); treeViewNode1.Children.Add(treeViewNode4); treeViewNode1.Children.Add(treeViewNode5); treeViewNode1.IsExpanded = true; Verify.IsTrue(treeViewNode1.IsExpanded); treeViewNode1.Children.Clear(); Verify.IsFalse(treeViewNode1.IsExpanded); treeViewNode1.Children.Add(treeViewNode2); treeViewNode1.IsExpanded = true; Verify.IsTrue(treeViewNode1.IsExpanded); treeViewNode1.Children.Remove(treeViewNode2); Verify.IsFalse(treeViewNode1.IsExpanded); treeViewNode1.Children.Add(treeViewNode2); treeViewNode1.IsExpanded = true; Verify.IsTrue(treeViewNode1.IsExpanded); treeViewNode1.Children.RemoveAt(0); Verify.IsFalse(treeViewNode1.IsExpanded); }
private void SetupExpandingNodeEvent_Click(object sender, RoutedEventArgs e) { if (IsInContentMode()) { TreeViewItemSource item = new TreeViewItemSource() { Content = "Virtualized", HasUnrealizedChildren = true }; TestTreeViewItemsSource[0].Children.Add(item); ContentModeTestTreeView.Expanding += ContentModeTestTreeView_Expanding; } else { _virtualizedNode = new TreeViewNode() { Content = "Virtualized" }; _virtualizedNode.HasUnrealizedChildren = true; _visualRoot.Children.Add(_virtualizedNode); TestTreeView.Expanding += TestTreeView_Expanding; } }
public void TreeViewUpdateTest() { TreeView treeView = null; TreeViewList listControl = null; TreeViewNode treeViewNode1 = null; TreeViewNode treeViewNode2 = null; TreeViewNode treeViewNode3 = null; TreeViewNode treeViewNode4 = null; TreeViewNode treeViewNode5 = null; var loadedWaiter = new ManualResetEvent(false); RunOnUIThread.Execute(() => { treeViewNode1 = new TreeViewNode(); treeViewNode2 = new TreeViewNode(); treeViewNode3 = new TreeViewNode(); treeViewNode4 = new TreeViewNode(); treeViewNode5 = new TreeViewNode(); treeViewNode1.Children.Add(treeViewNode2); treeViewNode1.Children.Add(treeViewNode3); treeViewNode1.Children.Add(treeViewNode4); treeViewNode1.Children.Add(treeViewNode5); treeView = new TreeView(); treeView.Loaded += (object sender, RoutedEventArgs e) => { listControl = FindVisualChildByName(treeView, "ListControl") as TreeViewList; loadedWaiter.Set(); }; MUXControlsTestApp.App.TestContentRoot = treeView; }); Verify.IsTrue(loadedWaiter.WaitOne(TimeSpan.FromMinutes(1)), "Check if Loaded was successfully raised"); RunOnUIThread.Execute(() => { treeView.RootNodes.Add(treeViewNode1); Verify.AreEqual(listControl.Items.Count, 1); treeView.Expand(treeViewNode1); Verify.AreEqual(listControl.Items.Count, 5); treeViewNode1.Children.RemoveAt(2); Verify.AreEqual(listControl.Items.Count, 4); Verify.AreEqual(listControl.Items[0], treeViewNode1); Verify.AreEqual(listControl.Items[1], treeViewNode2); Verify.AreEqual(listControl.Items[2], treeViewNode3); Verify.AreEqual(listControl.Items[3], treeViewNode5); treeViewNode1.Children.Insert(1, treeViewNode4); Verify.AreEqual(listControl.Items.Count, 5); Verify.AreEqual(listControl.Items[0], treeViewNode1); Verify.AreEqual(listControl.Items[1], treeViewNode2); Verify.AreEqual(listControl.Items[2], treeViewNode4); Verify.AreEqual(listControl.Items[3], treeViewNode3); Verify.AreEqual(listControl.Items[4], treeViewNode5); treeViewNode1.Children.Clear(); Verify.AreEqual(listControl.Items.Count, 1); Verify.AreEqual(listControl.Items[0], treeViewNode1); // Put things back MUXControlsTestApp.App.TestContentRoot = null; }); }
public void TreeViewClearAndSetAtTest() { TreeView treeView = null; TreeViewList listControl = null; var loadedWaiter = new ManualResetEvent(false); RunOnUIThread.Execute(() => { treeView = new TreeView(); treeView.Loaded += (object sender, RoutedEventArgs e) => { listControl = FindVisualChildByName(treeView, "ListControl") as TreeViewList; loadedWaiter.Set(); }; MUXControlsTestApp.App.TestContentRoot = treeView; }); Verify.IsTrue(loadedWaiter.WaitOne(TimeSpan.FromMinutes(1)), "Check if Loaded was successfully raised"); RunOnUIThread.Execute(() => { // Verify TreeViewNode::SetAt TreeViewNode setAtChildCheckNode = new TreeViewNode() { Content = "Set At Child" }; TreeViewNode setAtRootCheckNode = new TreeViewNode() { Content = "Set At Root" }; TreeViewNode child1 = new TreeViewNode() { Content = "Child 1" }; child1.Children.Add(new TreeViewNode() { Content = "Child 1:1" }); TreeViewNode child2 = new TreeViewNode() { Content = "Child 2" }; child2.Children.Add(new TreeViewNode() { Content = "Child 2:1" }); child2.Children.Add(new TreeViewNode() { Content = "Child 2:2" }); treeView.RootNodes.Add(child1); child1.IsExpanded = true; treeView.RootNodes.Add(child2); Verify.AreEqual(listControl.Items.Count, 3); // SetAt node under child node which is not expanded child2.Children[1] = setAtChildCheckNode; Verify.AreEqual(listControl.Items.Count, 3); // SetAt node under root node and child2 is expanded treeView.RootNodes[0] = setAtRootCheckNode; child2.IsExpanded = true; Verify.AreEqual(listControl.Items.Count, 4); // Verify RootNode.Clear treeView.RootNodes.Clear(); Verify.AreEqual(listControl.Items.Count, 0); // test clear without any child node treeView.RootNodes.Clear(); Verify.AreEqual(listControl.Items.Count, 0); // Put things back MUXControlsTestApp.App.TestContentRoot = null; }); }
private async void Location_Click(object sender, RoutedEventArgs e) { if (SearchResultList.SelectedItem is FileSystemStorageItem Item) { if (Item.StorageType == StorageItemTypes.Folder) { try { if (SettingControl.IsDetachTreeViewAndPresenter) { if ((await Item.GetStorageItem().ConfigureAwait(true)) is StorageFolder Folder) { await FileControlInstance.DisplayItemsInFolder(Folder).ConfigureAwait(true); } } else { TreeViewNode TargetNode = await FileControlInstance.FolderTree.RootNodes[0].GetChildNodeAsync(new PathAnalysis(Item.Path, (FileControlInstance.FolderTree.RootNodes[0].Content as TreeViewNodeContent).Path)).ConfigureAwait(true); if (TargetNode != null) { await FileControlInstance.DisplayItemsInFolder(TargetNode).ConfigureAwait(true); } else { throw new Exception(); } } } catch { QueueContentDialog dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_LocateFolderFailure_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; _ = await dialog.ShowAsync().ConfigureAwait(true); } } else { try { if ((await Item.GetStorageItem().ConfigureAwait(true)) is StorageFile File) { if (SettingControl.IsDetachTreeViewAndPresenter) { await FileControlInstance.DisplayItemsInFolder(await File.GetParentAsync()).ConfigureAwait(true); } else { TreeViewNode CurrentNode = await FileControlInstance.FolderTree.RootNodes[0].GetChildNodeAsync(new PathAnalysis(Path.GetDirectoryName(Item.Path), (FileControlInstance.FolderTree.RootNodes[0].Content as TreeViewNodeContent).Path)).ConfigureAwait(true); await FileControlInstance.DisplayItemsInFolder(CurrentNode).ConfigureAwait(true); } } } catch (FileNotFoundException) { QueueContentDialog dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_LocateFileFailure_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_RefreshButton") }; _ = await dialog.ShowAsync().ConfigureAwait(true); } } } }
public async Task TreeViewSelectionChangedMultipleMode() { // input data: // - 1 // - 11 // - 12 // - 13 // - 2 // - 21 // - 3 TreeView treeView = null; TreeViewNode node1 = null; TreeViewNode node11 = null; TreeViewNode node12 = null; TreeViewNode node13 = null; TreeViewNode node2 = null; TreeViewNode node21 = null; TreeViewNode node3 = null; TreeViewSelectionChangedEventArgs selectionChangedEventArgs = null; await RunOnUIThread.ExecuteAsync(() => { treeView = new TreeView { SelectionMode = TreeViewSelectionMode.Multiple }; treeView.SelectionChanged += (s, e) => selectionChangedEventArgs = e; node1 = new TreeViewNode { Content = "1", IsExpanded = true }; node11 = new TreeViewNode { Content = "11" }; node12 = new TreeViewNode { Content = "12" }; node13 = new TreeViewNode { Content = "13" }; node1.Children.Add(node11); node1.Children.Add(node12); node1.Children.Add(node13); node2 = new TreeViewNode { Content = "2", IsExpanded = true }; node21 = new TreeViewNode { Content = "21" }; node2.Children.Add(node21); node3 = new TreeViewNode { Content = "3" }; treeView.RootNodes.Add(node1); treeView.RootNodes.Add(node2); treeView.RootNodes.Add(node3); TestServices.WindowHelper.WindowContent = treeView; }); await TestServices.WindowHelper.WaitForIdle(); await RunOnUIThread.ExecuteAsync(() => { var tvi1 = (TreeViewItem)treeView.ContainerFromItem(node1); var tvi11 = (TreeViewItem)treeView.ContainerFromItem(node11); var tvi12 = (TreeViewItem)treeView.ContainerFromItem(node12); var tvi13 = (TreeViewItem)treeView.ContainerFromItem(node13); var tvi2 = (TreeViewItem)treeView.ContainerFromItem(node2); var tvi21 = (TreeViewItem)treeView.ContainerFromItem(node21); var tvi3 = (TreeViewItem)treeView.ContainerFromItem(node3); // - 1 selected // - 11 selected // - 12 selected // - 13 selected // - 2 // - 21 // - 3 tvi1.IsSelected = true; Verify.IsNotNull(selectionChangedEventArgs); Verify.AreEqual(4, selectionChangedEventArgs.AddedItems.Count); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node1)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node11)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node12)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node13)); Verify.AreEqual(0, selectionChangedEventArgs.RemovedItems.Count); selectionChangedEventArgs = null; // - 1 selected // - 11 // - 12 selected // - 13 selected // - 2 // - 21 // - 3 tvi11.IsSelected = true; tvi11.IsSelected = false; Verify.IsNotNull(selectionChangedEventArgs); Verify.AreEqual(0, selectionChangedEventArgs.AddedItems.Count); Verify.AreEqual(1, selectionChangedEventArgs.RemovedItems.Count); Verify.IsTrue(selectionChangedEventArgs.RemovedItems.Contains(node11)); selectionChangedEventArgs = null; // - 1 selected // - 11 selected // - 12 selected // - 13 selected // - 2 selected // - 21 selected // - 3 selected treeView.SelectAll(); Verify.IsNotNull(selectionChangedEventArgs); var items = selectionChangedEventArgs.AddedItems.ToList(); Verify.AreEqual(7, selectionChangedEventArgs.AddedItems.Count); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node1)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node11)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node12)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node13)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node2)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node21)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node3)); Verify.AreEqual(0, selectionChangedEventArgs.RemovedItems.Count); }); }
public async Task TreeViewClearAndSetAtTest() { TreeView treeView = null; await RunOnUIThread.ExecuteAsync(() => { treeView = new TreeView(); TestServices.WindowHelper.WindowContent = treeView; }); await TestServices.WindowHelper.WaitForIdle(); await RunOnUIThread.ExecuteAsync(() => { var listControl = FindVisualChildByName(treeView, "ListControl") as TreeViewList; // Verify TreeViewNode::SetAt TreeViewNode setAtChildCheckNode = new TreeViewNode() { Content = "Set At Child" }; TreeViewNode setAtRootCheckNode = new TreeViewNode() { Content = "Set At Root" }; TreeViewNode child1 = new TreeViewNode() { Content = "Child 1" }; child1.Children.Add(new TreeViewNode() { Content = "Child 1:1" }); TreeViewNode child2 = new TreeViewNode() { Content = "Child 2" }; child2.Children.Add(new TreeViewNode() { Content = "Child 2:1" }); child2.Children.Add(new TreeViewNode() { Content = "Child 2:2" }); treeView.RootNodes.Add(child1); child1.IsExpanded = true; treeView.RootNodes.Add(child2); Verify.AreEqual(listControl.GetItems()?.Count(), 3); // SetAt node under child node which is not expanded child2.Children[1] = setAtChildCheckNode; Verify.AreEqual(listControl.GetItems()?.Count(), 3); // SetAt node under root node and child2 is expanded treeView.RootNodes[0] = setAtRootCheckNode; child2.IsExpanded = true; Verify.AreEqual(listControl.GetItems()?.Count(), 4); // Verify RootNode.Clear treeView.RootNodes.Clear(); Verify.AreEqual(listControl.GetItems()?.Count(), 0); // test clear without any child node treeView.RootNodes.Clear(); Verify.AreEqual(listControl.GetItems()?.Count(), 0); }); await TestServices.WindowHelper.WaitForIdle(); }
public void TreeViewSelectionChangedMultipleMode() { RunOnUIThread.Execute(() => { // input data: // - 1 // - 11 // - 12 // - 13 // - 2 // - 21 // - 3 TreeViewSelectionChangedEventArgs selectionChangedEventArgs = null; var treeView = new TreeView { SelectionMode = TreeViewSelectionMode.Multiple }; treeView.SelectionChanged += (s, e) => selectionChangedEventArgs = e; var node1 = new TreeViewNode { Content = "1", IsExpanded = true }; var node11 = new TreeViewNode { Content = "11" }; var node12 = new TreeViewNode { Content = "12" }; var node13 = new TreeViewNode { Content = "13" }; node1.Children.Add(node11); node1.Children.Add(node12); node1.Children.Add(node13); var node2 = new TreeViewNode { Content = "2", IsExpanded = true }; var node21 = new TreeViewNode { Content = "21" }; node2.Children.Add(node21); var node3 = new TreeViewNode { Content = "3" }; treeView.RootNodes.Add(node1); treeView.RootNodes.Add(node2); treeView.RootNodes.Add(node3); Content = treeView; Content.UpdateLayout(); var tvi1 = (TreeViewItem)treeView.ContainerFromItem(node1); var tvi11 = (TreeViewItem)treeView.ContainerFromItem(node11); var tvi12 = (TreeViewItem)treeView.ContainerFromItem(node12); var tvi13 = (TreeViewItem)treeView.ContainerFromItem(node13); var tvi2 = (TreeViewItem)treeView.ContainerFromItem(node2); var tvi21 = (TreeViewItem)treeView.ContainerFromItem(node21); var tvi3 = (TreeViewItem)treeView.ContainerFromItem(node3); // - 1 selected // - 11 selected // - 12 selected // - 13 selected // - 2 // - 21 // - 3 tvi1.IsSelected = true; Verify.IsNotNull(selectionChangedEventArgs); Verify.AreEqual(4, selectionChangedEventArgs.AddedItems.Count); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node1)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node11)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node12)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node13)); Verify.AreEqual(0, selectionChangedEventArgs.RemovedItems.Count); selectionChangedEventArgs = null; // - 1 selected // - 11 // - 12 selected // - 13 selected // - 2 // - 21 // - 3 tvi11.IsSelected = true; tvi11.IsSelected = false; Verify.IsNotNull(selectionChangedEventArgs); Verify.AreEqual(0, selectionChangedEventArgs.AddedItems.Count); Verify.AreEqual(1, selectionChangedEventArgs.RemovedItems.Count); Verify.IsTrue(selectionChangedEventArgs.RemovedItems.Contains(node11)); selectionChangedEventArgs = null; // - 1 selected // - 11 selected // - 12 selected // - 13 selected // - 2 selected // - 21 selected // - 3 selected treeView.SelectAll(); Verify.IsNotNull(selectionChangedEventArgs); var items = selectionChangedEventArgs.AddedItems.ToList(); Verify.AreEqual(7, selectionChangedEventArgs.AddedItems.Count); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node1)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node11)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node12)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node13)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node2)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node21)); Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node3)); Verify.AreEqual(0, selectionChangedEventArgs.RemovedItems.Count); }); }
public void TreeViewClearAndSetAtTest() { RunOnUIThread.Execute(() => { var treeView = new TreeView(); Content = treeView; Content.UpdateLayout(); var listControl = FindVisualChildByName(treeView, "ListControl") as TreeViewList; // Verify TreeViewNode::SetAt TreeViewNode setAtChildCheckNode = new TreeViewNode() { Content = "Set At Child" }; TreeViewNode setAtRootCheckNode = new TreeViewNode() { Content = "Set At Root" }; TreeViewNode child1 = new TreeViewNode() { Content = "Child 1" }; child1.Children.Add(new TreeViewNode() { Content = "Child 1:1" }); TreeViewNode child2 = new TreeViewNode() { Content = "Child 2" }; child2.Children.Add(new TreeViewNode() { Content = "Child 2:1" }); child2.Children.Add(new TreeViewNode() { Content = "Child 2:2" }); treeView.RootNodes.Add(child1); child1.IsExpanded = true; treeView.RootNodes.Add(child2); Verify.AreEqual(listControl.Items.Count, 3); // SetAt node under child node which is not expanded child2.Children[1] = setAtChildCheckNode; Verify.AreEqual(listControl.Items.Count, 3); // SetAt node under root node and child2 is expanded treeView.RootNodes[0] = setAtRootCheckNode; child2.IsExpanded = true; Verify.AreEqual(listControl.Items.Count, 4); // Verify RootNode.Clear treeView.RootNodes.Clear(); Verify.AreEqual(listControl.Items.Count, 0); // test clear without any child node treeView.RootNodes.Clear(); Verify.AreEqual(listControl.Items.Count, 0); }); }
public static async Task <TreeViewNode> GetChildNodeAsync(this TreeViewNode Node, PathAnalysis Analysis, bool DoNotExpandNodeWhenSearching = false) { if (Node == null) { throw new ArgumentNullException(nameof(Node), "Argument could not be null"); } if (Analysis == null) { throw new ArgumentNullException(nameof(Node), "Argument could not be null"); } if (Node.HasUnrealizedChildren && !Node.IsExpanded && !DoNotExpandNodeWhenSearching) { Node.IsExpanded = true; } string NextPathLevel = Analysis.NextFullPath(); if (NextPathLevel == Analysis.FullPath) { if ((Node.Content as TreeViewNodeContent).Path.Equals(NextPathLevel, StringComparison.OrdinalIgnoreCase)) { return(Node); } else { if (DoNotExpandNodeWhenSearching) { if (Node.Children.FirstOrDefault((SubNode) => (SubNode.Content as TreeViewNodeContent).Path.Equals(NextPathLevel, StringComparison.OrdinalIgnoreCase)) is TreeViewNode TargetNode) { return(TargetNode); } else { return(null); } } else { for (int i = 0; i < 10; i++) { if (Node.Children.FirstOrDefault((SubNode) => (SubNode.Content as TreeViewNodeContent).Path.Equals(NextPathLevel, StringComparison.OrdinalIgnoreCase)) is TreeViewNode TargetNode) { return(TargetNode); } else { await Task.Delay(300).ConfigureAwait(true); } } return(null); } } } else { if ((Node.Content as TreeViewNodeContent).Path.Equals(NextPathLevel, StringComparison.OrdinalIgnoreCase)) { return(await GetChildNodeAsync(Node, Analysis, DoNotExpandNodeWhenSearching).ConfigureAwait(true)); } else { if (DoNotExpandNodeWhenSearching) { if (Node.Children.FirstOrDefault((SubNode) => (SubNode.Content as TreeViewNodeContent).Path.Equals(NextPathLevel, StringComparison.OrdinalIgnoreCase)) is TreeViewNode TargetNode) { return(await GetChildNodeAsync(TargetNode, Analysis, DoNotExpandNodeWhenSearching).ConfigureAwait(true)); } else { return(null); } } else { for (int i = 0; i < 10; i++) { if (Node.Children.FirstOrDefault((SubNode) => (SubNode.Content as TreeViewNodeContent).Path.Equals(NextPathLevel, StringComparison.OrdinalIgnoreCase)) is TreeViewNode TargetNode) { return(await GetChildNodeAsync(TargetNode, Analysis, DoNotExpandNodeWhenSearching).ConfigureAwait(true)); } else { await Task.Delay(300).ConfigureAwait(true); } } return(null); } } } }