A game about forced loneliness, made by TACStudios
at master 6.8 kB view raw
1using System; 2using System.Collections.Generic; 3 4using UnityEditor.IMGUI.Controls; 5using UnityEngine; 6 7using PlasticGui; 8using Unity.PlasticSCM.Editor.UI; 9using Unity.PlasticSCM.Editor.UI.Tree; 10 11namespace Unity.PlasticSCM.Editor.Views.Changesets 12{ 13 internal enum ChangesetsListColumn 14 { 15 Name, 16 CreationDate, 17 CreatedBy, 18 Comment, 19 Branch, 20 Repository, 21 Guid 22 } 23 24 [Serializable] 25 internal class ChangesetsListHeaderState : MultiColumnHeaderState, ISerializationCallbackReceiver 26 { 27 internal static ChangesetsListHeaderState GetDefault() 28 { 29 return new ChangesetsListHeaderState(BuildColumns()); 30 } 31 32 internal static List<string> GetColumnNames() 33 { 34 List<string> result = new List<string>(); 35 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.NameColumn)); 36 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.CreationDateColumn)); 37 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.CreatedByColumn)); 38 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.CommentColumn)); 39 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.BranchColumn)); 40 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.RepositoryColumn)); 41 result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.GuidColumn)); 42 return result; 43 } 44 45 internal static string GetColumnName(ChangesetsListColumn column) 46 { 47 switch (column) 48 { 49 case ChangesetsListColumn.Name: 50 return PlasticLocalization.GetString(PlasticLocalization.Name.NameColumn); 51 case ChangesetsListColumn.CreationDate: 52 return PlasticLocalization.GetString(PlasticLocalization.Name.CreationDateColumn); 53 case ChangesetsListColumn.CreatedBy: 54 return PlasticLocalization.GetString(PlasticLocalization.Name.CreatedByColumn); 55 case ChangesetsListColumn.Comment: 56 return PlasticLocalization.GetString(PlasticLocalization.Name.CommentColumn); 57 case ChangesetsListColumn.Branch: 58 return PlasticLocalization.GetString(PlasticLocalization.Name.BranchColumn); 59 case ChangesetsListColumn.Repository: 60 return PlasticLocalization.GetString(PlasticLocalization.Name.RepositoryColumn); 61 case ChangesetsListColumn.Guid: 62 return PlasticLocalization.GetString(PlasticLocalization.Name.GuidColumn); 63 default: 64 return null; 65 } 66 } 67 68 void ISerializationCallbackReceiver.OnAfterDeserialize() 69 { 70 if (mHeaderTitles != null) 71 TreeHeaderColumns.SetTitles(columns, mHeaderTitles); 72 73 if (mColumnsAllowedToggleVisibility != null) 74 TreeHeaderColumns.SetVisibilities(columns, mColumnsAllowedToggleVisibility); 75 } 76 77 void ISerializationCallbackReceiver.OnBeforeSerialize() 78 { 79 } 80 81 static Column[] BuildColumns() 82 { 83 return new Column[] 84 { 85 new Column() 86 { 87 width = UnityConstants.ChangesetsColumns.CHANGESET_NUMBER_WIDTH, 88 minWidth = UnityConstants.ChangesetsColumns.CHANGESET_NUMBER_MIN_WIDTH, 89 headerContent = new GUIContent( 90 GetColumnName(ChangesetsListColumn.Name)), 91 allowToggleVisibility = false, 92 sortingArrowAlignment = TextAlignment.Right 93 }, 94 new Column() 95 { 96 width = UnityConstants.ChangesetsColumns.CREATION_DATE_WIDTH, 97 minWidth = UnityConstants.ChangesetsColumns.CREATION_DATE_MIN_WIDTH, 98 headerContent = new GUIContent( 99 GetColumnName(ChangesetsListColumn.CreationDate)), 100 sortingArrowAlignment = TextAlignment.Right 101 }, 102 new Column() 103 { 104 width = UnityConstants.ChangesetsColumns.CREATED_BY_WIDTH, 105 minWidth = UnityConstants.ChangesetsColumns.CREATED_BY_MIN_WIDTH, 106 headerContent = new GUIContent( 107 GetColumnName(ChangesetsListColumn.CreatedBy)), 108 sortingArrowAlignment = TextAlignment.Right 109 }, 110 new Column() 111 { 112 width = UnityConstants.ChangesetsColumns.COMMENT_WIDTH, 113 minWidth = UnityConstants.ChangesetsColumns.COMMENT_MIN_WIDTH, 114 headerContent = new GUIContent( 115 GetColumnName(ChangesetsListColumn.Comment)), 116 sortingArrowAlignment = TextAlignment.Right 117 }, 118 new Column() 119 { 120 width = UnityConstants.ChangesetsColumns.BRANCH_WIDTH, 121 minWidth = UnityConstants.ChangesetsColumns.BRANCH_MIN_WIDTH, 122 headerContent = new GUIContent( 123 GetColumnName(ChangesetsListColumn.Branch)), 124 sortingArrowAlignment = TextAlignment.Right 125 }, 126 new Column() 127 { 128 width = UnityConstants.ChangesetsColumns.REPOSITORY_WIDTH, 129 minWidth = UnityConstants.ChangesetsColumns.REPOSITORY_MIN_WIDTH, 130 headerContent = new GUIContent( 131 GetColumnName(ChangesetsListColumn.Repository)), 132 sortingArrowAlignment = TextAlignment.Right 133 }, 134 new Column() 135 { 136 width = UnityConstants.ChangesetsColumns.GUID_WIDTH, 137 minWidth = UnityConstants.ChangesetsColumns.GUID_MIN_WIDTH, 138 headerContent = new GUIContent( 139 GetColumnName(ChangesetsListColumn.Guid)), 140 sortingArrowAlignment = TextAlignment.Right, 141 } 142 }; 143 } 144 145 ChangesetsListHeaderState(Column[] columns) 146 : base(columns) 147 { 148 if (mHeaderTitles == null) 149 mHeaderTitles = TreeHeaderColumns.GetTitles(columns); 150 151 if (mColumnsAllowedToggleVisibility == null) 152 mColumnsAllowedToggleVisibility = TreeHeaderColumns.GetVisibilities(columns); 153 } 154 155 [SerializeField] 156 string[] mHeaderTitles; 157 158 [SerializeField] 159 bool[] mColumnsAllowedToggleVisibility; 160 } 161}