for scratch run configurations check if the context's file is the associated scratch file instead of modules comparison

This commit is contained in:
Eugene Zhuravlev
2015-09-23 13:05:06 +02:00
parent ae3f17d3d3
commit 4d2d29c11b
2 changed files with 15 additions and 4 deletions
@@ -20,12 +20,15 @@ import com.intellij.execution.JavaExecutionUtil;
import com.intellij.execution.Location;
import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.configurations.ConfigurationUtil;
import com.intellij.execution.impl.JavaScratchRunConfigurationExtension;
import com.intellij.execution.junit.JavaRunConfigurationProducerBase;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.util.PsiMethodUtil;
import com.intellij.psi.util.PsiTreeUtil;
@@ -91,12 +94,20 @@ public class ApplicationConfigurationProducer extends JavaRunConfigurationProduc
return false;
}
// for scratches it is enough to check that the configuration is associated with the same scratch file
final VirtualFile scratchFile = JavaScratchRunConfigurationExtension.getScratchVirtualFile(appConfiguration);
if (scratchFile != null) {
final PsiFile containingFile = aClass.getContainingFile();
if (containingFile != null && scratchFile.equals(containingFile.getVirtualFile())) {
return true;
}
}
final Module configurationModule = appConfiguration.getConfigurationModule().getModule();
if (Comparing.equal(context.getModule(), configurationModule)) return true;
ApplicationConfiguration template = (ApplicationConfiguration)context.getRunManager()
.getConfigurationTemplate(getConfigurationFactory())
.getConfiguration();
ApplicationConfiguration template =
(ApplicationConfiguration)context.getRunManager().getConfigurationTemplate(getConfigurationFactory()).getConfiguration();
final Module predefinedModule = template.getConfigurationModule().getModule();
if (Comparing.equal(predefinedModule, configurationModule)) {
return true;
@@ -105,7 +105,7 @@ public class JavaScratchRunConfigurationExtension extends RunConfigurationExtens
}
@Nullable
private static VirtualFile getScratchVirtualFile(RunConfiguration configuration) {
public static VirtualFile getScratchVirtualFile(RunConfiguration configuration) {
int id = getScratchFileId(configuration);
if (id < 0) {
return null;