【问题标题】:How to make read only editor in Eclipse (Eclipse Plugin Development)如何在 Eclipse 中制作只读编辑器(Eclipse 插件开发)
【发布时间】:2010-11-03 07:59:10
【问题描述】:

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

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

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

【问题讨论】:

  • 漂亮的矛盾修饰法-“只读编辑器”

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


【解决方案1】:

我想使用编辑器而不是查看器,因为编辑器已经制作好了,所以我只使用了一个 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;
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      如果没有,请file a bug。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 因为我使用的是第三方编辑器在多页编辑器中显示生成的源代码
        • 但是当您只想显示源代码时,您应该考虑编写自己的查看器。但我可以想象,您想使用 3rd 方编辑器的突出显示来显示代码。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多