Files
GameDevTVObstacleDodge/Library/PackageCache/com.unity.collab-proxy@1ec4e416a4af/Editor/AssetMenu/ProjectViewCloudDriveAssetMenu.cs

85 lines
2.5 KiB
C#

using System.Linq;
using UnityEditor;
using PlasticGui;
using Unity.PlasticSCM.Editor.AssetMenu.Dialogs;
using Unity.PlasticSCM.Editor.CloudDrive;
using Unity.PlasticSCM.Editor.CloudDrive.CreateWorkspace;
using Unity.PlasticSCM.Editor.UI;
namespace Unity.PlasticSCM.Editor.AssetMenu
{
internal static class ProjectViewCloudDriveAssetMenu
{
internal static void AddMenuItem()
{
HandleMenuItem.AddMenuItem(
PlasticLocalization.Name.AddToUnityCloudDriveMenu.GetString(),
ProjectViewUVCSAssetMenu.BASE_MENU_ITEM_PRIORITY,
AddToCloudDrive,
ValidateAddToCloudDrive);
HandleMenuItem.UpdateAllMenus();
}
internal static void RemoveMenuItem()
{
HandleMenuItem.RemoveMenuItem(
PlasticLocalization.Name.AddToUnityCloudDriveMenu.GetString());
}
static void AddToCloudDrive()
{
if (PlasticGuiConfig.Get().Configuration.ShowCloudDriveWelcomeView ||
UnityConfigurationChecker.NeedsConfiguration())
{
ShowWindow.CloudDrive();
return;
}
if (!CloudDriveWindow.HasCloudDriveWorkspaces())
{
CreateWorkspaceDialog.CreateWorkspace(
PlasticGui.Plastic.WebRestAPI,
PlasticGui.Plastic.API,
EditorWindow.focusedWindow,
(createdWorkspace) => { ShowAddToCloudDriveDialog(); });
return;
}
ShowAddToCloudDriveDialog();
}
static void ShowAddToCloudDriveDialog()
{
string[] selectedPaths = GetSelectedAssetPaths();
if (selectedPaths.Length == 0)
return;
AddToCloudDriveDialog.ShowDialog(
selectedPaths,
PlasticGui.Plastic.WebRestAPI,
PlasticGui.Plastic.API,
EditorWindow.focusedWindow);
}
static bool ValidateAddToCloudDrive()
{
return Selection.assetGUIDs != null && Selection.assetGUIDs.Length > 0;
}
static string[] GetSelectedAssetPaths()
{
if (Selection.assetGUIDs == null || Selection.assetGUIDs.Length == 0)
return new string[0];
return Selection.assetGUIDs
.Select(guid => AssetDatabase.GUIDToAssetPath(guid))
.Where(path => !string.IsNullOrEmpty(path))
.ToArray();
}
}
}