Excelシートのような編集機能がついたテーブル(以下、セルエディタ)を作成したいと思います。といっても今のところわかったのはTableViewer?に編集機能をつけただけで、全件選択のやり方などがわかったわけではないのであしからず。 概要 †セルエディタの実装ですが、具体的には org.eclipse.jface.viewers.TableViewer?を修飾していくことで実装します。モデルの設定は setContentProvider?、表示の設定はsetLabelProvider?と同じ感じで、エディタの設定は 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はエディタで編集した結果のオブジェクトです。 関連記事 †この記事は 現在のアクセス:14741 |