home | developer | tutorial | examples | download  

Developer Information


As usual, all the following information is also available on the project page at http://www.sourceforge.net/projects/jopenchart. There you will always find the latest releases, you can browse feature requests, bug lists etc. You find the most important links to the project stats on the right side of this page.

How to contribute

There are many ways to offer help. This doesn't only include coding but also testing the code, making suggestions, writing documentation etc. The best thing to do first is to read the Developer Guide, which is still quite short. You will get a first impression how the library is designed and you will also find remarks on the employed coding and documentation styles. If you take a close look at the library source you will easily find the parts depicted in the Developer Guide and you can start coding. If you need a certain feature you could file a Feature Request but you can also drop a mail to the developer mailinglist at jopenchart-develop@lists.sourceforge.net and you will definitely be guided to get what you want. Don't forget to join the list, too. There are not enough contributors without me, Sebastian, to fulfill all feature requests. Additionally, we might have our own idea about how the library should develop. If you finished your work just submit a patch with a thorough documentation what it does. This makes it a lot easier for us to include your changes in the CVS release.

Developer Guide

To ease the hard path to become a JOpenChart contributor I prepared a Developer Guide which documents the JOpenChart library from a top-level perspective. It documents the preferred coding styles for any contributions and it also depicts some of the algorithms I used in the code. The TeX source for the guide is available through CVS together with a binary version of the PDF file. If you have any comments, suggestions for additions or whatever send a message to the developer mailinglist at jopenchart-develop@lists.sourceforge.net and join that list.

CVS Access

CVS Howto

Sourceforge provides an excellent CVS-Howto that gets you up and running with CVS and SSH on sourceforge. Anonymous CVS access is possible using :pserver:anonymous@cvs.jopenchart.sourceforge.net:/cvsroot/jopenchart as your CVSROOT. The correct modulename is jopenchart. If you want to check out the version without need for the JDK 1.4, checkout the module as written above. Afterwards perform a CVS update on the files src/de/progra/charting/ChartEncoder.java and src/build.xml. Update them with the versions tagged preJ2SE1_4.

For help on getting you up and running with CVS and SSH on sourceforge, check out the sourceforge documentation. If you need a nice graphical CVS client, go to www.cvsgui.org (for any OS) or to www.tortoisecvs.org if your a Windows user.

CVS Webinterface

If you like to browse the CVS repository using your favourite browser, you can do so using the Web Interface.

Open Work

The following items are on the top of my priority list. If one or more of them specifically interest you, and you would like to do the work, drop me a mail and offer your help.

  1. Move the ChartDataModelConstraints creation to the AbstractChartDataModel class, because it is essentially the same for all DataModel classes.
  2. Create the ChartDataModelConstraints class as an inner class and not an anonymous one. It could be overwritten then. Apply modified Singleton pattern to avoid the creation of new objects, instead there should be one per DataModel instance, but not exactly one at all.
  3. done through setManualScale() now
    Implement setZeroBased(true / false) in DataModel. The value scale is automatically extended to a minimum or maximum value of 0. In the ChartDataModelConstraints the following should be implemented:
    				if( isZeroBased() && (ymin > 0 || ymax < 0) )
    					ymin = 0; ( ymax = 0 respectively )
  4. DONE
    Implement setManualScale(true / false) in ChartDataModel to manually set the max and min values. This implies an ordering isManualScale > isAutoScale (isZeroBased) > default (ZeroBased) for the different methods of constraint computation, ie isManualScale overrides isAutoScale etc, but the last two methods could be additionally zero based. Only numerical ChartDataModels can use manual x-axis scaling. ChartDataModelConstraints could be overridden to achieve this.
  5. done through setManualScale and automatic clipping in AbstractChartRenderer now
    b) setManualExtension for numerical ChartDataModels, ie manual scales can fade out data values. The simpler case would limit manual scales to include the data value bounds in any case. This new behaviour could be used to implement zooming. Might require a ChartDataLayoutChangedEvent class and maybe the methods getValueAt and getColumnValueAt should implement bound checking and return NaN or null if out of bounds.
  6. In this case, CoordSystem should become ChartDataLayoutListener to automatically relayout if things like the constraints or CoordSystem parameters change.
  7. Implement second y-axis. Several things should be taken into account:
    • min, max calculation is identical to the first y-axis,
    • right bounds of CoordSystem should be adapted,
    • should always be zero-based, always without y-axis arrows,
    • min, max value should be scaled to align on zero-coordinate,
    • the axis should be rendered lefthand or righthand depending on first y-axis.
  8. Change paintArrows in CoordSystem to setPaintArrows(NO_ARROWS (0x0) | X_ARROW (0x1) | Y_ARROW (0x2) | XY_ARROWS (0x3)).
  9. Paint x-axis labels as values between 0 and 9.9 and exclude the maximum power of ten, write it below the axis unit as a scaling factor. This should be optional but would be very handy, because the labels cannot overlap anymore.
  10. Implement Symbol Interface and implementations (square, circle, diamond, triangle etc) for use in the PlotChartRenderer. Symbol should contain render method to render themselves. RowColorModel maps datasets to Symbols and colors. Symbols are rendered in the corresponding color. Render method is called with coordinate parameter, which is parameter of the center point. Symbols are not chosen randomly but in modulo fashion, ie symbol = numofdatasets modulo numofsymbols. Could Symbols be found automatically or should they be registered by RowColorModel so that users can implement their own.

Project News

Project Stats

Tracker Tracker

 - Bugs ( 3 open / 20 total )
Bug Tracking System

 - Support Requests ( 4 open / 10 total )
Tech Support Tracking System

 - Patches ( 3 open / 6 total )
Patch Tracking System

 - Feature Requests ( 3 open / 4 total )
Feature Request Tracking System

Forums Forums ( 45 messages in 2 forums )
Docs Doc Manager
Mail Lists Mailing Lists ( 2 mailing lists )
Screenshots Screenshots
Tasks Task Manager
There are no public subprojects available
CVS CVS Tree ( 337 commits, 103 adds ) known bug
FTP Released Files

SourceForge Logo

Sebastian Müller