using System; using System.Collections.Generic; using UnityEditor; using UnityEngine; using Codice.CM.Common; using PlasticGui; using Unity.PlasticSCM.Editor.UI; namespace Unity.PlasticSCM.Editor.CloudDrive.ShareWorkspace { internal class ShareWorkspaceDialog : PlasticDialog { protected override Rect DefaultRect { get { var baseRect = base.DefaultRect; return new Rect(baseRect.x, baseRect.y, 750, 450); } } internal static bool ShareWorkspace( WorkspaceInfo workspaceInfo, EditorWindow parentWindow, out List collaboratorsToAdd, out List collaboratorsToRemove) { ShareWorkspaceDialog dialog = Create(workspaceInfo, parentWindow.Repaint); ResponseType dialogResult = dialog.RunModal(parentWindow); collaboratorsToAdd = mShareWorkspacePanel.GetCollaboratorsToAdd(); collaboratorsToRemove = mShareWorkspacePanel.GetCollaboratorsToRemove(); return dialogResult == ResponseType.Ok; } static ShareWorkspaceDialog Create(WorkspaceInfo workspaceInfo, Action repaintAction) { var instance = CreateInstance(); instance.IsResizable = false; mShareWorkspacePanel = new ShareWorkspacePanel( workspaceInfo, instance.mProgressControls, repaintAction); RepositorySpec repSpec = PlasticGui.Plastic.API.GetRepositorySpec(workspaceInfo); mShareWorkspacePanel.Refresh( repSpec.Server, CloudProjectRepository.GetProjectName(repSpec.Name)); instance.mEnterKeyAction = instance.OkButtonAction; instance.mEscapeKeyAction = instance.CancelButtonAction; instance.mOkButtonText = PlasticLocalization.Name.ShareButton.GetString(); return instance; } protected override string GetTitle() { return PlasticLocalization.Name.ShareWorkspaceDialogTitle.GetString(); } protected override void DoComponentsArea() { mShareWorkspacePanel.OnGUI(mProgressControls.ProgressData.IsWaitingAsyncResult); } internal override void OkButtonAction() { if (mShareWorkspacePanel.GetCollaboratorsToAdd().Count == 0 && mShareWorkspacePanel.GetCollaboratorsToRemove().Count == 0) { ((IProgressControls)mProgressControls).ShowError( PlasticLocalization.Name.CollaboratorsUnchanged.GetString()); return; } base.OkButtonAction(); } static ShareWorkspacePanel mShareWorkspacePanel; } }