質問

本当に読み取り専用の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()を除き、...)

そうでない場合は、バグを登録してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top