package com.cnblogs.hooligen.client; import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.cell.client.ValueUpdater;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.safehtml.client.SafeHtmlTemplates;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder; public class HyperTextCell extends AbstractCell<String[]> { interface HyperTextTemplate extends SafeHtmlTemplates {
@Template("<a style=\"{0}\">{1}</a>")
SafeHtml hyperText(String styleClass, String value);
} private static HyperTextTemplate template; public HyperTextCell() {
this("click");
} public HyperTextCell(String... consumedEvents) {
super(consumedEvents); if(template == null) {
template = GWT.create(HyperTextTemplate.class);
}
} @Override
public void onBrowserEvent(Context context, Element parent, String[] value,
NativeEvent event, ValueUpdater<String[]> valueUpdater) {
super.onBrowserEvent(context, parent, value, event, valueUpdater);
if("click".equals(event.getType())) {
if (valueUpdater != null) {
valueUpdater.update(value);
}
} } @Override
public void render(Context context, String[] value, SafeHtmlBuilder sb) {
if (value != null && value.length == 2) {
sb.append(template.hyperText(value[0], value[1]));
}
} }