unity/EditorPlugin/Profiler/Adapters/ReflectionBasedAdapters/SnapshotNavigation/ProfilerFrameDataTreeViewAdapter.cs (36 lines of code) (raw):
#nullable enable
using JetBrains.Diagnostics;
using JetBrains.Rider.Unity.Editor.Profiler.Adapters.Interfaces;
namespace JetBrains.Rider.Unity.Editor.Profiler.Adapters.ReflectionBasedAdapters.SnapshotNavigation
{
internal class ProfilerFrameDataTreeViewAdapter : IProfilerFrameDataTreeViewAdapter
{
private static readonly ILog ourLogger = Log.GetLog(nameof(ProfilerFrameDataTreeViewAdapter));
private readonly AbstractAdaptersFactory myReflectionBasedAdaptersFactory;
private readonly ProfilerFrameDataTreeViewReflectionData? myReflectionData;
private readonly object? myTreeView;
internal ProfilerFrameDataTreeViewAdapter(object? treeView, ProfilerFrameDataTreeViewReflectionData? reflectionData,
AbstractAdaptersFactory reflectionBasedAdaptersFactory)
{
myTreeView = treeView;
myReflectionData = reflectionData;
myReflectionBasedAdaptersFactory = reflectionBasedAdaptersFactory;
}
public ITreeViewControllerAdapter? GetTreeViewController()
{
if (myReflectionData == null)
{
ourLogger.Verbose($"Can't get {nameof(GetTreeViewController)}: {nameof(myReflectionData)} is null.");
return null;
}
if (myReflectionData.TreeViewControllerFieldInfo == null)
{
ourLogger.Verbose(
$"Can't get {nameof(GetTreeViewController)}: {nameof(myReflectionData.TreeViewControllerFieldInfo)} is null.");
return null;
}
var treeViewController = myReflectionData.TreeViewControllerFieldInfo.GetValue(myTreeView);
return myReflectionBasedAdaptersFactory.CreateTreeViewControllerAdapter(treeViewController);
}
}
}