package org.ovirt.engine.ui.common.widget.table.cell;
import java.util.HashSet;
import java.util.Set;
import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
import com.google.gwt.cell.client.ValueUpdater;
import com.google.gwt.dom.client.BrowserEvents;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.view.client.CellPreviewEvent;
/**
* A {@link TextCell} whose text may be edited. Supports wrapping with a css style. Supports tooltips.
*/
public class EditTextCell extends TextCell implements EventHandlingCell {
private com.google.gwt.cell.client.EditTextCell delegate = new com.google.gwt.cell.client.EditTextCell();
@Override
public Set<String> getConsumedEvents() {
Set<String> set = new HashSet<>(super.getConsumedEvents());
set.add(BrowserEvents.CLICK);
set.add(BrowserEvents.KEYUP);
set.add(BrowserEvents.KEYDOWN);
set.add(BrowserEvents.BLUR);
return set;
}
@Override
public void render(Context context, String value, SafeHtmlBuilder sb, String id) {
// TODO use ID? perhaps wrap in a div
delegate.render(context, value, sb);
}
@Override
public void onBrowserEvent(Context context,
Element parent,
String value,
NativeEvent event,
ValueUpdater<String> valueUpdater) {
delegate.onBrowserEvent(context, parent, value, event, valueUpdater);
super.onBrowserEvent(context, parent, value, event, valueUpdater);
}
@Override
public boolean handlesEvent(CellPreviewEvent<EntityModel> event) {
return true;
}
}