A game about forced loneliness, made by TACStudios
1using UnityEditor;
2
3using PlasticGui.WorkspaceWindow.Merge;
4using Unity.PlasticSCM.Editor.Views.Merge.Developer.DirectoryConflicts;
5using UnityEngine;
6
7namespace Unity.PlasticSCM.Editor.Views.Merge.Developer
8{
9 internal class MergeViewMenu
10 {
11 internal GenericMenu Menu
12 {
13 get
14 {
15 return mMergeViewFileConflictMenu != null ?
16 mMergeViewFileConflictMenu.Menu : mMergeViewDirectoryConflictMenu != null ?
17 mMergeViewDirectoryConflictMenu.Menu : null;
18 }
19 }
20
21 internal MergeViewMenu(
22 IMergeViewMenuOperations mergeViewMenuOperations,
23 MergeViewFileConflictMenu.IMetaMenuOperations mergeMetaMenuOperations,
24 bool isIncomingMerge,
25 bool isMergeTo,
26 bool isShelvesetMerge = false)
27 {
28 mMergeViewMenuOperations = mergeViewMenuOperations;
29 mMergeMetaMenuOperations = mergeMetaMenuOperations;
30 mIsIncomingMerge = isIncomingMerge;
31 mIsMergeTo = isMergeTo;
32 mIsShelvesetMerge = isShelvesetMerge;
33 }
34
35 internal void Popup()
36 {
37 SelectedMergeChangesGroupInfo selectedGroupInfo =
38 mMergeViewMenuOperations.GetSelectedMergeChangesGroupInfo();
39
40 if (selectedGroupInfo.SelectedConflict == null)
41 return;
42
43 if (selectedGroupInfo.IsDirectoryConflictsSelection)
44 {
45 GetMergeViewDirectoryConflictMenu().Popup();
46 return;
47 }
48
49 GetMergeViewFileConflictMenu().Popup();
50 }
51
52 internal bool ProcessKeyActionIfNeeded(Event e)
53 {
54 SelectedMergeChangesGroupInfo selectedGroupInfo =
55 mMergeViewMenuOperations.GetSelectedMergeChangesGroupInfo();
56
57 if (selectedGroupInfo.SelectedConflict == null)
58 return false;
59
60 if (selectedGroupInfo.IsDirectoryConflictsSelection)
61 return false;
62
63 if (mMergeViewFileConflictMenu == null)
64 return false;
65
66 return mMergeViewFileConflictMenu.ProcessKeyActionIfNeeded(e);
67 }
68
69 MergeViewFileConflictMenu GetMergeViewFileConflictMenu()
70 {
71 if (mMergeViewFileConflictMenu == null)
72 {
73 mMergeViewFileConflictMenu =
74 new MergeViewFileConflictMenu(
75 mMergeViewMenuOperations,
76 mMergeMetaMenuOperations,
77 mIsIncomingMerge,
78 mIsMergeTo,
79 mIsShelvesetMerge);
80 }
81
82 return mMergeViewFileConflictMenu;
83 }
84
85 MergeViewDirectoryConflictMenu GetMergeViewDirectoryConflictMenu()
86 {
87 if (mMergeViewDirectoryConflictMenu == null)
88 {
89 mMergeViewDirectoryConflictMenu =
90 new MergeViewDirectoryConflictMenu(mMergeViewMenuOperations);
91 }
92
93 return mMergeViewDirectoryConflictMenu;
94 }
95
96 MergeViewFileConflictMenu mMergeViewFileConflictMenu;
97 MergeViewDirectoryConflictMenu mMergeViewDirectoryConflictMenu;
98
99 readonly IMergeViewMenuOperations mMergeViewMenuOperations;
100 readonly MergeViewFileConflictMenu.IMetaMenuOperations mMergeMetaMenuOperations;
101 readonly bool mIsIncomingMerge;
102 readonly bool mIsMergeTo;
103 readonly bool mIsShelvesetMerge;
104 }
105}