我不知道如何做一個真正的只讀日食編輯..我的編輯延伸文本編輯,所以當我重新實現方法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