package org.goko.test.recorder.ui.test;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.TableViewer;
import org.goko.common.elements.combo.LabeledValue;
public class TestEditingSupport extends EditingSupport {
private final TableViewer viewer;
private int columnIndex;
public TestEditingSupport(TableViewer viewer, int columnIndex) {
super(viewer);
this.viewer = viewer;
this.columnIndex = columnIndex;
}
@Override
protected CellEditor getCellEditor(Object element) {
Tuple<?> tuple = (Tuple<?>) element;
CellEditor editor = tuple.getEditor();
return editor;
}
@Override
protected boolean canEdit(Object element) {
return true;
}
@Override
protected Object getValue(Object element) {
return getTupleValue((Tuple<?>) element);
}
protected <T> Object getTupleValue(Tuple<T> element) {
if(element.get(columnIndex) != null){
if(element instanceof TupleLabeledValue<?>){
return ((TupleLabeledValue<?>)element).get(columnIndex).getValue();
}else{
return String.valueOf(element.get(columnIndex));
}
}
return StringUtils.EMPTY;
}
@Override
protected void setValue(Object element, Object userInputValue) {
if (userInputValue != null) {
((TupleLabeledValue<LabeledValue<?>>) element).putObject(
columnIndex, ((LabeledValue<?>) userInputValue).getValue());
viewer.update(element, null);
}
}
}