问题描述
我正在开发一个eclipse插件。它在控制台中写一些行。为了选择控制台中显示的一行,我试图从该控制台捕获鼠标双击事件。
已通过遵循此月食FAQ实现了控制台。 MessageConsole
或IconsoleView
类似乎没有提供一种方法来添加具有SWT.MouseDoubleClick
事件的侦听器。
有什么方法可以从控制台捕获鼠标事件,然后读取所选的行吗?
解决方法
MessageConsole
对数据的显示方式一无所知,是TextConsoleViewer
处理的。
要访问控制台查看器,您需要使用自定义消息控制台-扩展MessageConsole
或TextConsole
并覆盖createPage
以创建扩展了TextConsolePage
的自己的控制台页面。 / p>
控制台页面需要覆盖createViewer
方法,以创建扩展TextConsoleViewer
的自己的文本控制台查看器。
在查看器中,您可以覆盖mouseDoubleClick
方法来接收双击。
有关示例,请参阅Eclipse JDT JavaStackTraceConsole
,JavaStackTraceConsolePage
和JavaStackTraceConsoleViewer
类。
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