如何在Eclipse中创建只读编辑器(Eclipse插件开发)

时间:2009-06-16 12:58:48

标签: eclipse editor eclipse-rcp readonly eclipse-pde

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

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

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

4 个答案:

答案 0 :(得分:9)

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

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

我已经覆盖了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;
}

答案 1 :(得分:0)

您是否尝试过创建自己的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;
    }
}

答案 2 :(得分:-1)

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

如果没有,请file a bug

答案 3 :(得分:-1)

为什么使用文本编辑器而不是TextViewer