private static void EnsureValidLinkedFilesFolder(FdoCache cache)
{
// If the location of the LinkedFilesRootDir was changed when this project was restored just now;
// overwrite the location that was restored from the fwdata file.
if (!String.IsNullOrEmpty(s_LinkDirChangedTo) && !cache.LangProject.LinkedFilesRootDir.Equals(s_LinkDirChangedTo))
{
NonUndoableUnitOfWorkHelper.Do(cache.ActionHandlerAccessor,
() => cache.LangProject.LinkedFilesRootDir = s_LinkDirChangedTo);
}
if (MiscUtils.RunningTests)
return;
var linkedFilesFolder = cache.LangProject.LinkedFilesRootDir;
var defaultFolder = FdoFileHelper.GetDefaultLinkedFilesDir(cache.ProjectId.ProjectFolder);
EnsureValidLinkedFilesFolderCore(linkedFilesFolder, defaultFolder);
if (!Directory.Exists(linkedFilesFolder))
{
MessageBox.Show(String.Format(Properties.Resources.ksInvalidLinkedFilesFolder, linkedFilesFolder), Properties.Resources.ksErrorCaption);
using (var folderBrowserDlg = new FolderBrowserDialogAdapter())
{
folderBrowserDlg.Description = Properties.Resources.ksLinkedFilesFolder;
folderBrowserDlg.RootFolder = Environment.SpecialFolder.Desktop;
folderBrowserDlg.SelectedPath = Directory.Exists(defaultFolder) ? defaultFolder : cache.ProjectId.ProjectFolder;
if (folderBrowserDlg.ShowDialog() == DialogResult.OK)
linkedFilesFolder = folderBrowserDlg.SelectedPath;
else
{
FileUtils.EnsureDirectoryExists(defaultFolder);
linkedFilesFolder = defaultFolder;
}
}
NonUndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW(cache.ActionHandlerAccessor, () =>
{ cache.LangProject.LinkedFilesRootDir = linkedFilesFolder; });
}
}