Example #1
0
        public void ApplyEnabledFilters(TreeViewItem root)
        {
            AssetTreeItem node   = root as AssetTreeItem;
            AssetTreeItem parent = root.parent as AssetTreeItem;

            if (node != null)
            {
                if (node.isDirectory)
                {
                    node.SetEnabled(
                        (parent == null || parent.enabled) &&
                        (m_DirectoryIgnorePatterns == null || !m_DirectoryIgnorePatterns.Any(x => x.IsMatch(node.fullPath))));
                }
                else
                {
                    node.SetEnabled(
                        (parent == null || parent.enabled) &&
                        (m_FileIgnorePatterns == null || !m_FileIgnorePatterns.Any(x => x.IsMatch(node.fullPath))));
                }
            }

            if (root.children != null)
            {
                foreach (var child in root.children)
                {
                    ApplyEnabledFilters(child);
                }
            }
        }
Example #2
0
        public void SetEnabled(bool isEnabled)
        {
            enabled = isEnabled;

            if (children != null)
            {
                foreach (var child in children)
                {
                    AssetTreeItem asset = child as AssetTreeItem;

                    if (asset != null)
                    {
                        asset.SetEnabled(isEnabled);
                    }
                }
            }

            var upstream = parent;

            while (upstream != null)
            {
                var up = upstream as AssetTreeItem;

                if (up != null && up.children != null)
                {
                    AssetTreeItem firstChild = up.children.FirstOrDefault() as AssetTreeItem;

                    if (firstChild != null)
                    {
                        up.m_IsMixedState = up.children.Any(x =>
                        {
                            var y = x as AssetTreeItem;
                            return(y.enabled != firstChild.enabled);
                        });

                        if (!up.m_IsMixedState)
                        {
                            up.enabled = firstChild.enabled;
                        }
                    }
                    else
                    {
                        up.m_IsMixedState = false;
                    }
                }

                upstream = upstream.parent;
            }
        }
Example #3
0
        protected override void RowGUI(RowGUIArgs args)
        {
            CenterRectUsingSingleLineHeight(ref args.rowRect);
            args.rowRect.xMin += GetContentIndent(args.item);

            AssetTreeItem item = args.item as AssetTreeItem;

            m_TempContent.text    = item.relativePath;
            m_TempContent.tooltip = item.fullPath;
            m_ToggleRect.x        = args.rowRect.xMin;
            m_ToggleRect.y        = args.rowRect.yMin;
            m_ToggleRect.width    = 16;
            m_ToggleRect.height   = args.rowRect.height;
            args.rowRect.xMin    += m_ToggleRect.width;

            EditorGUI.BeginChangeCheck();
            EditorGUI.showMixedValue = item.isMixedState;
            item.enabled             = EditorGUI.Toggle(m_ToggleRect, "", item.enabled);
            EditorGUI.showMixedValue = false;

            if (EditorGUI.EndChangeCheck())
            {
                if (GetSelection().Any(x => FindItem(x, rootItem) == item))
                {
                    foreach (int id in GetSelection())
                    {
                        var sel = FindItem(id, rootItem) as AssetTreeItem;

                        if (sel != null)
                        {
                            sel.SetEnabled(item.enabled);
                        }
                    }
                }
                else
                {
                    item.SetEnabled(item.enabled);
                }
            }

            bool guiEnabled = GUI.enabled;

            GUI.enabled = item.enabled;
            GUI.Label(args.rowRect, m_TempContent);
            GUI.enabled = guiEnabled;
        }