protected override void OnGUI() { mainHeaderText = GDEConstants.CreateDataHeader; headerColorString = GDESettings.Instance.CreateDataColor; base.OnGUI(); DrawExpandCollapseAllFoldout(GDEItemManager.AllItems.Keys.ToArray(), GDEConstants.ItemListHeader); float currentGroupHeightTotal = CalculateGroupHeightsTotal(); scrollViewHeight = HeightToBottomOfWindow(); scrollViewY = TopOfLine(); verticalScrollbarPosition = GUI.BeginScrollView(new Rect(currentLinePosition, scrollViewY, FullWindowWidth(), scrollViewHeight), verticalScrollbarPosition, new Rect(currentLinePosition, scrollViewY, ScrollViewWidth(), currentGroupHeightTotal)); int count = 0; foreach (KeyValuePair <string, Dictionary <string, object> > item in GDEItemManager.AllItems) { // If we are filtered out, continue if (ShouldFilter(item.Key, item.Value)) { continue; } float currentGroupHeight; groupHeights.TryGetValue(item.Key, out currentGroupHeight); if (currentGroupHeight == 0f || (currentGroupHeight.NearlyEqual(GDEConstants.LineHeight) && entryFoldoutState.Contains(item.Key))) { string itemSchema = GDEItemManager.GetSchemaForItem(item.Key); if (!groupHeightBySchema.TryGetValue(itemSchema, out currentGroupHeight)) { currentGroupHeight = GDEConstants.LineHeight; } } if (IsVisible(currentGroupHeight) || (count == GDEItemManager.AllItems.Count - 1 && verticalScrollbarPosition.y.NearlyEqual(currentGroupHeightTotal - GDEConstants.LineHeight))) { DrawEntry(item.Key, item.Value); } else { NewLine(currentGroupHeight / GDEConstants.LineHeight); } count++; } GUI.EndScrollView(); //Remove any items that were deleted foreach (string deletedkey in deletedItems) { Remove(deletedkey); } deletedItems.Clear(); //Rename any items that were renamed string error; foreach (KeyValuePair <string, string> pair in renamedItems) { if (!GDEItemManager.RenameItem(pair.Key, pair.Value, null, out error)) { EditorUtility.DisplayDialog(GDEConstants.ErrorLbl, string.Format("Couldn't rename {0} to {1}: {2}", pair.Key, pair.Value, error), GDEConstants.OkLbl); } } renamedItems.Clear(); }