106 lines
3.4 KiB
C#
106 lines
3.4 KiB
C#
using UnityEditor;
|
|
|
|
using PlasticGui.WorkspaceWindow.Merge;
|
|
using Unity.PlasticSCM.Editor.Views.Merge.Developer.DirectoryConflicts;
|
|
using UnityEngine;
|
|
|
|
namespace Unity.PlasticSCM.Editor.Views.Merge.Developer
|
|
{
|
|
internal class MergeViewMenu
|
|
{
|
|
internal GenericMenu Menu
|
|
{
|
|
get
|
|
{
|
|
return mMergeViewFileConflictMenu != null ?
|
|
mMergeViewFileConflictMenu.Menu : mMergeViewDirectoryConflictMenu != null ?
|
|
mMergeViewDirectoryConflictMenu.Menu : null;
|
|
}
|
|
}
|
|
|
|
internal MergeViewMenu(
|
|
IMergeViewMenuOperations mergeViewMenuOperations,
|
|
MergeViewFileConflictMenu.IMetaMenuOperations mergeMetaMenuOperations,
|
|
bool isIncomingMerge,
|
|
bool isMergeTo,
|
|
bool isShelvesetMerge = false)
|
|
{
|
|
mMergeViewMenuOperations = mergeViewMenuOperations;
|
|
mMergeMetaMenuOperations = mergeMetaMenuOperations;
|
|
mIsIncomingMerge = isIncomingMerge;
|
|
mIsMergeTo = isMergeTo;
|
|
mIsShelvesetMerge = isShelvesetMerge;
|
|
}
|
|
|
|
internal void Popup()
|
|
{
|
|
SelectedMergeChangesGroupInfo selectedGroupInfo =
|
|
mMergeViewMenuOperations.GetSelectedMergeChangesGroupInfo();
|
|
|
|
if (selectedGroupInfo.SelectedConflict == null)
|
|
return;
|
|
|
|
if (selectedGroupInfo.IsDirectoryConflictsSelection)
|
|
{
|
|
GetMergeViewDirectoryConflictMenu().Popup();
|
|
return;
|
|
}
|
|
|
|
GetMergeViewFileConflictMenu().Popup();
|
|
}
|
|
|
|
internal bool ProcessKeyActionIfNeeded(Event e)
|
|
{
|
|
SelectedMergeChangesGroupInfo selectedGroupInfo =
|
|
mMergeViewMenuOperations.GetSelectedMergeChangesGroupInfo();
|
|
|
|
if (selectedGroupInfo.SelectedConflict == null)
|
|
return false;
|
|
|
|
if (selectedGroupInfo.IsDirectoryConflictsSelection)
|
|
return false;
|
|
|
|
if (mMergeViewFileConflictMenu == null)
|
|
return false;
|
|
|
|
return mMergeViewFileConflictMenu.ProcessKeyActionIfNeeded(e);
|
|
}
|
|
|
|
MergeViewFileConflictMenu GetMergeViewFileConflictMenu()
|
|
{
|
|
if (mMergeViewFileConflictMenu == null)
|
|
{
|
|
mMergeViewFileConflictMenu =
|
|
new MergeViewFileConflictMenu(
|
|
mMergeViewMenuOperations,
|
|
mMergeMetaMenuOperations,
|
|
mIsIncomingMerge,
|
|
mIsMergeTo,
|
|
mIsShelvesetMerge);
|
|
}
|
|
|
|
return mMergeViewFileConflictMenu;
|
|
}
|
|
|
|
MergeViewDirectoryConflictMenu GetMergeViewDirectoryConflictMenu()
|
|
{
|
|
if (mMergeViewDirectoryConflictMenu == null)
|
|
{
|
|
mMergeViewDirectoryConflictMenu =
|
|
new MergeViewDirectoryConflictMenu(mMergeViewMenuOperations);
|
|
}
|
|
|
|
return mMergeViewDirectoryConflictMenu;
|
|
}
|
|
|
|
MergeViewFileConflictMenu mMergeViewFileConflictMenu;
|
|
MergeViewDirectoryConflictMenu mMergeViewDirectoryConflictMenu;
|
|
|
|
readonly IMergeViewMenuOperations mMergeViewMenuOperations;
|
|
readonly MergeViewFileConflictMenu.IMetaMenuOperations mMergeMetaMenuOperations;
|
|
readonly bool mIsIncomingMerge;
|
|
readonly bool mIsMergeTo;
|
|
readonly bool mIsShelvesetMerge;
|
|
}
|
|
}
|