« テキストのフォーマット(2.戦略の登録) | トップページ | ココログブックス・コンテスト参戦! »

2004.09.18

テキストのフォーマット(3.戦略の呼び出し)

前々回の「テキストのフォーマット(1.戦略の作成)」と前回の「テキストのフォーマット(2.戦略の登録)」で,フォーマット機能の追加は完了した。しかし,このままではフォーマット処理を呼び出すことができず,宝の持ち腐れになってしまう。つまり,ユーザがフォーマット機能を呼び出すことができるように,UIを準備しなければならない。ただし,テキストエディタに対してフォーマット機能の実行を呼び出すためには,ちょっと工夫が必要である。エディタクラスのformatメソッドを呼ぶだけ,なんて簡単なものではない。

テキストのコピーやペースト,アンドゥや文字列の選択などのテキストエディタに対する操作は,ITextOperationTargetインタフェースを通して行う。つまり,テキストエディタに対する指令は,ITextOperationTargetインタフェースに規定されているdoOperationメソッドを使用するように統一されているのだ。フォーマット機能の実行についてもITextOperationTargetインタフェースを通じて行う。ITextOperationTargetオブジェクトの取得については,テキストエディタを規定しているITextEditorインタフェースのgetAdapterメソッドを使うことによって取得することができる

  IEditorPart editorPart = ...;

  ITextEditor textEditor = (ITextEditor)editorPart;
  ITextOperationTarget target =
    (ITextOperationTarget)textEditor.getAdapter(ITextOperationTarget.class);
  target.doOperation(ISourceViewer.FORMAT);

フォーマット機能を実行するための定数として,ISourceViewerインタフェースにFORMAT定数が定義されている。つまり,ITextOperationTargetオブジェクトのdoOperationメソッドにISourceViewer.FORMATを渡すことにより,フォーマット機能が実行される。結果として,テキストエディタの内容は以下の図のように変更される。

format2.gif

上記のフォーマット機能の呼び出し処理は,エディタのコンテキストメニューのアクションクラスなどに記述して使用すると良いだろう。

以上がフォーマット機能の実装方法である。実際の整形処理については開発者自身が記述することなので,腕の見せ所といったところだろうか。

|

« テキストのフォーマット(2.戦略の登録) | トップページ | ココログブックス・コンテスト参戦! »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/12631/1466322

この記事へのトラックバック一覧です: テキストのフォーマット(3.戦略の呼び出し):

« テキストのフォーマット(2.戦略の登録) | トップページ | ココログブックス・コンテスト参戦! »