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