From f89dad28c3a9da80da1efe5741bbf208d5fae2ee Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 10 Jan 2014 18:01:29 +0400 Subject: [PATCH] Convert Java to Kotlin action: minor improvements Do not show "Do you want to backup?" dialog if no java files are selected Improve the code Change dialog title to Convert Java to Kotlin Actually cancel if user presses cancel GitOrigin-RevId: 21adde124bc436c4e3e00cfaee689dfe9455336d --- .../plugin/actions/JavaToKotlinAction.java | 82 +++++++++++-------- 1 file changed, 50 insertions(+), 32 deletions(-) diff --git a/plugins/kotlin/idea/src/org/jetbrains/jet/plugin/actions/JavaToKotlinAction.java b/plugins/kotlin/idea/src/org/jetbrains/jet/plugin/actions/JavaToKotlinAction.java index 58b622a95d15..c26e6d88dba3 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/jet/plugin/actions/JavaToKotlinAction.java +++ b/plugins/kotlin/idea/src/org/jetbrains/jet/plugin/actions/JavaToKotlinAction.java @@ -19,54 +19,51 @@ package org.jetbrains.jet.plugin.actions; import com.intellij.ide.highlighter.JavaFileType; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.PlatformDataKeys; +import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; +import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.j2k.Converter; import org.jetbrains.jet.j2k.J2kPackage; import java.util.List; +import static com.intellij.openapi.ui.Messages.NO; +import static com.intellij.openapi.ui.Messages.YES; import static org.jetbrains.jet.plugin.actions.JavaToKotlinActionUtil.*; public class JavaToKotlinAction extends AnAction { @Override public void actionPerformed(AnActionEvent e) { - VirtualFile[] virtualFiles = e.getData(PlatformDataKeys.VIRTUAL_FILE_ARRAY); + VirtualFile[] virtualFiles = e.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY); assert virtualFiles != null; - final Project project = PlatformDataKeys.PROJECT.getData(e.getDataContext()); + final Project project = CommonDataKeys.PROJECT.getData(e.getDataContext()); assert project != null; - final Converter converter = new Converter(project, J2kPackage.getPluginSettings()); - int result = Messages.showYesNoCancelDialog(project, - "Would you like to backup Java files?", - "Backup", - Messages.getQuestionIcon()); - final boolean finalRemoveIt = needToRemoveFiles(result); - final List allJavaFiles = getAllJavaFiles(virtualFiles, project); - - converter.clearClassIdentifiers(); - for (PsiFile f : allJavaFiles) { - if (f.getFileType() instanceof JavaFileType) { - setClassIdentifiers(converter, f); - } + final List selectedJavaFiles = getAllJavaFiles(virtualFiles, project); + if (selectedJavaFiles.isEmpty()) { + return; + } + final DialogResult userResponse = showDialog(project); + if (userResponse == DialogResult.CANCEL) { + return; } - final List allJavaFilesNear = getAllJavaFiles(virtualFiles, project); + final Converter converter = prepareConverter(project, selectedJavaFiles); CommandProcessor.getInstance().executeCommand( project, new Runnable() { @Override public void run() { - List newFiles = convertFiles(converter, allJavaFilesNear); - if (finalRemoveIt) { - deleteFiles(allJavaFilesNear); + List newFiles = convertFiles(converter, selectedJavaFiles); + if (userResponse == DialogResult.DELETE_FILES) { + deleteFiles(selectedJavaFiles); } - else { - renameFiles(allJavaFiles); + else if (userResponse == DialogResult.BACKUP_FILES) { + renameFiles(selectedJavaFiles); } reformatFiles(newFiles, project); for (VirtualFile vf : newFiles) { @@ -79,22 +76,43 @@ public class JavaToKotlinAction extends AnAction { ); } - private static boolean needToRemoveFiles(int result) { - boolean removeIt = false; + @NotNull + private static Converter prepareConverter(@NotNull Project project, @NotNull List selectedJavaFiles) { + Converter converter = new Converter(project, J2kPackage.getPluginSettings()); + converter.clearClassIdentifiers(); + for (PsiFile f : selectedJavaFiles) { + if (f.getFileType() instanceof JavaFileType) { + setClassIdentifiers(converter, f); + } + } + return converter; + } + + private static enum DialogResult { + BACKUP_FILES, + DELETE_FILES, + CANCEL + } + + @NotNull + private static DialogResult showDialog(@NotNull Project project) { + int result = Messages.showYesNoCancelDialog(project, + "Would you like to backup Java files?", + "Convert Java to Kotlin", + Messages.getQuestionIcon()); switch (result) { - case 0: - removeIt = false; - break; - case 1: - removeIt = true; - break; + case YES: + return DialogResult.BACKUP_FILES; + case NO: + return DialogResult.DELETE_FILES; + default: + return DialogResult.CANCEL; } - return removeIt; } @Override public void update(AnActionEvent e) { - boolean enabled = e.getData(PlatformDataKeys.VIRTUAL_FILE_ARRAY) != null; + boolean enabled = e.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY) != null; e.getPresentation().setVisible(enabled); e.getPresentation().setEnabled(enabled); }