TableViewer表格内容编辑+下拉框可编辑
2014-08-11 09:08
169 查看
tv.setColumnProperties(new String[] { "name", "value" });//设定列的别名,新名字
final CellEditor[] cellEditors = new CellEditor[2];
cellEditors[0] = null;//第1列不可编辑
cmbVariable = new VariableComboBoxCellEditor(tv.getTable(), variableNames);//重写的一个下拉框
cellEditors[1] = cmbVariable;
tv.setCellEditors(cellEditors);
tv.setCellModifier(new ICellModifier() {
@Override
public boolean canModify(final Object element, final String property) {
return true;
}
private int getIndex(final String strItem) {
for (int i = 0; i < variableNames.length; i++) {
if (variableNames[i].equals(strItem)) {
return i;
}
}
return -1;
}
@Override
public Object getValue(final Object element, final String property) {
if (element instanceof ParameterValue) {
final ParameterValue p_v = (ParameterValue) element;
if (property.equals("value")) {
if (getIndex(p_v.getParameterValue()) == -1) {//如果下拉框市被编辑了,没有选择index,返回-1
return p_v.getParameterValue();
}
return getIndex(p_v.getParameterValue());
}
}
return null;
}
@Override
public void modify(final Object element, final String property, final Object value) {
final TableItem item = (TableItem) element;
final ParameterValue pvNew = (ParameterValue) item.getData();
String newValue = "";
if (property.equals("value")) {
if (value instanceof String) {
newValue = (String) value;
} else {
newValue = variableNames[(Integer) value];
}
pvNew.setParameterValue(newValue);
try {
setTestableProperty(testable, CoreConstants.VARIABLE_ID, ApplicationUtil.serialize(input));
} catch (final IOException e) {
// TODO
UIPlugin.log(e.getMessage(), IStatus.ERROR);
}
}
}
});
//重写下拉框,使之能获得被编辑的新值
// 重写下拉框,获取编辑的值
private class VariableComboBoxCellEditor extends ComboBoxCellEditor {
public VariableComboBoxCellEditor(final Composite parent, final String[] items) {
super(parent, items);
}
@Override
protected void doSetValue(final Object value) {
if (value instanceof String) {
((CCombo) getControl()).setText((String) value);
} else {
super.doSetValue(value);
}
}
@Override
protected Object doGetValue() {
final Object value = super.doGetValue();
if (value instanceof Integer && (Integer) value == -1) {
return ((CCombo) getControl()).getText();
}
return value;
}
}
final CellEditor[] cellEditors = new CellEditor[2];
cellEditors[0] = null;//第1列不可编辑
cmbVariable = new VariableComboBoxCellEditor(tv.getTable(), variableNames);//重写的一个下拉框
cellEditors[1] = cmbVariable;
tv.setCellEditors(cellEditors);
tv.setCellModifier(new ICellModifier() {
@Override
public boolean canModify(final Object element, final String property) {
return true;
}
private int getIndex(final String strItem) {
for (int i = 0; i < variableNames.length; i++) {
if (variableNames[i].equals(strItem)) {
return i;
}
}
return -1;
}
@Override
public Object getValue(final Object element, final String property) {
if (element instanceof ParameterValue) {
final ParameterValue p_v = (ParameterValue) element;
if (property.equals("value")) {
if (getIndex(p_v.getParameterValue()) == -1) {//如果下拉框市被编辑了,没有选择index,返回-1
return p_v.getParameterValue();
}
return getIndex(p_v.getParameterValue());
}
}
return null;
}
@Override
public void modify(final Object element, final String property, final Object value) {
final TableItem item = (TableItem) element;
final ParameterValue pvNew = (ParameterValue) item.getData();
String newValue = "";
if (property.equals("value")) {
if (value instanceof String) {
newValue = (String) value;
} else {
newValue = variableNames[(Integer) value];
}
pvNew.setParameterValue(newValue);
try {
setTestableProperty(testable, CoreConstants.VARIABLE_ID, ApplicationUtil.serialize(input));
} catch (final IOException e) {
// TODO
UIPlugin.log(e.getMessage(), IStatus.ERROR);
}
}
}
});
//重写下拉框,使之能获得被编辑的新值
// 重写下拉框,获取编辑的值
private class VariableComboBoxCellEditor extends ComboBoxCellEditor {
public VariableComboBoxCellEditor(final Composite parent, final String[] items) {
super(parent, items);
}
@Override
protected void doSetValue(final Object value) {
if (value instanceof String) {
((CCombo) getControl()).setText((String) value);
} else {
super.doSetValue(value);
}
}
@Override
protected Object doGetValue() {
final Object value = super.doGetValue();
if (value instanceof Integer && (Integer) value == -1) {
return ((CCombo) getControl()).getText();
}
return value;
}
}
相关文章推荐
- jqgrid 编辑表格(包含下拉框)
- 可以增加和删除行的table(可以编辑表格中内容)
- JQuery 增加、删除表格div层文本内容的JS代码 和仿select个性下拉框选择效果JS代码
- jQuery+PHP实现可编辑表格字段内容并实时保存
- 可编辑的表格:jQuery+PHP实现实时编辑表格字段内容
- Jquery 鼠标点击表格可以编辑内容
- 表格、可编辑下拉框、日历控件
- 一个可以增加和删除行的table并可编辑表格中内容
- C# 生成Excel文件及表格内容格式编辑 excel模板流
- vue.js设计的可编辑表格例子,内容与数组同步变化
- 多个表格头合并编辑获取表格内元素内容
- 可编辑的表格(续集):jQuery实现对所编辑内容的验证
- jQuery代码实现表格内容可编辑修改
- 可编辑的表格:jQuery+PHP实现实时编辑表格字段内容
- Swift - 可编辑表格样例(可直接编辑单元格中内容、移动删除单元格)
- 一个可以增加和删除行的table并可编辑表格中内容
- 可编辑的表格:jQuery+PHP+jeditable实现实时编辑表格字段内容
- 根据下拉框的内容异步加载表格
- jQuery+PHP实现实时编辑表格字段内容
- 可编辑的表格:jQuery+PHP实现实时编辑表格字段内容