A game about forced loneliness, made by TACStudios
at master 152 lines 5.7 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.Locks 12{ 13 internal enum LocksListColumn 14 { 15 ItemPath, 16 LockType, 17 ModificationDate, 18 Owner, 19 Branch, 20 DestinationBranch 21 } 22 23 [Serializable] 24 internal sealed class LocksListHeaderState : MultiColumnHeaderState, ISerializationCallbackReceiver 25 { 26 internal static LocksListHeaderState GetDefault() 27 { 28 return new LocksListHeaderState(BuildColumns()); 29 } 30 31 internal static List<string> GetColumnNames() 32 { 33 return new List<string> 34 { 35 PlasticLocalization.Name.ItemColumn.GetString(), 36 PlasticLocalization.Name.StatusColumn.GetString(), 37 PlasticLocalization.Name.DateModifiedColumn.GetString(), 38 PlasticLocalization.Name.OwnerColumn.GetString(), 39 PlasticLocalization.Name.BranchColumn.GetString(), 40 PlasticLocalization.Name.DestinationBranchColumn.GetString() 41 }; 42 } 43 44 internal static string GetColumnName(LocksListColumn column) 45 { 46 switch (column) 47 { 48 case LocksListColumn.ItemPath: 49 return PlasticLocalization.Name.ItemColumn.GetString(); 50 case LocksListColumn.LockType: 51 return PlasticLocalization.Name.StatusColumn.GetString(); 52 case LocksListColumn.ModificationDate: 53 return PlasticLocalization.Name.DateModifiedColumn.GetString(); 54 case LocksListColumn.Owner: 55 return PlasticLocalization.Name.OwnerColumn.GetString(); 56 case LocksListColumn.Branch: 57 return PlasticLocalization.Name.BranchColumn.GetString(); 58 case LocksListColumn.DestinationBranch: 59 return PlasticLocalization.Name.DestinationBranchColumn.GetString(); 60 default: 61 return null; 62 } 63 } 64 65 void ISerializationCallbackReceiver.OnAfterDeserialize() 66 { 67 if (mHeaderTitles != null) 68 { 69 TreeHeaderColumns.SetTitles(columns, mHeaderTitles); 70 } 71 72 if (mColumnsAllowedToggleVisibility != null) 73 { 74 TreeHeaderColumns.SetVisibilities(columns, mColumnsAllowedToggleVisibility); 75 } 76 } 77 78 void ISerializationCallbackReceiver.OnBeforeSerialize() 79 { 80 } 81 82 static Column[] BuildColumns() 83 { 84 return new[] 85 { 86 new Column 87 { 88 width = UnityConstants.LocksColumns.PATH_WIDTH, 89 minWidth = UnityConstants.LocksColumns.PATH_MIN_WIDTH, 90 headerContent = new GUIContent(GetColumnName(LocksListColumn.ItemPath)), 91 allowToggleVisibility = false, 92 sortingArrowAlignment = TextAlignment.Right 93 }, 94 new Column 95 { 96 width = UnityConstants.LocksColumns.LOCK_TYPE_WIDTH, 97 minWidth = UnityConstants.LocksColumns.LOCK_TYPE_MIN_WIDTH, 98 headerContent = new GUIContent(GetColumnName(LocksListColumn.LockType)), 99 sortingArrowAlignment = TextAlignment.Right 100 }, 101 new Column 102 { 103 width = UnityConstants.LocksColumns.MODIFICATION_DATE_WIDTH, 104 minWidth = UnityConstants.LocksColumns.MODIFICATION_DATE_MIN_WIDTH, 105 headerContent = new GUIContent(GetColumnName(LocksListColumn.ModificationDate)), 106 sortingArrowAlignment = TextAlignment.Right 107 }, 108 new Column 109 { 110 width = UnityConstants.LocksColumns.OWNER_WIDTH, 111 minWidth = UnityConstants.LocksColumns.OWNER_MIN_WIDTH, 112 headerContent = new GUIContent(GetColumnName(LocksListColumn.Owner)), 113 sortingArrowAlignment = TextAlignment.Right 114 }, 115 new Column 116 { 117 width = UnityConstants.LocksColumns.BRANCH_NAME_WIDTH, 118 minWidth = UnityConstants.LocksColumns.BRANCH_NAME_MIN_WIDTH, 119 headerContent = new GUIContent(GetColumnName(LocksListColumn.Branch)), 120 sortingArrowAlignment = TextAlignment.Right 121 }, 122 new Column 123 { 124 width = UnityConstants.LocksColumns.DESTINATION_BRANCH_NAME_WIDTH, 125 minWidth = UnityConstants.LocksColumns.DESTINATION_BRANCH_NAME_MIN_WIDTH, 126 headerContent = new GUIContent(GetColumnName(LocksListColumn.DestinationBranch)), 127 sortingArrowAlignment = TextAlignment.Right 128 } 129 }; 130 } 131 132 LocksListHeaderState(Column[] columns) 133 : base(columns) 134 { 135 if (mHeaderTitles == null) 136 { 137 mHeaderTitles = TreeHeaderColumns.GetTitles(columns); 138 } 139 140 if (mColumnsAllowedToggleVisibility == null) 141 { 142 mColumnsAllowedToggleVisibility = TreeHeaderColumns.GetVisibilities(columns); 143 } 144 } 145 146 [SerializeField] 147 string[] mHeaderTitles; 148 149 [SerializeField] 150 bool[] mColumnsAllowedToggleVisibility; 151 } 152}