module-navigation-tool/Editor/Toolbar/Settings/ToolbarSettingsProvider.cs

59 lines
1.6 KiB
C#

using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace Module.NavigationTool.Editor.Toolbar
{
internal static class ToolbarSettingsProvider
{
private static Styles STYLES;
private static IToolbarSettings[] SETTINGS;
[SettingsProvider]
public static SettingsProvider GetProvider()
{
Initialize();
var keywords = new List<string> { "Toolbar" };
for (var i = 0; i < SETTINGS.Length; i++)
{
keywords.Add(SETTINGS[i].Title);
}
return new SettingsProvider("Module/Toolbar", SettingsScope.User)
{
label = "Toolbar",
keywords = keywords.ToArray(),
guiHandler = OnGui
};
}
private static void Initialize()
{
if (STYLES == null)
STYLES = new Styles();
if (SETTINGS == null)
SETTINGS = ToolbarSettingsUtility.GetAllSettings();
}
private static void OnGui(string searchContext)
{
Initialize();
STYLES.Initialize(GUI.skin);
EditorGUILayout.BeginVertical(STYLES.settingsGroup);
{
for (var i = 0; i < SETTINGS.Length; i++)
{
IToolbarSettings settings = SETTINGS[i];
EditorGUILayout.LabelField(settings.Title, EditorStyles.boldLabel);
settings.Draw();
EditorGUILayout.Space();
}
}
EditorGUILayout.EndVertical();
}
}
}