123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- using UnityEditor;
- using UnityEngine;
- using Codice.Client.BaseCommands.EventTracking;
- using Codice.CM.Common;
- using PlasticGui.WorkspaceWindow.QueryViews.Changesets;
- using PlasticGui;
- using Unity.PlasticSCM.Editor.Tool;
- using Unity.PlasticSCM.Editor.UI.Progress;
- namespace Unity.PlasticSCM.Editor.Views.Changesets
- {
- internal class ChangesetsViewMenu
- {
- internal interface IMenuOperations
- {
- void DiffBranch();
- ChangesetExtendedInfo GetSelectedChangeset();
- }
- internal ChangesetsViewMenu(
- WorkspaceInfo wkInfo,
- IChangesetMenuOperations changesetMenuOperations,
- IMenuOperations menuOperations,
- bool isGluonMode)
- {
- mWkInfo = wkInfo;
- mChangesetMenuOperations = changesetMenuOperations;
- mMenuOperations = menuOperations;
- mIsGluonMode = isGluonMode;
-
- BuildComponents();
- }
- internal void Popup()
- {
- GenericMenu menu = new GenericMenu();
- UpdateMenuItems(menu);
- menu.ShowAsContext();
- }
- internal void SetLoadedBranchId(long loadedBranchId)
- {
- mLoadedBranchId = loadedBranchId;
- }
- void DiffChangesetMenuItem_Click()
- {
- if (LaunchTool.ShowDownloadPlasticExeWindow(
- mWkInfo,
- mIsGluonMode,
- TrackFeatureUseEvent.Features.InstallPlasticCloudFromDiffChangeset,
- TrackFeatureUseEvent.Features.InstallPlasticEnterpriseFromDiffChangeset,
- TrackFeatureUseEvent.Features.CancelPlasticInstallationFromDiffChangeset))
- return;
- mChangesetMenuOperations.DiffChangeset();
- }
- void DiffSelectedChangesetsMenuItem_Click()
- {
- if (LaunchTool.ShowDownloadPlasticExeWindow(
- mWkInfo,
- mIsGluonMode,
- TrackFeatureUseEvent.Features.InstallPlasticCloudFromDiffSelectedChangesets,
- TrackFeatureUseEvent.Features.InstallPlasticEnterpriseFromDiffSelectedChangesets,
- TrackFeatureUseEvent.Features.CancelPlasticInstallationFromDiffSelectedChangesets))
- return;
- mChangesetMenuOperations.DiffSelectedChangesets();
- }
- void BackToMenuItem_Click()
- {
- mChangesetMenuOperations.GoBackToChangeset();
- }
- void DiffBranchMenuItem_Click()
- {
- mMenuOperations.DiffBranch();
- }
- void SwitchToChangesetMenuItem_Click()
- {
- mChangesetMenuOperations.SwitchToChangeset();
- }
- void UpdateMenuItems(GenericMenu menu)
- {
- ChangesetExtendedInfo singleSelectedChangeset = mMenuOperations.GetSelectedChangeset();
- ChangesetMenuOperations operations = ChangesetMenuUpdater.GetAvailableMenuOperations(
- mChangesetMenuOperations.GetSelectedChangesetsCount(),
- mIsGluonMode,
- singleSelectedChangeset.BranchId,
- mLoadedBranchId);
- AddDiffChangesetMenuItem(
- mDiffChangesetMenuItemContent,
- menu,
- singleSelectedChangeset,
- operations,
- DiffChangesetMenuItem_Click);
- AddDiffSelectedChangesetsMenuItem(
- mDiffSelectedChangesetsMenuItemContent,
- menu,
- operations,
- DiffSelectedChangesetsMenuItem_Click);
- if (!IsOnMainBranch(singleSelectedChangeset))
- {
- menu.AddSeparator(string.Empty);
- AddDiffBranchMenuItem(
- mDiffBranchMenuItemContent,
- menu,
- singleSelectedChangeset,
- operations,
- DiffBranchMenuItem_Click);
- }
- menu.AddSeparator(string.Empty);
- AddSwitchToChangesetMenuItem(
- mSwitchToChangesetMenuItemContent,
- menu,
- operations,
- SwitchToChangesetMenuItem_Click);
- if (mIsGluonMode)
- return;
- AddBackToMenuItem(
- mGoBackToMenuItemContent,
- menu,
- operations,
- BackToMenuItem_Click);
- }
- static void AddDiffChangesetMenuItem(
- GUIContent menuItemContent,
- GenericMenu menu,
- ChangesetExtendedInfo changeset,
- ChangesetMenuOperations operations,
- GenericMenu.MenuFunction menuFunction)
- {
- string changesetName =
- changeset != null ?
- changeset.ChangesetId.ToString() :
- string.Empty;
- menuItemContent.text =
- PlasticLocalization.GetString(PlasticLocalization.Name.AnnotateDiffChangesetMenuItem,
- changesetName);
- if (operations.HasFlag(ChangesetMenuOperations.DiffChangeset))
- {
- menu.AddItem(
- menuItemContent,
- false,
- menuFunction);
- return;
- }
- menu.AddDisabledItem(
- menuItemContent);
- }
- static void AddDiffSelectedChangesetsMenuItem(
- GUIContent menuItemContent,
- GenericMenu menu,
- ChangesetMenuOperations operations,
- GenericMenu.MenuFunction menuFunction)
- {
- if (operations.HasFlag(ChangesetMenuOperations.DiffSelectedChangesets))
- {
- menu.AddItem(
- menuItemContent,
- false,
- menuFunction);
- return;
- }
- menu.AddDisabledItem(menuItemContent);
- }
- static void AddBackToMenuItem(
- GUIContent menuItemContent,
- GenericMenu menu,
- ChangesetMenuOperations operations,
- GenericMenu.MenuFunction menuFunction)
- {
- if (operations.HasFlag(ChangesetMenuOperations.GoBackToChangeset))
- {
- menu.AddItem(
- menuItemContent,
- false,
- menuFunction);
- return;
- }
- menu.AddDisabledItem(menuItemContent);
- }
- static void AddDiffBranchMenuItem(
- GUIContent menuItemContent,
- GenericMenu menu,
- ChangesetExtendedInfo changeset,
- ChangesetMenuOperations operations,
- GenericMenu.MenuFunction menuFunction)
- {
- string branchName = GetBranchName(changeset);
- menuItemContent.text =
- PlasticLocalization.GetString(PlasticLocalization.Name.AnnotateDiffBranchMenuItem,
- branchName);
- if (operations.HasFlag(ChangesetMenuOperations.DiffChangeset))
- {
- menu.AddItem(
- menuItemContent,
- false,
- menuFunction);
- return;
- }
- menu.AddDisabledItem(
- menuItemContent);
- }
- static void AddSwitchToChangesetMenuItem(
- GUIContent menuItemContent,
- GenericMenu menu,
- ChangesetMenuOperations operations,
- GenericMenu.MenuFunction menuFunction)
- {
- if (operations.HasFlag(ChangesetMenuOperations.SwitchToChangeset))
- {
- menu.AddItem(
- menuItemContent,
- false,
- menuFunction);
- return;
- }
- menu.AddDisabledItem(menuItemContent);
- }
- void BuildComponents()
- {
- mDiffChangesetMenuItemContent = new GUIContent();
- mDiffSelectedChangesetsMenuItemContent = new GUIContent(
- PlasticLocalization.GetString(PlasticLocalization.Name.ChangesetMenuItemDiffSelected));
- mDiffBranchMenuItemContent = new GUIContent();
- mSwitchToChangesetMenuItemContent = new GUIContent(
- PlasticLocalization.GetString(PlasticLocalization.Name.ChangesetMenuItemSwitchToChangeset));
- mGoBackToMenuItemContent = new GUIContent(
- PlasticLocalization.GetString(PlasticLocalization.Name.ChangesetMenuItemGoBackTo));
- }
-
- static string GetBranchName(ChangesetExtendedInfo changesetInfo)
- {
- if (changesetInfo == null)
- return string.Empty;
- string branchName = changesetInfo.BranchName;
- int lastIndex = changesetInfo.BranchName.LastIndexOf("/");
- if (lastIndex == -1)
- return branchName;
- return branchName.Substring(lastIndex + 1);
- }
- static bool IsOnMainBranch(ChangesetExtendedInfo singleSeletedChangeset)
- {
- if (singleSeletedChangeset == null)
- return false;
- return singleSeletedChangeset.BranchName == MAIN_BRANCH_NAME;
- }
- GUIContent mDiffChangesetMenuItemContent;
- GUIContent mDiffSelectedChangesetsMenuItemContent;
- GUIContent mDiffBranchMenuItemContent;
- GUIContent mSwitchToChangesetMenuItemContent;
- GUIContent mGoBackToMenuItemContent;
- readonly WorkspaceInfo mWkInfo;
- readonly IChangesetMenuOperations mChangesetMenuOperations;
- readonly IMenuOperations mMenuOperations;
- readonly bool mIsGluonMode;
- long mLoadedBranchId = -1;
- const string MAIN_BRANCH_NAME = "/main";
- }
- }
|