public void DoGUI(ASHistoryWindow parentWin, Rect theRect, bool focused)
{
if (ms_Styles == null)
{
ms_Styles = new Styles();
}
this.m_ScreenRect = theRect;
Hashtable hashtable = new Hashtable();
foreach (UnityEngine.Object obj2 in Selection.objects)
{
hashtable.Add(obj2.GetInstanceID(), null);
}
this.m_FileViewControlID = GUIUtility.GetControlID(ms_FileViewHash, FocusType.Native);
this.KeyboardGUI(parentWin);
focused &= GUIUtility.keyboardControl == this.m_FileViewControlID;
HierarchyProperty property = new HierarchyProperty(HierarchyType.Assets);
int num2 = property.CountRemaining(this.m_ExpandedArray);
int num3 = !this.DeletedItemsToggle ? 0 : this.m_DelPVstate.lv.totalRows;
Rect viewRect = new Rect(0f, 0f, 1f, (((num2 + 2) + num3) * m_RowHeight) + 16f);
this.m_ScrollPosition = GUI.BeginScrollView(this.m_ScreenRect, this.m_ScrollPosition, viewRect);
theRect.width = (viewRect.height <= this.m_ScreenRect.height) ? theRect.width : (theRect.width - 18f);
int count = Mathf.RoundToInt((this.m_ScrollPosition.y - 6f) - m_RowHeight) / Mathf.RoundToInt(m_RowHeight);
if (count > num2)
{
count = num2;
}
else if (count < 0)
{
count = 0;
this.m_ScrollPosition.y = 0f;
}
float y = 0f;
GUIContent content = new GUIContent();
Event current = Event.current;
GUIStyle s = new GUIStyle(ms_Styles.label);
Texture2D textured = EditorGUIUtility.FindTexture(EditorResourcesUtility.folderIconName);
y = (count * m_RowHeight) + 3f;
float endOffset = this.m_ScreenRect.height + this.m_ScrollPosition.y;
Rect position = new Rect(0f, y, theRect.width, m_RowHeight);
if ((current.type == EventType.MouseDown) && position.Contains(current.mousePosition))
{
this.SelType = SelectionType.All;
GUIUtility.keyboardControl = this.m_FileViewControlID;
this.ScrollTo(0f);
parentWin.DoLocalSelectionChange();
current.Use();
}
content = new GUIContent("Entire Project")
{
image = textured
};
int baseIndent = (int)this.m_BaseIndent;
s.padding.left = 3;
if (Event.current.type == EventType.Repaint)
{
s.Draw(position, content, false, false, this.SelType == SelectionType.All, focused);
}
y += m_RowHeight + 3f;
property.Reset();
property.Skip(count, this.m_ExpandedArray);
while (property.Next(this.m_ExpandedArray) && (y <= endOffset))
{
int instanceID = property.instanceID;
position = new Rect(0f, y, theRect.width, m_RowHeight);
if (Event.current.type == EventType.Repaint)
{
content.text = property.name;
content.image = property.icon;
baseIndent = (int)(this.m_BaseIndent + (this.m_Indent * property.depth));
s.padding.left = baseIndent;
bool on = hashtable.Contains(instanceID);
s.Draw(position, content, false, false, on, focused);
}
if (property.hasChildren)
{
bool flag2 = property.IsExpanded(this.m_ExpandedArray);
GUI.changed = false;
Rect rect3 = new Rect((this.m_BaseIndent + (this.m_Indent * property.depth)) - this.m_FoldoutSize, y, this.m_FoldoutSize, m_RowHeight);
flag2 = GUI.Toggle(rect3, flag2, GUIContent.none, ms_Styles.foldout);
if (GUI.changed)
{
if (Event.current.alt)
{
this.SetExpandedRecurse(instanceID, flag2);
}
else
{
this.SetExpanded(instanceID, flag2);
}
}
}
if (((current.type == EventType.MouseDown) && (Event.current.button == 0)) && position.Contains(Event.current.mousePosition))
{
GUIUtility.keyboardControl = this.m_FileViewControlID;
if (Event.current.clickCount == 2)
{
AssetDatabase.OpenAsset(instanceID);
GUIUtility.ExitGUI();
}
else if (position.Contains(current.mousePosition))
{
this.SelectionClick(property);
}
current.Use();
}
y += m_RowHeight;
}
y += 3f;
this.DoDeletedItemsGUI(parentWin, theRect, s, y, endOffset, focused);
GUI.EndScrollView();
switch (current.type)
{
case EventType.MouseDown:
if ((current.button == 0) && this.m_ScreenRect.Contains(current.mousePosition))
{
GUIUtility.hotControl = this.m_FileViewControlID;
current.Use();
}
break;
case EventType.MouseUp:
if (GUIUtility.hotControl == this.m_FileViewControlID)
{
if (this.m_ScreenRect.Contains(current.mousePosition))
{
Selection.activeObject = null;
}
GUIUtility.hotControl = 0;
current.Use();
}
break;
}
this.HandleFraming();
}