Можно ли добавлять ссылки в стиле HTML в SWT StyledText?
Вопрос
Я знаю, что в SWT есть класс Link для создания HTML-ссылок в стиле href в качестве виджетов, но я пытался найти способ заставить определенный текст в элементе управления StyledText отображаться и функционировать как ссылка.
Я чувствую, что Eclipse делает это в своем редакторе кода, если вы удерживаете элемент управления и наводите курсор на имя метода, но я знаю, что Java-редактор Eclipse намного сложнее, чем элемент управления StyledText.
Решение
Начиная с JFace 3.5, для ссылок используется специальный стиль:
styleRange.underlineStyle = SWT.UNDERLINE_LINK;
styleRange.data = "http://www.google.com/";
Это значительно упрощает идентификацию ссылки, и вы можете сохранить URL-адрес в этом стиле.Что касается автоматического поиска ссылок, просто ищите шаблон http://[^ ]
(пробелы в ссылках не допускаются) в полученных строках и добавьте стиль.
Другие советы
Вам нужно добавить LineStyleListener в виджет StyledText:
textField.addLineStyleListener (...);
...
public void lineGetStyle (LineStyleEvent e)
{
// alloc a set of styles for the requested line
e.styles = new StyleRange [...];
for (int i = 0; i < e.styles.length; i++)
{
StyleRange styleRange = new StyleRange ();
styleRange.start = ...;
styleRange.length = ...;
styleRange.underline = true;
styleRange.foreground = <URL colour>;
e.styles [i] = styleRange;
}
}
Javadoc для LineStyleListener предоставит вам дополнительную информацию.
Чтобы добавить поведение щелчка, вам понадобится еще немного логики:Я мог бы также вставить некоторый код, который мы используем для автоматического добавления URL-адресов кликабельных ссылок в стиле HTML в виджет StyledText, если это поможет.