/// <summary> /// Render this control /// </summary> public void Render() { if (itsUpdateWish) { UpdateList(); } int itsNumberOfPages = (int)Math.Ceiling((float)itsData.Rows.Count / (float)itsItemsPerPage); if (itsCurrentPage >= itsNumberOfPages) { itsCurrentPage = 0; } itsRepaintWish = false; itsGuiData.SetDisplayRowCount((uint)itsItemsPerPage); KGFGUIUtility.BeginHorizontalBox(KGFGUIUtility.eStyleBox.eBoxDecorated); { // categories view GUILayout.BeginVertical(GUILayout.Width(180)); { itsListViewCategories.Render(); } GUILayout.EndVertical(); KGFGUIUtility.SpaceSmall(); GUILayout.BeginVertical(); { // item table itsGuiData.SetStartRow((uint)(itsCurrentPage * (uint)itsItemsPerPage)); itsGuiData.Render(); KGFGUIUtility.BeginHorizontalBox(KGFGUIUtility.eStyleBox.eBoxMiddleVerticalInteractive); { // enum filter boxes int aColumnNo = 0; // KGFGUIUtility.SpaceSmall(); foreach (KGFObjectListColumnItem anItem in itsListFieldCache) { aColumnNo++; if (!anItem.itsDisplay) { continue; } if (!itsGuiData.GetColumnVisible(aColumnNo)) { continue; } if (anItem.itsSearchable && (anItem.GetReturnType().IsEnum || anItem.GetReturnType() == typeof(bool) || anItem.GetReturnType() == typeof(string))) { GUILayout.BeginHorizontal(GUILayout.Width(itsGuiData.GetColumnWidth(aColumnNo))); { KGFGUIUtility.BeginVerticalBox(KGFGUIUtility.eStyleBox.eBoxInvisible); DrawFilterBox(anItem, itsGuiData.GetColumnWidth(aColumnNo) - 4); KGFGUIUtility.EndVerticalBox(); } GUILayout.EndHorizontal(); KGFGUIUtility.Separator(KGFGUIUtility.eStyleSeparator.eSeparatorVerticalFitInBox); } else { GUILayout.BeginHorizontal(GUILayout.Width(itsGuiData.GetColumnWidth(aColumnNo))); { GUILayout.Label(" "); } GUILayout.EndHorizontal(); KGFGUIUtility.Separator(KGFGUIUtility.eStyleSeparator.eSeparatorVerticalFitInBox); continue; } } GUILayout.FlexibleSpace(); } KGFGUIUtility.EndHorizontalBox(); KGFGUIUtility.BeginHorizontalBox(KGFGUIUtility.eStyleBox.eBoxDarkMiddleVertical); { GUILayout.Label(""); GUILayout.FlexibleSpace(); } KGFGUIUtility.EndHorizontalBox(); KGFGUIUtility.BeginVerticalBox(KGFGUIUtility.eStyleBox.eBoxDarkBottom); { GUILayout.BeginHorizontal(); { if (!Application.isPlaying) { if (EventNew != null) { if (KGFGUIUtility.Button("New", KGFGUIUtility.eStyleButton.eButton, GUILayout.Width(75))) { EventNew(this, null); } } if (EventDelete != null) { if (KGFGUIUtility.Button("Delete", KGFGUIUtility.eStyleButton.eButton, GUILayout.Width(75))) { EventDelete(this, null); } } GUILayout.FlexibleSpace(); } // full text search box if (itsDisplayFullTextSearch) { GUI.SetNextControlName(itsControlSearchName); string aNewString = KGFGUIUtility.TextField(itsFulltextSearch, KGFGUIUtility.eStyleTextField.eTextField, GUILayout.Width(200)); if (aNewString != itsFulltextSearch) { itsFulltextSearch = aNewString; UpdateList(); } } KGFGUIUtility.Space(); bool anIncludeAll = KGFGUIUtility.Toggle(itsIncludeAll, "all Tags", KGFGUIUtility.eStyleToggl.eTogglSuperCompact, GUILayout.Width(70)); if (anIncludeAll != itsIncludeAll) { itsIncludeAll = anIncludeAll; UpdateList(); } if (KGFGUIUtility.Button("clear filters", KGFGUIUtility.eStyleButton.eButton, GUILayout.Width(100))) { itsFulltextSearch = ""; ClearFilters(); UpdateList(); } GUILayout.FlexibleSpace(); KGFGUIUtility.BeginHorizontalBox(KGFGUIUtility.eStyleBox.eBoxInvisible); { if (GetDisplayEntriesPerPage()) { //number of items in List if (KGFGUIUtility.Button("<", KGFGUIUtility.eStyleButton.eButtonLeft, GUILayout.Width(25))) { switch (itsItemsPerPage) { case KGFeItemsPerPage.e25: itsItemsPerPage = KGFeItemsPerPage.e10; break; case KGFeItemsPerPage.e50: itsItemsPerPage = KGFeItemsPerPage.e25; break; case KGFeItemsPerPage.e100: itsItemsPerPage = KGFeItemsPerPage.e50; break; case KGFeItemsPerPage.e250: itsItemsPerPage = KGFeItemsPerPage.e100; break; case KGFeItemsPerPage.e500: itsItemsPerPage = KGFeItemsPerPage.e250; break; default: break; } } KGFGUIUtility.BeginVerticalBox(KGFGUIUtility.eStyleBox.eBoxMiddleHorizontal); { string aLogsPerPageString = itsItemsPerPage.ToString().Substring(1) + " entries per page"; KGFGUIUtility.Label(aLogsPerPageString, KGFGUIUtility.eStyleLabel.eLabelFitIntoBox); } KGFGUIUtility.EndVerticalBox(); if (KGFGUIUtility.Button(">", KGFGUIUtility.eStyleButton.eButtonRight, GUILayout.Width(25))) { switch (itsItemsPerPage) { case KGFeItemsPerPage.e10: itsItemsPerPage = KGFeItemsPerPage.e25; break; case KGFeItemsPerPage.e25: itsItemsPerPage = KGFeItemsPerPage.e50; break; case KGFeItemsPerPage.e50: itsItemsPerPage = KGFeItemsPerPage.e100; break; case KGFeItemsPerPage.e100: itsItemsPerPage = KGFeItemsPerPage.e250; break; case KGFeItemsPerPage.e250: itsItemsPerPage = KGFeItemsPerPage.e500; break; default: break; } } } GUILayout.Space(10.0f); // page control if (KGFGUIUtility.Button("<", KGFGUIUtility.eStyleButton.eButtonLeft, GUILayout.Width(25)) && itsCurrentPage > 0) { itsCurrentPage--; } KGFGUIUtility.BeginVerticalBox(KGFGUIUtility.eStyleBox.eBoxMiddleHorizontal); { string aString = string.Format("page {0}/{1}", itsCurrentPage + 1, Math.Max(itsNumberOfPages, 1)); KGFGUIUtility.Label(aString, KGFGUIUtility.eStyleLabel.eLabelFitIntoBox); } KGFGUIUtility.EndVerticalBox(); if (KGFGUIUtility.Button(">", KGFGUIUtility.eStyleButton.eButtonRight, GUILayout.Width(25)) && itsData.Rows.Count > ((itsCurrentPage + 1) * (int)itsItemsPerPage)) { itsCurrentPage++; } } KGFGUIUtility.EndHorizontalBox(); } GUILayout.EndHorizontal(); } KGFGUIUtility.EndVerticalBox(); } GUILayout.EndVertical(); } KGFGUIUtility.EndHorizontalBox(); if (GUI.GetNameOfFocusedControl().Equals(itsControlSearchName)) { if (itsFulltextSearch.Equals(itsTextSearch)) { itsFulltextSearch = string.Empty; } } if (!GUI.GetNameOfFocusedControl().Equals(itsControlSearchName)) { if (itsFulltextSearch.Equals(string.Empty)) { itsFulltextSearch = itsTextSearch; } } }