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])); } } }