我想知道如何制作一个真正只读的eclipse编辑器。我的编辑器扩展了 TextEditor ,所以当我重新实现方法 isEditable 时总是返回 false 即可。

这是最简单的方法,可以防止用户在编辑器中打开的文档中输入或删除任何内容。但您仍然可以通过使用find / replace来更改文档的内容。这是不可取的..

是否还有其他任何方式来实现这一目标?

有帮助吗?

解决方案

我想使用编辑器而不是查看器,因为编辑器已经制作好了,所以我只使用了第三方插件..

我找到了我的解决方案 - 也许不是很干净但是做得很好而且很容易赢得

我已经覆盖了theese方法:

@Override
public boolean isEditable() {
    return false;
}

@Override
public boolean isEditorInputModifiable() {
    return false;
}

@Override
public boolean isEditorInputReadOnly() {
    return true;
}

@Override
public boolean isDirty() {
    return false;
}

其他提示

您是否尝试过创建自己的SourceViewer?像这样的东西。我自己没有尝试过代码。

class ReadOnlyViewer extends SourceViewer
{
   protected StyledText createTextWidget(Composite parent, int styles) 
   {
    return new StyledText(parent, styles | SWT.READ_ONLY);
   }
}

class MyEditor extends TextEditor
{
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) 
     {
        fAnnotationAccess= getAnnotationAccess();
        fOverviewRuler= createOverviewRuler(getSharedColors());

        ISourceViewer viewer= new ReadOnlyViewer(parent, ruler, getOverviewRuler(), isOverviewRulerVisible(), styles);
        // ensure decoration support has been created and configured.
        getSourceViewerDecorationSupport(viewer);

        return viewer;
    }
}

在SWT样式中,指定 SWT.READ_ONLY 。这应该拒绝所有修改文档的API(setText()除外,我希望...)

如果没有,请提交错误

为什么使用TextEditor而不是使用 TextViewer

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top