Гиперссылка на консоль eclipse - отложенные записи, вызывающие исключение BadLocationException? - PullRequest
3 голосов
/ 18 декабря 2009

Я пишу плагин eclipse с консолью с гиперссылками, но при создании гиперссылок вижу исключения BadLocationException.

Чтобы создать гиперссылку, я следовал инструкциям по соответствующему вопросу Как записать гиперссылку на консоль eclipse из плагина .

Справочная информация: Проблема, как представляется, заключается в том, что базовый документ обновляется асинхронно для запросов, которые записывают в консоль (например, через MessageOutputStream), поэтому попытка создания гиперссылки сразу после записи не будет работать, потому что индексы смещения и длины, указанные в запросе, недопустимы.

Чтобы попытаться это исправить, я создал DocumentListener в базовом документе, чтобы я мог определить, когда обновляется консоль, и создать HyperLink в этот момент. Но слушателю предоставляются события, которые соответствуют массовым обновлениям консоли, поэтому я не могу легко определить, обновлена ​​ли еще консоль. Похоже, что единственный выбор - поискать в консольном документе строку, на которую я хочу перейти по гиперссылке, что кажется совершенно неэффективным.

Итак, вопрос : когда наступает правильное время для создания HyperLink после записи в консоль? Существуют ли проверенные механизмы, которые гарантируют, что базовый документ будет обновлен, когда я отправлю запрос на создание гиперссылки? Пример кода, который пишет в консоль, а затем создает HyperLink, был бы великолепен.

Не уверен в точной версии Eclipse (я пишу это из дома, прежде чем отправиться на работу) - но я знаю, что я использую MessageConsole.addHyperlink () для выдачи запроса.

1 Ответ

0 голосов
/ 17 февраля 2010

Я нахожусь в точно такой же ситуации и пришел к тому же выводу: я добавляю гиперссылку в прослушиватель документов, затем удаляю прослушиватель документов. Обратите внимание, что у вас нет другого выбора, кроме поиска строки, потому что консоль может быть очищена пользователем! В моем случае это не серьезное снижение производительности, поэтому я доволен этим решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...