diff --git a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/handlers/SQLEditorHandlerRenameFile.java b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/handlers/SQLEditorHandlerRenameFile.java index 7957e427203bf7b6cd5a35a3b6258be45c454a58..9e519b06d31acd988b07cd9fbb37da9e19ba1e0c 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/handlers/SQLEditorHandlerRenameFile.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/handlers/SQLEditorHandlerRenameFile.java @@ -20,16 +20,20 @@ package org.jkiss.dbeaver.ui.editors.sql.handlers; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.*; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.handlers.HandlerUtil; +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.progress.UIJob; import org.jkiss.dbeaver.runtime.DBWorkbench; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.AbstractDataSourceHandler; import org.jkiss.dbeaver.ui.dialogs.EnterNameDialog; import org.jkiss.dbeaver.ui.editors.EditorUtils; +import org.jkiss.dbeaver.ui.editors.sql.SQLEditorUtils; import org.jkiss.dbeaver.utils.RuntimeUtils; public class SQLEditorHandlerRenameFile extends AbstractDataSourceHandler { @@ -70,11 +74,34 @@ public class SQLEditorHandlerRenameFile extends AbstractDataSourceHandler { if (editor instanceof IEditorPart) { ((IEditorPart)editor).doSave(monitor); } + String oldExtension = file.getFileExtension(); try { - file.move(file.getParent().getFullPath().append(newName), true, monitor); + IPath newFilePath = file.getParent().getFullPath().append(newName); + file.move(newFilePath, true, monitor); + file = file.getWorkspace().getRoot().getFile(newFilePath); } catch (CoreException e) { DBWorkbench.getPlatformUI().showError("Rename", "Error renaming file '" + file.getName() + "'", e); } + IFile newFile = file; + String newExtension = file.getFileExtension(); + if (SQLEditorUtils.SCRIPT_FILE_EXTENSION.equals(newExtension) && !newExtension.equals(oldExtension)) { + // File become an SQL editor + // We need to reopen editor + UIJob reopenJob = new UIJob("Reopen SQL script") { + @Override + public IStatus runInUIThread(IProgressMonitor monitor) { + FileEditorInput editorInput = new FileEditorInput(newFile); + IWorkbenchPage activePage = UIUtils.getActiveWorkbenchWindow().getActivePage(); + IEditorPart openEditor = activePage.findEditor(editorInput); + if (openEditor != null) { + activePage.closeEditor(openEditor, true); + SQLEditorHandlerOpenEditor.openResource(newFile); + } + return Status.OK_STATUS; + } + }; + reopenJob.schedule(250); + } } }