86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.Collections.Generic;
 | |
| 
 | |
| using UnityEditor.IMGUI.Controls;
 | |
| #if UNITY_6000_2_OR_NEWER
 | |
| using TreeView = UnityEditor.IMGUI.Controls.TreeView<int>;
 | |
| using TreeViewItem = UnityEditor.IMGUI.Controls.TreeViewItem<int>;
 | |
| #endif
 | |
| 
 | |
| namespace Unity.PlasticSCM.Editor.UI.Tree
 | |
| {
 | |
|     internal static class TableViewOperations
 | |
|     {
 | |
|         internal static int GetFirstSelectedRow(
 | |
|             TreeView treeView)
 | |
|         {
 | |
|             IList<int> selectedIds = treeView.GetSelection();
 | |
| 
 | |
|             if (selectedIds.Count == 0)
 | |
|                 return -1;
 | |
| 
 | |
|             return selectedIds[0];
 | |
|         }
 | |
| 
 | |
|         internal static void SelectFirstRow(
 | |
|             TreeView treeView)
 | |
|         {
 | |
|             int rowCount = treeView.GetRows().Count;
 | |
| 
 | |
|             if (rowCount == 0)
 | |
|                 return;
 | |
| 
 | |
|             SetSelectionAndScroll(
 | |
|                 treeView, new List<int> { 1 });
 | |
|         }
 | |
| 
 | |
|         internal static void SelectDefaultRow(
 | |
|             TreeView treeView, int defaultRow)
 | |
|         {
 | |
|             int rowCount = treeView.GetRows().Count;
 | |
| 
 | |
|             if (defaultRow == -1 || rowCount == 0)
 | |
|                 return;
 | |
| 
 | |
|             if (defaultRow >= rowCount)
 | |
|                 defaultRow = rowCount - 1;
 | |
| 
 | |
|             SetSelectionAndScroll(
 | |
|                 treeView, new List<int> { defaultRow });
 | |
|         }
 | |
| 
 | |
|         internal static void SetSelectionAndScroll(
 | |
|             TreeView treeView, List<int> idsToSelect)
 | |
|         {
 | |
|             treeView.SetSelection(
 | |
|                 idsToSelect,
 | |
|                 TreeViewSelectionOptions.FireSelectionChanged |
 | |
|                 TreeViewSelectionOptions.RevealAndFrame);
 | |
|         }
 | |
| 
 | |
|         internal static void ScrollToSelection(
 | |
|             TreeView treeView)
 | |
|         {
 | |
|             if (!treeView.HasSelection())
 | |
|                 return;
 | |
| 
 | |
|             int itemId = treeView.GetSelection()[0];
 | |
| 
 | |
|             if (!IsVisible(itemId, treeView))
 | |
|                 return;
 | |
| 
 | |
|             treeView.FrameItem(itemId);
 | |
|         }
 | |
| 
 | |
|         static bool IsVisible(int id, TreeView treeView)
 | |
|         {
 | |
|             foreach (TreeViewItem item in treeView.GetRows())
 | |
|             {
 | |
|                 if (item.id == id)
 | |
|                     return true;
 | |
|             }
 | |
| 
 | |
|             return false;
 | |
|         }
 | |
|     }
 | |
| }
 |