<更新記録>
2008年 1月 4日
執筆

姉妹サイト検索 Web検索


EditingSupport

EditingSupportクラスは、編集を行うにあたって、編集を行うか否か、どのように編集するか、 編集結果からセルにどのような値を入れるかについてサポートします。

このクラスを使用するには、サブクラスを作成して、抽象メソッドをすべて実装しなければなりません。 その他の非抽象メソッドは、特に意識しなくても問題ありません。

EditingSupport {
	protected abstract boolean canEdit(Object element);
	protected abstract CellEditor getCellEditor(Object element);
	protected abstract Object getValue(Object element);
	protected abstract void saveValue(Object element, Object value);
}

canEditメソッドは、このカラムが編集可能であるかどうかを判断します。 編集を許す場合はtrueを、許さない場合はfalseを返します。

getCellEditorメソッドは、 CheckboxCellEditorオブジェクト、 ComboBoxCellEditorオブジェクト、 DialogCellEditorオブジェクト、 TextCellEditorオブジェクトのいずれかを作成して返します。

getValueメソッドは、エディタにセットする値を返します。 ここで返したObjectは、getCellEditorメソッドで返したCellEditorオブジェクトのdoSetValue(Object value)メソッドに渡されます。 TextCellEditorクラスでは、ここに指定できるのはStringオブジェクトのみです。 ComboBoxCellEditorクラスでは、ここに指定できるのはIntegerオブジェクトのみです。

saveValueメソッドでは、エディタによって編集された情報を、モデル(Model)に反映させます。 反映させた後、viewerのrefreshメソッドを呼び出さないと、テーブルの内容が更新されないので、忘れないように呼び出します。

EditingSupportクラスを継承したクラスのサンプルを示します。 しかしながらこのサンプルは、実行させることができず、テストも実施していないので、あくまでもイメージをつかむために参照して下さい。 ここで登場するPersonalDataクラスは、自作クラスとして作成し、(Viewer#setInputメソッドにて)Modelに指定されているものとします。

public class MyEditingSupport extends EditingSupport {
	
	protected boolean canEdit(Object element) {
		return true;
	}
	
	protected CellEditor getCellEditor(Object element) {
		// parent is a composite
		return new TextCellEditor(parent);
	}
	
	protected Object getValue(Object element) {
		return String.valueOf(((PersonalData)element).getAge());
	}
	
	protected void saveValue(Object element, Object value) {
		PersonalData personalData = (PersonalData)element;
		personalData.setAge((String)value);
	}
	
}
実際にEditingSupportクラスを使用したプログラムのサンプルは、こちらにあります。


Powered by VeryEasyCMS