2010-01-14 75 views
2

我需要编写一个文本编辑器,它可以合并多个来源的任意文本样式(在我的例子中:拼写检查器,样式提示像重复的单词,链接和其他标记)使用SWT StyledText。我检查了标准方法:寻找一个使用SWT的StyledText的复杂文本编辑器的例子

  1. 我可以安装一个修改侦听器并为每个修改的整个文本创建样式。这很慢但准确。

  2. 我可以使用LineStyleListener。这意味着我必须自己重新绘制文本(例如在重复单词的情况下,因为它们中的一些将超出当前编辑范围),再加上编辑器不会缓存样式,所以此API会被更频繁地调用那么人们会期望。

  3. 我可以像IDE一样使用背景调节器。这意味着从用户的角度来看,造型滞后于不好的编辑。

蛋糕上的糖衣是我需要层次的风格,所以我必须要重新实现StyleRange API。

有没有人看到更好的解决方案?有人能指引我做一些比关键词更重要的例子吗?

+0

我只知道'PresentationReconcilier'(http://stackoverflow.com/questions/2009750/programmatically-change-the-background-color-in-eclipse/2023896#2023896),但这可能不会传递给用户体验你后... – VonC 2010-01-14 08:48:10

回答

2

我用这个example作为编辑器的起点,它已经相当先进。它帮助我理解多线样式,并为我的编辑实现基于reg-ex的样式引擎。

的StyleRange API并没有真正提供这样做交叉状合并方式1,从指数1变为20指数和风格2 10至14 东西这个范围的一种方式。

如果这是你的意思是用“分层风格”的东西,有一个在JFace的一个解决方案:org.eclipse.jface.text.TextPresentation

您可以添加所有的样式mergeStyleRange(.),并使用getAllStyleRangeIterator()得到结果。很有用。

相关问题