Browse Source

Use "cannot load file" dialog only for IOException and UnauthorizedAccessException; let other exceptions unhandled.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5626 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Daniel Grunwald 15 years ago
parent
commit
74d66b5beb
  1. 141
      src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs

141
src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs

@ -535,32 +535,39 @@ namespace ICSharpCode.Core @@ -535,32 +535,39 @@ namespace ICSharpCode.Core
}
// Observe SAVE functions
public static FileOperationResult ObservedSave(FileOperationDelegate saveFile, string fileName, string message, FileErrorPolicy policy)
public static FileOperationResult ObservedSave(FileOperationDelegate saveFile, string fileName, string message, FileErrorPolicy policy = FileErrorPolicy.Inform)
{
System.Diagnostics.Debug.Assert(IsValidPath(fileName));
try {
saveFile();
RaiseFileSaved(new FileNameEventArgs(fileName));
return FileOperationResult.OK;
} catch (Exception e) {
switch (policy) {
case FileErrorPolicy.Inform:
ServiceManager.Instance.MessageService.InformSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e);
break;
case FileErrorPolicy.ProvideAlternative:
ChooseSaveErrorResult r = ServiceManager.Instance.MessageService.ChooseSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e, false);
if (r.IsRetry) {
return ObservedSave(saveFile, fileName, message, policy);
} else if (r.IsIgnore) {
return FileOperationResult.Failed;
}
break;
}
} catch (IOException e) {
return ObservedSaveHandleException(e, saveFile, fileName, message, policy);
} catch (UnauthorizedAccessException e) {
return ObservedSaveHandleException(e, saveFile, fileName, message, policy);
}
}
static FileOperationResult ObservedSaveHandleException(Exception e, FileOperationDelegate saveFile, string fileName, string message, FileErrorPolicy policy)
{
switch (policy) {
case FileErrorPolicy.Inform:
ServiceManager.Instance.MessageService.InformSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e);
break;
case FileErrorPolicy.ProvideAlternative:
ChooseSaveErrorResult r = ServiceManager.Instance.MessageService.ChooseSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e, false);
if (r.IsRetry) {
return ObservedSave(saveFile, fileName, message, policy);
} else if (r.IsIgnore) {
return FileOperationResult.Failed;
}
break;
}
return FileOperationResult.Failed;
}
public static FileOperationResult ObservedSave(FileOperationDelegate saveFile, string fileName, FileErrorPolicy policy)
public static FileOperationResult ObservedSave(FileOperationDelegate saveFile, string fileName, FileErrorPolicy policy = FileErrorPolicy.Inform)
{
return ObservedSave(saveFile,
fileName,
@ -568,12 +575,7 @@ namespace ICSharpCode.Core @@ -568,12 +575,7 @@ namespace ICSharpCode.Core
policy);
}
public static FileOperationResult ObservedSave(FileOperationDelegate saveFile, string fileName)
{
return ObservedSave(saveFile, fileName, FileErrorPolicy.Inform);
}
public static FileOperationResult ObservedSave(NamedFileOperationDelegate saveFileAs, string fileName, string message, FileErrorPolicy policy)
public static FileOperationResult ObservedSave(NamedFileOperationDelegate saveFileAs, string fileName, string message, FileErrorPolicy policy = FileErrorPolicy.Inform)
{
System.Diagnostics.Debug.Assert(IsValidPath(fileName));
try {
@ -584,27 +586,34 @@ namespace ICSharpCode.Core @@ -584,27 +586,34 @@ namespace ICSharpCode.Core
saveFileAs(fileName);
RaiseFileSaved(new FileNameEventArgs(fileName));
return FileOperationResult.OK;
} catch (Exception e) {
switch (policy) {
case FileErrorPolicy.Inform:
ServiceManager.Instance.MessageService.InformSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e);
break;
case FileErrorPolicy.ProvideAlternative:
ChooseSaveErrorResult r = ServiceManager.Instance.MessageService.ChooseSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e, true);
if (r.IsRetry) {
return ObservedSave(saveFileAs, fileName, message, policy);
} else if (r.IsIgnore) {
return FileOperationResult.Failed;
} else if (r.IsSaveAlternative) {
return ObservedSave(saveFileAs, r.AlternativeFileName, message, policy);
}
break;
}
} catch (IOException e) {
return ObservedSaveHandleError(e, saveFileAs, fileName, message, policy);
} catch (UnauthorizedAccessException e) {
return ObservedSaveHandleError(e, saveFileAs, fileName, message, policy);
}
}
static FileOperationResult ObservedSaveHandleError(Exception e, NamedFileOperationDelegate saveFileAs, string fileName, string message, FileErrorPolicy policy)
{
switch (policy) {
case FileErrorPolicy.Inform:
ServiceManager.Instance.MessageService.InformSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e);
break;
case FileErrorPolicy.ProvideAlternative:
ChooseSaveErrorResult r = ServiceManager.Instance.MessageService.ChooseSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e, true);
if (r.IsRetry) {
return ObservedSave(saveFileAs, fileName, message, policy);
} else if (r.IsIgnore) {
return FileOperationResult.Failed;
} else if (r.IsSaveAlternative) {
return ObservedSave(saveFileAs, r.AlternativeFileName, message, policy);
}
break;
}
return FileOperationResult.Failed;
}
public static FileOperationResult ObservedSave(NamedFileOperationDelegate saveFileAs, string fileName, FileErrorPolicy policy)
public static FileOperationResult ObservedSave(NamedFileOperationDelegate saveFileAs, string fileName, FileErrorPolicy policy = FileErrorPolicy.Inform)
{
return ObservedSave(saveFileAs,
fileName,
@ -612,11 +621,6 @@ namespace ICSharpCode.Core @@ -612,11 +621,6 @@ namespace ICSharpCode.Core
policy);
}
public static FileOperationResult ObservedSave(NamedFileOperationDelegate saveFileAs, string fileName)
{
return ObservedSave(saveFileAs, fileName, FileErrorPolicy.Inform);
}
// Observe LOAD functions
public static FileOperationResult ObservedLoad(FileOperationDelegate loadFile, string fileName, string message, FileErrorPolicy policy)
{
@ -624,24 +628,31 @@ namespace ICSharpCode.Core @@ -624,24 +628,31 @@ namespace ICSharpCode.Core
loadFile();
OnFileLoaded(new FileNameEventArgs(fileName));
return FileOperationResult.OK;
} catch (Exception e) {
switch (policy) {
case FileErrorPolicy.Inform:
ServiceManager.Instance.MessageService.InformSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileLoading}", e);
break;
case FileErrorPolicy.ProvideAlternative:
ChooseSaveErrorResult r = ServiceManager.Instance.MessageService.ChooseSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileLoading}", e, false);
if (r.IsRetry)
return ObservedLoad(loadFile, fileName, message, policy);
else if (r.IsIgnore)
return FileOperationResult.Failed;
break;
}
} catch (IOException e) {
return ObservedLoadHandleException(e, loadFile, fileName, message, policy);
} catch (UnauthorizedAccessException e) {
return ObservedLoadHandleException(e, loadFile, fileName, message, policy);
}
}
static FileOperationResult ObservedLoadHandleException(Exception e, FileOperationDelegate loadFile, string fileName, string message, FileErrorPolicy policy)
{
switch (policy) {
case FileErrorPolicy.Inform:
ServiceManager.Instance.MessageService.InformSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileLoading}", e);
break;
case FileErrorPolicy.ProvideAlternative:
ChooseSaveErrorResult r = ServiceManager.Instance.MessageService.ChooseSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileLoading}", e, false);
if (r.IsRetry)
return ObservedLoad(loadFile, fileName, message, policy);
else if (r.IsIgnore)
return FileOperationResult.Failed;
break;
}
return FileOperationResult.Failed;
}
public static FileOperationResult ObservedLoad(FileOperationDelegate loadFile, string fileName, FileErrorPolicy policy)
public static FileOperationResult ObservedLoad(FileOperationDelegate loadFile, string fileName, FileErrorPolicy policy = FileErrorPolicy.Inform)
{
return ObservedLoad(loadFile,
fileName,
@ -649,17 +660,12 @@ namespace ICSharpCode.Core @@ -649,17 +660,12 @@ namespace ICSharpCode.Core
policy);
}
public static FileOperationResult ObservedLoad(FileOperationDelegate loadFile, string fileName)
{
return ObservedLoad(loadFile, fileName, FileErrorPolicy.Inform);
}
public static FileOperationResult ObservedLoad(NamedFileOperationDelegate saveFileAs, string fileName, string message, FileErrorPolicy policy)
public static FileOperationResult ObservedLoad(NamedFileOperationDelegate saveFileAs, string fileName, string message, FileErrorPolicy policy = FileErrorPolicy.Inform)
{
return ObservedLoad(new FileOperationDelegate(delegate { saveFileAs(fileName); }), fileName, message, policy);
}
public static FileOperationResult ObservedLoad(NamedFileOperationDelegate saveFileAs, string fileName, FileErrorPolicy policy)
public static FileOperationResult ObservedLoad(NamedFileOperationDelegate saveFileAs, string fileName, FileErrorPolicy policy = FileErrorPolicy.Inform)
{
return ObservedLoad(saveFileAs,
fileName,
@ -667,11 +673,6 @@ namespace ICSharpCode.Core @@ -667,11 +673,6 @@ namespace ICSharpCode.Core
policy);
}
public static FileOperationResult ObservedLoad(NamedFileOperationDelegate saveFileAs, string fileName)
{
return ObservedLoad(saveFileAs, fileName, FileErrorPolicy.Inform);
}
static void OnFileLoaded(FileNameEventArgs e)
{
if (FileLoaded != null) {

Loading…
Cancel
Save