void OnGUI() { GUILayout.Space(10); // Languages list GUILayout.BeginHorizontal(); GUILayout.Label("Languages", EditorStyles.boldLabel, GUILayout.Width(position.width * _columnsWidth[0])); var guiContent = ""; var languagesCount = _languagesList.Length; for (int i = 0; i < languagesCount; i++) { guiContent += _languagesList.GetValue(i); if (i < languagesCount - 1) { guiContent += ", "; } } GUILayout.Label(guiContent); GUILayout.EndHorizontal(); GUILayout.Space(10); GUILayout.Label("Text entries", EditorStyles.boldLabel); // Dictionary content GUILayout.BeginVertical(_arrayStyle); // header GUILayout.BeginHorizontal(_headerStyle); GUILayout.Label("Key", GUILayout.Width(position.width * _columnsWidth[0])); GUILayout.Label("Value"); GUILayout.EndHorizontal(); // array _scrollPosition = GUILayout.BeginScrollView(_scrollPosition); GUILayout.BeginVertical(_linesStyle); int index = 0; foreach (var entry in _languageDictionary.dictionary) { // one line (one dictionary entry) GUILayout.BeginVertical(_singleLStyle); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(GUILayout.Width(position.width * _columnsWidth[0])); GUILayout.Label("" + index); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.BeginVertical(); var entryLen = entry.values.Count; for (var i = 0; i < entryLen; i++) { // one language var lang = entry.values[i]; GUILayout.BeginHorizontal(); GUILayout.Label(lang.key.ToString(), GUILayout.MaxWidth(position.width * _columnsWidth[1]), GUILayout.MinWidth(60f)); lang.value = GUILayout.TextArea(lang.value); GUILayout.EndHorizontal(); } GUILayout.EndVertical(); GUILayout.EndHorizontal(); Color defaultBg = GUI.backgroundColor; GUI.backgroundColor = Color.red; GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("-", GUILayout.Width(50f))) { _languageDictionary.DeleteEntry(index); break; } GUILayout.EndHorizontal(); GUI.backgroundColor = defaultBg; GUILayout.EndVertical(); // line end index++; } if (GUILayout.Button("Add")) { _languageDictionary.AddEntry(); } GUILayout.EndVertical(); GUILayout.EndScrollView(); GUILayout.EndVertical(); if (GUI.changed) { Undo.RecordObject(_languageDictionary, "Dictionary edited"); EditorUtility.SetDirty(_languageDictionary); } }