package org.gwtoolbox.widget.client.grid.editor;
import com.google.gwt.dom.client.InputElement;
import com.google.gwt.dom.client.Style;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
import org.gwtoolbox.commons.ui.client.event.Handler;
import org.gwtoolbox.widget.client.data.DataType;
import org.gwtoolbox.widget.client.data.Record;
import org.gwtoolbox.commons.ui.client.event.EventUtils;
/**
* @author Uri Boness
*/
public class DefaultTextCellEditor implements CellEditor<String> {
public void edit(Element cell, Record record, String value, DataType<String> type, final Callback<String> callback) {
final InputElement input = InputElement.as(DOM.createElement("input"));
input.setValue(value);
input.getStyle().setWidth(100, Style.Unit.PCT);
input.getStyle().setHeight(100, Style.Unit.PCT);
EventUtils.addHandler(input.<Element>cast(), Event.ONKEYPRESS | Event.ONBLUR, new Handler<Event>() {
public void handle(Event event) {
if (event.getTypeInt() == Event.ONKEYPRESS && event.getKeyCode() != KeyCodes.KEY_ENTER) {
return;
}
String value = input.getValue();
callback.handleNewValue(value);
}
});
cell.setInnerHTML("");
cell.appendChild(input);
input.focus();
}
}