public void DrawCommonList() { GUILayout.BeginArea(new Rect(10, 45, 500, 100)); var rect = EditorGUILayout.BeginVertical(); EditorGUILayout.LabelField(TabName, EditorStyles.boldLabel); SelectedItemId = EditorGUILayout.IntPopup(ListName, SelectedItemId, PopupDataList.Select(x => x.Name).ToArray(), PopupDataList.Select(x => x.Id).ToArray()); if (SelectedItemId > 0) { IsEmpty = false; string tagName = PopupDataList.Where(x => x.Id == SelectedItemId).Select(x => x.TagName).FirstOrDefault(); if (!string.IsNullOrEmpty(tagName)) { Data = (T)DataDictionary.Data.Values.Cast <IData>().SingleOrDefault(x => x.TagName == tagName); } else { Debug.LogError("Tag Name is null or empty"); } } if (SelectedItemId == 0) { IsEmpty = true; } else if (!IsNew && SelectedItemId == 0) { Clear(); } if (GUI.Button(new Rect(rect.x, rect.y + rect.height, 50, 25), "New")) { New(); SelectedItemId = 0; } if (IsNew) { if (GUI.Button(new Rect(rect.x + 50, rect.y + rect.height, 50, 25), "Save")) { Save(Data); } } else if (!IsEmpty) { if (GUI.Button(new Rect(rect.x + 50, rect.y + rect.height, 50, 25), "Update")) { Save(Data); } } EditorGUILayout.EndVertical(); GUILayout.EndArea(); }
public void Save(T data) { if (!DataDictionary.Data.ContainsKey(((IData)data).TagName)) { DataDictionary.Add(((IData)data).TagName, data); JsonData.SaveJson(Constants.CountriesFileName, DataDictionary, Application.dataPath); int maxId = PopupDataList.Select(x => x.Id).Max(); PopupDataList.Add(new PopupData { Id = maxId, Name = ((IData)data).Name, TagName = ((IData)data).TagName }); SelectedItemId = maxId; IsNew = false; } }