Eclipse插件:如何在Debug视图中激活terminate按钮

时间:2011-04-06 11:01:25

标签: java plugins eclipse-plugin

我正在编写一个插件来扩展Eclipse以获得自定义编程语言。我有所有启动配置工作,自定义语言中的任何程序都正确启动但我似乎无法激活Debug视图中的Terminate按钮。

根据我的研究,我知道实现调试器框架提供了Terminate操作,但是,我不想在这个阶段实现框架,并且只想选择终止程序而不是通过任务管理器取消。这可能吗?或者调试器框架是唯一的方法吗?

这是LaunchConfigurationDelegate类的代码,

public void launch(ILaunchConfiguration configuration, String mode,
        ILaunch launch, IProgressMonitor monitor) throws CoreException {

    // getting the resource from the workspace
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root = workspace.getRoot();

    List<String> filenames = configuration.getAttribute(RELATIVE_PATH,
            Collections.EMPTY_LIST);
    List<String> rawPaths = configuration.getAttribute(RAW_PATH,
            Collections.EMPTY_LIST);
    List<String> projPaths = configuration.getAttribute(PROJECT_PATH,
            Collections.EMPTY_LIST);

    //CustomRunner is the interface to manage the custom language execution
    CustomRunner runner = null;
    try {
        CustomOutputHandler outHand = new CustomOutputHandler();
        runner = new CustomRunner(new File(projPaths.get(0)));
        runner.setOutputHandler(outHand);

        for (int i = 0; i < filenames.size(); i++) {
            IPath temp = new Path(filenames.get(i));
            IResource CustomFile = root.findMember(temp);

            if (CustomFile == null) {
                String msg = "The file "
                        + "<"
                        + temp.toString()
                        + ">"
                        + " could not be found in the workspace.\nIt may have been deleted or renamed.";
                throw new FileNotFoundException(msg);
            }
            CustomFile.deleteMarkers(IMarker.PROBLEM, false,
                    IResource.DEPTH_INFINITE);
            CustomErrorHandler errHand = new CustomErrorHandler(CustomFile);

            runner.setErrorHandler(errHand);

            //Runs the custom language file
            runner.run(rawPaths.get(i));
        }

之后只有一堆捕获块。

我现在需要能够通过Debug视图终止此启动,并且在运行模式的情况下通过Run菜单的terminate命令终止此启动。

我现阶段没有任何DebugTarget。我的问题是:是否有另一种方法可以在不扩展调试框架的情况下终止此次启动?

我在这个启动方法中尝试了launch.Terminate(),但是没有用。

1 个答案:

答案 0 :(得分:0)

除非您扩展Platform-debug支持,否则无法挂接到Debug视图中的Terminate按钮 - 至少没有用于此的API。您可以入侵调试框架的内部以添加支持而不进行扩展,但扩展可能比这更容易,并且可以在Eclipse的未来版本中使用