protected void primSaveDocument(IEditorInput input, IDocument doc, IProgressMonitor monitor) throws CoreException { try { cuDocumentProvider.saveDocument(monitor, input, doc, true); // overwrite if needed } catch (CoreException ex) { if (!isFailedWriteFileFailure(ex)) throw ex; IResource resource = (IResource) input.getAdapter(IRESOURCE_CLASS); if (resource == null || resource.getType() != IResource.FILE || !resource.getResourceAttributes().isReadOnly()) throw ex; if (getSaveHandler().shouldContinueAndMakeFileEditable((IFile) resource)) cuDocumentProvider.saveDocument(monitor, input, doc, false); else throw ex; } }