如何从Eclipse插件中的控制台捕获鼠标单击事件

问题描述

我正在开发一个eclipse插件。它在控制台中写一些行。为了选择控制台中显示的一行,我试图从该控制台捕获鼠标双击事件。

已通过遵循此月食FAQ实现了控制台。 MessageConsoleIconsoleView类似乎没有提供一种方法添加具有SWT.MouseDoubleClick事件的侦听器。

有什么方法可以从控制台捕获鼠标事件,然后读取所选的行吗?

解决方法

MessageConsole对数据的显示方式一无所知,是TextConsoleViewer处理的。

要访问控制台查看器,您需要使用自定义消息控制台-扩展MessageConsoleTextConsole并覆盖createPage以创建扩展了TextConsolePage的自己的控制台页面。 / p>

控制台页面需要覆盖createViewer方法,以创建扩展TextConsoleViewer的自己的文本控制台查看器。

在查看器中,您可以覆盖mouseDoubleClick方法来接收双击。

有关示例,请参阅Eclipse JDT JavaStackTraceConsoleJavaStackTraceConsolePageJavaStackTraceConsoleViewer类。

public class JavaStackTraceConsole extends TextConsole {

    ...

    @Override
    public IPageBookViewPage createPage(IConsoleView view) {
        return new JavaStackTraceConsolePage(this,view);
    }
}
public class JavaStackTraceConsolePage extends TextConsolePage {
   
    ...

    @Override
    protected TextConsoleViewer createViewer(Composite parent) {
        return new JavaStackTraceConsoleViewer(parent,(JavaStackTraceConsole) getConsole());
    }
}
public class JavaStackTraceConsoleViewer extends TextConsoleViewer {
  ...
}
,

谢谢,它工作正常。我只需要用另一种方式来管理鼠标事件,因为无法覆盖payment方法。这是我的代码:

mouseDoubleClick