Я пишу плагин eclipse с консолью с гиперссылками, но при создании гиперссылок вижу исключения BadLocationException.
Чтобы создать гиперссылку, я следовал инструкциям по соответствующему вопросу Как записать гиперссылку на консоль eclipse из плагина .
Справочная информация: Проблема, как представляется, заключается в том, что базовый документ обновляется асинхронно для запросов, которые записывают в консоль (например, через MessageOutputStream), поэтому попытка создания гиперссылки сразу после записи не будет работать, потому что индексы смещения и длины, указанные в запросе, недопустимы.
Чтобы попытаться это исправить, я создал DocumentListener в базовом документе, чтобы я мог определить, когда обновляется консоль, и создать HyperLink в этот момент. Но слушателю предоставляются события, которые соответствуют массовым обновлениям консоли, поэтому я не могу легко определить, обновлена ли еще консоль. Похоже, что единственный выбор - поискать в консольном документе строку, на которую я хочу перейти по гиперссылке, что кажется совершенно неэффективным.
Итак, вопрос : когда наступает правильное время для создания HyperLink после записи в консоль? Существуют ли проверенные механизмы, которые гарантируют, что базовый документ будет обновлен, когда я отправлю запрос на создание гиперссылки? Пример кода, который пишет в консоль, а затем создает HyperLink, был бы великолепен.
Не уверен в точной версии Eclipse (я пишу это из дома, прежде чем отправиться на работу) - но я знаю, что я использую MessageConsole.addHyperlink () для выдачи запроса.