123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- using System.Collections.Generic;
- using System.IO;
-
- using UnityEditor.VersionControl;
-
- using PlasticGui.WorkspaceWindow.Items;
- using Unity.PlasticSCM.Editor.AssetsOverlays;
- using Unity.PlasticSCM.Editor.AssetsOverlays.Cache;
- using Unity.PlasticSCM.Editor.AssetUtils;
-
- namespace Unity.PlasticSCM.Editor.AssetMenu
- {
- internal static class AssetsSelection
- {
- internal static Asset GetSelectedAsset(
- string wkPath,
- AssetList assetList)
- {
- if (assetList.Count == 0)
- return null;
-
- foreach (Asset asset in assetList)
- {
- if (AssetsPath.GetFullPathUnderWorkspace.
- ForAsset(wkPath, asset.path) == null)
- continue;
-
- return asset;
- }
-
- return null;
- }
-
- internal static string GetSelectedPath(
- string wkPath,
- AssetList assetList)
- {
- Asset result = GetSelectedAsset(wkPath, assetList);
-
- if (result == null)
- return null;
-
- return Path.GetFullPath(result.path);
- }
-
- internal static List<string> GetSelectedPaths(
- string wkPath,
- AssetList assetList)
- {
- List<string> result = new List<string>();
-
- foreach (Asset asset in assetList)
- {
- string fullPath = AssetsPath.GetFullPathUnderWorkspace.
- ForAsset(wkPath, asset.path);
-
- if (fullPath == null)
- continue;
-
- result.Add(fullPath);
- }
-
- return result;
- }
-
- internal static SelectedPathsGroupInfo GetSelectedPathsGroupInfo(
- string wkPath,
- AssetList assetList,
- IAssetStatusCache statusCache)
- {
- SelectedPathsGroupInfo result = new SelectedPathsGroupInfo();
-
- if (assetList.Count == 0)
- return result;
-
- result.IsRootSelected = false;
- result.IsCheckedoutEverySelected = true;
- result.IsDirectoryEverySelected = true;
- result.IsCheckedinEverySelected = true;
- result.IsChangedEverySelected = true;
-
- foreach (Asset asset in assetList)
- {
- string fullPath = AssetsPath.GetFullPathUnderWorkspace.
- ForAsset(wkPath, asset.path);
-
- if (fullPath == null)
- continue;
-
- if (MetaPath.IsMetaPath(fullPath))
- fullPath = MetaPath.GetPathFromMetaPath(fullPath);
-
- AssetStatus status = statusCache.GetStatus(fullPath);
- string assetName = GetAssetName(asset);
-
- result.IsCheckedoutEverySelected &= ClassifyAssetStatus.IsCheckedOut(status);
- result.IsDirectoryEverySelected &= asset.isFolder;
- result.IsCheckedinEverySelected &= false; // TODO: not implemented yet
- result.IsChangedEverySelected &= false; // TODO: not implemented yet
-
- result.IsAnyDirectorySelected |= asset.isFolder;
- result.IsAnyPrivateSelected |= ClassifyAssetStatus.IsPrivate(status) || ClassifyAssetStatus.IsIgnored(status);
-
- result.FilterInfo.IsAnyIgnoredSelected |= ClassifyAssetStatus.IsIgnored(status);
- result.FilterInfo.IsAnyHiddenChangedSelected |= ClassifyAssetStatus.IsHiddenChanged(status);
-
- result.SelectedCount++;
-
- if (result.SelectedCount == 1)
- {
- result.FirstIsControlled = ClassifyAssetStatus.IsControlled(status);
- result.FirstIsDirectory = asset.isFolder;
-
- result.FilterInfo.CommonName = assetName;
- result.FilterInfo.CommonExtension = Path.GetExtension(assetName);
- result.FilterInfo.CommonFullPath = asset.assetPath;
- continue;
- }
-
- if (result.FilterInfo.CommonName != assetName)
- result.FilterInfo.CommonName = null;
-
- if (result.FilterInfo.CommonExtension != Path.GetExtension(assetName))
- result.FilterInfo.CommonExtension = null;
-
- if (result.FilterInfo.CommonFullPath != asset.assetPath)
- result.FilterInfo.CommonFullPath = null;
- }
-
- return result;
- }
-
- static string GetAssetName(Asset asset)
- {
- if (asset.isFolder)
- return Path.GetFileName(Path.GetDirectoryName(asset.path));
-
- return asset.fullName;
- }
- }
- }
|