A game about forced loneliness, made by TACStudios
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}