Rozbalená knihovna verze 1.0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sat, 28 Feb 2009 21:31:02 +0100
changeset 1639991d0808a
parent 0 1612dbcec451
child 2 68cc9b54a153
Rozbalená knihovna verze 1.0
.hgignore
java/cewolf-1.0/.classpath
java/cewolf-1.0/.project
java/cewolf-1.0/.wtpmodules
java/cewolf-1.0/Build_Instructions.txt
java/cewolf-1.0/LICENSE.txt
java/cewolf-1.0/RELEASE.txt
java/cewolf-1.0/etc/cewolf-1.1.tld
java/cewolf-1.0/etc/cewolf.tld
java/cewolf-1.0/etc/overlib.js
java/cewolf-1.0/pom.xml
java/cewolf-1.0/repository/gnujaxp/gnujaxp.jar
java/cewolf-1.0/repository/gnujaxp/pom.xml
java/cewolf-1.0/repository/pom.xml
java/cewolf-1.0/src/main/assembly/assembly.xml
java/cewolf-1.0/src/main/java/de/laures/cewolf/CewolfException.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/CewolfRenderer.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/ChartHolder.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/ChartImage.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/ChartPostProcessor.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/ChartRenderingException.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/ChartValidationException.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/Configuration.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/ConfigurationException.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/DatasetProduceException.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/DatasetProducer.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/PostProcessingException.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/Storage.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/WebConstants.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/cpp/RotatedAxisLabels.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/cpp/package.html
java/cewolf-1.0/src/main/java/de/laures/cewolf/dp/DataSourceXYDatasetProducer.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/dp/DataSourceXYSeries.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/dp/MovingAverageDatasetProducer.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/dp/package.html
java/cewolf-1.0/src/main/java/de/laures/cewolf/event/ChartImageRenderListener.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/links/CategoryItemLinkGenerator.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/links/LinkGenerator.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/links/PieSectionLinkGenerator.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/links/XYItemLinkGenerator.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/package.html
java/cewolf-1.0/src/main/java/de/laures/cewolf/storage/AbstractSessionStorage.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/storage/ClusterableSessionStorage.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/storage/FileStorage.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/storage/LongTermSessionStorage.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/storage/SerializableChartImage.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/storage/SessionStorageGroup.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/storage/SessionStorageItem.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/storage/TransientSessionStorage.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/AbstractChartDefinition.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/AttributeValidationException.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/AxisConstants.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/AxisFactory.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/AxisTypes.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/CewolfChartFactory.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/ChartConstants.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/ChartImageDefinition.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/ChartTypes.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/CombinedChartDefinition.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/DataAware.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/DataContainer.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/IncompatibleDatasetException.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/LayoutConstants.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/LayoutTypes.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/OverlaidChartDefinition.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/PlotConstants.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/PlotContainer.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/PlotDefinition.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/PlotTypes.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/SimpleChartDefinition.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/TagValidationException.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/TaglibConstants.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/UnsupportedChartTypeException.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/html/AbstractHTMLBaseTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/html/HTMLImgTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/html/package.html
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/package.html
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/AbstractChartTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/AbstractObjectTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/AbstractParameterizedObjectTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/CewolfBodyTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/CewolfRootTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/CewolfTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/ChartImgTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/ChartImgURLTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/ChartImgURLTagEI.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/ChartMapTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/ChartPostProcessorTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/ColorTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/Colored.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/CombinedChartTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/DataTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/GradientTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/LegendTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/Mapped.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/OverlaidChartTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/Painted.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/ParamTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/Parameterized.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/PlotTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/PointTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/Pointed.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/ProducerTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/SerializableGradientPaint.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/SerializableTexturePaint.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/SimpleChartTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/TextureTag.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/package.html
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/util/BrowserDetection.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/util/ColorHelper.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/util/DatasetProductionTimeStore.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/util/DatasetProductionTimesKey.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/util/KeyGenerator.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/util/MIMEExtensionHelper.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/util/PageUtils.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/util/package.html
java/cewolf-1.0/src/main/java/de/laures/cewolf/tooltips/CategoryToolTipGenerator.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/tooltips/PieToolTipGenerator.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/tooltips/ToolTipGenerator.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/tooltips/XYToolTipGenerator.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/util/Assert.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/util/HTMLStateTable.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/util/ImageHelper.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/util/RenderedImage.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/util/Renderer.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/util/RenderingException.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/util/RenderingHelper.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/util/StateDescriptor.java
java/cewolf-1.0/src/main/java/de/laures/cewolf/util/package.html
java/cewolf-1.0/src/main/resources/cewolf-1.1.tld
java/cewolf-1.0/src/main/resources/cewolf.tld
java/cewolf-1.0/src/main/resources/overlib.js
java/cewolf-1.0/src/site/brief.html
java/cewolf-1.0/src/site/cewolf.css
java/cewolf-1.0/src/site/chartdatasetcombinations.html
java/cewolf-1.0/src/site/chartdatasetcombinations.sxc
java/cewolf-1.0/src/site/demo.html
java/cewolf-1.0/src/site/developerguide.sxw
java/cewolf-1.0/src/site/devguide.html
java/cewolf-1.0/src/site/faq/faq.html
java/cewolf-1.0/src/site/faq/faqfooter.html
java/cewolf-1.0/src/site/faq/faqheader.html
java/cewolf-1.0/src/site/header.html
java/cewolf-1.0/src/site/img/Thumbs.db
java/cewolf-1.0/src/site/img/api_button_off.png
java/cewolf-1.0/src/site/img/api_button_on.png
java/cewolf-1.0/src/site/img/architecture.png
java/cewolf-1.0/src/site/img/cewolf_logo.gif
java/cewolf-1.0/src/site/img/downloads_button_off.png
java/cewolf-1.0/src/site/img/downloads_button_on.png
java/cewolf-1.0/src/site/img/examplehoriz3d.png
java/cewolf-1.0/src/site/img/exampleline.png
java/cewolf-1.0/src/site/img/exampleoverlaid.png
java/cewolf-1.0/src/site/img/examplepie.png
java/cewolf-1.0/src/site/img/examplescatter.png
java/cewolf-1.0/src/site/img/examplevert3d.png
java/cewolf-1.0/src/site/img/examplexy.png
java/cewolf-1.0/src/site/img/faq_button_off.png
java/cewolf-1.0/src/site/img/faq_button_on.png
java/cewolf-1.0/src/site/img/header_bg.png
java/cewolf-1.0/src/site/img/intro_button_off.png
java/cewolf-1.0/src/site/img/intro_button_on.png
java/cewolf-1.0/src/site/img/jspin100.gif
java/cewolf-1.0/src/site/img/logo.gif
java/cewolf-1.0/src/site/img/menu_bg.png
java/cewolf-1.0/src/site/img/menu_corner.png
java/cewolf-1.0/src/site/img/project_button_off.png
java/cewolf-1.0/src/site/img/project_button_on.png
java/cewolf-1.0/src/site/img/screens_button_off.png
java/cewolf-1.0/src/site/img/screens_button_on.png
java/cewolf-1.0/src/site/img/sfstats.gif
java/cewolf-1.0/src/site/img/taglib_button_off.png
java/cewolf-1.0/src/site/img/taglib_button_on.png
java/cewolf-1.0/src/site/img/tutorial.png
java/cewolf-1.0/src/site/img/tutorial_button_off.png
java/cewolf-1.0/src/site/img/tutorial_button_on.png
java/cewolf-1.0/src/site/img/web design.psd
java/cewolf-1.0/src/site/index.html
java/cewolf-1.0/src/site/menu.html
java/cewolf-1.0/src/site/overlib.js
java/cewolf-1.0/src/site/plotdatasetcombinations.sxc
java/cewolf-1.0/src/site/site.xml
java/cewolf-1.0/src/site/taglib.html
java/cewolf-1.0/src/site/tutorial.html
java/cewolf-1.0/src/site/tutorial/step1.html
java/cewolf-1.0/src/site/tutorial/step2.html
java/cewolf-1.0/src/site/tutorial/step3.html
java/cewolf-1.0/src/site/tutorial/step4.html
java/cewolf-1.0/src/site/tutorial/step5.html
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/.hgignore	Sat Feb 28 21:31:02 2009 +0100
     1.3 @@ -0,0 +1,2 @@
     1.4 +java/cewolf-1.0/target/*
     1.5 +java/cewolf-1.0/lib/*
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/java/cewolf-1.0/.classpath	Sat Feb 28 21:31:02 2009 +0100
     2.3 @@ -0,0 +1,19 @@
     2.4 +<classpath>
     2.5 +  <classpathentry kind="src" path="src/main/java"/>
     2.6 +  <classpathentry kind="src" path="src/main/resources"/>
     2.7 +  <classpathentry kind="output" path="target/classes"/>
     2.8 +  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
     2.9 +  <classpathentry kind="var" path="M2_REPO/jfree/jcommon/1.0.0/jcommon-1.0.0.jar"/>
    2.10 +  <classpathentry kind="var" path="M2_REPO/batik/batik-xml/1.6/batik-xml-1.6.jar"/>
    2.11 +  <classpathentry kind="var" path="M2_REPO/batik/batik-dom/1.6/batik-dom-1.6.jar"/>
    2.12 +  <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
    2.13 +  <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar"/>
    2.14 +  <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.12/log4j-1.2.12.jar"/>
    2.15 +  <classpathentry kind="var" path="M2_REPO/batik/batik-util/1.6/batik-util-1.6.jar"/>
    2.16 +  <classpathentry kind="var" path="M2_REPO/crimson/crimson/1.1.3/crimson-1.1.3.jar"/>
    2.17 +  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8/junit-3.8.jar"/>
    2.18 +  <classpathentry kind="var" path="M2_REPO/gnujaxp/gnujaxp/1.0.0/gnujaxp-1.0.0.jar"/>
    2.19 +  <classpathentry kind="var" path="M2_REPO/batik/batik-awt-util/1.6/batik-awt-util-1.6.jar"/>
    2.20 +  <classpathentry kind="var" path="M2_REPO/batik/batik-svggen/1.6/batik-svggen-1.6.jar"/>
    2.21 +  <classpathentry kind="var" path="M2_REPO/jfreechart/jfreechart/1.0.0/jfreechart-1.0.0.jar"/>
    2.22 +</classpath>
    2.23 \ No newline at end of file
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/java/cewolf-1.0/.project	Sat Feb 28 21:31:02 2009 +0100
     3.3 @@ -0,0 +1,31 @@
     3.4 +<projectDescription>
     3.5 +  <name>cewolf</name>
     3.6 +  <comment>Cewolf is a tag library for JfreeChart.
     3.7 +    JFreeChart is a class library, written in Java, for generating charts.
     3.8 +    Utilising the Java2D APIs, it currently supports bar charts, pie charts,
     3.9 +    line charts, XY-plots and time series plots.</comment>
    3.10 +  <projects/>
    3.11 +  <buildSpec>
    3.12 +    <buildCommand>
    3.13 +      <name>org.eclipse.jdt.core.javabuilder</name>
    3.14 +      <arguments/>
    3.15 +    </buildCommand>
    3.16 +    <buildCommand>
    3.17 +      <name>org.eclipse.wst.common.modulecore.ComponentStructuralBuilder</name>
    3.18 +      <arguments/>
    3.19 +    </buildCommand>
    3.20 +    <buildCommand>
    3.21 +      <name>org.eclipse.wst.validation.validationbuilder</name>
    3.22 +      <arguments/>
    3.23 +    </buildCommand>
    3.24 +    <buildCommand>
    3.25 +      <name>org.eclipse.wst.common.modulecore.ComponentStructuralBuilderDependencyResolver</name>
    3.26 +      <arguments/>
    3.27 +    </buildCommand>
    3.28 +  </buildSpec>
    3.29 +  <natures>
    3.30 +    <nature>org.eclipse.jdt.core.javanature</nature>
    3.31 +    <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
    3.32 +    <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
    3.33 +  </natures>
    3.34 +</projectDescription>
    3.35 \ No newline at end of file
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/java/cewolf-1.0/.wtpmodules	Sat Feb 28 21:31:02 2009 +0100
     4.3 @@ -0,0 +1,9 @@
     4.4 +<project-modules id="moduleCoreId">
     4.5 +  <wb-module deploy-name="cewolf">
     4.6 +    <module-type module-type-id="jst.utility">
     4.7 +      <property name="java-output-path" value="/target/classes"/>
     4.8 +    </module-type>
     4.9 +    <wb-resource deploy-path="/" source-path="src/main/java"/>
    4.10 +    <wb-resource deploy-path="/" source-path="src/main/resources"/>
    4.11 +  </wb-module>
    4.12 +</project-modules>
    4.13 \ No newline at end of file
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/java/cewolf-1.0/Build_Instructions.txt	Sat Feb 28 21:31:02 2009 +0100
     5.3 @@ -0,0 +1,7 @@
     5.4 +Cewolf uses Apache Maven 2 as the build system as of version 0.12.0. Maven 2 can be downloaded from http://maven.apache.org.
     5.5 +
     5.6 +To build cewolf using M2 you must first load a couple of jars into your local repository. In the cewolf/repository folder, run "mvn install." This will load gnujaxp into your M2 local repository. This only needs to be done once. All the other dependant jars are automatically downloaded by M2 from ibiblio.
     5.7 +
     5.8 +To build cewolf, run "mvn install" from the cewolf folder. This will build the jar and javadocs place them in /target. 
     5.9 +
    5.10 +To build the zip file deployed on sourceforge, run "mvn assembly:assembly" from the cewolf folder. The zip will be placed in /target. This jar will contain all the dependant jars and the source.
    5.11 \ No newline at end of file
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/java/cewolf-1.0/LICENSE.txt	Sat Feb 28 21:31:02 2009 +0100
     6.3 @@ -0,0 +1,502 @@
     6.4 +		  GNU LESSER GENERAL PUBLIC LICENSE
     6.5 +		       Version 2.1, February 1999
     6.6 +
     6.7 + Copyright (C) 1991, 1999 Free Software Foundation, Inc.
     6.8 +     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
     6.9 + Everyone is permitted to copy and distribute verbatim copies
    6.10 + of this license document, but changing it is not allowed.
    6.11 +
    6.12 +[This is the first released version of the Lesser GPL.  It also counts
    6.13 + as the successor of the GNU Library Public License, version 2, hence
    6.14 + the version number 2.1.]
    6.15 +
    6.16 +			    Preamble
    6.17 +
    6.18 +  The licenses for most software are designed to take away your
    6.19 +freedom to share and change it.  By contrast, the GNU General Public
    6.20 +Licenses are intended to guarantee your freedom to share and change
    6.21 +free software--to make sure the software is free for all its users.
    6.22 +
    6.23 +  This license, the Lesser General Public License, applies to some
    6.24 +specially designated software packages--typically libraries--of the
    6.25 +Free Software Foundation and other authors who decide to use it.  You
    6.26 +can use it too, but we suggest you first think carefully about whether
    6.27 +this license or the ordinary General Public License is the better
    6.28 +strategy to use in any particular case, based on the explanations below.
    6.29 +
    6.30 +  When we speak of free software, we are referring to freedom of use,
    6.31 +not price.  Our General Public Licenses are designed to make sure that
    6.32 +you have the freedom to distribute copies of free software (and charge
    6.33 +for this service if you wish); that you receive source code or can get
    6.34 +it if you want it; that you can change the software and use pieces of
    6.35 +it in new free programs; and that you are informed that you can do
    6.36 +these things.
    6.37 +
    6.38 +  To protect your rights, we need to make restrictions that forbid
    6.39 +distributors to deny you these rights or to ask you to surrender these
    6.40 +rights.  These restrictions translate to certain responsibilities for
    6.41 +you if you distribute copies of the library or if you modify it.
    6.42 +
    6.43 +  For example, if you distribute copies of the library, whether gratis
    6.44 +or for a fee, you must give the recipients all the rights that we gave
    6.45 +you.  You must make sure that they, too, receive or can get the source
    6.46 +code.  If you link other code with the library, you must provide
    6.47 +complete object files to the recipients, so that they can relink them
    6.48 +with the library after making changes to the library and recompiling
    6.49 +it.  And you must show them these terms so they know their rights.
    6.50 +
    6.51 +  We protect your rights with a two-step method: (1) we copyright the
    6.52 +library, and (2) we offer you this license, which gives you legal
    6.53 +permission to copy, distribute and/or modify the library.
    6.54 +
    6.55 +  To protect each distributor, we want to make it very clear that
    6.56 +there is no warranty for the free library.  Also, if the library is
    6.57 +modified by someone else and passed on, the recipients should know
    6.58 +that what they have is not the original version, so that the original
    6.59 +author's reputation will not be affected by problems that might be
    6.60 +introduced by others.
    6.61 +
    6.62 +  Finally, software patents pose a constant threat to the existence of
    6.63 +any free program.  We wish to make sure that a company cannot
    6.64 +effectively restrict the users of a free program by obtaining a
    6.65 +restrictive license from a patent holder.  Therefore, we insist that
    6.66 +any patent license obtained for a version of the library must be
    6.67 +consistent with the full freedom of use specified in this license.
    6.68 +
    6.69 +  Most GNU software, including some libraries, is covered by the
    6.70 +ordinary GNU General Public License.  This license, the GNU Lesser
    6.71 +General Public License, applies to certain designated libraries, and
    6.72 +is quite different from the ordinary General Public License.  We use
    6.73 +this license for certain libraries in order to permit linking those
    6.74 +libraries into non-free programs.
    6.75 +
    6.76 +  When a program is linked with a library, whether statically or using
    6.77 +a shared library, the combination of the two is legally speaking a
    6.78 +combined work, a derivative of the original library.  The ordinary
    6.79 +General Public License therefore permits such linking only if the
    6.80 +entire combination fits its criteria of freedom.  The Lesser General
    6.81 +Public License permits more lax criteria for linking other code with
    6.82 +the library.
    6.83 +
    6.84 +  We call this license the "Lesser" General Public License because it
    6.85 +does Less to protect the user's freedom than the ordinary General
    6.86 +Public License.  It also provides other free software developers Less
    6.87 +of an advantage over competing non-free programs.  These disadvantages
    6.88 +are the reason we use the ordinary General Public License for many
    6.89 +libraries.  However, the Lesser license provides advantages in certain
    6.90 +special circumstances.
    6.91 +
    6.92 +  For example, on rare occasions, there may be a special need to
    6.93 +encourage the widest possible use of a certain library, so that it becomes
    6.94 +a de-facto standard.  To achieve this, non-free programs must be
    6.95 +allowed to use the library.  A more frequent case is that a free
    6.96 +library does the same job as widely used non-free libraries.  In this
    6.97 +case, there is little to gain by limiting the free library to free
    6.98 +software only, so we use the Lesser General Public License.
    6.99 +
   6.100 +  In other cases, permission to use a particular library in non-free
   6.101 +programs enables a greater number of people to use a large body of
   6.102 +free software.  For example, permission to use the GNU C Library in
   6.103 +non-free programs enables many more people to use the whole GNU
   6.104 +operating system, as well as its variant, the GNU/Linux operating
   6.105 +system.
   6.106 +
   6.107 +  Although the Lesser General Public License is Less protective of the
   6.108 +users' freedom, it does ensure that the user of a program that is
   6.109 +linked with the Library has the freedom and the wherewithal to run
   6.110 +that program using a modified version of the Library.
   6.111 +
   6.112 +  The precise terms and conditions for copying, distribution and
   6.113 +modification follow.  Pay close attention to the difference between a
   6.114 +"work based on the library" and a "work that uses the library".  The
   6.115 +former contains code derived from the library, whereas the latter must
   6.116 +be combined with the library in order to run.
   6.117 +
   6.118 +		  GNU LESSER GENERAL PUBLIC LICENSE
   6.119 +   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
   6.120 +
   6.121 +  0. This License Agreement applies to any software library or other
   6.122 +program which contains a notice placed by the copyright holder or
   6.123 +other authorized party saying it may be distributed under the terms of
   6.124 +this Lesser General Public License (also called "this License").
   6.125 +Each licensee is addressed as "you".
   6.126 +
   6.127 +  A "library" means a collection of software functions and/or data
   6.128 +prepared so as to be conveniently linked with application programs
   6.129 +(which use some of those functions and data) to form executables.
   6.130 +
   6.131 +  The "Library", below, refers to any such software library or work
   6.132 +which has been distributed under these terms.  A "work based on the
   6.133 +Library" means either the Library or any derivative work under
   6.134 +copyright law: that is to say, a work containing the Library or a
   6.135 +portion of it, either verbatim or with modifications and/or translated
   6.136 +straightforwardly into another language.  (Hereinafter, translation is
   6.137 +included without limitation in the term "modification".)
   6.138 +
   6.139 +  "Source code" for a work means the preferred form of the work for
   6.140 +making modifications to it.  For a library, complete source code means
   6.141 +all the source code for all modules it contains, plus any associated
   6.142 +interface definition files, plus the scripts used to control compilation
   6.143 +and installation of the library.
   6.144 +
   6.145 +  Activities other than copying, distribution and modification are not
   6.146 +covered by this License; they are outside its scope.  The act of
   6.147 +running a program using the Library is not restricted, and output from
   6.148 +such a program is covered only if its contents constitute a work based
   6.149 +on the Library (independent of the use of the Library in a tool for
   6.150 +writing it).  Whether that is true depends on what the Library does
   6.151 +and what the program that uses the Library does.
   6.152 +  
   6.153 +  1. You may copy and distribute verbatim copies of the Library's
   6.154 +complete source code as you receive it, in any medium, provided that
   6.155 +you conspicuously and appropriately publish on each copy an
   6.156 +appropriate copyright notice and disclaimer of warranty; keep intact
   6.157 +all the notices that refer to this License and to the absence of any
   6.158 +warranty; and distribute a copy of this License along with the
   6.159 +Library.
   6.160 +
   6.161 +  You may charge a fee for the physical act of transferring a copy,
   6.162 +and you may at your option offer warranty protection in exchange for a
   6.163 +fee.
   6.164 +
   6.165 +  2. You may modify your copy or copies of the Library or any portion
   6.166 +of it, thus forming a work based on the Library, and copy and
   6.167 +distribute such modifications or work under the terms of Section 1
   6.168 +above, provided that you also meet all of these conditions:
   6.169 +
   6.170 +    a) The modified work must itself be a software library.
   6.171 +
   6.172 +    b) You must cause the files modified to carry prominent notices
   6.173 +    stating that you changed the files and the date of any change.
   6.174 +
   6.175 +    c) You must cause the whole of the work to be licensed at no
   6.176 +    charge to all third parties under the terms of this License.
   6.177 +
   6.178 +    d) If a facility in the modified Library refers to a function or a
   6.179 +    table of data to be supplied by an application program that uses
   6.180 +    the facility, other than as an argument passed when the facility
   6.181 +    is invoked, then you must make a good faith effort to ensure that,
   6.182 +    in the event an application does not supply such function or
   6.183 +    table, the facility still operates, and performs whatever part of
   6.184 +    its purpose remains meaningful.
   6.185 +
   6.186 +    (For example, a function in a library to compute square roots has
   6.187 +    a purpose that is entirely well-defined independent of the
   6.188 +    application.  Therefore, Subsection 2d requires that any
   6.189 +    application-supplied function or table used by this function must
   6.190 +    be optional: if the application does not supply it, the square
   6.191 +    root function must still compute square roots.)
   6.192 +
   6.193 +These requirements apply to the modified work as a whole.  If
   6.194 +identifiable sections of that work are not derived from the Library,
   6.195 +and can be reasonably considered independent and separate works in
   6.196 +themselves, then this License, and its terms, do not apply to those
   6.197 +sections when you distribute them as separate works.  But when you
   6.198 +distribute the same sections as part of a whole which is a work based
   6.199 +on the Library, the distribution of the whole must be on the terms of
   6.200 +this License, whose permissions for other licensees extend to the
   6.201 +entire whole, and thus to each and every part regardless of who wrote
   6.202 +it.
   6.203 +
   6.204 +Thus, it is not the intent of this section to claim rights or contest
   6.205 +your rights to work written entirely by you; rather, the intent is to
   6.206 +exercise the right to control the distribution of derivative or
   6.207 +collective works based on the Library.
   6.208 +
   6.209 +In addition, mere aggregation of another work not based on the Library
   6.210 +with the Library (or with a work based on the Library) on a volume of
   6.211 +a storage or distribution medium does not bring the other work under
   6.212 +the scope of this License.
   6.213 +
   6.214 +  3. You may opt to apply the terms of the ordinary GNU General Public
   6.215 +License instead of this License to a given copy of the Library.  To do
   6.216 +this, you must alter all the notices that refer to this License, so
   6.217 +that they refer to the ordinary GNU General Public License, version 2,
   6.218 +instead of to this License.  (If a newer version than version 2 of the
   6.219 +ordinary GNU General Public License has appeared, then you can specify
   6.220 +that version instead if you wish.)  Do not make any other change in
   6.221 +these notices.
   6.222 +
   6.223 +  Once this change is made in a given copy, it is irreversible for
   6.224 +that copy, so the ordinary GNU General Public License applies to all
   6.225 +subsequent copies and derivative works made from that copy.
   6.226 +
   6.227 +  This option is useful when you wish to copy part of the code of
   6.228 +the Library into a program that is not a library.
   6.229 +
   6.230 +  4. You may copy and distribute the Library (or a portion or
   6.231 +derivative of it, under Section 2) in object code or executable form
   6.232 +under the terms of Sections 1 and 2 above provided that you accompany
   6.233 +it with the complete corresponding machine-readable source code, which
   6.234 +must be distributed under the terms of Sections 1 and 2 above on a
   6.235 +medium customarily used for software interchange.
   6.236 +
   6.237 +  If distribution of object code is made by offering access to copy
   6.238 +from a designated place, then offering equivalent access to copy the
   6.239 +source code from the same place satisfies the requirement to
   6.240 +distribute the source code, even though third parties are not
   6.241 +compelled to copy the source along with the object code.
   6.242 +
   6.243 +  5. A program that contains no derivative of any portion of the
   6.244 +Library, but is designed to work with the Library by being compiled or
   6.245 +linked with it, is called a "work that uses the Library".  Such a
   6.246 +work, in isolation, is not a derivative work of the Library, and
   6.247 +therefore falls outside the scope of this License.
   6.248 +
   6.249 +  However, linking a "work that uses the Library" with the Library
   6.250 +creates an executable that is a derivative of the Library (because it
   6.251 +contains portions of the Library), rather than a "work that uses the
   6.252 +library".  The executable is therefore covered by this License.
   6.253 +Section 6 states terms for distribution of such executables.
   6.254 +
   6.255 +  When a "work that uses the Library" uses material from a header file
   6.256 +that is part of the Library, the object code for the work may be a
   6.257 +derivative work of the Library even though the source code is not.
   6.258 +Whether this is true is especially significant if the work can be
   6.259 +linked without the Library, or if the work is itself a library.  The
   6.260 +threshold for this to be true is not precisely defined by law.
   6.261 +
   6.262 +  If such an object file uses only numerical parameters, data
   6.263 +structure layouts and accessors, and small macros and small inline
   6.264 +functions (ten lines or less in length), then the use of the object
   6.265 +file is unrestricted, regardless of whether it is legally a derivative
   6.266 +work.  (Executables containing this object code plus portions of the
   6.267 +Library will still fall under Section 6.)
   6.268 +
   6.269 +  Otherwise, if the work is a derivative of the Library, you may
   6.270 +distribute the object code for the work under the terms of Section 6.
   6.271 +Any executables containing that work also fall under Section 6,
   6.272 +whether or not they are linked directly with the Library itself.
   6.273 +
   6.274 +  6. As an exception to the Sections above, you may also combine or
   6.275 +link a "work that uses the Library" with the Library to produce a
   6.276 +work containing portions of the Library, and distribute that work
   6.277 +under terms of your choice, provided that the terms permit
   6.278 +modification of the work for the customer's own use and reverse
   6.279 +engineering for debugging such modifications.
   6.280 +
   6.281 +  You must give prominent notice with each copy of the work that the
   6.282 +Library is used in it and that the Library and its use are covered by
   6.283 +this License.  You must supply a copy of this License.  If the work
   6.284 +during execution displays copyright notices, you must include the
   6.285 +copyright notice for the Library among them, as well as a reference
   6.286 +directing the user to the copy of this License.  Also, you must do one
   6.287 +of these things:
   6.288 +
   6.289 +    a) Accompany the work with the complete corresponding
   6.290 +    machine-readable source code for the Library including whatever
   6.291 +    changes were used in the work (which must be distributed under
   6.292 +    Sections 1 and 2 above); and, if the work is an executable linked
   6.293 +    with the Library, with the complete machine-readable "work that
   6.294 +    uses the Library", as object code and/or source code, so that the
   6.295 +    user can modify the Library and then relink to produce a modified
   6.296 +    executable containing the modified Library.  (It is understood
   6.297 +    that the user who changes the contents of definitions files in the
   6.298 +    Library will not necessarily be able to recompile the application
   6.299 +    to use the modified definitions.)
   6.300 +
   6.301 +    b) Use a suitable shared library mechanism for linking with the
   6.302 +    Library.  A suitable mechanism is one that (1) uses at run time a
   6.303 +    copy of the library already present on the user's computer system,
   6.304 +    rather than copying library functions into the executable, and (2)
   6.305 +    will operate properly with a modified version of the library, if
   6.306 +    the user installs one, as long as the modified version is
   6.307 +    interface-compatible with the version that the work was made with.
   6.308 +
   6.309 +    c) Accompany the work with a written offer, valid for at
   6.310 +    least three years, to give the same user the materials
   6.311 +    specified in Subsection 6a, above, for a charge no more
   6.312 +    than the cost of performing this distribution.
   6.313 +
   6.314 +    d) If distribution of the work is made by offering access to copy
   6.315 +    from a designated place, offer equivalent access to copy the above
   6.316 +    specified materials from the same place.
   6.317 +
   6.318 +    e) Verify that the user has already received a copy of these
   6.319 +    materials or that you have already sent this user a copy.
   6.320 +
   6.321 +  For an executable, the required form of the "work that uses the
   6.322 +Library" must include any data and utility programs needed for
   6.323 +reproducing the executable from it.  However, as a special exception,
   6.324 +the materials to be distributed need not include anything that is
   6.325 +normally distributed (in either source or binary form) with the major
   6.326 +components (compiler, kernel, and so on) of the operating system on
   6.327 +which the executable runs, unless that component itself accompanies
   6.328 +the executable.
   6.329 +
   6.330 +  It may happen that this requirement contradicts the license
   6.331 +restrictions of other proprietary libraries that do not normally
   6.332 +accompany the operating system.  Such a contradiction means you cannot
   6.333 +use both them and the Library together in an executable that you
   6.334 +distribute.
   6.335 +
   6.336 +  7. You may place library facilities that are a work based on the
   6.337 +Library side-by-side in a single library together with other library
   6.338 +facilities not covered by this License, and distribute such a combined
   6.339 +library, provided that the separate distribution of the work based on
   6.340 +the Library and of the other library facilities is otherwise
   6.341 +permitted, and provided that you do these two things:
   6.342 +
   6.343 +    a) Accompany the combined library with a copy of the same work
   6.344 +    based on the Library, uncombined with any other library
   6.345 +    facilities.  This must be distributed under the terms of the
   6.346 +    Sections above.
   6.347 +
   6.348 +    b) Give prominent notice with the combined library of the fact
   6.349 +    that part of it is a work based on the Library, and explaining
   6.350 +    where to find the accompanying uncombined form of the same work.
   6.351 +
   6.352 +  8. You may not copy, modify, sublicense, link with, or distribute
   6.353 +the Library except as expressly provided under this License.  Any
   6.354 +attempt otherwise to copy, modify, sublicense, link with, or
   6.355 +distribute the Library is void, and will automatically terminate your
   6.356 +rights under this License.  However, parties who have received copies,
   6.357 +or rights, from you under this License will not have their licenses
   6.358 +terminated so long as such parties remain in full compliance.
   6.359 +
   6.360 +  9. You are not required to accept this License, since you have not
   6.361 +signed it.  However, nothing else grants you permission to modify or
   6.362 +distribute the Library or its derivative works.  These actions are
   6.363 +prohibited by law if you do not accept this License.  Therefore, by
   6.364 +modifying or distributing the Library (or any work based on the
   6.365 +Library), you indicate your acceptance of this License to do so, and
   6.366 +all its terms and conditions for copying, distributing or modifying
   6.367 +the Library or works based on it.
   6.368 +
   6.369 +  10. Each time you redistribute the Library (or any work based on the
   6.370 +Library), the recipient automatically receives a license from the
   6.371 +original licensor to copy, distribute, link with or modify the Library
   6.372 +subject to these terms and conditions.  You may not impose any further
   6.373 +restrictions on the recipients' exercise of the rights granted herein.
   6.374 +You are not responsible for enforcing compliance by third parties with
   6.375 +this License.
   6.376 +
   6.377 +  11. If, as a consequence of a court judgment or allegation of patent
   6.378 +infringement or for any other reason (not limited to patent issues),
   6.379 +conditions are imposed on you (whether by court order, agreement or
   6.380 +otherwise) that contradict the conditions of this License, they do not
   6.381 +excuse you from the conditions of this License.  If you cannot
   6.382 +distribute so as to satisfy simultaneously your obligations under this
   6.383 +License and any other pertinent obligations, then as a consequence you
   6.384 +may not distribute the Library at all.  For example, if a patent
   6.385 +license would not permit royalty-free redistribution of the Library by
   6.386 +all those who receive copies directly or indirectly through you, then
   6.387 +the only way you could satisfy both it and this License would be to
   6.388 +refrain entirely from distribution of the Library.
   6.389 +
   6.390 +If any portion of this section is held invalid or unenforceable under any
   6.391 +particular circumstance, the balance of the section is intended to apply,
   6.392 +and the section as a whole is intended to apply in other circumstances.
   6.393 +
   6.394 +It is not the purpose of this section to induce you to infringe any
   6.395 +patents or other property right claims or to contest validity of any
   6.396 +such claims; this section has the sole purpose of protecting the
   6.397 +integrity of the free software distribution system which is
   6.398 +implemented by public license practices.  Many people have made
   6.399 +generous contributions to the wide range of software distributed
   6.400 +through that system in reliance on consistent application of that
   6.401 +system; it is up to the author/donor to decide if he or she is willing
   6.402 +to distribute software through any other system and a licensee cannot
   6.403 +impose that choice.
   6.404 +
   6.405 +This section is intended to make thoroughly clear what is believed to
   6.406 +be a consequence of the rest of this License.
   6.407 +
   6.408 +  12. If the distribution and/or use of the Library is restricted in
   6.409 +certain countries either by patents or by copyrighted interfaces, the
   6.410 +original copyright holder who places the Library under this License may add
   6.411 +an explicit geographical distribution limitation excluding those countries,
   6.412 +so that distribution is permitted only in or among countries not thus
   6.413 +excluded.  In such case, this License incorporates the limitation as if
   6.414 +written in the body of this License.
   6.415 +
   6.416 +  13. The Free Software Foundation may publish revised and/or new
   6.417 +versions of the Lesser General Public License from time to time.
   6.418 +Such new versions will be similar in spirit to the present version,
   6.419 +but may differ in detail to address new problems or concerns.
   6.420 +
   6.421 +Each version is given a distinguishing version number.  If the Library
   6.422 +specifies a version number of this License which applies to it and
   6.423 +"any later version", you have the option of following the terms and
   6.424 +conditions either of that version or of any later version published by
   6.425 +the Free Software Foundation.  If the Library does not specify a
   6.426 +license version number, you may choose any version ever published by
   6.427 +the Free Software Foundation.
   6.428 +
   6.429 +  14. If you wish to incorporate parts of the Library into other free
   6.430 +programs whose distribution conditions are incompatible with these,
   6.431 +write to the author to ask for permission.  For software which is
   6.432 +copyrighted by the Free Software Foundation, write to the Free
   6.433 +Software Foundation; we sometimes make exceptions for this.  Our
   6.434 +decision will be guided by the two goals of preserving the free status
   6.435 +of all derivatives of our free software and of promoting the sharing
   6.436 +and reuse of software generally.
   6.437 +
   6.438 +			    NO WARRANTY
   6.439 +
   6.440 +  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
   6.441 +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
   6.442 +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
   6.443 +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
   6.444 +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
   6.445 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   6.446 +PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
   6.447 +LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
   6.448 +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
   6.449 +
   6.450 +  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
   6.451 +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
   6.452 +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
   6.453 +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
   6.454 +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
   6.455 +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
   6.456 +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
   6.457 +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
   6.458 +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
   6.459 +DAMAGES.
   6.460 +
   6.461 +		     END OF TERMS AND CONDITIONS
   6.462 +
   6.463 +           How to Apply These Terms to Your New Libraries
   6.464 +
   6.465 +  If you develop a new library, and you want it to be of the greatest
   6.466 +possible use to the public, we recommend making it free software that
   6.467 +everyone can redistribute and change.  You can do so by permitting
   6.468 +redistribution under these terms (or, alternatively, under the terms of the
   6.469 +ordinary General Public License).
   6.470 +
   6.471 +  To apply these terms, attach the following notices to the library.  It is
   6.472 +safest to attach them to the start of each source file to most effectively
   6.473 +convey the exclusion of warranty; and each file should have at least the
   6.474 +"copyright" line and a pointer to where the full notice is found.
   6.475 +
   6.476 +    <one line to give the library's name and a brief idea of what it does.>
   6.477 +    Copyright (C) <year>  <name of author>
   6.478 +
   6.479 +    This library is free software; you can redistribute it and/or
   6.480 +    modify it under the terms of the GNU Lesser General Public
   6.481 +    License as published by the Free Software Foundation; either
   6.482 +    version 2.1 of the License, or (at your option) any later version.
   6.483 +
   6.484 +    This library is distributed in the hope that it will be useful,
   6.485 +    but WITHOUT ANY WARRANTY; without even the implied warranty of
   6.486 +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   6.487 +    Lesser General Public License for more details.
   6.488 +
   6.489 +    You should have received a copy of the GNU Lesser General Public
   6.490 +    License along with this library; if not, write to the Free Software
   6.491 +    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   6.492 +
   6.493 +Also add information on how to contact you by electronic and paper mail.
   6.494 +
   6.495 +You should also get your employer (if you work as a programmer) or your
   6.496 +school, if any, to sign a "copyright disclaimer" for the library, if
   6.497 +necessary.  Here is a sample; alter the names:
   6.498 +
   6.499 +  Yoyodyne, Inc., hereby disclaims all copyright interest in the
   6.500 +  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
   6.501 +
   6.502 +  <signature of Ty Coon>, 1 April 1990
   6.503 +  Ty Coon, President of Vice
   6.504 +
   6.505 +That's all there is to it!
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/java/cewolf-1.0/RELEASE.txt	Sat Feb 28 21:31:02 2009 +0100
     7.3 @@ -0,0 +1,286 @@
     7.4 +Release Notes for Version 1.0
     7.5 +--------------------------------
     7.6 +-Jpeg image support added.
     7.7 +-Added new tag parameters to img and legend:
     7.8 +	-removeAfterRender will remove images from storage immediately. Defaults to False. NOTE: This 
     7.9 +	may cause problems if your users expect to copy or save the images from the browser as some
    7.10 +	browsers will put the url in the paste buffer and attempt to reload when pasted somewhere such 
    7.11 +	as MS Word.
    7.12 +	-forceSessionId will add jsessionid parameter to the image url. Defaults to True. This matches
    7.13 +	existing functionality but now allows the option to disable this for certain use cases.
    7.14 +-Supports JFC 1.0.0 Final
    7.15 +	JFC no longer supports the signals chart type. This has been commented out in cewolf for now
    7.16 +	because there is talk on the forum that it may come back.
    7.17 +-At release time, site is not fully updated. This will come in the near future as I move the site fully to Maven2.
    7.18 +	
    7.19 +
    7.20 +Release Notes for Version 0.12.0
    7.21 +--------------------------------
    7.22 +-Supports JFC 1.0.0-RC1
    7.23 +
    7.24 +Release Notes for Version 0.11.0 Alpha
    7.25 +--------------------------------
    7.26 +-Now supports JFC 1.0 Pre 2
    7.27 +-Fixed bugs:1165987,1165979,1165967
    7.28 +-There where significant changes to the JFC Api in this release. See www.jfree.org forums
    7.29 + for specific information. Chances are very good that your chart processors WILL BREAK because of these
    7.30 + changes. This is not because of Cewolf, but because the JFC APIs changed.
    7.31 +
    7.32 +Release Notes for Version 0.10.3
    7.33 +--------------------------------
    7.34 +-Added optional config parameter for FileStorage: "FileStorage.deleteOnExit" 
    7.35 +	to get the saved files deleted at normal shutdown.
    7.36 +-Improved overlaidchart can contain any number of sub-charts
    7.37 +-Added ChartImageRenderListener event callback interface can be implemented by ChartPostProcessor
    7.38 +	to get called back after the image rendered. 
    7.39 +	Useful to acquire JFreeChart's ChartRenderingInfo object.
    7.40 +-Fixed [ 1158392 ] Configuration object causes NPE when servlet reloads
    7.41 +-Fixed chart-renderer factory problem; that if multiple charts of the same type appeared
    7.42 +	on the same page they shared the same renderer, therefore if a post-processor customized
    7.43 +	that renderer all charts were affected.
    7.44 +-Fixed that tooltips would not appear in firefox; when the jsp page in a subdir
    7.45 +	need to use /etc/overlib.js style path in config for this.	
    7.46 +
    7.47 +Release Notes for Version 0.10.2
    7.48 +--------------------------------
    7.49 +Fixed cewolf.jar in the wrong folder.
    7.50 +Fixed NPE in Renderer
    7.51 +
    7.52 +Release Notes for Version 0.10.1
    7.53 +--------------------------------
    7.54 +Fixed bar chart orientation and few other bugs.
    7.55 +
    7.56 +Release Notes for Version 0.10
    7.57 +--------------------------------
    7.58 +-bundled with JFreeChart 0.9.21
    7.59 +-added option to allow use of JFreeChart link and tooltip generators
    7.60 +
    7.61 +Release Notes for Version 0.10a6
    7.62 +--------------------------------
    7.63 +-bundled with JFreeChart 0.9.18
    7.64 +-new storage option that provides better support for long duration sessions. See bug 100248 for details.
    7.65 +
    7.66 +Realease Notes for Version 0.10a1
    7.67 +--------------------------------
    7.68 +- added support for meter, stacked area and bubble charts
    7.69 +- bundled with JFreeChart 0.9.11
    7.70 +
    7.71 +Realease Notes for Version 0.9.5
    7.72 +--------------------------------
    7.73 +- fixed incompatibility to Servlet API 2.2
    7.74 +- fixed pluginspace attribute in non SVG images
    7.75 +
    7.76 +Realease Notes for Version 0.9.4
    7.77 +--------------------------------
    7.78 +- fixed ConfigurationException when providing no param for CewolfServlet
    7.79 +
    7.80 +Realease Notes for Version 0.9.3
    7.81 +--------------------------------
    7.82 +- pluggable storage concept for chart images
    7.83 +- fixed large memory consumptions
    7.84 +- fixed another caching bug
    7.85 +
    7.86 +Realease Notes for Version 0.9.2
    7.87 +--------------------------------
    7.88 +- improved SVG support
    7.89 +
    7.90 +Realease Notes for Version 0.9.1
    7.91 +--------------------------------
    7.92 +- changed <combined-chart> to <combinedchart> to support JSP 1.1
    7.93 +- changed <overlaid-chart> to <overlaidchart> to support JSP 1.1
    7.94 +- added var attribute to <imgurl> to expose URL as page attribute
    7.95 +- fixed wrong mimetype in testpage.jsp for SVG
    7.96 +
    7.97 +Realease Notes for Version 0.9
    7.98 +--------------------------------
    7.99 +- bundled with JFreeChart 0.9.8
   7.100 +- added support for overlay charts (fist steps)
   7.101 +- added support for combined charts (fist steps)
   7.102 +- added usecache attribute to <producer> to disable data caching
   7.103 +- producer id is now passed to produceDataset() as parameter by default. See Javadoc of DatasetProducer
   7.104 +- image URLs are always encoded with session ID parameter even if cookies are enabled
   7.105 +- image URLs paramaters correctly escape ampersands
   7.106 +- semantic of renderer attribute of <img> and <imgurl> changed (see taglib doc)
   7.107 +- logging is now handled by Apache's commons.logging
   7.108 +- API change to DatasetProducer to let the producer decide about 
   7.109 +  data caching
   7.110 +- added a configuration paramter overliburl to define the overlib.js destination relative to webapp URL
   7.111 +- removed expires attributes from taglibrary as they are not used anymore
   7.112 +- fixed configuration bugs
   7.113 +- fixed caching bugs by changing caching to be session based
   7.114 +- fixed memory leaks
   7.115 +- fixed synchronization issue when using more than one timeseries chart on a page
   7.116 +- fixed incompatibilities between tag attribute types and setter methods
   7.117 +
   7.118 +Realease Notes for Version 0.8.9
   7.119 +--------------------------------
   7.120 +- fixed the "null is not a valid chart id" bug
   7.121 +- fixed browser detection bug (729378)
   7.122 +- Socket write detection bug (729384,729501,730490)
   7.123 +- fixed synchronization issues
   7.124 +- removed console output(717861)
   7.125 +
   7.126 +Realease Notes for Version 0.8.8
   7.127 +--------------------------------
   7.128 +- fixed bug: missing closing bracket in <img> tags
   7.129 +
   7.130 +Realease Notes for Version 0.8.7
   7.131 +--------------------------------
   7.132 +- bundled with JFreeCharts 0.9.4
   7.133 +
   7.134 +Realease Notes for Version 0.8.6
   7.135 +--------------------------------
   7.136 +- fixed a bug which caused a ConfigurationException if the Cewolf servlet
   7.137 +  was not loaded on startup
   7.138 +
   7.139 +Realease Notes for Version 0.8.5
   7.140 +--------------------------------
   7.141 +- fixed the server side image problem which occured on some machines
   7.142 +
   7.143 +Realease Notes for Version 0.8.4
   7.144 +--------------------------------
   7.145 +- now runs on resin-2.1.5
   7.146 +
   7.147 +Realease Notes for Version 0.8.3
   7.148 +--------------------------------
   7.149 +- added some header information in HTTP header to improve performance
   7.150 +- added a debug paramter to servlet to turn on and of debugging
   7.151 +
   7.152 +Realease Notes for Version 0.8.2
   7.153 +--------------------------------
   7.154 +- useful image caching with cleanup mechanisms to avoid running out of memory
   7.155 +- bugfix in image key computing
   7.156 +- faster caching and key generation
   7.157 +- init parameters for cewolf servlet to manipulate caching (see example etc/web.xml)
   7.158 +
   7.159 +Realease Notes for Version 0.8.1
   7.160 +--------------------------------
   7.161 +- Removed dashes from tag names to make them work in a JSP 1.1 container
   7.162 +  gradient-paint -> gradientpaint
   7.163 +  texture-paint -> texturepaint
   7.164 +  color-paint -> colorpaint
   7.165 +- Improved compatibility. Tested on
   7.166 +  - Tomcat 3.3.1
   7.167 +  - Tomcat 4.0
   7.168 +  - Tomcat 4.1.10
   7.169 +  - JRun 4.0.SP1 beta
   7.170 +- some bug fixes in tag handlers
   7.171 +
   7.172 +Realease Notes for Version 0.8
   7.173 +------------------------------
   7.174 +- ChartPostProcessor process method signature now has a third parameter with the
   7.175 +  current dataset of the rendered chart to enhance capabilities of processing
   7.176 +- <chart> tag does not render a image anymore. <chart> is only used to define
   7.177 +  a chart instance initially inside a JSP. The rendering of the chart image is
   7.178 +  performed by the <img> tag which is passed the chart id as an attribute.
   7.179 +- image maps and tooltips implemented (tested on IE 5.5 and Mozilla 1.1)
   7.180 +- added tag <imgurl> which can be used as the src attribute of an HTML img tag
   7.181 +- obsolete <panel> tag has been removed all attributes can be set directly to
   7.182 +  the <chart> tag now
   7.183 +- server side caching of images to gain performance blast when requesting the same
   7.184 +  chart again
   7.185 +- many redesigns
   7.186 +- polished example webapp
   7.187 +- fixed a bug which prevented reloading of a page
   7.188 +- fixed a bug which let the tag produce same keys for different charts whan tags
   7.189 +  are pooled
   7.190 +
   7.191 +Known issues:
   7.192 +- tooltips for pie3d charts are not positioned correctly 
   7.193 +
   7.194 +Realease Notes for Version 0.7.1
   7.195 +--------------------------------
   7.196 +- fixed a typo in TLD (boder instead of border in two tags)
   7.197 +- removed "antialias" attribute in TLD for tag legend as it is not implemented
   7.198 +  yet
   7.199 +
   7.200 +Realease Notes for Version 0.7
   7.201 +------------------------------
   7.202 +- unlimited customization of generated charts possible through additional
   7.203 +  ChartPostprocessor objects. See <chartpostprocessor> documentation!
   7.204 +- changed signature of DatasetProducer. Params are now passed as Map instead
   7.205 +  HashMap
   7.206 +- new <legend> tag to render the chart's legend separately
   7.207 +- added "legend" and "legendanchor" attribute to panel and chart tag to swith
   7.208 +  on/off and manipulate legend display
   7.209 +- new tag <legend> allows the separate rendering of the chart's legend somewhere
   7.210 +  in the JSP
   7.211 +- <chart> and <legend> tag now support all HTML 4.0 img tag attributes
   7.212 +- rendering servlet now renders an exception into the delivered image if one is
   7.213 +  raised when trying to render the chart
   7.214 +- removed obsolete example page producerparams.jsp (view testpage.jsp instead)
   7.215 +- the example.war binary is now distributed separately
   7.216 +- example web.xml no has an url-mapping to work in more J2EE containers
   7.217 +- better usage of JSP callbacks by overriding the release() method in tags
   7.218 +- enhanced test page for JSP 1.1 and JSP 1.2 containers
   7.219 +- enhanced image loading performance
   7.220 +- redesigned, optimized and simplified some issues
   7.221 +- some javadocs
   7.222 +
   7.223 +Realease Notes for Version 0.6.2
   7.224 +--------------------------------
   7.225 +- fixed a bug in testpage.jsp and testpage-1.1.jsp which closed the panel tag twice
   7.226 +
   7.227 +Realease Notes for Version 0.6.1
   7.228 +--------------------------------
   7.229 +- fixed a bug in the tag library descriptor which defined the background 
   7.230 +  attribute of tag chart as a float
   7.231 +
   7.232 +Realease Notes for Version 0.6
   7.233 +------------------------------
   7.234 +- added tags <color-paint>, <gradient-paint> and <texture-paint>
   7.235 +  for background paints of chart panel
   7.236 +- some refactorings in tag lib implementation
   7.237 +- testpage enhanced
   7.238 +
   7.239 +Realease Notes for Version 0.5.1
   7.240 +--------------------------------
   7.241 +- fixed a bug which prevented the reuse of the chart tag instance 
   7.242 +  by the container
   7.243 +
   7.244 +Realease Notes for Version 0.5
   7.245 +------------------------------
   7.246 +- the data tag now embeds a producer tag, future releases will have other
   7.247 +  possibilities to provide data (e.g. SQL)
   7.248 +- added support for Pie3DChart
   7.249 +- added <panel> tag to be embedded in <chart> tag
   7.250 +- embedded <panel> tag attributes override coressponing parent tags
   7.251 +  attributes
   7.252 +- <chart> tag now extends <panel> tag
   7.253 +- changed value type of <param> tag to java.io.Serilizable
   7.254 +- added antialias support
   7.255 +- added tag library documentation
   7.256 +- added some javadocs
   7.257 +- added some example JSPs
   7.258 +
   7.259 +Realease Notes for Version 0.4
   7.260 +------------------------------
   7.261 +- replaced TagExtraInfo with TagLibraryValidator
   7.262 +- moved .tld file to WEB-INF in sample WAR due to problems in some Tomcat 
   7.263 +  environments
   7.264 +- DatasetProducer now takes a HashMap containing additional parameters for
   7.265 +  dataset production
   7.266 +- Added tutorial to docs
   7.267 +- some additional JavaDocs
   7.268 +
   7.269 +Realease Notes for Version 0.3
   7.270 +------------------------------
   7.271 +- included TagExtraInfo to check charttype at JSP compile time
   7.272 +- added documentation
   7.273 +- some redesigns
   7.274 +
   7.275 +Realease Notes for Version 0.2
   7.276 +------------------------------
   7.277 +- updated to JFreeChart 0.9.2
   7.278 +- all 20 chart types from JFreeChart's ChartFactory are supported
   7.279 +- some redesigns
   7.280 +- some javadocs
   7.281 +
   7.282 +
   7.283 +Realease Notes for Version 0.1.1
   7.284 +--------------------------------
   7.285 +This is the first alpha-release of Cewolf.
   7.286 +It is useable already but there are not many possibilities to change the view of 
   7.287 +the current charts.
   7.288 +The documentation is very less.
   7.289 +Not all types of charts are supported.
   7.290 \ No newline at end of file
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/java/cewolf-1.0/etc/cewolf-1.1.tld	Sat Feb 28 21:31:02 2009 +0100
     8.3 @@ -0,0 +1,1234 @@
     8.4 +<?xml version="1.0" encoding="ISO-8859-1"?>
     8.5 +<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
     8.6 +
     8.7 +<taglib>
     8.8 +<tlib-version>0.9.3</tlib-version>
     8.9 +<jsp-version>1.2</jsp-version>
    8.10 +<short-name>Cewolf Tag Library</short-name>
    8.11 +<uri>http://cewolf.sourceforge.net/taglib/cewolf.tld</uri>
    8.12 +<display-name>Cewolf Tag Library</display-name>
    8.13 +<description>This tag library is designed to describe charts of all kinds.</description>
    8.14 +<tag>
    8.15 +    <name>plot</name>
    8.16 +    <tag-class>de.laures.cewolf.taglib.tags.PlotTag</tag-class>
    8.17 +    <body-content>JSP</body-content>
    8.18 +    <description>
    8.19 +    	The plot tag is nested inside a complex chart to define a nested or layerd plot instance.
    8.20 +        @required-child data
    8.21 +    </description>
    8.22 +    <attribute>
    8.23 +        <name>type</name>
    8.24 +        <required>true</required>
    8.25 +        <rtexprvalue>true</rtexprvalue>
    8.26 +        <description>
    8.27 +        	The type  of the plot. One of xyarea, xyline, xyshapesandlines ,
    8.28 +			scatter, xyverticalbar, step, candlestick, highlow, signal,
    8.29 +			verticlebar, area, line, shapesandlines
    8.30 +	    </description>
    8.31 +    </attribute>
    8.32 +    <attribute>
    8.33 +        <name>xaxislabel</name>
    8.34 +        <required>false</required>
    8.35 +        <rtexprvalue>true</rtexprvalue>
    8.36 +        <description>
    8.37 +            Title of the plot's x-axis. This attributes is
    8.38 +            only used for horizontally combined charts.
    8.39 +        </description>
    8.40 +    </attribute>
    8.41 +    <attribute>
    8.42 +        <name>yaxislabel</name>
    8.43 +        <required>false</required>
    8.44 +        <rtexprvalue>true</rtexprvalue>
    8.45 +        <description>
    8.46 +            Title of the plot's y-axis. This attributes is
    8.47 +            only used for vertically combined charts.
    8.48 +        </description>
    8.49 +    </attribute>
    8.50 +</tag>
    8.51 +<tag>
    8.52 +    <name>img</name>
    8.53 +    <tag-class>de.laures.cewolf.taglib.tags.ChartImgTag</tag-class>
    8.54 +    <body-content>JSP</body-content>
    8.55 +    <description>
    8.56 +    	This tag is a specialized HTML img tag. It renders the chart
    8.57 +    	which has been specified by a &lt;chart&gt; tag in the same page.
    8.58 +      @optional-child map
    8.59 +    </description>
    8.60 +    <attribute>
    8.61 +        <name>renderer</name>
    8.62 +        <required>true</required>
    8.63 +        <rtexprvalue>true</rtexprvalue>
    8.64 +        <description>
    8.65 +            Path to rendering servlet. Any path that starts with a '/' is assumed to refer to a resource relative to web application root. Otherwise, the path is assumed to refer to resource relative to the current page directory.
    8.66 +        </description>
    8.67 +    </attribute>
    8.68 +    <attribute>
    8.69 +        <name>chartid</name>
    8.70 +        <required>true</required>
    8.71 +        <rtexprvalue>true</rtexprvalue>
    8.72 +        <description>
    8.73 +        	The id of the chart to render.
    8.74 +        </description>
    8.75 +    </attribute>
    8.76 +    <attribute>
    8.77 +        <name>width</name>
    8.78 +        <required>true</required>
    8.79 +        <rtexprvalue>true</rtexprvalue>
    8.80 +        <description>
    8.81 +            Width of the rendered chart image in pixel.
    8.82 +        </description>
    8.83 +    </attribute>
    8.84 +    <attribute>
    8.85 +        <name>height</name>
    8.86 +        <required>true</required>
    8.87 +        <rtexprvalue>true</rtexprvalue>
    8.88 +        <description>
    8.89 +            Height of the rendered chart image in pixel.
    8.90 +        </description>
    8.91 +    </attribute>
    8.92 +    <attribute>
    8.93 +        <name>mime</name>
    8.94 +        <required>false</required>
    8.95 +        <rtexprvalue>true</rtexprvalue>
    8.96 +        <description>
    8.97 +            The MIME type of the image. Currently image/png (default) and image/svg are supported.
    8.98 +            @default image/png
    8.99 +        </description>
   8.100 +    </attribute>
   8.101 +    <attribute>
   8.102 +        <name>alt</name>
   8.103 +        <required>false</required>
   8.104 +        <rtexprvalue>true</rtexprvalue>
   8.105 +        <description>
   8.106 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.107 +        </description>
   8.108 +    </attribute>
   8.109 +        <attribute>
   8.110 +        <name>timeout</name>
   8.111 +        <required>false</required>
   8.112 +        <rtexprvalue>true</rtexprvalue>
   8.113 +        <description>
   8.114 +           Sets the timeout value used in the LongTermSessionStorage obj. Value is in seconds.
   8.115 +        </description>
   8.116 +    </attribute>
   8.117 +    <attribute>
   8.118 +        <name>hspace</name>
   8.119 +        <required>false</required>
   8.120 +        <rtexprvalue>true</rtexprvalue>
   8.121 +        <description>
   8.122 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.123 +        </description>
   8.124 +    </attribute>
   8.125 +    <attribute>
   8.126 +        <name>vspace</name>
   8.127 +        <required>false</required>
   8.128 +        <rtexprvalue>true</rtexprvalue>
   8.129 +        <description>
   8.130 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.131 +        </description>
   8.132 +    </attribute>
   8.133 +    <attribute>
   8.134 +        <name>align</name>
   8.135 +        <required>false</required>
   8.136 +        <rtexprvalue>true</rtexprvalue>
   8.137 +        <description>
   8.138 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.139 +        </description>
   8.140 +    </attribute>
   8.141 +    <attribute>
   8.142 +        <name>border</name>
   8.143 +        <required>false</required>
   8.144 +        <rtexprvalue>true</rtexprvalue>
   8.145 +        <description>
   8.146 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.147 +        </description>
   8.148 +    </attribute>
   8.149 +    <attribute>
   8.150 +        <name>ismap</name>
   8.151 +        <required>false</required>
   8.152 +        <rtexprvalue>true</rtexprvalue>
   8.153 +        <description>
   8.154 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.155 +        </description>
   8.156 +    </attribute>
   8.157 +    <attribute>
   8.158 +        <name>longdesc</name>
   8.159 +        <required>false</required>
   8.160 +        <rtexprvalue>true</rtexprvalue>
   8.161 +        <description>
   8.162 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.163 +        </description>
   8.164 +    </attribute>
   8.165 +    <attribute>
   8.166 +        <name>usemap</name>
   8.167 +        <required>false</required>
   8.168 +        <rtexprvalue>true</rtexprvalue>
   8.169 +        <description>
   8.170 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.171 +        </description>
   8.172 +    </attribute>
   8.173 +    <attribute>
   8.174 +        <name>class</name>
   8.175 +        <required>false</required>
   8.176 +        <rtexprvalue>true</rtexprvalue>
   8.177 +        <description>
   8.178 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.179 +        </description>
   8.180 +    </attribute>
   8.181 +    <attribute>
   8.182 +        <name>dir</name>
   8.183 +        <required>false</required>
   8.184 +        <rtexprvalue>true</rtexprvalue>
   8.185 +        <description>
   8.186 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.187 +        </description>
   8.188 +    </attribute>
   8.189 +    <attribute>
   8.190 +        <name>lang</name>
   8.191 +        <required>false</required>
   8.192 +        <rtexprvalue>true</rtexprvalue>
   8.193 +        <description>
   8.194 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.195 +        </description>
   8.196 +    </attribute>
   8.197 +    <attribute>
   8.198 +        <name>onclick</name>
   8.199 +        <required>false</required>
   8.200 +        <rtexprvalue>true</rtexprvalue>
   8.201 +        <description>
   8.202 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.203 +        </description>
   8.204 +    </attribute>
   8.205 +    <attribute>
   8.206 +        <name>ondbclick</name>
   8.207 +        <required>false</required>
   8.208 +        <rtexprvalue>true</rtexprvalue>
   8.209 +        <description>
   8.210 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.211 +        </description>
   8.212 +    </attribute>
   8.213 +    <attribute>
   8.214 +        <name>onkeydown</name>
   8.215 +        <required>false</required>
   8.216 +        <rtexprvalue>true</rtexprvalue>
   8.217 +        <description>
   8.218 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.219 +        </description>
   8.220 +    </attribute>
   8.221 +    <attribute>
   8.222 +        <name>onkeypress</name>
   8.223 +        <required>false</required>
   8.224 +        <rtexprvalue>true</rtexprvalue>
   8.225 +        <description>
   8.226 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.227 +        </description>
   8.228 +    </attribute>
   8.229 +    <attribute>
   8.230 +        <name>onkeyup</name>
   8.231 +        <required>false</required>
   8.232 +        <rtexprvalue>true</rtexprvalue>
   8.233 +        <description>
   8.234 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.235 +        </description>
   8.236 +    </attribute>
   8.237 +    <attribute>
   8.238 +        <name>onmousedown</name>
   8.239 +        <required>false</required>
   8.240 +        <rtexprvalue>true</rtexprvalue>
   8.241 +        <description>
   8.242 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.243 +        </description>
   8.244 +    </attribute>
   8.245 +    <attribute>
   8.246 +        <name>onmousemove</name>
   8.247 +        <required>false</required>
   8.248 +        <rtexprvalue>true</rtexprvalue>
   8.249 +        <description>
   8.250 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.251 +        </description>
   8.252 +    </attribute>
   8.253 +    <attribute>
   8.254 +        <name>onmouseout</name>
   8.255 +        <required>false</required>
   8.256 +        <rtexprvalue>true</rtexprvalue>
   8.257 +        <description>
   8.258 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.259 +        </description>
   8.260 +    </attribute>
   8.261 +    <attribute>
   8.262 +        <name>onmouseover</name>
   8.263 +        <required>false</required>
   8.264 +        <rtexprvalue>true</rtexprvalue>
   8.265 +        <description>
   8.266 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.267 +        </description>
   8.268 +    </attribute>
   8.269 +    <attribute>
   8.270 +        <name>onmouseup</name>
   8.271 +        <required>false</required>
   8.272 +        <rtexprvalue>true</rtexprvalue>
   8.273 +        <description>
   8.274 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.275 +        </description>
   8.276 +    </attribute>
   8.277 +    <attribute>
   8.278 +        <name>style</name>
   8.279 +        <required>false</required>
   8.280 +        <rtexprvalue>true</rtexprvalue>
   8.281 +        <description>
   8.282 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.283 +        </description>
   8.284 +    </attribute>
   8.285 +    <attribute>
   8.286 +        <name>htmltitle</name>
   8.287 +        <required>false</required>
   8.288 +        <rtexprvalue>true</rtexprvalue>
   8.289 +        <description>
   8.290 +           Corresponds to appropriate HMTL &lt;img&gt; title attribute.
   8.291 +        </description>
   8.292 +    </attribute>
   8.293 +    <attribute>
   8.294 +        <name>forceSessionId</name>
   8.295 +        <required>false</required>
   8.296 +        <rtexprvalue>true</rtexprvalue>
   8.297 +        <description>
   8.298 +           Add JSession id.
   8.299 +        </description>
   8.300 +    </attribute>
   8.301 +    <attribute>
   8.302 +        <name>removeAfterRender</name>
   8.303 +        <required>false</required>
   8.304 +        <rtexprvalue>true</rtexprvalue>
   8.305 +        <description>
   8.306 +           Remove image after rendering (defaults to false).
   8.307 +        </description>
   8.308 +    </attribute>
   8.309 +</tag>
   8.310 +<tag>
   8.311 +    <name>imgurl</name>
   8.312 +    <tag-class>de.laures.cewolf.taglib.tags.ChartImgURLTag</tag-class>
   8.313 +    <tei-class>de.laures.cewolf.taglib.tags.ChartImgURLTagEI</tei-class>
   8.314 +    <description>
   8.315 +    	This tag can be used as the src attribute of a HTML img tag. E.g.: 
   8.316 +    	&lt;img src='&lt;imgurl chartid="foobar" renderer="cewolf" width="100" height="100"/&gt;'&gt;
   8.317 +    	If the var attribute is used the URL is exposed as a page attribute of type String.
   8.318 +        @extends img
   8.319 +    </description>
   8.320 +    <attribute>
   8.321 +        <name>var</name>
   8.322 +        <required>false</required>
   8.323 +        <rtexprvalue>true</rtexprvalue>
   8.324 +        <description>
   8.325 +            Name of the page scope attribute to hold the URL. If not specified the URL is printed to the page outstream.
   8.326 +        </description>
   8.327 +    </attribute>
   8.328 +    <attribute>
   8.329 +        <name>renderer</name>
   8.330 +        <required>true</required>
   8.331 +        <rtexprvalue>true</rtexprvalue>
   8.332 +        <description>
   8.333 +            Path to rendering servlet. Any path that starts with a '/' is assumed to refer to a resource relative to web application root. Otherwise, the path is assumed to refer to resource relative to the current page directory.
   8.334 +        </description>
   8.335 +    </attribute>
   8.336 +    <attribute>
   8.337 +        <name>chartid</name>
   8.338 +        <required>true</required>
   8.339 +        <rtexprvalue>true</rtexprvalue>
   8.340 +        <description>
   8.341 +        	The id of the chart to render.
   8.342 +        </description>
   8.343 +    </attribute>
   8.344 +    <attribute>
   8.345 +        <name>width</name>
   8.346 +        <required>true</required>
   8.347 +        <rtexprvalue>true</rtexprvalue>
   8.348 +        <description>
   8.349 +            Width of the rendered chart image in pixel.
   8.350 +        </description>
   8.351 +    </attribute>
   8.352 +    <attribute>
   8.353 +        <name>height</name>
   8.354 +        <required>true</required>
   8.355 +        <rtexprvalue>true</rtexprvalue>
   8.356 +        <description>
   8.357 +            Height of the rendered chart image in pixel.
   8.358 +        </description>
   8.359 +    </attribute>
   8.360 +    <attribute>
   8.361 +        <name>mime</name>
   8.362 +        <required>false</required>
   8.363 +        <rtexprvalue>true</rtexprvalue>
   8.364 +        <description>
   8.365 +            The MIME type of the image. Currently image/png (default) and image/svg are supported.
   8.366 +            @default image/png
   8.367 +        </description>
   8.368 +    </attribute>
   8.369 +</tag>
   8.370 +<tag>
   8.371 +    <name>chart</name>
   8.372 +    <tag-class>de.laures.cewolf.taglib.tags.SimpleChartTag</tag-class>
   8.373 +    <description>
   8.374 +        Root tag of a chart description.
   8.375 +        @root
   8.376 +        @required-child data
   8.377 +        @optional-child chartpostprocessor
   8.378 +    </description>
   8.379 +    <attribute>
   8.380 +        <name>id</name>
   8.381 +        <required>true</required>
   8.382 +        <rtexprvalue>true</rtexprvalue>
   8.383 +        <description>
   8.384 +            ID under which the chart description bean will be stored in the
   8.385 +            page to be found by the img tag. Beware of using an
   8.386 +            ID which is not yet used for other beans in the page to avoid
   8.387 +            compile errors.
   8.388 +        </description>
   8.389 +    </attribute>
   8.390 +    <attribute>
   8.391 +        <name>type</name>
   8.392 +        <required>true</required>
   8.393 +        <rtexprvalue>true</rtexprvalue>
   8.394 +        <description>
   8.395 +            Type of the chart. One of area, areaxy, horizontalbar, horizontalbar3d,
   8.396 +            line, pie, scatter, stackedarea, stackedhorizontalbar, stackedverticalbar, 
   8.397 +            stackedverticalbar3d, timeseries, verticalbar, verticalbar3d, xy,
   8.398 +            candlestick, highlow, gantt, wind, signal, verticalxybar, pie3d, meter
   8.399 +        </description>
   8.400 +    </attribute>
   8.401 +    <attribute>
   8.402 +        <name>title</name>
   8.403 +        <required>false</required>
   8.404 +        <rtexprvalue>true</rtexprvalue>
   8.405 +        <description>
   8.406 +            Title of the chart which is displayed on the chart panel
   8.407 +            above the plot pane.
   8.408 +        </description>
   8.409 +    </attribute>
   8.410 +    <attribute>
   8.411 +        <name>xaxislabel</name>
   8.412 +        <required>false</required>
   8.413 +        <rtexprvalue>true</rtexprvalue>
   8.414 +        <description>
   8.415 +            Title of the chart's x-axis. This attributes is
   8.416 +            ignored if the type attribute of the parent chart tag is one
   8.417 +            of pie3d or pie.
   8.418 +        </description>
   8.419 +    </attribute>
   8.420 +    <attribute>
   8.421 +        <name>yaxislabel</name>
   8.422 +        <required>false</required>
   8.423 +        <rtexprvalue>true</rtexprvalue>
   8.424 +        <description>
   8.425 +            Title of the chart's y-axis. This attributes is
   8.426 +            ignored if the type attribute of the parent chart tag is one
   8.427 +            of pie3d or pie.
   8.428 +        </description>
   8.429 +    </attribute>
   8.430 +    <attribute>
   8.431 +        <name>background</name>
   8.432 +        <required>false</required>
   8.433 +        <rtexprvalue>true</rtexprvalue>
   8.434 +        <description>
   8.435 +            Background image of the chart panel. The value of this 
   8.436 +            attribute is the filename of a graphics file relative to the web
   8.437 +            application's root directory (e.g. /WEB-INF/img/bg.jpg).
   8.438 +            The image must be loadable by the default java.awt.Toolkit of the
   8.439 +            servlet container's JVM.
   8.440 +        </description>
   8.441 +    </attribute>
   8.442 +    <attribute>
   8.443 +        <name>backgroundimagealpha</name>
   8.444 +        <required>false</required>
   8.445 +        <rtexprvalue>true</rtexprvalue>
   8.446 +        <type>java.lang.Float</type>
   8.447 +        <description>
   8.448 +            Chart's backgound alpha blending value as a float. Value ranges
   8.449 +            from 0.0 to 1.0.
   8.450 +            @default 0.0
   8.451 +            @overrides /chart[backgroundimagealpha]
   8.452 +        </description>
   8.453 +    </attribute>
   8.454 +    <attribute>
   8.455 +        <name>antialias</name>
   8.456 +        <required>false</required>
   8.457 +        <rtexprvalue>true</rtexprvalue>
   8.458 +        <description>
   8.459 +            Antialiased rendering of the chart.
   8.460 +            @default true
   8.461 +            @overrides /chart[backgroundimagealpha]
   8.462 +        </description>
   8.463 +    </attribute>
   8.464 +    <attribute>
   8.465 +        <name>showlegend</name>
   8.466 +        <required>false</required>
   8.467 +        <rtexprvalue>true</rtexprvalue>
   8.468 +        <description>
   8.469 +           Boolean value to switch on or off the legend display inside of this panel.
   8.470 +           @default true
   8.471 +        </description>
   8.472 +    </attribute>
   8.473 +    <attribute>
   8.474 +        <name>legendanchor</name>
   8.475 +        <required>false</required>
   8.476 +        <rtexprvalue>true</rtexprvalue>
   8.477 +        <description>
   8.478 +            Sets the anchor of the legend inside of the panel. Possible values
   8.479 +            are 'north', 'south', 'west', 'east'.
   8.480 +            Ignored if showlegned is 'false'.
   8.481 +            @default 'south'
   8.482 +        </description>
   8.483 +    </attribute>
   8.484 +</tag>
   8.485 +<tag>
   8.486 +    <name>overlaidchart</name>
   8.487 +    <tag-class>de.laures.cewolf.taglib.tags.OverlaidChartTag</tag-class>
   8.488 +    <description>
   8.489 +        Root tag of a overlaid-chart description.
   8.490 +        @root
   8.491 +        @required-child data
   8.492 +        @optional-child chartpostprocessor
   8.493 +    </description>
   8.494 +    <attribute>
   8.495 +        <name>id</name>
   8.496 +        <required>true</required>
   8.497 +        <rtexprvalue>true</rtexprvalue>
   8.498 +        <description>
   8.499 +            ID under which the chart description bean will be stored in the
   8.500 +            page to be found by the img tag. Beware of using an
   8.501 +            ID which is not yet used for other beans in the page to avoid
   8.502 +            compile errors.
   8.503 +        </description>
   8.504 +    </attribute>
   8.505 +    <attribute>
   8.506 +        <name>type</name>
   8.507 +        <required>true</required>
   8.508 +        <rtexprvalue>true</rtexprvalue>
   8.509 +        <description>
   8.510 +            Type of the chart. In this version only overlaidxy is supported.
   8.511 +        </description>
   8.512 +    </attribute>
   8.513 +    <attribute>
   8.514 +        <name>title</name>
   8.515 +        <required>false</required>
   8.516 +        <rtexprvalue>true</rtexprvalue>
   8.517 +        <description>
   8.518 +            Title of the chart which is displayed on the chart panel
   8.519 +            above the plot pane.
   8.520 +        </description>
   8.521 +    </attribute>
   8.522 +    <attribute>
   8.523 +        <name>xaxistype</name>
   8.524 +        <required>true</required>
   8.525 +        <rtexprvalue>true</rtexprvalue>
   8.526 +        <description>
   8.527 +        	Type of the domain axis. Possible values: date, number
   8.528 +        </description>
   8.529 +    </attribute>
   8.530 +    <attribute>
   8.531 +        <name>xaxislabel</name>
   8.532 +        <required>false</required>
   8.533 +        <rtexprvalue>true</rtexprvalue>
   8.534 +        <description>
   8.535 +            Title of the chart's x-axis. This attributes is
   8.536 +            ignored if the type attribute of the parent chart tag is one
   8.537 +            of pie3d or pie.
   8.538 +        </description>
   8.539 +    </attribute>
   8.540 +    <attribute>
   8.541 +        <name>yaxistype</name>
   8.542 +        <required>false</required>
   8.543 +        <rtexprvalue>true</rtexprvalue>
   8.544 +        <description>
   8.545 +        	Type of the range axis. Possible values: date, number
   8.546 +        </description>
   8.547 +    </attribute>
   8.548 +    <attribute>
   8.549 +        <name>yaxislabel</name>
   8.550 +        <required>false</required>
   8.551 +        <rtexprvalue>true</rtexprvalue>
   8.552 +        <description>
   8.553 +            Title of the chart's y-axis. This attributes is
   8.554 +            ignored if the type attribute of the parent chart tag is one
   8.555 +            of pie3d or pie.
   8.556 +        </description>
   8.557 +    </attribute>
   8.558 +    <attribute>
   8.559 +        <name>background</name>
   8.560 +        <required>false</required>
   8.561 +        <rtexprvalue>true</rtexprvalue>
   8.562 +        <description>
   8.563 +            Background image of the chart panel. The value of this 
   8.564 +            attribute is the filename of a graphics file relative to the web
   8.565 +            application's root directory (e.g. /WEB-INF/img/bg.jpg).
   8.566 +            The image must be loadable by the default java.awt.Toolkit of the
   8.567 +            servlet container's JVM.
   8.568 +        </description>
   8.569 +    </attribute>
   8.570 +    <attribute>
   8.571 +        <name>backgroundimagealpha</name>
   8.572 +        <required>false</required>
   8.573 +        <rtexprvalue>true</rtexprvalue>
   8.574 +        <type>java.lang.Float</type>
   8.575 +        <description>
   8.576 +            Chart's backgound alpha blending value as a float. Value ranges
   8.577 +            from 0.0 to 1.0.
   8.578 +            @default 0.0
   8.579 +            @overrides /chart[backgroundimagealpha]
   8.580 +        </description>
   8.581 +    </attribute>
   8.582 +    <attribute>
   8.583 +        <name>antialias</name>
   8.584 +        <required>false</required>
   8.585 +        <rtexprvalue>true</rtexprvalue>
   8.586 +        <description>
   8.587 +            Antialiased rendering of the chart.
   8.588 +            @default true
   8.589 +            @overrides /chart[backgroundimagealpha]
   8.590 +        </description>
   8.591 +    </attribute>
   8.592 +    <attribute>
   8.593 +        <name>showlegend</name>
   8.594 +        <required>false</required>
   8.595 +        <rtexprvalue>true</rtexprvalue>
   8.596 +        <description>
   8.597 +           Boolean value to switch on or off the legend display inside of this panel.
   8.598 +           @default true
   8.599 +        </description>
   8.600 +    </attribute>
   8.601 +    <attribute>
   8.602 +        <name>legendanchor</name>
   8.603 +        <required>false</required>
   8.604 +        <rtexprvalue>true</rtexprvalue>
   8.605 +        <description>
   8.606 +            Sets the anchor of the legend inside of the panel. Possible values
   8.607 +            are 'north', 'south', 'west', 'east'.
   8.608 +            Ignored if showlegned is 'false'.
   8.609 +            @default 'south'
   8.610 +        </description>
   8.611 +    </attribute>
   8.612 +</tag>
   8.613 +<tag>
   8.614 +    <name>combinedchart</name>
   8.615 +    <tag-class>de.laures.cewolf.taglib.tags.CombinedChartTag</tag-class>
   8.616 +    <description>
   8.617 +        Root tag of a combined-chart description.
   8.618 +        @root
   8.619 +        @required-child plot
   8.620 +        @optional-child chartpostprocessor
   8.621 +    </description>
   8.622 +    <attribute>
   8.623 +        <name>id</name>
   8.624 +        <required>true</required>
   8.625 +        <rtexprvalue>true</rtexprvalue>
   8.626 +        <description>
   8.627 +            ID under which the chart description bean will be stored in the
   8.628 +            page to be found by the img tag. Beware of using an
   8.629 +            ID which is not yet used for other beans in the page to avoid
   8.630 +            compile errors.
   8.631 +        </description>
   8.632 +    </attribute>
   8.633 +    <attribute>
   8.634 +        <name>type</name>
   8.635 +        <required>true</required>
   8.636 +        <rtexprvalue>true</rtexprvalue>
   8.637 +        <description>
   8.638 +            Type of the chart. One of combinedxy
   8.639 +        </description>
   8.640 +    </attribute>
   8.641 +    <attribute>
   8.642 +        <name>layout</name>
   8.643 +        <required>true</required>
   8.644 +        <rtexprvalue>true</rtexprvalue>
   8.645 +        <description>
   8.646 +            Layout of the chart. Either vertical or horizontal
   8.647 +        </description>
   8.648 +    </attribute>
   8.649 +    <attribute>
   8.650 +        <name>title</name>
   8.651 +        <required>false</required>
   8.652 +        <rtexprvalue>true</rtexprvalue>
   8.653 +        <description>
   8.654 +            Title of the chart which is displayed on the chart panel
   8.655 +            above the plot pane.
   8.656 +        </description>
   8.657 +    </attribute>
   8.658 +    <attribute>
   8.659 +        <name>xaxislabel</name>
   8.660 +        <required>false</required>
   8.661 +        <rtexprvalue>true</rtexprvalue>
   8.662 +        <description>
   8.663 +            Title of the chart's x-axis. This attributes is
   8.664 +            ignored if the type attribute of the parent chart tag is one
   8.665 +            of pie3d or pie.
   8.666 +        </description>
   8.667 +    </attribute>
   8.668 +    <attribute>
   8.669 +        <name>yaxislabel</name>
   8.670 +        <required>false</required>
   8.671 +        <rtexprvalue>true</rtexprvalue>
   8.672 +        <description>
   8.673 +            Title of the chart's y-axis. This attributes is
   8.674 +            ignored if the type attribute of the parent chart tag is one
   8.675 +            of pie3d or pie.
   8.676 +        </description>
   8.677 +    </attribute>
   8.678 +    <attribute>
   8.679 +        <name>background</name>
   8.680 +        <required>false</required>
   8.681 +        <rtexprvalue>true</rtexprvalue>
   8.682 +        <description>
   8.683 +            Background image of the chart panel. The value of this
   8.684 +            attribute is the filename of a graphics file relative to the web
   8.685 +            application's root directory (e.g. /WEB-INF/img/bg.jpg).
   8.686 +            The image must be loadable by the default java.awt.Toolkit of the
   8.687 +            servlet container's JVM.
   8.688 +        </description>
   8.689 +    </attribute>
   8.690 +    <attribute>
   8.691 +        <name>backgroundimagealpha</name>
   8.692 +        <required>false</required>
   8.693 +        <rtexprvalue>true</rtexprvalue>
   8.694 +        <type>java.lang.Float</type>
   8.695 +        <description>
   8.696 +            Chart's backgound alpha blending value as a float. Value ranges
   8.697 +            from 0.0 to 1.0.
   8.698 +            @default 0.0
   8.699 +            @overrides /chart[backgroundimagealpha]
   8.700 +        </description>
   8.701 +    </attribute>
   8.702 +    <attribute>
   8.703 +        <name>antialias</name>
   8.704 +        <required>false</required>
   8.705 +        <rtexprvalue>true</rtexprvalue>
   8.706 +        <description>
   8.707 +            Antialiased rendering of the chart.
   8.708 +            @default true
   8.709 +            @overrides /chart[backgroundimagealpha]
   8.710 +        </description>
   8.711 +    </attribute>
   8.712 +    <attribute>
   8.713 +        <name>showlegend</name>
   8.714 +        <required>false</required>
   8.715 +        <rtexprvalue>true</rtexprvalue>
   8.716 +        <description>
   8.717 +           Boolean value to switch on or off the legend display inside of this panel.
   8.718 +           @default true
   8.719 +        </description>
   8.720 +    </attribute>
   8.721 +    <attribute>
   8.722 +        <name>legendanchor</name>
   8.723 +        <required>false</required>
   8.724 +        <rtexprvalue>true</rtexprvalue>
   8.725 +        <description>
   8.726 +            Sets the anchor of the legend inside of the panel. Possible values
   8.727 +            are 'north', 'south', 'west', 'east'.
   8.728 +            Ignored if showlegned is 'false'.
   8.729 +            @default 'south'
   8.730 +        </description>
   8.731 +    </attribute>
   8.732 +</tag>
   8.733 +<tag>
   8.734 +    <name>legend</name>
   8.735 +    <tag-class>de.laures.cewolf.taglib.tags.LegendTag</tag-class>
   8.736 +    <description>
   8.737 +       This tag is used to render the legend of a chart in a separate image.
   8.738 +       It assumes that somewhere else in the JSP a chart tag defines a chart
   8.739 +       with the same ID as this legend tag.
   8.740 +    </description>
   8.741 +    <attribute>
   8.742 +        <name>renderer</name>
   8.743 +        <required>true</required>
   8.744 +        <rtexprvalue>true</rtexprvalue>
   8.745 +        <description>
   8.746 +            Path to rendering servlet relative to web apps root URL
   8.747 +            (e.g. servlet/cewolf).
   8.748 +        </description>
   8.749 +    </attribute>
   8.750 +    <attribute>
   8.751 +        <name>id</name>
   8.752 +        <required>true</required>
   8.753 +        <rtexprvalue>true</rtexprvalue>
   8.754 +        <description>
   8.755 +            ID under which the chart description bean will be stored in the
   8.756 +            session to be found by the rendering servlet. Beware of using an
   8.757 +            ID which is not yet used for other beans in the session to avoid
   8.758 +            overriding.
   8.759 +        </description>
   8.760 +    </attribute>
   8.761 +    <attribute>
   8.762 +        <name>timeout</name>
   8.763 +        <required>false</required>
   8.764 +        <rtexprvalue>true</rtexprvalue>
   8.765 +        <description>
   8.766 +           Sets the timeout value used in the LongTermSessionStorage obj. Value is in seconds.
   8.767 +        </description>
   8.768 +    </attribute>
   8.769 +    <attribute>
   8.770 +        <name>width</name>
   8.771 +        <required>false</required>
   8.772 +        <rtexprvalue>true</rtexprvalue>
   8.773 +        <description>
   8.774 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.775 +        </description>
   8.776 +    </attribute>
   8.777 +    <attribute>
   8.778 +        <name>height</name>
   8.779 +        <required>false</required>
   8.780 +        <rtexprvalue>true</rtexprvalue>
   8.781 +        <description>
   8.782 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.783 +        </description>
   8.784 +    </attribute>
   8.785 +    <attribute>
   8.786 +        <name>mime</name>
   8.787 +        <required>false</required>
   8.788 +        <rtexprvalue>true</rtexprvalue>
   8.789 +        <description>
   8.790 +            The MIME type of the image. Currently image/png (default) and image/svg are supported.
   8.791 +            @default image/png
   8.792 +        </description>
   8.793 +    </attribute>
   8.794 +    <attribute>
   8.795 +        <name>alt</name>
   8.796 +        <required>false</required>
   8.797 +        <rtexprvalue>true</rtexprvalue>
   8.798 +        <description>
   8.799 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.800 +        </description>
   8.801 +    </attribute>
   8.802 +    <attribute>
   8.803 +        <name>hspace</name>
   8.804 +        <required>false</required>
   8.805 +        <rtexprvalue>true</rtexprvalue>
   8.806 +        <description>
   8.807 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.808 +        </description>
   8.809 +    </attribute>
   8.810 +    <attribute>
   8.811 +        <name>vspace</name>
   8.812 +        <required>false</required>
   8.813 +        <rtexprvalue>true</rtexprvalue>
   8.814 +        <description>
   8.815 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.816 +        </description>
   8.817 +    </attribute>
   8.818 +    <attribute>
   8.819 +        <name>align</name>
   8.820 +        <required>false</required>
   8.821 +        <rtexprvalue>true</rtexprvalue>
   8.822 +        <description>
   8.823 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.824 +        </description>
   8.825 +    </attribute>
   8.826 +    <attribute>
   8.827 +        <name>border</name>
   8.828 +        <required>false</required>
   8.829 +        <rtexprvalue>true</rtexprvalue>
   8.830 +        <description>
   8.831 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.832 +        </description>
   8.833 +    </attribute>
   8.834 +    <attribute>
   8.835 +        <name>ismap</name>
   8.836 +        <required>false</required>
   8.837 +        <rtexprvalue>true</rtexprvalue>
   8.838 +        <description>
   8.839 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.840 +        </description>
   8.841 +    </attribute>
   8.842 +    <attribute>
   8.843 +        <name>longdesc</name>
   8.844 +        <required>false</required>
   8.845 +        <rtexprvalue>true</rtexprvalue>
   8.846 +        <description>
   8.847 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.848 +        </description>
   8.849 +    </attribute>
   8.850 +    <attribute>
   8.851 +        <name>usemap</name>
   8.852 +        <required>false</required>
   8.853 +        <rtexprvalue>true</rtexprvalue>
   8.854 +        <description>
   8.855 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.856 +        </description>
   8.857 +    </attribute>
   8.858 +    <attribute>
   8.859 +        <name>class</name>
   8.860 +        <required>false</required>
   8.861 +        <rtexprvalue>true</rtexprvalue>
   8.862 +        <description>
   8.863 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.864 +        </description>
   8.865 +    </attribute>
   8.866 +    <attribute>
   8.867 +        <name>dir</name>
   8.868 +        <required>false</required>
   8.869 +        <rtexprvalue>true</rtexprvalue>
   8.870 +        <description>
   8.871 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.872 +        </description>
   8.873 +    </attribute>
   8.874 +    <attribute>
   8.875 +        <name>lang</name>
   8.876 +        <required>false</required>
   8.877 +        <rtexprvalue>true</rtexprvalue>
   8.878 +        <description>
   8.879 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.880 +        </description>
   8.881 +    </attribute>
   8.882 +    <attribute>
   8.883 +        <name>onclick</name>
   8.884 +        <required>false</required>
   8.885 +        <rtexprvalue>true</rtexprvalue>
   8.886 +        <description>
   8.887 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.888 +        </description>
   8.889 +    </attribute>
   8.890 +    <attribute>
   8.891 +        <name>ondbclick</name>
   8.892 +        <required>false</required>
   8.893 +        <rtexprvalue>true</rtexprvalue>
   8.894 +        <description>
   8.895 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.896 +        </description>
   8.897 +    </attribute>
   8.898 +    <attribute>
   8.899 +        <name>onkeydown</name>
   8.900 +        <required>false</required>
   8.901 +        <rtexprvalue>true</rtexprvalue>
   8.902 +        <description>
   8.903 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.904 +        </description>
   8.905 +    </attribute>
   8.906 +    <attribute>
   8.907 +        <name>onkeypress</name>
   8.908 +        <required>false</required>
   8.909 +        <rtexprvalue>true</rtexprvalue>
   8.910 +        <description>
   8.911 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.912 +        </description>
   8.913 +    </attribute>
   8.914 +    <attribute>
   8.915 +        <name>onkeyup</name>
   8.916 +        <required>false</required>
   8.917 +        <rtexprvalue>true</rtexprvalue>
   8.918 +        <description>
   8.919 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.920 +        </description>
   8.921 +    </attribute>
   8.922 +    <attribute>
   8.923 +        <name>onmousedown</name>
   8.924 +        <required>false</required>
   8.925 +        <rtexprvalue>true</rtexprvalue>
   8.926 +        <description>
   8.927 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.928 +        </description>
   8.929 +    </attribute>
   8.930 +    <attribute>
   8.931 +        <name>onmousemove</name>
   8.932 +        <required>false</required>
   8.933 +        <rtexprvalue>true</rtexprvalue>
   8.934 +        <description>
   8.935 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.936 +        </description>
   8.937 +    </attribute>
   8.938 +    <attribute>
   8.939 +        <name>onmouseout</name>
   8.940 +        <required>false</required>
   8.941 +        <rtexprvalue>true</rtexprvalue>
   8.942 +        <description>
   8.943 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.944 +        </description>
   8.945 +    </attribute>
   8.946 +    <attribute>
   8.947 +        <name>onmouseover</name>
   8.948 +        <required>false</required>
   8.949 +        <rtexprvalue>true</rtexprvalue>
   8.950 +        <description>
   8.951 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.952 +        </description>
   8.953 +    </attribute>
   8.954 +    <attribute>
   8.955 +        <name>onmouseup</name>
   8.956 +        <required>false</required>
   8.957 +        <rtexprvalue>true</rtexprvalue>
   8.958 +        <description>
   8.959 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.960 +        </description>
   8.961 +    </attribute>
   8.962 +    <attribute>
   8.963 +        <name>style</name>
   8.964 +        <required>false</required>
   8.965 +        <rtexprvalue>true</rtexprvalue>
   8.966 +        <description>
   8.967 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   8.968 +        </description>
   8.969 +    </attribute>
   8.970 +    <attribute>
   8.971 +        <name>htmltitle</name>
   8.972 +        <required>false</required>
   8.973 +        <rtexprvalue>true</rtexprvalue>
   8.974 +        <description>
   8.975 +           Corresponds to appropriate HMTL &lt;img&gt; title attribute.
   8.976 +        </description>
   8.977 +    </attribute>
   8.978 +    <attribute>
   8.979 +        <name>forceSessionId</name>
   8.980 +        <required>false</required>
   8.981 +        <rtexprvalue>true</rtexprvalue>
   8.982 +        <description>
   8.983 +           Add JSession id.
   8.984 +        </description>
   8.985 +    </attribute>    
   8.986 +    <attribute>
   8.987 +        <name>removeAfterRender</name>
   8.988 +        <required>false</required>
   8.989 +        <rtexprvalue>true</rtexprvalue>
   8.990 +        <description>
   8.991 +           Remove image after rendering (defaults to false).
   8.992 +        </description>
   8.993 +    </attribute>
   8.994 +</tag>
   8.995 +<tag>
   8.996 +    <name>data</name>
   8.997 +    <tag-class>de.laures.cewolf.taglib.tags.DataTag</tag-class>
   8.998 +    <description>
   8.999 +        A data tag provides all information needed to retrieve the data which are
  8.1000 +        needed by the chart. Current version only supports data provided by a
  8.1001 +        DatasetProducer. In future versions there will be tags to provide data
  8.1002 +        from a datasource (e.g. via SQL).
  8.1003 +        @optional-child producer
  8.1004 +    </description>
  8.1005 +</tag>
  8.1006 +<tag>
  8.1007 +    <name>producer</name>
  8.1008 +    <tag-class>de.laures.cewolf.taglib.tags.ProducerTag</tag-class>
  8.1009 +    <description>
  8.1010 +        A data tag provides all information needed to retrieve the data which are
  8.1011 +        needed by the chart. Current version only supports data provided by a
  8.1012 +        DatasetProducer. In future versions there will be tags to provide data
  8.1013 +        from a datasource (e.g. via SQL).
  8.1014 +        @optional-child param
  8.1015 +    </description>
  8.1016 +    <attribute>
  8.1017 +        <name>id</name>
  8.1018 +        <required>true</required>
  8.1019 +        <rtexprvalue>true</rtexprvalue>
  8.1020 +        <description>
  8.1021 +            ID under which an object of type DatasetProducer can be found in
  8.1022 +            pageContext. This object is used to retrieve the dataset of the chart.
  8.1023 +        </description>
  8.1024 +    </attribute>
  8.1025 +    <attribute>
  8.1026 +        <name>usecache</name>
  8.1027 +        <required>false</required>
  8.1028 +        <rtexprvalue>true</rtexprvalue>
  8.1029 +        <description>
  8.1030 +            Determines if formally produced data should be reused if possible.
  8.1031 +            @default true
  8.1032 +        </description>
  8.1033 +    </attribute>
  8.1034 +</tag>
  8.1035 +<tag>
  8.1036 +    <name>chartpostprocessor</name>
  8.1037 +    <tag-class>de.laures.cewolf.taglib.tags.ChartPostProcessorTag</tag-class>
  8.1038 +    <description>
  8.1039 +        A chart postprocessor tag references an object of type ChartProstProcessor
  8.1040 +        which must be defined in pageContext under the provided ID. This object
  8.1041 +        is called back after chart generation to post process the chart in any
  8.1042 +        manner.
  8.1043 +        @optional-child param
  8.1044 +    </description>
  8.1045 +    <attribute>
  8.1046 +        <name>id</name>
  8.1047 +        <required>true</required>
  8.1048 +        <rtexprvalue>true</rtexprvalue>
  8.1049 +        <description>
  8.1050 +            ID under which an object of type ChartPostProcessor can be found in
  8.1051 +            pageContext. This object is used to postprocess the rendered chart.
  8.1052 +        </description>
  8.1053 +    </attribute>
  8.1054 +</tag>
  8.1055 +<tag>
  8.1056 +    <name>param</name>
  8.1057 +    <tag-class>de.laures.cewolf.taglib.tags.ParamTag</tag-class>
  8.1058 +    <description>
  8.1059 +        Name/value-pair to paramterize a surrounding tag whose handler must 
  8.1060 +        implement the Parameterized interface.
  8.1061 +    </description>
  8.1062 +    <attribute>
  8.1063 +        <name>name</name>
  8.1064 +        <required>true</required>
  8.1065 +        <rtexprvalue>true</rtexprvalue>
  8.1066 +        <description>
  8.1067 +            Name of the param
  8.1068 +        </description>
  8.1069 +    </attribute>
  8.1070 +    <attribute>
  8.1071 +        <name>value</name>
  8.1072 +        <required>true</required>
  8.1073 +        <rtexprvalue>true</rtexprvalue>
  8.1074 +        <type>java.io.Serializable</type>
  8.1075 +        <description>
  8.1076 +            Value of the param. Must be serializable.
  8.1077 +        </description>
  8.1078 +    </attribute>
  8.1079 +</tag>
  8.1080 +<tag>
  8.1081 +    <name>gradientpaint</name>
  8.1082 +    <tag-class>de.laures.cewolf.taglib.tags.GradientTag</tag-class>
  8.1083 +    <description>
  8.1084 +        The gradientpaint tag provides a way to fill a shape with a linear 
  8.1085 +        color gradient pattern. If Point P1 with Color C1 and Point P2 with 
  8.1086 +        Color C2 are specified in user space, the Color on the P1, P2 
  8.1087 +        connecting line is proportionally changed from C1 to C2. Any point 
  8.1088 +        P not on the extended P1, P2 connecting line has the color of the 
  8.1089 +        point P' that is the perpendicular projection of P on the extended P1,
  8.1090 +        P2 connecting line. Points on the extended line outside of the P1,
  8.1091 +        P2 segment can be colored in one of two ways.
  8.1092 +        &lt;ul&gt;
  8.1093 +        &lt;li&gt;If the gradient is cyclic then the points on the extended 
  8.1094 +        P1, P2 connecting line cycle back and forth between the colors C1 
  8.1095 +        and C2.
  8.1096 +        &lt;li&gt;If the gradient is acyclic then points on the P1 side of 
  8.1097 +        the segment have the constant Color C1 while points on the P2 side 
  8.1098 +        have the constant Color C2.
  8.1099 +        The two colors are defined in a nested point tag of this tag. 
  8.1100 +        @required-child point
  8.1101 +    </description>
  8.1102 +    <attribute>
  8.1103 +        <name>cyclic</name>
  8.1104 +        <required>false</required>
  8.1105 +        <rtexprvalue>true</rtexprvalue>
  8.1106 +        <description>
  8.1107 +            Does the gradient cycle repeatedly between the two colors C1 and C2.
  8.1108 +            @default false
  8.1109 +        </description>
  8.1110 +    </attribute>
  8.1111 +</tag>
  8.1112 +<tag>
  8.1113 +    <name>point</name>
  8.1114 +    <tag-class>de.laures.cewolf.taglib.tags.PointTag</tag-class>
  8.1115 +    <description>
  8.1116 +        Defines a point with x and y coordinates and a color.
  8.1117 +        @extends colorpaint
  8.1118 +    </description>
  8.1119 +    <attribute>
  8.1120 +        <name>x</name>
  8.1121 +        <required>true</required>
  8.1122 +        <rtexprvalue>true</rtexprvalue>
  8.1123 +        <description>
  8.1124 +            The x coordinate of the point.
  8.1125 +        </description>
  8.1126 +    </attribute>
  8.1127 +    <attribute>
  8.1128 +        <name>y</name>
  8.1129 +        <required>true</required>
  8.1130 +        <rtexprvalue>true</rtexprvalue>
  8.1131 +        <description>
  8.1132 +            The y coordinate of the point.
  8.1133 +        </description>
  8.1134 +    </attribute>
  8.1135 +    <attribute>
  8.1136 +        <name>color</name>
  8.1137 +        <required>false</required>
  8.1138 +        <rtexprvalue>true</rtexprvalue>
  8.1139 +        <description>
  8.1140 +            @copy
  8.1141 +        </description>
  8.1142 +    </attribute>
  8.1143 +</tag>
  8.1144 +<tag>
  8.1145 +    <name>colorpaint</name>
  8.1146 +    <tag-class>de.laures.cewolf.taglib.tags.ColorTag</tag-class>
  8.1147 +    <description>
  8.1148 +        Fills the area defined by the parent tag with a color. 
  8.1149 +    </description>
  8.1150 +    <attribute>
  8.1151 +        <name>color</name>
  8.1152 +        <required>true</required>
  8.1153 +        <rtexprvalue>true</rtexprvalue>
  8.1154 +        <description>
  8.1155 +            The color to be used to fill the parent tag's area.
  8.1156 +            The color definition is compatible with the
  8.1157 +            HTML one. E.g. black is '#000000' and red is '#FF0000'. However it
  8.1158 +            is possible to append two hex numbers for the alpha channel. Thus
  8.1159 +            '#FF000080' is red with alpha blending of 50%.
  8.1160 +        </description>
  8.1161 +    </attribute>
  8.1162 +</tag>
  8.1163 +<tag>
  8.1164 +    <name>texturepaint</name>
  8.1165 +    <tag-class>de.laures.cewolf.taglib.tags.TextureTag</tag-class>
  8.1166 +    <description>
  8.1167 +        The texturepaint tag provides a way to fill the area of the parent tag
  8.1168 +        with a texture that is specified as an image. The texture is anchored to 
  8.1169 +        the upper left corner of the parent tags area.
  8.1170 +    </description>
  8.1171 +    <attribute>
  8.1172 +        <name>image</name>
  8.1173 +        <required>true</required>
  8.1174 +        <rtexprvalue>true</rtexprvalue>
  8.1175 +        <description>
  8.1176 +            Image fo the texture. The value of this 
  8.1177 +            attribute is the filename of a graphics file relative to the web
  8.1178 +            application's root directory (e.g. /WEB-INF/img/bg.jpg).
  8.1179 +            The image must be loadable by the default java.awt.Toolkit of the
  8.1180 +            servlet container's JVM.
  8.1181 +        </description>
  8.1182 +    </attribute>
  8.1183 +    <attribute>
  8.1184 +        <name>width</name>
  8.1185 +        <required>true</required>
  8.1186 +        <rtexprvalue>true</rtexprvalue>
  8.1187 +        <description>
  8.1188 +            The width of the texture.
  8.1189 +        </description>
  8.1190 +    </attribute>
  8.1191 +    <attribute>
  8.1192 +        <name>height</name>
  8.1193 +        <required>true</required>
  8.1194 +        <rtexprvalue>true</rtexprvalue>
  8.1195 +        <description>
  8.1196 +            The height of the texture.
  8.1197 +        </description>  
  8.1198 +    </attribute>
  8.1199 +</tag>
  8.1200 +<tag>
  8.1201 +    <name>map</name>
  8.1202 +    <tag-class>de.laures.cewolf.taglib.tags.ChartMapTag</tag-class>
  8.1203 +    <description>
  8.1204 +      This tag defines an image and tooltip map for the parent img tag.
  8.1205 +      @parent img
  8.1206 +    </description>
  8.1207 +    <attribute>
  8.1208 +        <name>linkgeneratorid</name>
  8.1209 +        <required>false</required>
  8.1210 +        <rtexprvalue>true</rtexprvalue>
  8.1211 +        <description>
  8.1212 +          The ID of the class which implements the appropriate de.laures.cewolf.LinkGenerator.
  8.1213 +        </description>
  8.1214 +    </attribute>
  8.1215 +    <attribute>
  8.1216 +        <name>tooltipgeneratorid</name>
  8.1217 +        <required>false</required>
  8.1218 +        <rtexprvalue>true</rtexprvalue>
  8.1219 +        <description>
  8.1220 +          The ID of the class which implements the appropriate com.jrefinery.chart.tooltips.ToolTipGenerator.
  8.1221 +        </description>
  8.1222 +    </attribute>
  8.1223 +	<attribute>
  8.1224 +		<name>useJFreeChartLinkGenerator</name>
  8.1225 +		<required>false</required>
  8.1226 +		<rtexprvalue>true</rtexprvalue>
  8.1227 +		<description>If the links provided by the JFreeChart renderer should be used.</description>
  8.1228 +	</attribute>
  8.1229 +	<attribute>
  8.1230 +		<name>useJFreeChartTooltipGenerator</name>
  8.1231 +		<required>false</required>
  8.1232 +		<rtexprvalue>true</rtexprvalue>
  8.1233 +		<description>If the tooltips provided by the JFreeChart renderer should be used.</description>		
  8.1234 +	</attribute>	
  8.1235 +	
  8.1236 +</tag>
  8.1237 +</taglib>
  8.1238 \ No newline at end of file
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/java/cewolf-1.0/etc/cewolf.tld	Sat Feb 28 21:31:02 2009 +0100
     9.3 @@ -0,0 +1,1234 @@
     9.4 +<?xml version="1.0" encoding="ISO-8859-1"?>
     9.5 +<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
     9.6 +
     9.7 +<taglib>
     9.8 +<tlib-version>0.9.3</tlib-version>
     9.9 +<jsp-version>1.2</jsp-version>
    9.10 +<short-name>Cewolf Tag Library</short-name>
    9.11 +<uri>http://cewolf.sourceforge.net/taglib/cewolf.tld</uri>
    9.12 +<display-name>Cewolf Tag Library</display-name>
    9.13 +<description>This tag library is designed to describe charts of all kinds.</description>
    9.14 +<tag>
    9.15 +    <name>plot</name>
    9.16 +    <tag-class>de.laures.cewolf.taglib.tags.PlotTag</tag-class>
    9.17 +    <body-content>JSP</body-content>
    9.18 +    <description>
    9.19 +    	The plot tag is nested inside a complex chart to define a nested or layerd plot instance.
    9.20 +        @required-child data
    9.21 +    </description>
    9.22 +    <attribute>
    9.23 +        <name>type</name>
    9.24 +        <required>true</required>
    9.25 +        <rtexprvalue>true</rtexprvalue>
    9.26 +        <description>
    9.27 +        	The type  of the plot. One of xyarea, xyline, xyshapesandlines ,
    9.28 +			scatter, xyverticalbar, step, candlestick, highlow, signal,
    9.29 +			verticlebar, area, line, shapesandlines
    9.30 +	    </description>
    9.31 +    </attribute>
    9.32 +    <attribute>
    9.33 +        <name>xaxislabel</name>
    9.34 +        <required>false</required>
    9.35 +        <rtexprvalue>true</rtexprvalue>
    9.36 +        <description>
    9.37 +            Title of the plot's x-axis. This attributes is
    9.38 +            only used for horizontally combined charts.
    9.39 +        </description>
    9.40 +    </attribute>
    9.41 +    <attribute>
    9.42 +        <name>yaxislabel</name>
    9.43 +        <required>false</required>
    9.44 +        <rtexprvalue>true</rtexprvalue>
    9.45 +        <description>
    9.46 +            Title of the plot's y-axis. This attributes is
    9.47 +            only used for vertically combined charts.
    9.48 +        </description>
    9.49 +    </attribute>
    9.50 +</tag>
    9.51 +<tag>
    9.52 +    <name>img</name>
    9.53 +    <tag-class>de.laures.cewolf.taglib.tags.ChartImgTag</tag-class>
    9.54 +    <body-content>JSP</body-content>
    9.55 +    <description>
    9.56 +    	This tag is a specialized HTML img tag. It renders the chart
    9.57 +    	which has been specified by a &lt;chart&gt; tag in the same page.
    9.58 +      @optional-child map
    9.59 +    </description>
    9.60 +    <attribute>
    9.61 +        <name>renderer</name>
    9.62 +        <required>true</required>
    9.63 +        <rtexprvalue>true</rtexprvalue>
    9.64 +        <description>
    9.65 +            Path to rendering servlet. Any path that starts with a '/' is assumed to refer to a resource relative to web application root. Otherwise, the path is assumed to refer to resource relative to the current page directory.
    9.66 +        </description>
    9.67 +    </attribute>
    9.68 +    <attribute>
    9.69 +        <name>chartid</name>
    9.70 +        <required>true</required>
    9.71 +        <rtexprvalue>true</rtexprvalue>
    9.72 +        <description>
    9.73 +        	The id of the chart to render.
    9.74 +        </description>
    9.75 +    </attribute>
    9.76 +    <attribute>
    9.77 +        <name>width</name>
    9.78 +        <required>true</required>
    9.79 +        <rtexprvalue>true</rtexprvalue>
    9.80 +        <description>
    9.81 +            Width of the rendered chart image in pixel.
    9.82 +        </description>
    9.83 +    </attribute>
    9.84 +    <attribute>
    9.85 +        <name>height</name>
    9.86 +        <required>true</required>
    9.87 +        <rtexprvalue>true</rtexprvalue>
    9.88 +        <description>
    9.89 +            Height of the rendered chart image in pixel.
    9.90 +        </description>
    9.91 +    </attribute>
    9.92 +    <attribute>
    9.93 +        <name>mime</name>
    9.94 +        <required>false</required>
    9.95 +        <rtexprvalue>true</rtexprvalue>
    9.96 +        <description>
    9.97 +            The MIME type of the image. Currently image/png (default) and image/svg are supported.
    9.98 +            @default image/png
    9.99 +        </description>
   9.100 +    </attribute>
   9.101 +    <attribute>
   9.102 +        <name>alt</name>
   9.103 +        <required>false</required>
   9.104 +        <rtexprvalue>true</rtexprvalue>
   9.105 +        <description>
   9.106 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.107 +        </description>
   9.108 +    </attribute>
   9.109 +        <attribute>
   9.110 +        <name>timeout</name>
   9.111 +        <required>false</required>
   9.112 +        <rtexprvalue>true</rtexprvalue>
   9.113 +        <description>
   9.114 +           Sets the timeout value used in the LongTermSessionStorage obj. Value is in seconds.
   9.115 +        </description>
   9.116 +    </attribute>
   9.117 +    <attribute>
   9.118 +        <name>hspace</name>
   9.119 +        <required>false</required>
   9.120 +        <rtexprvalue>true</rtexprvalue>
   9.121 +        <description>
   9.122 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.123 +        </description>
   9.124 +    </attribute>
   9.125 +    <attribute>
   9.126 +        <name>vspace</name>
   9.127 +        <required>false</required>
   9.128 +        <rtexprvalue>true</rtexprvalue>
   9.129 +        <description>
   9.130 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.131 +        </description>
   9.132 +    </attribute>
   9.133 +    <attribute>
   9.134 +        <name>align</name>
   9.135 +        <required>false</required>
   9.136 +        <rtexprvalue>true</rtexprvalue>
   9.137 +        <description>
   9.138 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.139 +        </description>
   9.140 +    </attribute>
   9.141 +    <attribute>
   9.142 +        <name>border</name>
   9.143 +        <required>false</required>
   9.144 +        <rtexprvalue>true</rtexprvalue>
   9.145 +        <description>
   9.146 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.147 +        </description>
   9.148 +    </attribute>
   9.149 +    <attribute>
   9.150 +        <name>ismap</name>
   9.151 +        <required>false</required>
   9.152 +        <rtexprvalue>true</rtexprvalue>
   9.153 +        <description>
   9.154 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.155 +        </description>
   9.156 +    </attribute>
   9.157 +    <attribute>
   9.158 +        <name>longdesc</name>
   9.159 +        <required>false</required>
   9.160 +        <rtexprvalue>true</rtexprvalue>
   9.161 +        <description>
   9.162 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.163 +        </description>
   9.164 +    </attribute>
   9.165 +    <attribute>
   9.166 +        <name>usemap</name>
   9.167 +        <required>false</required>
   9.168 +        <rtexprvalue>true</rtexprvalue>
   9.169 +        <description>
   9.170 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.171 +        </description>
   9.172 +    </attribute>
   9.173 +    <attribute>
   9.174 +        <name>class</name>
   9.175 +        <required>false</required>
   9.176 +        <rtexprvalue>true</rtexprvalue>
   9.177 +        <description>
   9.178 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.179 +        </description>
   9.180 +    </attribute>
   9.181 +    <attribute>
   9.182 +        <name>dir</name>
   9.183 +        <required>false</required>
   9.184 +        <rtexprvalue>true</rtexprvalue>
   9.185 +        <description>
   9.186 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.187 +        </description>
   9.188 +    </attribute>
   9.189 +    <attribute>
   9.190 +        <name>lang</name>
   9.191 +        <required>false</required>
   9.192 +        <rtexprvalue>true</rtexprvalue>
   9.193 +        <description>
   9.194 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.195 +        </description>
   9.196 +    </attribute>
   9.197 +    <attribute>
   9.198 +        <name>onclick</name>
   9.199 +        <required>false</required>
   9.200 +        <rtexprvalue>true</rtexprvalue>
   9.201 +        <description>
   9.202 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.203 +        </description>
   9.204 +    </attribute>
   9.205 +    <attribute>
   9.206 +        <name>ondbclick</name>
   9.207 +        <required>false</required>
   9.208 +        <rtexprvalue>true</rtexprvalue>
   9.209 +        <description>
   9.210 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.211 +        </description>
   9.212 +    </attribute>
   9.213 +    <attribute>
   9.214 +        <name>onkeydown</name>
   9.215 +        <required>false</required>
   9.216 +        <rtexprvalue>true</rtexprvalue>
   9.217 +        <description>
   9.218 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.219 +        </description>
   9.220 +    </attribute>
   9.221 +    <attribute>
   9.222 +        <name>onkeypress</name>
   9.223 +        <required>false</required>
   9.224 +        <rtexprvalue>true</rtexprvalue>
   9.225 +        <description>
   9.226 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.227 +        </description>
   9.228 +    </attribute>
   9.229 +    <attribute>
   9.230 +        <name>onkeyup</name>
   9.231 +        <required>false</required>
   9.232 +        <rtexprvalue>true</rtexprvalue>
   9.233 +        <description>
   9.234 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.235 +        </description>
   9.236 +    </attribute>
   9.237 +    <attribute>
   9.238 +        <name>onmousedown</name>
   9.239 +        <required>false</required>
   9.240 +        <rtexprvalue>true</rtexprvalue>
   9.241 +        <description>
   9.242 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.243 +        </description>
   9.244 +    </attribute>
   9.245 +    <attribute>
   9.246 +        <name>onmousemove</name>
   9.247 +        <required>false</required>
   9.248 +        <rtexprvalue>true</rtexprvalue>
   9.249 +        <description>
   9.250 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.251 +        </description>
   9.252 +    </attribute>
   9.253 +    <attribute>
   9.254 +        <name>onmouseout</name>
   9.255 +        <required>false</required>
   9.256 +        <rtexprvalue>true</rtexprvalue>
   9.257 +        <description>
   9.258 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.259 +        </description>
   9.260 +    </attribute>
   9.261 +    <attribute>
   9.262 +        <name>onmouseover</name>
   9.263 +        <required>false</required>
   9.264 +        <rtexprvalue>true</rtexprvalue>
   9.265 +        <description>
   9.266 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.267 +        </description>
   9.268 +    </attribute>
   9.269 +    <attribute>
   9.270 +        <name>onmouseup</name>
   9.271 +        <required>false</required>
   9.272 +        <rtexprvalue>true</rtexprvalue>
   9.273 +        <description>
   9.274 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.275 +        </description>
   9.276 +    </attribute>
   9.277 +    <attribute>
   9.278 +        <name>style</name>
   9.279 +        <required>false</required>
   9.280 +        <rtexprvalue>true</rtexprvalue>
   9.281 +        <description>
   9.282 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.283 +        </description>
   9.284 +    </attribute>
   9.285 +    <attribute>
   9.286 +        <name>htmltitle</name>
   9.287 +        <required>false</required>
   9.288 +        <rtexprvalue>true</rtexprvalue>
   9.289 +        <description>
   9.290 +           Corresponds to appropriate HMTL &lt;img&gt; title attribute.
   9.291 +        </description>
   9.292 +    </attribute>
   9.293 +     <attribute>
   9.294 +        <name>forceSessionId</name>
   9.295 +        <required>false</required>
   9.296 +        <rtexprvalue>true</rtexprvalue>
   9.297 +        <description>
   9.298 +           Add JSession id.
   9.299 +        </description>
   9.300 +    </attribute>
   9.301 +    <attribute>
   9.302 +        <name>removeAfterRender</name>
   9.303 +        <required>false</required>
   9.304 +        <rtexprvalue>true</rtexprvalue>
   9.305 +        <description>
   9.306 +           Remove image after rendering (defaults to false).
   9.307 +        </description>
   9.308 +    </attribute>
   9.309 +</tag>
   9.310 +<tag>
   9.311 +    <name>imgurl</name>
   9.312 +    <tag-class>de.laures.cewolf.taglib.tags.ChartImgURLTag</tag-class>
   9.313 +    <tei-class>de.laures.cewolf.taglib.tags.ChartImgURLTagEI</tei-class>
   9.314 +    <description>
   9.315 +    	This tag can be used as the src attribute of a HTML img tag. E.g.: 
   9.316 +    	&lt;img src='&lt;imgurl chartid="foobar" renderer="cewolf" width="100" height="100"/&gt;'&gt;
   9.317 +    	If the var attribute is used the URL is exposed as a page attribute of type String.
   9.318 +        @extends img
   9.319 +    </description>
   9.320 +    <attribute>
   9.321 +        <name>var</name>
   9.322 +        <required>false</required>
   9.323 +        <rtexprvalue>true</rtexprvalue>
   9.324 +        <description>
   9.325 +            Name of the page scope attribute to hold the URL. If not specified the URL is printed to the page outstream.
   9.326 +        </description>
   9.327 +    </attribute>
   9.328 +    <attribute>
   9.329 +        <name>renderer</name>
   9.330 +        <required>true</required>
   9.331 +        <rtexprvalue>true</rtexprvalue>
   9.332 +        <description>
   9.333 +            Path to rendering servlet. Any path that starts with a '/' is assumed to refer to a resource relative to web application root. Otherwise, the path is assumed to refer to resource relative to the current page directory.
   9.334 +        </description>
   9.335 +    </attribute>
   9.336 +    <attribute>
   9.337 +        <name>chartid</name>
   9.338 +        <required>true</required>
   9.339 +        <rtexprvalue>true</rtexprvalue>
   9.340 +        <description>
   9.341 +        	The id of the chart to render.
   9.342 +        </description>
   9.343 +    </attribute>
   9.344 +    <attribute>
   9.345 +        <name>width</name>
   9.346 +        <required>true</required>
   9.347 +        <rtexprvalue>true</rtexprvalue>
   9.348 +        <description>
   9.349 +            Width of the rendered chart image in pixel.
   9.350 +        </description>
   9.351 +    </attribute>
   9.352 +    <attribute>
   9.353 +        <name>height</name>
   9.354 +        <required>true</required>
   9.355 +        <rtexprvalue>true</rtexprvalue>
   9.356 +        <description>
   9.357 +            Height of the rendered chart image in pixel.
   9.358 +        </description>
   9.359 +    </attribute>
   9.360 +    <attribute>
   9.361 +        <name>mime</name>
   9.362 +        <required>false</required>
   9.363 +        <rtexprvalue>true</rtexprvalue>
   9.364 +        <description>
   9.365 +            The MIME type of the image. Currently image/png (default) and image/svg are supported.
   9.366 +            @default image/png
   9.367 +        </description>
   9.368 +    </attribute>
   9.369 +</tag>
   9.370 +<tag>
   9.371 +    <name>chart</name>
   9.372 +    <tag-class>de.laures.cewolf.taglib.tags.SimpleChartTag</tag-class>
   9.373 +    <description>
   9.374 +        Root tag of a chart description.
   9.375 +        @root
   9.376 +        @required-child data
   9.377 +        @optional-child chartpostprocessor
   9.378 +    </description>
   9.379 +    <attribute>
   9.380 +        <name>id</name>
   9.381 +        <required>true</required>
   9.382 +        <rtexprvalue>true</rtexprvalue>
   9.383 +        <description>
   9.384 +            ID under which the chart description bean will be stored in the
   9.385 +            page to be found by the img tag. Beware of using an
   9.386 +            ID which is not yet used for other beans in the page to avoid
   9.387 +            compile errors.
   9.388 +        </description>
   9.389 +    </attribute>
   9.390 +    <attribute>
   9.391 +        <name>type</name>
   9.392 +        <required>true</required>
   9.393 +        <rtexprvalue>true</rtexprvalue>
   9.394 +        <description>
   9.395 +            Type of the chart. One of area, areaxy, horizontalbar, horizontalbar3d,
   9.396 +            line, pie, scatter, stackedarea, stackedhorizontalbar, stackedverticalbar, 
   9.397 +            stackedverticalbar3d, timeseries, verticalbar, verticalbar3d, xy,
   9.398 +            candlestick, highlow, gantt, wind, signal, verticalxybar, pie3d, meter
   9.399 +        </description>
   9.400 +    </attribute>
   9.401 +    <attribute>
   9.402 +        <name>title</name>
   9.403 +        <required>false</required>
   9.404 +        <rtexprvalue>true</rtexprvalue>
   9.405 +        <description>
   9.406 +            Title of the chart which is displayed on the chart panel
   9.407 +            above the plot pane.
   9.408 +        </description>
   9.409 +    </attribute>
   9.410 +    <attribute>
   9.411 +        <name>xaxislabel</name>
   9.412 +        <required>false</required>
   9.413 +        <rtexprvalue>true</rtexprvalue>
   9.414 +        <description>
   9.415 +            Title of the chart's x-axis. This attributes is
   9.416 +            ignored if the type attribute of the parent chart tag is one
   9.417 +            of pie3d or pie.
   9.418 +        </description>
   9.419 +    </attribute>
   9.420 +    <attribute>
   9.421 +        <name>yaxislabel</name>
   9.422 +        <required>false</required>
   9.423 +        <rtexprvalue>true</rtexprvalue>
   9.424 +        <description>
   9.425 +            Title of the chart's y-axis. This attributes is
   9.426 +            ignored if the type attribute of the parent chart tag is one
   9.427 +            of pie3d or pie.
   9.428 +        </description>
   9.429 +    </attribute>
   9.430 +    <attribute>
   9.431 +        <name>background</name>
   9.432 +        <required>false</required>
   9.433 +        <rtexprvalue>true</rtexprvalue>
   9.434 +        <description>
   9.435 +            Background image of the chart panel. The value of this 
   9.436 +            attribute is the filename of a graphics file relative to the web
   9.437 +            application's root directory (e.g. /WEB-INF/img/bg.jpg).
   9.438 +            The image must be loadable by the default java.awt.Toolkit of the
   9.439 +            servlet container's JVM.
   9.440 +        </description>
   9.441 +    </attribute>
   9.442 +    <attribute>
   9.443 +        <name>backgroundimagealpha</name>
   9.444 +        <required>false</required>
   9.445 +        <rtexprvalue>true</rtexprvalue>
   9.446 +        <type>java.lang.Float</type>
   9.447 +        <description>
   9.448 +            Chart's backgound alpha blending value as a float. Value ranges
   9.449 +            from 0.0 to 1.0.
   9.450 +            @default 0.0
   9.451 +            @overrides /chart[backgroundimagealpha]
   9.452 +        </description>
   9.453 +    </attribute>
   9.454 +    <attribute>
   9.455 +        <name>antialias</name>
   9.456 +        <required>false</required>
   9.457 +        <rtexprvalue>true</rtexprvalue>
   9.458 +        <description>
   9.459 +            Antialiased rendering of the chart.
   9.460 +            @default true
   9.461 +            @overrides /chart[backgroundimagealpha]
   9.462 +        </description>
   9.463 +    </attribute>
   9.464 +    <attribute>
   9.465 +        <name>showlegend</name>
   9.466 +        <required>false</required>
   9.467 +        <rtexprvalue>true</rtexprvalue>
   9.468 +        <description>
   9.469 +           Boolean value to switch on or off the legend display inside of this panel.
   9.470 +           @default true
   9.471 +        </description>
   9.472 +    </attribute>
   9.473 +    <attribute>
   9.474 +        <name>legendanchor</name>
   9.475 +        <required>false</required>
   9.476 +        <rtexprvalue>true</rtexprvalue>
   9.477 +        <description>
   9.478 +            Sets the anchor of the legend inside of the panel. Possible values
   9.479 +            are 'north', 'south', 'west', 'east'.
   9.480 +            Ignored if showlegned is 'false'.
   9.481 +            @default 'south'
   9.482 +        </description>
   9.483 +    </attribute>
   9.484 +</tag>
   9.485 +<tag>
   9.486 +    <name>overlaidchart</name>
   9.487 +    <tag-class>de.laures.cewolf.taglib.tags.OverlaidChartTag</tag-class>
   9.488 +    <description>
   9.489 +        Root tag of a overlaid-chart description.
   9.490 +        @root
   9.491 +        @required-child data
   9.492 +        @optional-child chartpostprocessor
   9.493 +    </description>
   9.494 +    <attribute>
   9.495 +        <name>id</name>
   9.496 +        <required>true</required>
   9.497 +        <rtexprvalue>true</rtexprvalue>
   9.498 +        <description>
   9.499 +            ID under which the chart description bean will be stored in the
   9.500 +            page to be found by the img tag. Beware of using an
   9.501 +            ID which is not yet used for other beans in the page to avoid
   9.502 +            compile errors.
   9.503 +        </description>
   9.504 +    </attribute>
   9.505 +    <attribute>
   9.506 +        <name>type</name>
   9.507 +        <required>true</required>
   9.508 +        <rtexprvalue>true</rtexprvalue>
   9.509 +        <description>
   9.510 +            Type of the chart. In this version only overlaidxy is supported.
   9.511 +        </description>
   9.512 +    </attribute>
   9.513 +    <attribute>
   9.514 +        <name>title</name>
   9.515 +        <required>false</required>
   9.516 +        <rtexprvalue>true</rtexprvalue>
   9.517 +        <description>
   9.518 +            Title of the chart which is displayed on the chart panel
   9.519 +            above the plot pane.
   9.520 +        </description>
   9.521 +    </attribute>
   9.522 +    <attribute>
   9.523 +        <name>xaxistype</name>
   9.524 +        <required>true</required>
   9.525 +        <rtexprvalue>true</rtexprvalue>
   9.526 +        <description>
   9.527 +        	Type of the domain axis. Possible values: date, number
   9.528 +        </description>
   9.529 +    </attribute>
   9.530 +    <attribute>
   9.531 +        <name>xaxislabel</name>
   9.532 +        <required>false</required>
   9.533 +        <rtexprvalue>true</rtexprvalue>
   9.534 +        <description>
   9.535 +            Title of the chart's x-axis. This attributes is
   9.536 +            ignored if the type attribute of the parent chart tag is one
   9.537 +            of pie3d or pie.
   9.538 +        </description>
   9.539 +    </attribute>
   9.540 +    <attribute>
   9.541 +        <name>yaxistype</name>
   9.542 +        <required>false</required>
   9.543 +        <rtexprvalue>true</rtexprvalue>
   9.544 +        <description>
   9.545 +        	Type of the range axis. Possible values: date, number
   9.546 +        </description>
   9.547 +    </attribute>
   9.548 +    <attribute>
   9.549 +        <name>yaxislabel</name>
   9.550 +        <required>false</required>
   9.551 +        <rtexprvalue>true</rtexprvalue>
   9.552 +        <description>
   9.553 +            Title of the chart's y-axis. This attributes is
   9.554 +            ignored if the type attribute of the parent chart tag is one
   9.555 +            of pie3d or pie.
   9.556 +        </description>
   9.557 +    </attribute>
   9.558 +    <attribute>
   9.559 +        <name>background</name>
   9.560 +        <required>false</required>
   9.561 +        <rtexprvalue>true</rtexprvalue>
   9.562 +        <description>
   9.563 +            Background image of the chart panel. The value of this 
   9.564 +            attribute is the filename of a graphics file relative to the web
   9.565 +            application's root directory (e.g. /WEB-INF/img/bg.jpg).
   9.566 +            The image must be loadable by the default java.awt.Toolkit of the
   9.567 +            servlet container's JVM.
   9.568 +        </description>
   9.569 +    </attribute>
   9.570 +    <attribute>
   9.571 +        <name>backgroundimagealpha</name>
   9.572 +        <required>false</required>
   9.573 +        <rtexprvalue>true</rtexprvalue>
   9.574 +        <type>java.lang.Float</type>
   9.575 +        <description>
   9.576 +            Chart's backgound alpha blending value as a float. Value ranges
   9.577 +            from 0.0 to 1.0.
   9.578 +            @default 0.0
   9.579 +            @overrides /chart[backgroundimagealpha]
   9.580 +        </description>
   9.581 +    </attribute>
   9.582 +    <attribute>
   9.583 +        <name>antialias</name>
   9.584 +        <required>false</required>
   9.585 +        <rtexprvalue>true</rtexprvalue>
   9.586 +        <description>
   9.587 +            Antialiased rendering of the chart.
   9.588 +            @default true
   9.589 +            @overrides /chart[backgroundimagealpha]
   9.590 +        </description>
   9.591 +    </attribute>
   9.592 +    <attribute>
   9.593 +        <name>showlegend</name>
   9.594 +        <required>false</required>
   9.595 +        <rtexprvalue>true</rtexprvalue>
   9.596 +        <description>
   9.597 +           Boolean value to switch on or off the legend display inside of this panel.
   9.598 +           @default true
   9.599 +        </description>
   9.600 +    </attribute>
   9.601 +    <attribute>
   9.602 +        <name>legendanchor</name>
   9.603 +        <required>false</required>
   9.604 +        <rtexprvalue>true</rtexprvalue>
   9.605 +        <description>
   9.606 +            Sets the anchor of the legend inside of the panel. Possible values
   9.607 +            are 'north', 'south', 'west', 'east'.
   9.608 +            Ignored if showlegned is 'false'.
   9.609 +            @default 'south'
   9.610 +        </description>
   9.611 +    </attribute>
   9.612 +</tag>
   9.613 +<tag>
   9.614 +    <name>combinedchart</name>
   9.615 +    <tag-class>de.laures.cewolf.taglib.tags.CombinedChartTag</tag-class>
   9.616 +    <description>
   9.617 +        Root tag of a combined-chart description.
   9.618 +        @root
   9.619 +        @required-child plot
   9.620 +        @optional-child chartpostprocessor
   9.621 +    </description>
   9.622 +    <attribute>
   9.623 +        <name>id</name>
   9.624 +        <required>true</required>
   9.625 +        <rtexprvalue>true</rtexprvalue>
   9.626 +        <description>
   9.627 +            ID under which the chart description bean will be stored in the
   9.628 +            page to be found by the img tag. Beware of using an
   9.629 +            ID which is not yet used for other beans in the page to avoid
   9.630 +            compile errors.
   9.631 +        </description>
   9.632 +    </attribute>
   9.633 +    <attribute>
   9.634 +        <name>type</name>
   9.635 +        <required>true</required>
   9.636 +        <rtexprvalue>true</rtexprvalue>
   9.637 +        <description>
   9.638 +            Type of the chart. One of combinedxy
   9.639 +        </description>
   9.640 +    </attribute>
   9.641 +    <attribute>
   9.642 +        <name>layout</name>
   9.643 +        <required>true</required>
   9.644 +        <rtexprvalue>true</rtexprvalue>
   9.645 +        <description>
   9.646 +            Layout of the chart. Either vertical or horizontal
   9.647 +        </description>
   9.648 +    </attribute>
   9.649 +    <attribute>
   9.650 +        <name>title</name>
   9.651 +        <required>false</required>
   9.652 +        <rtexprvalue>true</rtexprvalue>
   9.653 +        <description>
   9.654 +            Title of the chart which is displayed on the chart panel
   9.655 +            above the plot pane.
   9.656 +        </description>
   9.657 +    </attribute>
   9.658 +    <attribute>
   9.659 +        <name>xaxislabel</name>
   9.660 +        <required>false</required>
   9.661 +        <rtexprvalue>true</rtexprvalue>
   9.662 +        <description>
   9.663 +            Title of the chart's x-axis. This attributes is
   9.664 +            ignored if the type attribute of the parent chart tag is one
   9.665 +            of pie3d or pie.
   9.666 +        </description>
   9.667 +    </attribute>
   9.668 +    <attribute>
   9.669 +        <name>yaxislabel</name>
   9.670 +        <required>false</required>
   9.671 +        <rtexprvalue>true</rtexprvalue>
   9.672 +        <description>
   9.673 +            Title of the chart's y-axis. This attributes is
   9.674 +            ignored if the type attribute of the parent chart tag is one
   9.675 +            of pie3d or pie.
   9.676 +        </description>
   9.677 +    </attribute>
   9.678 +    <attribute>
   9.679 +        <name>background</name>
   9.680 +        <required>false</required>
   9.681 +        <rtexprvalue>true</rtexprvalue>
   9.682 +        <description>
   9.683 +            Background image of the chart panel. The value of this
   9.684 +            attribute is the filename of a graphics file relative to the web
   9.685 +            application's root directory (e.g. /WEB-INF/img/bg.jpg).
   9.686 +            The image must be loadable by the default java.awt.Toolkit of the
   9.687 +            servlet container's JVM.
   9.688 +        </description>
   9.689 +    </attribute>
   9.690 +    <attribute>
   9.691 +        <name>backgroundimagealpha</name>
   9.692 +        <required>false</required>
   9.693 +        <rtexprvalue>true</rtexprvalue>
   9.694 +        <type>java.lang.Float</type>
   9.695 +        <description>
   9.696 +            Chart's backgound alpha blending value as a float. Value ranges
   9.697 +            from 0.0 to 1.0.
   9.698 +            @default 0.0
   9.699 +            @overrides /chart[backgroundimagealpha]
   9.700 +        </description>
   9.701 +    </attribute>
   9.702 +    <attribute>
   9.703 +        <name>antialias</name>
   9.704 +        <required>false</required>
   9.705 +        <rtexprvalue>true</rtexprvalue>
   9.706 +        <description>
   9.707 +            Antialiased rendering of the chart.
   9.708 +            @default true
   9.709 +            @overrides /chart[backgroundimagealpha]
   9.710 +        </description>
   9.711 +    </attribute>
   9.712 +    <attribute>
   9.713 +        <name>showlegend</name>
   9.714 +        <required>false</required>
   9.715 +        <rtexprvalue>true</rtexprvalue>
   9.716 +        <description>
   9.717 +           Boolean value to switch on or off the legend display inside of this panel.
   9.718 +           @default true
   9.719 +        </description>
   9.720 +    </attribute>
   9.721 +    <attribute>
   9.722 +        <name>legendanchor</name>
   9.723 +        <required>false</required>
   9.724 +        <rtexprvalue>true</rtexprvalue>
   9.725 +        <description>
   9.726 +            Sets the anchor of the legend inside of the panel. Possible values
   9.727 +            are 'north', 'south', 'west', 'east'.
   9.728 +            Ignored if showlegned is 'false'.
   9.729 +            @default 'south'
   9.730 +        </description>
   9.731 +    </attribute>
   9.732 +</tag>
   9.733 +<tag>
   9.734 +    <name>legend</name>
   9.735 +    <tag-class>de.laures.cewolf.taglib.tags.LegendTag</tag-class>
   9.736 +    <description>
   9.737 +       This tag is used to render the legend of a chart in a separate image.
   9.738 +       It assumes that somewhere else in the JSP a chart tag defines a chart
   9.739 +       with the same ID as this legend tag.
   9.740 +    </description>
   9.741 +     <attribute>
   9.742 +        <name>forceSessionId</name>
   9.743 +        <required>false</required>
   9.744 +        <rtexprvalue>true</rtexprvalue>
   9.745 +        <description>
   9.746 +           Add JSession id.
   9.747 +        </description>
   9.748 +    </attribute>    
   9.749 +    <attribute>
   9.750 +        <name>removeAfterRender</name>
   9.751 +        <required>false</required>
   9.752 +        <rtexprvalue>true</rtexprvalue>
   9.753 +        <description>
   9.754 +           Remove image after rendering (defaults to false).
   9.755 +        </description>
   9.756 +    </attribute>
   9.757 +    <attribute>
   9.758 +        <name>renderer</name>
   9.759 +        <required>true</required>
   9.760 +        <rtexprvalue>true</rtexprvalue>
   9.761 +        <description>
   9.762 +            Path to rendering servlet relative to web apps root URL
   9.763 +            (e.g. servlet/cewolf).
   9.764 +        </description>
   9.765 +    </attribute>
   9.766 +    <attribute>
   9.767 +        <name>id</name>
   9.768 +        <required>true</required>
   9.769 +        <rtexprvalue>true</rtexprvalue>
   9.770 +        <description>
   9.771 +            ID under which the chart description bean will be stored in the
   9.772 +            session to be found by the rendering servlet. Beware of using an
   9.773 +            ID which is not yet used for other beans in the session to avoid
   9.774 +            overriding.
   9.775 +        </description>
   9.776 +    </attribute>
   9.777 +    <attribute>
   9.778 +        <name>timeout</name>
   9.779 +        <required>false</required>
   9.780 +        <rtexprvalue>true</rtexprvalue>
   9.781 +        <description>
   9.782 +           Sets the timeout value used in the LongTermSessionStorage obj. Value is in seconds.
   9.783 +        </description>
   9.784 +    </attribute>
   9.785 +    <attribute>
   9.786 +        <name>width</name>
   9.787 +        <required>false</required>
   9.788 +        <rtexprvalue>true</rtexprvalue>
   9.789 +        <description>
   9.790 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.791 +        </description>
   9.792 +    </attribute>
   9.793 +    <attribute>
   9.794 +        <name>height</name>
   9.795 +        <required>false</required>
   9.796 +        <rtexprvalue>true</rtexprvalue>
   9.797 +        <description>
   9.798 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.799 +        </description>
   9.800 +    </attribute>
   9.801 +    <attribute>
   9.802 +        <name>mime</name>
   9.803 +        <required>false</required>
   9.804 +        <rtexprvalue>true</rtexprvalue>
   9.805 +        <description>
   9.806 +            The MIME type of the image. Currently image/png (default) and image/svg are supported.
   9.807 +            @default image/png
   9.808 +        </description>
   9.809 +    </attribute>
   9.810 +    <attribute>
   9.811 +        <name>alt</name>
   9.812 +        <required>false</required>
   9.813 +        <rtexprvalue>true</rtexprvalue>
   9.814 +        <description>
   9.815 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.816 +        </description>
   9.817 +    </attribute>
   9.818 +    <attribute>
   9.819 +        <name>hspace</name>
   9.820 +        <required>false</required>
   9.821 +        <rtexprvalue>true</rtexprvalue>
   9.822 +        <description>
   9.823 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.824 +        </description>
   9.825 +    </attribute>
   9.826 +    <attribute>
   9.827 +        <name>vspace</name>
   9.828 +        <required>false</required>
   9.829 +        <rtexprvalue>true</rtexprvalue>
   9.830 +        <description>
   9.831 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.832 +        </description>
   9.833 +    </attribute>
   9.834 +    <attribute>
   9.835 +        <name>align</name>
   9.836 +        <required>false</required>
   9.837 +        <rtexprvalue>true</rtexprvalue>
   9.838 +        <description>
   9.839 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.840 +        </description>
   9.841 +    </attribute>
   9.842 +    <attribute>
   9.843 +        <name>border</name>
   9.844 +        <required>false</required>
   9.845 +        <rtexprvalue>true</rtexprvalue>
   9.846 +        <description>
   9.847 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.848 +        </description>
   9.849 +    </attribute>
   9.850 +    <attribute>
   9.851 +        <name>ismap</name>
   9.852 +        <required>false</required>
   9.853 +        <rtexprvalue>true</rtexprvalue>
   9.854 +        <description>
   9.855 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.856 +        </description>
   9.857 +    </attribute>
   9.858 +    <attribute>
   9.859 +        <name>longdesc</name>
   9.860 +        <required>false</required>
   9.861 +        <rtexprvalue>true</rtexprvalue>
   9.862 +        <description>
   9.863 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.864 +        </description>
   9.865 +    </attribute>
   9.866 +    <attribute>
   9.867 +        <name>usemap</name>
   9.868 +        <required>false</required>
   9.869 +        <rtexprvalue>true</rtexprvalue>
   9.870 +        <description>
   9.871 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.872 +        </description>
   9.873 +    </attribute>
   9.874 +    <attribute>
   9.875 +        <name>class</name>
   9.876 +        <required>false</required>
   9.877 +        <rtexprvalue>true</rtexprvalue>
   9.878 +        <description>
   9.879 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.880 +        </description>
   9.881 +    </attribute>
   9.882 +    <attribute>
   9.883 +        <name>dir</name>
   9.884 +        <required>false</required>
   9.885 +        <rtexprvalue>true</rtexprvalue>
   9.886 +        <description>
   9.887 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.888 +        </description>
   9.889 +    </attribute>
   9.890 +    <attribute>
   9.891 +        <name>lang</name>
   9.892 +        <required>false</required>
   9.893 +        <rtexprvalue>true</rtexprvalue>
   9.894 +        <description>
   9.895 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.896 +        </description>
   9.897 +    </attribute>
   9.898 +    <attribute>
   9.899 +        <name>onclick</name>
   9.900 +        <required>false</required>
   9.901 +        <rtexprvalue>true</rtexprvalue>
   9.902 +        <description>
   9.903 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.904 +        </description>
   9.905 +    </attribute>
   9.906 +    <attribute>
   9.907 +        <name>ondbclick</name>
   9.908 +        <required>false</required>
   9.909 +        <rtexprvalue>true</rtexprvalue>
   9.910 +        <description>
   9.911 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.912 +        </description>
   9.913 +    </attribute>
   9.914 +    <attribute>
   9.915 +        <name>onkeydown</name>
   9.916 +        <required>false</required>
   9.917 +        <rtexprvalue>true</rtexprvalue>
   9.918 +        <description>
   9.919 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.920 +        </description>
   9.921 +    </attribute>
   9.922 +    <attribute>
   9.923 +        <name>onkeypress</name>
   9.924 +        <required>false</required>
   9.925 +        <rtexprvalue>true</rtexprvalue>
   9.926 +        <description>
   9.927 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.928 +        </description>
   9.929 +    </attribute>
   9.930 +    <attribute>
   9.931 +        <name>onkeyup</name>
   9.932 +        <required>false</required>
   9.933 +        <rtexprvalue>true</rtexprvalue>
   9.934 +        <description>
   9.935 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.936 +        </description>
   9.937 +    </attribute>
   9.938 +    <attribute>
   9.939 +        <name>onmousedown</name>
   9.940 +        <required>false</required>
   9.941 +        <rtexprvalue>true</rtexprvalue>
   9.942 +        <description>
   9.943 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.944 +        </description>
   9.945 +    </attribute>
   9.946 +    <attribute>
   9.947 +        <name>onmousemove</name>
   9.948 +        <required>false</required>
   9.949 +        <rtexprvalue>true</rtexprvalue>
   9.950 +        <description>
   9.951 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.952 +        </description>
   9.953 +    </attribute>
   9.954 +    <attribute>
   9.955 +        <name>onmouseout</name>
   9.956 +        <required>false</required>
   9.957 +        <rtexprvalue>true</rtexprvalue>
   9.958 +        <description>
   9.959 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.960 +        </description>
   9.961 +    </attribute>
   9.962 +    <attribute>
   9.963 +        <name>onmouseover</name>
   9.964 +        <required>false</required>
   9.965 +        <rtexprvalue>true</rtexprvalue>
   9.966 +        <description>
   9.967 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.968 +        </description>
   9.969 +    </attribute>
   9.970 +    <attribute>
   9.971 +        <name>onmouseup</name>
   9.972 +        <required>false</required>
   9.973 +        <rtexprvalue>true</rtexprvalue>
   9.974 +        <description>
   9.975 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.976 +        </description>
   9.977 +    </attribute>
   9.978 +    <attribute>
   9.979 +        <name>style</name>
   9.980 +        <required>false</required>
   9.981 +        <rtexprvalue>true</rtexprvalue>
   9.982 +        <description>
   9.983 +           Corresponds to appropriate HMTL &lt;img&gt; attribute.
   9.984 +        </description>
   9.985 +    </attribute>
   9.986 +    <attribute>
   9.987 +        <name>htmltitle</name>
   9.988 +        <required>false</required>
   9.989 +        <rtexprvalue>true</rtexprvalue>
   9.990 +        <description>
   9.991 +           Corresponds to appropriate HMTL &lt;img&gt; title attribute.
   9.992 +        </description>
   9.993 +    </attribute>
   9.994 +</tag>
   9.995 +<tag>
   9.996 +    <name>data</name>
   9.997 +    <tag-class>de.laures.cewolf.taglib.tags.DataTag</tag-class>
   9.998 +    <description>
   9.999 +        A data tag provides all information needed to retrieve the data which are
  9.1000 +        needed by the chart. Current version only supports data provided by a
  9.1001 +        DatasetProducer. In future versions there will be tags to provide data
  9.1002 +        from a datasource (e.g. via SQL).
  9.1003 +        @optional-child producer
  9.1004 +    </description>
  9.1005 +</tag>
  9.1006 +<tag>
  9.1007 +    <name>producer</name>
  9.1008 +    <tag-class>de.laures.cewolf.taglib.tags.ProducerTag</tag-class>
  9.1009 +    <description>
  9.1010 +        A data tag provides all information needed to retrieve the data which are
  9.1011 +        needed by the chart. Current version only supports data provided by a
  9.1012 +        DatasetProducer. In future versions there will be tags to provide data
  9.1013 +        from a datasource (e.g. via SQL).
  9.1014 +        @optional-child param
  9.1015 +    </description>
  9.1016 +    <attribute>
  9.1017 +        <name>id</name>
  9.1018 +        <required>true</required>
  9.1019 +        <rtexprvalue>true</rtexprvalue>
  9.1020 +        <description>
  9.1021 +            ID under which an object of type DatasetProducer can be found in
  9.1022 +            pageContext. This object is used to retrieve the dataset of the chart.
  9.1023 +        </description>
  9.1024 +    </attribute>
  9.1025 +    <attribute>
  9.1026 +        <name>usecache</name>
  9.1027 +        <required>false</required>
  9.1028 +        <rtexprvalue>true</rtexprvalue>
  9.1029 +        <description>
  9.1030 +            Determines if formally produced data should be reused if possible.
  9.1031 +            @default true
  9.1032 +        </description>
  9.1033 +    </attribute>
  9.1034 +</tag>
  9.1035 +<tag>
  9.1036 +    <name>chartpostprocessor</name>
  9.1037 +    <tag-class>de.laures.cewolf.taglib.tags.ChartPostProcessorTag</tag-class>
  9.1038 +    <description>
  9.1039 +        A chart postprocessor tag references an object of type ChartProstProcessor
  9.1040 +        which must be defined in pageContext under the provided ID. This object
  9.1041 +        is called back after chart generation to post process the chart in any
  9.1042 +        manner.
  9.1043 +        @optional-child param
  9.1044 +    </description>
  9.1045 +    <attribute>
  9.1046 +        <name>id</name>
  9.1047 +        <required>true</required>
  9.1048 +        <rtexprvalue>true</rtexprvalue>
  9.1049 +        <description>
  9.1050 +            ID under which an object of type ChartPostProcessor can be found in
  9.1051 +            pageContext. This object is used to postprocess the rendered chart.
  9.1052 +        </description>
  9.1053 +    </attribute>
  9.1054 +</tag>
  9.1055 +<tag>
  9.1056 +    <name>param</name>
  9.1057 +    <tag-class>de.laures.cewolf.taglib.tags.ParamTag</tag-class>
  9.1058 +    <description>
  9.1059 +        Name/value-pair to paramterize a surrounding tag whose handler must 
  9.1060 +        implement the Parameterized interface.
  9.1061 +    </description>
  9.1062 +    <attribute>
  9.1063 +        <name>name</name>
  9.1064 +        <required>true</required>
  9.1065 +        <rtexprvalue>true</rtexprvalue>
  9.1066 +        <description>
  9.1067 +            Name of the param
  9.1068 +        </description>
  9.1069 +    </attribute>
  9.1070 +    <attribute>
  9.1071 +        <name>value</name>
  9.1072 +        <required>true</required>
  9.1073 +        <rtexprvalue>true</rtexprvalue>
  9.1074 +        <type>java.io.Serializable</type>
  9.1075 +        <description>
  9.1076 +            Value of the param. Must be serializable.
  9.1077 +        </description>
  9.1078 +    </attribute>
  9.1079 +</tag>
  9.1080 +<tag>
  9.1081 +    <name>gradientpaint</name>
  9.1082 +    <tag-class>de.laures.cewolf.taglib.tags.GradientTag</tag-class>
  9.1083 +    <description>
  9.1084 +        The gradientpaint tag provides a way to fill a shape with a linear 
  9.1085 +        color gradient pattern. If Point P1 with Color C1 and Point P2 with 
  9.1086 +        Color C2 are specified in user space, the Color on the P1, P2 
  9.1087 +        connecting line is proportionally changed from C1 to C2. Any point 
  9.1088 +        P not on the extended P1, P2 connecting line has the color of the 
  9.1089 +        point P' that is the perpendicular projection of P on the extended P1,
  9.1090 +        P2 connecting line. Points on the extended line outside of the P1,
  9.1091 +        P2 segment can be colored in one of two ways.
  9.1092 +        &lt;ul&gt;
  9.1093 +        &lt;li&gt;If the gradient is cyclic then the points on the extended 
  9.1094 +        P1, P2 connecting line cycle back and forth between the colors C1 
  9.1095 +        and C2.
  9.1096 +        &lt;li&gt;If the gradient is acyclic then points on the P1 side of 
  9.1097 +        the segment have the constant Color C1 while points on the P2 side 
  9.1098 +        have the constant Color C2.
  9.1099 +        The two colors are defined in a nested point tag of this tag. 
  9.1100 +        @required-child point
  9.1101 +    </description>
  9.1102 +    <attribute>
  9.1103 +        <name>cyclic</name>
  9.1104 +        <required>false</required>
  9.1105 +        <rtexprvalue>true</rtexprvalue>
  9.1106 +        <description>
  9.1107 +            Does the gradient cycle repeatedly between the two colors C1 and C2.
  9.1108 +            @default false
  9.1109 +        </description>
  9.1110 +    </attribute>
  9.1111 +</tag>
  9.1112 +<tag>
  9.1113 +    <name>point</name>
  9.1114 +    <tag-class>de.laures.cewolf.taglib.tags.PointTag</tag-class>
  9.1115 +    <description>
  9.1116 +        Defines a point with x and y coordinates and a color.
  9.1117 +        @extends colorpaint
  9.1118 +    </description>
  9.1119 +    <attribute>
  9.1120 +        <name>x</name>
  9.1121 +        <required>true</required>
  9.1122 +        <rtexprvalue>true</rtexprvalue>
  9.1123 +        <description>
  9.1124 +            The x coordinate of the point.
  9.1125 +        </description>
  9.1126 +    </attribute>
  9.1127 +    <attribute>
  9.1128 +        <name>y</name>
  9.1129 +        <required>true</required>
  9.1130 +        <rtexprvalue>true</rtexprvalue>
  9.1131 +        <description>
  9.1132 +            The y coordinate of the point.
  9.1133 +        </description>
  9.1134 +    </attribute>
  9.1135 +    <attribute>
  9.1136 +        <name>color</name>
  9.1137 +        <required>false</required>
  9.1138 +        <rtexprvalue>true</rtexprvalue>
  9.1139 +        <description>
  9.1140 +            @copy
  9.1141 +        </description>
  9.1142 +    </attribute>
  9.1143 +</tag>
  9.1144 +<tag>
  9.1145 +    <name>colorpaint</name>
  9.1146 +    <tag-class>de.laures.cewolf.taglib.tags.ColorTag</tag-class>
  9.1147 +    <description>
  9.1148 +        Fills the area defined by the parent tag with a color. 
  9.1149 +    </description>
  9.1150 +    <attribute>
  9.1151 +        <name>color</name>
  9.1152 +        <required>true</required>
  9.1153 +        <rtexprvalue>true</rtexprvalue>
  9.1154 +        <description>
  9.1155 +            The color to be used to fill the parent tag's area.
  9.1156 +            The color definition is compatible with the
  9.1157 +            HTML one. E.g. black is '#000000' and red is '#FF0000'. However it
  9.1158 +            is possible to append two hex numbers for the alpha channel. Thus
  9.1159 +            '#FF000080' is red with alpha blending of 50%.
  9.1160 +        </description>
  9.1161 +    </attribute>
  9.1162 +</tag>
  9.1163 +<tag>
  9.1164 +    <name>texturepaint</name>
  9.1165 +    <tag-class>de.laures.cewolf.taglib.tags.TextureTag</tag-class>
  9.1166 +    <description>
  9.1167 +        The texturepaint tag provides a way to fill the area of the parent tag
  9.1168 +        with a texture that is specified as an image. The texture is anchored to 
  9.1169 +        the upper left corner of the parent tags area.
  9.1170 +    </description>
  9.1171 +    <attribute>
  9.1172 +        <name>image</name>
  9.1173 +        <required>true</required>
  9.1174 +        <rtexprvalue>true</rtexprvalue>
  9.1175 +        <description>
  9.1176 +            Image fo the texture. The value of this 
  9.1177 +            attribute is the filename of a graphics file relative to the web
  9.1178 +            application's root directory (e.g. /WEB-INF/img/bg.jpg).
  9.1179 +            The image must be loadable by the default java.awt.Toolkit of the
  9.1180 +            servlet container's JVM.
  9.1181 +        </description>
  9.1182 +    </attribute>
  9.1183 +    <attribute>
  9.1184 +        <name>width</name>
  9.1185 +        <required>true</required>
  9.1186 +        <rtexprvalue>true</rtexprvalue>
  9.1187 +        <description>
  9.1188 +            The width of the texture.
  9.1189 +        </description>
  9.1190 +    </attribute>
  9.1191 +    <attribute>
  9.1192 +        <name>height</name>
  9.1193 +        <required>true</required>
  9.1194 +        <rtexprvalue>true</rtexprvalue>
  9.1195 +        <description>
  9.1196 +            The height of the texture.
  9.1197 +        </description>  
  9.1198 +    </attribute>
  9.1199 +</tag>
  9.1200 +<tag>
  9.1201 +    <name>map</name>
  9.1202 +    <tag-class>de.laures.cewolf.taglib.tags.ChartMapTag</tag-class>
  9.1203 +    <description>
  9.1204 +      This tag defines an image and tooltip map for the parent img tag.
  9.1205 +      @parent img
  9.1206 +    </description>
  9.1207 +    <attribute>
  9.1208 +        <name>linkgeneratorid</name>
  9.1209 +        <required>false</required>
  9.1210 +        <rtexprvalue>true</rtexprvalue>
  9.1211 +        <description>
  9.1212 +          The ID of the class which implements the appropriate de.laures.cewolf.LinkGenerator.
  9.1213 +        </description>
  9.1214 +    </attribute>
  9.1215 +    <attribute>
  9.1216 +        <name>tooltipgeneratorid</name>
  9.1217 +        <required>false</required>
  9.1218 +        <rtexprvalue>true</rtexprvalue>
  9.1219 +        <description>
  9.1220 +          The ID of the class which implements the appropriate com.jrefinery.chart.tooltips.ToolTipGenerator.
  9.1221 +        </description>
  9.1222 +    </attribute>
  9.1223 +	<attribute>
  9.1224 +		<name>useJFreeChartLinkGenerator</name>
  9.1225 +		<required>false</required>
  9.1226 +		<rtexprvalue>true</rtexprvalue>
  9.1227 +		<description>If the links provided by the JFreeChart renderer should be used.</description>
  9.1228 +	</attribute>
  9.1229 +	<attribute>
  9.1230 +		<name>useJFreeChartTooltipGenerator</name>
  9.1231 +		<required>false</required>
  9.1232 +		<rtexprvalue>true</rtexprvalue>
  9.1233 +		<description>If the tooltips provided by the JFreeChart renderer should be used.</description>		
  9.1234 +	</attribute>	
  9.1235 +	
  9.1236 +</tag>
  9.1237 +</taglib>
  9.1238 \ No newline at end of file
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/java/cewolf-1.0/etc/overlib.js	Sat Feb 28 21:31:02 2009 +0100
    10.3 @@ -0,0 +1,1222 @@
    10.4 +//\//////////////////////////////////////////////////////////////////////////////////
    10.5 +//\  overLIB 3.50  --  This notice must remain untouched at all times.
    10.6 +//\  Copyright Erik Bosrup 1998-2001. All rights reserved.
    10.7 +//\
    10.8 +//\  By Erik Bosrup (erik@bosrup.com).  Last modified 2001-08-28.
    10.9 +//\  Portions by Dan Steinman (dansteinman.com). Additions by other people are
   10.10 +//\  listed on the overLIB homepage.
   10.11 +//\
   10.12 +//\  Get the latest version at http://www.bosrup.com/web/overlib/
   10.13 +//\
   10.14 +//\  This script is published under an open source license. Please read the license
   10.15 +//\  agreement online at: http://www.bosrup.com/web/overlib/license.html
   10.16 +//\  If you have questions regarding the license please contact erik@bosrup.com.
   10.17 +//\
   10.18 +//\  This script library was originally created for personal use. By request it has
   10.19 +//\  later been made public. This is free software. Do not sell this as your own
   10.20 +//\  work, or remove this copyright notice. For full details on copying or changing
   10.21 +//\  this script please read the license agreement at the link above.
   10.22 +//\
   10.23 +//\  Please give credit on sites that use overLIB and submit changes of the script
   10.24 +//\  so other people can use them as well. This script is free to use, don't abuse.
   10.25 +//\//////////////////////////////////////////////////////////////////////////////////
   10.26 +//\mini
   10.27 +
   10.28 +
   10.29 +////////////////////////////////////////////////////////////////////////////////////
   10.30 +// CONSTANTS
   10.31 +// Don't touch these. :)
   10.32 +////////////////////////////////////////////////////////////////////////////////////
   10.33 +var INARRAY		=	1;
   10.34 +var CAPARRAY		=	2;
   10.35 +var STICKY		=	3;
   10.36 +var BACKGROUND		=	4;
   10.37 +var NOCLOSE		=	5;
   10.38 +var CAPTION		=	6;
   10.39 +var LEFT		=	7;
   10.40 +var RIGHT		=	8;
   10.41 +var CENTER		=	9;
   10.42 +var OFFSETX		=	10;
   10.43 +var OFFSETY		=	11;
   10.44 +var FGCOLOR		=	12;
   10.45 +var BGCOLOR		=	13;
   10.46 +var TEXTCOLOR		=	14;
   10.47 +var CAPCOLOR		=	15;
   10.48 +var CLOSECOLOR		=	16;
   10.49 +var WIDTH		=	17;
   10.50 +var BORDER		=	18;
   10.51 +var STATUS		=	19;
   10.52 +var AUTOSTATUS		=	20;
   10.53 +var AUTOSTATUSCAP	=	21;
   10.54 +var HEIGHT		=	22;
   10.55 +var CLOSETEXT		=	23;
   10.56 +var SNAPX		=	24;
   10.57 +var SNAPY		=	25;
   10.58 +var FIXX		=	26;
   10.59 +var FIXY		=	27;
   10.60 +var FGBACKGROUND	=	28;
   10.61 +var BGBACKGROUND	=	29;
   10.62 +var PADX		=	30; // PADX2 out
   10.63 +var PADY		=	31; // PADY2 out
   10.64 +var FULLHTML		=	34;
   10.65 +var ABOVE		=	35;
   10.66 +var BELOW		=	36;
   10.67 +var CAPICON		=	37;
   10.68 +var TEXTFONT		=	38;
   10.69 +var CAPTIONFONT		=	39;
   10.70 +var CLOSEFONT		=	40;
   10.71 +var TEXTSIZE		=	41;
   10.72 +var CAPTIONSIZE		=	42;
   10.73 +var CLOSESIZE		=	43;
   10.74 +var FRAME		=	44;
   10.75 +var TIMEOUT		=	45;
   10.76 +var FUNCTION		=	46;
   10.77 +var DELAY		=	47;
   10.78 +var HAUTO		=	48;
   10.79 +var VAUTO		=	49;
   10.80 +var CLOSECLICK		=	50;
   10.81 +var CSSOFF		=	51;
   10.82 +var CSSSTYLE		=	52;
   10.83 +var CSSCLASS		=	53;
   10.84 +var FGCLASS		=	54;
   10.85 +var BGCLASS		=	55;
   10.86 +var TEXTFONTCLASS	=	56;
   10.87 +var CAPTIONFONTCLASS	=	57;
   10.88 +var CLOSEFONTCLASS	=	58;
   10.89 +var PADUNIT		=	59;
   10.90 +var HEIGHTUNIT		=	60;
   10.91 +var WIDTHUNIT		=	61;
   10.92 +var TEXTSIZEUNIT	=	62;
   10.93 +var TEXTDECORATION	=	63;
   10.94 +var TEXTSTYLE		=	64;
   10.95 +var TEXTWEIGHT		=	65;
   10.96 +var CAPTIONSIZEUNIT	=	66;
   10.97 +var CAPTIONDECORATION	=	67;
   10.98 +var CAPTIONSTYLE	=	68;
   10.99 +var CAPTIONWEIGHT	=	69;
  10.100 +var CLOSESIZEUNIT	=	70;
  10.101 +var CLOSEDECORATION	=	71;
  10.102 +var CLOSESTYLE		=	72;
  10.103 +var CLOSEWEIGHT		=	73;
  10.104 +
  10.105 +
  10.106 +////////////////////////////////////////////////////////////////////////////////////
  10.107 +// DEFAULT CONFIGURATION
  10.108 +// You don't have to change anything here if you don't want to. All of this can be
  10.109 +// changed on your html page or through an overLIB call.
  10.110 +////////////////////////////////////////////////////////////////////////////////////
  10.111 +
  10.112 +// Main background color (the large area)
  10.113 +// Usually a bright color (white, yellow etc)
  10.114 +if (typeof ol_fgcolor == 'undefined') { var ol_fgcolor = "#CCCCFF";}
  10.115 +	
  10.116 +// Border color and color of caption
  10.117 +// Usually a dark color (black, brown etc)
  10.118 +if (typeof ol_bgcolor == 'undefined') { var ol_bgcolor = "#333399";}
  10.119 +	
  10.120 +// Text color
  10.121 +// Usually a dark color
  10.122 +if (typeof ol_textcolor == 'undefined') { var ol_textcolor = "#000000";}
  10.123 +	
  10.124 +// Color of the caption text
  10.125 +// Usually a bright color
  10.126 +if (typeof ol_capcolor == 'undefined') { var ol_capcolor = "#FFFFFF";}
  10.127 +	
  10.128 +// Color of "Close" when using Sticky
  10.129 +// Usually a semi-bright color
  10.130 +if (typeof ol_closecolor == 'undefined') { var ol_closecolor = "#9999FF";}
  10.131 +
  10.132 +// Font face for the main text
  10.133 +if (typeof ol_textfont == 'undefined') { var ol_textfont = "Verdana,Arial,Helvetica";}
  10.134 +
  10.135 +// Font face for the caption
  10.136 +if (typeof ol_captionfont == 'undefined') { var ol_captionfont = "Verdana,Arial,Helvetica";}
  10.137 +
  10.138 +// Font face for the close text
  10.139 +if (typeof ol_closefont == 'undefined') { var ol_closefont = "Verdana,Arial,Helvetica";}
  10.140 +
  10.141 +// Font size for the main text
  10.142 +// When using CSS this will be very small.
  10.143 +if (typeof ol_textsize == 'undefined') { var ol_textsize = "1";}
  10.144 +
  10.145 +// Font size for the caption
  10.146 +// When using CSS this will be very small.
  10.147 +if (typeof ol_captionsize == 'undefined') { var ol_captionsize = "1";}
  10.148 +
  10.149 +// Font size for the close text
  10.150 +// When using CSS this will be very small.
  10.151 +if (typeof ol_closesize == 'undefined') { var ol_closesize = "1";}
  10.152 +
  10.153 +// Width of the popups in pixels
  10.154 +// 100-300 pixels is typical
  10.155 +if (typeof ol_width == 'undefined') { var ol_width = "200";}
  10.156 +
  10.157 +// How thick the ol_border should be in pixels
  10.158 +// 1-3 pixels is typical
  10.159 +if (typeof ol_border == 'undefined') { var ol_border = "1";}
  10.160 +
  10.161 +// How many pixels to the right/left of the cursor to show the popup
  10.162 +// Values between 3 and 12 are best
  10.163 +if (typeof ol_offsetx == 'undefined') { var ol_offsetx = 10;}
  10.164 +	
  10.165 +// How many pixels to the below the cursor to show the popup
  10.166 +// Values between 3 and 12 are best
  10.167 +if (typeof ol_offsety == 'undefined') { var ol_offsety = 10;}
  10.168 +
  10.169 +// Default text for popups
  10.170 +// Should you forget to pass something to overLIB this will be displayed.
  10.171 +if (typeof ol_text == 'undefined') { var ol_text = "Default Text"; }
  10.172 +
  10.173 +// Default caption
  10.174 +// You should leave this blank or you will have problems making non caps popups.
  10.175 +if (typeof ol_cap == 'undefined') { var ol_cap = ""; }
  10.176 +
  10.177 +// Decides if sticky popups are default.
  10.178 +// 0 for non, 1 for stickies.
  10.179 +if (typeof ol_sticky == 'undefined') { var ol_sticky = 0; }
  10.180 +
  10.181 +// Default background image. Better left empty unless you always want one.
  10.182 +if (typeof ol_background == 'undefined') { var ol_background = ""; }
  10.183 +
  10.184 +// Text for the closing sticky popups.
  10.185 +// Normal is "Close".
  10.186 +if (typeof ol_close == 'undefined') { var ol_close = "Close"; }
  10.187 +
  10.188 +// Default vertical alignment for popups.
  10.189 +// It's best to leave RIGHT here. Other options are LEFT and CENTER.
  10.190 +if (typeof ol_hpos == 'undefined') { var ol_hpos = RIGHT; }
  10.191 +
  10.192 +// Default status bar text when a popup is invoked.
  10.193 +if (typeof ol_status == 'undefined') { var ol_status = ""; }
  10.194 +
  10.195 +// If the status bar automatically should load either text or caption.
  10.196 +// 0=nothing, 1=text, 2=caption
  10.197 +if (typeof ol_autostatus == 'undefined') { var ol_autostatus = 0; }
  10.198 +
  10.199 +// Default height for popup. Often best left alone.
  10.200 +if (typeof ol_height == 'undefined') { var ol_height = -1; }
  10.201 +
  10.202 +// Horizontal grid spacing that popups will snap to.
  10.203 +// 0 makes no grid, anything else will cause a snap to that grid spacing.
  10.204 +if (typeof ol_snapx == 'undefined') { var ol_snapx = 0; }
  10.205 +
  10.206 +// Vertical grid spacing that popups will snap to.
  10.207 +// 0 makes no grid, andthing else will cause a snap to that grid spacing.
  10.208 +if (typeof ol_snapy == 'undefined') { var ol_snapy = 0; }
  10.209 +
  10.210 +// Sets the popups horizontal position to a fixed column.
  10.211 +// Anything above -1 will cause fixed position.
  10.212 +if (typeof ol_fixx == 'undefined') { var ol_fixx = -1; }
  10.213 +
  10.214 +// Sets the popups vertical position to a fixed row.
  10.215 +// Anything above -1 will cause fixed position.
  10.216 +if (typeof ol_fixy == 'undefined') { var ol_fixy = -1; }
  10.217 +
  10.218 +// Background image for the popups inside.
  10.219 +if (typeof ol_fgbackground == 'undefined') { var ol_fgbackground = ""; }
  10.220 +
  10.221 +// Background image for the popups frame.
  10.222 +if (typeof ol_bgbackground == 'undefined') { var ol_bgbackground = ""; }
  10.223 +
  10.224 +// How much horizontal left padding text should get by default when BACKGROUND is used.
  10.225 +if (typeof ol_padxl == 'undefined') { var ol_padxl = 1; }
  10.226 +
  10.227 +// How much horizontal right padding text should get by default when BACKGROUND is used.
  10.228 +if (typeof ol_padxr == 'undefined') { var ol_padxr = 1; }
  10.229 +
  10.230 +// How much vertical top padding text should get by default when BACKGROUND is used.
  10.231 +if (typeof ol_padyt == 'undefined') { var ol_padyt = 1; }
  10.232 +
  10.233 +// How much vertical bottom padding text should get by default when BACKGROUND is used.
  10.234 +if (typeof ol_padyb == 'undefined') { var ol_padyb = 1; }
  10.235 +
  10.236 +// If the user by default must supply all html for complete popup control.
  10.237 +// Set to 1 to activate, 0 otherwise.
  10.238 +if (typeof ol_fullhtml == 'undefined') { var ol_fullhtml = 0; }
  10.239 +
  10.240 +// Default vertical position of the popup. Default should normally be BELOW.
  10.241 +// ABOVE only works when HEIGHT is defined.
  10.242 +if (typeof ol_vpos == 'undefined') { var ol_vpos = BELOW; }
  10.243 +
  10.244 +// Default height of popup to use when placing the popup above the cursor.
  10.245 +if (typeof ol_aboveheight == 'undefined') { var ol_aboveheight = 0; }
  10.246 +
  10.247 +// Default icon to place next to the popups caption.
  10.248 +if (typeof ol_caption == 'undefined') { var ol_capicon = ""; }
  10.249 +
  10.250 +// Default frame. We default to current frame if there is no frame defined.
  10.251 +if (typeof ol_frame == 'undefined') { var ol_frame = self; }
  10.252 +
  10.253 +// Default timeout. By default there is no timeout.
  10.254 +if (typeof ol_timeout == 'undefined') { var ol_timeout = 0; }
  10.255 +
  10.256 +// Default javascript funktion. By default there is none.
  10.257 +if (typeof ol_function == 'undefined') { var ol_function = Function(); }
  10.258 +
  10.259 +// Default timeout. By default there is no timeout.
  10.260 +if (typeof ol_delay == 'undefined') { var ol_delay = 0; }
  10.261 +
  10.262 +// If overLIB should decide the horizontal placement.
  10.263 +if (typeof ol_hauto == 'undefined') { var ol_hauto = 0; }
  10.264 +
  10.265 +// If overLIB should decide the vertical placement.
  10.266 +if (typeof ol_vauto == 'undefined') { var ol_vauto = 0; }
  10.267 +
  10.268 +
  10.269 +
  10.270 +// If the user has to click to close stickies.
  10.271 +if (typeof ol_closeclick == 'undefined') { var ol_closeclick = 0; }
  10.272 +
  10.273 +// This variable determines if you want to use CSS or inline definitions.
  10.274 +// CSSOFF=no CSS    CSSSTYLE=use CSS inline styles    CSSCLASS=use classes
  10.275 +if (typeof ol_css == 'undefined') { var ol_css = CSSOFF; }
  10.276 +
  10.277 +// Main background class (eqv of fgcolor)
  10.278 +// This is only used if CSS is set to use classes (ol_css = CSSCLASS)
  10.279 +if (typeof ol_fgclass == 'undefined') { var ol_fgclass = ""; }
  10.280 +
  10.281 +// Frame background class (eqv of bgcolor)
  10.282 +// This is only used if CSS is set to use classes (ol_css = CSSCLASS)
  10.283 +if (typeof ol_bgclass == 'undefined') { var ol_bgclass = ""; }
  10.284 +
  10.285 +// Main font class
  10.286 +// This is only used if CSS is set to use classes (ol_css = CSSCLASS)
  10.287 +if (typeof ol_textfontclass == 'undefined') { var ol_textfontclass = ""; }
  10.288 +
  10.289 +// Caption font class
  10.290 +// This is only used if CSS is set to use classes (ol_css = CSSCLASS)
  10.291 +if (typeof ol_captionfontclass == 'undefined') { var ol_captionfontclass = ""; }
  10.292 +
  10.293 +// Close font class
  10.294 +// This is only used if CSS is set to use classes (ol_css = CSSCLASS)
  10.295 +if (typeof ol_closefontclass == 'undefined') { var ol_closefontclass = ""; }
  10.296 +
  10.297 +// Unit to be used for the text padding above
  10.298 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.299 +// Options include "px", "%", "in", "cm" and more
  10.300 +if (typeof ol_padunit == 'undefined') { var ol_padunit = "px";}
  10.301 +
  10.302 +// Unit to be used for height of popup
  10.303 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.304 +// Options include "px", "%", "in", "cm" and more
  10.305 +if (typeof ol_heightunit == 'undefined') { var ol_heightunit = "px";}
  10.306 +
  10.307 +// Unit to be used for width of popup
  10.308 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.309 +// Options include "px", "%", "in", "cm" and more
  10.310 +if (typeof ol_widthunit == 'undefined') { var ol_widthunit = "px";}
  10.311 +
  10.312 +// Font size unit for the main text
  10.313 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.314 +if (typeof ol_textsizeunit == 'undefined') { var ol_textsizeunit = "px";}
  10.315 +
  10.316 +// Decoration of the main text ("none", "underline", "line-through" or "blink")
  10.317 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.318 +if (typeof ol_textdecoration == 'undefined') { var ol_textdecoration = "none";}
  10.319 +
  10.320 +// Font style of the main text ("normal" or "italic")
  10.321 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.322 +if (typeof ol_textstyle == 'undefined') { var ol_textstyle = "normal";}
  10.323 +
  10.324 +// Font weight of the main text ("normal", "bold", "bolder", "lighter", ect.)
  10.325 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.326 +if (typeof ol_textweight == 'undefined') { var ol_textweight = "normal";}
  10.327 +
  10.328 +// Font size unit for the caption
  10.329 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.330 +if (typeof ol_captionsizeunit == 'undefined') { var ol_captionsizeunit = "px";}
  10.331 +
  10.332 +// Decoration of the caption ("none", "underline", "line-through" or "blink")
  10.333 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.334 +if (typeof ol_captiondecoration == 'undefined') { var ol_captiondecoration = "none";}
  10.335 +
  10.336 +// Font style of the caption ("normal" or "italic")
  10.337 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.338 +if (typeof ol_captionstyle == 'undefined') { var ol_captionstyle = "normal";}
  10.339 +
  10.340 +// Font weight of the caption ("normal", "bold", "bolder", "lighter", ect.)
  10.341 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.342 +if (typeof ol_captionweight == 'undefined') { var ol_captionweight = "bold";}
  10.343 +
  10.344 +// Font size unit for the close text
  10.345 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.346 +if (typeof ol_closesizeunit == 'undefined') { var ol_closesizeunit = "px";}
  10.347 +
  10.348 +// Decoration of the close text ("none", "underline", "line-through" or "blink")
  10.349 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.350 +if (typeof ol_closedecoration == 'undefined') { var ol_closedecoration = "none";}
  10.351 +
  10.352 +// Font style of the close text ("normal" or "italic")
  10.353 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.354 +if (typeof ol_closestyle == 'undefined') { var ol_closestyle = "normal";}
  10.355 +
  10.356 +// Font weight of the close text ("normal", "bold", "bolder", "lighter", ect.)
  10.357 +// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  10.358 +if (typeof ol_closeweight == 'undefined') { var ol_closeweight = "normal";}
  10.359 +
  10.360 +
  10.361 +
  10.362 +////////////////////////////////////////////////////////////////////////////////////
  10.363 +// ARRAY CONFIGURATION
  10.364 +// You don't have to change anything here if you don't want to. The following
  10.365 +// arrays can be filled with text and html if you don't wish to pass it from
  10.366 +// your html page.
  10.367 +////////////////////////////////////////////////////////////////////////////////////
  10.368 +
  10.369 +// Array with texts.
  10.370 +if (typeof ol_texts == 'undefined') { var ol_texts = new Array("Text 0", "Text 1"); }
  10.371 +
  10.372 +// Array with captions.
  10.373 +if (typeof ol_caps == 'undefined') { var ol_caps = new Array("Caption 0", "Caption 1"); }
  10.374 +
  10.375 +
  10.376 +////////////////////////////////////////////////////////////////////////////////////
  10.377 +// END CONFIGURATION
  10.378 +// Don't change anything below this line, all configuration is above.
  10.379 +////////////////////////////////////////////////////////////////////////////////////
  10.380 +
  10.381 +
  10.382 +
  10.383 +
  10.384 +
  10.385 +
  10.386 +
  10.387 +////////////////////////////////////////////////////////////////////////////////////
  10.388 +// INIT
  10.389 +////////////////////////////////////////////////////////////////////////////////////
  10.390 +
  10.391 +// Runtime variables init. Used for runtime only, don't change, not for config!
  10.392 +var o3_text = "";
  10.393 +var o3_cap = "";
  10.394 +var o3_sticky = 0;
  10.395 +var o3_background = "";
  10.396 +var o3_close = "Close";
  10.397 +var o3_hpos = RIGHT;
  10.398 +var o3_offsetx = 2;
  10.399 +var o3_offsety = 2;
  10.400 +var o3_fgcolor = "";
  10.401 +var o3_bgcolor = "";
  10.402 +var o3_textcolor = "";
  10.403 +var o3_capcolor = "";
  10.404 +var o3_closecolor = "";
  10.405 +var o3_width = 100;
  10.406 +var o3_border = 1;
  10.407 +var o3_status = "";
  10.408 +var o3_autostatus = 0;
  10.409 +var o3_height = -1;
  10.410 +var o3_snapx = 0;
  10.411 +var o3_snapy = 0;
  10.412 +var o3_fixx = -1;
  10.413 +var o3_fixy = -1;
  10.414 +var o3_fgbackground = "";
  10.415 +var o3_bgbackground = "";
  10.416 +var o3_padxl = 0;
  10.417 +var o3_padxr = 0;
  10.418 +var o3_padyt = 0;
  10.419 +var o3_padyb = 0;
  10.420 +var o3_fullhtml = 0;
  10.421 +var o3_vpos = BELOW;
  10.422 +var o3_aboveheight = 0;
  10.423 +var o3_capicon = "";
  10.424 +var o3_textfont = "Verdana,Arial,Helvetica";
  10.425 +var o3_captionfont = "Verdana,Arial,Helvetica";
  10.426 +var o3_closefont = "Verdana,Arial,Helvetica";
  10.427 +var o3_textsize = "1";
  10.428 +var o3_captionsize = "1";
  10.429 +var o3_closesize = "1";
  10.430 +var o3_frame = self;
  10.431 +var o3_timeout = 0;
  10.432 +var o3_timerid = 0;
  10.433 +var o3_allowmove = 0;
  10.434 +var o3_function = Function();
  10.435 +var o3_delay = 0;
  10.436 +var o3_delayid = 0;
  10.437 +var o3_hauto = 0;
  10.438 +var o3_vauto = 0;
  10.439 +var o3_closeclick = 0;
  10.440 +
  10.441 +var o3_css = CSSOFF;
  10.442 +var o3_fgclass = "";
  10.443 +var o3_bgclass = "";
  10.444 +var o3_textfontclass = "";
  10.445 +var o3_captionfontclass = "";
  10.446 +var o3_closefontclass = "";
  10.447 +var o3_padunit = "px";
  10.448 +var o3_heightunit = "px";
  10.449 +var o3_widthunit = "px";
  10.450 +var o3_textsizeunit = "px";
  10.451 +var o3_textdecoration = "";
  10.452 +var o3_textstyle = "";
  10.453 +var o3_textweight = "";
  10.454 +var o3_captionsizeunit = "px";
  10.455 +var o3_captiondecoration = "";
  10.456 +var o3_captionstyle = "";
  10.457 +var o3_captionweight = "";
  10.458 +var o3_closesizeunit = "px";
  10.459 +var o3_closedecoration = "";
  10.460 +var o3_closestyle = "";
  10.461 +var o3_closeweight = "";
  10.462 +
  10.463 +
  10.464 +
  10.465 +// Display state variables
  10.466 +var o3_x = 0;
  10.467 +var o3_y = 0;
  10.468 +var o3_allow = 0;
  10.469 +var o3_showingsticky = 0;
  10.470 +var o3_removecounter = 0;
  10.471 +
  10.472 +// Our layer
  10.473 +var over = null;
  10.474 +
  10.475 +
  10.476 +// Decide browser version
  10.477 +var ns4 = (document.layers)? true:false;
  10.478 +var ns6 = (document.getElementById)? true:false;
  10.479 +var ie4 = (document.all)? true:false;
  10.480 +var ie5 = false;
  10.481 +
  10.482 +// Microsoft Stupidity Check(tm).
  10.483 +if (ie4) {
  10.484 +	if ((navigator.userAgent.indexOf('MSIE 5') > 0) || (navigator.userAgent.indexOf('MSIE 6') > 0)) {
  10.485 +		ie5 = true;
  10.486 +	}
  10.487 +	if (ns6) {
  10.488 +		ns6 = false;
  10.489 +	}
  10.490 +}
  10.491 +
  10.492 +
  10.493 +// Capture events, alt. diffuses the overlib function.
  10.494 +if ( (ns4) || (ie4) || (ns6)) {
  10.495 +	document.onmousemove = mouseMove
  10.496 +	if (ns4) document.captureEvents(Event.MOUSEMOVE)
  10.497 +} else {
  10.498 +	overlib = no_overlib;
  10.499 +	nd = no_overlib;
  10.500 +	ver3fix = true;
  10.501 +}
  10.502 +
  10.503 +
  10.504 +// Fake function for 3.0 users.
  10.505 +function no_overlib() {
  10.506 +	return ver3fix;
  10.507 +}
  10.508 +
  10.509 +
  10.510 +
  10.511 +////////////////////////////////////////////////////////////////////////////////////
  10.512 +// PUBLIC FUNCTIONS
  10.513 +////////////////////////////////////////////////////////////////////////////////////
  10.514 +
  10.515 +
  10.516 +// overlib(arg0, ..., argN)
  10.517 +// Loads parameters into global runtime variables.
  10.518 +function overlib() {
  10.519 +	
  10.520 +	// Load defaults to runtime.
  10.521 +	o3_text = ol_text;
  10.522 +	o3_cap = ol_cap;
  10.523 +	o3_sticky = ol_sticky;
  10.524 +	o3_background = ol_background;
  10.525 +	o3_close = ol_close;
  10.526 +	o3_hpos = ol_hpos;
  10.527 +	o3_offsetx = ol_offsetx;
  10.528 +	o3_offsety = ol_offsety;
  10.529 +	o3_fgcolor = ol_fgcolor;
  10.530 +	o3_bgcolor = ol_bgcolor;
  10.531 +	o3_textcolor = ol_textcolor;
  10.532 +	o3_capcolor = ol_capcolor;
  10.533 +	o3_closecolor = ol_closecolor;
  10.534 +	o3_width = ol_width;
  10.535 +	o3_border = ol_border;
  10.536 +	o3_status = ol_status;
  10.537 +	o3_autostatus = ol_autostatus;
  10.538 +	o3_height = ol_height;
  10.539 +	o3_snapx = ol_snapx;
  10.540 +	o3_snapy = ol_snapy;
  10.541 +	o3_fixx = ol_fixx;
  10.542 +	o3_fixy = ol_fixy;
  10.543 +	o3_fgbackground = ol_fgbackground;
  10.544 +	o3_bgbackground = ol_bgbackground;
  10.545 +	o3_padxl = ol_padxl;
  10.546 +	o3_padxr = ol_padxr;
  10.547 +	o3_padyt = ol_padyt;
  10.548 +	o3_padyb = ol_padyb;
  10.549 +	o3_fullhtml = ol_fullhtml;
  10.550 +	o3_vpos = ol_vpos;
  10.551 +	o3_aboveheight = ol_aboveheight;
  10.552 +	o3_capicon = ol_capicon;
  10.553 +	o3_textfont = ol_textfont;
  10.554 +	o3_captionfont = ol_captionfont;
  10.555 +	o3_closefont = ol_closefont;
  10.556 +	o3_textsize = ol_textsize;
  10.557 +	o3_captionsize = ol_captionsize;
  10.558 +	o3_closesize = ol_closesize;
  10.559 +	o3_timeout = ol_timeout;
  10.560 +	o3_function = ol_function;
  10.561 +	o3_delay = ol_delay;
  10.562 +	o3_hauto = ol_hauto;
  10.563 +	o3_vauto = ol_vauto;
  10.564 +	o3_closeclick = ol_closeclick;
  10.565 +	
  10.566 +	o3_css = ol_css;
  10.567 +	o3_fgclass = ol_fgclass;
  10.568 +	o3_bgclass = ol_bgclass;
  10.569 +	o3_textfontclass = ol_textfontclass;
  10.570 +	o3_captionfontclass = ol_captionfontclass;
  10.571 +	o3_closefontclass = ol_closefontclass;
  10.572 +	o3_padunit = ol_padunit;
  10.573 +	o3_heightunit = ol_heightunit;
  10.574 +	o3_widthunit = ol_widthunit;
  10.575 +	o3_textsizeunit = ol_textsizeunit;
  10.576 +	o3_textdecoration = ol_textdecoration;
  10.577 +	o3_textstyle = ol_textstyle;
  10.578 +	o3_textweight = ol_textweight;
  10.579 +	o3_captionsizeunit = ol_captionsizeunit;
  10.580 +	o3_captiondecoration = ol_captiondecoration;
  10.581 +	o3_captionstyle = ol_captionstyle;
  10.582 +	o3_captionweight = ol_captionweight;
  10.583 +	o3_closesizeunit = ol_closesizeunit;
  10.584 +	o3_closedecoration = ol_closedecoration;
  10.585 +	o3_closestyle = ol_closestyle;
  10.586 +	o3_closeweight = ol_closeweight;
  10.587 +	
  10.588 +
  10.589 +	// Special for frame support, over must be reset...
  10.590 +	if ( (ns4) || (ie4) || (ns6) ) {
  10.591 +		o3_frame = ol_frame;
  10.592 +		if (ns4) over = o3_frame.document.overDiv
  10.593 +		if (ie4) over = o3_frame.overDiv.style
  10.594 +		if (ns6) over = o3_frame.document.getElementById("overDiv");
  10.595 +	}
  10.596 +	
  10.597 +	
  10.598 +	// What the next argument is expected to be.
  10.599 +	var parsemode = -1;
  10.600 +	
  10.601 +	var ar = arguments;
  10.602 +
  10.603 +	for (i = 0; i < ar.length; i++) {
  10.604 +
  10.605 +		if (parsemode < 0) {
  10.606 +			// Arg is maintext, unless INARRAY
  10.607 +			if (ar[i] == INARRAY) {
  10.608 +				o3_text = ol_texts[ar[++i]];
  10.609 +			} else {
  10.610 +				o3_text = ar[i];
  10.611 +			}
  10.612 +
  10.613 +			parsemode = 0;
  10.614 +		} else {
  10.615 +			// Note: NS4 doesn't like switch cases with vars.
  10.616 +			if (ar[i] == INARRAY) { o3_text = ol_texts[ar[++i]]; continue; }
  10.617 +			if (ar[i] == CAPARRAY) { o3_cap = ol_caps[ar[++i]]; continue; }
  10.618 +			if (ar[i] == STICKY) { o3_sticky = 1; continue; }
  10.619 +			if (ar[i] == BACKGROUND) { o3_background = ar[++i]; continue; }
  10.620 +			if (ar[i] == NOCLOSE) { o3_close = ""; continue; }
  10.621 +			if (ar[i] == CAPTION) { o3_cap = ar[++i]; continue; }
  10.622 +			if (ar[i] == CENTER || ar[i] == LEFT || ar[i] == RIGHT) { o3_hpos = ar[i]; continue; }
  10.623 +			if (ar[i] == OFFSETX) { o3_offsetx = ar[++i]; continue; }
  10.624 +			if (ar[i] == OFFSETY) { o3_offsety = ar[++i]; continue; }
  10.625 +			if (ar[i] == FGCOLOR) { o3_fgcolor = ar[++i]; continue; }
  10.626 +			if (ar[i] == BGCOLOR) { o3_bgcolor = ar[++i]; continue; }
  10.627 +			if (ar[i] == TEXTCOLOR) { o3_textcolor = ar[++i]; continue; }
  10.628 +			if (ar[i] == CAPCOLOR) { o3_capcolor = ar[++i]; continue; }
  10.629 +			if (ar[i] == CLOSECOLOR) { o3_closecolor = ar[++i]; continue; }
  10.630 +			if (ar[i] == WIDTH) { o3_width = ar[++i]; continue; }
  10.631 +			if (ar[i] == BORDER) { o3_border = ar[++i]; continue; }
  10.632 +			if (ar[i] == STATUS) { o3_status = ar[++i]; continue; }
  10.633 +			if (ar[i] == AUTOSTATUS) { o3_autostatus = 1; continue; }
  10.634 +			if (ar[i] == AUTOSTATUSCAP) { o3_autostatus = 2; continue; }
  10.635 +			if (ar[i] == HEIGHT) { o3_height = ar[++i]; o3_aboveheight = ar[i]; continue; } // Same param again.
  10.636 +			if (ar[i] == CLOSETEXT) { o3_close = ar[++i]; continue; }
  10.637 +			if (ar[i] == SNAPX) { o3_snapx = ar[++i]; continue; }
  10.638 +			if (ar[i] == SNAPY) { o3_snapy = ar[++i]; continue; }
  10.639 +			if (ar[i] == FIXX) { o3_fixx = ar[++i]; continue; }
  10.640 +			if (ar[i] == FIXY) { o3_fixy = ar[++i]; continue; }
  10.641 +			if (ar[i] == FGBACKGROUND) { o3_fgbackground = ar[++i]; continue; }
  10.642 +			if (ar[i] == BGBACKGROUND) { o3_bgbackground = ar[++i]; continue; }
  10.643 +			if (ar[i] == PADX) { o3_padxl = ar[++i]; o3_padxr = ar[++i]; continue; }
  10.644 +			if (ar[i] == PADY) { o3_padyt = ar[++i]; o3_padyb = ar[++i]; continue; }
  10.645 +			if (ar[i] == FULLHTML) { o3_fullhtml = 1; continue; }
  10.646 +			if (ar[i] == BELOW || ar[i] == ABOVE) { o3_vpos = ar[i]; continue; }
  10.647 +			if (ar[i] == CAPICON) { o3_capicon = ar[++i]; continue; }
  10.648 +			if (ar[i] == TEXTFONT) { o3_textfont = ar[++i]; continue; }
  10.649 +			if (ar[i] == CAPTIONFONT) { o3_captionfont = ar[++i]; continue; }
  10.650 +			if (ar[i] == CLOSEFONT) { o3_closefont = ar[++i]; continue; }
  10.651 +			if (ar[i] == TEXTSIZE) { o3_textsize = ar[++i]; continue; }
  10.652 +			if (ar[i] == CAPTIONSIZE) { o3_captionsize = ar[++i]; continue; }
  10.653 +			if (ar[i] == CLOSESIZE) { o3_closesize = ar[++i]; continue; }
  10.654 +			if (ar[i] == FRAME) { opt_FRAME(ar[++i]); continue; }
  10.655 +			if (ar[i] == TIMEOUT) { o3_timeout = ar[++i]; continue; }
  10.656 +			if (ar[i] == FUNCTION) { opt_FUNCTION(ar[++i]); continue; }
  10.657 +			if (ar[i] == DELAY) { o3_delay = ar[++i]; continue; }
  10.658 +			if (ar[i] == HAUTO) { o3_hauto = (o3_hauto == 0) ? 1 : 0; continue; }
  10.659 +			if (ar[i] == VAUTO) { o3_vauto = (o3_vauto == 0) ? 1 : 0; continue; }
  10.660 +			if (ar[i] == CLOSECLICK) { o3_closeclick = (o3_closeclick == 0) ? 1 : 0; continue; }
  10.661 +			if (ar[i] == CSSOFF) { o3_css = ar[i]; continue; }
  10.662 +			if (ar[i] == CSSSTYLE) { o3_css = ar[i]; continue; }
  10.663 +			if (ar[i] == CSSCLASS) { o3_css = ar[i]; continue; }
  10.664 +			if (ar[i] == FGCLASS) { o3_fgclass = ar[++i]; continue; }
  10.665 +			if (ar[i] == BGCLASS) { o3_bgclass = ar[++i]; continue; }
  10.666 +			if (ar[i] == TEXTFONTCLASS) { o3_textfontclass = ar[++i]; continue; }
  10.667 +			if (ar[i] == CAPTIONFONTCLASS) { o3_captionfontclass = ar[++i]; continue; }
  10.668 +			if (ar[i] == CLOSEFONTCLASS) { o3_closefontclass = ar[++i]; continue; }
  10.669 +			if (ar[i] == PADUNIT) { o3_padunit = ar[++i]; continue; }
  10.670 +			if (ar[i] == HEIGHTUNIT) { o3_heightunit = ar[++i]; continue; }
  10.671 +			if (ar[i] == WIDTHUNIT) { o3_widthunit = ar[++i]; continue; }
  10.672 +			if (ar[i] == TEXTSIZEUNIT) { o3_textsizeunit = ar[++i]; continue; }
  10.673 +			if (ar[i] == TEXTDECORATION) { o3_textdecoration = ar[++i]; continue; }
  10.674 +			if (ar[i] == TEXTSTYLE) { o3_textstyle = ar[++i]; continue; }
  10.675 +			if (ar[i] == TEXTWEIGHT) { o3_textweight = ar[++i]; continue; }
  10.676 +			if (ar[i] == CAPTIONSIZEUNIT) { o3_captionsizeunit = ar[++i]; continue; }
  10.677 +			if (ar[i] == CAPTIONDECORATION) { o3_captiondecoration = ar[++i]; continue; }
  10.678 +			if (ar[i] == CAPTIONSTYLE) { o3_captionstyle = ar[++i]; continue; }
  10.679 +			if (ar[i] == CAPTIONWEIGHT) { o3_captionweight = ar[++i]; continue; }
  10.680 +			if (ar[i] == CLOSESIZEUNIT) { o3_closesizeunit = ar[++i]; continue; }
  10.681 +			if (ar[i] == CLOSEDECORATION) { o3_closedecoration = ar[++i]; continue; }
  10.682 +			if (ar[i] == CLOSESTYLE) { o3_closestyle = ar[++i]; continue; }
  10.683 +			if (ar[i] == CLOSEWEIGHT) { o3_closeweight = ar[++i]; continue; }
  10.684 +		}
  10.685 +	}
  10.686 +
  10.687 +	if (o3_delay == 0) {
  10.688 +		return overlib350();
  10.689 +	} else {
  10.690 +		o3_delayid = setTimeout("overlib350()", o3_delay);
  10.691 +
  10.692 +		if (o3_sticky) {
  10.693 +			return false;
  10.694 +		} else {
  10.695 +			return true;
  10.696 +		}
  10.697 +	}
  10.698 +}
  10.699 +
  10.700 +
  10.701 +
  10.702 +// Clears popups if appropriate
  10.703 +function nd() {
  10.704 +	if ( o3_removecounter >= 1 ) { o3_showingsticky = 0 };
  10.705 +	if ( (ns4) || (ie4) || (ns6) ) {
  10.706 +		if ( o3_showingsticky == 0 ) {
  10.707 +			o3_allowmove = 0;
  10.708 +			if (over != null) hideObject(over);
  10.709 +		} else {
  10.710 +			o3_removecounter++;
  10.711 +		}
  10.712 +	}
  10.713 +	
  10.714 +	return true;
  10.715 +}
  10.716 +
  10.717 +
  10.718 +
  10.719 +
  10.720 +
  10.721 +
  10.722 +
  10.723 +////////////////////////////////////////////////////////////////////////////////////
  10.724 +// OVERLIB 3.50 FUNCTION
  10.725 +////////////////////////////////////////////////////////////////////////////////////
  10.726 +
  10.727 +
  10.728 +// This function decides what it is we want to display and how we want it done.
  10.729 +function overlib350() {
  10.730 +
  10.731 +	// Make layer content
  10.732 +	var layerhtml;
  10.733 +
  10.734 +	if (o3_background != "" || o3_fullhtml) {
  10.735 +		// Use background instead of box.
  10.736 +		layerhtml = ol_content_background(o3_text, o3_background, o3_fullhtml);
  10.737 +	} else {
  10.738 +		// They want a popup box.
  10.739 +
  10.740 +		// Prepare popup background
  10.741 +		if (o3_fgbackground != "" && o3_css == CSSOFF) {
  10.742 +			o3_fgbackground = "BACKGROUND=\""+o3_fgbackground+"\"";
  10.743 +		}
  10.744 +		if (o3_bgbackground != "" && o3_css == CSSOFF) {
  10.745 +			o3_bgbackground = "BACKGROUND=\""+o3_bgbackground+"\"";
  10.746 +		}
  10.747 +
  10.748 +		// Prepare popup colors
  10.749 +		if (o3_fgcolor != "" && o3_css == CSSOFF) {
  10.750 +			o3_fgcolor = "BGCOLOR=\""+o3_fgcolor+"\"";
  10.751 +		}
  10.752 +		if (o3_bgcolor != "" && o3_css == CSSOFF) {
  10.753 +			o3_bgcolor = "BGCOLOR=\""+o3_bgcolor+"\"";
  10.754 +		}
  10.755 +
  10.756 +		// Prepare popup height
  10.757 +		if (o3_height > 0 && o3_css == CSSOFF) {
  10.758 +			o3_height = "HEIGHT=" + o3_height;
  10.759 +		} else {
  10.760 +			o3_height = "";
  10.761 +		}
  10.762 +
  10.763 +		// Decide which kinda box.
  10.764 +		if (o3_cap == "") {
  10.765 +			// Plain
  10.766 +			layerhtml = ol_content_simple(o3_text);
  10.767 +		} else {
  10.768 +			// With caption
  10.769 +			if (o3_sticky) {
  10.770 +				// Show close text
  10.771 +				layerhtml = ol_content_caption(o3_text, o3_cap, o3_close);
  10.772 +			} else {
  10.773 +				// No close text
  10.774 +				layerhtml = ol_content_caption(o3_text, o3_cap, "");
  10.775 +			}
  10.776 +		}
  10.777 +	}
  10.778 +	
  10.779 +	// We want it to stick!
  10.780 +	if (o3_sticky) {
  10.781 +		o3_showingsticky = 1;
  10.782 +		o3_removecounter = 0;
  10.783 +	}
  10.784 +	
  10.785 +	// Write layer
  10.786 +	layerWrite(layerhtml);
  10.787 +	
  10.788 +	// Prepare status bar
  10.789 +	if (o3_autostatus > 0) {
  10.790 +		o3_status = o3_text;
  10.791 +		if (o3_autostatus > 1) {
  10.792 +			o3_status = o3_cap;
  10.793 +		}
  10.794 +	}
  10.795 +
  10.796 +	// When placing the layer the first time, even stickies may be moved.
  10.797 +	o3_allowmove = 0;
  10.798 +
  10.799 +	// Initiate a timer for timeout
  10.800 +	if (o3_timeout > 0) {          
  10.801 +		if (o3_timerid > 0) clearTimeout(o3_timerid);
  10.802 +		o3_timerid = setTimeout("cClick()", o3_timeout);
  10.803 +	}
  10.804 +
  10.805 +	// Show layer
  10.806 +	disp(o3_status);
  10.807 +
  10.808 +	// Stickies should stay where they are.	
  10.809 +	if (o3_sticky) {
  10.810 +		o3_allowmove = 0;
  10.811 +		return false;
  10.812 +	} else {
  10.813 +		return true;
  10.814 +	}
  10.815 +}
  10.816 +
  10.817 +
  10.818 +
  10.819 +////////////////////////////////////////////////////////////////////////////////////
  10.820 +// LAYER GENERATION FUNCTIONS
  10.821 +////////////////////////////////////////////////////////////////////////////////////
  10.822 +
  10.823 +// Makes simple table without caption
  10.824 +function ol_content_simple(text) {
  10.825 +	if (o3_css == CSSCLASS) txt = "<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 class=\""+o3_bgclass+"\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 class=\""+o3_fgclass+"\"><TR><TD VALIGN=TOP><FONT class=\""+o3_textfontclass+"\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>";
  10.826 +	if (o3_css == CSSSTYLE) txt = "<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 style=\"background-color: "+o3_bgcolor+"; height: "+o3_height+o3_heightunit+";\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 style=\"color: "+o3_fgcolor+"; background-color: "+o3_fgcolor+"; height: "+o3_height+o3_heightunit+";\"><TR><TD VALIGN=TOP><FONT style=\"font-family: "+o3_textfont+"; color: "+o3_textcolor+"; font-size: "+o3_textsize+o3_textsizeunit+"; text-decoration: "+o3_textdecoration+"; font-weight: "+o3_textweight+"; font-style:"+o3_textstyle+"\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>";
  10.827 +	if (o3_css == CSSOFF) txt = "<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 "+o3_bgcolor+" "+o3_height+"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 "+o3_fgcolor+" "+o3_fgbackground+" "+o3_height+"><TR><TD VALIGN=TOP><FONT FACE=\""+o3_textfont+"\" COLOR=\""+o3_textcolor+"\" SIZE=\""+o3_textsize+"\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>";
  10.828 +
  10.829 +	set_background("");
  10.830 +	return txt;
  10.831 +}
  10.832 +
  10.833 +
  10.834 +
  10.835 +
  10.836 +// Makes table with caption and optional close link
  10.837 +function ol_content_caption(text, title, close) {
  10.838 +	closing = "";
  10.839 +	closeevent = "onMouseOver";
  10.840 +
  10.841 +	if (o3_closeclick == 1) closeevent = "onClick";
  10.842 +	if (o3_capicon != "") o3_capicon = "<IMG SRC=\""+o3_capicon+"\"> ";
  10.843 +
  10.844 +	if (close != "") {
  10.845 +		if (o3_css == CSSCLASS) closing = "<TD ALIGN=RIGHT><A HREF=\"/\" "+closeevent+"=\"return cClick();\" class=\""+o3_closefontclass+"\">"+close+"</A></TD>";
  10.846 +		if (o3_css == CSSSTYLE) closing = "<TD ALIGN=RIGHT><A HREF=\"/\" "+closeevent+"=\"return cClick();\" style=\"color: "+o3_closecolor+"; font-family: "+o3_closefont+"; font-size: "+o3_closesize+o3_closesizeunit+"; text-decoration: "+o3_closedecoration+"; font-weight: "+o3_closeweight+"; font-style:"+o3_closestyle+";\">"+close+"</A></TD>";
  10.847 +		if (o3_css == CSSOFF) closing = "<TD ALIGN=RIGHT><A HREF=\"/\" "+closeevent+"=\"return cClick();\"><FONT COLOR=\""+o3_closecolor+"\" FACE=\""+o3_closefont+"\" SIZE=\""+o3_closesize+"\">"+close+"</FONT></A></TD>";
  10.848 +	}
  10.849 +
  10.850 +	if (o3_css == CSSCLASS) txt = "<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 class=\""+o3_bgclass+"\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><FONT class=\""+o3_captionfontclass+"\">"+o3_capicon+title+"</FONT></TD>"+closing+"</TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 class=\""+o3_fgclass+"\"><TR><TD VALIGN=TOP><FONT class=\""+o3_textfontclass+"\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>";
  10.851 +	if (o3_css == CSSSTYLE) txt = "<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 style=\"background-color: "+o3_bgcolor+"; background-image: url("+o3_bgbackground+"); height: "+o3_height+o3_heightunit+";\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><FONT style=\"font-family: "+o3_captionfont+"; color: "+o3_capcolor+"; font-size: "+o3_captionsize+o3_captionsizeunit+"; font-weight: "+o3_captionweight+"; font-style: "+o3_captionstyle+";\">"+o3_capicon+title+"</FONT></TD>"+closing+"</TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 style=\"color: "+o3_fgcolor+"; background-color: "+o3_fgcolor+"; height: "+o3_height+o3_heightunit+";\"><TR><TD VALIGN=TOP><FONT style=\"font-family: "+o3_textfont+"; color: "+o3_textcolor+"; font-size: "+o3_textsize+o3_textsizeunit+"; text-decoration: "+o3_textdecoration+"; font-weight: "+o3_textweight+"; font-style:"+o3_textstyle+"\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>";
  10.852 +	if (o3_css == CSSOFF) txt = "<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 "+o3_bgcolor+" "+o3_bgbackground+" "+o3_height+"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><B><FONT COLOR=\""+o3_capcolor+"\" FACE=\""+o3_captionfont+"\" SIZE=\""+o3_captionsize+"\">"+o3_capicon+title+"</FONT></B></TD>"+closing+"</TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 "+o3_fgcolor+" "+o3_fgbackground+" "+o3_height+"><TR><TD VALIGN=TOP><FONT COLOR=\""+o3_textcolor+"\" FACE=\""+o3_textfont+"\" SIZE=\""+o3_textsize+"\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>";
  10.853 +
  10.854 +	set_background("");
  10.855 +	return txt;
  10.856 +}
  10.857 +
  10.858 +// Sets the background picture, padding and lots more. :)
  10.859 +function ol_content_background(text, picture, hasfullhtml) {
  10.860 +	if (hasfullhtml) {
  10.861 +		txt = text;
  10.862 +	} else {
  10.863 +		if (o3_css == CSSCLASS) txt = "<TABLE WIDTH="+o3_width+o3_widthunit+" BORDER=0 CELLPADDING=0 CELLSPACING=0 HEIGHT="+o3_height+o3_heightunit+"><TR><TD COLSPAN=3 HEIGHT="+o3_padyt+o3_padunit+"></TD></TR><TR><TD WIDTH="+o3_padxl+o3_padunit+"></TD><TD VALIGN=TOP WIDTH="+(o3_width-o3_padxl-o3_padxr)+o3_padunit+"><FONT class=\""+o3_textfontclass+"\">"+text+"</FONT></TD><TD WIDTH="+o3_padxr+o3_padunit+"></TD></TR><TR><TD COLSPAN=3 HEIGHT="+o3_padyb+o3_padunit+"></TD></TR></TABLE>";
  10.864 +		if (o3_css == CSSSTYLE) txt = "<TABLE WIDTH="+o3_width+o3_widthunit+" BORDER=0 CELLPADDING=0 CELLSPACING=0 HEIGHT="+o3_height+o3_heightunit+"><TR><TD COLSPAN=3 HEIGHT="+o3_padyt+o3_padunit+"></TD></TR><TR><TD WIDTH="+o3_padxl+o3_padunit+"></TD><TD VALIGN=TOP WIDTH="+(o3_width-o3_padxl-o3_padxr)+o3_padunit+"><FONT style=\"font-family: "+o3_textfont+"; color: "+o3_textcolor+"; font-size: "+o3_textsize+o3_textsizeunit+";\">"+text+"</FONT></TD><TD WIDTH="+o3_padxr+o3_padunit+"></TD></TR><TR><TD COLSPAN=3 HEIGHT="+o3_padyb+o3_padunit+"></TD></TR></TABLE>";
  10.865 +		if (o3_css == CSSOFF) txt = "<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING=0 CELLSPACING=0 HEIGHT="+o3_height+"><TR><TD COLSPAN=3 HEIGHT="+o3_padyt+"></TD></TR><TR><TD WIDTH="+o3_padxl+"></TD><TD VALIGN=TOP WIDTH="+(o3_width-o3_padxl-o3_padxr)+"><FONT FACE=\""+o3_textfont+"\" COLOR=\""+o3_textcolor+"\" SIZE=\""+o3_textsize+"\">"+text+"</FONT></TD><TD WIDTH="+o3_padxr+"></TD></TR><TR><TD COLSPAN=3 HEIGHT="+o3_padyb+"></TD></TR></TABLE>";
  10.866 +	}
  10.867 +	set_background(picture);
  10.868 +	return txt;
  10.869 +}
  10.870 +
  10.871 +// Loads a picture into the div.
  10.872 +function set_background(pic) {
  10.873 +	if (pic == "") {
  10.874 +		if (ie4) over.backgroundImage = "none";
  10.875 +		if (ns6) over.style.backgroundImage = "none";
  10.876 +	} else {
  10.877 +		if (ns4) {
  10.878 +			over.background.src = pic;
  10.879 +		} else if (ie4) {
  10.880 +			over.backgroundImage = "url("+pic+")";
  10.881 +		} else if (ns6) {
  10.882 +			over.style.backgroundImage = "url("+pic+")";
  10.883 +		}
  10.884 +	}
  10.885 +}
  10.886 +
  10.887 +
  10.888 +
  10.889 +////////////////////////////////////////////////////////////////////////////////////
  10.890 +// HANDLING FUNCTIONS
  10.891 +////////////////////////////////////////////////////////////////////////////////////
  10.892 +
  10.893 +
  10.894 +// Displays the popup
  10.895 +function disp(statustext) {
  10.896 +	if ( (ns4) || (ie4) || (ns6) ) {
  10.897 +		if (o3_allowmove == 0) 	{
  10.898 +			placeLayer();
  10.899 +			showObject(over);
  10.900 +			o3_allowmove = 1;
  10.901 +		}
  10.902 +	}
  10.903 +
  10.904 +	if (statustext != "") {
  10.905 +		self.status = statustext;
  10.906 +	}
  10.907 +}
  10.908 +
  10.909 +// Decides where we want the popup.
  10.910 +function placeLayer() {
  10.911 +	var placeX, placeY;
  10.912 +	
  10.913 +	// HORIZONTAL PLACEMENT
  10.914 +	if (o3_fixx > -1) {
  10.915 +		// Fixed position
  10.916 +		placeX = o3_fixx;
  10.917 +	} else {
  10.918 +		winoffset = (ie4) ? o3_frame.document.body.scrollLeft : o3_frame.pageXOffset;
  10.919 +		if (ie4) iwidth = o3_frame.document.body.clientWidth;
  10.920 +		if (ns4) iwidth = o3_frame.innerWidth; // was screwed in mozilla, fixed now?
  10.921 +		if (ns6) iwidth = o3_frame.outerWidth;
  10.922 +		
  10.923 +		// If HAUTO, decide what to use.
  10.924 +		if (o3_hauto == 1) {
  10.925 +			if ( (o3_x - winoffset) > ((eval(iwidth)) / 2)) {
  10.926 +				o3_hpos = LEFT;
  10.927 +			} else {
  10.928 +				o3_hpos = RIGHT;
  10.929 +			}
  10.930 +		}
  10.931 +		
  10.932 +		// From mouse
  10.933 +		if (o3_hpos == CENTER) { // Center
  10.934 +			placeX = o3_x+o3_offsetx-(o3_width/2);
  10.935 +		}
  10.936 +		if (o3_hpos == RIGHT) { // Right
  10.937 +			placeX = o3_x+o3_offsetx;
  10.938 +			if ( (eval(placeX) + eval(o3_width)) > (winoffset + iwidth) ) {
  10.939 +				placeX = iwidth + winoffset - o3_width;
  10.940 +				if (placeX < 0) placeX = 0;
  10.941 +			}
  10.942 +		}
  10.943 +		if (o3_hpos == LEFT) { // Left
  10.944 +			placeX = o3_x-o3_offsetx-o3_width;
  10.945 +			if (placeX < winoffset) placeX = winoffset;
  10.946 +		}
  10.947 +	
  10.948 +		// Snapping!
  10.949 +		if (o3_snapx > 1) {
  10.950 +			var snapping = placeX % o3_snapx;
  10.951 +			if (o3_hpos == LEFT) {
  10.952 +				placeX = placeX - (o3_snapx + snapping);
  10.953 +			} else {
  10.954 +				// CENTER and RIGHT
  10.955 +				placeX = placeX + (o3_snapx - snapping);
  10.956 +			}
  10.957 +			if (placeX < winoffset) placeX = winoffset;
  10.958 +		}
  10.959 +	}
  10.960 +
  10.961 +	
  10.962 +	
  10.963 +	// VERTICAL PLACEMENT
  10.964 +	if (o3_fixy > -1) {
  10.965 +		// Fixed position
  10.966 +		placeY = o3_fixy;
  10.967 +	} else {
  10.968 +		scrolloffset = (ie4) ? o3_frame.document.body.scrollTop : o3_frame.pageYOffset;
  10.969 +
  10.970 +		// If VAUTO, decide what to use.
  10.971 +		if (o3_vauto == 1) {
  10.972 +			if (ie4) iheight = o3_frame.document.body.clientHeight;
  10.973 +			if (ns4) iheight = o3_frame.innerHeight;
  10.974 +			if (ns6) iheight = o3_frame.outerHeight;
  10.975 +
  10.976 +			iheight = (eval(iheight)) / 2;
  10.977 +			if ( (o3_y - scrolloffset) > iheight) {
  10.978 +				o3_vpos = ABOVE;
  10.979 +			} else {
  10.980 +				o3_vpos = BELOW;
  10.981 +			}
  10.982 +		}
  10.983 +
  10.984 +
  10.985 +		// From mouse
  10.986 +		if (o3_vpos == ABOVE) {
  10.987 +			if (o3_aboveheight == 0) {
  10.988 +				var divref = (ie4) ? o3_frame.document.all['overDiv'] : over;
  10.989 +				o3_aboveheight = (ns4) ? divref.clip.height : divref.offsetHeight;
  10.990 +			}
  10.991 +
  10.992 +			placeY = o3_y - (o3_aboveheight + o3_offsety);
  10.993 +			if (placeY < scrolloffset) placeY = scrolloffset;
  10.994 +		} else {
  10.995 +			// BELOW
  10.996 +			placeY = o3_y + o3_offsety;
  10.997 +		}
  10.998 +
  10.999 +		// Snapping!
 10.1000 +		if (o3_snapy > 1) {
 10.1001 +			var snapping = placeY % o3_snapy;
 10.1002 +			
 10.1003 +			if (o3_aboveheight > 0 && o3_vpos == ABOVE) {
 10.1004 +				placeY = placeY - (o3_snapy + snapping);
 10.1005 +			} else {
 10.1006 +				placeY = placeY + (o3_snapy - snapping);
 10.1007 +			}
 10.1008 +			
 10.1009 +			if (placeY < scrolloffset) placeY = scrolloffset;
 10.1010 +		}
 10.1011 +	}
 10.1012 +
 10.1013 +
 10.1014 +	// Actually move the object.	
 10.1015 +	repositionTo(over, placeX, placeY);
 10.1016 +}
 10.1017 +
 10.1018 +
 10.1019 +// Moves the layer
 10.1020 +function mouseMove(e) {
 10.1021 +	if ( (ns4) || (ns6) ) {o3_x=e.pageX; o3_y=e.pageY;}
 10.1022 +	if (ie4) {o3_x=event.x; o3_y=event.y;}
 10.1023 +	if (ie5) {o3_x=event.x+o3_frame.document.body.scrollLeft; o3_y=event.y+o3_frame.document.body.scrollTop;}
 10.1024 +	
 10.1025 +	if (o3_allowmove == 1) {
 10.1026 +		placeLayer();
 10.1027 +	}
 10.1028 +}
 10.1029 +
 10.1030 +// The Close onMouseOver function for stickies
 10.1031 +function cClick() {
 10.1032 +	hideObject(over);
 10.1033 +	o3_showingsticky = 0;
 10.1034 +	
 10.1035 +	return false;
 10.1036 +}
 10.1037 +
 10.1038 +
 10.1039 +// Makes sure target frame has overLIB
 10.1040 +function compatibleframe(frameid) {        
 10.1041 +	if (ns4) {
 10.1042 +		if (typeof frameid.document.overDiv =='undefined') return false;
 10.1043 +	} else if (ie4) {
 10.1044 +		if (typeof frameid.document.all["overDiv"] =='undefined') return false;
 10.1045 +	} else if (ns6) {
 10.1046 +		if (frameid.document.getElementById('overDiv') == null) return false;
 10.1047 +	}
 10.1048 +
 10.1049 +	return true;
 10.1050 +}
 10.1051 +
 10.1052 +
 10.1053 +
 10.1054 +////////////////////////////////////////////////////////////////////////////////////
 10.1055 +// LAYER FUNCTIONS
 10.1056 +////////////////////////////////////////////////////////////////////////////////////
 10.1057 +
 10.1058 +
 10.1059 +// Writes to a layer
 10.1060 +function layerWrite(txt) {
 10.1061 +	txt += "\n";
 10.1062 +	
 10.1063 +        if (ns4) {
 10.1064 +                var lyr = o3_frame.document.overDiv.document
 10.1065 +
 10.1066 +                lyr.write(txt)
 10.1067 +                lyr.close()
 10.1068 +        } else if (ie4) {
 10.1069 +		o3_frame.document.all["overDiv"].innerHTML = txt
 10.1070 +	} else if (ns6) {
 10.1071 +		range = o3_frame.document.createRange();
 10.1072 +		range.setStartBefore(over);
 10.1073 +		domfrag = range.createContextualFragment(txt);
 10.1074 +		while (over.hasChildNodes()) {
 10.1075 +			over.removeChild(over.lastChild);
 10.1076 +		}
 10.1077 +		over.appendChild(domfrag);
 10.1078 +	}
 10.1079 +}
 10.1080 +
 10.1081 +// Make an object visible
 10.1082 +function showObject(obj) {
 10.1083 +        if (ns4) obj.visibility = "show";
 10.1084 +        else if (ie4) obj.visibility = "visible";
 10.1085 +	else if (ns6) obj.style.visibility = "visible";
 10.1086 +}
 10.1087 +
 10.1088 +// Hides an object
 10.1089 +function hideObject(obj) {
 10.1090 +        if (ns4) obj.visibility = "hide";
 10.1091 +        else if (ie4) obj.visibility = "hidden";
 10.1092 +	else if (ns6) obj.style.visibility = "hidden";
 10.1093 +        
 10.1094 +	if (o3_timerid > 0) clearTimeout(o3_timerid);
 10.1095 +	if (o3_delayid > 0) clearTimeout(o3_delayid);
 10.1096 +	o3_timerid = 0;
 10.1097 +	o3_delayid = 0;
 10.1098 +        self.status = "";
 10.1099 +}
 10.1100 +
 10.1101 +// Move a layer
 10.1102 +function repositionTo(obj,xL,yL) {
 10.1103 +	if ( (ns4) || (ie4) ) {
 10.1104 +	        obj.left = xL;
 10.1105 +	        obj.top = yL;
 10.1106 +	} else if (ns6) {
 10.1107 +		obj.style.left = xL + "px";
 10.1108 +		obj.style.top = yL+ "px";
 10.1109 +	}
 10.1110 +}
 10.1111 +
 10.1112 +
 10.1113 +
 10.1114 +
 10.1115 +
 10.1116 +////////////////////////////////////////////////////////////////////////////////////
 10.1117 +// PARSER FUNCTIONS
 10.1118 +////////////////////////////////////////////////////////////////////////////////////
 10.1119 +
 10.1120 +
 10.1121 +// Defines which frame we should point to.
 10.1122 +function opt_FRAME(frm) {
 10.1123 +        o3_frame = compatibleframe(frm) ? frm : ol_frame;
 10.1124 +
 10.1125 +	if ( (ns4) || (ie4 || (ns6)) ) {
 10.1126 +		if (ns4) over = o3_frame.document.overDiv;
 10.1127 +		if (ie4) over = o3_frame.overDiv.style;
 10.1128 +		if (ns6) over = o3_frame.document.getElementById("overDiv");
 10.1129 +	}
 10.1130 +
 10.1131 +	return 0;
 10.1132 +}
 10.1133 +
 10.1134 +// Calls an external function
 10.1135 +function opt_FUNCTION(callme) {
 10.1136 +	o3_text = callme()
 10.1137 +	return 0;
 10.1138 +}
 10.1139 +
 10.1140 +
 10.1141 +
 10.1142 +
 10.1143 +//end (For internal purposes.)
 10.1144 +////////////////////////////////////////////////////////////////////////////////////
 10.1145 +// OVERLIB 2 COMPATABILITY FUNCTIONS
 10.1146 +// If you aren't upgrading you can remove the below section.
 10.1147 +////////////////////////////////////////////////////////////////////////////////////
 10.1148 +
 10.1149 +// Converts old 0=left, 1=right and 2=center into constants.
 10.1150 +function vpos_convert(d) {
 10.1151 +	if (d == 0) {
 10.1152 +		d = LEFT;
 10.1153 +	} else {
 10.1154 +		if (d == 1) {
 10.1155 +			d = RIGHT;
 10.1156 +		} else {
 10.1157 +			d = CENTER;
 10.1158 +		}
 10.1159 +	}
 10.1160 +	
 10.1161 +	return d;
 10.1162 +}
 10.1163 +
 10.1164 +// Simple popup
 10.1165 +function dts(d,text) {
 10.1166 +	o3_hpos = vpos_convert(d);
 10.1167 +	overlib(text, o3_hpos, CAPTION, "");
 10.1168 +}
 10.1169 +
 10.1170 +// Caption popup
 10.1171 +function dtc(d,text, title) {
 10.1172 +	o3_hpos = vpos_convert(d);
 10.1173 +	overlib(text, CAPTION, title, o3_hpos);
 10.1174 +}
 10.1175 +
 10.1176 +// Sticky
 10.1177 +function stc(d,text, title) {
 10.1178 +	o3_hpos = vpos_convert(d);
 10.1179 +	overlib(text, CAPTION, title, o3_hpos, STICKY);
 10.1180 +}
 10.1181 +
 10.1182 +// Simple popup right
 10.1183 +function drs(text) {
 10.1184 +	dts(1,text);
 10.1185 +}
 10.1186 +
 10.1187 +// Caption popup right
 10.1188 +function drc(text, title) {
 10.1189 +	dtc(1,text,title);
 10.1190 +}
 10.1191 +
 10.1192 +// Sticky caption right
 10.1193 +function src(text,title) {
 10.1194 +	stc(1,text,title);
 10.1195 +}
 10.1196 +
 10.1197 +// Simple popup left
 10.1198 +function dls(text) {
 10.1199 +	dts(0,text);
 10.1200 +}
 10.1201 +
 10.1202 +// Caption popup left
 10.1203 +function dlc(text, title) {
 10.1204 +	dtc(0,text,title);
 10.1205 +}
 10.1206 +
 10.1207 +// Sticky caption left
 10.1208 +function slc(text,title) {
 10.1209 +	stc(0,text,title);
 10.1210 +}
 10.1211 +
 10.1212 +// Simple popup center
 10.1213 +function dcs(text) {
 10.1214 +	dts(2,text);
 10.1215 +}
 10.1216 +
 10.1217 +// Caption popup center
 10.1218 +function dcc(text, title) {
 10.1219 +	dtc(2,text,title);
 10.1220 +}
 10.1221 +
 10.1222 +// Sticky caption center
 10.1223 +function scc(text,title) {
 10.1224 +	stc(2,text,title);
 10.1225 +}
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/java/cewolf-1.0/pom.xml	Sat Feb 28 21:31:02 2009 +0100
    11.3 @@ -0,0 +1,128 @@
    11.4 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    11.5 +  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    11.6 +  <modelVersion>4.0.0</modelVersion>
    11.7 +  <groupId>cewolf</groupId>
    11.8 +  <artifactId>cewolf</artifactId>
    11.9 +  <packaging>jar</packaging>
   11.10 +  <version>1.0</version>
   11.11 +  <name>Cewolf</name>
   11.12 +  <url>http://cewolf.sourceforge.net</url>
   11.13 +
   11.14 +
   11.15 +  <description>
   11.16 +	Cewolf is a tag library for JfreeChart.
   11.17 +    JFreeChart is a class library, written in Java, for generating charts.
   11.18 +    Utilising the Java2D APIs, it currently supports bar charts, pie charts,
   11.19 +    line charts, XY-plots and time series plots.
   11.20 +  </description>
   11.21 +
   11.22 +    <scm>
   11.23 +    <url>http://cvs.sourceforge.net/viewcvs.py/cewolf/</url>
   11.24 +     <connection>
   11.25 +      scm:cvs:pserver:anonymous@cvs.sourceforge.net:/cvsroot/cewolf/cewolf
   11.26 +    </connection> 
   11.27 +</scm>
   11.28 +
   11.29 +<build>
   11.30 +<plugins>
   11.31 +            <plugin>
   11.32 +                 <artifactId>maven-assembly-plugin</artifactId>
   11.33 +                 <version>2.0-beta-1</version>
   11.34 +
   11.35 +                 <configuration>
   11.36 +                   <descriptor>src/main/assembly/assembly.xml</descriptor>
   11.37 +                   <finalName>${pom.artifactId}-${pom.version}</finalName>
   11.38 +                   <outputDirectory>target</outputDirectory>
   11.39 +                   <workDirectory>target/assembly/work</workDirectory>
   11.40 +                 </configuration>
   11.41 +
   11.42 +            </plugin>
   11.43 +<plugin>
   11.44 +   <artifactId>maven-javadoc-plugin</artifactId>
   11.45 +   <executions>
   11.46 +     <execution>
   11.47 +       <phase>package</phase>
   11.48 +  <goals>
   11.49 +       <goal>javadoc</goal>
   11.50 +  </goals>
   11.51 +     </execution>
   11.52 +   </executions>
   11.53 + </plugin>
   11.54 +</plugins>
   11.55 +</build>
   11.56 +<dependencies>
   11.57 +    <dependency>
   11.58 +      <groupId>batik</groupId>
   11.59 +      <artifactId>batik-dom</artifactId>
   11.60 +      <version>1.6</version>
   11.61 +  <scope>compile</scope>
   11.62 +    </dependency>
   11.63 +    <dependency>
   11.64 +      <groupId>batik</groupId>
   11.65 +      <artifactId>batik-awt-util</artifactId>
   11.66 +      <version>1.6</version>
   11.67 +  <scope>compile</scope>
   11.68 +    </dependency>
   11.69 +    <dependency>
   11.70 +      <groupId>batik</groupId>
   11.71 +      <artifactId>batik-svggen</artifactId>
   11.72 +      <version>1.6</version>
   11.73 +  <scope>compile</scope>
   11.74 +    </dependency>
   11.75 +    <dependency>
   11.76 +      <groupId>batik</groupId>
   11.77 +      <artifactId>batik-xml</artifactId>
   11.78 +      <version>1.6</version>
   11.79 +  <scope>compile</scope>
   11.80 +    </dependency>
   11.81 +    <dependency>
   11.82 +      <groupId>batik</groupId>
   11.83 +      <artifactId>batik-util</artifactId>
   11.84 +      <version>1.6</version>
   11.85 +  <scope>compile</scope>
   11.86 +    </dependency>
   11.87 +    <dependency>
   11.88 +      <groupId>commons-logging</groupId>
   11.89 +      <artifactId>commons-logging</artifactId>
   11.90 +      <version>1.0.4</version>
   11.91 +  <scope>compile</scope>
   11.92 +    </dependency>
   11.93 +<dependency>
   11.94 +      <groupId>log4j</groupId>
   11.95 +      <artifactId>log4j</artifactId>
   11.96 +      <version>1.2.12</version>
   11.97 +  <scope>compile</scope>
   11.98 +    </dependency>
   11.99 +<dependency>
  11.100 +      <groupId>crimson</groupId>
  11.101 +      <artifactId>crimson</artifactId>
  11.102 +      <version>1.1.3</version>
  11.103 +  <scope>compile</scope>
  11.104 +    </dependency>
  11.105 +
  11.106 +  <dependency>
  11.107 +      <groupId>javax.servlet</groupId>
  11.108 +      <artifactId>servlet-api</artifactId>
  11.109 +      <version>2.3</version>
  11.110 +  <scope>provided</scope>
  11.111 +    </dependency>
  11.112 +<dependency>
  11.113 +      <groupId>jfreechart</groupId>
  11.114 +      <artifactId>jfreechart</artifactId>
  11.115 +      <version>1.0.0</version>
  11.116 +  <scope>compile</scope>
  11.117 +    </dependency>
  11.118 +    <dependency>
  11.119 +      <groupId>jfree</groupId>
  11.120 +      <artifactId>jcommon</artifactId>
  11.121 +      <version>1.0.0</version>
  11.122 +  <scope>compile</scope>
  11.123 +    </dependency>
  11.124 +  <dependency>
  11.125 +      <groupId>gnujaxp</groupId>
  11.126 +      <artifactId>gnujaxp</artifactId>
  11.127 +      <version>1.0.0</version>
  11.128 +  <scope>compile</scope>
  11.129 +    </dependency>
  11.130 +</dependencies>
  11.131 +</project>
    12.1 Binary file java/cewolf-1.0/repository/gnujaxp/gnujaxp.jar has changed
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/java/cewolf-1.0/repository/gnujaxp/pom.xml	Sat Feb 28 21:31:02 2009 +0100
    13.3 @@ -0,0 +1,30 @@
    13.4 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    13.5 +  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    13.6 +  <modelVersion>4.0.0</modelVersion>
    13.7 +
    13.8 +      <groupId>gnujaxp</groupId>
    13.9 +      <artifactId>gnujaxp</artifactId>
   13.10 +      <version>1.0.0</version>
   13.11 +<build> 
   13.12 +<plugins>     
   13.13 +<plugin>
   13.14 +        <artifactId>maven-antrun-plugin</artifactId>
   13.15 +        <executions>
   13.16 +          <execution>
   13.17 +            <phase>generate-sources</phase>
   13.18 +            <configuration>
   13.19 +              <tasks>
   13.20 +		<unzip src="gnujaxp.jar"
   13.21 +       		dest="target/classes">
   13.22 +    		</unzip>       
   13.23 +              </tasks>
   13.24 +            </configuration>
   13.25 +            <goals>
   13.26 +              <goal>run</goal>
   13.27 +            </goals>
   13.28 +          </execution>
   13.29 +        </executions>
   13.30 +      </plugin>
   13.31 +    </plugins>
   13.32 +</build>
   13.33 +</project>
   13.34 \ No newline at end of file
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/java/cewolf-1.0/repository/pom.xml	Sat Feb 28 21:31:02 2009 +0100
    14.3 @@ -0,0 +1,11 @@
    14.4 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    14.5 +  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    14.6 +  <modelVersion>4.0.0</modelVersion>
    14.7 +  <groupId>cewolf.repository</groupId>
    14.8 +  <artifactId>parent</artifactId>
    14.9 +  <version>1.0</version>
   14.10 +  <packaging>pom</packaging>
   14.11 +  <modules>
   14.12 +   <module>gnujaxp</module>
   14.13 +   </modules> 
   14.14 +</project>
   14.15 \ No newline at end of file
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/java/cewolf-1.0/src/main/assembly/assembly.xml	Sat Feb 28 21:31:02 2009 +0100
    15.3 @@ -0,0 +1,45 @@
    15.4 +    <assembly>
    15.5 +      <id>bin-src</id>
    15.6 +      <formats>
    15.7 +        <format>zip</format>
    15.8 +      </formats>
    15.9 +      <fileSets>
   15.10 +        <fileSet>
   15.11 +          <includes>
   15.12 +            <include>RELEASE*</include>
   15.13 +            <include>LICENSE*</include>
   15.14 +            <include>NOTICE*</include>
   15.15 +            <include>*.txt</include>
   15.16 +            <include>pom.xml</include>
   15.17 +            <include>.*</include>
   15.18 +          </includes>
   15.19 +        </fileSet>
   15.20 +        <fileSet>
   15.21 +          <directory>target</directory>
   15.22 +          <outputDirectory>/lib</outputDirectory>
   15.23 +          <includes>
   15.24 +            <include>*.jar</include>
   15.25 +          </includes>
   15.26 +        </fileSet>
   15.27 +	<fileSet>
   15.28 +	   <directory>src</directory>
   15.29 +	</fileSet>
   15.30 +	<fileSet>
   15.31 +	   <directory>repository</directory>
   15.32 +	</fileSet>
   15.33 +	<fileSet>
   15.34 +	   <directory>target/javadoc</directory>
   15.35 +	</fileSet>
   15.36 +	<fileSet>
   15.37 +	   <directory>src/main/resources</directory>
   15.38 +	   <outputDirectory>/etc</outputDirectory>
   15.39 +	</fileSet>
   15.40 +      </fileSets>
   15.41 +  <dependencySets>
   15.42 +    <dependencySet>
   15.43 +      <outputDirectory>/lib</outputDirectory>
   15.44 +      <unpack>false</unpack>
   15.45 +      <scope>compile</scope>
   15.46 +    </dependencySet>
   15.47 +  </dependencySets>
   15.48 +    </assembly>
   15.49 \ No newline at end of file
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/CewolfException.java	Sat Feb 28 21:31:02 2009 +0100
    16.3 @@ -0,0 +1,52 @@
    16.4 +/* ================================================================
    16.5 + * Cewolf : Chart enabling Web Objects Framework
    16.6 + * ================================================================
    16.7 + *
    16.8 + * Project Info:  http://cewolf.sourceforge.net
    16.9 + * Project Lead:  Guido Laures (guido@laures.de);
   16.10 + *
   16.11 + * (C) Copyright 2002, by Guido Laures
   16.12 + *
   16.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   16.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   16.15 + * either version 2.1 of the License, or (at your option) any later version.
   16.16 + *
   16.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   16.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   16.19 + * See the GNU Lesser General Public License for more details.
   16.20 + *
   16.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   16.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   16.23 + * Boston, MA 02111-1307, USA.
   16.24 + */
   16.25 +
   16.26 +package de.laures.cewolf;
   16.27 +
   16.28 +/**
   16.29 + * Base class of all Cewolf related exceptions
   16.30 + * @author  Guido Laures
   16.31 + */
   16.32 +public class CewolfException extends Exception {
   16.33 +
   16.34 +    /** Creates a new instance of <code>CewolfException</code> without detail message. */
   16.35 +    public CewolfException() {
   16.36 +    }
   16.37 +
   16.38 +    /**
   16.39 +     * Constructs an instance of <code>CewolfException</code> with the specified detail message.
   16.40 +     * @param msg the detail message.
   16.41 +     */
   16.42 +    public CewolfException(String msg) {
   16.43 +        super(msg);
   16.44 +    }
   16.45 +    
   16.46 +    /**
   16.47 +     * Constructs exception with causing exception
   16.48 +     * @param msg message
   16.49 +     * @param cause cause exception
   16.50 +     */
   16.51 +    public CewolfException(String msg, Exception cause) {
   16.52 +        super(msg, cause);
   16.53 +    }
   16.54 +    
   16.55 +}
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/CewolfRenderer.java	Sat Feb 28 21:31:02 2009 +0100
    17.3 @@ -0,0 +1,265 @@
    17.4 +/* ================================================================
    17.5 + * Cewolf : Chart enabling Web Objects Framework
    17.6 + * ================================================================
    17.7 + *
    17.8 + * Project Info:  http://cewolf.sourceforge.net
    17.9 + * Project Lead:  Guido Laures (guido@laures.de);
   17.10 + *
   17.11 + * (C) Copyright 2002, by Guido Laures
   17.12 + *
   17.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   17.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   17.15 + * either version 2.1 of the License, or (at your option) any later version.
   17.16 + *
   17.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   17.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   17.19 + * See the GNU Lesser General Public License for more details.
   17.20 + *
   17.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   17.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   17.23 + * Boston, MA 02111-1307, USA.
   17.24 + */
   17.25 +
   17.26 +package de.laures.cewolf;
   17.27 +
   17.28 +import java.io.IOException;
   17.29 +import java.io.OutputStream;
   17.30 +import java.io.Writer;
   17.31 +import java.util.Enumeration;
   17.32 +
   17.33 +import javax.servlet.ServletConfig;
   17.34 +import javax.servlet.ServletException;
   17.35 +import javax.servlet.http.HttpServlet;
   17.36 +import javax.servlet.http.HttpServletRequest;
   17.37 +import javax.servlet.http.HttpServletResponse;
   17.38 +
   17.39 +import de.laures.cewolf.util.RenderingHelper;
   17.40 +
   17.41 +/**
   17.42 + * The rendering servlet of Cewolf. It is resposible for writing an entire chart
   17.43 + * img into the response stream of the client. Everything needed for this is
   17.44 + * prepared already by the ChartImgTag resp. LegendTag. The ID of a chart image
   17.45 + * is passed to this servlet as a request parameter. After that the image object
   17.46 + * is retrieved from the server side session based image cache. This servlet
   17.47 + * must be configured in web.xml of the web application in order to use Cewolf
   17.48 + * services. The servlet's URL relative to the web apps root is used as the
   17.49 + * renderer attribute of the ChartImgTag resp. LegendTag in the JSP page.
   17.50 + * 
   17.51 + * @see de.laures.cewolf.taglib.tags.ChartImgTag
   17.52 + * @see de.laures.cewolf.taglib.tags.LegendTag
   17.53 + * @author Guido Laures
   17.54 + * @since 0.1
   17.55 + */
   17.56 +public class CewolfRenderer extends HttpServlet implements WebConstants
   17.57 +{
   17.58 +
   17.59 +  public static final String  INIT_CONFIG  = "CewolfRenderer_Init_Config";
   17.60 +  private static final String STATE        = "state";
   17.61 +  private boolean             debugged     = false;
   17.62 +  private int                 requestCount = 0;
   17.63 +  private Byte 					lock = Byte.valueOf("0");
   17.64 +  private Configuration       config       = null;
   17.65 +
   17.66 +  public void init( ServletConfig servletCfg ) throws ServletException
   17.67 +  {
   17.68 +    super.init(servletCfg);
   17.69 +    
   17.70 +    //Store init config params for processing by the Configuration
   17.71 +    servletCfg.getServletContext().setAttribute(INIT_CONFIG, servletCfg);
   17.72 +    config = Configuration.getInstance(servletCfg.getServletContext());
   17.73 +    
   17.74 +    if (config != null)
   17.75 +      this.debugged = config.isDebugged();
   17.76 +    else
   17.77 +      this.debugged = false;
   17.78 +  }
   17.79 +
   17.80 +  /**
   17.81 +   * Processes HTTP <code>GET</code> request. Renders the chart or the lengend
   17.82 +   * into the client's response stream.
   17.83 +   * 
   17.84 +   * @param request
   17.85 +   *          servlet request
   17.86 +   * @param response
   17.87 +   *          servlet response
   17.88 +   * @throws ServletException
   17.89 +   *           when the production of data could not be handled by the
   17.90 +   *           configured DatasetProcuder
   17.91 +   */
   17.92 +  
   17.93 +  public void printParameters(HttpServletRequest request)
   17.94 +  {
   17.95 +    Enumeration enumeration = request.getParameterNames();
   17.96 +    while (enumeration.hasMoreElements())
   17.97 +    {
   17.98 +      String cur = (String)enumeration.nextElement();
   17.99 +      Object obj = request.getParameter(cur);
  17.100 +      
  17.101 +      log("Request Parameter -> " + cur + " Value -> " + obj.toString());
  17.102 +    }
  17.103 +  }
  17.104 +  
  17.105 +  protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException
  17.106 +  {
  17.107 +    if ( debugged )
  17.108 +    {
  17.109 +      logRequest(request);
  17.110 +    }
  17.111 +    addHeaders(response);
  17.112 +    if ( request.getParameter(STATE) != null || !request.getParameterNames().hasMoreElements() )
  17.113 +    {
  17.114 +      requestState(response);
  17.115 +      return;
  17.116 +    }
  17.117 +    synchronized (lock) {
  17.118 +    	requestCount++;
  17.119 +	}
  17.120 +    
  17.121 +    int width = 400;
  17.122 +    int height = 400;
  17.123 +    boolean removeAfterRendering = false;
  17.124 +    if ( request.getParameter(REMOVE_AFTER_RENDERING) != null )
  17.125 +    {
  17.126 +    	removeAfterRendering = true;
  17.127 +    }
  17.128 +    if ( request.getParameter(WIDTH_PARAM) != null )
  17.129 +    {
  17.130 +      width = Integer.parseInt(request.getParameter(WIDTH_PARAM));
  17.131 +    }
  17.132 +    if ( request.getParameter(HEIGHT_PARAM) != null )
  17.133 +    {
  17.134 +      height = Integer.parseInt(request.getParameter(HEIGHT_PARAM));
  17.135 +    }
  17.136 +
  17.137 +    // determine the cache key
  17.138 +    String imgKey = request.getParameter(IMG_PARAM);
  17.139 +    if ( imgKey == null )
  17.140 +    {
  17.141 +      logAndRenderException(new ServletException("no '" + IMG_PARAM + "' parameter provided for Cewolf servlet."), response, width, height);
  17.142 +      return;
  17.143 +    }
  17.144 +    Storage storage = config.getStorage();
  17.145 +    ChartImage chartImage = storage.getChartImage(imgKey, request);
  17.146 +    if ( chartImage == null )
  17.147 +    {
  17.148 +      renderImageExpiry(response, width, height);
  17.149 +      return;
  17.150 +    }
  17.151 +    // send the img
  17.152 +    try
  17.153 +    {
  17.154 +      long start = System.currentTimeMillis();
  17.155 +      // response.setContentType(cid.getMimeType());
  17.156 +      final int size = chartImage.getSize();
  17.157 +      response.setContentType(chartImage.getMimeType());
  17.158 +      response.setContentLength(size);
  17.159 +      response.setBufferSize(size);
  17.160 +      response.setStatus(HttpServletResponse.SC_OK);
  17.161 +      response.getOutputStream().write(chartImage.getBytes());
  17.162 +      long last = System.currentTimeMillis() - start;
  17.163 +      if ( debugged )
  17.164 +      {
  17.165 +        log("creation time for chart " + imgKey + ": " + last + "ms.");
  17.166 +      }
  17.167 +    }
  17.168 +    catch (Throwable t)
  17.169 +    {
  17.170 +      logAndRenderException(t, response, width, height);
  17.171 +    }
  17.172 +    finally
  17.173 +    {
  17.174 +    	if (removeAfterRendering)
  17.175 +    	{
  17.176 +    		try {
  17.177 +				storage.removeChartImage(imgKey , request);
  17.178 +			} catch (CewolfException e) {
  17.179 +				log("Removal of image failed", e);
  17.180 +			}
  17.181 +    	}
  17.182 +    }
  17.183 +  }
  17.184 +
  17.185 +  /**
  17.186 +   * Method addHeaders.
  17.187 +   * 
  17.188 +   * @param response
  17.189 +   */
  17.190 +  private void addHeaders( HttpServletResponse response )
  17.191 +  {
  17.192 +    response.setDateHeader("Expires", System.currentTimeMillis());
  17.193 +  }
  17.194 +
  17.195 +  /**
  17.196 +   * Method requestState.
  17.197 +   * 
  17.198 +   * @param request
  17.199 +   * @param response
  17.200 +   */
  17.201 +  private void requestState( HttpServletResponse response ) throws IOException
  17.202 +  {
  17.203 +    Writer writer = response.getWriter();
  17.204 +    writer.write("<HTML><BODY>");
  17.205 +    /*
  17.206 +     * StateDescriptor sd = (StateDescriptor)
  17.207 +     * ChartImageCacheFactory.getChartImageBase( getServletContext());
  17.208 +     * writer.write(HTMLStateTable.getStateTable(sd));
  17.209 +     */
  17.210 +    writer.write("<b>Cewolf servlet up and running.</b><br>");
  17.211 +    writer.write("Requests served so far: " + requestCount);
  17.212 +    writer.write("</HTML></BODY>");
  17.213 +    writer.close();
  17.214 +  }
  17.215 +
  17.216 +  private void logAndRenderException( Throwable ex, HttpServletResponse response, int width, int height ) throws IOException
  17.217 +  {
  17.218 +    log(ex.getMessage(), ex);
  17.219 +    response.setContentType("image/jpg");
  17.220 +    OutputStream out = response.getOutputStream();
  17.221 +    RenderingHelper.renderException(ex, width, height, out);
  17.222 +    out.close();
  17.223 +  }
  17.224 +
  17.225 +  /**
  17.226 +   * Method renderImageExpiry.
  17.227 +   * 
  17.228 +   * @param response
  17.229 +   * @param width
  17.230 +   * @param height
  17.231 +   */
  17.232 +  private void renderImageExpiry( HttpServletResponse response, int width, int height ) throws IOException
  17.233 +  {
  17.234 +    response.setContentType("image/jpg");
  17.235 +    OutputStream out = response.getOutputStream();
  17.236 +    RenderingHelper.renderMessage("This chart has expired. Please reload.", width, height, out);
  17.237 +    out.close();
  17.238 +  }
  17.239 +
  17.240 +  private void logRequest( HttpServletRequest request ) throws IOException
  17.241 +  {
  17.242 +    log("Cewolf request:");
  17.243 +    log("Actual Request values:");
  17.244 +    printParameters(request);
  17.245 +    Enumeration headerNames = request.getHeaderNames();
  17.246 +    while ( headerNames.hasMoreElements() )
  17.247 +    {
  17.248 +      String name = (String) headerNames.nextElement();
  17.249 +      Enumeration values = request.getHeaders(name);
  17.250 +      StringBuffer value = new StringBuffer();
  17.251 +      while ( values.hasMoreElements() )
  17.252 +      {
  17.253 +        value.append((String) values.nextElement() + ",");
  17.254 +      }
  17.255 +      // cut last comma
  17.256 +      if ( value.length() > 0 )
  17.257 +        value.setLength(value.length() - 1);
  17.258 +      log(name + ": " + value);
  17.259 +    }
  17.260 +  //  InputStream body = request.getInputStream();
  17.261 + //   byte[] bodyData = new byte[body.available()];
  17.262 + //   body.read(bodyData);
  17.263 + //   body.close();
  17.264 + //   log(new String(bodyData));
  17.265 +
  17.266 +  }
  17.267 +
  17.268 +}
  17.269 \ No newline at end of file
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/ChartHolder.java	Sat Feb 28 21:31:02 2009 +0100
    18.3 @@ -0,0 +1,56 @@
    18.4 +/* ================================================================
    18.5 + * Cewolf : Chart enabling Web Objects Framework
    18.6 + * ================================================================
    18.7 + *
    18.8 + * Project Info:  http://cewolf.sourceforge.net
    18.9 + * Project Lead:  Guido Laures (guido@laures.de);
   18.10 + *
   18.11 + * (C) Copyright 2002, by Guido Laures
   18.12 + *
   18.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   18.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   18.15 + * either version 2.1 of the License, or (at your option) any later version.
   18.16 + *
   18.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   18.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   18.19 + * See the GNU Lesser General Public License for more details.
   18.20 + *
   18.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   18.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   18.23 + * Boston, MA 02111-1307, USA.
   18.24 + */
   18.25 +
   18.26 +package de.laures.cewolf;
   18.27 +
   18.28 +/**
   18.29 + * An object of this type represents a full descritption of a chart.
   18.30 + * Therefore it is able to produce the chart and dataset object
   18.31 + * resulting out of this definition.
   18.32 + * @author  Guido Laures
   18.33 + */
   18.34 +public interface ChartHolder {
   18.35 +
   18.36 +	/**
   18.37 +	 * Returns a chart. The type of this object is dependant on the underlying
   18.38 +	 * chart implementation. As of this version of Cewolf it is of type
   18.39 +	 * org.jfree.chart.JFreeChart.
   18.40 +	 * @return the chart object for this definition
   18.41 +	 * @throws DatasetProduceException if there could be no data produced for
   18.42 +	 * the cahrt
   18.43 +	 * @throws ConfigurationException if there is something wrong in the
   18.44 +	 * Cewolf configuration
   18.45 +	 * @throws PostProcessingException if a post processor failed to 
   18.46 +	 * process the chart
   18.47 +	 */
   18.48 +    public Object getChart() throws DatasetProduceException, PostProcessingException, ChartValidationException;
   18.49 +    
   18.50 +	/**
   18.51 +	 * Returns the dataset produced when using this definition.The type of this object is dependant on the underlying
   18.52 +	 * chart implementation. As of this version of Cewolf it is of type
   18.53 +	 * org.jfree.data.Dataset.
   18.54 +	 * @return Object the dataset for this definition
   18.55 +	 * @throws DatasetProduceException if the dataset could not be produced
   18.56 +	 */
   18.57 +    public Object getDataset() throws DatasetProduceException;
   18.58 +    
   18.59 +}
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/ChartImage.java	Sat Feb 28 21:31:02 2009 +0100
    19.3 @@ -0,0 +1,81 @@
    19.4 +/* ================================================================
    19.5 + * Cewolf : Chart enabling Web Objects Framework
    19.6 + * ================================================================
    19.7 + *
    19.8 + * Project Info:  http://cewolf.sourceforge.net
    19.9 + * Project Lead:  Guido Laures (guido@laures.de);
   19.10 + *
   19.11 + * (C) Copyright 2002, by Guido Laures
   19.12 + *
   19.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   19.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   19.15 + * either version 2.1 of the License, or (at your option) any later version.
   19.16 + *
   19.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   19.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   19.19 + * See the GNU Lesser General Public License for more details.
   19.20 + *
   19.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   19.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   19.23 + * Boston, MA 02111-1307, USA.
   19.24 + */
   19.25 +
   19.26 +package de.laures.cewolf;
   19.27 +
   19.28 +import java.io.IOException;
   19.29 +import java.util.Date;
   19.30 +
   19.31 +
   19.32 +/**
   19.33 + * A special ChartHolder which also holds the image presentation of the chart.
   19.34 + * @author  Guido Laures
   19.35 + */
   19.36 +public interface ChartImage {
   19.37 +	
   19.38 +	public static final int IMG_TYPE_CHART = 0;
   19.39 +	public static final int IMG_TYPE_LEGEND = 1;
   19.40 +    
   19.41 +	/**
   19.42 +	 * Returns the width of the chart image in pixel.
   19.43 +	 * @return the width of the chart image in pixel
   19.44 +	 */
   19.45 +    public int getWidth();
   19.46 +
   19.47 +	/**
   19.48 +	 * Returns the height of the chart image in pixel.
   19.49 +	 * @return the height of the chart image in pixel
   19.50 +	 */
   19.51 +    public int getHeight();
   19.52 +    
   19.53 +	/**
   19.54 +	 * Returns the type of the chart image.
   19.55 +	 * @return the type of the chart image
   19.56 +	 * @see #IMG_TYPE_CHART
   19.57 +	 * @see #IMG_TYPE_LEGEND
   19.58 +	 */
   19.59 +    public int getType();
   19.60 +    
   19.61 +    /**
   19.62 +     * Writes out a cached image to an outputstream. This method only marks the object
   19.63 +     * as accessed and therfore frees it for cache cleanup.
   19.64 +     * @param key the cache key
   19.65 +     * @param out the stream to write to
   19.66 +     * @throws IOException if an I/O error occured during write
   19.67 +     */
   19.68 +    public byte[] getBytes() throws CewolfException;
   19.69 +        
   19.70 +    /**
   19.71 +     * Returns the MIME type of this image.
   19.72 +     * @return the MIME type of the image
   19.73 +     */
   19.74 +    public String getMimeType();
   19.75 +        
   19.76 +	/**
   19.77 +	 * Returns the size of the image in bytes.
   19.78 +	 * @return size of the image
   19.79 +	 * @throws CewolfException if the size could not be determined
   19.80 +	 */
   19.81 +    public int getSize() throws CewolfException;
   19.82 +    
   19.83 +    public Date getTimeoutTime();
   19.84 +}
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/ChartPostProcessor.java	Sat Feb 28 21:31:02 2009 +0100
    20.3 @@ -0,0 +1,50 @@
    20.4 +/* ================================================================
    20.5 + * Cewolf : Chart enabling Web Objects Framework
    20.6 + * ================================================================
    20.7 + *
    20.8 + * Project Info:  http://cewolf.sourceforge.net
    20.9 + * Project Lead:  Guido Laures (guido@laures.de);
   20.10 + *
   20.11 + * (C) Copyright 2002, by Guido Laures
   20.12 + *
   20.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   20.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   20.15 + * either version 2.1 of the License, or (at your option) any later version.
   20.16 + *
   20.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   20.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   20.19 + * See the GNU Lesser General Public License for more details.
   20.20 + *
   20.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   20.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   20.23 + * Boston, MA 02111-1307, USA.
   20.24 + */
   20.25 +
   20.26 +package de.laures.cewolf;
   20.27 +
   20.28 +import java.util.Map;
   20.29 +
   20.30 +/**
   20.31 + * Postprocesses a generated chart instance. Objects of this class can be used to
   20.32 + * customize a generated and afterwards rendered chart instance additionally.
   20.33 + * To provide a postprocessor the &lt;chartpostprocessor&gt; tag is used. 
   20.34 + * There can be an unlimited number of postprocessors registered.
   20.35 + * @see de.laures.cewolf.taglib.tags.ChartPostProcessorTag
   20.36 + * @author  Guido Laures
   20.37 + */
   20.38 +public interface ChartPostProcessor {
   20.39 +
   20.40 +    /**
   20.41 +     * Processes a generated chart. This method is called by the ChartProducer
   20.42 +     * after a chart instance is generated and before it is rendered (if so).
   20.43 +     * The ChartProducer is responsible for post processing a chart dependant
   20.44 +     * on and only on the provided parameters. This means that the same parameters
   20.45 +     * should result in the same post processings.
   20.46 +     * @param chart the chart instnce. Concrete class depends on the rendering
   20.47 +     * implementation. Currently a org.jfree.chart.JFreeChart is passed.
   20.48 +     * @param params paramters passed to the postprocessor. These are defined in the JSP
   20.49 +     * @see de.laures.cewolf.taglib.tags.ChartPostProcessorTag
   20.50 +     */
   20.51 +    void processChart(Object chart, Map params);
   20.52 +
   20.53 +}
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/ChartRenderingException.java	Sat Feb 28 21:31:02 2009 +0100
    21.3 @@ -0,0 +1,52 @@
    21.4 +/* ================================================================
    21.5 + * Cewolf : Chart enabling Web Objects Framework
    21.6 + * ================================================================
    21.7 + *
    21.8 + * Project Info:  http://cewolf.sourceforge.net
    21.9 + * Project Lead:  Guido Laures (guido@laures.de);
   21.10 + *
   21.11 + * (C) Copyright 2002, by Guido Laures
   21.12 + *
   21.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   21.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   21.15 + * either version 2.1 of the License, or (at your option) any later version.
   21.16 + *
   21.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   21.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   21.19 + * See the GNU Lesser General Public License for more details.
   21.20 + *
   21.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   21.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   21.23 + * Boston, MA 02111-1307, USA.
   21.24 + */
   21.25 +
   21.26 +package de.laures.cewolf;
   21.27 +
   21.28 +/**
   21.29 + * Thrown by a renderer if a problem during the rendering process occured.
   21.30 + * @author  Guido Laures
   21.31 + */
   21.32 +public class ChartRenderingException extends CewolfException {
   21.33 +
   21.34 +    /** Creates a new instance of <code>ChartRenderingException</code> without detail message. */
   21.35 +    public ChartRenderingException() {
   21.36 +    }
   21.37 +
   21.38 +
   21.39 +    /**
   21.40 +     * Constructs an instance of <code>ChartRenderingException</code> with the specified detail message.
   21.41 +     * @param msg the detail message.
   21.42 +     */
   21.43 +    public ChartRenderingException(String msg) {
   21.44 +        super(msg);
   21.45 +    }
   21.46 +    
   21.47 +    /**
   21.48 +     * Constructor with cause exception
   21.49 +     * @param msg Message
   21.50 +     * @param cause cause
   21.51 +     */
   21.52 +    public ChartRenderingException(String msg, Exception cause) {
   21.53 +        super(msg, cause);
   21.54 +    }
   21.55 +}
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/ChartValidationException.java	Sat Feb 28 21:31:02 2009 +0100
    22.3 @@ -0,0 +1,35 @@
    22.4 +/* ================================================================
    22.5 + * Cewolf : Chart enabling Web Objects Framework
    22.6 + * ================================================================
    22.7 + *
    22.8 + * Project Info:  http://cewolf.sourceforge.net
    22.9 + * Project Lead:  Guido Laures (guido@laures.de);
   22.10 + *
   22.11 + * (C) Copyright 2002, by Guido Laures
   22.12 + *
   22.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   22.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   22.15 + * either version 2.1 of the License, or (at your option) any later version.
   22.16 + *
   22.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   22.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   22.19 + * See the GNU Lesser General Public License for more details.
   22.20 + *
   22.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   22.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   22.23 + * Boston, MA 02111-1307, USA.
   22.24 + */
   22.25 +
   22.26 +package de.laures.cewolf;
   22.27 +
   22.28 +
   22.29 +/**
   22.30 + * @author glaures
   22.31 + */
   22.32 +public class ChartValidationException extends CewolfException {
   22.33 +	
   22.34 +	public ChartValidationException(String msg){
   22.35 +		super(msg);
   22.36 +	}
   22.37 +
   22.38 +}
    23.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/Configuration.java	Sat Feb 28 21:31:02 2009 +0100
    23.3 @@ -0,0 +1,169 @@
    23.4 +/* ================================================================
    23.5 + * Cewolf : Chart enabling Web Objects Framework
    23.6 + * ================================================================
    23.7 + *
    23.8 + * Project Info:  http://cewolf.sourceforge.net
    23.9 + * Project Lead:  Guido Laures (guido@laures.de);
   23.10 + *
   23.11 + * (C) Copyright 2002, by Guido Laures
   23.12 + *
   23.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   23.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   23.15 + * either version 2.1 of the License, or (at your option) any later version.
   23.16 + *
   23.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   23.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   23.19 + * See the GNU Lesser General Public License for more details.
   23.20 + *
   23.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   23.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   23.23 + * Boston, MA 02111-1307, USA.
   23.24 + */
   23.25 +
   23.26 +package de.laures.cewolf;
   23.27 +
   23.28 +import java.util.Enumeration;
   23.29 +import java.util.HashMap;
   23.30 +import java.util.Map;
   23.31 +
   23.32 +import javax.servlet.ServletConfig;
   23.33 +import javax.servlet.ServletContext;
   23.34 +
   23.35 +/**
   23.36 + * This class represents the configuration of the Cewolf framework.
   23.37 + * It is designed as singleton and resists in application context.
   23.38 + * @author glaures
   23.39 + * @since 0.8
   23.40 + */
   23.41 +public class Configuration {
   23.42 +
   23.43 +	public static final String KEY = Configuration.class.getName();
   23.44 +	private static final String DEFAULT_OVERLIB_URL = "overlib.js";
   23.45 +	private static final String DEFAULT_STORAGE = "de.laures.cewolf.storage.TransientSessionStorage";
   23.46 +
   23.47 +	private String overlibURL = DEFAULT_OVERLIB_URL;
   23.48 +	private boolean debugged = false;
   23.49 +
   23.50 +	private String storageClassName = DEFAULT_STORAGE;
   23.51 +	private Storage storage = null;
   23.52 +	private Map parameters = new HashMap();
   23.53 +
   23.54 +	/** package protected constructor triggered by servlet */
   23.55 +	protected Configuration(ServletContext ctx) {
   23.56 +        ctx.log("configuring cewolf app..");
   23.57 +        ctx.setAttribute(KEY, this);
   23.58 +
   23.59 +        //retrieve the init config params
   23.60 +        ServletConfig config = (ServletConfig) ctx.getAttribute(CewolfRenderer.INIT_CONFIG);
   23.61 +        if (config != null)
   23.62 +        {
   23.63 +            Enumeration initParams = config.getInitParameterNames();
   23.64 +            try {
   23.65 +                while (initParams.hasMoreElements()) {
   23.66 +                    String param = (String) initParams.nextElement();
   23.67 +                    String value = config.getInitParameter(param);
   23.68 +                    if ("debug".equalsIgnoreCase(param)) {
   23.69 +                        debugged = Boolean.valueOf(value).booleanValue();
   23.70 +                    } else if ("overliburl".equalsIgnoreCase(param)) {
   23.71 +                        overlibURL = value;
   23.72 +                    } else if ("storage".equalsIgnoreCase(param)) {
   23.73 +                        storageClassName = value;
   23.74 +                    } else {
   23.75 +                        ctx.log(param + " parameter is ignored.");
   23.76 +                    }
   23.77 +                    parameters.put(param,value);
   23.78 +                }
   23.79 +            } catch (Throwable t) {
   23.80 +                ctx.log("Error in Cewolf config.", t);
   23.81 +            }            
   23.82 +        }
   23.83 +        else {
   23.84 +        	ctx.log("Cewolf Misconfiguration. You should add a <load-on-startup> tag "
   23.85 +        			+ "to your web.xml for the Cewolf rendering servlet.\n"
   23.86 +					+ "A default Configuration will be used if not.");
   23.87 +        }
   23.88 +        
   23.89 +		try {
   23.90 +			initStorage(ctx);
   23.91 +		} catch (CewolfException ex) {
   23.92 +			ctx.log("exception during storage init from class " + storageClassName);
   23.93 +			ctx.log("using " + DEFAULT_STORAGE);
   23.94 +			storageClassName = DEFAULT_STORAGE;
   23.95 +			try {
   23.96 +				initStorage(ctx);
   23.97 +			} catch(CewolfException cwex){
   23.98 +				cwex.printStackTrace();
   23.99 +				throw new RuntimeException(storageClassName + ".init() threw exception.");
  23.100 +			}
  23.101 +		}
  23.102 +		ctx.log("using storage class " + storageClassName);
  23.103 +		ctx.log("using overlibURL " + overlibURL);
  23.104 +		ctx.log("debugging is turned " + (debugged ? "on" : "off"));
  23.105 +		ctx.log("...done.");
  23.106 +	}
  23.107 +	
  23.108 +	private void initStorage(ServletContext ctx) throws CewolfException {
  23.109 +		try {
  23.110 +			storage = (Storage)Class.forName(storageClassName).newInstance();
  23.111 +		} catch(Exception ex){
  23.112 +			ex.printStackTrace();
  23.113 +			throw new CewolfException(ex.getMessage());
  23.114 +		}
  23.115 +		storage.init(ctx);
  23.116 +	}
  23.117 +
  23.118 +	private Configuration() {
  23.119 +	}
  23.120 +
  23.121 +	/**
  23.122 +	 * Factory method. If no Configuration had been initialized before, a new
  23.123 +	 * one is created, stored in ctx and returned to the caller.
  23.124 +	 * @param ctx the servlet context from where to retrieve the Configuration
  23.125 +	 * object.
  23.126 +	 * @return the config object
  23.127 +	 */
  23.128 +	public static Configuration getInstance(ServletContext ctx) {
  23.129 +		Configuration config = null;
  23.130 +        config = (Configuration) ctx.getAttribute(KEY);
  23.131 +        
  23.132 +        if (config == null)
  23.133 +        {
  23.134 +            ctx.log("No Configuration for this context.  Initializing.");
  23.135 +            config = new Configuration(ctx);
  23.136 +            ctx.setAttribute(KEY, config);
  23.137 +        }
  23.138 +
  23.139 +		return config;
  23.140 +	}
  23.141 +        
  23.142 +	/**
  23.143 +	 * Checks if debugging is configured to be turned on. Configured by
  23.144 +	 * init param <code>debug</code> in web.xml.
  23.145 +	 * @return <code>true</code> if a debugging is on, else <code>false</false>
  23.146 +	 */
  23.147 +	public boolean isDebugged() {
  23.148 +		return debugged;
  23.149 +	}
  23.150 +
  23.151 +	/**
  23.152 +	 * Returns the location of the overlib.js relative to webapp's root.
  23.153 +	 * Configured by init param <code>overliburl</code> in web.xml. Defaults to
  23.154 +	 * <code>overlib.js</code>
  23.155 +	 * @return String
  23.156 +	 */
  23.157 +	public String getOverlibURL() {
  23.158 +		return overlibURL;
  23.159 +	}
  23.160 +
  23.161 +	public Storage getStorage() {
  23.162 +		return storage;
  23.163 +	}
  23.164 +	
  23.165 +	/**
  23.166 +	 * Get the initialization parameters from Cewolf servlet.
  23.167 +	 * @return The parameter map (String->String) values
  23.168 +	 */
  23.169 +	public Map getParameters() {
  23.170 +		return parameters;
  23.171 +	}
  23.172 +}
    24.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/ConfigurationException.java	Sat Feb 28 21:31:02 2009 +0100
    24.3 @@ -0,0 +1,44 @@
    24.4 +/* ================================================================
    24.5 + * Cewolf : Chart enabling Web Objects Framework
    24.6 + * ================================================================
    24.7 + *
    24.8 + * Project Info:  http://cewolf.sourceforge.net
    24.9 + * Project Lead:  Guido Laures (guido@laures.de);
   24.10 + *
   24.11 + * (C) Copyright 2002, by Guido Laures
   24.12 + *
   24.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   24.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   24.15 + * either version 2.1 of the License, or (at your option) any later version.
   24.16 + *
   24.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   24.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   24.19 + * See the GNU Lesser General Public License for more details.
   24.20 + *
   24.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   24.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   24.23 + * Boston, MA 02111-1307, USA.
   24.24 + */
   24.25 +
   24.26 +package de.laures.cewolf;
   24.27 +
   24.28 +/**
   24.29 + * Thrown by an object which handles the production of a specific chart instance
   24.30 + * when detecting an incorrect or unconsistent configuration.
   24.31 + * @author  Guido Laures
   24.32 + */
   24.33 +public class ConfigurationException extends CewolfException {
   24.34 +
   24.35 +    /** Creates a new instance of <code>ConfigurationException</code> without detail message. */
   24.36 +    public ConfigurationException() {
   24.37 +    }
   24.38 +
   24.39 +
   24.40 +    /**
   24.41 +     * Constructs an instance of <code>ConfigurationException</code> with the specified detail message.
   24.42 +     * @param msg the detail message.
   24.43 +     */
   24.44 +    public ConfigurationException(String msg) {
   24.45 +        super(msg);
   24.46 +    }
   24.47 +}
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/DatasetProduceException.java	Sat Feb 28 21:31:02 2009 +0100
    25.3 @@ -0,0 +1,44 @@
    25.4 +/* ================================================================
    25.5 + * Cewolf : Chart enabling Web Objects Framework
    25.6 + * ================================================================
    25.7 + *
    25.8 + * Project Info:  http://cewolf.sourceforge.net
    25.9 + * Project Lead:  Guido Laures (guido@laures.de);
   25.10 + *
   25.11 + * (C) Copyright 2002, by Guido Laures
   25.12 + *
   25.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   25.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   25.15 + * either version 2.1 of the License, or (at your option) any later version.
   25.16 + *
   25.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   25.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   25.19 + * See the GNU Lesser General Public License for more details.
   25.20 + *
   25.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   25.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   25.23 + * Boston, MA 02111-1307, USA.
   25.24 + */
   25.25 +
   25.26 +package de.laures.cewolf;
   25.27 +
   25.28 +/**
   25.29 + * Thrown by a DatasetProducer if it has problems in creating a correct dataset.
   25.30 + * @see DatasetProducer
   25.31 + * @author  Guido Laures
   25.32 + */
   25.33 +public class DatasetProduceException extends CewolfException {
   25.34 +
   25.35 +    /** Creates a new instance of <code>DatasetProduceException</code> without detail message. */
   25.36 +    public DatasetProduceException() {
   25.37 +    }
   25.38 +
   25.39 +
   25.40 +    /**
   25.41 +     * Constructs an instance of <code>DatasetProduceException</code> with the specified detail message.
   25.42 +     * @param msg the detail message.
   25.43 +     */
   25.44 +    public DatasetProduceException(String msg) {
   25.45 +        super(msg);
   25.46 +    }
   25.47 +}
    26.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/DatasetProducer.java	Sat Feb 28 21:31:02 2009 +0100
    26.3 @@ -0,0 +1,87 @@
    26.4 +/* ================================================================
    26.5 + * Cewolf : Chart enabling Web Objects Framework
    26.6 + * ================================================================
    26.7 + *
    26.8 + * Project Info:  http://cewolf.sourceforge.net
    26.9 + * Project Lead:  Guido Laures (guido@laures.de);
   26.10 + *
   26.11 + * (C) Copyright 2002, by Guido Laures
   26.12 + *
   26.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   26.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   26.15 + * either version 2.1 of the License, or (at your option) any later version.
   26.16 + *
   26.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   26.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   26.19 + * See the GNU Lesser General Public License for more details.
   26.20 + *
   26.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   26.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   26.23 + * Boston, MA 02111-1307, USA.
   26.24 + */
   26.25 +
   26.26 +package de.laures.cewolf;
   26.27 +
   26.28 +import java.io.Serializable;
   26.29 +import java.util.Date;
   26.30 +import java.util.Map;
   26.31 +
   26.32 +/**
   26.33 + * Produces a {@link org.jfree.data.Dataset} which will be rendered 
   26.34 + * as a chart 	afterwards.
   26.35 + * @see org.jfree.data.Dataset
   26.36 + * @author  Guido Laures
   26.37 + * @since 0.1
   26.38 + */
   26.39 +public interface DatasetProducer extends Serializable {
   26.40 +    
   26.41 +    /**
   26.42 +     * By default the the name of the JSP attribute 
   26.43 +     * holding the producer instance is passed to the 
   26.44 +     * produceDataset method as a prameter.
   26.45 +     */
   26.46 +    public static final String PRODUCER_ATTRIBUTE_NAME = "de.laures.cewolf.DatasetProducer.id";
   26.47 +	
   26.48 +    /**
   26.49 +     * Produces a {@link org.jfree.data.Dataset} object.
   26.50 +     * @param params additional params for the dataset production. All elements
   26.51 +     * of this HashMap are of type <code>java.io.Serializable</code>. This is
   26.52 +     * necessary to ensure the the serialization of the dataset producer into
   26.53 +     * the http session. To provide a producer with additional production
   26.54 +     * parameters the &lt;param&gt; tag is used (see tag library documentation).
   26.55 +     * It is recommended to synchronize implementations of this method to avoid
   26.56 +     * concurrency problems.
   26.57 +     * @return an object of type <code>org.jfree.data.Dataset</code>.
   26.58 +     * @throws DatasetProduceException if an error occured during production
   26.59 +     * @since 0.2
   26.60 +     */
   26.61 +    Object produceDataset(Map params) throws DatasetProduceException;
   26.62 +	
   26.63 +	/**
   26.64 +	 * This method is called by the Cewolf framework to check if a formerly
   26.65 +	 * produced data can be reused. If the data which had already been used
   26.66 +	 * for chart rendering is still valid this method should return <code>true</code>.
   26.67 +	 * If possible the Cewolf framework will try to reuse the rendered chart
   26.68 +	 * image. If this is not possible because of some circumstances (e.g. the chart
   26.69 +	 * had been removed from the image cache) the produceDataset method is called afterwards.
   26.70 +	 * Therefore there is no guarantee that the dataset production is always 
   26.71 +	 * avoided if this method returns <code>true</true>.
   26.72 +	 * @param params the production parameters of the already produced data
   26.73 +	 * @param since the point in time when the already produced data had been produced
   26.74 +	 * @return <code>true</code> if the data which had been produced with the 
   26.75 +	 * passed in parameters has expired since its creation, <code>false</code> 
   26.76 +	 * otherwise
   26.77 +	 * @since 0.9
   26.78 +	 */
   26.79 +	boolean hasExpired(Map params, Date since);
   26.80 +	
   26.81 +	/**
   26.82 +	 * Tis method returns a unique ID for a DatasetProducer from this class.
   26.83 +	 * Producers with the same ID are supposed to produce the same data when
   26.84 +	 * called with the same paramters.
   26.85 +	 * @return the unique ID for instances of this poducer class
   26.86 +	 * @since 0.9
   26.87 +	 */
   26.88 +	String getProducerId();
   26.89 +
   26.90 +}
    27.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/PostProcessingException.java	Sat Feb 28 21:31:02 2009 +0100
    27.3 @@ -0,0 +1,44 @@
    27.4 +/* ================================================================
    27.5 + * Cewolf : Chart enabling Web Objects Framework
    27.6 + * ================================================================
    27.7 + *
    27.8 + * Project Info:  http://cewolf.sourceforge.net
    27.9 + * Project Lead:  Guido Laures (guido@laures.de);
   27.10 + *
   27.11 + * (C) Copyright 2002, by Guido Laures
   27.12 + *
   27.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   27.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   27.15 + * either version 2.1 of the License, or (at your option) any later version.
   27.16 + *
   27.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   27.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   27.19 + * See the GNU Lesser General Public License for more details.
   27.20 + *
   27.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   27.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   27.23 + * Boston, MA 02111-1307, USA.
   27.24 + */
   27.25 +
   27.26 +package de.laures.cewolf;
   27.27 +
   27.28 +/**
   27.29 + * Thrown by a DatasetProducer if it has problems in creating a correct dataset.
   27.30 + * @see DatasetProducer
   27.31 + * @author  Guido Laures
   27.32 + */
   27.33 +public class PostProcessingException extends CewolfException {
   27.34 +
   27.35 +    /** Creates a new instance of <code>DatasetProduceException</code> without detail message. */
   27.36 +    public PostProcessingException() {
   27.37 +    }
   27.38 +
   27.39 +
   27.40 +    /**
   27.41 +     * Constructs an instance of <code>DatasetProduceException</code> with the specified detail message.
   27.42 +     * @param msg the detail message.
   27.43 +     */
   27.44 +    public PostProcessingException(String msg) {
   27.45 +        super(msg);
   27.46 +    }
   27.47 +}
    28.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/Storage.java	Sat Feb 28 21:31:02 2009 +0100
    28.3 @@ -0,0 +1,87 @@
    28.4 +/* ================================================================
    28.5 + * Cewolf : Chart enabling Web Objects Framework
    28.6 + * ================================================================
    28.7 + *
    28.8 + * Project Info:  http://cewolf.sourceforge.net
    28.9 + * Project Lead:  Guido Laures (guido@laures.de);
   28.10 + *
   28.11 + * (C) Copyright 2002, by Guido Laures
   28.12 + *
   28.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   28.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   28.15 + * either version 2.1 of the License, or (at your option) any later version.
   28.16 + *
   28.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   28.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   28.19 + * See the GNU Lesser General Public License for more details.
   28.20 + *
   28.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   28.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   28.23 + * Boston, MA 02111-1307, USA.
   28.24 + */
   28.25 +
   28.26 +package de.laures.cewolf;
   28.27 +
   28.28 +import javax.servlet.ServletContext;
   28.29 +import javax.servlet.http.HttpServletRequest;
   28.30 +import javax.servlet.http.HttpSession;
   28.31 +import javax.servlet.jsp.PageContext;
   28.32 +
   28.33 +/**
   28.34 + * Pluggable storage. Implement this class to change the
   28.35 + * storage concept which Cewolf uses to store chart imanges and
   28.36 + * provide the implementation class name as init paramter <em>storage</em>
   28.37 + * for Cewolf servlet.
   28.38 + * @author glaures
   28.39 + */
   28.40 +public interface Storage{
   28.41 +	
   28.42 +	/**
   28.43 +	 * Stores a chart image.
   28.44 +	 * @param cid the image to be stored
   28.45 +	 * @param servletContext servletContext which might be needed
   28.46 +	 * @return String the storage id which is used to find the image in storage
   28.47 +	 */
   28.48 +	public String storeChartImage(ChartImage chartImage, PageContext pageContext) throws CewolfException;
   28.49 +  
   28.50 +	/**
   28.51 +	 * Retrieves a chart image.
   28.52 +	 * @param id the id of the image
   28.53 +	 * @param request the request
   28.54 +	 * @return ChartImage the stored image instance
   28.55 +	 */
   28.56 +	public ChartImage getChartImage(String id, HttpServletRequest request);
   28.57 +    
   28.58 +	/**
   28.59 +	 * Tests if a chart image is already available in thsi store..
   28.60 +	 * @param chartImage the image to test
   28.61 +	 * @param pageContext the pageContext
   28.62 +	 * @return <code>true</code> if a stored instance of this image is availbale
   28.63 +	 */
   28.64 +	// public boolean contains(ChartImage chartImage, PageContext pageContext);
   28.65 +	
   28.66 +	/**
   28.67 +	 * Returns the key for this 
   28.68 +	 * @param chartImage
   28.69 +	 * @return String
   28.70 +	 */
   28.71 +	// public String getKey(ChartImage chartImage);
   28.72 +	
   28.73 +	/**
   28.74 +	 * Method init.
   28.75 +	 * @param servletContext
   28.76 +	 * @throws CewolfException
   28.77 +	 */
   28.78 +	public void init(ServletContext servletContext) throws CewolfException;
   28.79 +
   28.80 +
   28.81 +	/**
   28.82 +	 * Removes the image from the storage
   28.83 +	 * @param imgId Image id
   28.84 +	 * @param request Servlet request
   28.85 +	 * @return Image id
   28.86 +	 * @throws CewolfException
   28.87 +	 */
   28.88 +	public String removeChartImage(String imgId, HttpServletRequest request)
   28.89 +			throws CewolfException;
   28.90 +}
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/WebConstants.java	Sat Feb 28 21:31:02 2009 +0100
    29.3 @@ -0,0 +1,79 @@
    29.4 +/* ================================================================
    29.5 + * Cewolf : Chart enabling Web Objects Framework
    29.6 + * ================================================================
    29.7 + *
    29.8 + * Project Info:  http://cewolf.sourceforge.net
    29.9 + * Project Lead:  Guido Laures (guido@laures.de);
   29.10 + *
   29.11 + * (C) Copyright 2002, by Guido Laures
   29.12 + *
   29.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   29.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   29.15 + * either version 2.1 of the License, or (at your option) any later version.
   29.16 + *
   29.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   29.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   29.19 + * See the GNU Lesser General Public License for more details.
   29.20 + *
   29.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   29.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   29.23 + * Boston, MA 02111-1307, USA.
   29.24 + */
   29.25 +
   29.26 +package de.laures.cewolf;
   29.27 +
   29.28 +/**
   29.29 + * Contains some base constants to avoid explicit dependancy to concrete chart 
   29.30 + * implementation's constant values. The constants of this class also serve as
   29.31 + * the base contract for data exchange between sub packages.
   29.32 + * @author  Guido Laures
   29.33 + */
   29.34 +public interface WebConstants {
   29.35 +
   29.36 +    /**
   29.37 +     * The key for the session ID.
   29.38 +     */
   29.39 +	String SESSIONID_KEY = "jsessionid";
   29.40 +
   29.41 +    /**
   29.42 +     * Escape of an Ampersand in HTML
   29.43 +     */
   29.44 +	String AMPERSAND = "&amp;";
   29.45 +
   29.46 +    /**
   29.47 +     * The image parameter key.
   29.48 +     */
   29.49 +    String IMG_PARAM = "img";
   29.50 +
   29.51 +    /**
   29.52 +     * The key for the width of the image.
   29.53 +     */
   29.54 +    String WIDTH_PARAM = "width";
   29.55 +
   29.56 +    /**
   29.57 +     * The key for the height of the image.
   29.58 +     */
   29.59 +    String HEIGHT_PARAM = "height";
   29.60 +    
   29.61 +      /**
   29.62 +     * Remove image from Storage after rendering
   29.63 +     */
   29.64 +    String REMOVE_AFTER_RENDERING = "removeAfterRendering";
   29.65 +
   29.66 +    /**
   29.67 +     * MIME name of a PNG image.
   29.68 +     */
   29.69 +  	String MIME_PNG = "image/png";
   29.70 +
   29.71 +    /**
   29.72 +     * MIME name of a JPEG image.
   29.73 +     */
   29.74 +  	String MIME_JPEG = "image/jpeg";
   29.75 +  	
   29.76 +  	
   29.77 +    /**
   29.78 +     * MIME name of a SVG image
   29.79 +     */
   29.80 +	String MIME_SVG = "image/svg+xml";
   29.81 +  
   29.82 +}
    30.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/cpp/RotatedAxisLabels.java	Sat Feb 28 21:31:02 2009 +0100
    30.3 @@ -0,0 +1,70 @@
    30.4 +package de.laures.cewolf.cpp;
    30.5 +
    30.6 +import java.util.Map;
    30.7 +
    30.8 +import org.jfree.chart.JFreeChart;
    30.9 +import org.jfree.chart.axis.CategoryAxis;
   30.10 +import org.jfree.chart.axis.CategoryLabelPositions;
   30.11 +import org.jfree.chart.plot.CategoryPlot;
   30.12 +import org.jfree.data.category.CategoryDataset;
   30.13 +
   30.14 +import de.laures.cewolf.ChartPostProcessor;
   30.15 +
   30.16 +/**
   30.17 +* A cewolf post-processor for rotating and/or removing the labels on the X-Axis
   30.18 +* parameters:
   30.19 +* rotate_at: make the labels vertical
   30.20 +* skip_at: print only some of the labels (so they don't overlap)
   30.21 +* remove_at: don't print any labels
   30.22 +*
   30.23 +* Usage:
   30.24 +* <chart:chartpostprocessor id="labelRotation">
   30.25 +* <chart:param name="rotate_at" value='<%= new Integer(10) %>'/>
   30.26 +* <chart:param name="skip_at" value='<%= new Integer(50) %>'/>
   30.27 +* <chart:param name="remove_at" value='<%= new Integer(100) %>'/>
   30.28 +* </chart:chartpostprocessor>
   30.29 +*
   30.30 +*
   30.31 +* @author Rich Unger
   30.32 +*/
   30.33 +
   30.34 +public class RotatedAxisLabels implements ChartPostProcessor {
   30.35 +	
   30.36 +public void processChart(Object chart, Map params) {
   30.37 +		CategoryPlot plot = (CategoryPlot) ((JFreeChart) chart).getPlot();
   30.38 +
   30.39 +		CategoryAxis axis = plot.getDomainAxis();
   30.40 +
   30.41 +		Number rotateThreshold = (Number) params.get("rotate_at");
   30.42 +		Number skipThreshold = (Number) params.get("skip_at");
   30.43 +		Number removeThreshold = (Number) params.get("remove_at");
   30.44 +
   30.45 +		CategoryDataset dataset = plot.getDataset();
   30.46 +		int iCategoryCount = dataset.getRowCount();
   30.47 +
   30.48 +		if (rotateThreshold != null) 
   30.49 +    {
   30.50 +      if (iCategoryCount >= rotateThreshold.intValue()) 
   30.51 +      {
   30.52 +        axis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
   30.53 +      }
   30.54 +      else 
   30.55 +      {
   30.56 +        axis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD);
   30.57 +      }
   30.58 +
   30.59 +    }
   30.60 +    
   30.61 +		if (skipThreshold != null) 
   30.62 +    {
   30.63 +      //this method does nothing in jfreechart .9.18
   30.64 +			//axis.setSkipCategoryLabelsToFit(iCategoryCount >= skipThreshold.intValue());
   30.65 +		}
   30.66 +		
   30.67 +    if (removeThreshold != null) 
   30.68 +    {
   30.69 +			axis.setTickLabelsVisible(iCategoryCount < removeThreshold.intValue());
   30.70 +		}
   30.71 +	}
   30.72 +	
   30.73 +}
    31.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/cpp/package.html	Sat Feb 28 21:31:02 2009 +0100
    31.3 @@ -0,0 +1,10 @@
    31.4 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    31.5 +
    31.6 +<HTML>
    31.7 +<HEAD>
    31.8 +<TITLE></TITLE>
    31.9 +</HEAD>
   31.10 +<BODY>
   31.11 +Unsupported third party ChartPostProcessor implmentations.
   31.12 +</BODY>
   31.13 +</HTML>
    32.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/dp/DataSourceXYDatasetProducer.java	Sat Feb 28 21:31:02 2009 +0100
    32.3 @@ -0,0 +1,54 @@
    32.4 +package de.laures.cewolf.dp;
    32.5 +
    32.6 +import java.io.Serializable;
    32.7 +import java.util.Date;
    32.8 +import java.util.Map;
    32.9 +
   32.10 +import de.laures.cewolf.DatasetProduceException;
   32.11 +import de.laures.cewolf.DatasetProducer;
   32.12 +
   32.13 +/**
   32.14 + * @author glaures
   32.15 + *
   32.16 + * To change this generated comment edit the template variable "typecomment":
   32.17 + * Window>Preferences>Java>Templates.
   32.18 + * To enable and disable the creation of type comments go to
   32.19 + * Window>Preferences>Java>Code Generation.
   32.20 + */
   32.21 +public class DataSourceXYDatasetProducer implements DatasetProducer, Serializable {
   32.22 +
   32.23 +	public static final String PARAM_SERIES_LIST = "series";
   32.24 +
   32.25 +	/**
   32.26 +	 * @see de.laures.cewolf.DatasetProducer#produceDataset(Map)
   32.27 +	 */
   32.28 +	public Object produceDataset(Map params) throws DatasetProduceException {
   32.29 +		/*
   32.30 +		DataSourceXYSeries series = new DataSourceXYSeries("select * from xy;");
   32.31 +		XYSeriesCollection dataset = new XYSeriesCollection();
   32.32 +		try {
   32.33 +			DataSource ds = getDataSource((String)params.get(PARAM_DATASOURCE));
   32.34 +			dataset.addSeries(series.produceXYSeries(ds));
   32.35 +		} catch (NamingException nEx) {
   32.36 +			nEx.printStackTrace();
   32.37 +			throw new DatasetProduceException(nEx.getMessage());
   32.38 +		}
   32.39 +		*/
   32.40 +		return null;
   32.41 +	}
   32.42 +
   32.43 +	/**
   32.44 +	 * @see de.laures.cewolf.DatasetProducer#hasExpired(Map, Date)
   32.45 +	 */
   32.46 +	public boolean hasExpired(Map params, Date since) {
   32.47 +		return true;
   32.48 +	}
   32.49 +
   32.50 +	/**
   32.51 +	 * @see de.laures.cewolf.DatasetProducer#getProducerId()
   32.52 +	 */
   32.53 +	public String getProducerId() {
   32.54 +		return toString();
   32.55 +	}
   32.56 +
   32.57 +}
    33.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/dp/DataSourceXYSeries.java	Sat Feb 28 21:31:02 2009 +0100
    33.3 @@ -0,0 +1,67 @@
    33.4 +package de.laures.cewolf.dp;
    33.5 +
    33.6 +import java.io.Serializable;
    33.7 +import java.sql.Connection;
    33.8 +import java.sql.ResultSet;
    33.9 +import java.util.Map;
   33.10 +
   33.11 +import javax.naming.Context;
   33.12 +import javax.naming.InitialContext;
   33.13 +import javax.naming.NamingException;
   33.14 +import javax.sql.DataSource;
   33.15 +
   33.16 +import org.jfree.data.xy.XYSeries;
   33.17 +
   33.18 +import de.laures.cewolf.DatasetProduceException;
   33.19 +
   33.20 +/**
   33.21 + * @author glaures
   33.22 + *
   33.23 + * To change this generated comment edit the template variable "typecomment":
   33.24 + * Window>Preferences>Java>Templates.
   33.25 + * To enable and disable the creation of type comments go to
   33.26 + * Window>Preferences>Java>Code Generation.
   33.27 + */
   33.28 +public class DataSourceXYSeries implements Serializable {
   33.29 +
   33.30 +	private String dataSourceName;
   33.31 +	private String query;
   33.32 +	private String xCol = "x";
   33.33 +	private String yCol = "y";
   33.34 +	private String seriesName = "name";
   33.35 +	
   33.36 +	/**
   33.37 +	 * Constructor for DataSourceXYSeries.
   33.38 +	 */
   33.39 +	public DataSourceXYSeries(String dataSourceName, String query) {
   33.40 +		this.dataSourceName = dataSourceName;
   33.41 +		this.query = query;
   33.42 +	}
   33.43 +
   33.44 +	protected DataSource getDataSource() throws NamingException {
   33.45 +		Context initCtx = new InitialContext();
   33.46 +		Context envCtx = (Context) initCtx.lookup("java:comp/env");
   33.47 +		return (DataSource) envCtx.lookup(dataSourceName);
   33.48 +	}
   33.49 +
   33.50 +	/**
   33.51 +	 * @see de.laures.cewolf.DatasetProducer#produceDataset(Map)
   33.52 +	 */
   33.53 +	public XYSeries produceXYSeries() throws DatasetProduceException {
   33.54 +		XYSeries series = new XYSeries(seriesName);
   33.55 +		try {
   33.56 +			DataSource ds = getDataSource();
   33.57 +			Connection con = ds.getConnection();
   33.58 +			ResultSet rs = con.createStatement().executeQuery(query);
   33.59 +			int xColIndex = rs.findColumn(xCol);
   33.60 +			int yColIndex = rs.findColumn(yCol);
   33.61 +			while(rs.next()){
   33.62 +				series.add((Number)rs.getObject(xColIndex), (Number)rs.getObject(yColIndex));
   33.63 +			}
   33.64 +		} catch (Exception namingEx) {
   33.65 +			namingEx.printStackTrace();
   33.66 +			throw new DatasetProduceException(namingEx.getMessage());
   33.67 +		}
   33.68 +		return series;
   33.69 +	}
   33.70 +}
    34.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/dp/MovingAverageDatasetProducer.java	Sat Feb 28 21:31:02 2009 +0100
    34.3 @@ -0,0 +1,60 @@
    34.4 +package de.laures.cewolf.dp;
    34.5 +
    34.6 +import java.io.Serializable;
    34.7 +import java.util.Date;
    34.8 +import java.util.Map;
    34.9 +
   34.10 +import org.apache.commons.logging.Log;
   34.11 +import org.apache.commons.logging.LogFactory;
   34.12 +import org.jfree.data.general.Dataset;
   34.13 +import org.jfree.data.time.MovingAverage;
   34.14 +import org.jfree.data.xy.XYDataset;
   34.15 +
   34.16 +import de.laures.cewolf.DatasetProduceException;
   34.17 +import de.laures.cewolf.DatasetProducer;
   34.18 +
   34.19 +/**
   34.20 + * @author guido
   34.21 + *
   34.22 + * To change this generated comment edit the template variable "typecomment":
   34.23 + * Window>Preferences>Java>Templates.
   34.24 + * To enable and disable the creation of type comments go to
   34.25 + * Window>Preferences>Java>Code Generation.
   34.26 + */
   34.27 +public class MovingAverageDatasetProducer implements DatasetProducer, Serializable {
   34.28 +	
   34.29 +	private static final Log log = LogFactory.getLog(MovingAverageDatasetProducer.class);
   34.30 +
   34.31 +	/**
   34.32 +	 * @see de.laures.cewolf.DatasetProducer#produceDataset(Map)
   34.33 +	 */
   34.34 +	public Object produceDataset(Map params) throws DatasetProduceException {
   34.35 +		log.debug(params);
   34.36 +		DatasetProducer datasetProducer = (DatasetProducer)params.get("producer");
   34.37 +		log.debug(datasetProducer);
   34.38 +		Dataset dataset = (Dataset)datasetProducer.produceDataset(params);
   34.39 +		String suffix = (String)params.get("suffix");
   34.40 +		int period = ((Integer)params.get("period")).intValue();
   34.41 +		int skip = ((Integer)params.get("skip")).intValue();
   34.42 +		if(dataset instanceof XYDataset){
   34.43 +	        return MovingAverage.createMovingAverage((XYDataset)dataset, suffix, period, skip);
   34.44 +		} else {
   34.45 +			throw new DatasetProduceException("moving average only supported for XYDatasets");
   34.46 +		}
   34.47 +	}
   34.48 +
   34.49 +	/**
   34.50 +	 * @see de.laures.cewolf.DatasetProducer#hasExpired(Map, Date)
   34.51 +	 */
   34.52 +	public boolean hasExpired(Map params, Date since) {
   34.53 +		return true;
   34.54 +	}
   34.55 +
   34.56 +	/**
   34.57 +	 * @see de.laures.cewolf.DatasetProducer#getProducerId()
   34.58 +	 */
   34.59 +	public String getProducerId() {
   34.60 +		return getClass().getName();
   34.61 +	}
   34.62 +
   34.63 +}
    35.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/dp/package.html	Sat Feb 28 21:31:02 2009 +0100
    35.3 @@ -0,0 +1,10 @@
    35.4 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    35.5 +
    35.6 +<HTML>
    35.7 +<HEAD>
    35.8 +<TITLE></TITLE>
    35.9 +</HEAD>
   35.10 +<BODY>
   35.11 +Custom DatasetProducer.
   35.12 +</BODY>
   35.13 +</HTML>
    36.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/event/ChartImageRenderListener.java	Sat Feb 28 21:31:02 2009 +0100
    36.3 @@ -0,0 +1,33 @@
    36.4 +/**
    36.5 + *  Copyright (c) 2005, Cambridge Technology Partners
    36.6 + *  
    36.7 + *	$Id: ChartImageRenderListener.java,v 1.1 2005/10/09 22:05:16 brianfox Exp $
    36.8 + */
    36.9 +package de.laures.cewolf.event;
   36.10 +
   36.11 +import de.laures.cewolf.util.RenderedImage;
   36.12 +
   36.13 +/**
   36.14 + * Event listener called back after the image is rendered. ChartPostProcessors
   36.15 + * may implement this interface to get notified when the image gets rendered.
   36.16 + * It is useful to retrieve the JFreeChart's ChartRenderingInfo object.
   36.17 + * 
   36.18 + * <pre>
   36.19 + *	public void onImageRendered (RenderedImage renderedImage) {
   36.20 + * 		ChartRenderingInfo info = (ChartRenderingInfo) renderedImage.renderingInfo;
   36.21 + * 		...
   36.22 + *  }
   36.23 + * </pre>
   36.24 + * 
   36.25 + * @author zluspai
   36.26 + */
   36.27 +public interface ChartImageRenderListener {
   36.28 +	
   36.29 +	/**
   36.30 +	 * Callback right after a new image gets rendered.
   36.31 +	 * 
   36.32 +	 * @param renderedImage The fresh image just got rendered
   36.33 +	 */
   36.34 +	public void onImageRendered (RenderedImage renderedImage);
   36.35 +	
   36.36 +}
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/links/CategoryItemLinkGenerator.java	Sat Feb 28 21:31:02 2009 +0100
    37.3 @@ -0,0 +1,43 @@
    37.4 +/* ================================================================
    37.5 + * Cewolf : Chart enabling Web Objects Framework
    37.6 + * ================================================================
    37.7 + *
    37.8 + * Project Info:  http://cewolf.sourceforge.net
    37.9 + * Project Lead:  Guido Laures (guido@laures.de);
   37.10 + *
   37.11 + * (C) Copyright 2002, by Guido Laures
   37.12 + *
   37.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   37.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   37.15 + * either version 2.1 of the License, or (at your option) any later version.
   37.16 + *
   37.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   37.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   37.19 + * See the GNU Lesser General Public License for more details.
   37.20 + *
   37.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   37.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   37.23 + * Boston, MA 02111-1307, USA.
   37.24 + */
   37.25 +package de.laures.cewolf.links;
   37.26 +
   37.27 +/**
   37.28 + * A link generator for category items. This interface is used by the 
   37.29 + * tag library to produce image maps. Implement this if the dataset that
   37.30 + * ths DatasetProducer produces is a CategoryDataset.
   37.31 + * @see org.jfree.data.CategoryDataset
   37.32 + * @author  Guido Laures
   37.33 + * @since 0.8
   37.34 + */
   37.35 +public interface CategoryItemLinkGenerator extends LinkGenerator {
   37.36 +
   37.37 +    /**
   37.38 +     * Generates a link for a specific dataset/series/category triple.
   37.39 +     * @param dataset the dataset
   37.40 +     * @param series the series number
   37.41 +     * @param category the category
   37.42 +     * @see org.jfree.data.CategoryDataset
   37.43 +     */
   37.44 +    String generateLink(Object dataset, int series, Object category);
   37.45 +
   37.46 +}
    38.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/links/LinkGenerator.java	Sat Feb 28 21:31:02 2009 +0100
    38.3 @@ -0,0 +1,33 @@
    38.4 +/* ================================================================
    38.5 + * Cewolf : Chart enabling Web Objects Framework
    38.6 + * ================================================================
    38.7 + *
    38.8 + * Project Info:  http://cewolf.sourceforge.net
    38.9 + * Project Lead:  Guido Laures (guido@laures.de);
   38.10 + *
   38.11 + * (C) Copyright 2002, by Guido Laures
   38.12 + *
   38.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   38.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   38.15 + * either version 2.1 of the License, or (at your option) any later version.
   38.16 + *
   38.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   38.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   38.19 + * See the GNU Lesser General Public License for more details.
   38.20 + *
   38.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   38.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   38.23 + * Boston, MA 02111-1307, USA.
   38.24 + */
   38.25 +
   38.26 +package de.laures.cewolf.links;
   38.27 +
   38.28 +/**
   38.29 + * This is the base interface of all link generating components which can
   38.30 + * be used to produce image maps.
   38.31 + * @author  Guido Laures
   38.32 + * @since 0.8
   38.33 + */
   38.34 +public interface LinkGenerator {
   38.35 +
   38.36 +}
    39.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/links/PieSectionLinkGenerator.java	Sat Feb 28 21:31:02 2009 +0100
    39.3 @@ -0,0 +1,41 @@
    39.4 +/* ================================================================
    39.5 + * Cewolf : Chart enabling Web Objects Framework
    39.6 + * ================================================================
    39.7 + *
    39.8 + * Project Info:  http://cewolf.sourceforge.net
    39.9 + * Project Lead:  Guido Laures (guido@laures.de);
   39.10 + *
   39.11 + * (C) Copyright 2002, by Guido Laures
   39.12 + *
   39.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   39.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   39.15 + * either version 2.1 of the License, or (at your option) any later version.
   39.16 + *
   39.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   39.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   39.19 + * See the GNU Lesser General Public License for more details.
   39.20 + *
   39.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   39.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   39.23 + * Boston, MA 02111-1307, USA.
   39.24 + */
   39.25 +
   39.26 +package de.laures.cewolf.links;
   39.27 +
   39.28 +/**
   39.29 + * A LinkGenerator for PieDatasets.
   39.30 + * @author  Guido Laures
   39.31 + * @since 0.8
   39.32 + */
   39.33 +public interface PieSectionLinkGenerator extends LinkGenerator {
   39.34 +
   39.35 +    /**
   39.36 +     * Generate a link for a PieDataset and a category.
   39.37 +     * @param dataset the dataset. This will normally be of a subtype of PieDataset. It is
   39.38 +     * genralized to avoid dependencies to the concrete chart implementation
   39.39 +     * @param category the category to produce a link for
   39.40 +     * @return the URL of the link belonging to the category
   39.41 +     */
   39.42 +    String generateLink(Object dataset, Object category);
   39.43 +
   39.44 +}
    40.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/links/XYItemLinkGenerator.java	Sat Feb 28 21:31:02 2009 +0100
    40.3 @@ -0,0 +1,42 @@
    40.4 +/* ================================================================
    40.5 + * Cewolf : Chart enabling Web Objects Framework
    40.6 + * ================================================================
    40.7 + *
    40.8 + * Project Info:  http://cewolf.sourceforge.net
    40.9 + * Project Lead:  Guido Laures (guido@laures.de);
   40.10 + *
   40.11 + * (C) Copyright 2002, by Guido Laures
   40.12 + *
   40.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   40.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   40.15 + * either version 2.1 of the License, or (at your option) any later version.
   40.16 + *
   40.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   40.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   40.19 + * See the GNU Lesser General Public License for more details.
   40.20 + *
   40.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   40.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   40.23 + * Boston, MA 02111-1307, USA.
   40.24 + */
   40.25 +
   40.26 +package de.laures.cewolf.links;
   40.27 +
   40.28 +/**
   40.29 + * A LinkGenerator for XYDatasets.
   40.30 + * @author  Guido Laures
   40.31 + * @since 0.8
   40.32 + */
   40.33 +public interface XYItemLinkGenerator extends LinkGenerator {
   40.34 +
   40.35 +    /**
   40.36 +     * Generate a link for a XYDataset, series and item.
   40.37 +     * @param dataset the dataset. This will normally be of a subtype of XYDataset. It is
   40.38 +     * genralized to avoid dependencies to the concrete chart implementation
   40.39 +     * @param series the series to produce a link for
   40.40 +     * @param item the item to produce the link for
   40.41 +     * @return the URL of the link belonging to the series/item
   40.42 +     */
   40.43 +    String generateLink(Object data, int series, int item);
   40.44 +
   40.45 +}
    41.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/package.html	Sat Feb 28 21:31:02 2009 +0100
    41.3 @@ -0,0 +1,10 @@
    41.4 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    41.5 +
    41.6 +<HTML>
    41.7 +<HEAD>
    41.8 +<TITLE></TITLE>
    41.9 +</HEAD>
   41.10 +<BODY>
   41.11 +Servlet based framework to render charts into a client's response stream.
   41.12 +</BODY>
   41.13 +</HTML>
    42.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/storage/AbstractSessionStorage.java	Sat Feb 28 21:31:02 2009 +0100
    42.3 @@ -0,0 +1,130 @@
    42.4 +/* ================================================================
    42.5 + * Cewolf : Chart enabling Web Objects Framework
    42.6 + * ================================================================
    42.7 + *
    42.8 + * Project Info:  http://cewolf.sourceforge.net
    42.9 + * Project Lead:  Guido Laures (guido@laures.de);
   42.10 + *
   42.11 + * (C) Copyright 2002, by Guido Laures
   42.12 + *
   42.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   42.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   42.15 + * either version 2.1 of the License, or (at your option) any later version.
   42.16 + *
   42.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   42.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   42.19 + * See the GNU Lesser General Public License for more details.
   42.20 + *
   42.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   42.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   42.23 + * Boston, MA 02111-1307, USA.
   42.24 + */
   42.25 +
   42.26 +package de.laures.cewolf.storage;
   42.27 +
   42.28 +import java.io.Serializable;
   42.29 +
   42.30 +import javax.servlet.ServletContext;
   42.31 +import javax.servlet.http.HttpServletRequest;
   42.32 +import javax.servlet.http.HttpSession;
   42.33 +import javax.servlet.jsp.PageContext;
   42.34 +
   42.35 +import org.apache.commons.logging.Log;
   42.36 +import org.apache.commons.logging.LogFactory;
   42.37 +
   42.38 +import de.laures.cewolf.CewolfException;
   42.39 +import de.laures.cewolf.ChartImage;
   42.40 +import de.laures.cewolf.Storage;
   42.41 +import de.laures.cewolf.taglib.util.KeyGenerator;
   42.42 +
   42.43 +/**
   42.44 + * @author glaures
   42.45 + */
   42.46 +public abstract class AbstractSessionStorage implements Storage
   42.47 +{
   42.48 +
   42.49 +  private static final Log log = LogFactory.getLog(AbstractSessionStorage.class);
   42.50 +
   42.51 +  /**
   42.52 +   * @see de.laures.cewolf.Storage#storeChartImage(ChartImage, ServletContext)
   42.53 +   */
   42.54 +  public String storeChartImage( ChartImage cid, PageContext pageContext ) throws CewolfException
   42.55 +  {
   42.56 +    if ( contains(cid, pageContext) )
   42.57 +    {
   42.58 +      return getKey(cid);
   42.59 +    }
   42.60 +    log.debug("storing chart " + cid);
   42.61 +    final HttpSession session = pageContext.getSession();
   42.62 +    //String key = getKey(cid);
   42.63 +    return storeChartImage(cid, session);
   42.64 +  }
   42.65 +
   42.66 +
   42.67 +  /**
   42.68 +   * @see de.laures.cewolf.Storage#getChartImage(String)
   42.69 +   */
   42.70 +  public ChartImage getChartImage( String id, HttpServletRequest request )
   42.71 +  {
   42.72 +    HttpSession session = request.getSession();
   42.73 +    return (ChartImage) session.getAttribute(id);
   42.74 +  }
   42.75 +
   42.76 +  public boolean contains( ChartImage cid, PageContext pageContext )
   42.77 +  {
   42.78 +    return pageContext.getSession().getAttribute(getKey(cid)) != null;
   42.79 +  }
   42.80 +
   42.81 +  public final String getKey( ChartImage cid )
   42.82 +  {
   42.83 +    return String.valueOf(KeyGenerator.generateKey((Serializable) cid));
   42.84 +  }
   42.85 +
   42.86 +  protected String storeChartImage( ChartImage cid, HttpSession session ) throws CewolfException
   42.87 +  {
   42.88 +    final String sessionKey = getKey(cid);
   42.89 +    synchronized (session)
   42.90 +    {
   42.91 +      session.setAttribute(sessionKey, getCacheObject(cid));
   42.92 +    }
   42.93 +    return sessionKey;
   42.94 +  }
   42.95 +  
   42.96 +	/**
   42.97 +	 */
   42.98 +	public String removeChartImage(String imgKey, HttpServletRequest request)
   42.99 +			throws CewolfException {
  42.100 +		final HttpSession session = request.getSession();
  42.101 +		if (session == null)
  42.102 +		{
  42.103 +			return imgKey;
  42.104 +		}
  42.105 +		return removeChartImage(imgKey, session);		
  42.106 +	}
  42.107 +
  42.108 +	/**
  42.109 +	 * @param cid
  42.110 +	 * @param session
  42.111 +	 * @return
  42.112 +	 * @throws CewolfException
  42.113 +	 */
  42.114 +	protected String removeChartImage(String cid, HttpSession session)
  42.115 +			throws CewolfException {
  42.116 +		synchronized (session) {
  42.117 +			session.removeAttribute(cid);
  42.118 +		}
  42.119 +		return cid;
  42.120 +	}
  42.121 +
  42.122 +  protected abstract Object getCacheObject( ChartImage cid ) throws CewolfException;
  42.123 +
  42.124 +  /**
  42.125 +   * @see de.laures.cewolf.Storage#init(ServletContext)
  42.126 +   */
  42.127 +  public void init( ServletContext servletContext ) throws CewolfException
  42.128 +  {
  42.129 +  }
  42.130 +  
  42.131 +
  42.132 +
  42.133 +}
  42.134 \ No newline at end of file
    43.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/storage/ClusterableSessionStorage.java	Sat Feb 28 21:31:02 2009 +0100
    43.3 @@ -0,0 +1,43 @@
    43.4 +/* ================================================================
    43.5 + * Cewolf : Chart enabling Web Objects Framework
    43.6 + * ================================================================
    43.7 + *
    43.8 + * Project Info:  http://cewolf.sourceforge.net
    43.9 + * Project Lead:  Guido Laures (guido@laures.de);
   43.10 + *
   43.11 + * (C) Copyright 2002, by Guido Laures
   43.12 + *
   43.13 + * This library is free software; you can redistribute it and/or modify it under the terms
   43.14 + * of the GNU Lesser General Public License as published by the Free Software Foundation;
   43.15 + * either version 2.1 of the License, or (at your option) any later version.
   43.16 + *
   43.17 + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   43.18 + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   43.19 + * See the GNU Lesser General Public License for more details.
   43.20 + *
   43.21 + * You should have received a copy of the GNU Lesser General Public License along with this
   43.22 + * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   43.23 + * Boston, MA 02111-1307, USA.
   43.24 + */
   43.25 +
   43.26 +package de.laures.cewolf.storage;
   43.27 +
   43.28 +import de.laures.cewolf.CewolfException;
   43.29 +import de.laures.cewolf.ChartImage;
   43.30 +
   43.31 +/**
   43.32 + * @author guido
   43.33 + *
   43.34 + * To change the template for this generated type comment go to
   43.35 + * Window>Preferences>Java>Code Generation>Code and Comments
   43.36 + */
   43.37 +public class ClusterableSessionStorage extends AbstractSessionStorage {
   43.38 +
   43.39 +	/* (non-Javadoc)
   43.40 +	 * @see de.laures.cewolf.storage.AbstractSessionStorage#getCacheObject(de.laures.cewolf.ChartImage)
   43.41 +	 */
   43.42 +	protected Object getCacheObject(ChartImage cid) throws CewolfException {
   43.43 +		return new SerializableChartImage(cid);
   43.44 +	}
   43.45 +
   43.46 +}
    44.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.2 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/storage/FileStorage.java	Sat Feb 28 21:31:02 2009 +0100
    44.3 @@ -0,0 +1,175 @@
    44.4 +/* ================================================================
    44.5 + * Cewolf : Chart enabling Web Objects Framework
    44.6 + * ================================================================
    44.7 + *
    44.8 + * Project Info:  http://cewolf.sourceforge.net
    44.9 + * Project Lead:  Guido Laures (guido@laures.de);
   44.10 + *
   44.11 + * (C) Copyright 2002, by Guido Laures
   44.12 + *