我想知道如何制作一个真正只读的 Eclipse 编辑器。我的编辑器扩展了TextEditor,所以当我重新实现方法时isEditable总是返回false。
这是最简单的方法,它可以防止用户在编辑器中打开的文档中键入或删除任何内容。但是您仍然可以更改文档的内容,例如使用查找/替换。这是不希望的..
有没有其他简单的方法来实现这个目标?
我想知道如何制作一个真正只读的 Eclipse 编辑器。我的编辑器扩展了TextEditor,所以当我重新实现方法时isEditable总是返回false。
这是最简单的方法,它可以防止用户在编辑器中打开的文档中键入或删除任何内容。但是您仍然可以更改文档的内容,例如使用查找/替换。这是不希望的..
有没有其他简单的方法来实现这个目标?
我想使用编辑器而不是查看器,因为编辑器已经制作好了,所以我只使用了一个 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;
}
您是否尝试过创建自己的 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?