5

本当に読み取り専用の Eclipse エディターを作成する方法を考えています。私のエディターはTextEditorを拡張するため、メソッドisEditableを再実装すると、常にfalseが返されます。

これは最も簡単な方法であり、ユーザーがエディターで開いたドキュメントに何かを入力したり削除したりできないようにします。ただし、たとえば検索/置換を使用して、ドキュメントのコンテンツを変更することはできます。そして、これは望ましくありません..

この目標を達成するための他の簡単な方法はありますか?

4

4 に答える 4

9

エディターは既に作成されているため、ビューアーの代わりにエディターを使用したかったので、サードパーティのプラグインを使用しました..

私は自分の解決策を見つけました-多分あまりきれいではありませんが、仕事をし、かなり簡単なので勝ちます

これらのメソッドをオーバーライドしました:

@Override
public boolean isEditable() {
    return false;
}

@Override
public boolean isEditorInputModifiable() {
    return false;
}

@Override
public boolean isEditorInputReadOnly() {
    return true;
}

@Override
public boolean isDirty() {
    return false;
}
于 2009-06-17T06:23:19.533 に答える
0

独自の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;
    }
}
于 2009-06-16T21:26:59.453 に答える
-1

SWTスタイルで、SWT.READ_ONLYを指定します。これにより、ドキュメントを変更するすべてのAPIが拒否されます(setText()を除いて、私は願っています...)

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

于 2009-06-16T13:23:49.570 に答える
-1

TextViewerを使用する代わりにTextEditorを使用しているのはなぜですか?

于 2009-06-16T13:34:15.727 に答える