From: David G. <dav...@ob...> - 2002-04-09 16:12:09
|
For info... DG. ---------- Forwarded Message ---------- Subject: Re: JFreeChart potential anomalies. Date: Tue, 09 Apr 2002 16:02:03 From: "Hans-Jurgen Greiner" <hg...@ho...> To: dav...@ob... David, Many Thanks for the reply. This did clear up some questions that I had, and have a feel for what you were trying to do. I think it would be good to send the information to others on the developer forum - The reason I had sent it to you directly, was that the general JFreeChart forum has many developers that are rather new or intermediate level and did not want you to have a flood of responses and other non-related questions revolving around the ones I had sent. I would be be glad to subscribe to the developer forum. could you pass me a link I will submit it. I have given some thoughts around the locking of the cross hair section. And I have some ideas, I need to think this one out through thoroughly, to which the reason I have not implemented. One of my developers on our home grown project wanted a feature a like this for his part of the data analysis. A side effect issue around this would be the event to issue a lock and unlock of the cross hair as well a potential persistence, and where to identify which lock that is desired to be unlocked. A thought was to add a new category in the popup menu, where a submenu contains a named value for a lock that is present on the chart. many regards, Hans From: David Gilbert <dav...@ob...> >Reply-To: dav...@ob... >To: "Hans-Jurgen Greiner" <hg...@ho...> >Subject: Re: JFreeChart potential anomalies. >Date: Tue, 9 Apr 2002 15:07:14 +0100 > >Hi Hans, > >I've set up a new developer mailing list for JFreeChart and, with your >permission, I'd like to forward this e-mail to the list as you've raised >some >important points that others may want to read. I'd also value your >contribution to the list, if you'd like to subscribe. > >I spent a fair amount of time on Thursday and Friday last week going >through >the code you submitted for zooming and crosshairs. I like what you've >done, >especially the zooming, but it hasn't made it into the release yet because >there are some issues still to work out (see the points below). > >On Monday 08 April 2002 23:03, you wrote: > > 1. On a HighLow Chart, since it now is a XYPlot the toolTips for > > HighLowToolTipGenerator is pretty much useless. The method to set a > > Generator is specific to XYToolTipGenerator. > >Agreed. The solution (at least hopefully the solution!) is to move the >tooltip generator into the renderer, which I've done this morning. I'm >about >to commit the changes to CVS on SourceForge...so you can check out the code >soon, if you want to. The changes will be included in version 0.8.2. > > > Also the set method of the Tooltip Generator is not consistent > >behavior > > > with the intialization of the JFreeChartPanel, recomend that the > > constructor use the method and have the > > method set the ALL the values required by tool tip generator. > >Agreed. I've changed this also. > > > 2. The XYPlot, it advertises that it is ok to have a null ToolTip > >Generator > > > This is not the case. It can be set to null. But the XYPlot creates > >a > > > new Generator ( A StandardXYToolTipGenerator ) even when it is not > >the > > > appropriate type of Generator required for the type of chart. I > > reccomend if the tooltipGenerator is null, do not create a new one. > >Agreed. I'm not sure if this was a mistake, or something that worked when >each plot type was a separate class but doesn't work now with the >introduction of XYItemRenderer. In any case, I've changed the code so that >it never creates a new generator - you must explicitly set one yourself >(except that some constructors will give you a default generator - I have a >feeling that the default ought to be null too, but I'm going to think about >that some more). > > > 3. The problem around item #2 is that it is not entirely clear, that the > > JFreeChartPanel controls the generation versus the plot. This did > >not > > > make any sense to me as to the newly refactored classes have the > >drawing > > > work being performed at a very low level and it depends of the > >DrawInfo > > > Object which is not accessable outside of JFreeChartPanel, > > In which to set the values to not be presenting tooltips, It does > >wreck > > > some havoc on the thought process. > >------------------ >Some background: >To draw tooltips on a panel, you need to know where the different bits of >the >chart have been drawn...but so far I have resisted letting the JFreeChart >or >Plot classes maintain any "state" information about where things have been >drawn. My reasoning is that the draw(...) method in one JFreeChart object >could be called any number of times in a very short space of time to (1) >show >the chart on a panel (2) send the chart to the printer and (3) write to a >BufferedImage for saving to a PNG file (4) generate a SVG file via Batik, >all >most likely at different sizes. If I were to maintain information within >the >JFreeChart and Plot classes about where things had been drawn, you'd need >to >know which of 1, 2, 3 and 4 was the last call to the draw method. >------------------ > >The DrawInfo class is an attempt to collect this "state" information (only >when required, you should be able to pass null into the draw method) for >each >call to the draw method WITHOUT the chart having to retain it...so, for >example, the JFreeChartPanel can keep a record of the structure of the >chart >the last time it was drawn on the PANEL (even if it has been drawn >somewhere >else in the interim). > >JFreeChartPanel needs the ability to switch tooltip collection on or off >(since collecting the information when tooltips are not required is a >waste) >but I think it still makes sense to generate the tooltips deep inside >JFreeChart because if you kept the code up at the JFreeChartPanel level, >then >JFreeChartPanel would have to keep expanding as new plots, renderers and >datasets are developed. I'm not sure that would be very easy to maintain > >One last point, the DrawInfo class isn't just intended for use by >JFreeChartPanel, although this is the only class that uses it at the >moment. >For example, you could also use the DrawInfo class in a servlet to create >an >image map for displaying charts on a web page. > > > 4. The CrossHairInfo thing that is going on in XYPlot.draw() method, > >This > > > is a wasted amount of processing - There is a "new CrossHair" > >Object > > > being created on every call to to draw. It is not used by the the > > method, and of course it is definatly not used by many of the > >renderer > > > drawItem() methods therefor taking time and space to create an > > instance of the object, > > create reference, push the item on the stack and not use it. > >It is wasteful, though probably not that big a deal compared to some other >things that need to be optimised. I plan to do some optimisation work >prior >to JFreeChart getting to version 1.0.0, but first I want to do some work to >make it possible to draw axes top and/or bottom, left and/or right...as >well >as first fixing issues such as these ones that you have raised. > > > 5. What is this crosshairinfo thing anyway, I have been trying to > >identify > > > how it is used, and what benefit it is providing the JFreeChart > >utility > > > as well as all the customers of the JFreeChart. > >I'll take the blame for creating a bit of a mess here! Initially I had >some >code contributed by another developer - it worked by having the plot class >record state information from one draw to the next, so CrosshairInfo was my >attempt to work around that. I developed it quickly, knowing that I'd have >to come back to it sometime...and here I am! > >I think the crosshairs really belong in the JFreeChartPanel rather than >being >drawn by the plot. Something along the lines of the code you have sent me. >The only thing I'm not sure about yet is how to make the crosshairs "lock" >onto actual data points (as an option - you should also be able to move >crosshairs to any point on the chart if you want to, but that is easy >enough >to do at the JFreeChartPanel level, it's the locking that's tricky). > >Anyway, I hope these explanations give you some idea of what I intended in >the code. And I would welcome any further suggestions you have. > >Regards, > >Dave Gilbert >www.object-refinery.com _________________________________________________________________ Join the worlds largest e-mail service with MSN Hotmail. http://www.hotmail.com ------------------------------------------------------- |