1

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

NASTRAN EDITOR 屏幕截图

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

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

styledText.setBackgroundImage(backgroundImage);

我如何使用 IDocument 接口,StyledText所以它可以为我提供支持:文本操作位置分区行信息等...

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

--org.eclipse.jface.text.TextViewer

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

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

   --org.eclipse.swt.custom.StyledText

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

提前致谢

4

2 回答 2

1

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

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

于 2015-11-30T13:29:06.287 回答
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);
        //....
    }
    //....
}
于 2015-12-03T16:47:02.017 回答