在我的主要 dailog 中,我有一个 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);
}
}
}