package org.fandev.lang.fan; import com.intellij.openapi.components.ApplicationComponent; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.ProjectManagerAdapter; import com.intellij.openapi.project.Project; import com.intellij.debugger.DebuggerManager; import com.intellij.debugger.PositionManager; import com.intellij.debugger.engine.DebugProcess; import com.intellij.debugger.engine.DebugProcessListener; import com.intellij.debugger.engine.SuspendContext; import com.intellij.util.Function; import com.intellij.xdebugger.DefaultDebugProcessHandler; import com.intellij.execution.configurations.RunProfileState; import com.intellij.execution.configurations.RemoteConnection; import com.intellij.execution.ExecutionException; import org.jetbrains.annotations.NotNull; import org.fandev.debugger.FanPositionManager; /** * Date: Sep 2, 2009 * Time: 11:52:56 PM * * @author Dror Bereznitsky */ public class FanLoader implements ApplicationComponent { static { System.setProperty("fan.debug", "true"); } @NotNull public String getComponentName() { return "fan.support.loader"; } public void initComponent() { ProjectManager.getInstance().addProjectManagerListener(new ProjectManagerAdapter() { public void projectOpened(final Project project) { DebuggerManager.getInstance(project).registerPositionManagerFactory(new Function<DebugProcess, PositionManager>() { public PositionManager fun(final DebugProcess debugProcess) { return new FanPositionManager(debugProcess); } }); } }); } public void disposeComponent() { } }