private void RecursiveComputeEnabledStateForFolders(PackageImportTreeView.PackageImportTreeViewItem pitem, HashSet <PackageImportTreeView.PackageImportTreeViewItem> done) { if (pitem.item == null || pitem.item.isFolder) { if (pitem.hasChildren) { foreach (TreeViewItem current in pitem.children) { this.RecursiveComputeEnabledStateForFolders(current as PackageImportTreeView.PackageImportTreeViewItem, done); } } if (!done.Contains(pitem)) { PackageImportTreeView.EnabledState folderChildrenEnabledState = this.GetFolderChildrenEnabledState(pitem); pitem.enableState = folderChildrenEnabledState; if (folderChildrenEnabledState == PackageImportTreeView.EnabledState.Mixed) { done.Add(pitem); for (PackageImportTreeView.PackageImportTreeViewItem packageImportTreeViewItem = pitem.parent as PackageImportTreeView.PackageImportTreeViewItem; packageImportTreeViewItem != null; packageImportTreeViewItem = (packageImportTreeViewItem.parent as PackageImportTreeView.PackageImportTreeViewItem)) { if (!done.Contains(packageImportTreeViewItem)) { packageImportTreeViewItem.enableState = PackageImportTreeView.EnabledState.Mixed; done.Add(packageImportTreeViewItem); } } } } } }
private PackageImportTreeView.EnabledState GetFolderChildrenEnabledState(PackageImportTreeView.PackageImportTreeViewItem folder) { ImportPackageItem item = folder.item; if (item != null && !item.isFolder) { Debug.LogError("Should be a folder item!"); } if (!folder.hasChildren) { return(PackageImportTreeView.EnabledState.None); } PackageImportTreeView.EnabledState enabledState = PackageImportTreeView.EnabledState.NotSet; PackageImportTreeView.PackageImportTreeViewItem packageImportTreeViewItem = folder.children[0] as PackageImportTreeView.PackageImportTreeViewItem; ImportPackageItem item2 = packageImportTreeViewItem.item; int num = (item2 != null) ? item2.enabledStatus : 1; for (int i = 1; i < folder.children.Count; i++) { item2 = (folder.children[i] as PackageImportTreeView.PackageImportTreeViewItem).item; if (num != item2.enabledStatus) { enabledState = PackageImportTreeView.EnabledState.Mixed; break; } } if (enabledState == PackageImportTreeView.EnabledState.NotSet) { enabledState = ((num != 1) ? PackageImportTreeView.EnabledState.None : PackageImportTreeView.EnabledState.All); } return(enabledState); }
private void RecursiveComputeEnabledStateForFolders(PackageImportTreeView.PackageImportTreeViewItem pitem, HashSet <PackageImportTreeView.PackageImportTreeViewItem> done) { ImportPackageItem item = pitem.item; if (item != null && !item.isFolder) { return; } if (pitem.hasChildren) { foreach (TreeViewItem current in pitem.children) { this.RecursiveComputeEnabledStateForFolders(current as PackageImportTreeView.PackageImportTreeViewItem, done); } } if (item != null && !done.Contains(pitem)) { PackageImportTreeView.EnabledState folderChildrenEnabledState = this.GetFolderChildrenEnabledState(pitem); item.enabledStatus = (int)folderChildrenEnabledState; if (folderChildrenEnabledState == PackageImportTreeView.EnabledState.Mixed) { done.Add(pitem); for (PackageImportTreeView.PackageImportTreeViewItem packageImportTreeViewItem = pitem.parent as PackageImportTreeView.PackageImportTreeViewItem; packageImportTreeViewItem != null; packageImportTreeViewItem = (packageImportTreeViewItem.parent as PackageImportTreeView.PackageImportTreeViewItem)) { ImportPackageItem item2 = packageImportTreeViewItem.item; if (item2 != null && !done.Contains(packageImportTreeViewItem)) { item2.enabledStatus = 2; done.Add(packageImportTreeViewItem); } } } } }
public PackageImportTreeViewItem(ImportPackageItem itemIn, int id, int depth, TreeViewItem parent, string displayName) : base(id, depth, parent, displayName) { this.item = itemIn; if (this.item == null) { this.m_EnableState = PackageImportTreeView.EnabledState.All; } else { this.m_EnableState = (PackageImportTreeView.EnabledState) this.item.enabledStatus; } }
private void EnableChildrenRecursive(TreeViewItem parentItem, PackageImportTreeView.EnabledState state) { if (parentItem.hasChildren) { foreach (TreeViewItem current in parentItem.children) { PackageImportTreeView.PackageImportTreeViewItem packageImportTreeViewItem = current as PackageImportTreeView.PackageImportTreeViewItem; packageImportTreeViewItem.enableState = state; this.EnableChildrenRecursive(packageImportTreeViewItem, state); } } }
private void EnableChildrenRecursive(TreeViewItem parentItem, PackageImportTreeView.EnabledState state) { if (!parentItem.hasChildren) { return; } using (List <TreeViewItem> .Enumerator enumerator = parentItem.children.GetEnumerator()) { while (enumerator.MoveNext()) { PackageImportTreeView.PackageImportTreeViewItem current = enumerator.Current as PackageImportTreeView.PackageImportTreeViewItem; current.enableState = state; this.EnableChildrenRecursive((TreeViewItem)current, state); } } }
private PackageImportTreeView.EnabledState GetFolderChildrenEnabledState(PackageImportTreeView.PackageImportTreeViewItem folder) { if (folder.item != null && !folder.item.isFolder) { Debug.LogError("Should be a folder item!"); } PackageImportTreeView.EnabledState result; if (!folder.hasChildren) { result = PackageImportTreeView.EnabledState.None; } else { PackageImportTreeView.EnabledState enabledState = PackageImportTreeView.EnabledState.NotSet; int i; for (i = 0; i < folder.children.Count; i++) { PackageImportTreeView.PackageImportTreeViewItem packageImportTreeViewItem = folder.children[i] as PackageImportTreeView.PackageImportTreeViewItem; if (this.ItemShouldBeConsideredForEnabledCheck(packageImportTreeViewItem)) { enabledState = packageImportTreeViewItem.enableState; break; } } for (i++; i < folder.children.Count; i++) { PackageImportTreeView.PackageImportTreeViewItem packageImportTreeViewItem2 = folder.children[i] as PackageImportTreeView.PackageImportTreeViewItem; if (this.ItemShouldBeConsideredForEnabledCheck(packageImportTreeViewItem2)) { if (enabledState != packageImportTreeViewItem2.enableState) { enabledState = PackageImportTreeView.EnabledState.Mixed; break; } } } if (enabledState == PackageImportTreeView.EnabledState.NotSet) { result = PackageImportTreeView.EnabledState.None; } else { result = enabledState; } } return(result); }
public void OnGUI(Rect rect) { if (Event.current.type == EventType.ScrollWheel) { PopupWindowWithoutFocus.Hide(); } int controlID = GUIUtility.GetControlID(FocusType.Keyboard); this.m_TreeView.OnGUI(rect, controlID); if (Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Space && this.m_Selection != null && this.m_Selection.Count > 0 && GUIUtility.keyboardControl == controlID) { PackageImportTreeView.PackageImportTreeViewItem packageImportTreeViewItem = this.m_Selection[0]; if (packageImportTreeViewItem != null) { PackageImportTreeView.EnabledState enableState = (packageImportTreeViewItem.enableState != PackageImportTreeView.EnabledState.None) ? PackageImportTreeView.EnabledState.None : PackageImportTreeView.EnabledState.All; packageImportTreeViewItem.enableState = enableState; this.ItemWasToggled(this.m_Selection[0]); } Event.current.Use(); } }
public void OnGUI(Rect rect) { if (Event.current.type == EventType.ScrollWheel) { PopupWindowWithoutFocus.Hide(); } int controlId = GUIUtility.GetControlID(FocusType.Keyboard); this.m_TreeView.OnGUI(rect, controlId); if (Event.current.type != EventType.KeyDown || Event.current.keyCode != KeyCode.Space || (this.m_Selection == null || this.m_Selection.Count <= 0) || GUIUtility.keyboardControl != controlId) { return; } PackageImportTreeView.PackageImportTreeViewItem importTreeViewItem = this.m_Selection[0]; if (importTreeViewItem != null) { PackageImportTreeView.EnabledState enabledState = importTreeViewItem.enableState != PackageImportTreeView.EnabledState.None ? PackageImportTreeView.EnabledState.None : PackageImportTreeView.EnabledState.All; importTreeViewItem.enableState = enabledState; this.ItemWasToggled(this.m_Selection[0]); } Event.current.Use(); }
private PackageImportTreeView.EnabledState GetFolderChildrenEnabledState(PackageImportTreeView.PackageImportTreeViewItem folder) { if (folder.item != null && !folder.item.isFolder) { Debug.LogError((object)"Should be a folder item!"); } if (!folder.hasChildren) { return(PackageImportTreeView.EnabledState.None); } PackageImportTreeView.EnabledState enabledState = PackageImportTreeView.EnabledState.NotSet; int index1; for (index1 = 0; index1 < folder.children.Count; ++index1) { PackageImportTreeView.PackageImportTreeViewItem child = folder.children[index1] as PackageImportTreeView.PackageImportTreeViewItem; if (this.ItemShouldBeConsideredForEnabledCheck(child)) { enabledState = child.enableState; break; } } for (int index2 = index1 + 1; index2 < folder.children.Count; ++index2) { PackageImportTreeView.PackageImportTreeViewItem child = folder.children[index2] as PackageImportTreeView.PackageImportTreeViewItem; if (this.ItemShouldBeConsideredForEnabledCheck(child) && enabledState != child.enableState) { enabledState = PackageImportTreeView.EnabledState.Mixed; break; } } if (enabledState == PackageImportTreeView.EnabledState.NotSet) { return(PackageImportTreeView.EnabledState.None); } return(enabledState); }
private void RecursiveComputeEnabledStateForFolders(PackageImportTreeView.PackageImportTreeViewItem pitem, HashSet <PackageImportTreeView.PackageImportTreeViewItem> done) { if (pitem.item != null && !pitem.item.isFolder) { return; } if (pitem.hasChildren) { using (List <TreeViewItem> .Enumerator enumerator = pitem.children.GetEnumerator()) { while (enumerator.MoveNext()) { this.RecursiveComputeEnabledStateForFolders(enumerator.Current as PackageImportTreeView.PackageImportTreeViewItem, done); } } } if (done.Contains(pitem)) { return; } PackageImportTreeView.EnabledState childrenEnabledState = this.GetFolderChildrenEnabledState(pitem); pitem.enableState = childrenEnabledState; if (childrenEnabledState != PackageImportTreeView.EnabledState.Mixed) { return; } done.Add(pitem); for (PackageImportTreeView.PackageImportTreeViewItem parent = pitem.parent as PackageImportTreeView.PackageImportTreeViewItem; parent != null; parent = parent.parent as PackageImportTreeView.PackageImportTreeViewItem) { if (!done.Contains(parent)) { parent.enableState = PackageImportTreeView.EnabledState.Mixed; done.Add(parent); } } }
public void SetAllEnabled(PackageImportTreeView.EnabledState state) { this.EnableChildrenRecursive(this.m_TreeView.data.root, state); this.ComputeEnabledStateForFolders(); }
public PackageImportTreeViewItem(ImportPackageItem itemIn, int id, int depth, TreeViewItem parent, string displayName) : base(id, depth, parent, displayName) { this.item = itemIn; if (this.item == null) this.m_EnableState = PackageImportTreeView.EnabledState.All; else this.m_EnableState = (PackageImportTreeView.EnabledState) this.item.enabledStatus; }