У меня есть объект ITextViewer и из него виджет StyledText, в котором Eclipse отображает код. Я хочу, чтобы hihglight одна строка, которая определяется номером строки. Поэтому я добавил LineBackgroundListener к объекту StyledText написал следующий код:Мой код плагина замедляет Eclipse, что я могу улучшить?
private class HighlightLine implements LineBackgroundListener {
@Override
public void lineGetBackground(LineBackgroundEvent event) {
if (lineToHighlight != -1) {
int line = ((StyledText) event.widget).getLineAtOffset(event.lineOffset);
if (line == lineToHighlight) {
event.lineBackground = styledText.getSelectionBackground();
} else if (line == previousLineToHighlight) {
event.lineBackground = styledText.getBackground();
}
styledText.redraw();
styledText.update();
}
}
}
Эта работа более или менее хорошо, но проблема в том, что очень замедляет Eclipse. Вероятно, это так, потому что он очень часто обновляет виджет, и это не оптимально. Тем не менее, я не мог придумать другой путь к нему после многих испытаний. Есть идеи?
Попробуйте перерисовать и обновить только цвет изменения цвета. – WidWing
@WidWing Хорошая идея, но я не нашел способ узнать, изменился ли цвет линии. – user6189