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<SecurityMember> collaboratorsToAdd,
out List<SecurityMember> 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<ShareWorkspaceDialog>();
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;
}
}