I've got little time so I did not try this,

I think this could work:
start with source from
org.apache.tapestry.corelib.components.ActionLink

change renderBody:
from
       Link link = _resources.createActionLink(ACTION_EVENT, false,
contextArray);
       writer.element("a", "href", link, "id", _clientId);
to:
       Link link = _resources.createActionLink("graph", false,
contextArray);
       writer.element("IMG", "src", link, "id", _clientId);


and then make your method for generating the graphs:


public StreamResponse onGraph(Object[] context)  {
JFreeChart jfreeChart = new BurnDownChartGenerator(context).getChart() ;
return jfreeChart != null ? new ImageStreamResponse("image/jpeg",
jfreeChart) : new TextStreamResponse("text/html","chart not available") ;
      }



On 6/28/07, Peter Schröder <[EMAIL PROTECTED]> wrote:

hi fidel,

there is already an example somewhere on the list. search for
streamresponse or chart.

kind regards,
peter

-----Ursprüngliche Nachricht-----
Von: Fidel Chavarria [mailto:[EMAIL PROTECTED]
Gesendet: Donnerstag, 28. Juni 2007 01:09
An: users@tapestry.apache.org
Betreff: How can i make a Tapestry Component of a Stream Response


I trying to create a Chart dinamically and place it in  a html page , to
do
so a create a ImageStreamResponse  class that convert my Jfreechart
instance
to a byteArrayInputStream


class ImageStreamResponse implements StreamResponse {

                 private JFreeChart jfreeChart ;
                 private String contentType ;

                 public ImageStreamResponse(final String contentType,
JFreeChart chart){
                         this.contentType = contentType ;
                         jfreeChart = chart ;
                 }

                public String getContentType() {
                        return contentType;
                }

                public InputStream getStream() throws IOException {
                        BufferedImage image  =
jfreeChart.createBufferedImage(600, 400);
                        ByteArrayOutputStream byteArray = new
ByteArrayOutputStream() ;
                        ChartUtilities.writeBufferedImageAsJPEG(byteArray,
image) ;
                        return new ByteArrayInputStream(
byteArray.toByteArray());
                }

         }


with an ActionLink

StreamResponse onActionFromViewChart(Object[] context) {
                return viewChart.getGraph(context) ;
        }


my viewChart.getGraph(Object[] context) method

public StreamResponse getGraph(Object[] context)  {
JFreeChart jfreeChart = new BurnDownChartGenerator(context).getChart() ;
return jfreeChart != null ? new ImageStreamResponse("image/jpeg",
jfreeChart) : new TextStreamResponse("text/html","chart not available") ;
        }


it generate a blank page with the image, but i need it to be a component
so
i can place it (the image)within a fancy page.

--
View this message in context:
http://www.nabble.com/How-can-i-make-a-Tapestry-Component-of-a-Stream-Response-tf3989719.html#a11328870
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to