blob: 73f7ac7d8d6ffb395971c58978457f4b08831d08 [file] [log] [blame]
/*
* 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);
}