[jboss-cvs] jboss-seam/src/pdf/org/jboss/seam/pdf/ui ...
Norman Richards
norman.richards at jboss.com
Wed May 9 15:08:43 EDT 2007
User: nrichards
Date: 07/05/09 15:08:42
Modified: src/pdf/org/jboss/seam/pdf/ui UIChart.java
UIDocument.java UILineChart.java
Log:
add standalone image capability
Revision Changes Path
1.7 +54 -12 jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIChart.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: UIChart.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIChart.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- UIChart.java 8 May 2007 18:25:16 -0000 1.6
+++ UIChart.java 9 May 2007 19:08:42 -0000 1.7
@@ -4,12 +4,19 @@
import java.awt.Paint;
import java.awt.Stroke;
import java.awt.geom.Rectangle2D;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
-
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import org.jboss.seam.core.Conversation;
+import org.jboss.seam.core.Manager;
+import org.jboss.seam.pdf.DocumentData;
+import org.jboss.seam.pdf.DocumentStore;
import org.jboss.seam.pdf.ITextUtils;
+import org.jboss.seam.pdf.DocumentData.DocType;
+import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.PlotOrientation;
@@ -40,6 +47,7 @@
Float plotForegroundAlpha;
String plotOutlineStroke;
String plotOutlinePaint;
+ private String imageId;
public void setHeight(float height) {
@@ -140,7 +148,6 @@
UIComponent component = FacesContext.getCurrentInstance().getViewRoot().findComponent(id);
if (component instanceof UIStroke) {
-
return ((UIStroke) component).getStroke();
} else {
throw new RuntimeException();
@@ -153,6 +160,24 @@
return chart;
}
+
+ private void renderImageLink(FacesContext context)
+ throws IOException
+ {
+ ResponseWriter response = context.getResponseWriter();
+ response.startElement("image", this);
+
+ DocumentStore store = DocumentStore.instance();
+ DocumentData data = store.getDocumentData(imageId);
+ String url = store.preferredUrlForContent(data.getBaseName(), data.getDocType(), imageId);
+ url = Manager.instance().encodeConversationId(url, context.getViewRoot().getId());
+ response.writeAttribute("src", url, null);
+ response.endElement("image");
+
+ Conversation conv = Conversation.instance();
+ System.out.println("conv=" + conv.getId() + " lr=" + conv.isLongRunning());
+ }
+
@Override
public void createITextObject(FacesContext context) {
if (borderBackgroundPaint != null) {
@@ -176,6 +201,7 @@
try {
UIDocument doc = (UIDocument) findITextParent(getParent(), UIDocument.class);
+ if (doc != null) {
PdfWriter writer = (PdfWriter) doc.getWriter();
PdfContentByte cb = writer.getDirectContent();
PdfTemplate tp = cb.createTemplate(width, height);
@@ -184,6 +210,16 @@
g2.dispose();
image = new ImgTemplate(tp);
+ } else {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ ChartUtilities.writeChartAsJPEG(stream, chart, (int)width, (int)height);
+
+ DocumentStore store = DocumentStore.instance();
+
+ imageId = store.newId();
+ store.saveData(imageId, new DocumentData("randomChart", DocType.JPEG, stream.toByteArray()));
+ stream.close();
+ }
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -228,7 +264,6 @@
// bypass super to avoid createITextObject() before the chart is ready
createDataset();
chart = createChart(context);
-
}
@@ -238,9 +273,16 @@
{
// call create here so that we'll have a valid chart
createITextObject(context);
+
+ if (imageId != null) {
+ renderImageLink(context);
+ imageId = null;
+ }
+
super.encodeEnd(context);
}
+
@Override
public Object getITextObject() {
return image;
1.23 +2 -2 jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIDocument.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: UIDocument.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIDocument.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- UIDocument.java 26 Apr 2007 22:48:28 -0000 1.22
+++ UIDocument.java 9 May 2007 19:08:42 -0000 1.23
@@ -18,7 +18,7 @@
import com.lowagie.text.rtf.RtfWriter2;
public class UIDocument
-extends ITextComponent
+ extends ITextComponent
{
public static final String COMPONENT_TYPE = "org.jboss.seam.pdf.ui.UIDocument";
1.5 +1 -1 jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UILineChart.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: UILineChart.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UILineChart.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- UILineChart.java 8 May 2007 18:25:16 -0000 1.4
+++ UILineChart.java 9 May 2007 19:08:42 -0000 1.5
@@ -107,7 +107,7 @@
@Override
public void configureRenderer(CategoryItemRenderer renderer){
super.configureRenderer(renderer);
- System.out.println("UILINECHART RENDERER IS " + renderer);
+ //System.out.println("UILINECHART RENDERER IS " + renderer);
}
@Override
More information about the jboss-cvs-commits
mailing list