diff --git a/idea/src/org/jetbrains/jet/plugin/actions/JavaToKotlinAction.java b/idea/src/org/jetbrains/jet/plugin/actions/JavaToKotlinAction.java index 58b622a95d1..c26e6d88dba 100644 --- a/idea/src/org/jetbrains/jet/plugin/actions/JavaToKotlinAction.java +++ b/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; - switch (result) { - case 0: - removeIt = false; - break; - case 1: - removeIt = true; - break; + @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 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); }