WuhuIslandTesting/Library/PackageCache/com.unity.addressables@1.21.12/Editor/BuildReportVisualizer/Utility/TreeBuilder.cs

77 lines
2.3 KiB
C#
Raw Normal View History

2025-01-07 02:06:59 +01:00
#if UNITY_2022_2_OR_NEWER
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
namespace UnityEditor.AddressableAssets.BuildReportVisualizer
{
internal class TreeBuilder
{
MultiColumnTreeView m_TreeView;
public TreeBuilder()
{
m_TreeView = new MultiColumnTreeView();
m_TreeView.viewDataKey = $"tree-view-{GUID.Generate()}";
m_TreeView.fixedItemHeight = 30f;
m_TreeView.sortingEnabled = true;
m_TreeView.autoExpand = false;
m_TreeView.showAlternatingRowBackgrounds = AlternatingRowBackground.ContentOnly;
m_TreeView.showBorder = true;
}
public TreeBuilder With(ContentViewColumnData column)
{
AddColumn(column);
return this;
}
public TreeBuilder With(ContentViewColumnData[] columns)
{
foreach (var column in columns)
AddColumn(column);
return this;
}
void AddColumn(ContentViewColumnData column)
{
Column newColumn = new Column();
if (column.Name.Contains("Name"))
{
newColumn.minWidth = new Length(150f, LengthUnit.Pixel);
newColumn.width = Length.Auto();
}
else if (column.Name.Contains("Refs"))
{
newColumn.minWidth = new Length(60f, LengthUnit.Pixel);
newColumn.width = new Length(60f, LengthUnit.Pixel);
}
else
newColumn.minWidth = new Length(80f, LengthUnit.Pixel);
newColumn.name = column.Name;
newColumn.title = column.Title;
newColumn.stretchable = true;
newColumn.resizable = true;
m_TreeView.columns.Add(newColumn);
newColumn.makeCell = () => new Label();
newColumn.bindCell = column.BindCellCallback;
}
public TreeBuilder With(Action<IEnumerable<object>> onSelectionCallback)
{
m_TreeView.selectionChanged += onSelectionCallback;
return this;
}
public MultiColumnTreeView Build()
{
m_TreeView.Rebuild();
return m_TreeView;
}
}
}
#endif