137 lines
4.2 KiB
C#
137 lines
4.2 KiB
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
using Codice.CM.Common;
|
|
using PlasticGui;
|
|
using PlasticGui.WorkspaceWindow;
|
|
using PlasticGui.WorkspaceWindow.Topbar;
|
|
using PlasticGui.WorkspaceWindow.Merge;
|
|
using Unity.PlasticSCM.Editor.Topbar;
|
|
using Unity.PlasticSCM.Editor.UI;
|
|
|
|
namespace Unity.PlasticSCM.Editor.Developer
|
|
{
|
|
internal class ShelvedChangesNotification :
|
|
NotificationsArea.IShelvedChangesNotification,
|
|
CheckShelvedChanges.IUpdateShelvedChangesNotification
|
|
{
|
|
internal ShelvedChangesNotification(
|
|
WorkspaceInfo wkInfo,
|
|
RepositorySpec repSpec,
|
|
ViewSwitcher viewSwitcher,
|
|
UVCSWindow uvcsWindow)
|
|
{
|
|
mWkInfo = wkInfo;
|
|
mRepSpec = repSpec;
|
|
mViewSwitcher = viewSwitcher;
|
|
mUVCSWindow = uvcsWindow;
|
|
}
|
|
|
|
bool NotificationsArea.IShelvedChangesNotification.HasNotification
|
|
{
|
|
get { return mHasNotification; }
|
|
}
|
|
|
|
void NotificationsArea.IShelvedChangesNotification.SetWorkspaceWindow(
|
|
WorkspaceWindow workspaceWindow)
|
|
{
|
|
mWorkspaceWindow = workspaceWindow;
|
|
}
|
|
|
|
void NotificationsArea.IShelvedChangesNotification.SetShelvedChangesUpdater(
|
|
IShelvedChangesUpdater shelvedChangesUpdater)
|
|
{
|
|
mShelvedChangesUpdater = shelvedChangesUpdater;
|
|
}
|
|
|
|
void NotificationsArea.IShelvedChangesNotification.OnGUI()
|
|
{
|
|
Texture2D icon = Images.GetInfoBellNotificationIcon();
|
|
|
|
NotificationsArea.DrawIcon(
|
|
icon,
|
|
UnityConstants.SHELVED_CHANGES_NOTIFICATION_ICON_SIZE,
|
|
1);
|
|
|
|
GUILayout.Space(1);
|
|
|
|
NotificationsArea.DrawNotification(
|
|
new GUIContentNotification(new GUIContent(
|
|
PlasticLocalization.Name.ShelvedChanges.GetString(),
|
|
PlasticLocalization.Name.ShelvedChangesExplanation.GetString())));
|
|
|
|
GUILayout.Space(3);
|
|
|
|
GenericMenu discardShelveDropdownMenu = new GenericMenu();
|
|
discardShelveDropdownMenu.AddItem(
|
|
new GUIContent(PlasticLocalization.Name.DiscardShelvedChanges.GetString()),
|
|
false,
|
|
() =>
|
|
{
|
|
ShelvedChangesNotificationPanelOperations.DiscardShelvedChanges(
|
|
mWkInfo,
|
|
mShelveInfo,
|
|
this,
|
|
mShelvedChangesUpdater,
|
|
mViewSwitcher,
|
|
mWorkspaceWindow);
|
|
});
|
|
|
|
DrawActionButtonWithMenu.ForTopbar(
|
|
PlasticLocalization.Name.ViewButton.GetString(),
|
|
PlasticLocalization.Name.ViewShelvedChangesButtonExplanation.GetString(),
|
|
() =>
|
|
{
|
|
if (mShelveInfo == null || mViewSwitcher == null)
|
|
return;
|
|
|
|
((IMergeViewLauncher)mViewSwitcher).MergeFrom(
|
|
mRepSpec,
|
|
mShelveInfo,
|
|
EnumMergeType.ChangesetCherryPick,
|
|
showDiscardChangesButton: true);
|
|
},
|
|
discardShelveDropdownMenu);
|
|
}
|
|
|
|
void CheckShelvedChanges.IUpdateShelvedChangesNotification.Hide(
|
|
WorkspaceInfo wkInfo)
|
|
{
|
|
if (!wkInfo.Equals(mWkInfo))
|
|
return;
|
|
|
|
mShelveInfo = null;
|
|
|
|
mHasNotification = false;
|
|
|
|
mUVCSWindow.Repaint();
|
|
}
|
|
|
|
void CheckShelvedChanges.IUpdateShelvedChangesNotification.Show(
|
|
WorkspaceInfo wkInfo,
|
|
RepositorySpec repSpec,
|
|
ChangesetInfo shelveInfo)
|
|
{
|
|
if (!wkInfo.Equals(mWkInfo))
|
|
return;
|
|
|
|
mShelveInfo = shelveInfo;
|
|
|
|
mHasNotification = true;
|
|
|
|
mUVCSWindow.Repaint();
|
|
}
|
|
|
|
bool mHasNotification;
|
|
ChangesetInfo mShelveInfo;
|
|
|
|
WorkspaceWindow mWorkspaceWindow;
|
|
IShelvedChangesUpdater mShelvedChangesUpdater;
|
|
|
|
readonly WorkspaceInfo mWkInfo;
|
|
readonly RepositorySpec mRepSpec;
|
|
readonly ViewSwitcher mViewSwitcher;
|
|
readonly UVCSWindow mUVCSWindow;
|
|
}
|
|
}
|