package org.jboss.seam.pdf.ui; import java.awt.Graphics2D; import javax.faces.context.FacesContext; import com.lowagie.text.BadElementException; import com.lowagie.text.Image; import com.lowagie.text.ImgTemplate; import com.lowagie.text.pdf.PdfTemplate; public abstract class UIGraphics2D extends ITextComponent { private Image image = null; private int height = 300; private int width = 400; public void setHeight(int height) { this.height = height; } public int getHeight() { return (Integer) valueBinding("height", height); } public void setWidth(int width) { this.width = width; } public int getWidth() { return (Integer) valueBinding("width", width); } @Override public void createITextObject(FacesContext context) { UIDocument doc = (UIDocument) findITextParent(getParent(), UIDocument.class); if (doc != null) { PdfTemplate tp = doc.createPdfTemplate(getWidth(), getHeight()); Graphics2D g2 = tp.createGraphics(getWidth(), getHeight()); render(g2); g2.dispose(); try { image = new ImgTemplate(tp); } catch (BadElementException e) { throw new RuntimeException(e); } } } public abstract void render(Graphics2D g2); @Override public void handleAdd(Object arg0) { throw new RuntimeException("No children allowed"); } @Override public void removeITextObject() { image = null; } @Override public Object getITextObject() { return image; } }