| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- using UnityEditor;
- using UnityEngine;
- using PlasticGui;
- using PlasticGui.WorkspaceWindow.IncomingChanges;
- using Unity.PlasticSCM.Editor.UI;
- using Unity.PlasticSCM.Editor.Tool;
- namespace Unity.PlasticSCM.Editor.Views.IncomingChanges.Developer
- {
- internal class IncomingChangesViewMenu
- {
- internal interface IMetaMenuOperations
- {
- void DiffIncomingChanges();
- void DiffYoursWithIncoming();
- bool SelectionHasMeta();
- }
- internal IncomingChangesViewMenu(
- IIncomingChangesViewMenuOperations incomingChangesViewMenuOperations,
- IMetaMenuOperations incomingChangesMetaMenuOperations)
- {
- mIncomingChangesViewMenuOperations = incomingChangesViewMenuOperations;
- mIncomingChangesMetaMenuOperations = incomingChangesMetaMenuOperations;
- BuildComponents();
- }
- internal void Popup()
- {
- GenericMenu menu = new GenericMenu();
- UpdateMenuItems(menu);
- menu.ShowAsContext();
- }
- void MergeSelectedFilesMenuItem_Click()
- {
- if (LaunchTool.ShowDownloadPlasticExeWindow(false))
- return;
- mIncomingChangesViewMenuOperations.MergeContributors();
- }
- void MergeKeepingSourceChangesMenuItem_Click()
- {
- mIncomingChangesViewMenuOperations.MergeKeepingSourceChanges();
- }
- void MergeKeepingWorkspaceChangesMenuItem_Click()
- {
- mIncomingChangesViewMenuOperations.MergeKeepingWorkspaceChanges();
- }
- void DiffYoursWithIncomingMenuItem_Click()
- {
- mIncomingChangesViewMenuOperations.DiffYoursWithIncoming();
- }
- void DiffIncomingChangesMenuItem_Click()
- {
- mIncomingChangesViewMenuOperations.DiffIncomingChanges();
- }
- void DiffMetaYoursWithIncomingMenuItem_Click()
- {
- mIncomingChangesMetaMenuOperations.DiffYoursWithIncoming();
- }
- void DiffMetaIncomingChangesMenuItem_Click()
- {
- mIncomingChangesMetaMenuOperations.DiffIncomingChanges();
- }
- void UpdateMenuItems(GenericMenu menu)
- {
- SelectedIncomingChangesGroupInfo info =
- mIncomingChangesViewMenuOperations.GetSelectedIncomingChangesGroupInfo();
- IncomingChangesMenuOperations operations =
- UpdateIncomingChangesMenu.GetAvailableMenuOperations(info);
- if (operations == IncomingChangesMenuOperations.None)
- {
- menu.AddDisabledItem(GetNoActionMenuItemContent());
- return;
- }
- AddMergeActions(menu, operations);
- menu.AddSeparator(string.Empty);
- AddDiffActions(menu, operations);
- if (!mIncomingChangesMetaMenuOperations.SelectionHasMeta())
- return;
- menu.AddSeparator(string.Empty);
- AddMetaActions(menu, operations);
- }
- void AddMergeActions(
- GenericMenu menu,
- IncomingChangesMenuOperations operations)
- {
- if (operations.HasFlag(IncomingChangesMenuOperations.MergeContributors))
- menu.AddItem(mMergeSelectedFilesMenuItemContent, false,
- MergeSelectedFilesMenuItem_Click);
- else
- menu.AddDisabledItem(mMergeSelectedFilesMenuItemContent);
- if (operations.HasFlag(IncomingChangesMenuOperations.MergeKeepingSourceChanges))
- menu.AddItem(mMergeKeepingSourceChangesMenuItemContent, false,
- MergeKeepingSourceChangesMenuItem_Click);
- else
- menu.AddDisabledItem(mMergeKeepingSourceChangesMenuItemContent);
- if (operations.HasFlag(IncomingChangesMenuOperations.MergeKeepingWorkspaceChanges))
- menu.AddItem(mMergeKeepingWorkspaceChangesMenuItemContent, false,
- MergeKeepingWorkspaceChangesMenuItem_Click);
- else
- menu.AddDisabledItem(mMergeKeepingWorkspaceChangesMenuItemContent);
- }
- void AddDiffActions(GenericMenu menu, IncomingChangesMenuOperations operations)
- {
- if (operations.HasFlag(IncomingChangesMenuOperations.DiffYoursWithIncoming))
- menu.AddItem(mDiffYoursWithIncomingMenuItemContent, false,
- DiffYoursWithIncomingMenuItem_Click);
- else
- menu.AddDisabledItem(mDiffYoursWithIncomingMenuItemContent);
- if (operations.HasFlag(IncomingChangesMenuOperations.DiffIncomingChanges))
- menu.AddItem(mDiffIncomingChangesMenuItemContent, false,
- DiffIncomingChangesMenuItem_Click);
- else
- menu.AddDisabledItem(mDiffIncomingChangesMenuItemContent);
- }
- void AddMetaActions(GenericMenu menu, IncomingChangesMenuOperations operations)
- {
- if (operations.HasFlag(IncomingChangesMenuOperations.DiffYoursWithIncoming))
- menu.AddItem(mDiffMetaYoursWithIncomingMenuItemContent, false,
- DiffMetaYoursWithIncomingMenuItem_Click);
- else
- menu.AddDisabledItem(mDiffMetaYoursWithIncomingMenuItemContent);
- if (operations.HasFlag(IncomingChangesMenuOperations.DiffIncomingChanges))
- menu.AddItem(mDiffMetaIncomingChangesMenuItemContent, false,
- DiffMetaIncomingChangesMenuItem_Click);
- else
- menu.AddDisabledItem(mDiffMetaIncomingChangesMenuItemContent);
- }
- GUIContent GetNoActionMenuItemContent()
- {
- if (mNoActionMenuItemContent == null)
- {
- mNoActionMenuItemContent = new GUIContent(
- PlasticLocalization.GetString(
- PlasticLocalization.Name.NoActionMenuItem));
- }
- return mNoActionMenuItemContent;
- }
- void BuildComponents()
- {
- mMergeSelectedFilesMenuItemContent = new GUIContent(
- PlasticLocalization.GetString(PlasticLocalization.
- Name.MergeSelectedFiles));
- mMergeKeepingSourceChangesMenuItemContent = new GUIContent(
- UnityMenuItem.EscapedText(
- PlasticLocalization.GetString(PlasticLocalization.
- Name.IncomingChangesMenuItemMergeKeepingSourceChanges)));
- mMergeKeepingWorkspaceChangesMenuItemContent = new GUIContent(
- UnityMenuItem.EscapedText(
- PlasticLocalization.GetString(PlasticLocalization.
- Name.IncomingChangesMenuItemMergeKeepingWorkspaceChanges)));
- string diffYoursWithIncomingText = UnityMenuItem.EscapedText(
- PlasticLocalization.GetString(PlasticLocalization.
- Name.IncomingChangesMenuItemDiffYoursWithIncoming));
- string diffIncomingChangesText = UnityMenuItem.EscapedText(
- PlasticLocalization.GetString(PlasticLocalization.
- Name.IncomingChangesMenuItemDiffIncomingChanges));
- mDiffYoursWithIncomingMenuItemContent = new GUIContent(
- diffYoursWithIncomingText);
- mDiffIncomingChangesMenuItemContent = new GUIContent(
- diffIncomingChangesText);
- mDiffMetaYoursWithIncomingMenuItemContent = new GUIContent(
- string.Format(
- "{0}/{1}",
- MetaPath.META_EXTENSION,
- diffYoursWithIncomingText));
- mDiffMetaIncomingChangesMenuItemContent = new GUIContent(
- string.Format(
- "{0}/{1}",
- MetaPath.META_EXTENSION,
- diffIncomingChangesText));
- }
- GUIContent mNoActionMenuItemContent;
- GUIContent mMergeSelectedFilesMenuItemContent;
- GUIContent mMergeKeepingSourceChangesMenuItemContent;
- GUIContent mMergeKeepingWorkspaceChangesMenuItemContent;
- GUIContent mDiffYoursWithIncomingMenuItemContent;
- GUIContent mDiffIncomingChangesMenuItemContent;
- GUIContent mDiffMetaYoursWithIncomingMenuItemContent;
- GUIContent mDiffMetaIncomingChangesMenuItemContent;
- readonly IIncomingChangesViewMenuOperations mIncomingChangesViewMenuOperations;
- readonly IMetaMenuOperations mIncomingChangesMetaMenuOperations;
- }
- }
|