File size: 4,442 Bytes
18a519f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | using System.Collections.Generic;
using UnityEngine;
using Codice.CM.Common;
using PlasticGui;
using PlasticGui.WorkspaceWindow.Open;
using PlasticGui.WorkspaceWindow.PendingChanges;
using PlasticGui.WorkspaceWindow.PendingChanges.Changelists;
using Unity.PlasticSCM.Editor.Views.PendingChanges.Changelists;
namespace Unity.PlasticSCM.Editor.Views.PendingChanges
{
internal class PendingChangesViewMenu
{
internal interface IGetSelectedNodes
{
List<IPlasticTreeNode> GetSelectedNodes();
}
internal PendingChangesViewMenu(
WorkspaceInfo wkInfo,
IPendingChangesMenuOperations pendingChangesViewOperations,
IFilesFilterPatternsMenuOperations filterMenuOperations,
IOpenMenuOperations openMenuOperations,
PendingChangesViewPendingChangeMenu.IMetaMenuOperations metaMenuOperations,
IChangelistMenuOperations changelistMenuOperations,
IGetSelectedNodes getSelectedNodes,
bool isGluonMode)
{
mWkInfo = wkInfo;
mPendingChangesViewOperations = pendingChangesViewOperations;
mFilterMenuOperations = filterMenuOperations;
mOpenMenuOperations = openMenuOperations;
mMetaMenuOperations = metaMenuOperations;
mChangelistMenuOperations = changelistMenuOperations;
mGetSelectedNodes = getSelectedNodes;
mIsGluonMode = isGluonMode;
}
internal void Popup()
{
List<IPlasticTreeNode> selectedNodes = mGetSelectedNodes.GetSelectedNodes();
if (AreAllChangelists(selectedNodes))
{
GetChangelistMenu().Popup();
return;
}
if (AreAllPendingChanges(selectedNodes))
{
GetPendingChangeMenu().Popup();
return;
}
}
internal bool ProcessKeyActionIfNeeded(Event e)
{
List<IPlasticTreeNode> selectedNodes = mGetSelectedNodes.GetSelectedNodes();
if (AreAllChangelists(selectedNodes))
{
return GetChangelistMenu().ProcessKeyActionIfNeeded(e);
}
if (AreAllPendingChanges(selectedNodes))
{
return GetPendingChangeMenu().ProcessKeyActionIfNeeded(e);
}
return false;
}
PendingChangesViewPendingChangeMenu GetPendingChangeMenu()
{
if (mPendingChangeMenu == null)
{
mPendingChangeMenu = new PendingChangesViewPendingChangeMenu(
mWkInfo,
mPendingChangesViewOperations,
mChangelistMenuOperations,
mOpenMenuOperations,
mMetaMenuOperations,
mFilterMenuOperations);
}
return mPendingChangeMenu;
}
ChangelistMenu GetChangelistMenu()
{
if (mChangelistMenu == null)
mChangelistMenu = new ChangelistMenu(
mChangelistMenuOperations,
mIsGluonMode);
return mChangelistMenu;
}
static bool AreAllChangelists(List<IPlasticTreeNode> selectedNodes)
{
foreach (IPlasticTreeNode node in selectedNodes)
{
if (!(node is ChangelistNode))
return false;
}
return true;
}
static bool AreAllPendingChanges(List<IPlasticTreeNode> selectedNodes)
{
foreach (IPlasticTreeNode node in selectedNodes)
{
if (!(node is PendingChangeInfo))
return false;
}
return true;
}
PendingChangesViewPendingChangeMenu mPendingChangeMenu;
ChangelistMenu mChangelistMenu;
readonly WorkspaceInfo mWkInfo;
readonly IPendingChangesMenuOperations mPendingChangesViewOperations;
readonly IFilesFilterPatternsMenuOperations mFilterMenuOperations;
readonly IOpenMenuOperations mOpenMenuOperations;
readonly PendingChangesViewPendingChangeMenu.IMetaMenuOperations mMetaMenuOperations;
readonly IChangelistMenuOperations mChangelistMenuOperations;
readonly IGetSelectedNodes mGetSelectedNodes;
readonly bool mIsGluonMode;
}
}
|