public bool AttemptToGetWriteAccess(IList<string> fileNames)
{
List<string> fileNamesWithFullPaths = new List<string>();
foreach (string fileName in fileNames)
{
if (File.Exists(fileName))
{
fileNamesWithFullPaths.Add(Path.GetFullPath(fileName));
}
}
try
{
if (fileNamesWithFullPaths.Count > 0)
{
SourceControlFileStatus[] statuses = Factory.AGSEditor.SourceControlProvider.GetFileStatuses(fileNamesWithFullPaths.ToArray());
List<string> filesToCheckOut = new List<string>();
for (int i = 0; i < statuses.Length; i++)
{
if (((statuses[i] & SourceControlFileStatus.Controlled) != 0) &&
((statuses[i] & SourceControlFileStatus.Deleted) == 0) &&
((statuses[i] & SourceControlFileStatus.CheckedOutByMe) == 0))
{
filesToCheckOut.Add(fileNamesWithFullPaths[i]);
}
}
if (filesToCheckOut.Count > 0)
{
if (!Factory.GUIController.ShowCheckOutDialog(filesToCheckOut))
{
return false;
}
}
}
}
catch (SourceControlException ex)
{
Factory.GUIController.ShowMessage("Unable to check source control status: " + ex.SccErrorMessage, MessageBoxIcon.Warning);
return false;
}
bool success = true;
foreach (string fileName in fileNamesWithFullPaths)
{
success = success & CheckFileSystemWriteAccess(fileName);
}
return success;
}