| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 | 
							- using UnityEditor;
 
- using UnityEditor.IMGUI.Controls;
 
- using UnityEngine;
 
- using System.Collections.Generic;
 
- namespace AssetBundleBrowser
 
- {
 
-     [System.Serializable]
 
-     internal class AssetBundleManageTab 
 
-     {
 
-         [SerializeField]
 
-         TreeViewState m_BundleTreeState;
 
-         [SerializeField]
 
-         TreeViewState m_AssetListState;
 
-         [SerializeField]
 
-         MultiColumnHeaderState m_AssetListMCHState;
 
-         [SerializeField]
 
-         TreeViewState m_BundleDetailState;
 
-         Rect m_Position;
 
-         AssetBundleTree m_BundleTree;
 
-         AssetListTree m_AssetList;
 
-         MessageList m_MessageList;
 
-         BundleDetailList m_DetailsList;
 
-         bool m_ResizingHorizontalSplitter = false;
 
-         bool m_ResizingVerticalSplitterRight = false;
 
-         bool m_ResizingVerticalSplitterLeft = false;
 
-         Rect m_HorizontalSplitterRect, m_VerticalSplitterRectRight, m_VerticalSplitterRectLeft;
 
-         [SerializeField]
 
-         float m_HorizontalSplitterPercent;
 
-         [SerializeField]
 
-         float m_VerticalSplitterPercentRight;
 
-         [SerializeField]
 
-         float m_VerticalSplitterPercentLeft;
 
-         const float k_SplitterWidth = 3f;
 
-         private static float s_UpdateDelay = 0f;
 
-         SearchField m_searchField;
 
-         EditorWindow m_Parent = null;
 
-         internal AssetBundleManageTab()
 
-         {
 
-             m_HorizontalSplitterPercent = 0.4f;
 
-             m_VerticalSplitterPercentRight = 0.7f;
 
-             m_VerticalSplitterPercentLeft = 0.85f;
 
-         }
 
-         internal void OnEnable(Rect pos, EditorWindow parent)
 
-         {
 
-             m_Parent = parent;
 
-             m_Position = pos;
 
-             m_HorizontalSplitterRect = new Rect(
 
-                 (int)(m_Position.x + m_Position.width * m_HorizontalSplitterPercent),
 
-                 m_Position.y,
 
-                 k_SplitterWidth,
 
-                 m_Position.height);
 
-             m_VerticalSplitterRectRight = new Rect(
 
-                 m_HorizontalSplitterRect.x,
 
-                 (int)(m_Position.y + m_HorizontalSplitterRect.height * m_VerticalSplitterPercentRight),
 
-                 (m_Position.width - m_HorizontalSplitterRect.width) - k_SplitterWidth,
 
-                 k_SplitterWidth);
 
-             m_VerticalSplitterRectLeft = new Rect(
 
-                 m_Position.x,
 
-                 (int)(m_Position.y + m_HorizontalSplitterRect.height * m_VerticalSplitterPercentLeft),
 
-                 (m_HorizontalSplitterRect.width) - k_SplitterWidth,
 
-                 k_SplitterWidth);
 
-             m_searchField = new SearchField();
 
-         }
 
-         internal void Update()
 
-         {
 
-             var t = Time.realtimeSinceStartup;
 
-             if (t - s_UpdateDelay > 0.1f ||
 
-                 s_UpdateDelay > t) //something went strangely wrong if this second check is true.
 
-             {
 
-                 s_UpdateDelay = t - 0.001f;
 
-                 if(AssetBundleModel.Model.Update())
 
-                 {
 
-                     m_Parent.Repaint();
 
-                 }
 
-                 if (m_DetailsList != null)
 
-                     m_DetailsList.Update();
 
-                 if (m_AssetList != null)
 
-                     m_AssetList.Update();
 
-             }
 
-         }
 
-         internal void ForceReloadData()
 
-         {
 
-             UpdateSelectedBundles(new List<AssetBundleModel.BundleInfo>());
 
-             SetSelectedItems(new List<AssetBundleModel.AssetInfo>());
 
-             m_BundleTree.SetSelection(new int[0]);
 
-             AssetBundleModel.Model.ForceReloadData(m_BundleTree);
 
-             m_Parent.Repaint();
 
-         }
 
-         internal void OnGUI(Rect pos)
 
-         {
 
-             m_Position = pos;
 
-             if(m_BundleTree == null)
 
-             {
 
-                 if (m_AssetListState == null)
 
-                     m_AssetListState = new TreeViewState();
 
-                 var headerState = AssetListTree.CreateDefaultMultiColumnHeaderState();// multiColumnTreeViewRect.width);
 
-                 if (MultiColumnHeaderState.CanOverwriteSerializedFields(m_AssetListMCHState, headerState))
 
-                     MultiColumnHeaderState.OverwriteSerializedFields(m_AssetListMCHState, headerState);
 
-                 m_AssetListMCHState = headerState;
 
-                 m_AssetList = new AssetListTree(m_AssetListState, m_AssetListMCHState, this);
 
-                 m_AssetList.Reload();
 
-                 m_MessageList = new MessageList();
 
-                 if (m_BundleDetailState == null)
 
-                     m_BundleDetailState = new TreeViewState();
 
-                 m_DetailsList = new BundleDetailList(m_BundleDetailState);
 
-                 m_DetailsList.Reload();
 
-                 if (m_BundleTreeState == null)
 
-                     m_BundleTreeState = new TreeViewState();
 
-                 m_BundleTree = new AssetBundleTree(m_BundleTreeState, this);
 
-                 m_BundleTree.Refresh();
 
-                 m_Parent.Repaint();
 
-             }
 
-             
 
-             HandleHorizontalResize();
 
-             HandleVerticalResize();
 
-             if (AssetBundleModel.Model.BundleListIsEmpty())
 
-             {
 
-                 m_BundleTree.OnGUI(m_Position);
 
-                 var style = new GUIStyle(GUI.skin.label);
 
-                 style.alignment = TextAnchor.MiddleCenter;
 
-                 style.wordWrap = true;
 
-                 GUI.Label(
 
-                     new Rect(m_Position.x + 1f, m_Position.y + 1f, m_Position.width - 2f, m_Position.height - 2f), 
 
-                     new GUIContent(AssetBundleModel.Model.GetEmptyMessage()),
 
-                     style);
 
-             }
 
-             else
 
-             {
 
-                 //Left half
 
-                 var bundleTreeRect = new Rect(
 
-                     m_Position.x,
 
-                     m_Position.y,
 
-                     m_HorizontalSplitterRect.x,
 
-                     m_VerticalSplitterRectLeft.y - m_Position.y);
 
-                 
 
-                 m_BundleTree.OnGUI(bundleTreeRect);
 
-                 m_DetailsList.OnGUI(new Rect(
 
-                     bundleTreeRect.x,
 
-                     bundleTreeRect.y + bundleTreeRect.height + k_SplitterWidth,
 
-                     bundleTreeRect.width,
 
-                     m_Position.height - bundleTreeRect.height - k_SplitterWidth*2));
 
-                 //Right half.
 
-                 float panelLeft = m_HorizontalSplitterRect.x + k_SplitterWidth;
 
-                 float panelWidth = m_VerticalSplitterRectRight.width - k_SplitterWidth * 2;
 
-                 float searchHeight = 20f;
 
-                 float panelTop = m_Position.y + searchHeight;
 
-                 float panelHeight = m_VerticalSplitterRectRight.y - panelTop;
 
-                 OnGUISearchBar(new Rect(panelLeft, m_Position.y, panelWidth, searchHeight));
 
-                 m_AssetList.OnGUI(new Rect(
 
-                     panelLeft,
 
-                     panelTop,
 
-                     panelWidth,
 
-                     panelHeight));
 
-                 m_MessageList.OnGUI(new Rect(
 
-                     panelLeft,
 
-                     panelTop + panelHeight + k_SplitterWidth,
 
-                     panelWidth,
 
-                     (m_Position.height - panelHeight) - k_SplitterWidth * 2));
 
-                 if (m_ResizingHorizontalSplitter || m_ResizingVerticalSplitterRight || m_ResizingVerticalSplitterLeft)
 
-                     m_Parent.Repaint();
 
-             }
 
-         }
 
-         void OnGUISearchBar(Rect rect)
 
-         {
 
-             m_BundleTree.searchString = m_searchField.OnGUI(rect, m_BundleTree.searchString);
 
-             m_AssetList.searchString = m_BundleTree.searchString;
 
-         }
 
-         public bool hasSearch
 
-         {
 
-             get { return m_BundleTree.hasSearch;  }
 
-         }
 
-         private void HandleHorizontalResize()
 
-         {
 
-             m_HorizontalSplitterRect.x = (int)(m_Position.width * m_HorizontalSplitterPercent);
 
-             m_HorizontalSplitterRect.height = m_Position.height;
 
-             EditorGUIUtility.AddCursorRect(m_HorizontalSplitterRect, MouseCursor.ResizeHorizontal);
 
-             if (Event.current.type == EventType.MouseDown && m_HorizontalSplitterRect.Contains(Event.current.mousePosition))
 
-                 m_ResizingHorizontalSplitter = true;
 
-             if (m_ResizingHorizontalSplitter)
 
-             {
 
-                 m_HorizontalSplitterPercent = Mathf.Clamp(Event.current.mousePosition.x / m_Position.width, 0.1f, 0.9f);
 
-                 m_HorizontalSplitterRect.x = (int)(m_Position.width * m_HorizontalSplitterPercent);
 
-             }
 
-             if (Event.current.type == EventType.MouseUp)
 
-                 m_ResizingHorizontalSplitter = false;
 
-         }
 
-         private void HandleVerticalResize()
 
-         {
 
-             m_VerticalSplitterRectRight.x = m_HorizontalSplitterRect.x;
 
-             m_VerticalSplitterRectRight.y = (int)(m_HorizontalSplitterRect.height * m_VerticalSplitterPercentRight);
 
-             m_VerticalSplitterRectRight.width = m_Position.width - m_HorizontalSplitterRect.x;
 
-             m_VerticalSplitterRectLeft.y = (int)(m_HorizontalSplitterRect.height * m_VerticalSplitterPercentLeft);
 
-             m_VerticalSplitterRectLeft.width = m_VerticalSplitterRectRight.width;
 
-             EditorGUIUtility.AddCursorRect(m_VerticalSplitterRectRight, MouseCursor.ResizeVertical);
 
-             if (Event.current.type == EventType.MouseDown && m_VerticalSplitterRectRight.Contains(Event.current.mousePosition))
 
-                 m_ResizingVerticalSplitterRight = true;
 
-             EditorGUIUtility.AddCursorRect(m_VerticalSplitterRectLeft, MouseCursor.ResizeVertical);
 
-             if (Event.current.type == EventType.MouseDown && m_VerticalSplitterRectLeft.Contains(Event.current.mousePosition))
 
-                 m_ResizingVerticalSplitterLeft = true;
 
-             if (m_ResizingVerticalSplitterRight)
 
-             {
 
-                 m_VerticalSplitterPercentRight = Mathf.Clamp(Event.current.mousePosition.y / m_HorizontalSplitterRect.height, 0.2f, 0.98f);
 
-                 m_VerticalSplitterRectRight.y = (int)(m_HorizontalSplitterRect.height * m_VerticalSplitterPercentRight);
 
-             }
 
-             else if (m_ResizingVerticalSplitterLeft)
 
-             {
 
-                 m_VerticalSplitterPercentLeft = Mathf.Clamp(Event.current.mousePosition.y / m_HorizontalSplitterRect.height, 0.25f, 0.98f);
 
-                 m_VerticalSplitterRectLeft.y = (int)(m_HorizontalSplitterRect.height * m_VerticalSplitterPercentLeft);
 
-             }
 
-             if (Event.current.type == EventType.MouseUp)
 
-             {
 
-                 m_ResizingVerticalSplitterRight = false;
 
-                 m_ResizingVerticalSplitterLeft = false;
 
-             }
 
-         }
 
-         internal void UpdateSelectedBundles(IEnumerable<AssetBundleModel.BundleInfo> bundles)
 
-         {
 
-             AssetBundleModel.Model.AddBundlesToUpdate(bundles);
 
-             m_AssetList.SetSelectedBundles(bundles);
 
-             m_DetailsList.SetItems(bundles);
 
-             m_MessageList.SetItems(null);
 
-         }
 
-         internal void SetSelectedItems(IEnumerable<AssetBundleModel.AssetInfo> items)
 
-         {
 
-             m_MessageList.SetItems(items);
 
-         }
 
-     }
 
- }
 
 
  |