我想知道如何制作一个真正只读的eclipse编辑器。我的编辑器扩展了 TextEditor ,所以当我重新实现方法 isEditable 时总是返回 false 即可。
这是最简单的方法,可以防止用户在编辑器中打开的文档中输入或删除任何内容。但您仍然可以通过使用find / replace来更改文档的内容。这是不可取的..
是否还有其他任何方式来实现这一目标?
答案 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?