private void MarkBoldItemsByGUID(string guid)
 {
     for (int i = 0; i < this.m_GUIItems.Length; i++)
     {
         ASHistoryWindow.GUIHistoryListItem gUIHistoryListItem = this.m_GUIItems[i];
         ParentViewState assets = gUIHistoryListItem.assets;
         int             num    = 0;
         gUIHistoryListItem.boldAssets = new bool[assets.GetLineCount()];
         for (int j = 0; j < assets.folders.Length; j++)
         {
             ParentViewFolder parentViewFolder = assets.folders[j];
             if (parentViewFolder.guid == guid)
             {
                 gUIHistoryListItem.boldAssets[num] = true;
             }
             num++;
             for (int k = 0; k < parentViewFolder.files.Length; k++)
             {
                 if (parentViewFolder.files[k].guid == guid)
                 {
                     gUIHistoryListItem.boldAssets[num] = true;
                 }
                 num++;
             }
         }
     }
 }
        private int CheckParentViewInFilterAndMarkBoldItems(GUIHistoryListItem item, string text)
        {
            ParentViewState assets = item.assets;
            int             num    = -1;
            int             index  = 0;

            for (int i = 0; i < assets.folders.Length; i++)
            {
                ParentViewFolder folder = assets.folders[i];
                if (folder.name.IndexOf(text, StringComparison.InvariantCultureIgnoreCase) != -1)
                {
                    item.boldAssets[index] = true;
                    if (num == -1)
                    {
                        num = index;
                    }
                }
                index++;
                for (int j = 0; j < folder.files.Length; j++)
                {
                    if (folder.files[j].name.IndexOf(text, StringComparison.InvariantCultureIgnoreCase) != -1)
                    {
                        item.boldAssets[index] = true;
                        if (num == -1)
                        {
                            num = index;
                        }
                    }
                    index++;
                }
            }
            return(num);
        }
 private void MarkBoldItemsByGUID(string guid)
 {
     for (int i = 0; i < this.m_GUIItems.Length; i++)
     {
         GUIHistoryListItem item   = this.m_GUIItems[i];
         ParentViewState    assets = item.assets;
         int index = 0;
         item.boldAssets = new bool[assets.GetLineCount()];
         for (int j = 0; j < assets.folders.Length; j++)
         {
             ParentViewFolder folder = assets.folders[j];
             if (folder.guid == guid)
             {
                 item.boldAssets[index] = true;
             }
             index++;
             for (int k = 0; k < folder.files.Length; k++)
             {
                 if (folder.files[k].guid == guid)
                 {
                     item.boldAssets[index] = true;
                 }
                 index++;
             }
         }
     }
 }
 private void AddAssetItem(string guid, string pathName, bool isDir, ChangeFlags changeFlags, int changeset)
 {
     if (pathName == string.Empty)
     {
         return;
     }
     if (isDir)
     {
         string str   = ParentViewFolder.MakeNiceName(pathName);
         int    index = ParentViewState.IndexOf(this.folders, str);
         if (index == -1)
         {
             ArrayUtility.Add <ParentViewFolder>(ref this.folders, new ParentViewFolder(str, guid, changeFlags));
         }
         else
         {
             this.folders[index].changeFlags = changeFlags;
             this.folders[index].guid        = guid;
         }
     }
     else
     {
         string           str1   = ParentViewFolder.MakeNiceName(FileUtil.DeleteLastPathNameComponent(pathName));
         string           str2   = pathName.Substring(pathName.LastIndexOf("/") + 1);
         int              index1 = ParentViewState.IndexOf(this.folders, str1);
         ParentViewFolder parentViewFolder;
         if (index1 == -1)
         {
             parentViewFolder = new ParentViewFolder(str1, AssetServer.GetParentGUID(guid, changeset));
             ArrayUtility.Add <ParentViewFolder>(ref this.folders, parentViewFolder);
         }
         else
         {
             parentViewFolder = this.folders[index1];
         }
         int index2 = ParentViewState.IndexOf(parentViewFolder.files, str2);
         if (index2 != -1)
         {
             if ((parentViewFolder.files[index2].changeFlags & ChangeFlags.Deleted) != ChangeFlags.None)
             {
                 return;
             }
             parentViewFolder.files[index2].guid        = guid;
             parentViewFolder.files[index2].changeFlags = changeFlags;
         }
         else
         {
             ArrayUtility.Add <ParentViewFile>(ref parentViewFolder.files, new ParentViewFile(str2, guid, changeFlags));
         }
     }
 }
