Inheritance: DraggablePopupWindow
        public static void ApplyCustom()
        {
            var window   = RainbowFoldersPopup.GetDraggableWindow();
            var position = RainbowFoldersEditorUtility.GetProjectWindow().position.position + new Vector2(10f, 30f);
            var paths    = Selection.assetGUIDs.Select <string, string>(AssetDatabase.GUIDToAssetPath).Where(AssetDatabase.IsValidFolder).ToList();

            window.ShowWithParams(position, paths.ToList(), 0);
        }
Beispiel #2
0
        private static void DrawEditIcon(string guid, Rect rect)
        {
            if (!Event.current.alt)
            {
                _multiSelection = false;
                return;
            }

            var isSmall     = IsIconSmall(ref rect);
            var isMouseOver = rect.Contains(Event.current.mousePosition);

            _multiSelection = (IsSelected(guid)) ? isMouseOver || _multiSelection : !isMouseOver && _multiSelection;

            // if mouse is not over current folder icon or selected group
            if (!isMouseOver && (!IsSelected(guid) || !_multiSelection))
            {
                return;
            }

            var path = AssetDatabase.GUIDToAssetPath(guid);

            if (!AssetDatabase.IsValidFolder(path))
            {
                return;
            }

            var editIcon = RainbowFoldersEditorUtility.GetEditFolderIcon(isSmall);

            DrawCustomIcon(ref rect, editIcon, isSmall);

            if (GUI.Button(rect, GUIContent.none, GUIStyle.none))
            {
                var window   = RainbowFoldersPopup.GetDraggableWindow();
                var position = GUIUtility.GUIToScreenPoint(rect.position + new Vector2(0, rect.height + 2));

                if (_multiSelection)
                {
                    var assetGUIDs = Selection.assetGUIDs;
                    var size       = assetGUIDs.Length;

                    var paths = new string[size];
                    for (var i = 0; i < size; i++)
                    {
                        paths[i] = AssetDatabase.GUIDToAssetPath(assetGUIDs[i]);
                    }
                    var index = ArrayUtility.IndexOf(paths, path);

                    window.ShowWithParams(position, paths, index);
                }
                else
                {
                    window.ShowWithParams(position, new[] { path }, 0);
                }
            }

            EditorApplication.RepaintProjectWindow();
        }
        private static void ShowPopupWindow(Rect rect, string path)
        {
            var window   = RainbowFoldersPopup.GetDraggableWindow();
            var position = GUIUtility.GUIToScreenPoint(rect.position + new Vector2(0, rect.height + 2));

            if (_multiSelection)
            {
                // ReSharper disable once RedundantTypeArgumentsOfMethod
                var paths = Selection.assetGUIDs
                            .Select <string, string>(AssetDatabase.GUIDToAssetPath)
                            .Where(AssetDatabase.IsValidFolder).ToList();

                var index = paths.IndexOf(path);
                window.ShowWithParams(position, paths, index);
            }
            else
            {
                window.ShowWithParams(position, new List <string> {
                    path
                }, 0);
            }
        }