[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