| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891 |
- using System;
- using System.Collections.Generic;
- using UnityEditor;
- using UnityEngine;
- using Codice.Client.BaseCommands;
- using Codice.Client.BaseCommands.Merge;
- using Codice.Client.Commands;
- using Codice.Client.Common;
- using Codice.Client.Common.FsNodeReaders;
- using Codice.Client.Common.Threading;
- using Codice.CM.Common;
- using Codice.CM.Common.Merge;
- using PlasticGui;
- using PlasticGui.WorkspaceWindow;
- using PlasticGui.WorkspaceWindow.BranchExplorer;
- using PlasticGui.WorkspaceWindow.Diff;
- using PlasticGui.WorkspaceWindow.IncomingChanges;
- using PlasticGui.WorkspaceWindow.Merge;
- using Unity.PlasticSCM.Editor.AssetUtils;
- using Unity.PlasticSCM.Editor.UI;
- using Unity.PlasticSCM.Editor.UI.Progress;
- using Unity.PlasticSCM.Editor.UI.Tree;
- using Unity.PlasticSCM.Editor.Views.IncomingChanges.Developer.DirectoryConflicts;
- using Unity.PlasticSCM.Editor.Tool;
- namespace Unity.PlasticSCM.Editor.Views.IncomingChanges.Developer
- {
- internal class IncomingChangesTab :
- IIncomingChangesTab,
- IRefreshableView,
- MergeViewLogic.IMergeView,
- MergeChangesTree.IGetConflictResolution,
- IIncomingChangesViewMenuOperations,
- IncomingChangesViewMenu.IMetaMenuOperations
- {
- internal IncomingChangesTab(
- WorkspaceInfo wkInfo,
- IWorkspaceWindow workspaceWindow,
- IViewSwitcher switcher,
- NewIncomingChangesUpdater newIncomingChangesUpdater,
- EditorWindow parentWindow)
- {
- mWkInfo = wkInfo;
- mWorkspaceWindow = workspaceWindow;
- mSwitcher = switcher;
- mNewIncomingChangesUpdater = newIncomingChangesUpdater;
- mParentWindow = parentWindow;
- mGuiMessage = new UnityPlasticGuiMessage(parentWindow);
- BuildComponents(mWkInfo);
- mProgressControls = new ProgressControlsForViews();
- PlasticNotifier plasticNotifier = new PlasticNotifier();
- mMergeController = new MergeController(
- mWkInfo,
- null,
- null,
- EnumMergeType.IncomingMerge,
- true,
- plasticNotifier,
- null);
- mMergeViewLogic = new MergeViewLogic(
- mWkInfo,
- EnumMergeType.IncomingMerge,
- true,
- mMergeController,
- plasticNotifier,
- ShowIncomingChangesFrom.NotificationBar,
- null,
- mNewIncomingChangesUpdater,
- null,
- this,
- NewChangesInWk.Build(mWkInfo, new BuildWorkspacekIsRelevantNewChange()),
- mProgressControls,
- null);
- ((IRefreshableView)this).Refresh();
- }
- bool IIncomingChangesTab.IsVisible{ get; set; }
- void IIncomingChangesTab.OnDisable()
- {
- TreeHeaderSettings.Save(
- mIncomingChangesTreeView.multiColumnHeader.state,
- UnityConstants.DEVELOPER_INCOMING_CHANGES_TABLE_SETTINGS_NAME);
- }
- void IIncomingChangesTab.Update()
- {
- mProgressControls.UpdateProgress(mParentWindow);
- }
- void IIncomingChangesTab.OnGUI()
- {
- if (Event.current.type == EventType.Layout)
- {
- mHasPendingDirectoryConflicts =
- MergeTreeResultParser.GetUnsolvedDirectoryConflictsCount(mResultConflicts) > 0;
- mIsOperationRunning = mProgressControls.IsOperationRunning();
- }
- DoActionsToolbar(
- mIsProcessMergesButtonVisible,
- mIsCancelMergesButtonVisible,
- mIsProcessMergesButtonEnabled,
- mIsCancelMergesButtonEnabled,
- mProcessMergesButtonText,
- mHasPendingDirectoryConflicts,
- mIsOperationRunning,
- mWorkspaceWindow,
- mMergeViewLogic,
- mProgressControls.ProgressData);
- DoFileConflictsArea(
- mIncomingChangesTreeView,
- mResultConflicts,
- mSolvedFileConflicts,
- mRootMountPoint,
- mIsOperationRunning);
- List<MergeChangeInfo> selectedIncomingChanges =
- mIncomingChangesTreeView.GetSelectedIncomingChanges();
- if (GetSelectedIncomingChangesGroupInfo.For(
- selectedIncomingChanges).IsDirectoryConflictsSelection &&
- !Mouse.IsRightMouseButtonPressed(Event.current))
- {
- DoDirectoryConflictResolutionPanel(
- selectedIncomingChanges,
- new Action<MergeChangeInfo>(ResolveDirectoryConflict),
- mConflictResolutionStates);
- }
- if (mIsMessageLabelVisible)
- DoInfoMessageArea(mMessageLabelText);
- if (mIsErrorMessageLabelVisible)
- DoErrorMessageArea(mErrorMessageLabelText);
- if (mProgressControls.HasNotification())
- {
- DrawProgressForViews.ForNotificationArea(
- mProgressControls.ProgressData);
- }
- }
- void IIncomingChangesTab.AutoRefresh()
- {
- BranchInfo workingBranch = null;
- IThreadWaiter waiter = ThreadWaiter.GetWaiter(10);
- waiter.Execute(
- /*threadOperationDelegate*/ delegate
- {
- workingBranch = OverlappedCalculator.GetWorkingBranch(
- mWkInfo.ClientPath);
- },
- /*afterOperationDelegate*/ delegate
- {
- if (waiter.Exception != null)
- {
- ExceptionsHandler.DisplayException(waiter.Exception);
- return;
- }
- mMergeController.UpdateMergeObjectInfoIfNeeded(workingBranch);
- mMergeViewLogic.AutoRefresh();
- });
- }
- void IRefreshableView.Refresh()
- {
- BranchInfo workingBranch = null;
- IThreadWaiter waiter = ThreadWaiter.GetWaiter(10);
- waiter.Execute(
- /*threadOperationDelegate*/ delegate
- {
- workingBranch = OverlappedCalculator.GetWorkingBranch(
- mWkInfo.ClientPath);
- },
- /*afterOperationDelegate*/ delegate
- {
- if (waiter.Exception != null)
- {
- ExceptionsHandler.DisplayException(waiter.Exception);
- return;
- }
- mMergeController.UpdateMergeObjectInfoIfNeeded(workingBranch);
- mMergeViewLogic.Refresh();
- });
- }
- void MergeViewLogic.IMergeView.UpdateData(
- MergeTreeResult resultConflicts,
- ExplainMergeData explainMergeData,
- MergeSolvedFileConflicts solvedFileConflicts,
- MountPointWithPath rootMountPoint,
- bool isIncomingMerge,
- bool isMergeTo,
- bool isUpdateMerge,
- bool mergeHasFinished)
- {
- HideMessage();
- ShowProcessMergesButton(MergeViewTexts.GetProcessMergeButtonText(
- MergeTreeResultParser.GetFileConflictsCount(resultConflicts) > 0,
- true));
- mResultConflicts = resultConflicts;
- mSolvedFileConflicts = solvedFileConflicts;
- mRootMountPoint = rootMountPoint;
- mConflictResolutionStates.Clear();
- UpdateFileConflictsTree(
- MergeChangesTree.BuildForIncomingChangesView(
- mResultConflicts,
- this,
- mRootMountPoint),
- mIncomingChangesTreeView);
- }
- void MergeViewLogic.IMergeView.UpdateSolvedFileConflicts(
- MergeSolvedFileConflicts solvedFileConflicts)
- {
- mIncomingChangesTreeView.UpdateSolvedFileConflicts(
- solvedFileConflicts);
- }
- void MergeViewLogic.IMergeView.ShowMessage(
- string title,
- string message,
- bool isErrorMessage)
- {
- if (isErrorMessage)
- {
- mErrorMessageLabelText = message;
- mIsErrorMessageLabelVisible = true;
- return;
- }
- mMessageLabelText = message;
- mIsMessageLabelVisible = true;
- }
- string MergeViewLogic.IMergeView.GetComments(out bool bCancel)
- {
- bCancel = false;
- return string.Empty;
- }
- void MergeViewLogic.IMergeView.DisableProcessMergesButton()
- {
- mIsProcessMergesButtonEnabled = false;
- }
- void MergeViewLogic.IMergeView.ShowCancelButton()
- {
- mIsCancelMergesButtonEnabled = true;
- mIsCancelMergesButtonVisible = true;
- }
- void MergeViewLogic.IMergeView.HideCancelButton()
- {
- mIsCancelMergesButtonEnabled = false;
- mIsCancelMergesButtonVisible = false;
- }
- SelectedIncomingChangesGroupInfo IIncomingChangesViewMenuOperations.GetSelectedIncomingChangesGroupInfo()
- {
- return IncomingChangesSelection.GetSelectedGroupInfo(mIncomingChangesTreeView);
- }
- string MergeChangesTree.IGetConflictResolution.GetConflictResolution(
- DirectoryConflict conflict)
- {
- return mMergeViewLogic.GetConflictResolution(conflict);
- }
- void IIncomingChangesViewMenuOperations.MergeContributors()
- {
- List<string> selectedPaths = IncomingChangesSelection.
- GetPathsFromSelectedFileConflictsIncludingMeta(
- mIncomingChangesTreeView);
- mMergeViewLogic.ProcessMerges(
- mWorkspaceWindow,
- mSwitcher,
- mGuiMessage,
- selectedPaths,
- MergeContributorType.MergeContributors,
- RefreshAsset.UnityAssetDatabase);
- }
- void IIncomingChangesViewMenuOperations.MergeKeepingSourceChanges()
- {
- List<string> selectedPaths = IncomingChangesSelection.
- GetPathsFromSelectedFileConflictsIncludingMeta(
- mIncomingChangesTreeView);
- mMergeViewLogic.ProcessMerges(
- mWorkspaceWindow,
- mSwitcher,
- mGuiMessage,
- selectedPaths,
- MergeContributorType.KeepSource,
- RefreshAsset.UnityAssetDatabase);
- }
- void IIncomingChangesViewMenuOperations.MergeKeepingWorkspaceChanges()
- {
- List<string> selectedPaths = IncomingChangesSelection.
- GetPathsFromSelectedFileConflictsIncludingMeta(
- mIncomingChangesTreeView);
- mMergeViewLogic.ProcessMerges(
- mWorkspaceWindow,
- mSwitcher,
- mGuiMessage,
- selectedPaths,
- MergeContributorType.KeepDestination,
- RefreshAsset.UnityAssetDatabase);
- }
- void IIncomingChangesViewMenuOperations.DiffYoursWithIncoming()
- {
- MergeChangeInfo incomingChange = IncomingChangesSelection.
- GetSingleSelectedIncomingChange(mIncomingChangesTreeView);
- if (incomingChange == null)
- return;
- DiffYoursWithIncoming(
- incomingChange,
- mWkInfo);
- }
- void IIncomingChangesViewMenuOperations.DiffIncomingChanges()
- {
- MergeChangeInfo incomingChange = IncomingChangesSelection.
- GetSingleSelectedIncomingChange(mIncomingChangesTreeView);
- if (incomingChange == null)
- return;
- DiffIncomingChanges(
- incomingChange,
- mWkInfo);
- }
- void IncomingChangesViewMenu.IMetaMenuOperations.DiffIncomingChanges()
- {
- MergeChangeInfo incomingChange = IncomingChangesSelection.
- GetSingleSelectedIncomingChange(mIncomingChangesTreeView);
- if (incomingChange == null)
- return;
- DiffIncomingChanges(
- mIncomingChangesTreeView.GetMetaChange(incomingChange),
- mWkInfo);
- }
- void IncomingChangesViewMenu.IMetaMenuOperations.DiffYoursWithIncoming()
- {
- MergeChangeInfo incomingChange = IncomingChangesSelection.
- GetSingleSelectedIncomingChange(mIncomingChangesTreeView);
- if (incomingChange == null)
- return;
- DiffYoursWithIncoming(
- mIncomingChangesTreeView.GetMetaChange(incomingChange),
- mWkInfo);
- }
- bool IncomingChangesViewMenu.IMetaMenuOperations.SelectionHasMeta()
- {
- return mIncomingChangesTreeView.SelectionHasMeta();
- }
- static void DiffYoursWithIncoming(
- MergeChangeInfo incomingChange,
- WorkspaceInfo wkInfo)
- {
- if (LaunchTool.ShowDownloadPlasticExeWindow(false))
- return;
- DiffOperation.DiffYoursWithIncoming(
- wkInfo,
- incomingChange.GetMount(),
- incomingChange.GetRevision(),
- incomingChange.GetPath(),
- xDiffLauncher: null,
- imageDiffLauncher: null);
- }
- static void DiffIncomingChanges(
- MergeChangeInfo incomingChange,
- WorkspaceInfo wkInfo)
- {
- if (LaunchTool.ShowDownloadPlasticExeWindow(false))
- return;
- DiffOperation.DiffRevisions(
- wkInfo,
- incomingChange.GetMount().RepSpec,
- incomingChange.GetBaseRevision(),
- incomingChange.GetRevision(),
- incomingChange.GetPath(),
- incomingChange.GetPath(),
- true,
- xDiffLauncher: null,
- imageDiffLauncher: null);
- }
- void ShowProcessMergesButton(string processMergesButtonText)
- {
- mProcessMergesButtonText = processMergesButtonText;
- mIsProcessMergesButtonEnabled = true;
- mIsProcessMergesButtonVisible = true;
- }
- void HideMessage()
- {
- mMessageLabelText = string.Empty;
- mIsMessageLabelVisible = false;
- mErrorMessageLabelText = string.Empty;
- mIsErrorMessageLabelVisible = false;
- }
- static void DoDirectoryConflictResolutionPanel(
- List<MergeChangeInfo> selectedChangeInfos,
- Action<MergeChangeInfo> resolveDirectoryConflictAction,
- Dictionary<DirectoryConflict, ConflictResolutionState> conflictResolutionStates)
- {
- MergeChangeInfo selectedDirectoryConflict = selectedChangeInfos[0];
- if (selectedDirectoryConflict.DirectoryConflict.IsResolved())
- return;
- DirectoryConflictUserInfo conflictUserInfo;
- DirectoryConflictAction[] conflictActions;
- DirectoryConflictResolutionInfo.FromDirectoryConflict(
- selectedDirectoryConflict.GetMount(),
- selectedDirectoryConflict.DirectoryConflict,
- out conflictUserInfo,
- out conflictActions);
- ConflictResolutionState conflictResolutionState = GetConflictResolutionState(
- selectedDirectoryConflict.DirectoryConflict,
- conflictActions,
- conflictResolutionStates);
- int pendingSelectedConflictsCount = GetPendingConflictsCount(
- selectedChangeInfos);
- DrawDirectoryResolutionPanel.ForConflict(
- selectedDirectoryConflict,
- (pendingSelectedConflictsCount <= 1) ? 0 : pendingSelectedConflictsCount - 1,
- conflictUserInfo,
- conflictActions,
- resolveDirectoryConflictAction,
- ref conflictResolutionState);
- }
- void ResolveDirectoryConflict(MergeChangeInfo conflict)
- {
- ConflictResolutionState state;
- if (!mConflictResolutionStates.TryGetValue(conflict.DirectoryConflict, out state))
- return;
- List<DirectoryConflictResolutionData> conflictResolutions =
- new List<DirectoryConflictResolutionData>();
- AddConflictResolution(
- conflict,
- state.ResolveAction,
- state.RenameValue,
- conflictResolutions);
- MergeChangeInfo metaConflict =
- mIncomingChangesTreeView.GetMetaChange(conflict);
- if (metaConflict != null)
- {
- AddConflictResolution(
- metaConflict,
- state.ResolveAction,
- MetaPath.GetMetaPath(state.RenameValue),
- conflictResolutions);
- }
- if (state.IsApplyActionsForNextConflictsChecked)
- {
- foreach (MergeChangeInfo otherConflict in mIncomingChangesTreeView.GetSelectedIncomingChanges())
- {
- AddConflictResolution(
- otherConflict,
- state.ResolveAction,
- state.RenameValue,
- conflictResolutions);
- }
- }
- mMergeViewLogic.ResolveDirectoryConflicts(conflictResolutions);
- }
- static void AddConflictResolution(
- MergeChangeInfo conflict,
- DirectoryConflictResolveActions resolveAction,
- string renameValue,
- List<DirectoryConflictResolutionData> conflictResolutions)
- {
- conflictResolutions.Add(new DirectoryConflictResolutionData(
- conflict.DirectoryConflict,
- conflict.Xlink,
- conflict.GetMount().Mount,
- resolveAction,
- renameValue));
- }
- void DoActionsToolbar(
- bool isProcessMergesButtonVisible,
- bool isCancelMergesButtonVisible,
- bool isProcessMergesButtonEnabled,
- bool isCancelMergesButtonEnabled,
- string processMergesButtonText,
- bool hasPendingDirectoryConflictsCount,
- bool isOperationRunning,
- IWorkspaceWindow workspaceWindow,
- MergeViewLogic mergeViewLogic,
- ProgressControlsForViews.Data progressData)
- {
- GUIStyle guiStyle = new GUIStyle();
- guiStyle.margin = new RectOffset(5, 5, 5, 5);
- EditorGUILayout.BeginHorizontal(guiStyle);
- if (isProcessMergesButtonVisible)
- {
- DoProcessMergesButton(
- isProcessMergesButtonEnabled && !hasPendingDirectoryConflictsCount,
- processMergesButtonText,
- mSwitcher,
- workspaceWindow,
- mGuiMessage,
- mergeViewLogic);
- }
- if (isCancelMergesButtonVisible)
- {
- DoCancelMergesButton(
- isCancelMergesButtonEnabled,
- mergeViewLogic);
- }
- if (hasPendingDirectoryConflictsCount)
- {
- GUILayout.Space(5);
- DoWarningMessage();
- }
- if (isOperationRunning)
- {
- DrawProgressForViews.ForIndeterminateProgress(
- progressData);
- }
- GUILayout.FlexibleSpace();
- DoRefreshButton(
- !isOperationRunning,
- mergeViewLogic);
- EditorGUILayout.EndHorizontal();
- }
- static void DoFileConflictsArea(
- IncomingChangesTreeView incomingChangesTreeView,
- MergeTreeResult conflicts,
- MergeSolvedFileConflicts solvedConflicts,
- MountPointWithPath mount,
- bool isOperationRunning)
- {
- DoConflictsHeader(
- conflicts,
- solvedConflicts,
- mount);
- DoConflictsTree(
- incomingChangesTreeView,
- isOperationRunning);
- }
- static void DoConflictsTree(
- IncomingChangesTreeView incomingChangesTreeView,
- bool isOperationRunning)
- {
- GUI.enabled = !isOperationRunning;
- Rect rect = GUILayoutUtility.GetRect(0, 100000, 0, 100000);
- incomingChangesTreeView.OnGUI(rect);
- GUI.enabled = true;
- }
- static void DoConflictsHeader(
- MergeTreeResult conflicts,
- MergeSolvedFileConflicts solvedFileConflicts,
- MountPointWithPath mount)
- {
- if (conflicts == null || mount == null)
- return;
- EditorGUILayout.BeginHorizontal();
- DoDirectoryConflictsHeader(conflicts);
- DoFileConflictsHeader(
- conflicts,
- solvedFileConflicts,
- mount);
- GUILayout.FlexibleSpace();
- EditorGUILayout.EndHorizontal();
- }
- static void DoDirectoryConflictsHeader(MergeTreeResult conflicts)
- {
- int directoryConflictsCount =
- MergeTreeResultParser.GetDirectoryConflictsCount(conflicts);
- int pendingDirectoryConflictsCount =
- MergeTreeResultParser.GetUnsolvedDirectoryConflictsCount(
- conflicts);
- if (directoryConflictsCount == 0)
- return;
- GUIStyle pendingDirectoryConflictsOfTotalStyle =
- pendingDirectoryConflictsCount > 0 ?
- UnityStyles.IncomingChangesTab.RedPendingConflictsOfTotalLabel :
- UnityStyles.IncomingChangesTab.GreenPendingConflictsOfTotalLabel;
- GUILayout.Label(
- string.Format("{0}/{1}", pendingDirectoryConflictsCount, directoryConflictsCount),
- pendingDirectoryConflictsOfTotalStyle);
- GUILayout.Label(
- MergeViewTexts.GetDirectoryConflictsUnsolvedCaption(directoryConflictsCount),
- UnityStyles.IncomingChangesTab.PendingConflictsLabel);
- }
- static void DoFileConflictsHeader(
- MergeTreeResult conflicts,
- MergeSolvedFileConflicts solvedFileConflicts,
- MountPointWithPath mount)
- {
- int fileConflictsCount = MergeTreeResultParser.GetFileConflictsCount(conflicts);
- int pendingFileConflictsCount = MergeTreeResultParser.GetUnsolvedFileConflictsCount(
- conflicts, mount.Id, solvedFileConflicts);
- GUIStyle pendingFileConflictsOfTotalStyle =
- pendingFileConflictsCount > 0 ?
- UnityStyles.IncomingChangesTab.RedPendingConflictsOfTotalLabel :
- UnityStyles.IncomingChangesTab.GreenPendingConflictsOfTotalLabel;
- GUILayout.Label(
- string.Format("{0}/{1}", pendingFileConflictsCount, fileConflictsCount),
- pendingFileConflictsOfTotalStyle);
- GUILayout.Label(
- MergeViewTexts.GetFileConflictsCaption(fileConflictsCount, true),
- UnityStyles.IncomingChangesTab.PendingConflictsLabel);
- GUILayout.Space(5);
- GUILayout.Label(
- MergeViewTexts.GetChangesToApplyCaption(
- MergeTreeResultParser.GetChangesToApplySummary(conflicts)),
- UnityStyles.IncomingChangesTab.ChangesToApplySummaryLabel);
- }
- static void AfterProcessMerges()
- {
- EditorWindow.GetWindow<PlasticWindow>().
- mNotificationDrawer.Notify("Project successfully updated",
- UnityEditor.MessageType.None,
- Images.Name.StepOk);
- RefreshAsset.UnityAssetDatabase();
- }
- static void DoProcessMergesButton(
- bool isEnabled,
- string processMergesButtonText,
- IViewSwitcher switcher,
- IWorkspaceWindow workspaceWindow,
- GuiMessage.IGuiMessage guiMessage,
- MergeViewLogic mergeViewLogic)
- {
- GUI.enabled = isEnabled;
- if (DrawActionButton.For(processMergesButtonText))
- {
- mergeViewLogic.ProcessMerges(
- workspaceWindow,
- switcher,
- guiMessage,
- new List<string>(),
- MergeContributorType.MergeContributors,
- AfterProcessMerges);
- }
- GUI.enabled = true;
- }
- void DoCancelMergesButton(
- bool isEnabled,
- MergeViewLogic mergeViewLogic)
- {
- GUI.enabled = isEnabled;
- if (DrawActionButton.For(PlasticLocalization.GetString(
- PlasticLocalization.Name.CancelButton)))
- {
- mergeViewLogic.Cancel();
- mIsCancelMergesButtonEnabled = false;
- }
- GUI.enabled = true;
- }
- static void DoWarningMessage()
- {
- string label = PlasticLocalization.GetString(PlasticLocalization.Name.SolveConflictsInLable);
- GUILayout.Label(
- new GUIContent(label, Images.GetWarnIcon()),
- UnityStyles.IncomingChangesTab.HeaderWarningLabel);
- }
- static void DoRefreshButton(
- bool isEnabled,
- MergeViewLogic mergeViewLogic)
- {
- GUI.enabled = isEnabled;
- if (GUILayout.Button(new GUIContent(
- Images.GetRefreshIcon())))
- mergeViewLogic.Refresh();
- GUI.enabled = true;
- }
- void UpdateFileConflictsTree(
- MergeChangesTree incomingChangesTree,
- IncomingChangesTreeView incomingChangesTreeView)
- {
- UnityIncomingChangesTree unityIncomingChangesTree = null;
- IThreadWaiter waiter = ThreadWaiter.GetWaiter(10);
- waiter.Execute(
- /*threadOperationDelegate*/ delegate
- {
- unityIncomingChangesTree = UnityIncomingChangesTree.BuildIncomingChangeCategories(
- incomingChangesTree);
- incomingChangesTree.ResolveUserNames(
- new MergeChangesTree.ResolveUserName());
- },
- /*afterOperationDelegate*/ delegate
- {
- incomingChangesTreeView.BuildModel(unityIncomingChangesTree);
- incomingChangesTreeView.Sort();
- incomingChangesTreeView.Reload();
- incomingChangesTreeView.SelectFirstUnsolvedDirectoryConflict();
- });
- }
- static void DoInfoMessageArea(string message)
- {
- EditorGUILayout.BeginHorizontal();
- EditorGUILayout.HelpBox(message, MessageType.Info);
- EditorGUILayout.EndHorizontal();
- }
- static void DoErrorMessageArea(string message)
- {
- EditorGUILayout.BeginHorizontal();
- EditorGUILayout.HelpBox(message, MessageType.Error);
- EditorGUILayout.EndHorizontal();
- }
- void BuildComponents(WorkspaceInfo wkInfo)
- {
- IncomingChangesTreeHeaderState incomingChangesHeaderState =
- IncomingChangesTreeHeaderState.GetDefault();
- TreeHeaderSettings.Load(incomingChangesHeaderState,
- UnityConstants.DEVELOPER_INCOMING_CHANGES_TABLE_SETTINGS_NAME,
- (int)IncomingChangesTreeColumn.Path, true);
- mIncomingChangesTreeView = new IncomingChangesTreeView(
- wkInfo, incomingChangesHeaderState,
- IncomingChangesTreeHeaderState.GetColumnNames(),
- new IncomingChangesViewMenu(this, this));
- mIncomingChangesTreeView.Reload();
- }
- static ConflictResolutionState GetConflictResolutionState(
- DirectoryConflict directoryConflict,
- DirectoryConflictAction[] conflictActions,
- Dictionary<DirectoryConflict, ConflictResolutionState> conflictResoltionStates)
- {
- ConflictResolutionState result;
- if (conflictResoltionStates.TryGetValue(directoryConflict, out result))
- return result;
- result = ConflictResolutionState.Build(directoryConflict, conflictActions);
- conflictResoltionStates.Add(directoryConflict, result);
- return result;
- }
- static int GetPendingConflictsCount(
- List<MergeChangeInfo> selectedChangeInfos)
- {
- int result = 0;
- foreach (MergeChangeInfo changeInfo in selectedChangeInfos)
- {
- if (changeInfo.DirectoryConflict.IsResolved())
- continue;
- result++;
- }
- return result;
- }
- bool mIsProcessMergesButtonVisible;
- bool mIsCancelMergesButtonVisible;
- bool mIsMessageLabelVisible;
- bool mIsErrorMessageLabelVisible;
- bool mIsProcessMergesButtonEnabled;
- bool mIsCancelMergesButtonEnabled;
- bool mHasPendingDirectoryConflicts;
- bool mIsOperationRunning;
- string mProcessMergesButtonText;
- string mMessageLabelText;
- string mErrorMessageLabelText;
- IncomingChangesTreeView mIncomingChangesTreeView;
- MergeTreeResult mResultConflicts;
- MergeSolvedFileConflicts mSolvedFileConflicts;
- MountPointWithPath mRootMountPoint;
- Dictionary<DirectoryConflict, ConflictResolutionState> mConflictResolutionStates =
- new Dictionary<DirectoryConflict, ConflictResolutionState>();
- readonly ProgressControlsForViews mProgressControls;
- readonly MergeViewLogic mMergeViewLogic;
- readonly MergeController mMergeController;
- readonly GuiMessage.IGuiMessage mGuiMessage;
- readonly EditorWindow mParentWindow;
- readonly NewIncomingChangesUpdater mNewIncomingChangesUpdater;
- readonly IViewSwitcher mSwitcher;
- readonly IWorkspaceWindow mWorkspaceWindow;
- readonly WorkspaceInfo mWkInfo;
- }
- }
|