Eclipseで読み取り専用エディターを作成する方法(Eclipseプラグイン開発)
-
05-07-2019 - |
質問
本当に読み取り専用のEclipseエディターを作成する方法が不思議です。私のエディターは TextEditor を拡張しているので、メソッド isEditable を再実装して常に falseを返します。 。
これは最も簡単な方法で、ユーザーがエディターで開いたドキュメントの入力や削除を防ぐことができます。ただし、たとえば検索/置換を使用して、ドキュメントのコンテンツを変更することはできます。これは望ましくありません。
この目標を達成する他の簡単な方法はありますか?
解決
エディタはすでに作成されているため、ビューアではなくエディタを使用したかったため、サードパーティのプラグインを使用しました。
解決策を見つけました-maybeeはあまりきれいではありませんが、仕事をしていて、とても簡単なので勝ちます
これらのメソッドをオーバーライドしました:
@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()を除き、...)
そうでない場合は、バグを登録してください。
所属していません StackOverflow