Exemple #5
0
		private void AddAssetItem(string guid, string pathName, bool isDir, ChangeFlags changeFlags, int changeset)
		{
			if (!(pathName == string.Empty))
			{
				if (isDir)
				{
					string text = ParentViewFolder.MakeNiceName(pathName);
					int num = ParentViewState.IndexOf(this.folders, text);
					if (num == -1)
					{
						ParentViewFolder item = new ParentViewFolder(text, guid, changeFlags);
						ArrayUtility.Add<ParentViewFolder>(ref this.folders, item);
					}
					else
					{
						this.folders[num].changeFlags = changeFlags;
						this.folders[num].guid = guid;
					}
				}
				else
				{
					string text2 = ParentViewFolder.MakeNiceName(FileUtil.DeleteLastPathNameComponent(pathName));
					string text3 = pathName.Substring(pathName.LastIndexOf("/") + 1);
					int num2 = ParentViewState.IndexOf(this.folders, text2);
					ParentViewFolder parentViewFolder;
					if (num2 == -1)
					{
						parentViewFolder = new ParentViewFolder(text2, AssetServer.GetParentGUID(guid, changeset));
						ArrayUtility.Add<ParentViewFolder>(ref this.folders, parentViewFolder);
					}
					else
					{
						parentViewFolder = this.folders[num2];
					}
					num2 = ParentViewState.IndexOf(parentViewFolder.files, text3);
					if (num2 != -1)
					{
						if ((parentViewFolder.files[num2].changeFlags & ChangeFlags.Deleted) == ChangeFlags.None)
						{
							parentViewFolder.files[num2].guid = guid;
							parentViewFolder.files[num2].changeFlags = changeFlags;
						}
					}
					else
					{
						ArrayUtility.Add<ParentViewFile>(ref parentViewFolder.files, new ParentViewFile(text3, guid, changeFlags));
					}
				}
			}
		}
        private int MarkBoldItemsBySelection(ASHistoryWindow.GUIHistoryListItem item)
        {
            List <string>   list   = new List <string>();
            ParentViewState assets = item.assets;
            int             num    = -1;
            int             num2   = 0;

            if (Selection.instanceIDs.Length == 0)
            {
                return(0);
            }
            int[] instanceIDs = Selection.instanceIDs;
            for (int i = 0; i < instanceIDs.Length; i++)
            {
                int instanceID = instanceIDs[i];
                list.Add(AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(instanceID)));
            }
            for (int j = 0; j < assets.folders.Length; j++)
            {
                ParentViewFolder parentViewFolder = assets.folders[j];
                if (list.Contains(parentViewFolder.guid))
                {
                    item.boldAssets[num2] = true;
                    if (num == -1)
                    {
                        num = num2;
                    }
                }
                num2++;
                for (int k = 0; k < parentViewFolder.files.Length; k++)
                {
                    if (list.Contains(parentViewFolder.files[k].guid))
                    {
                        item.boldAssets[num2] = true;
                        if (num == -1)
                        {
                            num = num2;
                        }
                    }
                    num2++;
                }
            }
            return(num);
        }
        private int MarkBoldItemsBySelection(GUIHistoryListItem item)
        {
            List <string>   list   = new List <string>();
            ParentViewState assets = item.assets;
            int             num    = -1;
            int             index  = 0;

            if (Selection.instanceIDs.Length == 0)
            {
                return(0);
            }
            foreach (int num3 in Selection.instanceIDs)
            {
                list.Add(AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(num3)));
            }
            for (int i = 0; i < assets.folders.Length; i++)
            {
                ParentViewFolder folder = assets.folders[i];
                if (list.Contains(folder.guid))
                {
                    item.boldAssets[index] = true;
                    if (num == -1)
                    {
                        num = index;
                    }
                }
                index++;
                for (int j = 0; j < folder.files.Length; j++)
                {
                    if (list.Contains(folder.files[j].guid))
                    {
                        item.boldAssets[index] = true;
                        if (num == -1)
                        {
                            num = index;
                        }
                    }
                    index++;
                }
            }
            return(num);
        }
 private bool ParentViewGUI(ParentViewState pvState, ParentViewState anotherPvState, ref bool hasSelection)
 {
   bool flag1 = false;
   EditorGUIUtility.SetIconSize(this.iconSize);
   ListViewState lv = pvState.lv;
   bool shift = Event.current.shift;
   bool actionKey = EditorGUI.actionKey;
   int row = lv.row;
   int folder1 = -1;
   int file = -1;
   bool flag2 = false;
   foreach (ListViewElement listViewElement in ListViewGUILayout.ListView(lv, ListViewOptions.wantsToStartCustomDrag | ListViewOptions.wantsToAcceptCustomDrag, this.dragTitle, GUIStyle.none, new GUILayoutOption[0]))
   {
     if (folder1 == -1 && !pvState.IndexToFolderAndFile(listViewElement.row, ref folder1, ref file))
     {
       flag1 = true;
       break;
     }
     if (GUIUtility.keyboardControl == lv.ID && Event.current.type == EventType.KeyDown && actionKey)
       Event.current.Use();
     ParentViewFolder folder2 = pvState.folders[folder1];
     if (pvState.selectedItems[listViewElement.row] && Event.current.type == EventType.Repaint)
       ASCommitWindow.constants.entrySelected.Draw(listViewElement.position, false, false, false, false);
     if (ListViewGUILayout.HasMouseUp(listViewElement.position))
     {
       if (!shift && !actionKey)
         flag2 |= ListViewGUILayout.MultiSelection(row, pvState.lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
     }
     else if (ListViewGUILayout.HasMouseDown(listViewElement.position))
     {
       if (Event.current.clickCount == 2)
       {
         this.DoShowMyDiff(false);
         GUIUtility.ExitGUI();
       }
       else
       {
         if (!pvState.selectedItems[listViewElement.row] || shift || actionKey)
           flag2 |= ListViewGUILayout.MultiSelection(row, listViewElement.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
         pvState.selectedFile = file;
         pvState.selectedFolder = folder1;
         lv.row = listViewElement.row;
       }
     }
     else if (ListViewGUILayout.HasMouseDown(listViewElement.position, 1))
     {
       if (!pvState.selectedItems[listViewElement.row])
       {
         flag2 = true;
         pvState.ClearSelection();
         pvState.selectedItems[listViewElement.row] = true;
         pvState.selectedFile = file;
         pvState.selectedFolder = folder1;
         lv.row = listViewElement.row;
       }
       this.dropDownMenuItems[0] = pvState != this.pv1state ? "<<<" : ">>>";
       GUIUtility.hotControl = 0;
       EditorUtility.DisplayCustomMenu(new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 1f, 1f), this.dropDownMenuItems, (int[]) null, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), (object) null);
       Event.current.Use();
     }
     ChangeFlags changeFlags;
     if (file != -1)
     {
       Texture2D texture2D = AssetDatabase.GetCachedIcon(folder2.name + "/" + folder2.files[file].name) as Texture2D;
       if ((UnityEngine.Object) texture2D == (UnityEngine.Object) null)
         texture2D = InternalEditorUtility.GetIconForFile(folder2.files[file].name);
       GUILayout.Label(new GUIContent(folder2.files[file].name, (Texture) texture2D), ASCommitWindow.constants.element, new GUILayoutOption[0]);
       changeFlags = folder2.files[file].changeFlags;
     }
     else
     {
       GUILayout.Label(folder2.name, ASCommitWindow.constants.header, new GUILayoutOption[0]);
       changeFlags = folder2.changeFlags;
     }
     GUIContent content = (GUIContent) null;
     if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Undeleted) || ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Created))
       content = ASMainWindow.constants.badgeNew;
     else if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Deleted))
       content = ASMainWindow.constants.badgeDelete;
     else if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Renamed) || ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Moved))
       content = ASMainWindow.constants.badgeMove;
     if (content != null && Event.current.type == EventType.Repaint)
     {
       Rect position = new Rect((float) ((double) listViewElement.position.x + (double) listViewElement.position.width - (double) content.image.width - 5.0), listViewElement.position.y + listViewElement.position.height / 2f - (float) (content.image.height / 2), (float) content.image.width, (float) content.image.height);
       EditorGUIUtility.SetIconSize(Vector2.zero);
       GUIStyle.none.Draw(position, content, false, false, false, false);
       EditorGUIUtility.SetIconSize(this.iconSize);
     }
     pvState.NextFileFolder(ref folder1, ref file);
   }
   if (!flag1)
   {
     if (GUIUtility.keyboardControl == lv.ID)
     {
       if (Event.current.type == EventType.ValidateCommand && Event.current.commandName == "SelectAll")
         Event.current.Use();
       else if (Event.current.type == EventType.ExecuteCommand && Event.current.commandName == "SelectAll")
       {
         for (int index = 0; index < pvState.selectedItems.Length; ++index)
           pvState.selectedItems[index] = true;
         flag2 = true;
         Event.current.Use();
       }
     }
     if (lv.customDraggedFromID != 0 && lv.customDraggedFromID == anotherPvState.lv.ID)
       this.DoTransferAll(anotherPvState, pvState, pvState.selectedFolder, pvState.selectedFile);
     if (GUIUtility.keyboardControl == lv.ID && !actionKey)
     {
       if (lv.selectionChanged)
       {
         flag2 |= ListViewGUILayout.MultiSelection(row, lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
         if (!pvState.IndexToFolderAndFile(lv.row, ref pvState.selectedFolder, ref pvState.selectedFile))
           flag1 = true;
       }
       else if (pvState.selectedFolder != -1 && Event.current.type == EventType.KeyDown && (GUIUtility.keyboardControl == lv.ID && Event.current.keyCode == KeyCode.Return))
       {
         this.DoTransferAll(pvState, anotherPvState, pvState.selectedFolder, pvState.selectedFile);
         ListViewGUILayout.MultiSelection(row, lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
         pvState.IndexToFolderAndFile(lv.row, ref pvState.selectedFolder, ref pvState.selectedFile);
         Event.current.Use();
         flag1 = true;
       }
     }
     if (lv.selectionChanged || flag2)
     {
       if (pvState.IndexToFolderAndFile(lv.row, ref folder1, ref file))
         this.dragTitle = file != -1 ? pvState.folders[folder1].files[file].name : pvState.folders[folder1].name;
       anotherPvState.ClearSelection();
       anotherPvState.lv.row = -1;
       anotherPvState.selectedFile = -1;
       anotherPvState.selectedFolder = -1;
       this.MySelectionToGlobalSelection();
     }
   }
   EditorGUIUtility.SetIconSize(Vector2.zero);
   return !flag1;
 }
 private bool IsLastOne(int f, int fl, ParentViewState st)
 {
     return (((st.folders.Length - 1) == f) && ((st.folders[f].files.Length - 1) == fl));
 }
 public static bool SomethingDiscardableSelected(ParentViewState st)
 {
   int num = 0;
   foreach (ParentViewFolder folder in st.folders)
   {
     if (st.selectedItems[num++])
       return true;
     foreach (ParentViewFile file in folder.files)
     {
       if (st.selectedItems[num++] && ASCommitWindow.IsDiscardableAsset(file.guid, file.changeFlags))
         return true;
     }
   }
   return false;
 }
 private static bool AllFolderWouldBeMovedAnyway(ParentViewState pvState, string guid)
 {
   int num1 = 0;
   for (int index1 = 0; index1 < pvState.folders.Length; ++index1)
   {
     if (pvState.folders[index1].guid == guid)
     {
       bool flag1 = true;
       bool flag2 = true;
       bool[] selectedItems = pvState.selectedItems;
       int index2 = num1;
       int num2 = 1;
       int num3 = index2 + num2;
       bool flag3 = selectedItems[index2];
       for (int index3 = 0; index3 < pvState.folders[index1].files.Length; ++index3)
       {
         if (pvState.selectedItems[num3++])
           flag1 = false;
         else
           flag2 = false;
       }
       if (!flag3)
         return false;
       if (!flag2)
         return flag1;
       return true;
     }
     num1 += 1 + pvState.folders[index1].files.Length;
   }
   return false;
 }
		private void OnGUI()
		{
			if (EditorSettings.externalVersionControl != ExternalVersionControl.Disabled && EditorSettings.externalVersionControl != ExternalVersionControl.AssetServer)
			{
				GUILayout.FlexibleSpace();
				GUILayout.BeginHorizontal(new GUILayoutOption[0]);
				GUILayout.FlexibleSpace();
				GUILayout.Label("Asset Server is disabled when external version control is used. Go to 'Edit -> Project Settings -> Editor' to re-enable it.", new GUILayoutOption[0]);
				GUILayout.FlexibleSpace();
				GUILayout.EndHorizontal();
				GUILayout.FlexibleSpace();
				return;
			}
			if (ASMainWindow.constants == null)
			{
				ASMainWindow.constants = new ASMainWindow.Constants();
			}
			if (!this.m_CheckedMaint && Event.current.type != EventType.Layout)
			{
				if (!InternalEditorUtility.HasPro())
				{
					base.Close();
					GUIUtility.ExitGUI();
				}
				this.m_CheckedMaint = true;
			}
			if (this.maxNickLength == 1 && this.sharedChangesets != null)
			{
				for (int i = 0; i < this.sharedChangesets.Length; i++)
				{
					int num = (int)ASMainWindow.constants.serverUpdateInfo.CalcSize(new GUIContent(this.sharedChangesets[i].owner)).x;
					if (num > this.maxNickLength)
					{
						this.maxNickLength = num;
					}
				}
				this.changesetContents = new GUIContent[this.sharedChangesets.Length];
				ParentViewState parentViewState = new ParentViewState();
				for (int j = 0; j < this.changesetContents.Length; j++)
				{
					int num2 = 15;
					Changeset changeset = this.sharedChangesets[j];
					string text = changeset.message.Split(new char[]
					{
						'\n'
					})[0];
					text = ((text.Length >= 45) ? (text.Substring(0, 42) + "...") : text);
					string text2 = string.Format("[{0} {1}] {2}", changeset.date, changeset.owner, text);
					num2--;
					parentViewState.Clear();
					parentViewState.AddAssetItems(changeset);
					for (int k = 0; k < parentViewState.folders.Length; k++)
					{
						if (--num2 == 0 && !this.IsLastOne(k, 0, parentViewState))
						{
							text2 += "\n(and more...)";
							break;
						}
						text2 = text2 + "\n" + parentViewState.folders[k].name;
						for (int l = 0; l < parentViewState.folders[k].files.Length; l++)
						{
							if (--num2 == 0 && !this.IsLastOne(k, l, parentViewState))
							{
								text2 += "\n(and more...)";
								break;
							}
							text2 = text2 + "\n\t" + parentViewState.folders[k].files[l].name;
						}
						if (num2 == 0)
						{
							break;
						}
					}
					this.changesetContents[j] = new GUIContent(this.sharedChangesets[j].message.Split(new char[]
					{
						'\n'
					})[0], text2);
				}
				if (this.maxNickLength == 1)
				{
					this.maxNickLength = 0;
				}
			}
			if (AssetServer.IsControllerBusy() != 0)
			{
				base.Repaint();
				return;
			}
			if (this.isInitialUpdate)
			{
				this.isInitialUpdate = false;
				this.SwitchSelectedPage(ASMainWindow.Page.Overview);
			}
			if (Event.current.type == EventType.ExecuteCommand && Event.current.commandName == "Find")
			{
				this.SetShownSearchField(this.m_SearchToShow);
				Event.current.Use();
			}
			GUILayout.BeginHorizontal(EditorStyles.toolbar, new GUILayoutOption[0]);
			int num3 = -1;
			bool enabled = GUI.enabled;
			if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Overview, this.pageTitles[0], EditorStyles.toolbarButton))
			{
				num3 = 0;
			}
			GUI.enabled = (!this.needsSetup && this.sharedChangesets != null && this.sharedChangesets.Length != 0 && enabled);
			if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Update, this.pageTitles[1], EditorStyles.toolbarButton))
			{
				num3 = 1;
			}
			GUI.enabled = (!this.needsSetup && this.pv.lv.totalRows != 0 && enabled);
			if (this.selectedPage > ASMainWindow.Page.Commit)
			{
				if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Commit, this.pageTitles[2], EditorStyles.toolbarButton))
				{
					num3 = 2;
				}
				GUI.enabled = enabled;
				if (this.ToolbarToggle(this.selectedPage > ASMainWindow.Page.Commit, this.pageTitles[3], EditorStyles.toolbarButton))
				{
					num3 = 3;
				}
			}
			else
			{
				if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Commit, this.pageTitles[2], EditorStyles.toolbarButton))
				{
					num3 = 2;
				}
				GUI.enabled = enabled;
			}
			if (num3 != -1 && num3 != (int)this.selectedPage)
			{
				if (this.selectedPage == ASMainWindow.Page.Commit)
				{
					this.NotifyClosingCommit();
				}
				if (num3 <= 2)
				{
					this.SwitchSelectedPage((ASMainWindow.Page)num3);
					GUIUtility.ExitGUI();
				}
			}
			GUILayout.FlexibleSpace();
			if (this.selectedPage == ASMainWindow.Page.History)
			{
				this.DoSearchToggle(ASMainWindow.ShowSearchField.HistoryList);
			}
			if (!this.needsSetup)
			{
				switch (this.selectedPage)
				{
				case ASMainWindow.Page.Overview:
				case ASMainWindow.Page.Update:
				case ASMainWindow.Page.History:
					if (GUILayout.Button("Refresh", EditorStyles.toolbarButton, new GUILayoutOption[0]))
					{
						this.ActionRefresh();
						GUIUtility.ExitGUI();
					}
					break;
				}
			}
			GUILayout.EndHorizontal();
			EditorGUIUtility.SetIconSize(this.iconSize);
			this.DoSelectedPageGUI();
			EditorGUIUtility.SetIconSize(Vector2.zero);
			if (Event.current.type == EventType.ContextClick)
			{
				GUIUtility.hotControl = 0;
				Rect position = new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 1f, 1f);
				EditorUtility.DisplayCustomMenu(position, (!this.needsSetup) ? this.dropDownMenuItems : this.unconfiguredDropDownMenuItems, null, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), null);
				Event.current.Use();
			}
		}
 public static bool MarkAllFolderDependenciesForDiscarding(ParentViewState pvState, ParentViewState anotherPvState)
 {
   bool flag1 = false;
   bool flag2 = false;
   int index1 = 0;
   List<string> stringList = new List<string>();
   for (int index2 = 0; index2 < pvState.folders.Length; ++index2)
   {
     ParentViewFolder folder = pvState.folders[index2];
     if (ASCommitWindow.HasFlag(folder.changeFlags, ChangeFlags.Deleted))
     {
       bool flag3 = false;
       for (int index3 = 1; index3 <= folder.files.Length; ++index3)
       {
         if (pvState.selectedItems[index1 + index3])
         {
           flag3 = true;
           pvState.selectedItems[index1] = true;
           stringList.Add(folder.guid);
           break;
         }
       }
       if (pvState.selectedItems[index1] || flag3)
       {
         string str = folder.guid;
         while (AssetServer.IsGUIDValid(str = AssetServer.GetParentGUID(str, -1)) != 0)
         {
           int folderIndex = ASCommitWindow.IndexOfFolderWithGUID(pvState.folders, str);
           if (folderIndex != -1)
           {
             int totalIndex = ASCommitWindow.FolderIndexToTotalIndex(pvState.folders, folderIndex);
             if (!pvState.selectedItems[totalIndex] && ASCommitWindow.HasFlag(pvState.folders[totalIndex].changeFlags, ChangeFlags.Deleted))
             {
               pvState.selectedItems[totalIndex] = true;
               stringList.Add(str);
               flag1 = true;
             }
           }
           else
             break;
         }
       }
     }
     else if (!ASCommitWindow.AllFolderWouldBeMovedAnyway(pvState, folder.guid))
     {
       if (ASCommitWindow.AnyOfTheParentsIsSelected(ref pvState, folder.guid))
       {
         pvState.selectedItems[index1] = true;
         stringList.Add(folder.guid);
         for (int index3 = 1; index3 <= folder.files.Length; ++index3)
           pvState.selectedItems[index1 + index3] = true;
         flag1 = true;
       }
     }
     else
     {
       for (int index3 = 1; index3 <= folder.files.Length; ++index3)
       {
         if (!pvState.selectedItems[index1 + index3])
           pvState.selectedItems[index1 + index3] = true;
       }
       stringList.Add(folder.guid);
     }
     index1 += 1 + pvState.folders[index2].files.Length;
   }
   if (anotherPvState != null)
   {
     for (int index2 = 0; index2 < anotherPvState.folders.Length; ++index2)
     {
       ParentViewFolder folder = anotherPvState.folders[index2];
       if (ASCommitWindow.AnyOfTheParentsIsSelected(ref pvState, folder.guid))
         stringList.Add(folder.guid);
     }
     for (int index2 = anotherPvState.folders.Length - 1; index2 >= 0; --index2)
     {
       if (stringList.Contains(anotherPvState.folders[index2].guid))
       {
         ParentViewFolder folder1 = anotherPvState.folders[index2];
         int index3 = ASCommitWindow.FolderSelectionIndexFromGUID(pvState.folders, folder1.guid);
         if (index3 != -1)
         {
           ParentViewFolder folder2 = pvState.folders[index3];
           int length = pvState.lv.totalRows - index3 - 1 - folder2.files.Length;
           int sourceIndex = index3 + 1 + folder2.files.Length;
           Array.Copy((Array) pvState.selectedItems, sourceIndex, (Array) pvState.selectedItems, sourceIndex + folder1.files.Length, length);
           ArrayUtility.AddRange<ParentViewFile>(ref folder2.files, folder1.files);
           for (int index4 = 1; index4 <= folder2.files.Length; ++index4)
             pvState.selectedItems[index3 + index4] = true;
           Array.Sort<ParentViewFile>(folder2.files, new Comparison<ParentViewFile>(ParentViewState.CompareViewFile));
         }
         else
         {
           int index4 = 0;
           for (int index5 = 0; index5 < pvState.folders.Length && ParentViewState.CompareViewFolder(pvState.folders[index4], folder1) <= 0; ++index5)
             index4 += 1 + pvState.folders[index5].files.Length;
           int length = pvState.lv.totalRows - index4;
           int sourceIndex = index4;
           Array.Copy((Array) pvState.selectedItems, sourceIndex, (Array) pvState.selectedItems, sourceIndex + 1 + folder1.files.Length, length);
           ArrayUtility.Add<ParentViewFolder>(ref pvState.folders, folder1);
           for (int index5 = 0; index5 <= folder1.files.Length; ++index5)
             pvState.selectedItems[index4 + index5] = true;
           flag2 = true;
         }
         ArrayUtility.RemoveAt<ParentViewFolder>(ref anotherPvState.folders, index2);
         flag1 = true;
       }
     }
     anotherPvState.SetLineCount();
   }
   pvState.SetLineCount();
   if (flag2)
     Array.Sort<ParentViewFolder>(pvState.folders, new Comparison<ParentViewFolder>(ParentViewState.CompareViewFolder));
   return flag1;
 }
 private static bool AllFolderWouldBeMovedAnyway(ParentViewState pvState, string guid)
 {
     int num = 0;
     for (int i = 0; i < pvState.folders.Length; i++)
     {
         if (pvState.folders[i].guid == guid)
         {
             bool flag = true;
             bool flag2 = true;
             bool flag3 = pvState.selectedItems[num++];
             for (int j = 0; j < pvState.folders[i].files.Length; j++)
             {
                 if (pvState.selectedItems[num++])
                 {
                     flag = false;
                 }
                 else
                 {
                     flag2 = false;
                 }
             }
             return (flag3 && (flag2 || flag));
         }
         num += 1 + pvState.folders[i].files.Length;
     }
     return false;
 }
		internal static bool MarkSelected(ParentViewState activeState, List<string> guids)
		{
			int num = 0;
			bool flag = false;
			ParentViewFolder[] folders = activeState.folders;
			for (int i = 0; i < folders.Length; i++)
			{
				ParentViewFolder parentViewFolder = folders[i];
				bool flag2 = guids.Contains(parentViewFolder.guid);
				activeState.selectedItems[num++] = flag2;
				flag |= flag2;
				ParentViewFile[] files = parentViewFolder.files;
				for (int j = 0; j < files.Length; j++)
				{
					ParentViewFile parentViewFile = files[j];
					flag2 = guids.Contains(parentViewFile.guid);
					activeState.selectedItems[num++] = flag2;
					flag |= flag2;
				}
			}
			return flag;
		}
 internal static List<string> GetParentViewSelectedItems(ParentViewState state, bool includeFolders, bool excludeUndiscardableOnes)
 {
   List<string> stringList = new List<string>();
   int index1 = 0;
   for (int index2 = 0; index2 < state.folders.Length; ++index2)
   {
     ParentViewFolder folder = state.folders[index2];
     bool flag1 = true;
     bool flag2 = true;
     int index3 = index1++;
     int count = stringList.Count;
     for (int index4 = 0; index4 < folder.files.Length; ++index4)
     {
       if (state.selectedItems[index1])
       {
         if (!excludeUndiscardableOnes || ASCommitWindow.IsDiscardableAsset(folder.files[index4].guid, folder.files[index4].changeFlags))
         {
           stringList.Add(folder.files[index4].guid);
           flag1 = false;
         }
       }
       else
         flag2 = false;
       ++index1;
     }
     if (includeFolders && state.selectedItems[index3] && (flag1 || flag2) && (AssetServer.IsGUIDValid(folder.guid) != 0 && count <= stringList.Count))
       stringList.Insert(count, folder.guid);
   }
   return stringList;
 }
		private bool MarkDependantFiles(ParentViewState pvState)
		{
			string[] array = new string[0];
			bool result = false;
			if (pvState == this.pv1state)
			{
				array = AssetServer.CollectAllDependencies(ASCommitWindow.GetParentViewSelectedItems(this.pv1state, false, false).ToArray());
				if (array.Length != 0)
				{
					int i = 1;
					int num = 0;
					while (i < pvState.lv.totalRows)
					{
						int j = 0;
						while (j < pvState.folders[num].files.Length)
						{
							if (!pvState.selectedItems[i])
							{
								for (int k = 0; k < array.Length; k++)
								{
									if (array[k] == pvState.folders[num].files[j].guid)
									{
										pvState.selectedItems[i] = true;
										result = true;
										break;
									}
								}
							}
							j++;
							i++;
						}
						num++;
						i++;
					}
				}
			}
			return result;
		}
		private void DoTransferAll(ParentViewState pvState, ParentViewState anotherPvState, int selFolder, int selFile)
		{
			List<string> list = new List<string>();
			bool flag = this.MarkDependantFiles(pvState);
			int i = pvState.lv.totalRows - 1;
			for (int j = pvState.folders.Length - 1; j >= 0; j--)
			{
				ParentViewFolder parentViewFolder = pvState.folders[j];
				bool flag2 = false;
				for (int k = parentViewFolder.files.Length - 1; k >= -1; k--)
				{
					if (!list.Contains(parentViewFolder.guid) && pvState.selectedItems[i])
					{
						if (k != -1 || !flag2)
						{
							flag |= this.DoTransfer(ref pvState.folders, ref anotherPvState.folders, j, k, ref list, pvState == this.pv1state);
						}
						flag2 = true;
					}
					i--;
				}
			}
			for (i = pvState.folders.Length - 1; i >= 0; i--)
			{
				if (list.Contains(pvState.folders[i].guid))
				{
					list.Remove(pvState.folders[i].guid);
					ArrayUtility.RemoveAt<ParentViewFolder>(ref pvState.folders, i);
				}
			}
			this.pv1state.SetLineCount();
			this.pv2state.SetLineCount();
			this.pv1state.ClearSelection();
			this.pv2state.ClearSelection();
			pvState.selectedFile = -1;
			pvState.selectedFolder = -1;
			AssetServer.SetSelectionFromGUID(string.Empty);
			this.lastTransferMovedDependencies = flag;
		}
		public static bool MarkAllFolderDependenciesForDiscarding(ParentViewState pvState, ParentViewState anotherPvState)
		{
			bool result = false;
			bool flag = false;
			int num = 0;
			List<string> list = new List<string>();
			for (int i = 0; i < pvState.folders.Length; i++)
			{
				ParentViewFolder parentViewFolder = pvState.folders[i];
				if (ASCommitWindow.HasFlag(parentViewFolder.changeFlags, ChangeFlags.Deleted))
				{
					bool flag2 = false;
					for (int j = 1; j <= parentViewFolder.files.Length; j++)
					{
						if (pvState.selectedItems[num + j])
						{
							flag2 = true;
							pvState.selectedItems[num] = true;
							list.Add(parentViewFolder.guid);
							break;
						}
					}
					if (pvState.selectedItems[num] || flag2)
					{
						string text = parentViewFolder.guid;
						while (AssetServer.IsGUIDValid(text = AssetServer.GetParentGUID(text, -1)) != 0)
						{
							int num2 = ASCommitWindow.IndexOfFolderWithGUID(pvState.folders, text);
							if (num2 == -1)
							{
								break;
							}
							num2 = ASCommitWindow.FolderIndexToTotalIndex(pvState.folders, num2);
							if (!pvState.selectedItems[num2] && ASCommitWindow.HasFlag(pvState.folders[num2].changeFlags, ChangeFlags.Deleted))
							{
								pvState.selectedItems[num2] = true;
								list.Add(text);
								result = true;
							}
						}
					}
				}
				else
				{
					if (!ASCommitWindow.AllFolderWouldBeMovedAnyway(pvState, parentViewFolder.guid))
					{
						if (ASCommitWindow.AnyOfTheParentsIsSelected(ref pvState, parentViewFolder.guid))
						{
							pvState.selectedItems[num] = true;
							list.Add(parentViewFolder.guid);
							for (int k = 1; k <= parentViewFolder.files.Length; k++)
							{
								pvState.selectedItems[num + k] = true;
							}
							result = true;
						}
					}
					else
					{
						for (int l = 1; l <= parentViewFolder.files.Length; l++)
						{
							if (!pvState.selectedItems[num + l])
							{
								pvState.selectedItems[num + l] = true;
							}
						}
						list.Add(parentViewFolder.guid);
					}
				}
				num += 1 + pvState.folders[i].files.Length;
			}
			if (anotherPvState != null)
			{
				for (int m = 0; m < anotherPvState.folders.Length; m++)
				{
					ParentViewFolder parentViewFolder2 = anotherPvState.folders[m];
					if (ASCommitWindow.AnyOfTheParentsIsSelected(ref pvState, parentViewFolder2.guid))
					{
						list.Add(parentViewFolder2.guid);
					}
				}
				for (int n = anotherPvState.folders.Length - 1; n >= 0; n--)
				{
					if (list.Contains(anotherPvState.folders[n].guid))
					{
						ParentViewFolder parentViewFolder3 = anotherPvState.folders[n];
						int num3 = ASCommitWindow.FolderSelectionIndexFromGUID(pvState.folders, parentViewFolder3.guid);
						if (num3 != -1)
						{
							ParentViewFolder parentViewFolder4 = pvState.folders[num3];
							int length = pvState.lv.totalRows - num3 - 1 - parentViewFolder4.files.Length;
							int num4 = num3 + 1 + parentViewFolder4.files.Length;
							Array.Copy(pvState.selectedItems, num4, pvState.selectedItems, num4 + parentViewFolder3.files.Length, length);
							ArrayUtility.AddRange<ParentViewFile>(ref parentViewFolder4.files, parentViewFolder3.files);
							for (int num5 = 1; num5 <= parentViewFolder4.files.Length; num5++)
							{
								pvState.selectedItems[num3 + num5] = true;
							}
							Array.Sort<ParentViewFile>(parentViewFolder4.files, new Comparison<ParentViewFile>(ParentViewState.CompareViewFile));
						}
						else
						{
							num3 = 0;
							for (int num6 = 0; num6 < pvState.folders.Length; num6++)
							{
								if (ParentViewState.CompareViewFolder(pvState.folders[num3], parentViewFolder3) > 0)
								{
									break;
								}
								num3 += 1 + pvState.folders[num6].files.Length;
							}
							int length2 = pvState.lv.totalRows - num3;
							int num7 = num3;
							Array.Copy(pvState.selectedItems, num7, pvState.selectedItems, num7 + 1 + parentViewFolder3.files.Length, length2);
							ArrayUtility.Add<ParentViewFolder>(ref pvState.folders, parentViewFolder3);
							for (int num8 = 0; num8 <= parentViewFolder3.files.Length; num8++)
							{
								pvState.selectedItems[num3 + num8] = true;
							}
							flag = true;
						}
						ArrayUtility.RemoveAt<ParentViewFolder>(ref anotherPvState.folders, n);
						result = true;
					}
				}
				anotherPvState.SetLineCount();
			}
			pvState.SetLineCount();
			if (flag)
			{
				Array.Sort<ParentViewFolder>(pvState.folders, new Comparison<ParentViewFolder>(ParentViewState.CompareViewFolder));
			}
			return result;
		}
		public static bool SomethingDiscardableSelected(ParentViewState st)
		{
			int num = 0;
			ParentViewFolder[] folders = st.folders;
			for (int i = 0; i < folders.Length; i++)
			{
				ParentViewFolder parentViewFolder = folders[i];
				if (st.selectedItems[num++])
				{
					return true;
				}
				ParentViewFile[] files = parentViewFolder.files;
				for (int j = 0; j < files.Length; j++)
				{
					ParentViewFile parentViewFile = files[j];
					if (st.selectedItems[num++] && ASCommitWindow.IsDiscardableAsset(parentViewFile.guid, parentViewFile.changeFlags))
					{
						return true;
					}
				}
			}
			return false;
		}
 private void OnGUI()
 {
     if ((EditorSettings.externalVersionControl != ExternalVersionControl.Disabled) && (EditorSettings.externalVersionControl != ExternalVersionControl.AssetServer))
     {
         GUILayout.FlexibleSpace();
         GUILayout.BeginHorizontal(new GUILayoutOption[0]);
         GUILayout.FlexibleSpace();
         GUILayout.Label("Asset Server is disabled when external version control is used. Go to 'Edit -> Project Settings -> Editor' to re-enable it.", new GUILayoutOption[0]);
         GUILayout.FlexibleSpace();
         GUILayout.EndHorizontal();
         GUILayout.FlexibleSpace();
     }
     else
     {
         if (constants == null)
         {
             constants = new Constants();
         }
         if (!this.m_CheckedMaint && (Event.current.type != EventType.Layout))
         {
             if (!InternalEditorUtility.HasTeamLicense())
             {
                 base.Close();
                 GUIUtility.ExitGUI();
             }
             this.m_CheckedMaint = true;
         }
         if ((this.maxNickLength == 1) && (this.sharedChangesets != null))
         {
             for (int i = 0; i < this.sharedChangesets.Length; i++)
             {
                 int x = (int) constants.serverUpdateInfo.CalcSize(new GUIContent(this.sharedChangesets[i].owner)).x;
                 if (x > this.maxNickLength)
                 {
                     this.maxNickLength = x;
                 }
             }
             this.changesetContents = new GUIContent[this.sharedChangesets.Length];
             ParentViewState st = new ParentViewState();
             for (int j = 0; j < this.changesetContents.Length; j++)
             {
                 int num4 = 15;
                 Changeset assets = this.sharedChangesets[j];
                 char[] separator = new char[] { '\n' };
                 string str = assets.message.Split(separator)[0];
                 str = (str.Length >= 0x2d) ? (str.Substring(0, 0x2a) + "...") : str;
                 string tooltip = string.Format("[{0} {1}] {2}", assets.date, assets.owner, str);
                 num4--;
                 st.Clear();
                 st.AddAssetItems(assets);
                 for (int k = 0; k < st.folders.Length; k++)
                 {
                     if ((--num4 == 0) && !this.IsLastOne(k, 0, st))
                     {
                         tooltip = tooltip + "\n(and more...)";
                         break;
                     }
                     tooltip = tooltip + "\n" + st.folders[k].name;
                     for (int m = 0; m < st.folders[k].files.Length; m++)
                     {
                         if ((--num4 == 0) && !this.IsLastOne(k, m, st))
                         {
                             tooltip = tooltip + "\n(and more...)";
                             break;
                         }
                         tooltip = tooltip + "\n\t" + st.folders[k].files[m].name;
                     }
                     if (num4 == 0)
                     {
                         break;
                     }
                 }
                 char[] chArray2 = new char[] { '\n' };
                 this.changesetContents[j] = new GUIContent(this.sharedChangesets[j].message.Split(chArray2)[0], tooltip);
             }
             if (this.maxNickLength == 1)
             {
                 this.maxNickLength = 0;
             }
         }
         if (AssetServer.IsControllerBusy() != 0)
         {
             base.Repaint();
         }
         else
         {
             if (this.isInitialUpdate)
             {
                 this.isInitialUpdate = false;
                 this.SwitchSelectedPage(Page.Overview);
             }
             if ((Event.current.type == EventType.ExecuteCommand) && (Event.current.commandName == "Find"))
             {
                 this.SetShownSearchField(this.m_SearchToShow);
                 Event.current.Use();
             }
             GUILayout.BeginHorizontal(EditorStyles.toolbar, new GUILayoutOption[0]);
             int num7 = -1;
             bool enabled = GUI.enabled;
             if (this.ToolbarToggle(this.selectedPage == Page.Overview, this.pageTitles[0], EditorStyles.toolbarButton))
             {
                 num7 = 0;
             }
             GUI.enabled = ((!this.needsSetup && (this.sharedChangesets != null)) && (this.sharedChangesets.Length != 0)) && enabled;
             if (this.ToolbarToggle(this.selectedPage == Page.Update, this.pageTitles[1], EditorStyles.toolbarButton))
             {
                 num7 = 1;
             }
             GUI.enabled = (!this.needsSetup && (this.pv.lv.totalRows != 0)) && enabled;
             if (this.selectedPage > Page.Commit)
             {
                 if (this.ToolbarToggle(this.selectedPage == Page.Commit, this.pageTitles[2], EditorStyles.toolbarButton))
                 {
                     num7 = 2;
                 }
                 GUI.enabled = enabled;
                 if (this.ToolbarToggle(this.selectedPage > Page.Commit, this.pageTitles[3], EditorStyles.toolbarButton))
                 {
                     num7 = 3;
                 }
             }
             else
             {
                 if (this.ToolbarToggle(this.selectedPage == Page.Commit, this.pageTitles[2], EditorStyles.toolbarButton))
                 {
                     num7 = 2;
                 }
                 GUI.enabled = enabled;
             }
             if ((num7 != -1) && (num7 != this.selectedPage))
             {
                 if (this.selectedPage == Page.Commit)
                 {
                     this.NotifyClosingCommit();
                 }
                 if (num7 <= 2)
                 {
                     this.SwitchSelectedPage((Page) num7);
                     GUIUtility.ExitGUI();
                 }
             }
             GUILayout.FlexibleSpace();
             if (this.selectedPage == Page.History)
             {
                 this.DoSearchToggle(ShowSearchField.HistoryList);
             }
             if (!this.needsSetup)
             {
                 Page selectedPage = this.selectedPage;
                 if ((((selectedPage == Page.Overview) || (selectedPage == Page.Update)) || (selectedPage == Page.History)) && GUILayout.Button("Refresh", EditorStyles.toolbarButton, new GUILayoutOption[0]))
                 {
                     this.ActionRefresh();
                     GUIUtility.ExitGUI();
                 }
             }
             GUILayout.EndHorizontal();
             EditorGUIUtility.SetIconSize(this.iconSize);
             this.DoSelectedPageGUI();
             EditorGUIUtility.SetIconSize(Vector2.zero);
             if (Event.current.type == EventType.ContextClick)
             {
                 GUIUtility.hotControl = 0;
                 Rect position = new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 1f, 1f);
                 EditorUtility.DisplayCustomMenu(position, !this.needsSetup ? this.dropDownMenuItems : this.unconfiguredDropDownMenuItems, null, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), null);
                 Event.current.Use();
             }
         }
     }
 }
 private bool IsLastOne(int f, int fl, ParentViewState st)
 {
   if (st.folders.Length - 1 == f)
     return st.folders[f].files.Length - 1 == fl;
   return false;
 }
        private void DrawParentView(Rect r, ref GUIHistoryListItem item, int changesetIndex, bool hasFocus)
        {
            ParentViewState assets   = item.assets;
            GUIContent      content  = new GUIContent();
            Texture2D       textured = EditorGUIUtility.FindTexture(EditorResourcesUtility.folderIconName);
            Event           current  = Event.current;

            hasFocus &= this.m_HistoryControlID == GUIUtility.keyboardControl;
            r.height  = this.m_RowHeight;
            r.y      += 3f;
            int index = -1;
            int num2  = (item.collapsedItemCount == 0) ? item.totalLineCount : 4;

            num2 += item.startShowingFrom;
            for (int i = 0; i < assets.folders.Length; i++)
            {
                GUIStyle         label;
                ParentViewFolder folder = assets.folders[i];
                content.text  = folder.name;
                content.image = textured;
                index++;
                if (index == num2)
                {
                    break;
                }
                if (index >= item.startShowingFrom)
                {
                    label = ms_Style.label;
                    if ((current.type == EventType.MouseDown) && r.Contains(current.mousePosition))
                    {
                        if (((this.ChangeLogSelectionRev == this.m_Changesets[changesetIndex].changeset) && (this.m_ChangeLogSelectionGUID == folder.guid)) && EditorGUI.actionKey)
                        {
                            this.ClearItemSelection();
                        }
                        else
                        {
                            this.ChangeLogSelectionRev         = this.m_Changesets[changesetIndex].changeset;
                            this.m_ChangeLogSelectionGUID      = folder.guid;
                            this.m_ChangeLogSelectionAssetName = folder.name;
                            this.m_FolderSelected      = true;
                            this.m_AssetSelectionIndex = index;
                        }
                        this.m_ChangesetSelectionIndex = changesetIndex;
                        GUIUtility.keyboardControl     = this.m_HistoryControlID;
                        ((ASMainWindow)this.m_ParentWindow).m_SearchToShow = ASMainWindow.ShowSearchField.HistoryList;
                        if (current.clickCount == 2)
                        {
                            this.ShowAssetsHistory();
                            GUIUtility.ExitGUI();
                        }
                        else if (current.button == 1)
                        {
                            GUIUtility.hotControl = 0;
                            r = new Rect(current.mousePosition.x, current.mousePosition.y, 1f, 1f);
                            EditorUtility.DisplayCustomMenu(r, this.m_DropDownMenuItems, -1, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), null);
                        }
                        this.DoScroll();
                        current.Use();
                    }
                    bool on = (this.ChangeLogSelectionRev == this.m_Changesets[changesetIndex].changeset) && (this.m_ChangeLogSelectionGUID == folder.guid);
                    if (item.boldAssets[index] && !on)
                    {
                        GUI.Label(r, string.Empty, ms_Style.ping);
                    }
                    if (Event.current.type == EventType.Repaint)
                    {
                        label.Draw(r, content, false, false, on, hasFocus);
                        this.DrawBadge(r, folder.changeFlags, label, content, GUIClip.visibleRect.width - 150f);
                    }
                    r.y += this.m_RowHeight;
                }
                RectOffset padding = ms_Style.label.padding;
                padding.left += 0x10;
                RectOffset offset2 = ms_Style.boldLabel.padding;
                offset2.left += 0x10;
                try
                {
                    for (int j = 0; j < folder.files.Length; j++)
                    {
                        index++;
                        if (index == num2)
                        {
                            break;
                        }
                        if (index >= item.startShowingFrom)
                        {
                            label = ms_Style.label;
                            if ((current.type == EventType.MouseDown) && r.Contains(current.mousePosition))
                            {
                                if (((this.ChangeLogSelectionRev == this.m_Changesets[changesetIndex].changeset) && (this.m_ChangeLogSelectionGUID == folder.files[j].guid)) && EditorGUI.actionKey)
                                {
                                    this.ClearItemSelection();
                                }
                                else
                                {
                                    this.ChangeLogSelectionRev         = this.m_Changesets[changesetIndex].changeset;
                                    this.m_ChangeLogSelectionGUID      = folder.files[j].guid;
                                    this.m_ChangeLogSelectionAssetName = folder.files[j].name;
                                    this.m_FolderSelected      = false;
                                    this.m_AssetSelectionIndex = index;
                                }
                                this.m_ChangesetSelectionIndex = changesetIndex;
                                GUIUtility.keyboardControl     = this.m_HistoryControlID;
                                ((ASMainWindow)this.m_ParentWindow).m_SearchToShow = ASMainWindow.ShowSearchField.HistoryList;
                                if (current.clickCount == 2)
                                {
                                    if (this.IsComparableAssetSelected() && (this.m_SelectedGUID == this.m_ChangeLogSelectionGUID))
                                    {
                                        this.DoShowDiff(false, this.ChangeLogSelectionRev, -1);
                                    }
                                    else
                                    {
                                        this.ShowAssetsHistory();
                                        GUIUtility.ExitGUI();
                                    }
                                }
                                else if (current.button == 1)
                                {
                                    GUIUtility.hotControl = 0;
                                    r = new Rect(current.mousePosition.x, current.mousePosition.y, 1f, 1f);
                                    EditorUtility.DisplayCustomMenu(r, this.m_DropDownMenuItems, -1, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), null);
                                }
                                this.DoScroll();
                                current.Use();
                            }
                            content.text  = folder.files[j].name;
                            content.image = InternalEditorUtility.GetIconForFile(folder.files[j].name);
                            bool flag2 = (this.ChangeLogSelectionRev == this.m_Changesets[changesetIndex].changeset) && (this.m_ChangeLogSelectionGUID == folder.files[j].guid);
                            if (item.boldAssets[index] && !flag2)
                            {
                                GUI.Label(r, string.Empty, ms_Style.ping);
                            }
                            if (Event.current.type == EventType.Repaint)
                            {
                                label.Draw(r, content, false, false, flag2, hasFocus);
                                this.DrawBadge(r, folder.files[j].changeFlags, label, content, GUIClip.visibleRect.width - 150f);
                            }
                            r.y += this.m_RowHeight;
                        }
                    }
                    if (index == num2)
                    {
                        break;
                    }
                }
                finally
                {
                    RectOffset offset3 = ms_Style.label.padding;
                    offset3.left -= 0x10;
                    RectOffset offset4 = ms_Style.boldLabel.padding;
                    offset4.left -= 0x10;
                }
            }
            if (((index == num2) || (num2 >= item.totalLineCount)) && (item.collapsedItemCount != 0))
            {
                r.x += 19f;
                if (GUI.Button(r, item.collapsedItemCount.ToString() + " more...", ms_Style.foldout))
                {
                    GUIUtility.keyboardControl = this.m_HistoryControlID;
                    this.UncollapseListItem(ref item);
                }
            }
        }
		internal static List<string> GetParentViewSelectedItems(ParentViewState state, bool includeFolders, bool excludeUndiscardableOnes)
		{
			List<string> list = new List<string>();
			int num = 0;
			for (int i = 0; i < state.folders.Length; i++)
			{
				ParentViewFolder parentViewFolder = state.folders[i];
				bool flag = true;
				bool flag2 = true;
				int num2 = num++;
				int count = list.Count;
				for (int j = 0; j < parentViewFolder.files.Length; j++)
				{
					if (state.selectedItems[num])
					{
						if (!excludeUndiscardableOnes || ASCommitWindow.IsDiscardableAsset(parentViewFolder.files[j].guid, parentViewFolder.files[j].changeFlags))
						{
							list.Add(parentViewFolder.files[j].guid);
							flag = false;
						}
					}
					else
					{
						flag2 = false;
					}
					num++;
				}
				if (includeFolders && state.selectedItems[num2] && (flag || flag2) && AssetServer.IsGUIDValid(parentViewFolder.guid) != 0 && count <= list.Count)
				{
					list.Insert(count, parentViewFolder.guid);
				}
			}
			return list;
		}
 internal static bool MarkSelected(ParentViewState activeState, List<string> guids)
 {
   int num = 0;
   bool flag1 = false;
   foreach (ParentViewFolder folder in activeState.folders)
   {
     bool flag2 = guids.Contains(folder.guid);
     activeState.selectedItems[num++] = flag2;
     flag1 |= flag2;
     foreach (ParentViewFile file in folder.files)
     {
       bool flag3 = guids.Contains(file.guid);
       activeState.selectedItems[num++] = flag3;
       flag1 |= flag3;
     }
   }
   return flag1;
 }
		private bool IsLastOne(int f, int fl, ParentViewState st)
		{
			return st.folders.Length - 1 == f && st.folders[f].files.Length - 1 == fl;
		}
 private static bool AnyOfTheParentsIsSelected(ref ParentViewState pvState, string guid)
 {
     string itemGUID = guid;
     while (AssetServer.IsGUIDValid(itemGUID = AssetServer.GetParentGUID(itemGUID, -1)) != 0)
     {
         if (AllFolderWouldBeMovedAnyway(pvState, itemGUID))
         {
             return true;
         }
     }
     return false;
 }
 private bool MarkDependantFiles(ParentViewState pvState)
 {
   string[] strArray1 = new string[0];
   bool flag = false;
   if (pvState == this.pv1state)
   {
     string[] strArray2 = AssetServer.CollectAllDependencies(ASCommitWindow.GetParentViewSelectedItems(this.pv1state, false, false).ToArray());
     if (strArray2.Length != 0)
     {
       int index1 = 1;
       int index2 = 0;
       for (; index1 < pvState.lv.totalRows; ++index1)
       {
         int index3 = 0;
         while (index3 < pvState.folders[index2].files.Length)
         {
           if (!pvState.selectedItems[index1])
           {
             for (int index4 = 0; index4 < strArray2.Length; ++index4)
             {
               if (strArray2[index4] == pvState.folders[index2].files[index3].guid)
               {
                 pvState.selectedItems[index1] = true;
                 flag = true;
                 break;
               }
             }
           }
           ++index3;
           ++index1;
         }
         ++index2;
       }
     }
   }
   return flag;
 }
 private void DoTransferAll(ParentViewState pvState, ParentViewState anotherPvState, int selFolder, int selFile)
 {
   List<string> guidsOfFoldersToRemove = new List<string>();
   bool flag1 = this.MarkDependantFiles(pvState);
   int index1 = pvState.lv.totalRows - 1;
   for (int folder1 = pvState.folders.Length - 1; folder1 >= 0; --folder1)
   {
     ParentViewFolder folder2 = pvState.folders[folder1];
     bool flag2 = false;
     for (int file = folder2.files.Length - 1; file >= -1; --file)
     {
       if (!guidsOfFoldersToRemove.Contains(folder2.guid) && pvState.selectedItems[index1])
       {
         if (file != -1 || !flag2)
           flag1 |= this.DoTransfer(ref pvState.folders, ref anotherPvState.folders, folder1, file, ref guidsOfFoldersToRemove, pvState == this.pv1state);
         flag2 = true;
       }
       --index1;
     }
   }
   for (int index2 = pvState.folders.Length - 1; index2 >= 0; --index2)
   {
     if (guidsOfFoldersToRemove.Contains(pvState.folders[index2].guid))
     {
       guidsOfFoldersToRemove.Remove(pvState.folders[index2].guid);
       ArrayUtility.RemoveAt<ParentViewFolder>(ref pvState.folders, index2);
     }
   }
   this.pv1state.SetLineCount();
   this.pv2state.SetLineCount();
   this.pv1state.ClearSelection();
   this.pv2state.ClearSelection();
   pvState.selectedFile = -1;
   pvState.selectedFolder = -1;
   AssetServer.SetSelectionFromGUID(string.Empty);
   this.lastTransferMovedDependencies = flag1;
 }
 private static bool AnyOfTheParentsIsSelected(ref ParentViewState pvState, string guid)
 {
   string str = guid;
   while (AssetServer.IsGUIDValid(str = AssetServer.GetParentGUID(str, -1)) != 0)
   {
     if (ASCommitWindow.AllFolderWouldBeMovedAnyway(pvState, str))
       return true;
   }
   return false;
 }
 private void OnGUI()
 {
   if (EditorSettings.externalVersionControl != ExternalVersionControl.Disabled && EditorSettings.externalVersionControl != ExternalVersionControl.AssetServer)
   {
     GUILayout.FlexibleSpace();
     GUILayout.BeginHorizontal();
     GUILayout.FlexibleSpace();
     GUILayout.Label("Asset Server is disabled when external version control is used. Go to 'Edit -> Project Settings -> Editor' to re-enable it.");
     GUILayout.FlexibleSpace();
     GUILayout.EndHorizontal();
     GUILayout.FlexibleSpace();
   }
   else
   {
     if (ASMainWindow.constants == null)
       ASMainWindow.constants = new ASMainWindow.Constants();
     if (!this.m_CheckedMaint && Event.current.type != EventType.Layout)
     {
       if (!InternalEditorUtility.HasTeamLicense())
       {
         this.Close();
         GUIUtility.ExitGUI();
       }
       this.m_CheckedMaint = true;
     }
     if (this.maxNickLength == 1 && this.sharedChangesets != null)
     {
       for (int index = 0; index < this.sharedChangesets.Length; ++index)
       {
         int x = (int) ASMainWindow.constants.serverUpdateInfo.CalcSize(new GUIContent(this.sharedChangesets[index].owner)).x;
         if (x > this.maxNickLength)
           this.maxNickLength = x;
       }
       this.changesetContents = new GUIContent[this.sharedChangesets.Length];
       ParentViewState st = new ParentViewState();
       for (int index = 0; index < this.changesetContents.Length; ++index)
       {
         int num1 = 15;
         Changeset sharedChangeset = this.sharedChangesets[index];
         string str1 = sharedChangeset.message.Split('\n')[0];
         string str2 = str1.Length >= 45 ? str1.Substring(0, 42) + "..." : str1;
         string tooltip = string.Format("[{0} {1}] {2}", (object) sharedChangeset.date, (object) sharedChangeset.owner, (object) str2);
         int num2 = num1 - 1;
         st.Clear();
         st.AddAssetItems(sharedChangeset);
         for (int f = 0; f < st.folders.Length; ++f)
         {
           if (--num2 == 0 && !this.IsLastOne(f, 0, st))
           {
             tooltip += "\n(and more...)";
             break;
           }
           tooltip = tooltip + "\n" + st.folders[f].name;
           for (int fl = 0; fl < st.folders[f].files.Length; ++fl)
           {
             if (--num2 == 0 && !this.IsLastOne(f, fl, st))
             {
               tooltip += "\n(and more...)";
               break;
             }
             tooltip = tooltip + "\n\t" + st.folders[f].files[fl].name;
           }
           if (num2 == 0)
             break;
         }
         this.changesetContents[index] = new GUIContent(this.sharedChangesets[index].message.Split('\n')[0], tooltip);
       }
       if (this.maxNickLength == 1)
         this.maxNickLength = 0;
     }
     if (AssetServer.IsControllerBusy() != 0)
     {
       this.Repaint();
     }
     else
     {
       if (this.isInitialUpdate)
       {
         this.isInitialUpdate = false;
         this.SwitchSelectedPage(ASMainWindow.Page.Overview);
       }
       if (Event.current.type == EventType.ExecuteCommand && Event.current.commandName == "Find")
       {
         this.SetShownSearchField(this.m_SearchToShow);
         Event.current.Use();
       }
       GUILayout.BeginHorizontal(EditorStyles.toolbar, new GUILayoutOption[0]);
       int num = -1;
       bool enabled = GUI.enabled;
       if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Overview, this.pageTitles[0], EditorStyles.toolbarButton))
         num = 0;
       GUI.enabled = !this.needsSetup && this.sharedChangesets != null && this.sharedChangesets.Length != 0 && enabled;
       if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Update, this.pageTitles[1], EditorStyles.toolbarButton))
         num = 1;
       GUI.enabled = !this.needsSetup && this.pv.lv.totalRows != 0 && enabled;
       if (this.selectedPage > ASMainWindow.Page.Commit)
       {
         if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Commit, this.pageTitles[2], EditorStyles.toolbarButton))
           num = 2;
         GUI.enabled = enabled;
         if (this.ToolbarToggle(this.selectedPage > ASMainWindow.Page.Commit, this.pageTitles[3], EditorStyles.toolbarButton))
           num = 3;
       }
       else
       {
         if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Commit, this.pageTitles[2], EditorStyles.toolbarButton))
           num = 2;
         GUI.enabled = enabled;
       }
       if (num != -1 && (ASMainWindow.Page) num != this.selectedPage)
       {
         if (this.selectedPage == ASMainWindow.Page.Commit)
           this.NotifyClosingCommit();
         if (num <= 2)
         {
           this.SwitchSelectedPage((ASMainWindow.Page) num);
           GUIUtility.ExitGUI();
         }
       }
       GUILayout.FlexibleSpace();
       if (this.selectedPage == ASMainWindow.Page.History)
         this.DoSearchToggle(ASMainWindow.ShowSearchField.HistoryList);
       if (!this.needsSetup)
       {
         switch (this.selectedPage)
         {
           case ASMainWindow.Page.Overview:
           case ASMainWindow.Page.Update:
           case ASMainWindow.Page.History:
             if (GUILayout.Button("Refresh", EditorStyles.toolbarButton, new GUILayoutOption[0]))
             {
               this.ActionRefresh();
               GUIUtility.ExitGUI();
               break;
             }
             break;
         }
       }
       GUILayout.EndHorizontal();
       EditorGUIUtility.SetIconSize(this.iconSize);
       this.DoSelectedPageGUI();
       EditorGUIUtility.SetIconSize(Vector2.zero);
       if (Event.current.type != EventType.ContextClick)
         return;
       GUIUtility.hotControl = 0;
       EditorUtility.DisplayCustomMenu(new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 1f, 1f), !this.needsSetup ? this.dropDownMenuItems : this.unconfiguredDropDownMenuItems, (int[]) null, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), (object) null);
       Event.current.Use();
     }
   }
 }
		private bool ParentViewGUI(ParentViewState pvState, ParentViewState anotherPvState, ref bool hasSelection)
		{
			bool flag = false;
			EditorGUIUtility.SetIconSize(this.iconSize);
			ListViewState lv = pvState.lv;
			bool shift = Event.current.shift;
			bool actionKey = EditorGUI.actionKey;
			int row = lv.row;
			int num = -1;
			int num2 = -1;
			bool flag2 = false;
			foreach (ListViewElement listViewElement in ListViewGUILayout.ListView(lv, (ListViewOptions)12, this.dragTitle, GUIStyle.none, new GUILayoutOption[0]))
			{
				if (num == -1 && !pvState.IndexToFolderAndFile(listViewElement.row, ref num, ref num2))
				{
					flag = true;
					break;
				}
				if (GUIUtility.keyboardControl == lv.ID && Event.current.type == EventType.KeyDown && actionKey)
				{
					Event.current.Use();
				}
				ParentViewFolder parentViewFolder = pvState.folders[num];
				if (pvState.selectedItems[listViewElement.row] && Event.current.type == EventType.Repaint)
				{
					ASCommitWindow.constants.entrySelected.Draw(listViewElement.position, false, false, false, false);
				}
				if (ListViewGUILayout.HasMouseUp(listViewElement.position))
				{
					if (!shift && !actionKey)
					{
						flag2 |= ListViewGUILayout.MultiSelection(row, pvState.lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
					}
				}
				else
				{
					if (ListViewGUILayout.HasMouseDown(listViewElement.position))
					{
						if (Event.current.clickCount == 2)
						{
							this.DoShowMyDiff(false);
							GUIUtility.ExitGUI();
						}
						else
						{
							if (!pvState.selectedItems[listViewElement.row] || shift || actionKey)
							{
								flag2 |= ListViewGUILayout.MultiSelection(row, listViewElement.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
							}
							pvState.selectedFile = num2;
							pvState.selectedFolder = num;
							lv.row = listViewElement.row;
						}
					}
					else
					{
						if (ListViewGUILayout.HasMouseDown(listViewElement.position, 1))
						{
							if (!pvState.selectedItems[listViewElement.row])
							{
								flag2 = true;
								pvState.ClearSelection();
								pvState.selectedItems[listViewElement.row] = true;
								pvState.selectedFile = num2;
								pvState.selectedFolder = num;
								lv.row = listViewElement.row;
							}
							this.dropDownMenuItems[0] = ((pvState != this.pv1state) ? "<<<" : ">>>");
							GUIUtility.hotControl = 0;
							Rect position = new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 1f, 1f);
							EditorUtility.DisplayCustomMenu(position, this.dropDownMenuItems, null, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), null);
							Event.current.Use();
						}
					}
				}
				ChangeFlags changeFlags;
				if (num2 != -1)
				{
					Texture2D texture2D = AssetDatabase.GetCachedIcon(parentViewFolder.name + "/" + parentViewFolder.files[num2].name) as Texture2D;
					if (texture2D == null)
					{
						texture2D = InternalEditorUtility.GetIconForFile(parentViewFolder.files[num2].name);
					}
					GUILayout.Label(new GUIContent(parentViewFolder.files[num2].name, texture2D), ASCommitWindow.constants.element, new GUILayoutOption[0]);
					changeFlags = parentViewFolder.files[num2].changeFlags;
				}
				else
				{
					GUILayout.Label(parentViewFolder.name, ASCommitWindow.constants.header, new GUILayoutOption[0]);
					changeFlags = parentViewFolder.changeFlags;
				}
				GUIContent gUIContent = null;
				if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Undeleted) || ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Created))
				{
					gUIContent = ASMainWindow.constants.badgeNew;
				}
				else
				{
					if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Deleted))
					{
						gUIContent = ASMainWindow.constants.badgeDelete;
					}
					else
					{
						if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Renamed) || ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Moved))
						{
							gUIContent = ASMainWindow.constants.badgeMove;
						}
					}
				}
				if (gUIContent != null && Event.current.type == EventType.Repaint)
				{
					Rect position2 = new Rect(listViewElement.position.x + listViewElement.position.width - (float)gUIContent.image.width - 5f, listViewElement.position.y + listViewElement.position.height / 2f - (float)(gUIContent.image.height / 2), (float)gUIContent.image.width, (float)gUIContent.image.height);
					EditorGUIUtility.SetIconSize(Vector2.zero);
					GUIStyle.none.Draw(position2, gUIContent, false, false, false, false);
					EditorGUIUtility.SetIconSize(this.iconSize);
				}
				pvState.NextFileFolder(ref num, ref num2);
			}
			if (!flag)
			{
				if (GUIUtility.keyboardControl == lv.ID)
				{
					if (Event.current.type == EventType.ValidateCommand && Event.current.commandName == "SelectAll")
					{
						Event.current.Use();
					}
					else
					{
						if (Event.current.type == EventType.ExecuteCommand && Event.current.commandName == "SelectAll")
						{
							for (int i = 0; i < pvState.selectedItems.Length; i++)
							{
								pvState.selectedItems[i] = true;
							}
							flag2 = true;
							Event.current.Use();
						}
					}
				}
				if (lv.customDraggedFromID != 0 && lv.customDraggedFromID == anotherPvState.lv.ID)
				{
					this.DoTransferAll(anotherPvState, pvState, pvState.selectedFolder, pvState.selectedFile);
				}
				if (GUIUtility.keyboardControl == lv.ID && !actionKey)
				{
					if (lv.selectionChanged)
					{
						flag2 |= ListViewGUILayout.MultiSelection(row, lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
						if (!pvState.IndexToFolderAndFile(lv.row, ref pvState.selectedFolder, ref pvState.selectedFile))
						{
							flag = true;
						}
					}
					else
					{
						if (pvState.selectedFolder != -1 && Event.current.type == EventType.KeyDown && GUIUtility.keyboardControl == lv.ID && Event.current.keyCode == KeyCode.Return)
						{
							this.DoTransferAll(pvState, anotherPvState, pvState.selectedFolder, pvState.selectedFile);
							ListViewGUILayout.MultiSelection(row, lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
							pvState.IndexToFolderAndFile(lv.row, ref pvState.selectedFolder, ref pvState.selectedFile);
							Event.current.Use();
							flag = true;
						}
					}
				}
				if (lv.selectionChanged || flag2)
				{
					if (pvState.IndexToFolderAndFile(lv.row, ref num, ref num2))
					{
						this.dragTitle = ((num2 != -1) ? pvState.folders[num].files[num2].name : pvState.folders[num].name);
					}
					anotherPvState.ClearSelection();
					anotherPvState.lv.row = -1;
					anotherPvState.selectedFile = -1;
					anotherPvState.selectedFolder = -1;
					this.MySelectionToGlobalSelection();
				}
			}
			EditorGUIUtility.SetIconSize(Vector2.zero);
			return !flag;
		}