protected override void RowGUI(RowGUIArgs args)
        {
            Event evt = Event.current;

            extraSpaceBeforeIconAndLabel = 18f;
            TenjinAssetViewItem avi = (TenjinAssetViewItem)args.item;

            Rect toggleRect = args.rowRect;

            toggleRect.x    += GetContentIndent(args.item);
            toggleRect.width = 16f;

            //// Ensure row is selected before using the toggle (usability)
            if (evt.type == EventType.MouseDown && toggleRect.Contains(evt.mousePosition))
            {
                SelectionClick(args.item, false);
            }

            EditorGUI.BeginChangeCheck();
            bool selected = EditorGUI.Toggle(toggleRect, avi.selected);

            if (EditorGUI.EndChangeCheck())
            {
                avi.selected = selected;
                SetSelectedRecursively(avi.children, selected);
            }

            // Text
            base.RowGUI(args);
        }
        protected override TreeViewItem BuildRoot()
        {
            var selectedAssets = TenjinPackager.LoadManifest();
            var assets         = AssetDatabase.FindAssets(null, new[] { "Assets" }).Select(x => AssetDatabase.GUIDToAssetPath(x));
            var root           = new TenjinAssetViewItem {
                selected = false, id = 0, depth = -1, displayName = "Root"
            };

            var allItems = assets.Select((a, index) =>
            {
                return(new TenjinAssetViewItem
                {
                    selected = selectedAssets.Contains(a),
                    id = index,
                    depth = DepthFromPath(a),
                    displayName = a
                } as TreeViewItem);
            }).ToList();

            SetupParentsAndChildrenFromDepths(root, allItems);

            return(root);
        }