« マルチ・ステータス | トップページ | TableViewerのヘッダ列の作成 »

2004.04.13

TableViewerを使った表コンポーネントの利用

Eclipseのビューでは,よく表形式の表示が使われている。タスクリストやブックマークのリスト,プロパティリストやエラーログもみんな表形式である。Eclipseでは,このような表形式で情報を表示したいときのために,TableViewerを提供している

task-list-view.gif

TableViewerはJFaceというツールキットの中のコンポーネントの1つで,SWTで提供されているTableコンポーネントを「より便利に」「より簡単に」使用できるように,という目的のものである。SWTのTableを完全に隠蔽しているわけではなく,TableViewerで提供されている機能を使えばSWTのTableに対してさまざまな細かい操作を肩代わりしてくれるという便利クン,という位置づけである。SWTのTableを隠しもしないし,TableViewerで提供されていない機能は,当然SWTのTableを直接操作する必要がある。

さて,TableViewerを使用して画面上に表を作成するには,最初にSWTのTableクラスのインスタンスを作成する

  Composite parent = ...;
  Table table = new Table(parent,
    SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
  table.setHeaderVisible(true);
  table.setLineVisible(true);

Tableクラスのインスタンスを生成するためには,Tableコンポーネントを貼り付ける親のオブジェクト(上記ではparent)と,どのような表にするかを決めるスタイル値をコンストラクタに与える必要がある。親のオブジェクトは,例えばビュー全体に表を貼り付ける場合は,ViewPartクラスのcreatePartControlメソッドの引数で渡されるCompositeオブジェクトを渡すことになる。第2引数の表のスタイルを表す値は,SWTクラスに用意されている各種定数値の論理和(OR)をとった値を渡す。上記であれば「単一の選択で,縦横両方のスクロールバーを持ち,行全体を選択状態にする表」となる。

Tableオブジェクトが生成できたら,その他表に調整を加えたいものがあれば,ここでやっておく。上記では「表のヘッダ行を表示する」「セルを分割する罫線を表示する」という設定を行っている。

ホントは表の列定義などを行ったりするのだが,ここでは割愛する。とりあえずTableオブジェクトが出来上がったので,それを元にTableViewerオブジェクトを生成する

  TableViewer viewer = new TableViewer(table);

これにより,先ほど作成したTableオブジェクトをTableViewerクラスが持つ各種機能を使って「高級的に」操作することができるようになる。

上記のコードだけで,とりあえず空の表を表示することができる(ビューの作成方法は「新規ビューの作成」を参照)。TableViewer Test Viewという名前のビューに上記のコードをcreatePartControlメソッドに埋め込んだときのスナップショットを以下に示す。

tableviewer-test-view-empty.gif

列を何も作ってないのに,2つ列があるのが謎だ。

|

« マルチ・ステータス | トップページ | TableViewerのヘッダ列の作成 »

コメント

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: TableViewerを使った表コンポーネントの利用:

« マルチ・ステータス | トップページ | TableViewerのヘッダ列の作成 »