// Copyright 2006-2012 AdvancedTools. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.advancedtools.cpp.debugger.remote; import com.intellij.execution.configurations.*; import com.intellij.execution.runners.ProgramRunner; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.Executor; import com.intellij.execution.ExecutionException; import com.intellij.execution.filters.TextConsoleBuilderFactory; import com.intellij.execution.process.OSProcessHandler; import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.util.JDOMExternalizable; import com.intellij.openapi.util.WriteExternalException; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.project.Project; import com.advancedtools.cpp.run.BaseCppConfiguration; import org.jetbrains.annotations.NotNull; import org.jdom.Element; import java.util.StringTokenizer; /** * @author maxim * Date: Apr 5, 2009 * Time: 11:22:12 AM */ public class CppRemoteDebugConfiguration extends BaseCppConfiguration<CppRemoteDebugParameters> implements RunConfiguration { private static final String HOST_NAME = "host"; private static final String PORT_NAME = "port"; private static final String PID_NAME = "pid"; protected CppRemoteDebugConfiguration(Project project, ConfigurationFactory configurationFactory, String name) { super(project, configurationFactory, name); } @NotNull protected CppRemoteDebugParameters createRunnerParameters() { return new CppRemoteDebugParameters(); } public SettingsEditor<? extends RunConfiguration> getConfigurationEditor() { return new CppRemoteDebugSettingEditor(getProject()); } public com.intellij.execution.configurations.ConfigurationPerRunnerSettings createRunnerSettings(ConfigurationInfoProvider configurationInfoProvider) { return null; } public SettingsEditor<com.intellij.execution.configurations.ConfigurationPerRunnerSettings> getRunnerSettingsEditor(ProgramRunner programRunner) { return null; } protected void fillStateCommandLine(GeneralCommandLine commandLine) { } @Override public void checkConfiguration() throws RuntimeConfigurationException { super.checkConfiguration(); String pid = myRunnerParameters.getPid(); if (BaseCppConfiguration.isEmpty(pid)) { complainIfEmpty(myRunnerParameters.getHost(), "invalid host:"); complainIfEmpty(myRunnerParameters.getPort(), "invalid port:"); } } @Override public void writeExternal(Element element) throws WriteExternalException { super.writeExternal(element); String host = myRunnerParameters != null ? myRunnerParameters.getHost():null; if (host != null) element.setAttribute(HOST_NAME, host); String port = myRunnerParameters != null ? myRunnerParameters.getPort():null; if (port != null) element.setAttribute(PORT_NAME, port); String pid = myRunnerParameters != null ? myRunnerParameters.getPid():null; if (pid != null) element.setAttribute(PID_NAME, port); } @Override public void readExternal(Element element) throws InvalidDataException { super.readExternal(element); myRunnerParameters.setHost(element.getAttributeValue(HOST_NAME)); myRunnerParameters.setPort(element.getAttributeValue(PORT_NAME)); myRunnerParameters.setPid(element.getAttributeValue(PID_NAME)); } }