using System;
using UnityEditor.IMGUI.Controls;
using UnityEngine;
using PlasticGui;
using Unity.PlasticSCM.Editor.UI.Tree;
namespace Unity.PlasticSCM.Editor.UI.Errors
{
internal enum ErrorsListColumn
{
Path,
Reason
}
[Serializable]
internal class ErrorsListHeaderState : MultiColumnHeaderState, ISerializationCallbackReceiver
{
internal static ErrorsListHeaderState GetDefault()
{
return new ErrorsListHeaderState(BuildColumns());
}
static string GetColumnName(ErrorsListColumn column)
{
switch (column)
{
case ErrorsListColumn.Path:
return PlasticLocalization.GetString(PlasticLocalization.Name.PathColumn);
case ErrorsListColumn.Reason:
return PlasticLocalization.GetString(PlasticLocalization.Name.Reason);
default:
return null;
}
}
void ISerializationCallbackReceiver.OnAfterDeserialize()
{
if (mHeaderTitles != null)
TreeHeaderColumns.SetTitles(columns, mHeaderTitles);
if (mColumnsAllowedToggleVisibility != null)
TreeHeaderColumns.SetVisibilities(columns, mColumnsAllowedToggleVisibility);
}
void ISerializationCallbackReceiver.OnBeforeSerialize()
{
}
static Column[] BuildColumns()
{
return new Column[]
{
new Column()
{
width = 300,
headerContent = new GUIContent(
GetColumnName(ErrorsListColumn.Path)),
minWidth = 200,
allowToggleVisibility = false,
canSort = false,
sortingArrowAlignment = TextAlignment.Right
},
new Column()
{
width = 600,
headerContent = new GUIContent(
GetColumnName(ErrorsListColumn.Reason)),
minWidth = 200,
canSort = false,
sortingArrowAlignment = TextAlignment.Right
}
};
}
ErrorsListHeaderState(Column[] columns)
: base(columns)
{
if (mHeaderTitles == null)
mHeaderTitles = TreeHeaderColumns.GetTitles(columns);
if (mColumnsAllowedToggleVisibility == null)
mColumnsAllowedToggleVisibility = TreeHeaderColumns.GetVisibilities(columns);
}
[SerializeField]
string[] mHeaderTitles;
[SerializeField]
bool[] mColumnsAllowedToggleVisibility;
}
}