IncomingChangesTreeHeaderState.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEditor.IMGUI.Controls;
  4. using UnityEngine;
  5. using PlasticGui;
  6. using Unity.PlasticSCM.Editor.UI.Tree;
  7. namespace Unity.PlasticSCM.Editor.Views.IncomingChanges.Developer
  8. {
  9. internal enum IncomingChangesTreeColumn
  10. {
  11. Path,
  12. Size,
  13. Author,
  14. Details,
  15. Resolution,
  16. DateModififed
  17. }
  18. [Serializable]
  19. internal class IncomingChangesTreeHeaderState : MultiColumnHeaderState, ISerializationCallbackReceiver
  20. {
  21. internal static IncomingChangesTreeHeaderState GetDefault()
  22. {
  23. return new IncomingChangesTreeHeaderState(BuildColumns());
  24. }
  25. internal static List<string> GetColumnNames()
  26. {
  27. List<string> result = new List<string>();
  28. result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.PathColumn));
  29. result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.SizeColumn));
  30. result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.CreatedByColumn));
  31. result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.DetailsColumn));
  32. result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.ResolutionMethodColumn));
  33. result.Add(PlasticLocalization.GetString(PlasticLocalization.Name.DateModifiedColumn));
  34. return result;
  35. }
  36. internal static string GetColumnName(IncomingChangesTreeColumn column)
  37. {
  38. switch (column)
  39. {
  40. case IncomingChangesTreeColumn.Path:
  41. return PlasticLocalization.GetString(PlasticLocalization.Name.PathColumn);
  42. case IncomingChangesTreeColumn.Size:
  43. return PlasticLocalization.GetString(PlasticLocalization.Name.SizeColumn);
  44. case IncomingChangesTreeColumn.Author:
  45. return PlasticLocalization.GetString(PlasticLocalization.Name.AuthorColumn);
  46. case IncomingChangesTreeColumn.Details:
  47. return PlasticLocalization.GetString(PlasticLocalization.Name.DetailsColumn);
  48. case IncomingChangesTreeColumn.Resolution:
  49. return PlasticLocalization.GetString(PlasticLocalization.Name.ResolutionMethodColumn);
  50. case IncomingChangesTreeColumn.DateModififed:
  51. return PlasticLocalization.GetString(PlasticLocalization.Name.DateModifiedColumn);
  52. default:
  53. return null;
  54. }
  55. }
  56. void ISerializationCallbackReceiver.OnAfterDeserialize()
  57. {
  58. if (mHeaderTitles != null)
  59. TreeHeaderColumns.SetTitles(columns, mHeaderTitles);
  60. if (mColumsAllowedToggleVisibility != null)
  61. TreeHeaderColumns.SetVisibilities(columns, mColumsAllowedToggleVisibility);
  62. }
  63. void ISerializationCallbackReceiver.OnBeforeSerialize()
  64. {
  65. }
  66. static Column[] BuildColumns()
  67. {
  68. return new Column[]
  69. {
  70. new Column()
  71. {
  72. width = 450,
  73. headerContent = new GUIContent(
  74. GetColumnName(IncomingChangesTreeColumn.Path)),
  75. minWidth = 200,
  76. allowToggleVisibility = false,
  77. },
  78. new Column()
  79. {
  80. width = 150,
  81. headerContent = new GUIContent(
  82. GetColumnName(IncomingChangesTreeColumn.Size)),
  83. minWidth = 45
  84. },
  85. new Column()
  86. {
  87. width = 150,
  88. headerContent = new GUIContent(
  89. GetColumnName(IncomingChangesTreeColumn.Author)),
  90. minWidth = 80
  91. },
  92. new Column()
  93. {
  94. width = 200,
  95. headerContent = new GUIContent(
  96. GetColumnName(IncomingChangesTreeColumn.Details)),
  97. minWidth = 100
  98. },
  99. new Column()
  100. {
  101. width = 250,
  102. headerContent = new GUIContent(
  103. GetColumnName(IncomingChangesTreeColumn.Resolution)),
  104. minWidth = 120
  105. },
  106. new Column()
  107. {
  108. width = 330,
  109. headerContent = new GUIContent(
  110. GetColumnName(IncomingChangesTreeColumn.DateModififed)),
  111. minWidth = 100
  112. }
  113. };
  114. }
  115. IncomingChangesTreeHeaderState(Column[] columns)
  116. : base(columns)
  117. {
  118. if (mHeaderTitles == null)
  119. mHeaderTitles = TreeHeaderColumns.GetTitles(columns);
  120. if (mColumsAllowedToggleVisibility == null)
  121. mColumsAllowedToggleVisibility = TreeHeaderColumns.GetVisibilities(columns);
  122. }
  123. [SerializeField]
  124. string[] mHeaderTitles;
  125. [SerializeField]
  126. bool[] mColumsAllowedToggleVisibility;
  127. }
  128. }