A game about forced loneliness, made by TACStudios
at master 6.6 kB view raw
1using System; 2using System.Collections.Generic; 3 4using UnityEditor.IMGUI.Controls; 5using UnityEngine; 6 7using PlasticGui; 8using Unity.PlasticSCM.Editor.UI.Tree; 9 10namespace Unity.PlasticSCM.Editor.Views.Merge.Developer 11{ 12 internal enum MergeTreeColumn 13 { 14 Path, 15 Size, 16 Author, 17 Details, 18 Resolution, 19 DateModified, 20 Comment 21 } 22 23 [Serializable] 24 internal class MergeTreeHeaderState : MultiColumnHeaderState, ISerializationCallbackReceiver 25 { 26 internal static MergeTreeHeaderState GetDefault() 27 { 28 MergeTreeHeaderState headerState = 29 new MergeTreeHeaderState(BuildColumns()); 30 31 headerState.visibleColumns = GetDefaultVisibleColumns(); 32 33 return headerState; 34 } 35 36 internal static List<string> GetColumnNames() 37 { 38 List<string> result = new List<string>(); 39 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.PathColumn)); 40 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.SizeColumn)); 41 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.CreatedByColumn)); 42 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.DetailsColumn)); 43 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.ResolutionMethodColumn)); 44 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.DateModifiedColumn)); 45 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.CommentColumn)); 46 return result; 47 } 48 49 internal static string GetColumnName(MergeTreeColumn column) 50 { 51 switch (column) 52 { 53 case MergeTreeColumn.Path: 54 return PlasticLocalization.GetString(PlasticLocalization.Name.PathColumn); 55 case MergeTreeColumn.Size: 56 return PlasticLocalization.GetString(PlasticLocalization.Name.SizeColumn); 57 case MergeTreeColumn.Author: 58 return PlasticLocalization.GetString(PlasticLocalization.Name.AuthorColumn); 59 case MergeTreeColumn.Details: 60 return PlasticLocalization.GetString(PlasticLocalization.Name.DetailsColumn); 61 case MergeTreeColumn.Resolution: 62 return PlasticLocalization.GetString(PlasticLocalization.Name.ResolutionMethodColumn); 63 case MergeTreeColumn.DateModified: 64 return PlasticLocalization.GetString(PlasticLocalization.Name.DateModifiedColumn); 65 case MergeTreeColumn.Comment: 66 return PlasticLocalization.GetString(PlasticLocalization.Name.CommentColumn); 67 default: 68 return null; 69 } 70 } 71 72 void ISerializationCallbackReceiver.OnAfterDeserialize() 73 { 74 if (mHeaderTitles != null) 75 TreeHeaderColumns.SetTitles(columns, mHeaderTitles); 76 77 if (mColumnsAllowedToggleVisibility != null) 78 TreeHeaderColumns.SetVisibilities(columns, mColumnsAllowedToggleVisibility); 79 } 80 81 void ISerializationCallbackReceiver.OnBeforeSerialize() 82 { 83 } 84 85 static int[] GetDefaultVisibleColumns() 86 { 87 List<int> result = new List<int>(); 88 result.Add((int)MergeTreeColumn.Path); 89 result.Add((int)MergeTreeColumn.Size); 90 result.Add((int)MergeTreeColumn.Author); 91 result.Add((int)MergeTreeColumn.Resolution); 92 result.Add((int)MergeTreeColumn.DateModified); 93 result.Add((int)MergeTreeColumn.Comment); 94 return result.ToArray(); 95 } 96 97 static Column[] BuildColumns() 98 { 99 return new Column[] 100 { 101 new Column() 102 { 103 width = 450, 104 headerContent = new GUIContent( 105 GetColumnName(MergeTreeColumn.Path)), 106 minWidth = 200, 107 allowToggleVisibility = false, 108 sortingArrowAlignment = TextAlignment.Right 109 }, 110 new Column() 111 { 112 width = 150, 113 headerContent = new GUIContent( 114 GetColumnName(MergeTreeColumn.Size)), 115 minWidth = 45, 116 sortingArrowAlignment = TextAlignment.Right 117 }, 118 new Column() 119 { 120 width = 150, 121 headerContent = new GUIContent( 122 GetColumnName(MergeTreeColumn.Author)), 123 minWidth = 80, 124 sortingArrowAlignment = TextAlignment.Right 125 }, 126 new Column() 127 { 128 width = 200, 129 headerContent = new GUIContent( 130 GetColumnName(MergeTreeColumn.Details)), 131 minWidth = 100, 132 sortingArrowAlignment = TextAlignment.Right 133 }, 134 new Column() 135 { 136 width = 250, 137 headerContent = new GUIContent( 138 GetColumnName(MergeTreeColumn.Resolution)), 139 minWidth = 120, 140 sortingArrowAlignment = TextAlignment.Right 141 }, 142 new Column() 143 { 144 width = 330, 145 headerContent = new GUIContent( 146 GetColumnName(MergeTreeColumn.DateModified)), 147 minWidth = 100, 148 sortingArrowAlignment = TextAlignment.Right 149 }, 150 new Column() 151 { 152 width = 400, 153 headerContent = new GUIContent( 154 GetColumnName(MergeTreeColumn.Comment)), 155 minWidth = 100, 156 sortingArrowAlignment = TextAlignment.Right 157 } 158 }; 159 } 160 161 MergeTreeHeaderState(Column[] columns) 162 : base(columns) 163 { 164 if (mHeaderTitles == null) 165 mHeaderTitles = TreeHeaderColumns.GetTitles(columns); 166 167 if (mColumnsAllowedToggleVisibility == null) 168 mColumnsAllowedToggleVisibility = TreeHeaderColumns.GetVisibilities(columns); 169 } 170 171 [SerializeField] 172 string[] mHeaderTitles; 173 174 [SerializeField] 175 bool[] mColumnsAllowedToggleVisibility; 176 } 177}