具有IDocument支持的Java StyledText控件

时间:2015-11-30 12:08:43

标签: eclipse rcp e4 styledtext

我的目的是编写一个NASTRAN文本编辑器(纯文本编辑器,eclipse纯E4 RCP应用程序)。 NASTRAN是一种工程结构分析应用程序。 简化,NASTRAN使用每个字段宽度为8个字符的文本卡,每张卡最多10个字段(行)。 见图到目前为止完成的工作

NASTRAN EDITOR screen capture

此编辑器的主要功能是显示带有彩色列背景的纯文本(固定间距字体),因此可以轻松区分每行中的不同字段。

我使用了StyledText控件,它提供了更改背景的方法:

styledText.setBackgroundImage(backgroundImage);

如何使用StyledText的IDocument界面,以便它可以为我提供支持: 文字操纵 位置 分区 线路信息 等...

其他文本控件(TextViewer,SourceViewer)提供了加载和操作文本数据的setDocument(IDocument)方法

--org.eclipse.jface.text.TextViewer

  |
--org.eclipse.jface.text.source.SourceViewer

但是StyledText扩展了SWT Canvas,并没有提供设置输入文档的方法

   --org.eclipse.swt.custom.StyledText

替代方法可能是如何在SourceViewer控件中更改背景,以便我可以使用不同颜色的列。

提前致谢

2 个答案:

答案 0 :(得分:1)

TextViewer和SourceViewer是StyledText的包装器,并提供处理IDocument接口的代码,因此您应该使用其中一个。

您可以调用查看器的getTextWidget()方法来访问他们正在使用的StyledText控件。

答案 1 :(得分:0)

感谢greg-449的回答,问题解决了。 我没有清楚地理解包含另一个类的类的概念。所以我首先尝试创建一个StyledText对象。 现在很清楚了

我已经在下面附上了我的进展:创建一个SourceViewer控件,然后获取StyledText包装。 所以我可以设置控件的背景图像

public class NastranEditor {
    public StyledText st = null;
    public SourceViewer sv = null;
    private Image backgroundImage;//The image to appear at the backgroud
    //....
    @PostConstruct
    public void postConstruct(Composite parent){
        IVerticalRuler  ruler = new VerticalRuler(20);
        sv = new SourceViewer(parent, ruler, SWT.MULTI | SWT.V_SCROLL);
        st = sv.getTextWidget();
        st.setBackgroundImage(backgroundImage);
        //....
    }
    //....
}