2009-12-18 93 views
3

我正在写超链接控制台的eclipse插件,但创建超链接时看到BadLocationExceptions。超链接eclipse控制台 - 延迟写入导致BadLocationException?

要创建超链接,我按照相关问题How to write a hyperlink to an eclipse console from a plugin上的说明操作。

背景:问题似乎是底层文档被异步更新为写入控制台的请求(例如,通过MessageOutputStream),因此尝试在写入后立即创建超链接将不起作用,因为请求中提供的偏移量和长度索引无效。

为了解决这个问题,我在底层文档上创建了一个DocumentListener,这样我就可以检测控制台何时更新并在此时创建HyperLink。但是监听器提供了与控制台批量更新相对应的事件 - 所以我无法轻松检测到控制台是否已更新。唯一的选择似乎是在控制台文档中搜索我想要超链接的字符串,这看起来效率很低。

所以问题是:在写入控制台之后,何时创建HyperLink是正确的时间?是否有任何经过验证的机制可以保证在发布超链接创建请求时底层文档已经更新?写入控制台的代码然后创建一个HyperLink的例子会很棒。

不确定eclipse的确切版本(我在上班之前从家中写入) - 但我确实知道我在使用MessageConsole.addHyperlink()发出请求。

回答

0

我处于完全相同的情况,并得出了相同的结论:我在文档侦听器中添加超链接,然后删除文档侦听器。请注意,除搜索字符串之外,您没有其他选择,因为控制台可以由用户清除!就我而言,这不是一个严重的性能损失,所以我对这个解决方案感到满意。