我正在编写带有超链接控制台的eclipse插件,但在创建超链接时我看到了BadLocationExceptions。
要创建超链接,我按照相关问题How to write a hyperlink to an eclipse console from a plugin上的说明进行操作。
背景:问题似乎是底层文档异步更新到写入控制台的请求(例如通过MessageOutputStream),因此尝试在写入后立即创建超链接'因为请求中提供的偏移量和长度索引无效。
为了解决这个问题,我在底层文档上创建了一个DocumentListener,这样我就能检测到控制台何时更新并在那时创建HyperLink。但是监听器提供的事件对应于控制台的批量更新 - 因此我无法轻易检测控制台是否已更新。唯一的选择似乎是在控制台文档中搜索我想要超链接的字符串,这看起来非常低效。
所以问题是:写入控制台后,何时是创建HyperLink的正确时间?在发出超链接创建请求时,是否有任何经过验证的机制可以保证基础文档已更新?写入控制台然后创建HyperLink的代码示例很棒。
不确定eclipse的确切版本(我在开始工作之前从家里写这篇文章) - 但我确实知道我正在使用MessageConsole.addHyperlink()来发出请求。
答案 0 :(得分:0)
我处于完全相同的情况,得出了相同的结论:我在文档监听器中添加了超链接,然后删除了文档监听器。请注意,除了搜索字符串之外别无选择,因为用户可以清除控制台!就我而言,这并不是一个严重的性能损失,所以我对这个解决方案很满意。