annotate artifacts/src/main/java/org/dive4elements/river/exports/XYChartGenerator.java @ 7116:3c7471b929d1

Merge branch generator-refectoring into default.
author Andre Heinecke <aheinecke@intevation.de>
date Tue, 24 Sep 2013 12:29:44 +0200
parents 1f38656b68c4 4f6b3ba542de
children 8ca2c711a632
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5864
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5864
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5672
diff changeset
9 package org.dive4elements.river.exports;
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import java.awt.Color;
2053
f9a972d375ba Use the user defined font size to set Y axes label fonts sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2052
diff changeset
12 import java.awt.Font;
1645
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
13 import java.text.NumberFormat;
1679
69929c471646 Improved the creation/rendering of annotations (km favorites, mainvalues).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1645
diff changeset
14 import java.util.ArrayList;
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
15 import java.util.HashMap;
1679
69929c471646 Improved the creation/rendering of annotations (km favorites, mainvalues).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1645
diff changeset
16 import java.util.List;
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
17 import java.util.Map;
1679
69929c471646 Improved the creation/rendering of annotations (km favorites, mainvalues).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1645
diff changeset
18
3906
fc6c6f6039df Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents: 3650
diff changeset
19 import javax.swing.ImageIcon;
1679
69929c471646 Improved the creation/rendering of annotations (km favorites, mainvalues).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1645
diff changeset
20
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 import org.apache.log4j.Logger;
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 import org.jfree.chart.ChartFactory;
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 import org.jfree.chart.JFreeChart;
2584
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
24 import org.jfree.chart.LegendItem;
3906
fc6c6f6039df Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents: 3650
diff changeset
25 import org.jfree.chart.annotations.XYAnnotation;
fc6c6f6039df Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents: 3650
diff changeset
26 import org.jfree.chart.annotations.XYImageAnnotation;
1679
69929c471646 Improved the creation/rendering of annotations (km favorites, mainvalues).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1645
diff changeset
27 import org.jfree.chart.annotations.XYTextAnnotation;
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 import org.jfree.chart.axis.NumberAxis;
652
8fa4c5c9cd1a Charts are zoomed to a specified view if the attribute document for the chart creation contains an x and/or y range.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 423
diff changeset
29 import org.jfree.chart.axis.ValueAxis;
5672
c2a590925ec3 Do not autozoom on logarithmic axis. Autozoom tries to include 0 in most cases
Andre Heinecke <aheinecke@intevation.de>
parents: 4736
diff changeset
30 import org.jfree.chart.axis.LogarithmicAxis;
3906
fc6c6f6039df Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents: 3650
diff changeset
31 import org.jfree.chart.plot.Marker;
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 import org.jfree.chart.plot.PlotOrientation;
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 import org.jfree.chart.plot.XYPlot;
652
8fa4c5c9cd1a Charts are zoomed to a specified view if the attribute document for the chart creation contains an x and/or y range.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 423
diff changeset
34 import org.jfree.data.Range;
2242
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
35 import org.jfree.data.general.Series;
3906
fc6c6f6039df Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents: 3650
diff changeset
36 import org.jfree.data.xy.XYDataset;
923
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 718
diff changeset
37 import org.jfree.data.xy.XYSeries;
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 718
diff changeset
38 import org.jfree.data.xy.XYSeriesCollection;
3906
fc6c6f6039df Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents: 3650
diff changeset
39 import org.json.JSONArray;
fc6c6f6039df Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents: 3650
diff changeset
40 import org.json.JSONException;
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5672
diff changeset
42 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5672
diff changeset
43 import org.dive4elements.river.jfree.Bounds;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5672
diff changeset
44 import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5672
diff changeset
45 import org.dive4elements.river.jfree.DoubleBounds;
5864
f2e46a668fe6 River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
46 import org.dive4elements.river.jfree.RiverAnnotation;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5672
diff changeset
47 import org.dive4elements.river.jfree.StyledAreaSeriesCollection;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5672
diff changeset
48 import org.dive4elements.river.jfree.StyledXYSeries;
7034
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents: 6905
diff changeset
49 import org.dive4elements.river.jfree.AxisDataset;
7043
06a9a241faac Factor out annotation handling code
Andre Heinecke <aheinecke@intevation.de>
parents: 7034
diff changeset
50 import org.dive4elements.river.jfree.AnnotationHelper;
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
51 import org.dive4elements.river.themes.ThemeDocument;
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52
2206
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
53
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 /**
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 * An abstract base class for creating XY charts.
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 *
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
57 * With respect to datasets, ranges and axis, there are following requirements:
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
58 * <ul>
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
59 * <li> First in, first drawn: "Early" datasets should be of lower Z-Oder
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
60 * than later ones (only works per-axis). </li>
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
61 * <li> Visible axis should initially show the range of all datasets that
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
62 * show data for this axis (even invisible ones). Motivation: Once
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
63 * a dataset (theme) has been activated, it should be on screen. </li>
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
64 * <li> There should always be a Y-Axis on the "left". </li>
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
65 * </ul>
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
66 *
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 */
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 public abstract class XYChartGenerator extends ChartGenerator {
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70
2710
013882485011 Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2706
diff changeset
71 /** Enumerator over existing axes. */
3906
fc6c6f6039df Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents: 3650
diff changeset
72 @Override
2246
99ef93ce18bd Doc added and fix getAxisWalker-issue.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2242
diff changeset
73 protected abstract YAxisWalker getYAxisWalker();
2000
e71719483546 Improved the ChartSettings - now, each chart writes proper AxisSections into the ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1997
diff changeset
74
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
75 public static final int AXIS_SPACE = 5;
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
76
1048
fd5c70973e0b Picky white-space cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 924
diff changeset
77 /** The logger that is used in this generator. */
654
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
78 private static Logger logger = Logger.getLogger(XYChartGenerator.class);
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79
3064
478e8d9d88ba Add missing imports.
Christian Lins <christian.lins@intevation.de>
parents: 3063
diff changeset
80 protected List<Marker> domainMarkers = new ArrayList<Marker>();
923
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 718
diff changeset
81
3169
b6da650b0718 FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3160
diff changeset
82 protected List<Marker> valueMarkers = new ArrayList<Marker>();
1679
69929c471646 Improved the creation/rendering of annotations (km favorites, mainvalues).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1645
diff changeset
83
1685
022f62c75878 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1684
diff changeset
84 /** The max X range to include all X values of all series for each axis. */
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
85 protected Map<Integer, Bounds> xBounds;
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
86
1685
022f62c75878 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1684
diff changeset
87 /** The max Y range to include all Y values of all series for each axis. */
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
88 protected Map<Integer, Bounds> yBounds;
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
89
4445
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
90 /** Whether or not the plot is inverted (left-right). */
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
91 private boolean inverted;
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
92
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
93 public XYChartGenerator() {
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
94 super();
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
95
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
96 xBounds = new HashMap<Integer, Bounds>();
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
97 yBounds = new HashMap<Integer, Bounds>();
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
98 }
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
99
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
100
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101 /**
1930
de0c2bbb27f9 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1861
diff changeset
102 * Generate the chart anew (including localized axis and all).
de0c2bbb27f9 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1861
diff changeset
103 */
3906
fc6c6f6039df Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents: 3650
diff changeset
104 @Override
653
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 652
diff changeset
105 public JFreeChart generateChart() {
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 652
diff changeset
106 logger.debug("XYChartGenerator.generateChart");
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 652
diff changeset
107
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 JFreeChart chart = ChartFactory.createXYLineChart(
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 getChartTitle(),
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 getXAxisLabel(),
2051
4ba5036109d2 Make use of user defined axes labels during chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2050
diff changeset
111 getYAxisLabel(0),
375
60f63539d004 Ws and Qs of a longitudinal section chart are mapped to an own range axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 369
diff changeset
112 null,
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113 PlotOrientation.VERTICAL,
2047
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2034
diff changeset
114 isLegendVisible(),
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
115 false,
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
116 false);
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
118 XYPlot plot = (XYPlot) chart.getPlot();
5672
c2a590925ec3 Do not autozoom on logarithmic axis. Autozoom tries to include 0 in most cases
Andre Heinecke <aheinecke@intevation.de>
parents: 4736
diff changeset
119 ValueAxis axis = createXAxis(getXAxisLabel());
c2a590925ec3 Do not autozoom on logarithmic axis. Autozoom tries to include 0 in most cases
Andre Heinecke <aheinecke@intevation.de>
parents: 4736
diff changeset
120 plot.setDomainAxis(axis);
3079
8ad8a227d983 Added model classes for SQ calculation; generate fake results and improved the SQRelationGenerator which now draws the outliers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3076
diff changeset
121
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 chart.setBackgroundPaint(Color.WHITE);
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
123 plot.setBackgroundPaint(Color.WHITE);
414
0385bcc4229a Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 375
diff changeset
124 addSubtitles(chart);
419
4de7d9eac10f Display gridlines in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 414
diff changeset
125 adjustPlot(plot);
923
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 718
diff changeset
126
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
127 //debugAxis(plot);
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
128
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
129 addDatasets(plot);
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
130
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
131 //debugDatasets(plot);
923
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 718
diff changeset
132
3063
33c167d6fff6 Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 2998
diff changeset
133 addMarkers(plot);
33c167d6fff6 Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 2998
diff changeset
134
1935
5b51f5232661 Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1934
diff changeset
135 recoverEmptyPlot(plot);
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
136 preparePointRanges(plot);
1935
5b51f5232661 Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1934
diff changeset
137
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
138 //debugAxis(plot);
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
139
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
140 localizeAxes(plot);
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
141 adjustAxes(plot);
5672
c2a590925ec3 Do not autozoom on logarithmic axis. Autozoom tries to include 0 in most cases
Andre Heinecke <aheinecke@intevation.de>
parents: 4736
diff changeset
142 if (!(axis instanceof LogarithmicAxis)) {
c2a590925ec3 Do not autozoom on logarithmic axis. Autozoom tries to include 0 in most cases
Andre Heinecke <aheinecke@intevation.de>
parents: 4736
diff changeset
143 // XXX:
c2a590925ec3 Do not autozoom on logarithmic axis. Autozoom tries to include 0 in most cases
Andre Heinecke <aheinecke@intevation.de>
parents: 4736
diff changeset
144 // The auto zoom without a range tries
c2a590925ec3 Do not autozoom on logarithmic axis. Autozoom tries to include 0 in most cases
Andre Heinecke <aheinecke@intevation.de>
parents: 4736
diff changeset
145 // to include 0 in a logarithmic axis
c2a590925ec3 Do not autozoom on logarithmic axis. Autozoom tries to include 0 in most cases
Andre Heinecke <aheinecke@intevation.de>
parents: 4736
diff changeset
146 // which triggers a bug in jfreechart that causes
c2a590925ec3 Do not autozoom on logarithmic axis. Autozoom tries to include 0 in most cases
Andre Heinecke <aheinecke@intevation.de>
parents: 4736
diff changeset
147 // the values to be drawn carthesian
c2a590925ec3 Do not autozoom on logarithmic axis. Autozoom tries to include 0 in most cases
Andre Heinecke <aheinecke@intevation.de>
parents: 4736
diff changeset
148 autoZoom(plot);
c2a590925ec3 Do not autozoom on logarithmic axis. Autozoom tries to include 0 in most cases
Andre Heinecke <aheinecke@intevation.de>
parents: 4736
diff changeset
149 }
652
8fa4c5c9cd1a Charts are zoomed to a specified view if the attribute document for the chart creation contains an x and/or y range.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 423
diff changeset
150
3249
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
151 //debugAxis(plot);
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
152
2138
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2132
diff changeset
153 // These have to go after the autozoom.
7043
06a9a241faac Factor out annotation handling code
Andre Heinecke <aheinecke@intevation.de>
parents: 7034
diff changeset
154 AnnotationHelper.addAnnotationsToRenderer(annotations, plot,
06a9a241faac Factor out annotation handling code
Andre Heinecke <aheinecke@intevation.de>
parents: 7034
diff changeset
155 getChartSettings(), datasets);
2138
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2132
diff changeset
156
3616
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
157 // Add a logo (maybe).
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
158 addLogo(plot);
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
159
3154
a08538e21b55 Re-enable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3114
diff changeset
160 aggregateLegendEntries(plot);
2584
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
161
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
162 return chart;
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
163 }
924
f7761914f745 An initial implementation to render chart series based on the XML configuration in themes.xml.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 923
diff changeset
164
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
165
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
166 /**
3621
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
167 * Return left most data points x value (on first axis).
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
168 * Shortcut, especially to be overridden in (LS) charts where
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
169 * axis could be inverted.
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
170 */
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
171 protected double getLeftX() {
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
172 return (Double)getXBounds(0).getLower();
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
173 }
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
174
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
175
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
176 /**
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
177 * Return right most data points x value (on first axis).
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
178 * Shortcut, especially to be overridden in (LS) charts where
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
179 * axis could be inverted.
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
180 */
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
181 protected double getRightX() {
4433
5b8919ef601d Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4432
diff changeset
182 return (Double)getXBounds(0).getUpper();
3621
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
183 }
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
184
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
185
3616
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
186 /** Add a logo as background annotation to plot. */
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
187 protected void addLogo(XYPlot plot) {
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
188 String logo = showLogo();
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
189 if (logo == null) {
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
190 logger.debug("No logo to show chosen");
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
191 return;
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
192 }
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
193
3633
ebfce31c7eec Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3623
diff changeset
194 ImageIcon imageIcon = null;
3618
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
195 if (logo.equals("none")) {
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
196 return;
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
197 }
3623
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3621
diff changeset
198 /*
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3621
diff changeset
199 If you want to add images, remember to change code in these places:
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3621
diff changeset
200 flys-artifacts:
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3621
diff changeset
201 XYChartGenerator.java
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3621
diff changeset
202 Timeseries*Generator.java and
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3621
diff changeset
203 in the flys-client projects Chart*Propert*Editor.java.
3638
6bfcbe391393 Better comment for logo-adders.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3633
diff changeset
204 Also, these images have to be put in
6bfcbe391393 Better comment for logo-adders.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3633
diff changeset
205 flys-artifacts/src/main/resources/images/
6bfcbe391393 Better comment for logo-adders.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3633
diff changeset
206 flys-client/src/main/webapp/images/
3623
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3621
diff changeset
207 */
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3621
diff changeset
208 java.net.URL imageURL;
3616
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
209 if (logo.equals("Intevation")) {
3623
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3621
diff changeset
210 imageURL = XYChartGenerator.class.getResource("/images/intevation.png");
3616
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
211 }
3618
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
212 else { // TODO else if ...
3623
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3621
diff changeset
213 imageURL = XYChartGenerator.class.getResource("/images/bfg_logo.gif");
3616
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
214 }
3623
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3621
diff changeset
215 imageIcon = new ImageIcon(imageURL);
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3621
diff changeset
216
4433
5b8919ef601d Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4432
diff changeset
217
3617
05deafdcbf39 sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3616
diff changeset
218 double xPos = 0d, yPos = 0d;
05deafdcbf39 sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3616
diff changeset
219
3618
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
220 String placeh = logoHPlace();
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
221 String placev = logoVPlace();
3620
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
222
3618
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
223 if (placev == null || placev.equals("none")) {
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
224 placev = "top";
3617
05deafdcbf39 sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3616
diff changeset
225 }
3618
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
226 if (placev.equals("top")) {
4433
5b8919ef601d Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4432
diff changeset
227 yPos = (Double)getYBounds(0).getUpper();
3617
05deafdcbf39 sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3616
diff changeset
228 }
3618
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
229 else if (placev.equals("bottom")) {
4433
5b8919ef601d Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4432
diff changeset
230 yPos = (Double)getYBounds(0).getLower();
3617
05deafdcbf39 sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3616
diff changeset
231 }
3618
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
232 else if (placev.equals("center")) {
4433
5b8919ef601d Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4432
diff changeset
233 yPos = ((Double)getYBounds(0).getUpper() + (Double)getYBounds(0).getLower())/2d;
3617
05deafdcbf39 sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3616
diff changeset
234 }
3620
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
235 else {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
236 logger.debug("Unknown place-v value: " + placev);
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
237 }
3618
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
238
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
239 if (placeh == null || placeh.equals("none")) {
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
240 placeh = "center";
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
241 }
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
242 if (placeh.equals("left")) {
3621
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
243 xPos = getLeftX();
3618
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
244 }
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
245 else if (placeh.equals("right")) {
3621
6772e9f9b65f Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3620
diff changeset
246 xPos = getRightX();
3617
05deafdcbf39 sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3616
diff changeset
247 }
3618
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
248 else if (placeh.equals("center")) {
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
249 xPos = ((Double)getXBounds(0).getUpper() + (Double)getXBounds(0).getLower())/2d;
b7867c03760a Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3617
diff changeset
250 }
3620
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
251 else {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
252 logger.debug("Unknown place-h value: " + placeh);
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
253 }
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
254
3617
05deafdcbf39 sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3616
diff changeset
255 logger.debug("logo position: " + xPos + "/" + yPos);
05deafdcbf39 sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3616
diff changeset
256
3620
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
257 org.jfree.ui.RectangleAnchor anchor
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
258 = org.jfree.ui.RectangleAnchor.TOP;
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
259 if (placev.equals("top")) {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
260 if (placeh.equals("left")) {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
261 anchor = org.jfree.ui.RectangleAnchor.TOP_LEFT;
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
262 }
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
263 else if (placeh.equals("right")) {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
264 anchor = org.jfree.ui.RectangleAnchor.TOP_RIGHT;
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
265 }
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
266 else if (placeh.equals("center")) {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
267 anchor = org.jfree.ui.RectangleAnchor.TOP;
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
268 }
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
269 }
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
270 else if (placev.equals("bottom")) {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
271 if (placeh.equals("left")) {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
272 anchor = org.jfree.ui.RectangleAnchor.BOTTOM_LEFT;
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
273 }
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
274 else if (placeh.equals("right")) {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
275 anchor = org.jfree.ui.RectangleAnchor.BOTTOM_RIGHT;
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
276 }
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
277 else if (placeh.equals("center")) {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
278 anchor = org.jfree.ui.RectangleAnchor.BOTTOM;
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
279 }
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
280 }
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
281 else if (placev.equals("center")) {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
282 if (placeh.equals("left")) {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
283 anchor = org.jfree.ui.RectangleAnchor.LEFT;
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
284 }
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
285 else if (placeh.equals("right")) {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
286 anchor = org.jfree.ui.RectangleAnchor.RIGHT;
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
287 }
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
288 else if (placeh.equals("center")) {
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
289 anchor = org.jfree.ui.RectangleAnchor.CENTER;
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
290 }
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
291 }
1cd6114603d9 Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3618
diff changeset
292
3616
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
293 XYAnnotation xyannotation =
3633
ebfce31c7eec Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3623
diff changeset
294 new XYImageAnnotation(xPos, yPos, imageIcon.getImage(), anchor);
ebfce31c7eec Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3623
diff changeset
295 plot.getRenderer().addAnnotation(xyannotation, org.jfree.ui.Layer.BACKGROUND);
3616
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
296 }
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
297
d4751be54745 Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3296
diff changeset
298
3079
8ad8a227d983 Added model classes for SQ calculation; generate fake results and improved the SQRelationGenerator which now draws the outliers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3076
diff changeset
299 protected NumberAxis createXAxis(String label) {
8ad8a227d983 Added model classes for SQ calculation; generate fake results and improved the SQRelationGenerator which now draws the outliers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3076
diff changeset
300 return new NumberAxis(label);
8ad8a227d983 Added model classes for SQ calculation; generate fake results and improved the SQRelationGenerator which now draws the outliers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3076
diff changeset
301 }
8ad8a227d983 Added model classes for SQ calculation; generate fake results and improved the SQRelationGenerator which now draws the outliers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3076
diff changeset
302
8ad8a227d983 Added model classes for SQ calculation; generate fake results and improved the SQRelationGenerator which now draws the outliers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3076
diff changeset
303
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
304 @Override
2242
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
305 protected Series getSeriesOf(XYDataset dataset, int idx) {
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
306 return ((XYSeriesCollection) dataset).getSeries(idx);
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
307 }
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
308
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
309
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
310 @Override
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
311 protected AxisDataset createAxisDataset(int idx) {
7034
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents: 6905
diff changeset
312 logger.debug("Create new AxisDataset for index: " + idx);
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents: 6905
diff changeset
313 return new AxisDataset(idx);
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
314 }
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
315
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
316
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
317 /**
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
318 * Put debug output about datasets.
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
319 */
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
320 public void debugDatasets(XYPlot plot) {
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
321 logger.debug("Number of datasets: " + plot.getDatasetCount());
3087
4a76da133144 Removed repeated x.size() calls from for loops.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3079
diff changeset
322 for (int i = 0, P = plot.getDatasetCount(); i < P; i++) {
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
323 if (plot.getDataset(i) == null) {
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
324 logger.debug("Dataset #" + i + " is null");
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
325 continue;
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
326 }
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
327 logger.debug("Dataset #" + i + ":" + plot.getDataset(i));
1958
82cefa3f954f Partial fix for flys/issue420 (Mosel/DischargeCurves), do survive empty datasets when calculating axis extents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1948
diff changeset
328 XYSeriesCollection series = (XYSeriesCollection) plot.getDataset(i);
82cefa3f954f Partial fix for flys/issue420 (Mosel/DischargeCurves), do survive empty datasets when calculating axis extents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1948
diff changeset
329 logger.debug("X-Extend of Dataset: " + series.getSeries(0).getMinX()
82cefa3f954f Partial fix for flys/issue420 (Mosel/DischargeCurves), do survive empty datasets when calculating axis extents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1948
diff changeset
330 + " " + series.getSeries(0).getMaxX());
82cefa3f954f Partial fix for flys/issue420 (Mosel/DischargeCurves), do survive empty datasets when calculating axis extents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1948
diff changeset
331 logger.debug("Y-Extend of Dataset: " + series.getSeries(0).getMinY()
82cefa3f954f Partial fix for flys/issue420 (Mosel/DischargeCurves), do survive empty datasets when calculating axis extents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1948
diff changeset
332 + " " + series.getSeries(0).getMaxY());
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
333 }
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
334 }
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
335
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
336
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
337 /**
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
338 * Put debug output about axes.
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
339 */
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
340 public void debugAxis(XYPlot plot) {
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
341 logger.debug("...............");
3087
4a76da133144 Removed repeated x.size() calls from for loops.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3079
diff changeset
342 for (int i = 0, P = plot.getRangeAxisCount(); i < P; i++) {
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
343 if (plot.getRangeAxis(i) == null)
2005
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
344 logger.debug("Range-Axis #" + i + " == null");
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
345 else {
2005
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
346 logger.debug("Range-Axis " + i + " != null [" +
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
347 plot.getRangeAxis(i).getRange().getLowerBound() +
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
348 " " + plot.getRangeAxis(i).getRange().getUpperBound() +
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
349 "]");
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
350 }
3249
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
351 }
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
352 for (int i = 0, P = plot.getDomainAxisCount(); i < P; i++) {
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
353 if (plot.getDomainAxis(i) == null)
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
354 logger.debug("Domain-Axis #" + i + " == null");
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
355 else {
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
356 logger.debug("Domain-Axis " + i + " != null [" +
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
357 plot.getDomainAxis(i).getRange().getLowerBound() +
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
358 " " + plot.getDomainAxis(i).getRange().getUpperBound() +
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
359 "]");
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
360 }
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
361 }
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
362 logger.debug("...............");
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
363 }
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
364
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
365
1685
022f62c75878 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1684
diff changeset
366 /**
2005
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
367 * Registers an area to be drawn.
2163
105097966111 Theoretically allow annotations on second y ais. Practically allow Q MainValues on Q Axis in Duration Curves.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2161
diff changeset
368 * @param area Area to be drawn.
105097966111 Theoretically allow annotations on second y ais. Practically allow Q MainValues on Q Axis in Duration Curves.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2161
diff changeset
369 * @param index 'axis index'
105097966111 Theoretically allow annotations on second y ais. Practically allow Q MainValues on Q Axis in Duration Curves.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2161
diff changeset
370 * @param visible Whether or not to be visible (important for range calculations).
2005
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
371 */
2020
4f7f781e4481 Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2005
diff changeset
372 public void addAreaSeries(StyledAreaSeriesCollection area, int index, boolean visible) {
4f7f781e4481 Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2005
diff changeset
373 if (area == null) {
2005
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
374 logger.warn("Cannot yet render above/under curve.");
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
375 return;
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
376 }
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
377
7034
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents: 6905
diff changeset
378 AxisDataset axisDataset = (AxisDataset) getAxisDataset(index);
2005
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
379
2020
4f7f781e4481 Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2005
diff changeset
380 if (visible) {
4f7f781e4481 Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2005
diff changeset
381 axisDataset.addArea(area);
4f7f781e4481 Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2005
diff changeset
382 }
2005
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
383 else {
4650
31327b3b2455 XYChartGenerator: Avoid "range merging" for area series, as these might extend
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4620
diff changeset
384 /* No range merging, for areas extending to infinity this
31327b3b2455 XYChartGenerator: Avoid "range merging" for area series, as these might extend
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4620
diff changeset
385 * causes problems. */
2005
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
386 }
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
387 }
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
388
2020
4f7f781e4481 Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2005
diff changeset
389
2005
79b15491177a Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2000
diff changeset
390 /**
1935
5b51f5232661 Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1934
diff changeset
391 * Add given series if visible, if not visible adjust ranges (such that
5b51f5232661 Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1934
diff changeset
392 * all points in data would be plotted once visible).
3906
fc6c6f6039df Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents: 3650
diff changeset
393 * @param series the data series to include in plot.
2163
105097966111 Theoretically allow annotations on second y ais. Practically allow Q MainValues on Q Axis in Duration Curves.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2161
diff changeset
394 * @param index ('symbolic') index of the series and of its axis.
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
395 * @param visible whether or not the data should be plotted.
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
396 */
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
397 public void addAxisSeries(XYSeries series, int index, boolean visible) {
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
398 if (series == null) {
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
399 return;
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
400 }
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
401
2242
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
402 logger.debug("Y Range of XYSeries: " +
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
403 series.getMinY() + " | " + series.getMaxY());
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
404
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
405 addAxisDataset(new XYSeriesCollection(series), index, visible);
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
406
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
407 }
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
408
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
409
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
410 /**
3063
33c167d6fff6 Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 2998
diff changeset
411 * Add the given vertical marker to the chart.
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
412 */
3063
33c167d6fff6 Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 2998
diff changeset
413 public void addDomainMarker(Marker marker) {
4282
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
414 addDomainMarker(marker, true);
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
415 }
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
416
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
417
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
418 /**
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
419 * Add the given vertical marker to the chart.<b>Note:</b> the marker is
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
420 * added to the chart only if it is not null and if <i>visible</i> is true.
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
421 * @param marker The marker that should be added to the chart.
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
422 * @param visible The visibility of the marker.
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
423 */
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
424 public void addDomainMarker(Marker marker, boolean visible) {
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
425 if (visible && marker != null) {
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
426 domainMarkers.add(marker);
1959
eace020067da Further flys/issue420 fix, NaN-guard X axis extent.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1958
diff changeset
427 }
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
428 }
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
429
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
430
1930
de0c2bbb27f9 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1861
diff changeset
431 /**
3169
b6da650b0718 FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3160
diff changeset
432 * Add the given vertical marker to the chart.
1711
f708120cb7bc Fix flys/issue363 (W-INFO/ Abflusskurve, Extremwert-Rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1699
diff changeset
433 */
3169
b6da650b0718 FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3160
diff changeset
434 public void addValueMarker(Marker marker) {
4282
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
435 addValueMarker(marker, true);
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
436 }
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
437
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
438
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
439 /**
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
440 * Add the given horizontal marker to the chart.<b>Note:</b> the marker is
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
441 * added to the chart only if it is not null and if <i>visible</i> is true.
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
442 * @param marker The marker that should be added to the chart.
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
443 * @param visible The visibility of the marker.
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
444 */
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
445 public void addValueMarker(Marker marker, boolean visible) {
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
446 if (visible && marker != null) {
8b4988815974 Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3978
diff changeset
447 valueMarkers.add(marker);
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
448 }
3169
b6da650b0718 FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3160
diff changeset
449 }
b6da650b0718 FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3160
diff changeset
450
b6da650b0718 FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3160
diff changeset
451
3063
33c167d6fff6 Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 2998
diff changeset
452 protected void addMarkers(XYPlot plot) {
33c167d6fff6 Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 2998
diff changeset
453 for(Marker marker : domainMarkers) {
3064
478e8d9d88ba Add missing imports.
Christian Lins <christian.lins@intevation.de>
parents: 3063
diff changeset
454 plot.addDomainMarker(marker);
3063
33c167d6fff6 Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 2998
diff changeset
455 }
3169
b6da650b0718 FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3160
diff changeset
456 for(Marker marker : valueMarkers) {
b6da650b0718 FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3160
diff changeset
457 plot.addRangeMarker(marker);
b6da650b0718 FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3160
diff changeset
458 }
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
459 }
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
460
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
461
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
462 /**
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
463 * Effect: extend range of x axis to include given limits.
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
464 *
3270
4ac581062c40 Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3257
diff changeset
465 * @param bounds the given ("minimal") bounds.
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
466 * @param index index of axis to be merged.
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
467 */
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
468 @Override
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
469 protected void combineXBounds(Bounds bounds, int index) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
470 if (!(bounds instanceof DoubleBounds)) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
471 logger.warn("Unsupported Bounds type: " + bounds.getClass());
1959
eace020067da Further flys/issue420 fix, NaN-guard X axis extent.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1958
diff changeset
472 return;
eace020067da Further flys/issue420 fix, NaN-guard X axis extent.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1958
diff changeset
473 }
eace020067da Further flys/issue420 fix, NaN-guard X axis extent.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1958
diff changeset
474
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
475 DoubleBounds dBounds = (DoubleBounds) bounds;
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
476
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
477 if (dBounds == null
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
478 || Double.isNaN((Double) dBounds.getLower())
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
479 || Double.isNaN((Double) dBounds.getUpper())) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
480 return;
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
481 }
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
482
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
483 Bounds old = getXBounds(index);
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
484
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
485 if (old != null) {
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
486 dBounds = (DoubleBounds) dBounds.combine(old);
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
487 }
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
488
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
489 setXBounds(index, dBounds);
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
490 }
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
491
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
492
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
493 @Override
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
494 protected void combineYBounds(Bounds bounds, int index) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
495 if (!(bounds instanceof DoubleBounds)) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
496 logger.warn("Unsupported Bounds type: " + bounds.getClass());
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
497 return;
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
498 }
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
499
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
500 DoubleBounds dBounds = (DoubleBounds) bounds;
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
501
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
502 if (dBounds == null
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
503 || Double.isNaN((Double) dBounds.getLower())
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
504 || Double.isNaN((Double) dBounds.getUpper())) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
505 return;
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
506 }
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
507
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
508 Bounds old = getYBounds(index);
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
509
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
510 if (old != null) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
511 dBounds = (DoubleBounds) dBounds.combine(old);
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
512 }
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
513
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
514 setYBounds(index, dBounds);
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
515 }
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
516
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
517
1930
de0c2bbb27f9 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1861
diff changeset
518 /**
1935
5b51f5232661 Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1934
diff changeset
519 * If no data is visible, draw at least empty axis.
5b51f5232661 Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1934
diff changeset
520 */
5b51f5232661 Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1934
diff changeset
521 private void recoverEmptyPlot(XYPlot plot) {
5b51f5232661 Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1934
diff changeset
522 if (plot.getRangeAxis() == null) {
5b51f5232661 Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1934
diff changeset
523 logger.debug("debug: No range axis");
2414
b5f5af53a526 Make it compileable again
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2411
diff changeset
524 plot.setRangeAxis(createYAxis(0));
1935
5b51f5232661 Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1934
diff changeset
525 }
923
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 718
diff changeset
526 }
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 718
diff changeset
527
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 718
diff changeset
528
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
529 /**
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
530 * Expands X axes if only a point is shown.
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
531 */
1686
e8d1e531687a Bugfix: #114 Enabled rendering charts with a single data point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1685
diff changeset
532 private void preparePointRanges(XYPlot plot) {
e8d1e531687a Bugfix: #114 Enabled rendering charts with a single data point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1685
diff changeset
533 for (int i = 0, num = plot.getDomainAxisCount(); i < num; i++) {
e8d1e531687a Bugfix: #114 Enabled rendering charts with a single data point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1685
diff changeset
534
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
535 Integer key = Integer.valueOf(i);
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
536 Bounds b = getXBounds(key);
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
537
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
538
3249
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
539 if (b != null && b.getLower().equals(b.getUpper())) {
3296
45af081061e7 Added overview output for sq relation. Currently the overview generator is
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3270
diff changeset
540 logger.debug("Check whether to expand a x axis.i ("+b.getLower() + "-" + b.getUpper()+")");
3249
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
541 setXBounds(key, ChartHelper.expandBounds(b, 5));
1686
e8d1e531687a Bugfix: #114 Enabled rendering charts with a single data point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1685
diff changeset
542 }
e8d1e531687a Bugfix: #114 Enabled rendering charts with a single data point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1685
diff changeset
543 }
e8d1e531687a Bugfix: #114 Enabled rendering charts with a single data point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1685
diff changeset
544 }
e8d1e531687a Bugfix: #114 Enabled rendering charts with a single data point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1685
diff changeset
545
e8d1e531687a Bugfix: #114 Enabled rendering charts with a single data point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1685
diff changeset
546
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
547 /**
654
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
548 * This method zooms the plot to the specified ranges in the attribute
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
549 * document or to the ranges specified by the min/max values in the
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
550 * datasets. <b>Note:</b> We determine the range manually if no zoom ranges
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
551 * are given, because JFreeCharts auto-zoom adds a margin to the left and
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
552 * right of the data area.
653
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 652
diff changeset
553 *
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 652
diff changeset
554 * @param plot The XYPlot.
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 652
diff changeset
555 */
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 667
diff changeset
556 protected void autoZoom(XYPlot plot) {
652
8fa4c5c9cd1a Charts are zoomed to a specified view if the attribute document for the chart creation contains an x and/or y range.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 423
diff changeset
557 logger.debug("Zoom to specified ranges.");
654
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
558
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 667
diff changeset
559 Range xrange = getDomainAxisRange();
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 667
diff changeset
560 Range yrange = getValueAxisRange();
654
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
561
2050
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
562 ValueAxis xAxis = plot.getDomainAxis();
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
563
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
564 Range fixedXRange = getRangeForAxisFromSettings("X");
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
565 if (fixedXRange != null) {
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
566 xAxis.setRange(fixedXRange);
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
567 }
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
568 else {
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
569 zoomX(plot, xAxis, getXBounds(0), xrange);
2050
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
570 }
923
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 718
diff changeset
571
1699
608859aa5a7e Bugfix: #383 Add further y-axes before adjusting the ranges for each y-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1698
diff changeset
572 for (int i = 0, num = plot.getRangeAxisCount(); i < num; i++) {
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 667
diff changeset
573 ValueAxis yaxis = plot.getRangeAxis(i);
654
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
574
2049
2d5f2bc68cc6 Centralized the creation of new NumberAxis - new NumberAxis instances in FLYS will be from type IdentifiableNumberAxis which subclasses JFreeChart's NumberAxis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2048
diff changeset
575 if (yaxis instanceof IdentifiableNumberAxis) {
2050
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
576 IdentifiableNumberAxis idAxis = (IdentifiableNumberAxis) yaxis;
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
577
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
578 Range fixedRange = getRangeForAxisFromSettings(idAxis.getId());
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
579 if (fixedRange != null) {
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
580 yaxis.setRange(fixedRange);
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
581 continue;
c4e0e433f825 Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2049
diff changeset
582 }
2049
2d5f2bc68cc6 Centralized the creation of new NumberAxis - new NumberAxis instances in FLYS will be from type IdentifiableNumberAxis which subclasses JFreeChart's NumberAxis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2048
diff changeset
583 }
2d5f2bc68cc6 Centralized the creation of new NumberAxis - new NumberAxis instances in FLYS will be from type IdentifiableNumberAxis which subclasses JFreeChart's NumberAxis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2048
diff changeset
584
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 667
diff changeset
585 if (yaxis == null) {
1699
608859aa5a7e Bugfix: #383 Add further y-axes before adjusting the ranges for each y-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1698
diff changeset
586 logger.debug("Zoom problem: no Y Axis for index: " + i);
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 667
diff changeset
587 continue;
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 667
diff changeset
588 }
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 667
diff changeset
589
1699
608859aa5a7e Bugfix: #383 Add further y-axes before adjusting the ranges for each y-axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1698
diff changeset
590 logger.debug("Prepare zoom settings for y axis at index: " + i);
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
591 zoomY(plot, yaxis, getYBounds(Integer.valueOf(i)), yrange);
654
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
592 }
653
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 652
diff changeset
593 }
652
8fa4c5c9cd1a Charts are zoomed to a specified view if the attribute document for the chart creation contains an x and/or y range.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 423
diff changeset
594
653
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 652
diff changeset
595
2395
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
596 protected Range getDomainAxisRange() {
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
597 String[] ranges = getDomainAxisRangeFromRequest();
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
598
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
599 if (ranges == null || ranges.length < 2) {
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
600 logger.debug("No zoom range for domain axis specified.");
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
601 return null;
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
602 }
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
603
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
604 if (ranges[0].length() > 0 && ranges[1].length() > 0) {
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
605 try {
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
606 double from = Double.parseDouble(ranges[0]);
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
607 double to = Double.parseDouble(ranges[1]);
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
608
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
609 if (from == 0 && to == 0) {
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
610 logger.debug("No range specified. Lower and upper X == 0");
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
611 return null;
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
612 }
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
613
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
614 if (from > to) {
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
615 double tmp = to;
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
616 to = from;
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
617 from = tmp;
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
618 }
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
619
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
620 return new Range(from, to);
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
621 }
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
622 catch (NumberFormatException nfe) {
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
623 logger.warn("Wrong values for domain axis range.");
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
624 }
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
625 }
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
626
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
627 return null;
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
628 }
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
629
cd4fb19ab892 Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2325
diff changeset
630
2398
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
631 protected Range getValueAxisRange() {
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
632 String[] ranges = getValueAxisRangeFromRequest();
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
633
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
634 if (ranges == null || ranges.length < 2) {
4433
5b8919ef601d Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4432
diff changeset
635 logger.debug("No range specified. Lower and upper Y == 0");
2398
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
636 return null;
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
637 }
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
638
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
639 if (ranges[0].length() > 0 && ranges[1].length() > 0) {
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
640 try {
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
641 double from = Double.parseDouble(ranges[0]);
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
642 double to = Double.parseDouble(ranges[1]);
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
643
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
644 if (from == 0 && to == 0) {
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
645 logger.debug("No range specified. Lower and upper Y == 0");
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
646 return null;
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
647 }
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
648
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
649 return from > to
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
650 ? new Range(to, from)
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
651 : new Range(from, to);
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
652 }
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
653 catch (NumberFormatException nfe) {
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
654 logger.warn("Wrong values for value axis range.");
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
655 }
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
656 }
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
657
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
658 return null;
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
659 }
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
660
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
661
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
662 protected boolean zoomX(XYPlot plot, ValueAxis axis, Bounds bounds, Range x) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
663 return zoom(plot, axis, bounds, x);
718
f3fd8c9b7f51 #157 Computed discharge curve charts always have a lower bound set to 0.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 717
diff changeset
664 }
f3fd8c9b7f51 #157 Computed discharge curve charts always have a lower bound set to 0.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 717
diff changeset
665
f3fd8c9b7f51 #157 Computed discharge curve charts always have a lower bound set to 0.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 717
diff changeset
666
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
667 protected boolean zoomY(XYPlot plot, ValueAxis axis, Bounds bounds, Range x) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
668 return zoom(plot, axis, bounds, x);
718
f3fd8c9b7f51 #157 Computed discharge curve charts always have a lower bound set to 0.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 717
diff changeset
669 }
f3fd8c9b7f51 #157 Computed discharge curve charts always have a lower bound set to 0.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 717
diff changeset
670
f3fd8c9b7f51 #157 Computed discharge curve charts always have a lower bound set to 0.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 717
diff changeset
671
653
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 652
diff changeset
672 /**
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 652
diff changeset
673 * Zooms the x axis to the range specified in the attribute document.
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 652
diff changeset
674 *
1958
82cefa3f954f Partial fix for flys/issue420 (Mosel/DischargeCurves), do survive empty datasets when calculating axis extents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1948
diff changeset
675 * @param plot The XYPlot.
82cefa3f954f Partial fix for flys/issue420 (Mosel/DischargeCurves), do survive empty datasets when calculating axis extents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1948
diff changeset
676 * @param axis The axis the shoud be modified.
3270
4ac581062c40 Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3257
diff changeset
677 * @param bounds The whole range specified by a dataset.
1958
82cefa3f954f Partial fix for flys/issue420 (Mosel/DischargeCurves), do survive empty datasets when calculating axis extents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1948
diff changeset
678 * @param x A user defined range (null permitted).
654
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
679 *
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
680 * @return true, if a zoom range was specified, otherwise false.
653
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 652
diff changeset
681 */
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
682 protected boolean zoom(XYPlot plot, ValueAxis axis, Bounds bounds, Range x) {
1736
0155cbaba182 XYChartGenerator: Do not crash if no zoom axis given
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1735
diff changeset
683
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
684 if (bounds == null) {
1736
0155cbaba182 XYChartGenerator: Do not crash if no zoom axis given
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1735
diff changeset
685 return false;
0155cbaba182 XYChartGenerator: Do not crash if no zoom axis given
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1735
diff changeset
686 }
0155cbaba182 XYChartGenerator: Do not crash if no zoom axis given
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1735
diff changeset
687
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 667
diff changeset
688 if (x != null) {
4620
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
689 Bounds computed = calculateZoom(bounds, x);
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
690 computed.applyBounds(axis, AXIS_SPACE);
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 667
diff changeset
691
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 667
diff changeset
692 logger.debug("Zoom axis to: " + computed);
654
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
693
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
694 return true;
652
8fa4c5c9cd1a Charts are zoomed to a specified view if the attribute document for the chart creation contains an x and/or y range.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 423
diff changeset
695 }
654
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
696
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
697 bounds.applyBounds(axis, AXIS_SPACE);
654
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
698 return false;
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
699 }
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
700
4620
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
701 /**
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
702 * Calculates the start and end km for zoomed charts.
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
703 * @param bounds The given total bounds (unzoomed).
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
704 * @param range The range specifying the zoom.
4736
b195fede1c3b Remove trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4650
diff changeset
705 *
4620
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
706 * @return The start and end km for the zoomed chart.
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
707 */
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
708 protected Bounds calculateZoom(Bounds bounds, Range range) {
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
709 double min = bounds.getLower().doubleValue();
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
710 double max = bounds.getUpper().doubleValue();
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
711
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
712 if (logger.isDebugEnabled()) {
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
713 logger.debug("Minimum is: " + min);
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
714 logger.debug("Maximum is: " + max);
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
715 logger.debug("Lower zoom is: " + range.getLowerBound());
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
716 logger.debug("Upper zoom is: " + range.getUpperBound());
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
717 }
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
718
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
719 double diff = max > min ? max - min : min - max;
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
720
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
721 DoubleBounds computed = new DoubleBounds(
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
722 min + range.getLowerBound() * diff,
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
723 min + range.getUpperBound() * diff);
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
724 return computed;
4a30d1d62caf Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents: 4445
diff changeset
725 }
654
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
726
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
727 /**
2710
013882485011 Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2706
diff changeset
728 * Extract the minimum and maximum values for x and y axes
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
729 * which are stored in <i>xRanges</i> and <i>yRanges</i>.
654
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
730 *
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1679
diff changeset
731 * @param index The index of the y-Axis.
654
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
732 *
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
733 * @return a Range[] as follows: [x-Range, y-Range].
bbc966c81809 #90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
734 */
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2246
diff changeset
735 @Override
1944
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1943
diff changeset
736 public Range[] getRangesForAxis(int index) {
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1943
diff changeset
737 logger.debug("getRangesForAxis " + index);
2132
e8fc770d2f8c 'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2110
diff changeset
738
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
739 Bounds rx = getXBounds(Integer.valueOf(0));
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
740 Bounds ry = getYBounds(Integer.valueOf(index));
2132
e8fc770d2f8c 'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2110
diff changeset
741
e8fc770d2f8c 'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2110
diff changeset
742 if (rx == null) {
e8fc770d2f8c 'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2110
diff changeset
743 logger.warn("Range for x axis not set." +
e8fc770d2f8c 'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2110
diff changeset
744 " Using default values: 0 - 1.");
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
745 rx = new DoubleBounds(0, 1);
2132
e8fc770d2f8c 'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2110
diff changeset
746 }
e8fc770d2f8c 'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2110
diff changeset
747 if (ry == null) {
e8fc770d2f8c 'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2110
diff changeset
748 logger.warn("Range for y" + index +
e8fc770d2f8c 'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2110
diff changeset
749 " axis not set. Using default values: 0 - 1.");
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
750 ry = new DoubleBounds(0, 1);
2132
e8fc770d2f8c 'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2110
diff changeset
751 }
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
752
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
753 return new Range[] {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
754 new Range(rx.getLower().doubleValue(), rx.getUpper().doubleValue()),
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
755 new Range(ry.getLower().doubleValue(), ry.getUpper().doubleValue())
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
756 };
652
8fa4c5c9cd1a Charts are zoomed to a specified view if the attribute document for the chart creation contains an x and/or y range.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 423
diff changeset
757 }
8fa4c5c9cd1a Charts are zoomed to a specified view if the attribute document for the chart creation contains an x and/or y range.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 423
diff changeset
758
8fa4c5c9cd1a Charts are zoomed to a specified view if the attribute document for the chart creation contains an x and/or y range.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 423
diff changeset
759
2710
013882485011 Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2706
diff changeset
760 /** Get X (usually horizontal) extent for given axis. */
2398
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
761 @Override
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
762 public Bounds getXBounds(int axis) {
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
763 return xBounds.get(axis);
2398
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
764 }
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
765
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
766
2710
013882485011 Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2706
diff changeset
767 /** Set X (usually horizontal) extent for given axis. */
2398
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
768 @Override
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
769 protected void setXBounds(int axis, Bounds bounds) {
3249
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
770 if (bounds.getLower() == bounds.getUpper()) {
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
771 xBounds.put(axis, ChartHelper.expandBounds(bounds, 5d));
2138
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2132
diff changeset
772 }
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2132
diff changeset
773 else {
3249
f76cef888ee1 Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3242
diff changeset
774 xBounds.put(axis, bounds);
2138
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2132
diff changeset
775 }
2398
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
776 }
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
777
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
778
2710
013882485011 Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2706
diff changeset
779 /** Get Y (usually vertical) extent for given axis. */
2398
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
780 @Override
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
781 public Bounds getYBounds(int axis) {
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
782 return yBounds.get(axis);
2398
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
783 }
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
784
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
785
2710
013882485011 Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2706
diff changeset
786 /** Set Y (usually vertical) extent for given axis. */
2398
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
787 @Override
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
788 protected void setYBounds(int axis, Bounds bounds) {
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2584
diff changeset
789 yBounds.put(axis, bounds);
2398
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
790 }
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
791
5d8d24984819 New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2395
diff changeset
792
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
793 /**
2054
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
794 * Adjusts the axes of a plot. This method sets the <i>labelFont</i> of the
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
795 * X axis.
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
796 *
3650
cbe2febe30cc Merged revisions 5391-5392 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3638
diff changeset
797 * (Duplicate in TimeseriesChartGenerator)
cbe2febe30cc Merged revisions 5391-5392 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3638
diff changeset
798 *
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
799 * @param plot The XYPlot of the chart.
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
800 */
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
801 protected void adjustAxes(XYPlot plot) {
2054
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
802 ValueAxis xaxis = plot.getDomainAxis();
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
803
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
804 ChartSettings chartSettings = getChartSettings();
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
805 if (chartSettings == null) {
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
806 return;
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1930
diff changeset
807 }
2054
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
808
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
809 Font labelFont = new Font(
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
810 DEFAULT_FONT_NAME,
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
811 Font.BOLD,
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
812 getXAxisLabelFontSize());
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
813
a653295c9ac0 Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2053
diff changeset
814 xaxis.setLabelFont(labelFont);
2590
d75b427da50a #522 Modified axes creation: label and tick label fonts will now always be the same.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2587
diff changeset
815 xaxis.setTickLabelFont(labelFont);
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
816 }
414
0385bcc4229a Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 375
diff changeset
817
0385bcc4229a Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 375
diff changeset
818
1940
0d12e70766c8 Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1935
diff changeset
819 /**
1645
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
820 * This method walks over all axes (domain and range) of <i>plot</i> and
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
821 * calls localizeDomainAxis() for domain axes or localizeRangeAxis() for
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
822 * range axes.
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
823 *
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
824 * @param plot The XYPlot.
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
825 */
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
826 private void localizeAxes(XYPlot plot) {
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
827 for (int i = 0, num = plot.getDomainAxisCount(); i < num; i++) {
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
828 ValueAxis axis = plot.getDomainAxis(i);
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
829
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
830 if (axis != null) {
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
831 localizeDomainAxis(axis);
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
832 }
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
833 else {
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
834 logger.warn("Domain axis at " + i + " is null.");
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
835 }
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
836 }
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
837
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
838 for (int i = 0, num = plot.getRangeAxisCount(); i < num; i++) {
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
839 ValueAxis axis = plot.getRangeAxis(i);
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
840
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
841 if (axis != null) {
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
842 localizeRangeAxis(axis);
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
843 }
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
844 else {
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
845 logger.warn("Range axis at " + i + " is null.");
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
846 }
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
847 }
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
848 }
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
849
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
850
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
851 /**
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
852 * Overrides the NumberFormat with the NumberFormat for the current locale
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
853 * that is provided by getLocale().
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
854 *
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
855 * @param domainAxis The domain axis that needs localization.
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
856 */
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
857 protected void localizeDomainAxis(ValueAxis domainAxis) {
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
858 NumberFormat nf = NumberFormat.getInstance(getLocale());
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
859 ((NumberAxis) domainAxis).setNumberFormatOverride(nf);
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
860 }
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
861
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
862
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
863 /**
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
864 * Overrides the NumberFormat with the NumberFormat for the current locale
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
865 * that is provided by getLocale().
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
866 *
3270
4ac581062c40 Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3257
diff changeset
867 * @param rangeAxis The domain axis that needs localization.
1645
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
868 */
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
869 protected void localizeRangeAxis(ValueAxis rangeAxis) {
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
870 NumberFormat nf = NumberFormat.getInstance(getLocale());
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
871 ((NumberAxis) rangeAxis).setNumberFormatOverride(nf);
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
872 }
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
873
4a8251eae217 Bugfix: #68 Set number format of chart plot axes based on the CallMeta instance for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1623
diff changeset
874
1932
17e18948fe5e Fix legend and themeing with new multiaxis feature.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1931
diff changeset
875 /**
2206
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
876 * Do Points out.
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
877 */
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
878 protected void doPoints(
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
879 Object o,
2325
1fcaeced48f2 #485 Fixed broken renaming of chart themes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2300
diff changeset
880 ArtifactAndFacet aandf,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
881 ThemeDocument theme,
2206
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
882 boolean visible,
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
883 int axisIndex
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
884 ) {
2325
1fcaeced48f2 #485 Fixed broken renaming of chart themes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2300
diff changeset
885 String seriesName = aandf.getFacetDescription();
2206
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
886 XYSeries series = new StyledXYSeries(seriesName, theme);
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
887
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
888 // Add text annotations for single points.
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
889 List<XYTextAnnotation> xy = new ArrayList<XYTextAnnotation>();
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
890
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
891 try {
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
892 JSONArray points = new JSONArray((String) o);
3087
4a76da133144 Removed repeated x.size() calls from for loops.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3079
diff changeset
893 for (int i = 0, P = points.length(); i < P; i++) {
2206
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
894 JSONArray array = points.getJSONArray(i);
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
895 double x = array.getDouble(0);
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
896 double y = array.getDouble(1);
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
897 String name = array.getString(2);
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
898 boolean act = array.getBoolean(3);
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
899 if (!act) {
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
900 continue;
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
901 }
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
902 //logger.debug(" x " + x + " y " + y );
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
903 series.add(x, y, false);
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
904 xy.add(new CollisionFreeXYTextAnnotation(name, x, y));
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
905 }
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
906 }
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
907 catch(JSONException e){
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
908 logger.error("Could not decode json.");
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
909 }
924
f7761914f745 An initial implementation to render chart series based on the XML configuration in themes.xml.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 923
diff changeset
910
5864
f2e46a668fe6 River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
911 RiverAnnotation annotations = new RiverAnnotation(null, null, null, theme);
2206
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
912 annotations.setTextAnnotations(xy);
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
913
2574
3598690dc9e2 Fix flys/issue501 (manual points have two legend entries).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2422
diff changeset
914 // Do not generate second legend entry. (null was passed for the aand before).
3598690dc9e2 Fix flys/issue501 (manual points have two legend entries).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2422
diff changeset
915 doAnnotations(annotations, null, theme, visible);
2206
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
916 addAxisSeries(series, axisIndex, visible);
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
917 }
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
918
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2193
diff changeset
919
2584
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
920 /**
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
921 * Create a hash from a legenditem.
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
922 * This hash can then be used to merge legend items labels.
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
923 * @return hash for given legenditem to identify mergeables.
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
924 */
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
925 public static String legendItemHash(LegendItem li) {
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
926 // TODO Do proper implementation. Ensure that only mergable sets are created.
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
927 // getFillPaint()
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
928 // getFillPaintTransformer()
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
929 // getLabel()
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
930 // getLine()
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
931 // getLinePaint()
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
932 // getLineStroke()
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
933 // getOutlinePaint()
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3064
diff changeset
934 // getOutlineStroke()
2584
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
935 // Shape getShape()
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
936 // String getToolTipText()
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
937 // String getURLText()
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
938 // boolean isLineVisible()
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
939 // boolean isShapeFilled()
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
940 // boolean isShapeOutlineVisible()
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
941 // boolean isShapeVisible()
2711
fa8ae7dbcb72 More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2710
diff changeset
942 String hash = li.getLinePaint().toString();
fa8ae7dbcb72 More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2710
diff changeset
943 String label = li.getLabel();
fa8ae7dbcb72 More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2710
diff changeset
944 if (label.startsWith("W (") || label.startsWith("W(")) {
fa8ae7dbcb72 More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2710
diff changeset
945 hash += "-W-";
2584
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
946 }
2711
fa8ae7dbcb72 More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2710
diff changeset
947 else if (label.startsWith("Q(") || label.startsWith("Q (")) {
fa8ae7dbcb72 More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2710
diff changeset
948 hash += "-Q-";
2584
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
949 }
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
950
2711
fa8ae7dbcb72 More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2710
diff changeset
951 // WQ.java holds example of using regex Matcher/Pattern.
2584
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
952
2711
fa8ae7dbcb72 More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2710
diff changeset
953 return hash;
2584
5d5457a1bd5f Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2574
diff changeset
954 }
4433
5b8919ef601d Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4432
diff changeset
955
4445
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
956 /** True if x axis has been inverted. */
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
957 public boolean isInverted() {
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
958 return inverted;
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
959 }
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
960
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
961
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
962 /** Set to true if x axis has been inverted. */
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
963 public void setInverted(boolean inverted) {
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
964 this.inverted = inverted;
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
965 }
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
966
0eca080fc162 Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
967
369
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
968 }
2ce7b473620e Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
969 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org