Hi,
I don’t understand how to use CanvasItem or is it buggy?!.
My sample test code:
public void onModuleLoad() {
final ListGrid grid = new ListGrid();
final DynamicForm form = new DynamicForm();
final DataSource dataSource = new DataSource();
class CustomEditorItem extends CanvasItem {
private final IButton button = new IButton("Edit...");
public CustomEditorItem() {
super();
button.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// How to get the old value?
// getValue throw an exception:
// [..] self.getValue is not a function [..]
// final String oldValue = (String) getValue();
SC.askforValue("Edit", "Enter new value", /* oldValue, */
new ValueCallback() {
@Override
public void execute(String value) {
// How to set the new value?
// This don't work!
setValue(value);
}
}/* , null */);
}
});
setCanvas(button);
}
}
final DataSourceField customEditorField = new DataSourceField("custom",
FieldType.TEXT, "Custom Editor");
customEditorField.setEditorType(new CustomEditorItem());
final DataSourceField frameworkEditorField = new DataSourceField(
"framework", FieldType.TEXT, "Framework Editor");
dataSource.setClientOnly(true);
dataSource.setFields(customEditorField, frameworkEditorField);
for (int i = 0; i < 10; i++) {
final Record record = new Record();
record.setAttribute("custom", "Value Custom " + i);
record.setAttribute("framework", "Value Framework " + i);
dataSource.addData(record);
}
form.setDataSource(dataSource);
// Rendering issue for the CustomEditorItem when start
// editing a grid row.
grid.setCanEdit(true);
grid.setAutoFetchData(true);
grid.setHeight(300);
grid.setDataSource(dataSource);
grid.addRecordClickHandler(new RecordClickHandler() {
@Override
public void onRecordClick(RecordClickEvent event) {
form.reset();
form.editSelectedData(grid);
}
});
final VLayout layout = new VLayout();
layout.setWidth(400);
layout.setMembers(grid, form);
layout.draw();
}
Any help are welcome.