J'écris un plugin eclipse avec une console à lien hypertexte, mais je vois des BadLocationExceptions lors de la création des hyperliens.Hyperlien de la console Eclipse - Ecriture retardée causant BadLocationException?
Pour créer le lien hypertexte, j'ai suivi les instructions sur la question connexe How to write a hyperlink to an eclipse console from a plugin.
Contexte: La question semble être que le document sous-jacent est mis à jour de manière asynchrone aux demandes qui écrivent à la console (par exemple via un MessageOutputStream), afin de tenter de créer un lien hypertexte immédiatement après une écriture ne fonctionnera pas parce que la les index de décalage et de longueur fournis dans la requête ne sont pas valides. Pour essayer de résoudre ce problème, j'ai créé un DocumentListener sur le document sous-jacent, afin que je puisse détecter quand la console est mise à jour et créer HyperLink à ce moment-là. Mais l'écouteur est fourni avec des événements qui correspondent aux mises à jour en bloc de la console - donc je ne peux pas facilement détecter si la console a été mise à jour pour le moment. Le seul choix semble être de rechercher dans le document de la console la chaîne que je veux mettre en hyperlien, ce qui semble assez inefficace.
Donc, la question est: quand est le bon moment pour créer un HyperLink, après avoir écrit sur la console? Existe-t-il des mécanismes éprouvés qui garantissent que le document sous-jacent aura été mis à jour lorsque j'émettrai ma demande de création de lien hypertexte? Un exemple de code qui écrit sur la console puis crée un HyperLink serait génial.
Je ne suis pas certain de la version exacte d'eclipse (j'écris ceci depuis chez moi avant d'aller travailler) - mais je sais que j'utilise MessageConsole.addHyperlink() pour lancer la requête.