我的插件代码减慢了Eclipse的速度,我可以改进什么?

时间:2014-10-16 08:10:20

标签: java eclipse eclipse-plugin

我有一个ITextViewer对象,从中可以看到Eclipse显示代码的StyledText小部件。我想高亮一行由行号定义的单行。因此,我向StyledText对象添加了一个LineBackgroundListener,并编写了以下代码:

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的速度。可能就是这种情况,因为它必须经常更新Widget并且这不是最佳的。然而,在经过大量试验之后,我想不出另一种方法。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您不需要这些(昂贵的)电话:

styledText.redraw();
styledText.update();
在绘制线操作期间调用

lineGetBackground,因此不需要重绘或更新。

注意:如果StyledText控件有任何StyleRange范围,则可能会覆盖背景。