メインのダイアログには、JFace TableViewer があります。テーブルの最後の列は ComboBoxCellEditor です。いいえ、はい、両方のオプションがあります。これはすべて設計どおりに機能します。
しかし、ここに私の問題があります。
- ユーザーが値として両方を選択した場合。
- 配列から現在の行データを取得するメソッドを実行する必要があります
- 値を両方からいいえに変更します
- データのコピーを作成し、値を「はい」に変更します
- 両方を配列に追加し直します
- テーブルを更新する
テーブルの例
から -
1002 | 001 | sss | part | both(user changed from default)
に -
1002 | 001 | sss | part | No
1002 | 001 | sss | part | Yes
両方を選択した後、メソッドを実行して残りを実行する方法を理解しようとしています。私はそれがある種のリスナーでなければならないと仮定しています。私の EditingSupport コードを見て、メソッドを開始して残りを実行する場所を示してください。
public class OptionEditingSupport extends EditingSupport
{
private ComboBoxCellEditor cellEditor;
public OptionEditingSupport(ColumnViewer viewer) {
super(viewer);
cellEditor = new ComboBoxCellEditor(((TableViewer)viewer).getTable(), new String[]{"No", "Yes", "Both"}, SWT.DROP_DOWN);
//cellEditor.setValue(0);
}
protected CellEditor getCellEditor(Object element) {
return cellEditor;
}
protected boolean canEdit(Object element) {
return true;
}
protected Object getValue(Object element) {
return 0;
}
protected void setValue(Object element, Object value)
{
if((element instanceof AplotDatasetData) && (value instanceof Integer)) {
Integer choice = (Integer)value;
//String option = (choice == 0? "Yes":"No":"Both");
String option = ((AplotDatasetData)element).getMarkupValue();;
if(choice == 0) {
option = "No";
}
else if(choice == 1) {
option = "Yes";
}
else {
option = "Both";
}
((AplotDatasetData)element).setMarkupValue(option);
getViewer().update(element, null);
}
}
}