diff --git a/java/compiler/impl/src/com/intellij/compiler/CompilerConfigurationImpl.java b/java/compiler/impl/src/com/intellij/compiler/CompilerConfigurationImpl.java index 5c57b8383f66..cbbcb7ac3002 100644 --- a/java/compiler/impl/src/com/intellij/compiler/CompilerConfigurationImpl.java +++ b/java/compiler/impl/src/com/intellij/compiler/CompilerConfigurationImpl.java @@ -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) { diff --git a/java/compiler/openapi/src/com/intellij/compiler/CompilerConfiguration.java b/java/compiler/openapi/src/com/intellij/compiler/CompilerConfiguration.java index f2b8d46c24ea..12e5d3354995 100644 --- a/java/compiler/openapi/src/com/intellij/compiler/CompilerConfiguration.java +++ b/java/compiler/openapi/src/com/intellij/compiler/CompilerConfiguration.java @@ -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); - } \ No newline at end of file