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.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}