我不知道如何做一个真正的只读日食编辑..我的编辑延伸文本编辑,所以当我重新实现方法isEditable总是返回使只读编辑器假。如何在Eclipse(Eclipse插件开发)
这是最简单的方法,它可以防止用户在编辑器中打开的文档中输入或删除任何内容。但是您仍然可以通过使用查找/替换来更改文档的内容。这是不希望的。
有没有其他的方式如何arhieve这个目标?
我不知道如何做一个真正的只读日食编辑..我的编辑延伸文本编辑,所以当我重新实现方法isEditable总是返回使只读编辑器假。如何在Eclipse(Eclipse插件开发)
这是最简单的方法,它可以防止用户在编辑器中打开的文档中输入或删除任何内容。但是您仍然可以通过使用查找/替换来更改文档的内容。这是不希望的。
有没有其他的方式如何arhieve这个目标?
我想用编辑器,而不是浏览器,因为编辑器已经做出,所以我只是用一个第三方插件..
,我发现我的解决方案 - 梅比不是很干净,但做这项工作,并是很容易的,因此赢得
我重写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;
}
在SWT样式中,指定SWT.READ_ONLY。这应该拒绝修改文档的所有API(除了setText(),我希望...)
如果不是,请file a bug。
为什么你使用TextEditor而不是使用TextViewer?
您是否尝试过创建自己的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;
}
}
尼斯oxymoron-“只读编辑器” – RichardOD 2009-06-16 13:02:04
你说得对:d +1 – 2009-06-16 13:47:29