[jboss-cvs] jboss-seam/src/pdf/org/jboss/seam/pdf/ui ...

Norman Richards norman.richards at jboss.com
Thu Apr 26 18:48:28 EDT 2007


  User: nrichards
  Date: 07/04/26 18:48:28

  Modified:    src/pdf/org/jboss/seam/pdf/ui        UIDocument.java
                        UIImage.java
  Added:       src/pdf/org/jboss/seam/pdf/ui        UIBarChart.java
                        UIChart.java UIChartData.java UIPieChart.java
                        UIPieChart3D.java
  Log:
  first draft of charting
  
  Revision  Changes    Path
  1.22      +68 -68    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.21
  retrieving revision 1.22
  diff -u -b -r1.21 -r1.22
  --- UIDocument.java	9 Mar 2007 02:14:16 -0000	1.21
  +++ UIDocument.java	26 Apr 2007 22:48:28 -0000	1.22
  @@ -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";
           
  @@ -231,7 +231,9 @@
               id = store.newId();
               
               ResponseWriter response = context.getResponseWriter();
  +            response.write("<!DOCTYPE composition PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\" >");
               response.startElement("html", this);
  +            response.writeAttribute("xmlns", "http://www.w3.org/1999/xhtml", null);
               response.startElement("head", this);
               response.startElement("meta", this);
               response.writeAttribute("http-equiv", "Refresh", null);
  @@ -310,9 +312,7 @@
               removeITextObject();
   
               Manager.instance().beforeRedirect();
  -        } 
  -        else 
  -        {
  +        } else {
               UIComponent parent = getParent();
               
               if (parent instanceof ValueHolder) {
  
  
  
  1.15      +4 -9      jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIImage.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: UIImage.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIImage.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -b -r1.14 -r1.15
  --- UIImage.java	30 Mar 2007 23:09:53 -0000	1.14
  +++ UIImage.java	26 Apr 2007 22:48:28 -0000	1.15
  @@ -104,11 +104,6 @@
           this.scalePercent = scalePercent; 
       }
       
  -    public void setValue(java.awt.Image imageData) {
  -        this.imageData = imageData;
  -    }
  -
  -    
       @Override
       public Object getITextObject() {
           return image;
  @@ -127,7 +122,6 @@
                 
           // instance() doesn't work here - we need a new instance           
           org.jboss.seam.core.Image seamImage = new org.jboss.seam.core.Image();  
  -
           try {            
               if (value instanceof BufferedImage) {
                   seamImage.setBufferedImage((BufferedImage)value);
  @@ -142,7 +136,8 @@
                   }
               }  
               
  -            image = Image.getInstance(seamImage.getImage());
  +            byte[] data = seamImage.getImage();
  +            image = Image.getInstance(data);
           } catch (IOException e) {
               throw new RuntimeException(e);
           } catch (BadElementException e) {
  
  
  
  1.1      date: 2007/04/26 22:48:28;  author: nrichards;  state: Exp;jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIBarChart.java
  
  Index: UIBarChart.java
  ===================================================================
  package org.jboss.seam.pdf.ui;
  
  import javax.faces.context.FacesContext;
  
  import org.jfree.chart.ChartFactory;
  import org.jfree.chart.JFreeChart;
  import org.jfree.chart.plot.PlotOrientation;
  import org.jfree.data.category.CategoryDataset;
  import org.jfree.data.category.DefaultCategoryDataset;
  import org.jfree.data.general.Dataset;
  
  public class UIBarChart 
      extends UIChart 
  {
      String title;
      String categoryAxisLabel;
      String valueAxisLabel;
      CategoryDataset dataset;
      String orientation;
      
      boolean legend;
      boolean tooltips;
      boolean urls;
      boolean is3D = false;      
      
      public void setTitle(String title) {
          this.title = title;
      }
      
      public void setOrientation(String orientation) {
          this.orientation = orientation;
      }
      
      public void setCategoryAxisLabel(String categoryAxisLabel) {
          this.categoryAxisLabel = categoryAxisLabel;
      }
  
      public void setValueAxisLabel(String valueAxisLabel) {
          this.valueAxisLabel = valueAxisLabel;
      }
  
      public void setLegend(boolean legend) {
          this.legend = legend;
      }
      
      public void setTooltips(boolean tooltips) {
          this.tooltips = tooltips;
      }
      
      public void setUrls(boolean urls) {
          this.urls = urls;
      }
      
      public void setIs3D(boolean is3D) {
          this.is3D = true;
      }
      
      @Override
      public void createDataset() {
          dataset = new DefaultCategoryDataset();
      }
  
      @Override
      public JFreeChart getChart(FacesContext context) {
          System.out.println("3d=" + is3D);
          if (!is3D) {
              return ChartFactory.createBarChart(title,
                      categoryAxisLabel,
                      valueAxisLabel,
                      dataset,
                      plotOrientation(orientation),
                      legend,
                      tooltips,
                      urls);
          } else {
              return ChartFactory.createBarChart3D(title,
                      categoryAxisLabel,
                      valueAxisLabel,
                      dataset,
                      plotOrientation(orientation),
                      legend,
                      tooltips,
                      urls);
          }
      }
  
      @Override
      public Dataset getDataset() {        
          return dataset;
      }
  
      public PlotOrientation plotOrientation(String orientation) {
          if (orientation != null && orientation.equalsIgnoreCase("horizontal")) {
              return PlotOrientation.HORIZONTAL;
          } else {
              return PlotOrientation.VERTICAL;
          }
      }
  
  }
  
  
  
  1.1      date: 2007/04/26 22:48:28;  author: nrichards;  state: Exp;jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIChart.java
  
  Index: UIChart.java
  ===================================================================
  package org.jboss.seam.pdf.ui;
  
  import java.io.IOException;
  
  import javax.faces.context.FacesContext;
  
  import org.jfree.chart.JFreeChart;
  import org.jfree.data.general.Dataset;
  
  import com.lowagie.text.*;
  
  public abstract class UIChart 
      extends ITextComponent 
  {
      Image image = null;
      float height = 300;
      float width  = 400;
  
      public void setHeight(float height) {
          this.height = height;
      }
      
      public void setWidth(float width) {
          this.width = width;
      }
      
      public abstract JFreeChart getChart(FacesContext context);
      
      @Override
      public void createITextObject(FacesContext context) {
          JFreeChart chart = getChart(context);
                 
          height = (Float) valueBinding(context, "height", height);
          width =  (Float) valueBinding(context, "width", width);
          
          org.jboss.seam.core.Image seamImage = new org.jboss.seam.core.Image();  
          seamImage.setBufferedImage(chart.createBufferedImage((int)width,(int)height));
          
          try {
              image = Image.getInstance(seamImage.getImage());           
          } catch (Exception e) {
              throw new RuntimeException(e);            
          }
  
      }
      
      @Override
      public void encodeBegin(FacesContext context) 
          throws IOException
      {       
          // bypass super to avoid createITextObject()
          createDataset();
      }
      
      
      @Override
      public void encodeEnd(FacesContext context) 
          throws IOException
      {
          // call create here so that we'll have a valid chart
          createITextObject(context);
          super.encodeEnd(context);
      }
  
      @Override
      public Object getITextObject() {
          return image;
      }
  
      @Override
      public void handleAdd(Object arg0) {
          throw new RuntimeException("No children allowed");
      }
  
      @Override
      public void removeITextObject() {
          image = null;
      }
  
      
      public abstract void createDataset();
      public abstract Dataset getDataset();
  
  
  }
  
  
  
  1.1      date: 2007/04/26 22:48:28;  author: nrichards;  state: Exp;jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIChartData.java
  
  Index: UIChartData.java
  ===================================================================
  package org.jboss.seam.pdf.ui;
  
  import java.io.IOException;
  
  import javax.faces.context.FacesContext;
  
  import org.jfree.data.category.DefaultCategoryDataset;
  import org.jfree.data.general.Dataset;
  import org.jfree.data.general.DefaultPieDataset;
  
  public class UIChartData 
      extends ITextComponent 
  {
   
      String key;
      String columnKey;
      String rowKey;
      Number value;
      
      public void setKey(String key) {
          this.key = key;
      }
      
      public void setRowKey(String rowKey) {
          this.rowKey = rowKey;
      }
      
      public void setColumnKey(String columnKey) {
          this.columnKey = columnKey;
      }
  
      public void setValue(Double value) {        
          this.value = value;
      }
  
      @Override
      public void encodeEnd(FacesContext context) 
          throws IOException
      {
          super.encodeEnd(context);
          
          key = (String) valueBinding(context, "key", key);
          rowKey = (String) valueBinding(context, "rowkey", rowKey);
          columnKey = (String) valueBinding(context, "columnKey", columnKey);
          value = (Number) valueBinding(context, "value", value);
          
          UIChart chart = (UIChart) findITextParent(getParent(), UIChart.class);
          if (chart != null) {            
              Dataset dataset = chart.getDataset();
              
              if (dataset instanceof DefaultPieDataset) {
                  DefaultPieDataset piedata = (DefaultPieDataset) dataset;
                  piedata.setValue(key, value);
              } else if (dataset instanceof DefaultCategoryDataset) {
                  DefaultCategoryDataset data = (DefaultCategoryDataset) dataset;
                  data.addValue(value, rowKey, columnKey);                
              } else {
                  throw new RuntimeException("Cannot add data to dataset of type " + dataset.getClass());
              }
              
          }
      }
      
      
      @Override
      public void createITextObject(FacesContext context) {
       
      }
  
      @Override
      public Object getITextObject() {      
          return null;
      }
  
      @Override
      public void handleAdd(Object other) {
          
      }
  
      @Override
      public void removeITextObject() {
        
      }
  
  }
  
  
  
  1.1      date: 2007/04/26 22:48:28;  author: nrichards;  state: Exp;jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIPieChart.java
  
  Index: UIPieChart.java
  ===================================================================
  package org.jboss.seam.pdf.ui;
  
  import javax.faces.context.FacesContext;
  
  import org.jfree.chart.ChartFactory;
  import org.jfree.chart.JFreeChart;
  import org.jfree.data.general.Dataset;
  import org.jfree.data.general.DefaultPieDataset;
  
  public class UIPieChart 
      extends UIChart 
  {
      DefaultPieDataset data;
      
      String title;
      
      boolean legend;
      boolean tooltips;
      boolean urls;
          
      public void setTitle(String title) {
          this.title = title;
      }
      
      public void setLegend(boolean legend) {
          this.legend = legend;
      }
      
      public void setTooltips(boolean tooltips) {
          this.tooltips = tooltips;
      }
      
      public void setUrls(boolean urls) {
          this.urls = urls;
      }
      
      @Override
      public void createDataset() {
          data = new DefaultPieDataset();
      }
      
      @Override
      public Dataset getDataset() {
          return data;
      }
      
      
      
      @Override
      public JFreeChart getChart(FacesContext context) {         
          legend = (Boolean) valueBinding(context, "legend", legend);
          tooltips = (Boolean) valueBinding(context, "tooltips", tooltips);
          urls = (Boolean) valueBinding(context, "urls", urls);
          
          return ChartFactory.createPieChart(title, data, legend, tooltips, urls);
      }
  
      public void restoreState(FacesContext context, Object state) {
          super.restoreState(context, state);        
      }
  
      public Object saveState(FacesContext context) {
          return super.saveState(context);
      }
  }
  
  
  
  1.1      date: 2007/04/26 22:48:28;  author: nrichards;  state: Exp;jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIPieChart3D.java
  
  Index: UIPieChart3D.java
  ===================================================================
  package org.jboss.seam.pdf.ui;
  
  import javax.faces.context.FacesContext;
  
  import org.jfree.chart.ChartFactory;
  import org.jfree.chart.JFreeChart;
  
  public class UIPieChart3D 
      extends UIPieChart 
  {
      @Override
      public JFreeChart getChart(FacesContext context) {         
          legend = (Boolean) valueBinding(context, "legend", legend);
          tooltips = (Boolean) valueBinding(context, "tooltips", tooltips);
          urls = (Boolean) valueBinding(context, "urls", urls);
          
          return ChartFactory.createPieChart3D(title, data, legend, tooltips, urls);
      }
  }
  
  
  



More information about the jboss-cvs-commits mailing list