From 3a04bd7e44525e813e5e51e29281ab0519a428dc Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Tue, 13 Jan 2015 14:39:17 +0300 Subject: [PATCH] Add getTargetPlatform method in ProjectConfigurator #KT-6605 Fixed --- idea/src/META-INF/plugin.xml | 2 +- .../ConfigureKotlinInProjectAction.java | 66 ------------------- .../actions/ConfigureKotlinInProjectAction.kt | 64 ++++++++++++++++++ .../ConfigureKotlinJsInProjectAction.java | 46 ------------- ...KotlinAndroidGradleModuleConfigurator.java | 7 ++ .../KotlinGradleModuleConfigurator.java | 7 ++ .../KotlinJavaMavenConfigurator.java | 7 ++ .../KotlinJavaModuleConfigurator.java | 7 ++ .../KotlinJavascriptMavenConfigurator.java | 7 ++ .../KotlinJsModuleConfigurator.java | 7 ++ .../KotlinProjectConfigurator.java | 4 ++ 11 files changed, 111 insertions(+), 113 deletions(-) delete mode 100644 idea/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.java create mode 100644 idea/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.kt delete mode 100644 idea/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinJsInProjectAction.java diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index 2bedcfd6b0f..a32ca6992d0 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -86,7 +86,7 @@ - diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.java b/idea/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.java deleted file mode 100644 index 7df82368f63..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.idea.actions; - -import com.google.common.base.Predicate; -import com.google.common.collect.Collections2; -import com.intellij.openapi.actionSystem.AnAction; -import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.CommonDataKeys; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.ui.Messages; -import org.jetbrains.kotlin.idea.configuration.ConfigureKotlinInProjectUtils; -import org.jetbrains.kotlin.idea.configuration.KotlinJsModuleConfigurator; -import org.jetbrains.kotlin.idea.configuration.KotlinProjectConfigurator; - -import java.util.Collection; - -public class ConfigureKotlinInProjectAction extends AnAction { - - @Override - public void actionPerformed(AnActionEvent e) { - Project project = CommonDataKeys.PROJECT.getData(e.getDataContext()); - if (project == null) { - return; - } - - if (ConfigureKotlinInProjectUtils.isProjectConfigured(project)) { - Messages.showInfoMessage("All modules with kotlin files are configured", "Configure Project Info"); - return; - } - - Collection configurators = - Collections2.filter(ConfigureKotlinInProjectUtils.getAbleToRunConfigurators(project), new Predicate() { - @Override - public boolean apply(KotlinProjectConfigurator input) { - return !input.getName().equals(KotlinJsModuleConfigurator.NAME); - } - }); - - - if (configurators.size() == 1) { - configurators.iterator().next().configure(project); - } - else if (configurators.isEmpty()) { - Messages.showErrorDialog("There aren't configurators available", "Configure Kotlin in Project"); - } - else { - Messages.showErrorDialog("More than one configurator are available", "Configure Kotlin in Project"); - ConfigureKotlinInProjectUtils.showConfigureKotlinNotificationIfNeeded(project); - } - } -} diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.kt new file mode 100644 index 00000000000..9808c6faa10 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.kt @@ -0,0 +1,64 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.idea.actions + +import com.intellij.openapi.actionSystem.AnAction +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.CommonDataKeys +import com.intellij.openapi.ui.Messages +import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.idea.configuration.KotlinProjectConfigurator +import org.jetbrains.kotlin.idea.configuration.ConfigureKotlinInProjectUtils +import org.jetbrains.kotlin.idea.project.TargetPlatform + +public abstract class ConfigureKotlinInProjectAction : AnAction() { + + abstract fun getAbleToRunConfigurators(project: Project): Collection + + override fun actionPerformed(e: AnActionEvent) { + val project = CommonDataKeys.PROJECT.getData(e.getDataContext()) + if (project == null) return + + if (ConfigureKotlinInProjectUtils.isProjectConfigured(project)) { + Messages.showInfoMessage("All modules with kotlin files are configured", e.getPresentation().getText()) + return + } + + val configurators = getAbleToRunConfigurators(project) + + when { + configurators.size() == 1 -> configurators.first().configure(project) + configurators.isEmpty() -> Messages.showErrorDialog("There aren't configurators available", e.getPresentation().getText()) + else -> { + Messages.showErrorDialog("More than one configurator is available", e.getPresentation().getText()) + ConfigureKotlinInProjectUtils.showConfigureKotlinNotificationIfNeeded(project) + } + } + } +} + +public class ConfigureKotlinJsInProjectAction: ConfigureKotlinInProjectAction() { + override fun getAbleToRunConfigurators(project: Project) = ConfigureKotlinInProjectUtils.getAbleToRunConfigurators(project).filter { + it.getTargetPlatform() == TargetPlatform.JS + } +} + +public class ConfigureKotlinJavaInProjectAction: ConfigureKotlinInProjectAction() { + override fun getAbleToRunConfigurators(project: Project) = ConfigureKotlinInProjectUtils.getAbleToRunConfigurators(project).filter { + it.getTargetPlatform() == TargetPlatform.JVM + } +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinJsInProjectAction.java b/idea/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinJsInProjectAction.java deleted file mode 100644 index 5ff969a502c..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinJsInProjectAction.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.idea.actions; - -import com.intellij.openapi.actionSystem.AnAction; -import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.CommonDataKeys; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.ui.Messages; -import org.jetbrains.kotlin.idea.configuration.ConfigureKotlinInProjectUtils; -import org.jetbrains.kotlin.idea.configuration.KotlinJsModuleConfigurator; -import org.jetbrains.kotlin.idea.configuration.KotlinProjectConfigurator; - -public class ConfigureKotlinJsInProjectAction extends AnAction { - - @Override - public void actionPerformed(AnActionEvent e) { - Project project = CommonDataKeys.PROJECT.getData(e.getDataContext()); - if (project == null) { - return; - } - KotlinProjectConfigurator configurator = ConfigureKotlinInProjectUtils.getConfiguratorByName(KotlinJsModuleConfigurator.NAME); - - assert configurator != null : "JsModuleConfigurator should be non-null"; - - if (ConfigureKotlinInProjectUtils.getNonConfiguredModules(project, configurator).isEmpty()) { - Messages.showInfoMessage("All modules are configured", "Configure Project Info"); - return; - } - configurator.configure(project); - } -} diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinAndroidGradleModuleConfigurator.java b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinAndroidGradleModuleConfigurator.java index b40408bdfc3..a479f4f68f8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinAndroidGradleModuleConfigurator.java +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinAndroidGradleModuleConfigurator.java @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.configuration; import com.intellij.openapi.module.Module; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.idea.JetPluginUtil; +import org.jetbrains.kotlin.idea.project.TargetPlatform; import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrClosableBlock; @@ -33,6 +34,12 @@ public class KotlinAndroidGradleModuleConfigurator extends KotlinWithGradleConfi return NAME; } + @NotNull + @Override + public TargetPlatform getTargetPlatform() { + return TargetPlatform.JVM; + } + @NotNull @Override public String getPresentableText() { diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleModuleConfigurator.java b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleModuleConfigurator.java index 62351934d40..84575fecf7e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleModuleConfigurator.java +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleModuleConfigurator.java @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.configuration; import com.intellij.openapi.module.Module; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.idea.JetPluginUtil; +import org.jetbrains.kotlin.idea.project.TargetPlatform; import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrClosableBlock; @@ -33,6 +34,12 @@ public class KotlinGradleModuleConfigurator extends KotlinWithGradleConfigurator return NAME; } + @NotNull + @Override + public TargetPlatform getTargetPlatform() { + return TargetPlatform.JVM; + } + @NotNull @Override public String getPresentableText() { diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaMavenConfigurator.java b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaMavenConfigurator.java index 43300e5a2a9..087d7523bd2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaMavenConfigurator.java +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaMavenConfigurator.java @@ -21,6 +21,7 @@ import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.dom.model.MavenDomPlugin; import org.jetbrains.kotlin.idea.project.ProjectStructureUtil; +import org.jetbrains.kotlin.idea.project.TargetPlatform; public class KotlinJavaMavenConfigurator extends KotlinMavenConfigurator { private static final String NAME = "maven"; @@ -41,4 +42,10 @@ public class KotlinJavaMavenConfigurator extends KotlinMavenConfigurator { createExecution(virtualFile, kotlinPlugin, module, false); createExecution(virtualFile, kotlinPlugin, module, true); } + + @NotNull + @Override + public TargetPlatform getTargetPlatform() { + return TargetPlatform.JVM; + } } diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.java b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.java index 3fbf5b11232..da8a6b33a35 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.java +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.java @@ -27,6 +27,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.idea.framework.JavaRuntimeLibraryDescription; import org.jetbrains.kotlin.idea.framework.JavaRuntimePresentationProvider; import org.jetbrains.kotlin.idea.project.ProjectStructureUtil; +import org.jetbrains.kotlin.idea.project.TargetPlatform; import org.jetbrains.kotlin.idea.versions.KotlinRuntimeLibraryCoreUtil; import org.jetbrains.kotlin.utils.PathUtil; @@ -90,6 +91,12 @@ public class KotlinJavaModuleConfigurator extends KotlinWithLibraryConfigurator return NAME; } + @NotNull + @Override + public TargetPlatform getTargetPlatform() { + return TargetPlatform.JVM; + } + @Override @NotNull public File getExistedJarFile() { diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavascriptMavenConfigurator.java b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavascriptMavenConfigurator.java index 90f152876b8..c5e7b855663 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavascriptMavenConfigurator.java +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavascriptMavenConfigurator.java @@ -21,6 +21,7 @@ import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.dom.model.MavenDomPlugin; import org.jetbrains.kotlin.idea.project.ProjectStructureUtil; +import org.jetbrains.kotlin.idea.project.TargetPlatform; public class KotlinJavascriptMavenConfigurator extends KotlinMavenConfigurator { private static final String NAME = "js maven"; @@ -54,4 +55,10 @@ public class KotlinJavascriptMavenConfigurator extends KotlinMavenConfigurator { protected String getGoal(boolean isTest) { return JS_GOAL; } + + @NotNull + @Override + public TargetPlatform getTargetPlatform() { + return TargetPlatform.JS; + } } diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.java b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.java index c9a55fb6d1b..c2c3df28862 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.java +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.java @@ -20,6 +20,7 @@ import com.intellij.openapi.module.Module; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.idea.framework.JSLibraryStdDescription; import org.jetbrains.kotlin.idea.project.ProjectStructureUtil; +import org.jetbrains.kotlin.idea.project.TargetPlatform; import org.jetbrains.kotlin.js.JavaScript; import org.jetbrains.kotlin.utils.PathUtil; @@ -34,6 +35,12 @@ public class KotlinJsModuleConfigurator extends KotlinWithLibraryConfigurator { return NAME; } + @NotNull + @Override + public TargetPlatform getTargetPlatform() { + return TargetPlatform.JS; + } + @NotNull @Override public String getPresentableText() { diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinProjectConfigurator.java b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinProjectConfigurator.java index 97b8f9218e6..3790e5d34a6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinProjectConfigurator.java +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinProjectConfigurator.java @@ -20,6 +20,7 @@ import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.idea.project.TargetPlatform; public interface KotlinProjectConfigurator { ExtensionPointName EP_NAME = ExtensionPointName.create("org.jetbrains.kotlin.projectConfigurator"); @@ -33,4 +34,7 @@ public interface KotlinProjectConfigurator { @NotNull String getPresentableText(); @NotNull String getName(); + + @NotNull + TargetPlatform getTargetPlatform(); }