Maze / Library /PackageCache /com.unity.collab-proxy@2.0.4 /Editor /PlasticSCM /UI /Tree /TreeHeaderSettings.cs
| using System; | |
| using System.Globalization; | |
| using System.Linq; | |
| using UnityEditor; | |
| using UnityEditor.IMGUI.Controls; | |
| using Codice.LogWrapper; | |
| namespace Unity.PlasticSCM.Editor.UI.Tree | |
| { | |
| internal static class TreeHeaderSettings | |
| { | |
| internal static void Load( | |
| MultiColumnHeaderState headerState, | |
| string treeSettingsName, | |
| int defaultSortColumnIdx, | |
| bool defaultSortedAscending = true) | |
| { | |
| int[] visibleColumns; | |
| float[] columnWidths; | |
| GetColumnsSettings(treeSettingsName, headerState.columns.Length, | |
| out visibleColumns, out columnWidths); | |
| if (visibleColumns.Length > 0) | |
| headerState.visibleColumns = visibleColumns; | |
| if (headerState.columns.Length == columnWidths.Length) | |
| TreeHeaderColumns.SetWidths(headerState.columns, columnWidths); | |
| if (defaultSortColumnIdx == UnityConstants.UNSORT_COLUMN_ID) | |
| return; | |
| var sortColumnIdx = EditorPrefs.GetInt( | |
| GetSettingKey(treeSettingsName, SORT_COLUMN_INDEX_KEY), | |
| defaultSortColumnIdx); | |
| if (sortColumnIdx < 0 || sortColumnIdx >= headerState.columns.Length) | |
| sortColumnIdx = defaultSortColumnIdx; | |
| var sortColumnAscending = EditorPrefs.GetBool( | |
| GetSettingKey(treeSettingsName, SORT_ASCENDING_KEY), | |
| defaultSortedAscending); | |
| headerState.sortedColumnIndex = sortColumnIdx; | |
| headerState.columns[sortColumnIdx].sortedAscending = sortColumnAscending; | |
| } | |
| internal static void Save( | |
| MultiColumnHeaderState headerState, | |
| string treeSettingsName) | |
| { | |
| int[] visibleColumns = headerState.visibleColumns; | |
| float[] columnWidths = TreeHeaderColumns.GetWidths(headerState.columns); | |
| EditorPrefs.SetString( | |
| GetSettingKey(treeSettingsName, VISIBLE_COLUMNS_KEY), | |
| string.Join(",", visibleColumns.Select(idx => idx.ToString()).ToArray())); | |
| EditorPrefs.SetString( | |
| GetSettingKey(treeSettingsName, COLUMNS_WIDTHS_KEY), | |
| string.Join(",", columnWidths | |
| .Select(w => w.ToString(CultureInfo.InvariantCulture)) | |
| .ToArray())); | |
| int sortColumnIdx = headerState.sortedColumnIndex; | |
| if (sortColumnIdx == UnityConstants.UNSORT_COLUMN_ID) | |
| return; | |
| bool sortColumnAscending = headerState. | |
| columns[headerState.sortedColumnIndex].sortedAscending; | |
| EditorPrefs.SetInt( | |
| GetSettingKey(treeSettingsName, SORT_COLUMN_INDEX_KEY), | |
| sortColumnIdx); | |
| EditorPrefs.SetBool( | |
| GetSettingKey(treeSettingsName, SORT_ASCENDING_KEY), | |
| sortColumnAscending); | |
| } | |
| internal static void Clear(string treeSettingsName) | |
| { | |
| EditorPrefs.DeleteKey( | |
| GetSettingKey(treeSettingsName, VISIBLE_COLUMNS_KEY)); | |
| EditorPrefs.DeleteKey( | |
| GetSettingKey(treeSettingsName, COLUMNS_WIDTHS_KEY)); | |
| EditorPrefs.DeleteKey( | |
| GetSettingKey(treeSettingsName, SORT_COLUMN_INDEX_KEY)); | |
| EditorPrefs.DeleteKey( | |
| GetSettingKey(treeSettingsName, SORT_ASCENDING_KEY)); | |
| } | |
| static void GetColumnsSettings(string treeSettingsName, | |
| int headerColumnsLenght, | |
| out int[] visibleColumns, | |
| out float[] columnWidths) | |
| { | |
| try | |
| { | |
| visibleColumns = EditorPrefs.GetString( | |
| GetSettingKey(treeSettingsName, VISIBLE_COLUMNS_KEY), string.Empty) | |
| .Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries) | |
| .Select(idx => int.Parse(idx)) | |
| .Where(idx => idx >= 0 && idx < headerColumnsLenght) | |
| .ToArray(); | |
| columnWidths = EditorPrefs.GetString( | |
| GetSettingKey(treeSettingsName, COLUMNS_WIDTHS_KEY), string.Empty) | |
| .Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries) | |
| .Select(w => float.Parse(w, CultureInfo.InvariantCulture)) | |
| .ToArray(); | |
| } | |
| catch (Exception ex) | |
| { | |
| mLog.ErrorFormat("Unable to read TreeHeaderSettings: {0}", | |
| ex.Message); | |
| mLog.DebugFormat("Stack tracke:{0}{1}", | |
| Environment.NewLine, ex.StackTrace); | |
| visibleColumns = new int[0]; | |
| columnWidths = new float[0]; | |
| } | |
| } | |
| static string GetSettingKey(string treeSettingsName, string key) | |
| { | |
| return string.Format(treeSettingsName, PlayerSettings.productGUID, key); | |
| } | |
| static string VISIBLE_COLUMNS_KEY = "VisibleColumns"; | |
| static string COLUMNS_WIDTHS_KEY = "ColumnWidths"; | |
| static string SORT_COLUMN_INDEX_KEY = "SortColumnIdx"; | |
| static string SORT_ASCENDING_KEY = "SortAscending"; | |
| static readonly ILog mLog = LogManager.GetLogger("TreeHeaderSettings"); | |
| } | |
| } |