package org.fandev.runner; import com.intellij.execution.junit.RuntimeConfigurationProducer; import com.intellij.execution.impl.RunnerAndConfigurationSettingsImpl; import com.intellij.execution.Location; import com.intellij.execution.actions.ConfigurationContext; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import org.fandev.lang.fan.psi.FanFile; /** * @author Dror Bereznitsky * @date Jan 20, 2009 9:10:00 PM */ public class FanScriptRunConfigurationProducer extends RuntimeConfigurationProducer implements Cloneable { private PsiElement mySourceElement; public FanScriptRunConfigurationProducer() { super(FanScriptRunConfigurationType.getInstance()); } public PsiElement getSourceElement() { return mySourceElement; } protected RunnerAndConfigurationSettingsImpl createConfigurationByElement(final Location location, final ConfigurationContext context) { final PsiElement element = location.getPsiElement(); final PsiFile file = element.getContainingFile(); if (file instanceof FanFile) { final FanFile fanFile = (FanFile) file; mySourceElement = element; return (RunnerAndConfigurationSettingsImpl) FanScriptRunConfigurationType.getInstance().createConfigurationByLocation(location); } return null; } public int compareTo(final Object o) { return PREFERED; } }