diff --git a/Source/Editor/Content/GUI/ContentView.cs b/Source/Editor/Content/GUI/ContentView.cs
index 6cfdea210..23d81421d 100644
--- a/Source/Editor/Content/GUI/ContentView.cs
+++ b/Source/Editor/Content/GUI/ContentView.cs
@@ -27,6 +27,22 @@ namespace FlaxEditor.Content.GUI
List,
}
+ ///
+ /// The method sort for items.
+ ///
+ public enum SortType
+ {
+ ///
+ /// The classic alphabetic sort method (A-Z).
+ ///
+ AlphabeticOrder,
+
+ ///
+ /// The reverse alphabetic sort method (Z-A).
+ ///
+ AlphabeticReverse
+ }
+
///
/// Main control for used to present collection of .
///
@@ -218,8 +234,9 @@ namespace FlaxEditor.Content.GUI
/// Shows the items collection in the view.
///
/// The items to show.
+ /// The sort method for items.
/// If set to true items will be added to the current selection. Otherwise selection will be cleared before.
- public void ShowItems(List items, bool additive = false)
+ public void ShowItems(List items, SortType sortType, bool additive = false)
{
if (items == null)
throw new ArgumentNullException();
@@ -249,9 +266,24 @@ namespace FlaxEditor.Content.GUI
items[i].AddReference(this);
}
- // Sort items
- _children.Sort();
-
+ // Sort items depending on sortMethod parameter
+ _children.Sort(((control, control1) =>
+ {
+ if (sortType == SortType.AlphabeticReverse)
+ {
+ if (control.CompareTo(control1) > 0)
+ {
+ return -1;
+ }
+ if (control.CompareTo(control1) == 0)
+ {
+ return 0;
+ }
+ return 1;
+ }
+ return control.CompareTo(control1);
+ }));
+
// Unload and perform UI layout
IsLayoutLocked = wasLayoutLocked;
PerformLayout();
diff --git a/Source/Editor/Windows/ContentWindow.Search.cs b/Source/Editor/Windows/ContentWindow.Search.cs
index e8ef60e23..4800705ce 100644
--- a/Source/Editor/Windows/ContentWindow.Search.cs
+++ b/Source/Editor/Windows/ContentWindow.Search.cs
@@ -230,7 +230,7 @@ namespace FlaxEditor.Windows
}
_view.IsSearching = true;
- _view.ShowItems(items);
+ _view.ShowItems(items, _sortType);
}
private void UpdateItemsSearchFilter(ContentFolder folder, List items, bool[] filters)
diff --git a/Source/Editor/Windows/ContentWindow.cs b/Source/Editor/Windows/ContentWindow.cs
index 8a4db3789..04a82087c 100644
--- a/Source/Editor/Windows/ContentWindow.cs
+++ b/Source/Editor/Windows/ContentWindow.cs
@@ -39,6 +39,7 @@ namespace FlaxEditor.Windows
private TextBox _foldersSearchBox;
private TextBox _itemsSearchBox;
private ViewDropdown _viewDropdown;
+ private SortType _sortType;
private RootContentTreeNode _root;
@@ -215,6 +216,20 @@ namespace FlaxEditor.Windows
filterButton.Checked = _viewDropdown.IsSelected(filterButton.Text);
}
};
+
+ var sortBy = menu.AddChildMenu("Sort by");
+ sortBy.ContextMenu.AddButton("Alphabetic Order", OnSortByButtonClicked).Tag = SortType.AlphabeticOrder;
+ sortBy.ContextMenu.AddButton("Alphabetic Reverse", OnSortByButtonClicked).Tag = SortType.AlphabeticReverse;
+ sortBy.ContextMenu.VisibleChanged += control =>
+ {
+ if (!control.Visible)
+ return;
+ foreach (var item in ((ContextMenu)control).Items)
+ {
+ if (item is ContextMenuButton button)
+ button.Checked = _sortType == (SortType)button.Tag;
+ }
+ };
return menu;
}
@@ -230,6 +245,18 @@ namespace FlaxEditor.Windows
_viewDropdown.OnClicked(i);
}
+ private void OnSortByButtonClicked(ContextMenuButton button)
+ {
+ switch ((SortType)button.Tag)
+ {
+ case SortType.AlphabeticOrder: _sortType = SortType.AlphabeticOrder;
+ break;
+ case SortType.AlphabeticReverse: _sortType = SortType.AlphabeticReverse;
+ break;
+ }
+ RefreshView(SelectedNode);
+ }
+
///
/// Shows popup dialog with UI to rename content item.
///
@@ -701,12 +728,12 @@ namespace FlaxEditor.Windows
items.Add(node.Folder);
}
}
- _view.ShowItems(items);
+ _view.ShowItems(items, _sortType);
}
else
{
// Show folder contents
- _view.ShowItems(target.Folder.Children);
+ _view.ShowItems(target.Folder.Children, _sortType);
}
}