Ответ 1
Это лучше всего решить, объединив JavaScript с кодом Java. Это зависит от того, какой контент HTML вы собираетесь обрабатывать, если он неактивен (например, не может перезагружаться), динамический с большим количеством JS-кода или простой статический. В большинстве случаев наилучшее решение будет включать большую часть логики, которая должна быть записана в JS, и просто минимальный код в Java для привязки действий JS к SWT GUI.
Здесь необходимо выполнить несколько действий:
- поиск ключевых слов
- подсветка
- переключение выделения из одного слова в другое
1. Поиск: вы понимаете, что не сможете искать слова, которые охватывают многие элементы HTML, например W<span>o</span>rd
? Если это нормально, вы можете просто искать и заменять Java, как сейчас. Я хотел бы пометить каждое совпадение слов с id: <span id="match1">
и вспомнить, сколько совпадений было найдено.
Вы также можете выполнить такой поиск на стороне JS, добавив функцию, которая выполняет итерацию через DOM, и ищет определенный текст и обертывает его другим объектом DOM.
2. Переключение подсветки. Лучше всего это сделать в JavaScript. Добавьте в свой HTML фрагмент кода JS, который переключает стиль элемента DOM. Что-то вроде: `
function highlight(id) {
document.getElementById(id).className = 'highlighted'
}
Вы можете вызвать этот JS из SWT, вызвав swtBrowser.execute("highlight('match1')")
Далее вы должны реализовать функцию, которая снимает подсветку.
3. Переключение подсветки между элементами:
Это можно сделать как на стороне Java, так и на стороне JS. Я, вероятно, поеду с JS и добавлю еще две функции: highlightNext()
и highlightPrev()
, которые просто вызовут функцию highlight()
с соответствующими идентификаторами.
Затем в Java вы можете создавать SWT-кнопки, которые вызывают функции JS через SWTBrowser.execute().