gwt 创建 超链接cell (HyperTextCell)

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

    }

  }



}

 

你可能感兴趣的:(text)