// this gets called whenever someone issues a reload() call to the parent protected override IList <TreeViewItem> BuildRows(TreeViewItem root) { if (m_Items == null) { var rawData = m_DataStore.GetElements(); m_Items = new List <TreeViewItem>(rawData.Length); for (int i = 0; i < rawData.Length; i++) { var item = new SerializedPropertyItem(rawData[i].objectId, 0, rawData[i]); m_Items.Add(item); } } // filtering IEnumerable <TreeViewItem> tmprows = m_Items; if (!m_ShowInactiveObjects && m_ShowFilterGUI) { tmprows = m_Items.Where((TreeViewItem item) => { return(((SerializedPropertyItem)item).GetData().activeInHierarchy); }); } if (m_bFilterSelection && m_ShowFilterGUI) { if (m_SelectionFilter == null) { m_SelectionFilter = Selection.instanceIDs; } tmprows = m_Items.Where((TreeViewItem item) => { return(m_SelectionFilter.Contains(item.id)); }); } else { m_SelectionFilter = null; } tmprows = Filter(tmprows); var rows = tmprows.ToList(); if (multiColumnHeader.sortedColumnIndex >= 0) { Sort(rows, multiColumnHeader.sortedColumnIndex); } m_ChangedId = 0; // We still need to setup the child parent information for the rows since this // information is used by the TreeView internal logic (navigation, dragging etc) TreeViewUtility.SetParentAndChildrenForItems(rows, root); return(rows); }
protected override IList <TreeViewItem> BuildRows(TreeViewItem root) { if (this.m_Items == null) { SerializedPropertyDataStore.Data[] elements = this.m_DataStore.GetElements(); this.m_Items = new List <TreeViewItem>(elements.Length); for (int i = 0; i < elements.Length; i++) { SerializedPropertyTreeView.SerializedPropertyItem item2 = new SerializedPropertyTreeView.SerializedPropertyItem(elements[i].objectId, 0, elements[i]); this.m_Items.Add(item2); } } IEnumerable <TreeViewItem> enumerable = this.m_Items; if (this.m_bFilterSelection) { if (this.m_SelectionFilter == null) { this.m_SelectionFilter = Selection.instanceIDs; } enumerable = from item in this.m_Items where this.m_SelectionFilter.Contains(item.id) select item; } else { this.m_SelectionFilter = null; } enumerable = this.Filter(enumerable); List <TreeViewItem> list = enumerable.ToList <TreeViewItem>(); if (base.multiColumnHeader.sortedColumnIndex >= 0) { this.Sort(list, base.multiColumnHeader.sortedColumnIndex); } this.m_ChangedId = 0; TreeViewUtility.SetParentAndChildrenForItems(list, root); return(list); }