API for setting per-module bytecode target level

This commit is contained in:
Eugene Zhuravlev
2012-05-24 18:23:14 +02:00
parent d0c4f5eb37
commit b32dc28aa0
2 changed files with 25 additions and 1 deletions
@@ -29,6 +29,7 @@ import com.intellij.compiler.impl.javaCompiler.eclipse.EclipseCompiler;
import com.intellij.compiler.impl.javaCompiler.eclipse.EclipseEmbeddedCompiler;
import com.intellij.compiler.impl.javaCompiler.javac.JavacCompiler;
import com.intellij.compiler.impl.javaCompiler.jikes.JikesCompiler;
import com.intellij.compiler.server.BuildManager;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ApplicationNamesInfo;
import com.intellij.openapi.application.ex.ApplicationManagerEx;
@@ -59,6 +60,7 @@ import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.io.File;
import java.util.*;
@@ -169,6 +171,27 @@ public class CompilerConfigurationImpl extends CompilerConfiguration implements
return myModuleBytecodeTarget;
}
public void setBytecodeTargetLevel(Module module, String level) {
final String previous;
if (StringUtil.isEmpty(level)) {
previous = myModuleBytecodeTarget.remove(module.getName());
}
else {
previous = myModuleBytecodeTarget.put(module.getName(), level);
}
if (!Comparing.equal(previous, level)) {
final Project project = module.getProject();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
if (!project.isDisposed()) {
CompileServerManager.getInstance().sendReloadRequest(project);
BuildManager.getInstance().clearState(project);
}
}
});
}
}
@Override
@Nullable
public String getBytecodeTargetLevel(Module module) {
@@ -33,6 +33,8 @@ public abstract class CompilerConfiguration {
@Nullable
public abstract String getBytecodeTargetLevel(Module module);
public abstract void setBytecodeTargetLevel(Module module, String level);
public static CompilerConfiguration getInstance(Project project) {
return project.getComponent(CompilerConfiguration.class);
}
@@ -72,5 +74,4 @@ public abstract class CompilerConfiguration {
public abstract boolean isAnnotationProcessingEnabled(Module module);
public abstract String getGeneratedSourceDirName(Module module);
}