### Eclipse Workspace Patch 1.0 #P org.eclipse.ui.editors Index: src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditor.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditor.java,v retrieving revision 1.111 diff -u -r1.111 AbstractDecoratedTextEditor.java --- src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditor.java 4 Jun 2007 15:48:21 -0000 1.111 +++ src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditor.java 25 Oct 2007 10:52:08 -0000 @@ -43,7 +43,6 @@ import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceStatus; -import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; @@ -57,7 +56,6 @@ import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.dialogs.MessageDialogWithToggle; import org.eclipse.jface.preference.IPreferenceStore; @@ -111,7 +109,6 @@ import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.actions.ContributionItemFactory; import org.eclipse.ui.dialogs.PreferencesUtil; -import org.eclipse.ui.dialogs.SaveAsDialog; import org.eclipse.ui.ide.FileStoreEditorInput; import org.eclipse.ui.ide.IDEActionFactory; import org.eclipse.ui.ide.IGotoMarker; @@ -1243,92 +1240,62 @@ IDocumentProvider provider= getDocumentProvider(); final IEditorInput newInput; - - if (input instanceof IURIEditorInput && !(input instanceof IFileEditorInput)) { - FileDialog dialog= new FileDialog(shell, SWT.SAVE); - IPath oldPath= URIUtil.toPath(((IURIEditorInput)input).getURI()); - if (oldPath != null) { - dialog.setFileName(oldPath.lastSegment()); - dialog.setFilterPath(oldPath.toOSString()); - } - - String path= dialog.open(); - if (path == null) { - if (progressMonitor != null) - progressMonitor.setCanceled(true); - return; - } - // Check whether file exists and if so, confirm overwrite - final File localFile= new File(path); - if (localFile.exists()) { - MessageDialog overwriteDialog= new MessageDialog( - shell, - TextEditorMessages.AbstractDecoratedTextEditor_saveAs_overwrite_title, - null, - NLSUtility.format(TextEditorMessages.AbstractDecoratedTextEditor_saveAs_overwrite_message, path), - MessageDialog.WARNING, - new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL }, - 1); // 'No' is the default - if (overwriteDialog.open() != Window.OK) { - if (progressMonitor != null) { - progressMonitor.setCanceled(true); - return; - } - } - } + IPath oldPath = null; + if (input instanceof IURIEditorInput) { + oldPath= URIUtil.toPath(((IURIEditorInput)input).getURI()); + } else if (input instanceof IFileEditorInput) { + oldPath = ((IFileEditorInput)input).getFile().getLocation(); + } + FileDialog dialog= new FileDialog(shell, SWT.SAVE); + if (oldPath != null) { + dialog.setFileName(oldPath.lastSegment()); + dialog.setFilterPath(oldPath.toOSString()); + } + + String path= dialog.open(); + if (path == null) { + if (progressMonitor != null) + progressMonitor.setCanceled(true); + return; + } - IFileStore fileStore; - try { - fileStore= EFS.getStore(localFile.toURI()); - } catch (CoreException ex) { - EditorsPlugin.log(ex.getStatus()); - String title= TextEditorMessages.AbstractDecoratedTextEditor_error_saveAs_title; - String msg= NLSUtility.format(TextEditorMessages.AbstractDecoratedTextEditor_error_saveAs_message, ex.getMessage()); - MessageDialog.openError(shell, title, msg); - return; + // Check whether file exists and if so, confirm overwrite + final File localFile= new File(path); + if (localFile.exists()) { + MessageDialog overwriteDialog= new MessageDialog( + shell, + TextEditorMessages.AbstractDecoratedTextEditor_saveAs_overwrite_title, + null, + NLSUtility.format(TextEditorMessages.AbstractDecoratedTextEditor_saveAs_overwrite_message, path), + MessageDialog.WARNING, + new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL }, + 1); // 'No' is the default + if (overwriteDialog.open() != Window.OK) { + if (progressMonitor != null) { + progressMonitor.setCanceled(true); + return; + } } - - IFile file= getWorkspaceFile(fileStore); - if (file != null) - newInput= new FileEditorInput(file); - else - newInput= new FileStoreEditorInput(fileStore); - - } else { - SaveAsDialog dialog= new SaveAsDialog(shell); - - IFile original= (input instanceof IFileEditorInput) ? ((IFileEditorInput) input).getFile() : null; - if (original != null) - dialog.setOriginalFile(original); - - dialog.create(); + } - if (provider.isDeleted(input) && original != null) { - String message= NLSUtility.format(TextEditorMessages.AbstractDecoratedTextEditor_warning_saveAs_deleted, original.getName()); - dialog.setErrorMessage(null); - dialog.setMessage(message, IMessageProvider.WARNING); - } + IFileStore fileStore; + try { + fileStore= EFS.getStore(localFile.toURI()); + } catch (CoreException ex) { + EditorsPlugin.log(ex.getStatus()); + String title= TextEditorMessages.AbstractDecoratedTextEditor_error_saveAs_title; + String msg= NLSUtility.format(TextEditorMessages.AbstractDecoratedTextEditor_error_saveAs_message, ex.getMessage()); + MessageDialog.openError(shell, title, msg); + return; + } - if (dialog.open() == Window.CANCEL) { - if (progressMonitor != null) - progressMonitor.setCanceled(true); - return; - } - - IPath filePath= dialog.getResult(); - if (filePath == null) { - if (progressMonitor != null) - progressMonitor.setCanceled(true); - return; - } - - IWorkspace workspace= ResourcesPlugin.getWorkspace(); - IFile file= workspace.getRoot().getFile(filePath); + IFile file= getWorkspaceFile(fileStore); + if (file != null) newInput= new FileEditorInput(file); + else + newInput= new FileStoreEditorInput(fileStore); - } - if (provider == null) { // editor has programmatically been closed while the dialog was open return;