From 01ef0331be56befe24fd92fe3df22df8c166fd00 Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 13 Oct 2011 17:06:31 +0400 Subject: [PATCH] 'import iml file' action improved --- .../ImportModuleFromImlFileAction.java | 39 ++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/actions/ImportModuleFromImlFileAction.java b/platform/lang-impl/src/com/intellij/ide/projectView/actions/ImportModuleFromImlFileAction.java index 6ba2b8271e15..fda27476138e 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/actions/ImportModuleFromImlFileAction.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/actions/ImportModuleFromImlFileAction.java @@ -25,11 +25,16 @@ import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.module.ModifiableModuleModel; +import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.vfs.VirtualFile; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + /** * @author nik */ @@ -64,22 +69,44 @@ public class ImportModuleFromImlFileAction extends AnAction { @Override public void update(AnActionEvent e) { - final boolean visible = isVisible(e); + final List modules = getModuleNames(e); final Presentation presentation = e.getPresentation(); + final boolean visible = !modules.isEmpty(); presentation.setVisible(visible); presentation.setEnabled(visible); + String text; + if (modules.size() > 1) { + text = "Import " + modules.size() + " Modules"; + } + else if (modules.size() == 1) { + text = "Import '" + modules.get(0).getNameWithoutExtension() + "' Module"; + } + else { + text = getTemplatePresentation().getText(); + } + presentation.setText(text); } - private static boolean isVisible(AnActionEvent e) { + private static List getModuleNames(AnActionEvent e) { final VirtualFile[] files = e.getData(PlatformDataKeys.VIRTUAL_FILE_ARRAY); - if (getEventProject(e) == null || files == null || files.length == 0) { - return false; + final Project project = getEventProject(e); + if (project == null || files == null || files.length == 0) { + return Collections.emptyList(); } + + List modulesFiles = new ArrayList(); for (VirtualFile file : files) { if (!file.getFileType().equals(StdFileTypes.IDEA_MODULE)) { - return false; + return Collections.emptyList(); } + + modulesFiles.add(file); } - return true; + + final ModuleManager moduleManager = ModuleManager.getInstance(project); + for (Module module : moduleManager.getModules()) { + modulesFiles.remove(module.getModuleFile()); + } + return modulesFiles; } }