70 lines
1.9 KiB
C#
70 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
using UnityEditor.IMGUI.Controls;
|
|
using UnityEngine;
|
|
#if UNITY_6000_2_OR_NEWER
|
|
using TreeView = UnityEditor.IMGUI.Controls.TreeView<int>;
|
|
using TreeViewItem = UnityEditor.IMGUI.Controls.TreeViewItem<int>;
|
|
using TreeViewState = UnityEditor.IMGUI.Controls.TreeViewState<int>;
|
|
#endif
|
|
|
|
namespace Unity.PlasticSCM.Editor.UI.Tree
|
|
{
|
|
internal class PlasticTreeView : TreeView
|
|
{
|
|
internal PlasticTreeView(bool showCustomBackground = true)
|
|
: base(new TreeViewState())
|
|
{
|
|
mShowCustomBackground = showCustomBackground;
|
|
|
|
rowHeight = UnityConstants.TREEVIEW_ROW_HEIGHT;
|
|
treeViewRect = new Rect(0, 0, 0, rowHeight);
|
|
showAlternatingRowBackgrounds = false;
|
|
}
|
|
|
|
public override IList<TreeViewItem> GetRows()
|
|
{
|
|
return mRows;
|
|
}
|
|
|
|
internal Rect GetTreeViewRect()
|
|
{
|
|
return treeViewRect;
|
|
}
|
|
|
|
internal Rect GetRowRectByIndex(int rowIndex)
|
|
{
|
|
return GetRowRect(rowIndex);
|
|
}
|
|
|
|
protected override TreeViewItem BuildRoot()
|
|
{
|
|
return new TreeViewItem(0, -1, string.Empty);
|
|
}
|
|
|
|
protected override void BeforeRowsGUI()
|
|
{
|
|
if (!mShowCustomBackground)
|
|
return;
|
|
|
|
int firstRowVisible;
|
|
int lastRowVisible;
|
|
GetFirstAndLastVisibleRows(out firstRowVisible, out lastRowVisible);
|
|
|
|
GUI.DrawTexture(new Rect(0,
|
|
firstRowVisible * rowHeight,
|
|
GetRowRect(0).width + 1000,
|
|
(lastRowVisible * rowHeight) + 1000),
|
|
Images.GetTreeviewBackgroundTexture());
|
|
|
|
DrawTreeViewItem.InitializeStyles();
|
|
base.BeforeRowsGUI();
|
|
}
|
|
|
|
readonly bool mShowCustomBackground;
|
|
|
|
protected List<TreeViewItem> mRows = new List<TreeViewItem>();
|
|
}
|
|
}
|