/// <summary>
        /// Constructor of the tree view.
        /// </summary>
        public SystemTreeView(string editorWindowInstanceKey)
        {
            m_SystemTreeView = new TreeView(m_TreeViewRootItems, Constants.ListView.ItemHeight, MakeTreeViewItem, ReleaseTreeViewItem, BindTreeViewItem)
            {
                viewDataKey   = $"{Constants.State.ViewDataKeyPrefix}{typeof(SystemScheduleWindow).FullName}+{editorWindowInstanceKey}",
                selectionType = SelectionType.Single,
                name          = "SystemTreeView",
                style         = { flexGrow = 1 }
            };

            m_SystemTreeView.RegisterCallback <GeometryChangedEvent>(evt =>
            {
                if (m_ScrollToItemId == -1)
                {
                    return;
                }

                var tempId       = m_ScrollToItemId;
                m_ScrollToItemId = -1;
                if (m_SystemTreeView.FindItem(tempId) != null)
                {
                    m_SystemTreeView.ScrollToItem(tempId);
                }
            });

            m_SystemTreeView.onSelectionChange += OnSelectionChanged;
            Add(m_SystemTreeView);

            m_SystemDetailsVisualElement = new SystemDetailsVisualElement();

            m_SearchEmptyMessage = new CenteredMessageElement {
                Title = k_NoSystemsFoundTitle
            };
            m_SearchEmptyMessage.Hide();
            Add(m_SearchEmptyMessage);

            // Create list view for search results.
            m_SystemListView = new ListView(m_ListViewFilteredItems, Constants.ListView.ItemHeight, MakeListViewItem, ReleaseListViewItem, BindListViewItem)
            {
                selectionType = SelectionType.Single,
                name          = "SystemListView",
                style         = { flexGrow = 1 }
            };
            m_SystemListView.RegisterCallback <PointerDownEvent>(evt =>
            {
                if (evt.button == (int)MouseButton.LeftMouse)
                {
                    Selection.activeObject = null;
                }
            });

#if UNITY_2020_1_OR_NEWER
            m_SystemListView.onSelectionChange += OnSelectionChanged;
#else
            m_SystemListView.onSelectionChanged += OnSelectionChanged;
#endif

            Add(m_SystemListView);
        }
Example #2
0
        void CreateSystemDetailsSection()
        {
            m_SystemDetailsVisualElement      = new SystemDetailsVisualElement();
            SystemTreeView.onSelectionChange += (selectedItems) =>
            {
                var item = selectedItems.OfType <SystemTreeViewItem>().FirstOrDefault();
                if (null == item)
                {
                    return;
                }

                switch (item.System)
                {
                case null:
                {
                    if (this.Contains(m_SystemDetailsVisualElement))
                    {
                        Remove(m_SystemDetailsVisualElement);
                    }

                    return;
                }
                }

                // Remember last selected item id so that query information can be properly updated.
                m_LastSelectedItemId = item.id;
                m_LastSelectedItem   = item;

                // Start fresh.
                if (this.Contains(m_SystemDetailsVisualElement))
                {
                    Remove(m_SystemDetailsVisualElement);
                }

                m_SystemDetailsVisualElement.Target           = item;
                m_SystemDetailsVisualElement.SearchFilter     = SearchFilter;
                m_SystemDetailsVisualElement.Parent           = this;
                m_SystemDetailsVisualElement.LastSelectedItem = m_LastSelectedItem;
                this.Add(m_SystemDetailsVisualElement);
            };
        }