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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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();
            }
        }
Ejemplo n.º 7
0
        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>
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
 }
Ejemplo n.º 12
0
        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();
        }