playtest-unity/playtest/Library/PackageCache/com.unity.testtools.codecov.../Editor/CoverageWindow/PathToAddDropDownMenu.cs

74 lines
2.5 KiB
C#

using UnityEditor.TestTools.CodeCoverage.Analytics;
using UnityEngine;
namespace UnityEditor.TestTools.CodeCoverage
{
internal class PathToAddDropDownMenu
{
GenericMenu m_Menu;
string m_PathsToFilter;
readonly PathToAddHandler m_AddPathToIncludeHandler;
readonly PathToAddHandler m_AddPathToExcludeHandler;
readonly PathFilterType m_PathFilterType;
static class Styles
{
public static readonly GUIContent AddFolderLabel = EditorGUIUtility.TrTextContent("Add Folder");
public static readonly GUIContent AddFileLabel = EditorGUIUtility.TrTextContent("Add File");
}
public PathToAddDropDownMenu(CodeCoverageWindow parent, PathFilterType type)
{
m_PathFilterType = type;
m_AddPathToIncludeHandler = new PathToAddHandler(parent, PathFilterType.Include);
m_AddPathToExcludeHandler = new PathToAddHandler(parent, PathFilterType.Exclude);
}
private void PopulateMenu()
{
m_Menu = new GenericMenu();
m_Menu.AddItem(Styles.AddFolderLabel, false, () => AddFolder());
m_Menu.AddItem(Styles.AddFileLabel, false, () => AddFile());
}
public void Show(Rect position, string pathsToFilter)
{
m_PathsToFilter = pathsToFilter;
PopulateMenu();
m_Menu.DropDown(position);
}
private void AddFolder()
{
if (m_PathFilterType == PathFilterType.Include)
{
CoverageAnalytics.instance.CurrentCoverageEvent.selectAddFolder_IncludedPaths = true;
m_AddPathToIncludeHandler.BrowseForDir(m_PathsToFilter);
}
else
{
CoverageAnalytics.instance.CurrentCoverageEvent.selectAddFolder_ExcludedPaths = true;
m_AddPathToExcludeHandler.BrowseForDir(m_PathsToFilter);
}
}
private void AddFile()
{
if (m_PathFilterType == PathFilterType.Include)
{
CoverageAnalytics.instance.CurrentCoverageEvent.selectAddFile_IncludedPaths = true;
m_AddPathToIncludeHandler.BrowseForFile(m_PathsToFilter);
}
else
{
CoverageAnalytics.instance.CurrentCoverageEvent.selectAddFile_ExcludedPaths = true;
m_AddPathToExcludeHandler.BrowseForFile(m_PathsToFilter);
}
}
}
}