public void DrawGUI() { var selection = categoryNames != null?categoryNames.IndexOf(x => x == currentCategory) : -1; using (new EditorGUILayout.HorizontalScope(EditorStyles.toolbar)) { if (nameEditMode != NameEditMode.None) { GUILayout.FlexibleSpace(); EditorGUI.BeginChangeCheck(); editCategoryName = EditorGUILayout.DelayedTextField(editCategoryName, GUILayout.Width(250f)); if (EditorGUI.EndChangeCheck()) { if (editCategoryName == ExternalResources.ShareCategoryName) { EditorUtility.DisplayDialog("Error", "This name is reserved and cannot be used..", "Close"); } else if (!string.IsNullOrEmpty(editCategoryName)) { switch (nameEditMode) { case NameEditMode.New: { categoryNames.Add(editCategoryName); currentCategory = editCategoryName; } break; case NameEditMode.Rename: { if (currentCategory != editCategoryName) { assetManagement.RenameCategory(currentCategory, editCategoryName); currentCategory = editCategoryName; categoryNames = assetManagement.GetAllCategoryNames().ToList(); } } break; } } nameEditMode = NameEditMode.None; editCategoryName = null; if (onChangeSelectCategory != null) { onChangeSelectCategory.OnNext(Unit.Default); } if (onRequestRepaint != null) { onRequestRepaint.OnNext(Unit.Default); } } if (GUILayout.Button("Cancel", EditorStyles.toolbarButton)) { nameEditMode = NameEditMode.None; editCategoryName = null; } } else { if (currentCategory != ExternalResources.ShareCategoryName) { if (GUILayout.Button("Add", EditorStyles.toolbarButton)) { nameEditMode = NameEditMode.New; } if (!string.IsNullOrEmpty(currentCategory)) { if (GUILayout.Button("Delete", EditorStyles.toolbarButton)) { if (EditorUtility.DisplayDialog("Confirm", "Remove selection category.", "Apply", "Cancel")) { assetManagement.DeleteCategory(currentCategory); categoryNames = assetManagement.GetAllCategoryNames().ToList(); if (onChangeSelectCategory != null) { onChangeSelectCategory.OnNext(Unit.Default); } if (onRequestRepaint != null) { onRequestRepaint.OnNext(Unit.Default); } return; } } if (GUILayout.Button("Rename", EditorStyles.toolbarButton)) { nameEditMode = NameEditMode.Rename; editCategoryName = currentCategory; if (onRequestRepaint != null) { onRequestRepaint.OnNext(Unit.Default); } return; } } } GUILayout.FlexibleSpace(); // 検索. Action <string> onChangeSearchText = x => { searchText = x; }; Action onSearchCancel = () => { searchText = string.Empty; }; EditorLayoutTools.DrawToolbarSearchTextField(searchText, onChangeSearchText, onSearchCancel, GUILayout.Width(200f)); // カテゴリー選択. EditorGUI.BeginChangeCheck(); var categoryName = categoryNames.ElementAtOrDefault(selection); var displayCategoryNames = GetDisplayCategoryNames(); displayCategoryNames = displayCategoryNames.OrderBy(x => x, new NaturalComparer()).ToList(); var index = displayCategoryNames.IndexOf(x => x == categoryName); var displayLabels = displayCategoryNames.Select(x => ConvertSlashToUnicodeSlash(x)).ToArray(); index = EditorGUILayout.Popup(string.Empty, index, displayLabels, EditorStyles.toolbarDropDown, GUILayout.Width(250f)); if (EditorGUI.EndChangeCheck()) { selection = categoryNames.IndexOf(x => x == displayCategoryNames[index]); currentCategory = categoryNames[selection]; if (onChangeSelectCategory != null) { onChangeSelectCategory.OnNext(Unit.Default); } } } } }
public void DrawHeaderGUI() { var groupManageInfos = assetManageManager.GroupInfos.ToArray(); var groupNames = groupManageInfos.Select(x => x.groupName).ToArray(); var selection = selectionGroupInfo != null? groupManageInfos.IndexOf(x => x.groupName == selectionGroupInfo.groupName) : -1; if (nameEditMode != NameEditMode.None) { GUILayout.FlexibleSpace(); EditorGUI.BeginChangeCheck(); editGroupName = EditorGUILayout.DelayedTextField(editGroupName, GUILayout.Width(250f)); if (EditorGUI.EndChangeCheck()) { if (!string.IsNullOrEmpty(editGroupName)) { switch (nameEditMode) { case NameEditMode.New: var groupManageInfo = new GroupInfo(editGroupName); assetManageManager.AddGroupInfo(groupManageInfo); selectionGroupInfo = groupManageInfo; break; case NameEditMode.Rename: if (selectionGroupInfo.groupName != editGroupName) { assetManageManager.RenameGroupInfo(selectionGroupInfo.groupName, editGroupName); selectionGroupInfo = assetManageManager.GroupInfos.FirstOrDefault(x => x.groupName == editGroupName); var groupAssetPaths = assetManageManager.GetGroupAssetPaths(selectionGroupInfo); UpdateAssetInfo(groupAssetPaths); } break; } BuildManageInfoViews(); } nameEditMode = NameEditMode.None; editGroupName = null; assetManageModel.RequestRepaint(); } } else { if (GUILayout.Button("追加", EditorStyles.toolbarButton)) { nameEditMode = NameEditMode.New; } if (selectionGroupInfo != null) { if (GUILayout.Button("削除", EditorStyles.toolbarButton)) { if (EditorUtility.DisplayDialog("確認", "グループを削除します", "実行", "中止")) { var assetPaths = assetManageManager.GetGroupAssetPaths(selectionGroupInfo); assetManageManager.DeleteGroupInfo(selectionGroupInfo); selectionGroupInfo = assetManageManager.GroupInfos.First(); UpdateAssetInfo(assetPaths); BuildManageInfoViews(); assetManageModel.RequestRepaint(); return; } } if (GUILayout.Button("リネーム", EditorStyles.toolbarButton)) { nameEditMode = NameEditMode.Rename; editGroupName = selectionGroupInfo.groupName; assetManageModel.RequestRepaint(); return; } } GUILayout.FlexibleSpace(); EditorGUI.BeginChangeCheck(); selection = EditorGUILayout.Popup(string.Empty, selection, groupNames, EditorStyles.toolbarDropDown, GUILayout.Width(180f)); if (EditorGUI.EndChangeCheck()) { selectionGroupInfo = groupManageInfos[selection]; BuildManageInfoViews(); } } }