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

Loading…
Cancel
Save