« リソースが持つマーカーの取得 | トップページ | マーカーの削除 »

2004.02.23

リソースへのマーキング

エディタでTODOやコンパイルエラーの印として表示されるマーカー。もちろん自分でプログラムを書いてマーカーをつける(マーキングする)ことができる。

マーキングは,あるリソースに対して行う。つまり,まずはマーキングの対象となるリソースのIResourceオブジェクトを取得する必要がある。IResourceオブジェクトさえ取得できれば,あとはcreateMarkerメソッドを使ってマーキングすることができる

  IResource resource = ...;
  IMarker marker = resource.createMarker(IMarker.TASK);
  Map attributeMap = new HashMap();
  attributeMap.put(IMarker.MESSAGE, "あとで削除すべし。");
  attributeMap.put(IMarker.LINE_NUMBER, new Integer(100));
  marker.setAttributes(attributeMap);

createMarkerメソッドの引数には,マーカーの種類を表すIDを指定する。IMarkerインタフェースには,いくつかの標準マーカーが定義されている。上記では,TASKマーカー,つまりTODOマーカーを指定している。

マーカーは,いくつかの属性を持つことができる。というか,マーカーの種類によっては必須の属性もある。代表的な属性についてはIMarkerインタフェースで定義されていて,それらについてはTaskビューなどで利用される。上記の例では,IMarker.MESSAGE属性でマーカーにメッセージを付与し,そしてIMarker.LINE_NUMBER属性でマーキングする行番号(100行目)を指定している。これらの属性をMapコレクションに詰めて,setAttributesメソッドに渡してマーカーに与える。

属性をひとつひとつ指定するsetAttributeメソッドも存在するが,できるだけMapに詰めて一回で属性をセットするようにする。なんでかっていうと,マーカーの属性が変化するたびにいろんな処理(再描画とかTasksビューへの通知とか)が呼び出されるため,その処理コストは結構なものになってしまい,プラットフォームに余計な負荷がかかってしまうからである。

実は上記の方法では,マーキングはできるんだけど,エディタの左縦ルーラーにマーカーがすぐに描画されない。エディタを開きなおせば描画されるんだけど・・・。実は,「新規マーカーの作成」で自作したマーカーに,ちゃんと「マーカーのアイコン」でアイコンを登録しておかなければ,マーカーがすぐには描画されない。もちろん標準マーカーであればアイコンがすでに登録されているので,ちゃんとすぐにマーカーが描画される。新規にマーカーを定義したら,アイコンもちゃんと登録しておきましょう,ということである。

|

« リソースが持つマーカーの取得 | トップページ | マーカーの削除 »

コメント

this page is good information for me.
would you like to give me a sample code to show how to use the Makers.

Where do I need to put the code?

My email address is qinice@hotmail.com

Thanks a lot in advance.

John

投稿: John Qi | 2004.12.21 08:51 午前

Hi, John.

The code for creating marker does not choose a place. You can perform it at arbitrary places in your source codes.

Thank you for your comment.

Yoichiro

投稿: yoichiro | 2004.12.21 09:41 午前

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: リソースへのマーキング:

« リソースが持つマーカーの取得 | トップページ | マーカーの削除 »