Top / Eclipse / プラグイン開発のTIPS集 / 編集機能付きテーブル

Excelシートのような編集機能がついたテーブル(以下、セルエディタ)を作成したいと思います。といっても今のところわかったのはTableViewer?に編集機能をつけただけで、全件選択のやり方などがわかったわけではないのであしからず。

概要

セルエディタの実装ですが、具体的には org.eclipse.jface.viewers.TableViewer?を修飾していくことで実装します。モデルの設定は setContentProvider?、表示の設定はsetLabelProvider?と同じ感じで、エディタの設定は

TableViewer#setCellModifier(ICellModifier)

というメソッドを用います。

手順としては

  1. TableViewer?#.setColumnProperties?(String[]); でカラムごとのプロパティを設定
  2. TableViewer?#setCellEditors?(CellEditor?[]); でカラムごとのセルエディタを設定*1
  3. TableViewer?#setCellModifier?(ICellModifier?); で編集時の仕様を決める(?)

となります。

以下、TableViewer?のインスタンスをviewerと仮定します。

TableViewer?#.setColumnProperties?(String[]);

たとえば

String[] properties = new String[] { "id", "name", "value" };
viewer.setColumnProperties(properties);

などとして各カラムのプロパティを設定します。プロパティはICellModifier?の実装で使用します。

TableViewer?#setCellEditors?(CellEditor?[]);

たとえば

CellEditor[] editors = new CellEditor[] {
 new TextCellEditor(viewer.getTable()),
 new TextCellEditor(viewer.getTable()),
 new TextCellEditor(viewer.getTable()) };
viewer.setCellEditors(editors);

として、各カラムのエディタを設定します。TextCellEditor?はそのカラム上で編集するエディタです。そのほか

CheckboxCellEditor チェックボックスのエディタ
ColorCellEditor カラーダイアログを出すエディタ
ComboBoxCellEditor プルダウンを出すエディタ

などがあるみたいです。

TableViewer?#setCellModifier?(ICellModifier?);

ここまでで表示仕様が決まったので、あとはセルをクリックしたとき(編集の開始)、セルから出たとき(編集が終了)の仕様を実装します。実装は

org.eclipse.jface.viewers.ICellModifier

の実装クラスで指定します。 実装するメソッドは

public Object getValue(Object element, String property)  編集開始
public void modify(Object element, String property, Object value) 編集終了
public boolean canModify(Object element, String property) 編集可能かを返すメソッド

です。

まずgetValue(Object element, String property) ですがelementはTableViewer?のモデルオブジェクト、propertyは前述のプロパティです。セルのクリック時にエディタに渡したいデータを設定します。

次にmodify(Object element, String property, Object value) ですが、elementは選択していた行のTableItem?、propertyはプロパティ、valueはエディタで編集した結果のオブジェクトです。

関連記事


この記事は

選択肢 投票
おもしろかった 12  
そうでもない 0  

Top / Eclipse / プラグイン開発のTIPS集 / 編集機能付きテーブル

現在のアクセス:13208


*1 CellEditor?の実装はEclipseから提供される

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-12-04 (木) 14:13:49 (1725d)