protected override void OnGUI()
        {
            mainHeaderText    = GDEConstants.DefineDataHeader;
            headerColorString = GDESettings.Instance.DefineDataColor;

            base.OnGUI();

            DrawExpandCollapseAllFoldout(GDEItemManager.AllSchemas.Keys.ToArray(), GDEConstants.SchemaListHeader);

            float currentGroupHeightTotal = CalculateGroupHeightsTotal();

            scrollViewHeight          = HeightToBottomOfWindow();
            scrollViewY               = TopOfLine();
            verticalScrollbarPosition = GUI.BeginScrollView(new Rect(currentLinePosition, scrollViewY, FullWindowWidth(), scrollViewHeight),
                                                            verticalScrollbarPosition,
                                                            new Rect(currentLinePosition, scrollViewY, ScrollViewWidth(), currentGroupHeightTotal));

            foreach (KeyValuePair <string, Dictionary <string, object> > schema in GDEItemManager.AllSchemas)
            {
                // If we are filtered out, return
                if (ShouldFilter(schema.Key, schema.Value))
                {
                    continue;
                }

                float currentGroupHeight;
                if (!groupHeights.TryGetValue(schema.Key, out currentGroupHeight))
                {
                    currentGroupHeight = GDEConstants.LineHeight;
                }

                if (IsVisible(currentGroupHeight))
                {
                    DrawEntry(schema.Key, schema.Value);
                }
                else
                {
                    NewLine(currentGroupHeight / GDEConstants.LineHeight);
                }
            }
            GUI.EndScrollView();

            //Remove any schemas that were deleted
            foreach (string deletedSchemaKey in deletedSchemas)
            {
                Remove(deletedSchemaKey);
            }
            deletedSchemas.Clear();

            // Rename any schemas that were renamed
            string error;

            foreach (KeyValuePair <string, string> pair in renamedSchemas)
            {
                if (!GDEItemManager.RenameSchema(pair.Key, pair.Value, out error))
                {
                    EditorUtility.DisplayDialog(GDEConstants.ErrorLbl, string.Format("Couldn't rename {0} to {1}: {2}", pair.Key, pair.Value, error), GDEConstants.OkLbl);
                }
            }
            renamedSchemas.Clear();
        }