5

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

这是最简单的方法,它可以防止用户在编辑器中打开的文档中键入或删除任何内容。但是您仍然可以更改文档的内容,例如使用查找/替换。这是不希望的..

有没有其他简单的方法来实现这个目标?

4

4 回答 4

9

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

我找到了我的解决方案 - 也许不是很干净,但可以完成工作并且很容易,所以它赢了

我已经覆盖了这些方法:

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

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

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

@Override
public boolean isDirty() {
    return false;
}
于 2009-06-17T06:23:19.533 回答
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;
    }
}
于 2009-06-16T21:26:59.453 回答
-1

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

如果没有,请提交一个错误

于 2009-06-16T13:23:49.570 回答
-1

为什么您使用 TextEditor 而不是TextViewer

于 2009-06-16T13:34:15.727 回答