[jboss-cvs] jboss-seam/src/pdf/org/jboss/seam/pdf/ui ...
Norman Richards
norman.richards at jboss.com
Tue Dec 11 22:31:29 EST 2007
User: nrichards
Date: 07/12/11 22:31:29
Added: src/pdf/org/jboss/seam/pdf/ui UIHtmlText.java
Log:
JBSEAM-1252
Revision Changes Path
1.1 date: 2007/12/12 03:31:29; author: nrichards; state: Exp;jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIHtmlText.java
Index: UIHtmlText.java
===================================================================
package org.jboss.seam.pdf.ui;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.List;
import javax.faces.FacesException;
import javax.faces.component.ValueHolder;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.convert.Converter;
import org.jboss.seam.ui.util.JSF;
import com.lowagie.text.Element;
import com.lowagie.text.Paragraph;
import com.lowagie.text.html.simpleparser.HTMLWorker;
import com.lowagie.text.html.simpleparser.StyleSheet;
public class UIHtmlText
extends ITextComponent
implements ValueHolder
{
private Converter converter;
private Object localValue;
private Paragraph paragraph;
@Override
public boolean getRendersChildren() {
return true;
}
@Override
public void encodeChildren(FacesContext context)
throws IOException
{
ResponseWriter writer = context.getResponseWriter();
StringWriter stringWriter = new StringWriter();
ResponseWriter cachingResponseWriter = writer.cloneWithWriter(stringWriter);
context.setResponseWriter(cachingResponseWriter);
JSF.renderChildren(context, this);
context.setResponseWriter(writer);
String output = stringWriter.getBuffer().toString();
System.out.println("** BODY: " + output);
addFromHtml(output);
}
@Override
public void encodeEnd(FacesContext context)
throws IOException
{
Object value = getValue();
if (value!=null) {
System.out.println("** VAL: " + value);
addFromHtml(convert(context,value));
}
super.encodeEnd(context);
}
private void addFromHtml(String html)
throws IOException
{
paragraph.addAll(HTMLWorker.parseToList(new StringReader(html), getStyle()));
}
/**
* XXX - this needs some work
*/
private StyleSheet getStyle() {
StyleSheet styles = new StyleSheet();
styles.loadTagStyle("body", "leading", "16,0");
return styles;
}
protected String convert(FacesContext context, Object value) {
Converter myConverter = converterForValue(context, value);
if (myConverter != null) {
return myConverter.getAsString(context, this, value);
} else if (value != null) {
return value.toString();
} else {
return "";
}
}
protected Converter converterForValue(FacesContext ctx, Object value) {
if (converter != null) {
return converter;
}
if (value != null) {
try {
return ctx.getApplication().createConverter(value.getClass());
} catch (FacesException e) {
// no converter defined - no problem
}
}
return null;
}
@Override
public void createITextObject(FacesContext context) {
com.lowagie.text.Font font = getFont();
if (font == null) {
paragraph = new Paragraph("");
} else {
paragraph = new Paragraph("", getFont());
}
}
@Override
public Object getITextObject() {
return paragraph;
}
@Override
public void removeITextObject() {
paragraph = null;
}
@Override
public void handleAdd(Object other)
{
throw new RuntimeException("illegal child element");
}
public Converter getConverter() {
return converter;
}
public void setConverter(Converter converter) {
this.converter = converter;
}
public Object getValue() {
return valueBinding(FacesContext.getCurrentInstance(), "value", localValue);
}
public void setValue(Object value) {
this.localValue = value;
}
public Object getLocalValue() {
return localValue;
}
}
More information about the jboss-cvs-commits
mailing list