/* * Copyright 2010 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.cell.client; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.text.shared.SafeHtmlRenderer; import java.util.Set; /** * A superclass for {@link Cell}s that render or escape a String argument as * HTML. * * @param <C> the type that this Cell represents */ public abstract class AbstractSafeHtmlCell<C> extends AbstractCell<C> { private final SafeHtmlRenderer<C> renderer; /** * Construct an AbstractSafeHtmlCell using a given {@link SafeHtmlRenderer} * that will consume a given set of events. * * @param renderer a SafeHtmlRenderer * @param consumedEvents a varargs list of event names */ public AbstractSafeHtmlCell(SafeHtmlRenderer<C> renderer, String... consumedEvents) { super(consumedEvents); if (renderer == null) { throw new IllegalArgumentException("renderer == null"); } this.renderer = renderer; } /** * Construct an AbstractSafeHtmlCell using a given {@link SafeHtmlRenderer} * that will consume a given set of events. * * @param renderer a SafeHtmlRenderer * @param consumedEvents a Set of event names */ public AbstractSafeHtmlCell(SafeHtmlRenderer<C> renderer, Set<String> consumedEvents) { super(consumedEvents); if (renderer == null) { throw new IllegalArgumentException("renderer == null"); } this.renderer = renderer; } /** * Return the {@link SafeHtmlRenderer} used by this cell. * * @return a {@link SafeHtmlRenderer} instance */ public SafeHtmlRenderer<C> getRenderer() { return renderer; } @Override public void render(Context context, C data, SafeHtmlBuilder sb) { if (data == null) { render(context, (SafeHtml) null, sb); } else { render(context, renderer.render(data), sb); } } /** * Render the cell contents after they have been converted to {@link SafeHtml} * form. * * @param context the original context to render * @param data a {@link SafeHtml} string * @param sb the {@link SafeHtmlBuilder} to be written to */ protected abstract void render(Context context, SafeHtml data, SafeHtmlBuilder sb); }