package krasa.mavenhelper.action.debug;

import krasa.mavenhelper.action.RunConfigurationAction;

import org.jetbrains.idea.maven.execution.MavenRunConfiguration;

import com.intellij.execution.Executor;
import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.impl.RunnerAndConfigurationSettingsImpl;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.Project;

/**
 * @author Vojtech Krasa
 */
public class DebugConfigurationAction extends RunConfigurationAction {
	public DebugConfigurationAction(Executor executor, boolean enabled, Project project, RunnerAndConfigurationSettings settings) {
		super(executor, enabled, project, settings);
	}

	@Override
	public void actionPerformed(final AnActionEvent event) {
		if (!myEnabled) return;

		final RunnerAndConfigurationSettings configurationSettings = clone(mySettings);
		addForkMode(configurationSettings);

		MavenDebugConfigurationType.debugConfiguration(myProject, null, configurationSettings, myExecutor);
	}

	private RunnerAndConfigurationSettings clone(RunnerAndConfigurationSettings configSettings) {
		RunnerAndConfigurationSettingsImpl runnerAndConfigurationSettings = (RunnerAndConfigurationSettingsImpl) configSettings;
		return runnerAndConfigurationSettings.clone();
	}

	private void addForkMode(RunnerAndConfigurationSettings configSettings) {
		MavenRunConfiguration mavenRunConfiguration = (MavenRunConfiguration) configSettings.getConfiguration();
		mavenRunConfiguration.getRunnerParameters().getGoals().addAll(Debug.DEBUG_FORK_MODE);
	}
}