if (editorListener == null) {
editorListener = new Listener<DomEvent>() {
public void handleEvent(DomEvent e) {
if (e.getType() == Events.Complete) {
EditorEvent ee = (EditorEvent) e;
onEditComplete((CellEditor) ee.getEditor(), ee.getValue(), ee.getStartValue());
} else if (e.getType() == Events.SpecialKey) {
grid.getSelectionModel().onEditorKey(e);
} else if (e.getType() == Events.CancelEdit) {
EditorEvent ee = (EditorEvent) e;
onEditCancel((CellEditor) ee.getEditor(), ee.getValue(), ee.getStartValue());
}
}
};
}