void AddCounterGroupToTreeDataItems(SortedDictionary <string, List <string> > counterDictionary, string groupName, List <TreeViewItemData <ModuleDetailsItemData> > treeDataItems) { if (counterDictionary.Count == 0) { return; } var groupData = new GroupItemData(groupName); var group = new TreeViewItemData <ModuleDetailsItemData>(groupData.treeViewItem.id, groupData); foreach (var categoryName in counterDictionary.Keys) { var categoryData = new CategoryItemData(categoryName); var category = new TreeViewItemData <ModuleDetailsItemData>(categoryData.treeViewItem.id, categoryData); var counters = new List <TreeViewItemData <ModuleDetailsItemData> >(); foreach (var counter in counterDictionary[categoryName]) { var data = new CounterItemData(counter, categoryName); counters.Add(new TreeViewItemData <ModuleDetailsItemData>(data.treeViewItem.id, data)); } category.AddChildren(counters); group.AddChild(category); } treeDataItems.Add(group); }
private void AddTreeItemsForElement(IList <TreeViewItemData <VisualElement> > items, VisualElement ve, ref int nextId) { if (ve == null) { return; } int count = ve.hierarchy.childCount; if (count == 0) { return; } for (int i = 0; i < count; i++) { var child = ve.hierarchy[i]; var treeItem = new TreeViewItemData <VisualElement>(nextId, child); items.Add(treeItem); nextId++; var childItems = new List <TreeViewItemData <VisualElement> >(); AddTreeItemsForElement(childItems, child, ref nextId); if (childItems.Count == 0) { continue; } treeItem.AddChildren(childItems); } }
public void CopyTreeViewItemStates(VisualElementAsset sourceVEA, VisualElementAsset targetVEA) { var templateTreeItem = new TreeViewItemData <VisualElement>(); var unpackedElementTreeItem = new TreeViewItemData <VisualElement>(); foreach (var item in treeItems) { if (item.data == null) { continue; } var elementAsset = item.data.GetVisualElementAsset(); if (elementAsset == sourceVEA) { templateTreeItem = item; } else if (elementAsset == targetVEA) { unpackedElementTreeItem = item; } } if (templateTreeItem.data != null && unpackedElementTreeItem.data != null) { m_TreeView.CopyExpandedStates(templateTreeItem.id, unpackedElementTreeItem.id); } }
private static bool FindElement(IEnumerable <TreeViewItemData <VisualElement> > list, VisualElement element, out TreeViewItemData <VisualElement> itemData) { if (list == null) { itemData = new TreeViewItemData <VisualElement>(); return(false); } foreach (var item in list) { var treeItem = item; if (treeItem.data == element) { itemData = treeItem; return(true); } if (treeItem.hasChildren && FindElement(treeItem.children, element, out itemData)) { return(true); } } itemData = new TreeViewItemData <VisualElement>(); return(false); }
void AddTreeViewItemToTree(TreeViewItemData <Progress.Item> treeViewItem) { var siblings = GetSiblingItems(treeViewItem.data, out var newParentId); var insertionIndex = GetInsertionIndex(siblings, treeViewItem.data); var defaultController = m_TreeView.viewController as DefaultTreeViewController <Progress.Item>; defaultController.AddItem(treeViewItem, newParentId, insertionIndex); m_ContainedItems.Add(treeViewItem.id); if (m_MissingParents.TryGetValue(treeViewItem.id, out var orphans)) { foreach (var orphanId in orphans) { ReinsertItem(orphanId); } m_MissingParents.Remove(treeViewItem.id); } if (m_ItemsNeedingExpansion.Contains(treeViewItem.data.parentId)) { m_TreeView.viewController.ExpandItem(treeViewItem.data.parentId, true); m_ItemsNeedingExpansion.Remove(treeViewItem.data.parentId); } }
void OperationsAdded(Progress.Item[] items) { //using (new EditorPerformanceTracker("ProgressWindow.OperationsAdded")) { foreach (var item in items) { var treeViewItemData = new TreeViewItemData <Progress.Item>(item.id, item); AddTreeViewItemToTree(treeViewItemData); // When setting autoExpand to true, there is a possible race condition // that can happen if the item is added and removed quickly. // AutoExpand triggers a callback to be executed at a later point when makeItem is called. // By the time the callback is called, the item might have been removed. // Therefore, we expand all new items here manually. m_TreeView.viewController.ExpandItem(item.id, true); // Also, if the item has no child, then the expanded state is not set. // Therefore, we need to keep track of this item to expand it when we add a child to it. if (!m_TreeView.viewController.HasChildren(item.id)) { m_ItemsNeedingExpansion.Add(item.id); } } m_TreeView.RefreshItems(); } }
internal override void Apply(VisualElement container) { var treeView = container.Q <TreeView>(); /// <sample> // Create some list of data, here simply numbers in a few foldouts var items = new List <TreeViewItemData <string> >(110); for (var i = 0; i < 10; i++) { var itemIndex = i * 10 + i; var treeViewSubItemsData = new List <TreeViewItemData <string> >(10); for (var j = 0; j < 10; j++) { treeViewSubItemsData.Add(new TreeViewItemData <string>(itemIndex + j + 1, (j + 1).ToString())); } var treeViewItemData = new TreeViewItemData <string>(itemIndex, (i + 1).ToString(), treeViewSubItemsData); items.Add(treeViewItemData); } ; // The "makeItem" function will be called as needed // when the TreeView needs more items to render Func <VisualElement> makeItem = () => new Label(); // As the user scrolls through the list, the TreeView object // will recycle elements created by the "makeItem" // and invoke the "bindItem" callback to associate // the element with the matching data item (specified as an index in the list) Action <VisualElement, int> bindItem = (e, i) => { var item = treeView.GetItemDataForIndex <string>(i); (e as Label).text = item; }; treeView.SetRootItems(items); treeView.makeItem = makeItem; treeView.bindItem = bindItem; treeView.selectionType = SelectionType.Multiple; treeView.Rebuild(); // Callback invoked when the user double clicks an item treeView.itemsChosen += Debug.Log; // Callback invoked when the user changes the selection inside the TreeView treeView.selectedIndicesChanged += Debug.Log; /// </sample> }
TreeViewItemData <Progress.Item> GetExistingTreeViewItemFromId(int itemId) { var progressItem = m_TreeView.GetItemDataForId <Progress.Item>(itemId); var treeViewItem = new TreeViewItemData <Progress.Item>(itemId, progressItem); var childrenIds = m_TreeView.viewController.GetChildrenIds(itemId); if (childrenIds != null) { var childrenItems = childrenIds.Select(id => GetExistingTreeViewItemFromId(id)); treeViewItem.AddChildren(childrenItems.ToList()); } return(treeViewItem); }
private void FillFunctionsTree(List <NodeData> nodes) { var source = new List <TreeViewItemData>(); foreach (var nodeData in nodes) { var node = new TreeViewItemData { ImageSource = nodeData.ImageIndex == -1 ? null : _imageList.Images[nodeData.ImageIndex], Text = nodeData.Name, ToolTip = nodeData.ToolTipText, Tag = nodeData.Tag }; source.Add(node); if (nodeData.Children == null) { continue; } foreach (var fieldNodeData in nodeData.Children) { var nodeChild = new TreeViewItemData { ImageSource = _imageList.Images[fieldNodeData.ImageIndex], Text = fieldNodeData.Name, ToolTip = fieldNodeData.ToolTipText, Tag = fieldNodeData.Tag }; node.Items.Add(nodeChild); } } TreeFunctions.ItemsSource = source.OrderBy(x => x.Text); if (!string.IsNullOrEmpty(TbFilterForFunctions.Text)) { CheckTreeFilter(TreeFunctions, TbFilterForFunctions.Text.ToLower()); } }
private void GenerateContextMenu(TreeViewItemData treeViewItemData) { //ContextMenu contextMenu = new ContextMenu(); //contextMenu.AddHandler(ContextMenu.ContextMenuOpeningEvent, new ContextMenuEventHandler(ContextMenu_ContextMenuOpening)); // itens que não precisão do app //if (!string.IsNullOrEmpty(treeViewItemData.Data.GuidRef)) //{ // MenuItemData menuItem = new MenuItemData(); // menuItem.Data = treeViewItemData.Data; // menuItem.Header = "Find Ref Item"; // menuItem.Click += MenuFindRef_Click; // contextMenu.Items.Add(menuItem); //} //if (!string.IsNullOrEmpty(treeViewItemData.Data.Guid)) //{ // MenuItemData menuItem = new MenuItemData(); // menuItem.Data = treeViewItemData.Data; // menuItem.Header = "Copy Guid"; // menuItem.Icon = new System.Windows.Controls.Image() { Source = dataContext.CopyMenuItemImg }; // menuItem.Click += MenuCopyGuid_Click; // contextMenu.Items.Add(menuItem); //} if (treeViewItemData.Data.ContainsAttribute("captionRef")) { MenuItemData menuItem = new MenuItemData(); menuItem.Data = treeViewItemData.Data; menuItem.Header = "Find Caption Ref"; menuItem.Click += MenuItemFindCaptionRef_Click; //contextMenu.Items.Add(menuItem); } //if (treeViewItemData.Data.ContainsAttribute("itemRef")) //{ // MenuItemData menuItem = new MenuItemData(); // menuItem.Data = treeViewItemData.Data; // menuItem.Header = "Find Item Ref"; // menuItem.Click += MenuItemFindCaptionRef_Click; // contextMenu.Items.Add(menuItem); //} for (int i = 0; i < treeViewItemData.Data.Attributes.Count; i++) { DataClass.Attribute att = treeViewItemData.Data.Attributes[i]; if (att.Name != "captionRef" && att.Name != "guid" && att.Name != "guidRef" && att.IsGuid) { MenuItemData menuItem = new MenuItemData(); menuItem.Data = treeViewItemData.Data; menuItem.Header = string.Format("Find {0}", att.Name); menuItem.Tag = att.Name; menuItem.Click += MenuItemFindGenericRef_Click; //contextMenu.Items.Add(menuItem); } } //MenuItemData menuItem4 = new MenuItemData(); //menuItem4.Data = treeViewItemData.Data; //menuItem4.Header = "Xml"; //menuItem4.Click += MenuItemXmlEncode_Click; //contextMenu.Items.Add(menuItem4); //if (!dataContext.InCorel) // return contextMenu; //MenuItemData menuItem2 = new MenuItemData(); //menuItem2.Data = treeViewItemData.Data; //menuItem2.Header = "Try Get Caption Text"; //menuItem2.Click += MenuItemGetCaptionText_Click; //contextMenu.Items.Add(menuItem2); //MenuItemData menuItem6 = new MenuItemData(); //menuItem6.Data = treeViewItemData.Data; //menuItem6.Header = "Try highlight this"; //menuItem6.Click += MenuItemTryHighlight_Click; //menuItem6.Icon = new System.Windows.Controls.Image() { Source = dataContext.HighLightButtonImg }; //contextMenu.Items.Add(menuItem6); //if (treeViewItemData.Data.GetType() == typeof(DataClass.CommandBarData)) //{ // MenuItemData menuItem = new MenuItemData(); // menuItem.Data = treeViewItemData.Data; // menuItem.Header = "Try Show Command Bar"; // menuItem.Click += MenuItemshowCommandBar_Click; // contextMenu.Items.Add(menuItem); // MenuItemData menuItem3 = new MenuItemData(); // menuItem3.Data = treeViewItemData.Data; // menuItem3.Header = "Try Hide Command Bar"; // menuItem3.Click += MenuItemHideCommandBar_Click; // contextMenu.Items.Add(menuItem3); // MenuItemData menuItem5 = new MenuItemData(); // menuItem5.Data = treeViewItemData.Data; // menuItem5.Header = "Command Bar Mode"; // menuItem5.Click += MenuItemCommandBarMode_Click; // contextMenu.Items.Add(menuItem5); //} //if (treeViewItemData.Data.GetType() == typeof(DataClass.OtherData)) //{ // MenuItemData menuItem = new MenuItemData(); // menuItem.Data = treeViewItemData.Data; // menuItem.Header = "Try Show this"; // menuItem.Click += MenuItemshowItem_Click; // contextMenu.Items.Add(menuItem); //} //if (treeViewItemData.Data.GetType() == typeof(DataClass.DialogData)) //{ // MenuItemData menuItem = new MenuItemData(); // menuItem.Data = treeViewItemData.Data; // menuItem.Header = "Try Show Dialog"; // menuItem.Click += MenuItemshowDialog_Click; // contextMenu.Items.Add(menuItem); // MenuItemData menuItem3 = new MenuItemData(); // menuItem3.Data = treeViewItemData.Data; // menuItem3.Header = "Try Hide Dialog"; // menuItem3.Click += MenuItemHideDialog_Click; // contextMenu.Items.Add(menuItem3); //} //if (treeViewItemData.Data.GetType() == typeof(DataClass.DockerData)) //{ // MenuItemData menuItem = new MenuItemData(); // menuItem.Data = treeViewItemData.Data; // menuItem.Header = "Try Show Docker"; // menuItem.Click += MenuItemshowDocker_Click; // contextMenu.Items.Add(menuItem); // MenuItemData menuItem3 = new MenuItemData(); // menuItem3.Data = treeViewItemData.Data; // menuItem3.Header = "Try Hide Docker"; // menuItem3.Click += MenuItemHideDocker_Click; // contextMenu.Items.Add(menuItem3); //} //if (treeViewItemData.Data.GetType() == typeof(DataClass.ItemData)) //{ // MenuItemData menuItem = new MenuItemData(); // menuItem.Data = treeViewItemData.Data; // menuItem.Header = "Try Invoke Item"; // menuItem.Click += MenuItemInvoke_Click; // contextMenu.Items.Add(menuItem); //} //if (treeViewItemData.Data.TagName == "dockers") //{ // MenuItemData menuItem = new MenuItemData(); // menuItem.Data = treeViewItemData.Data; // menuItem.Header = "Get Dockers Caption"; // menuItem.Click += MenuItemGetDockerCaption_Click; // contextMenu.Items.Add(menuItem); // //MenuItemData menuItem12 = new MenuItemData(); // //menuItem12.Data = treeViewItemData.Data; // //menuItem12.Header = "Get Dockers Guids"; // //menuItem12.Click += MenuItemGetDockersGuid_Click; // //contextMenu.Items.Add(menuItem12); //} //return contextMenu; }
public ModuleDetailsItemData(string data, List <TreeViewItemData <string> > children = null) { treeViewItem = new TreeViewItemData <string>(s_NextId++, data, children); }
public void RebuildTree(IPanelDebug panelDebug) { if (!hierarchyHasChanged && m_CurrentPanelDebug == panelDebug) { return; } m_CurrentPanelDebug = panelDebug; m_Container.Clear(); int nextId = 1; m_TreeRootItems.Clear(); var visualTree = panelDebug?.visualTree; if (visualTree != null) { var rootItem = new TreeViewItemData <VisualElement>(nextId++, visualTree); m_TreeRootItems.Add(rootItem); var childItems = new List <TreeViewItemData <VisualElement> >(); AddTreeItemsForElement(childItems, visualTree, ref nextId); rootItem.AddChildren(childItems); } Func <VisualElement> makeItem = () => { var element = new VisualElement(); element.name = "unity-treeview-item-content"; element.RegisterCallback <MouseEnterEvent>((e) => { HighlightItemInTargetWindow(e.target as VisualElement); }); element.RegisterCallback <MouseLeaveEvent>((e) => { UnhighlightItemInTargetWindow(e.target as VisualElement); }); return(element); }; // Clear selection which would otherwise persist via view data persistence. m_TreeView?.ClearSelection(); m_TreeView = new TreeView(makeItem, FillItem); m_TreeView.SetRootItems(treeRootItems); m_TreeView.fixedItemHeight = 20; m_TreeView.style.flexGrow = 1; m_TreeView.horizontalScrollingEnabled = true; m_TreeView.onSelectedIndicesChange += items => { if (m_SelectElementCallback == null) { return; } if (!items.Any()) { m_SelectElementCallback(null); return; } var index = items.First(); var element = m_TreeViewController.GetDataForIndex(index); m_SelectElementCallback(element); }; m_TreeViewController = m_TreeView.viewController as DefaultTreeViewController <VisualElement>; m_Container.Add(m_TreeView); hierarchyHasChanged = false; m_SearchBar.ClearSearch(); }