Some improvements in configurators

This commit is contained in:
Natalia.Ukhorskaya
2013-09-16 15:31:27 +04:00
parent 88642ae1cc
commit d7334596d2
8 changed files with 53 additions and 29 deletions
@@ -89,32 +89,49 @@ public class ConfigureKotlinInProjectUtils {
} }
private static void showConfigureKotlinNotification(final Project project) { private static void showConfigureKotlinNotification(final Project project) {
Collection<KotlinProjectConfigurator> configurators = getApplicableConfigurators(project);
String links = StringUtil.join(configurators, new Function<KotlinProjectConfigurator, String>() {
@Override
public String fun(KotlinProjectConfigurator configurator) {
return getLink(configurator);
}
}, " ");
Notifications.Bus.notify( Notifications.Bus.notify(
new Notification("Configure Kotlin", new Notification("Configure Kotlin",
"Kotlin file(s) found in your project.", "Kotlin file(s) found in your project.",
"Configure Kotlin:\n" + links, getNotificationString(project),
NotificationType.ERROR, new NotificationListener() { NotificationType.WARNING, new NotificationListener() {
@Override @Override
public void hyperlinkUpdate(@NotNull Notification notification, @NotNull HyperlinkEvent event) { public void hyperlinkUpdate(@NotNull Notification notification, @NotNull HyperlinkEvent event) {
if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
KotlinProjectConfigurator configurator = getConfiguratorByName(event.getDescription()); KotlinProjectConfigurator configurator = getConfiguratorByName(event.getDescription());
if (configurator == null) { if (configurator == null) {
throw new AssertionError("Missed action: " + event.getDescription()); throw new AssertionError("Missed action: " + event.getDescription());
}
configurator.configure(project);
notification.expire();
}
} }
configurator.configure(project); }), project);
notification.expire(); }
}
private static String getNotificationString(Project project) {
StringBuilder builder = new StringBuilder("Configure ");
Collection<Module> modules = getModulesWithKotlinFiles(project);
final boolean isOnlyOneModule = modules.size() == 1;
if (isOnlyOneModule) {
builder.append("'").append(modules.iterator().next().getName()).append("' module");
}
else {
builder.append("modules");
}
builder.append(" in '").append(project.getName()).append("' project");
builder.append("\n");
String links = StringUtil.join(getApplicableConfigurators(project), new Function<KotlinProjectConfigurator, String>() {
@Override
public String fun(KotlinProjectConfigurator configurator) {
return getLink(configurator, isOnlyOneModule);
} }
}), project); }, " ");
builder.append(links);
return builder.toString();
} }
@NotNull @NotNull
@@ -162,8 +179,11 @@ public class ConfigureKotlinInProjectUtils {
return result; return result;
} }
@NotNull @NotNull
public static String getLink(@NotNull KotlinProjectConfigurator configurator) { public static String getLink(@NotNull KotlinProjectConfigurator configurator, boolean isOnlyOneModule) {
return StringUtil.join("<a href=\"", configurator.getName(), "\">", configurator.getPresentableText(), "</a>"); return StringUtil.join("<a href=\"", configurator.getName(), "\">as Kotlin (",
configurator.getPresentableText(),
isOnlyOneModule ? ") module" : ") modules",
"</a>");
} }
private ConfigureKotlinInProjectUtils() { private ConfigureKotlinInProjectUtils() {
@@ -20,7 +20,7 @@ public class KotlinAndroidGradleModuleConfigurator extends KotlinWithGradleConfi
@NotNull @NotNull
@Override @Override
public String getPresentableText() { public String getPresentableText() {
return "As Android project with Gradle"; return "Android with Gradle";
} }
@Override @Override
@@ -36,7 +36,7 @@ public class KotlinGradleModuleConfigurator extends KotlinWithGradleConfigurator
@NotNull @NotNull
@Override @Override
public String getPresentableText() { public String getPresentableText() {
return "As Gradle project"; return "Gradle";
} }
@Override @Override
@@ -51,7 +51,7 @@ public class KotlinJavaModuleConfigurator extends KotlinWithLibraryConfigurator
@NotNull @NotNull
@Override @Override
public String getPresentableText() { public String getPresentableText() {
return "As Java project"; return "Java";
} }
@NotNull @NotNull
@@ -29,7 +29,7 @@ public class KotlinJsModuleConfigurator extends KotlinWithLibraryConfigurator {
@NotNull @NotNull
@Override @Override
public String getPresentableText() { public String getPresentableText() {
return "As JavaScript project"; return "JavaScript";
} }
@Override @Override
@@ -17,6 +17,7 @@
package org.jetbrains.jet.plugin.configuration; package org.jetbrains.jet.plugin.configuration;
import com.intellij.codeInsight.CodeInsightUtilCore; import com.intellij.codeInsight.CodeInsightUtilCore;
import com.intellij.ide.actions.OpenFileAction;
import com.intellij.ide.highlighter.JavaFileType; import com.intellij.ide.highlighter.JavaFileType;
import com.intellij.openapi.application.Result; import com.intellij.openapi.application.Result;
import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.command.WriteCommandAction;
@@ -84,6 +85,7 @@ public class KotlinMavenConfigurator implements KotlinProjectConfigurator {
PsiFile file = findModulePomFile(module); PsiFile file = findModulePomFile(module);
if (file != null && canConfigureFile(file)) { if (file != null && canConfigureFile(file)) {
changePomFile(module, file, dialog.getKotlinVersion()); changePomFile(module, file, dialog.getKotlinVersion());
OpenFileAction.openFile(file.getVirtualFile(), project);
} }
else { else {
showErrorMessage(project, "Cannot find pom.xml for module " + module.getName()); showErrorMessage(project, "Cannot find pom.xml for module " + module.getName());
@@ -254,7 +256,7 @@ public class KotlinMavenConfigurator implements KotlinProjectConfigurator {
@NotNull @NotNull
@Override @Override
public String getPresentableText() { public String getPresentableText() {
return "As Maven project"; return "Maven";
} }
@NotNull @NotNull
@@ -17,6 +17,7 @@
package org.jetbrains.jet.plugin.configuration; package org.jetbrains.jet.plugin.configuration;
import com.intellij.codeInsight.CodeInsightUtilCore; import com.intellij.codeInsight.CodeInsightUtilCore;
import com.intellij.ide.actions.OpenFileAction;
import com.intellij.openapi.application.Result; import com.intellij.openapi.application.Result;
import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.module.Module; import com.intellij.openapi.module.Module;
@@ -90,6 +91,7 @@ public abstract class KotlinWithGradleConfigurator implements KotlinProjectConfi
GroovyFile file = getBuildGradleFile(project, gradleFilePath); GroovyFile file = getBuildGradleFile(project, gradleFilePath);
if (file != null && canConfigureFile(file)) { if (file != null && canConfigureFile(file)) {
changeGradleFile(file, dialog.getKotlinVersion()); changeGradleFile(file, dialog.getKotlinVersion());
OpenFileAction.openFile(gradleFilePath, project);
} }
else { else {
showErrorMessage(project, "Cannot find build.gradle file for module " + module.getName()); showErrorMessage(project, "Cannot find build.gradle file for module " + module.getName());
@@ -13,7 +13,7 @@
<grid row="0" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/> <grid row="0" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints> </constraints>
<properties> <properties>
<text value="All modules with kt files: "/> <text value="All modules containing Kotlin files: "/>
</properties> </properties>
</component> </component>
<component id="e348f" class="javax.swing.JRadioButton" binding="singleModuleRadioButton" default-binding="true"> <component id="e348f" class="javax.swing.JRadioButton" binding="singleModuleRadioButton" default-binding="true">