Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/XYChartGenerator.java @ 6778:cbe9ac4380a5
issue1439: Show line segments for points that have gaps on both sides. Small refac.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Thu, 08 Aug 2013 10:38:36 +0200 |
parents | af13ceeba52a |
children | 1b35b2ddfc28 |
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; |
fc6c6f6039df
Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents:
3650
diff
changeset
|
41 import org.w3c.dom.Document; |
369
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
42 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5672
diff
changeset
|
43 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5672
diff
changeset
|
44 import org.dive4elements.river.jfree.Bounds; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5672
diff
changeset
|
45 import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5672
diff
changeset
|
46 import org.dive4elements.river.jfree.DoubleBounds; |
5864
f2e46a668fe6
River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
47 import org.dive4elements.river.jfree.RiverAnnotation; |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5672
diff
changeset
|
48 import org.dive4elements.river.jfree.StyledAreaSeriesCollection; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5672
diff
changeset
|
49 import org.dive4elements.river.jfree.StyledXYSeries; |
369
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
50 |
2206
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
51 |
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 /** |
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
53 * 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
|
54 * |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
55 * 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
|
56 * <ul> |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
57 * <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
|
58 * 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
|
59 * <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
|
60 * 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
|
61 * 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
|
62 * <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
|
63 * </ul> |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
64 * |
369
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
65 * @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
|
66 */ |
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
67 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
|
68 |
3242
1dca41dba135
Move annotation code to base class ChartGenerator
Christian Lins <christian.lins@intevation.de>
parents:
3227
diff
changeset
|
69 public class XYAxisDataset implements AxisDataset { |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
70 /** Symbolic integer, but also coding the priority (0 goes first). */ |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
71 protected int axisSymbol; |
3906
fc6c6f6039df
Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents:
3650
diff
changeset
|
72 |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
73 /** List of assigned datasets (in order). */ |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
74 protected List<XYDataset> datasets; |
3906
fc6c6f6039df
Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents:
3650
diff
changeset
|
75 |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
76 /** Range to use to include all given datasets. */ |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
77 protected Range range; |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
78 |
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
|
79 /** Index of axis in plot. */ |
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
|
80 protected int plotAxisIndex; |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
81 |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
82 /** Create AxisDataset. */ |
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
|
83 public XYAxisDataset(int symb) { |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
84 this.axisSymbol = symb; |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
85 datasets = new ArrayList<XYDataset>(); |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
86 } |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
87 |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
88 /** Merge (or create given range with range so far (if any). */ |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
89 private void mergeRanges(Range subRange) { |
1959
eace020067da
Further flys/issue420 fix, NaN-guard X axis extent.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1958
diff
changeset
|
90 // Avoid merging NaNs, as they take min/max place forever. |
eace020067da
Further flys/issue420 fix, NaN-guard X axis extent.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1958
diff
changeset
|
91 if (subRange == null || |
eace020067da
Further flys/issue420 fix, NaN-guard X axis extent.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1958
diff
changeset
|
92 Double.isNaN(subRange.getLowerBound()) || |
eace020067da
Further flys/issue420 fix, NaN-guard X axis extent.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1958
diff
changeset
|
93 Double.isNaN(subRange.getUpperBound())) { |
eace020067da
Further flys/issue420 fix, NaN-guard X axis extent.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1958
diff
changeset
|
94 return; |
eace020067da
Further flys/issue420 fix, NaN-guard X axis extent.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1958
diff
changeset
|
95 } |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
96 if (range == null) { |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
97 range = subRange; |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
98 return; |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
99 } |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
100 range = Range.combine(range, subRange); |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
101 } |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
102 |
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
|
103 |
2710
013882485011
Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2706
diff
changeset
|
104 /** Add a dataset to internal list for this axis. */ |
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
|
105 @Override |
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
|
106 public void addDataset(XYDataset dataset) { |
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
|
107 datasets.add(dataset); |
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
|
108 includeYRange(((XYSeriesCollection) dataset).getSeries(0)); |
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
|
109 } |
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
|
110 |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
111 /** Add a dataset, include its range. */ |
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
|
112 public void addDataset(XYSeries series) { |
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
|
113 addDataset(new XYSeriesCollection(series)); |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
114 } |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
115 |
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
|
116 |
2710
013882485011
Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2706
diff
changeset
|
117 /** Set Range for this axis. */ |
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
|
118 @Override |
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
|
119 public void setRange(Range range) { |
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
|
120 this.range = range; |
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
|
121 } |
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
|
122 |
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
|
123 |
2710
013882485011
Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2706
diff
changeset
|
124 /** Get Range for this axis. */ |
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
|
125 @Override |
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
|
126 public Range getRange() { |
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
|
127 return range; |
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
|
128 } |
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
|
129 |
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
|
130 |
2710
013882485011
Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2706
diff
changeset
|
131 /** Get Array of Datasets. */ |
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
|
132 @Override |
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
|
133 public XYDataset[] getDatasets() { |
3906
fc6c6f6039df
Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents:
3650
diff
changeset
|
134 return datasets.toArray(new XYDataset[datasets.size()]); |
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
|
135 } |
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
|
136 |
2710
013882485011
Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2706
diff
changeset
|
137 |
013882485011
Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2706
diff
changeset
|
138 /** Add a Dataset that describes an area. */ |
2020
4f7f781e4481
Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2005
diff
changeset
|
139 public void addArea(StyledAreaSeriesCollection series) { |
4f7f781e4481
Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2005
diff
changeset
|
140 this.datasets.add(series); |
3906
fc6c6f6039df
Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents:
3650
diff
changeset
|
141 List<?> allSeries = series.getSeries(); |
4650
31327b3b2455
XYChartGenerator: Avoid "range merging" for area series, as these might extend
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4620
diff
changeset
|
142 /* We do not include the bounds/ranges, if the area includes |
31327b3b2455
XYChartGenerator: Avoid "range merging" for area series, as these might extend
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4620
diff
changeset
|
143 * points at "infinity"/BIG_DOUBLE_VALUE, the charts extents are |
31327b3b2455
XYChartGenerator: Avoid "range merging" for area series, as these might extend
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4620
diff
changeset
|
144 * expanded to include these very small/big value. |
31327b3b2455
XYChartGenerator: Avoid "range merging" for area series, as these might extend
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4620
diff
changeset
|
145 * This is especially used when showing "area above axis". */ |
2005
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
146 } |
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
147 |
2574
3598690dc9e2
Fix flys/issue501 (manual points have two legend entries).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2422
diff
changeset
|
148 /** True if to be rendered as area. */ |
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
|
149 @Override |
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
|
150 public boolean isArea(XYDataset series) { |
2020
4f7f781e4481
Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2005
diff
changeset
|
151 return (series instanceof StyledAreaSeriesCollection); |
2005
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
152 } |
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
153 |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
154 /** Adjust range to include given 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
|
155 public void includeYRange(XYSeries dataset) { |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
156 mergeRanges(new Range(dataset.getMinY(), dataset.getMaxY())); |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
157 } |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
158 |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
159 /** True if no datasets given. */ |
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
|
160 @Override |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
161 public boolean isEmpty() { |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
162 return this.datasets.isEmpty(); |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
163 } |
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
|
164 |
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
|
165 /** Set the 'real' axis index that this axis is mapped to. */ |
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
|
166 @Override |
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
|
167 public void setPlotAxisIndex(int axisIndex) { |
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
|
168 this.plotAxisIndex = axisIndex; |
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
|
169 } |
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
|
170 |
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
|
171 /** Get the 'real' axis index that this axis is mapped to. */ |
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
|
172 @Override |
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
|
173 public int getPlotAxisIndex() { |
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
|
174 return this.plotAxisIndex; |
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
|
175 } |
2005
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
176 } // class AxisDataset |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
177 |
2710
013882485011
Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2706
diff
changeset
|
178 /** 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
|
179 @Override |
2246
99ef93ce18bd
Doc added and fix getAxisWalker-issue.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2242
diff
changeset
|
180 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
|
181 |
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
|
182 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
|
183 |
1048
fd5c70973e0b
Picky white-space cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
924
diff
changeset
|
184 /** 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
|
185 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
|
186 |
3064
478e8d9d88ba
Add missing imports.
Christian Lins <christian.lins@intevation.de>
parents:
3063
diff
changeset
|
187 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
|
188 |
3169
b6da650b0718
FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3160
diff
changeset
|
189 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
|
190 |
1685
022f62c75878
Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1684
diff
changeset
|
191 /** 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
|
192 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
|
193 |
1685
022f62c75878
Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1684
diff
changeset
|
194 /** 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
|
195 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
|
196 |
4445
0eca080fc162
Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4433
diff
changeset
|
197 /** 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
|
198 private boolean inverted; |
0eca080fc162
Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4433
diff
changeset
|
199 |
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
|
200 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
|
201 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
|
202 |
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
|
203 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
|
204 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
|
205 } |
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
|
206 |
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
|
207 |
369
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
208 /** |
1930
de0c2bbb27f9
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1861
diff
changeset
|
209 * Generate the chart anew (including localized axis and all). |
de0c2bbb27f9
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1861
diff
changeset
|
210 */ |
3906
fc6c6f6039df
Fix for area clipping problem in longitudinal section char
Christian Lins <christian.lins@intevation.de>
parents:
3650
diff
changeset
|
211 @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
|
212 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
|
213 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
|
214 |
369
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
215 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
|
216 getChartTitle(), |
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
217 getXAxisLabel(), |
2051
4ba5036109d2
Make use of user defined axes labels during chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2050
diff
changeset
|
218 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
|
219 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
|
220 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
|
221 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
|
222 false, |
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
223 false); |
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
224 |
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
|
225 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
|
226 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
|
227 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
|
228 |
369
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
229 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
|
230 plot.setBackgroundPaint(Color.WHITE); |
414
0385bcc4229a
Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
375
diff
changeset
|
231 addSubtitles(chart); |
419
4de7d9eac10f
Display gridlines in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
414
diff
changeset
|
232 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
|
233 |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
234 //debugAxis(plot); |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
235 |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
236 addDatasets(plot); |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
237 |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
238 //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
|
239 |
3063
33c167d6fff6
Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents:
2998
diff
changeset
|
240 addMarkers(plot); |
33c167d6fff6
Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents:
2998
diff
changeset
|
241 |
1935
5b51f5232661
Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1934
diff
changeset
|
242 recoverEmptyPlot(plot); |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
243 preparePointRanges(plot); |
1935
5b51f5232661
Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1934
diff
changeset
|
244 |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
245 //debugAxis(plot); |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
246 |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
247 localizeAxes(plot); |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
248 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
|
249 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
|
250 // 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
|
251 // 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
|
252 // 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
|
253 // 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
|
254 // 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
|
255 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
|
256 } |
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
|
257 |
3249
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
258 //debugAxis(plot); |
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
259 |
2138
59bb5c895be3
Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2132
diff
changeset
|
260 // These have to go after the autozoom. |
2161
c68f4f227c09
Somewhat unified Annotation handling, use jfreechart-house-toolkit instead of custom StickyAxisAnnotation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2152
diff
changeset
|
261 addAnnotationsToRenderer(plot); |
2138
59bb5c895be3
Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2132
diff
changeset
|
262 |
3616
d4751be54745
Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3296
diff
changeset
|
263 // 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
|
264 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
|
265 |
3154
a08538e21b55
Re-enable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3114
diff
changeset
|
266 aggregateLegendEntries(plot); |
2584
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
267 |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
268 return chart; |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
269 } |
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
|
270 |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
271 |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
272 /** |
3621
6772e9f9b65f
Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3620
diff
changeset
|
273 * 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
|
274 * 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
|
275 * axis could be inverted. |
6772e9f9b65f
Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3620
diff
changeset
|
276 */ |
6772e9f9b65f
Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3620
diff
changeset
|
277 protected double getLeftX() { |
6772e9f9b65f
Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3620
diff
changeset
|
278 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
|
279 } |
6772e9f9b65f
Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3620
diff
changeset
|
280 |
6772e9f9b65f
Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3620
diff
changeset
|
281 |
6772e9f9b65f
Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3620
diff
changeset
|
282 /** |
6772e9f9b65f
Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3620
diff
changeset
|
283 * 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
|
284 * 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
|
285 * axis could be inverted. |
6772e9f9b65f
Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3620
diff
changeset
|
286 */ |
6772e9f9b65f
Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3620
diff
changeset
|
287 protected double getRightX() { |
4433
5b8919ef601d
Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4432
diff
changeset
|
288 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
|
289 } |
6772e9f9b65f
Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3620
diff
changeset
|
290 |
6772e9f9b65f
Deal with inverted axes in longitudinal charts and logos.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3620
diff
changeset
|
291 |
3616
d4751be54745
Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3296
diff
changeset
|
292 /** 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
|
293 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
|
294 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
|
295 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
|
296 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
|
297 return; |
d4751be54745
Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3296
diff
changeset
|
298 } |
d4751be54745
Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3296
diff
changeset
|
299 |
3633
ebfce31c7eec
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3623
diff
changeset
|
300 ImageIcon imageIcon = null; |
3618
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
301 if (logo.equals("none")) { |
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
302 return; |
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
303 } |
3623
119b8ba2b77f
Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3621
diff
changeset
|
304 /* |
119b8ba2b77f
Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3621
diff
changeset
|
305 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
|
306 flys-artifacts: |
119b8ba2b77f
Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3621
diff
changeset
|
307 XYChartGenerator.java |
119b8ba2b77f
Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3621
diff
changeset
|
308 Timeseries*Generator.java and |
119b8ba2b77f
Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3621
diff
changeset
|
309 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
|
310 Also, these images have to be put in |
6bfcbe391393
Better comment for logo-adders.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3633
diff
changeset
|
311 flys-artifacts/src/main/resources/images/ |
6bfcbe391393
Better comment for logo-adders.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3633
diff
changeset
|
312 flys-client/src/main/webapp/images/ |
3623
119b8ba2b77f
Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3621
diff
changeset
|
313 */ |
119b8ba2b77f
Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3621
diff
changeset
|
314 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
|
315 if (logo.equals("Intevation")) { |
3623
119b8ba2b77f
Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3621
diff
changeset
|
316 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
|
317 } |
3618
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
318 else { // TODO else if ... |
3623
119b8ba2b77f
Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3621
diff
changeset
|
319 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
|
320 } |
3623
119b8ba2b77f
Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3621
diff
changeset
|
321 imageIcon = new ImageIcon(imageURL); |
119b8ba2b77f
Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3621
diff
changeset
|
322 |
4433
5b8919ef601d
Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4432
diff
changeset
|
323 |
3617
05deafdcbf39
sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3616
diff
changeset
|
324 double xPos = 0d, yPos = 0d; |
05deafdcbf39
sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3616
diff
changeset
|
325 |
3618
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
326 String placeh = logoHPlace(); |
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
327 String placev = logoVPlace(); |
3620
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
328 |
3618
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
329 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
|
330 placev = "top"; |
3617
05deafdcbf39
sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3616
diff
changeset
|
331 } |
3618
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
332 if (placev.equals("top")) { |
4433
5b8919ef601d
Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4432
diff
changeset
|
333 yPos = (Double)getYBounds(0).getUpper(); |
3617
05deafdcbf39
sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3616
diff
changeset
|
334 } |
3618
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
335 else if (placev.equals("bottom")) { |
4433
5b8919ef601d
Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4432
diff
changeset
|
336 yPos = (Double)getYBounds(0).getLower(); |
3617
05deafdcbf39
sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3616
diff
changeset
|
337 } |
3618
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
338 else if (placev.equals("center")) { |
4433
5b8919ef601d
Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4432
diff
changeset
|
339 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
|
340 } |
3620
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
341 else { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
342 logger.debug("Unknown place-v value: " + placev); |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
343 } |
3618
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
344 |
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
345 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
|
346 placeh = "center"; |
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
347 } |
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
348 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
|
349 xPos = getLeftX(); |
3618
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
350 } |
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
351 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
|
352 xPos = getRightX(); |
3617
05deafdcbf39
sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3616
diff
changeset
|
353 } |
3618
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
354 else if (placeh.equals("center")) { |
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
355 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
|
356 } |
3620
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
357 else { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
358 logger.debug("Unknown place-h value: " + placeh); |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
359 } |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
360 |
3617
05deafdcbf39
sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3616
diff
changeset
|
361 logger.debug("logo position: " + xPos + "/" + yPos); |
05deafdcbf39
sloppy logo placement property implementation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3616
diff
changeset
|
362 |
3620
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
363 org.jfree.ui.RectangleAnchor anchor |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
364 = org.jfree.ui.RectangleAnchor.TOP; |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
365 if (placev.equals("top")) { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
366 if (placeh.equals("left")) { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
367 anchor = org.jfree.ui.RectangleAnchor.TOP_LEFT; |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
368 } |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
369 else if (placeh.equals("right")) { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
370 anchor = org.jfree.ui.RectangleAnchor.TOP_RIGHT; |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
371 } |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
372 else if (placeh.equals("center")) { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
373 anchor = org.jfree.ui.RectangleAnchor.TOP; |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
374 } |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
375 } |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
376 else if (placev.equals("bottom")) { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
377 if (placeh.equals("left")) { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
378 anchor = org.jfree.ui.RectangleAnchor.BOTTOM_LEFT; |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
379 } |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
380 else if (placeh.equals("right")) { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
381 anchor = org.jfree.ui.RectangleAnchor.BOTTOM_RIGHT; |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
382 } |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
383 else if (placeh.equals("center")) { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
384 anchor = org.jfree.ui.RectangleAnchor.BOTTOM; |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
385 } |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
386 } |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
387 else if (placev.equals("center")) { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
388 if (placeh.equals("left")) { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
389 anchor = org.jfree.ui.RectangleAnchor.LEFT; |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
390 } |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
391 else if (placeh.equals("right")) { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
392 anchor = org.jfree.ui.RectangleAnchor.RIGHT; |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
393 } |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
394 else if (placeh.equals("center")) { |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
395 anchor = org.jfree.ui.RectangleAnchor.CENTER; |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
396 } |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
397 } |
1cd6114603d9
Improved logo placement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3618
diff
changeset
|
398 |
3616
d4751be54745
Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3296
diff
changeset
|
399 XYAnnotation xyannotation = |
3633
ebfce31c7eec
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3623
diff
changeset
|
400 new XYImageAnnotation(xPos, yPos, imageIcon.getImage(), anchor); |
ebfce31c7eec
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3623
diff
changeset
|
401 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
|
402 } |
d4751be54745
Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3296
diff
changeset
|
403 |
d4751be54745
Add rather faked image annotations to chart, if property is set accordingly.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3296
diff
changeset
|
404 |
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
|
405 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
|
406 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
|
407 } |
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
|
408 |
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
|
409 |
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
|
410 @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
|
411 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
|
412 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
|
413 } |
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
|
414 |
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
|
415 |
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
|
416 @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
|
417 protected AxisDataset createAxisDataset(int idx) { |
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
|
418 logger.debug("Create new XYAxisDataset for index: " + idx); |
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
|
419 return new XYAxisDataset(idx); |
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
|
420 } |
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
|
421 |
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
|
422 |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
423 /** |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
424 * 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
|
425 */ |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
426 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
|
427 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
|
428 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
|
429 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
|
430 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
|
431 continue; |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
432 } |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
433 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
|
434 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
|
435 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
|
436 + " " + 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
|
437 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
|
438 + " " + 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
|
439 } |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
440 } |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
441 |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
442 |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
443 /** |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
444 * 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
|
445 */ |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
446 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
|
447 logger.debug("..............."); |
3087
4a76da133144
Removed repeated x.size() calls from for loops.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3079
diff
changeset
|
448 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
|
449 if (plot.getRangeAxis(i) == null) |
2005
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
450 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
|
451 else { |
2005
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
452 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
|
453 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
|
454 " " + 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
|
455 "]"); |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
456 } |
3249
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
457 } |
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
458 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
|
459 if (plot.getDomainAxis(i) == null) |
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
460 logger.debug("Domain-Axis #" + i + " == null"); |
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
461 else { |
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
462 logger.debug("Domain-Axis " + i + " != null [" + |
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
463 plot.getDomainAxis(i).getRange().getLowerBound() + |
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
464 " " + plot.getDomainAxis(i).getRange().getUpperBound() + |
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
465 "]"); |
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
466 } |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
467 } |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
468 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
|
469 } |
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
470 |
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
471 |
1685
022f62c75878
Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1684
diff
changeset
|
472 /** |
2005
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
473 * 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
|
474 * @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
|
475 * @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
|
476 * @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
|
477 */ |
2020
4f7f781e4481
Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2005
diff
changeset
|
478 public void addAreaSeries(StyledAreaSeriesCollection area, int index, boolean visible) { |
4f7f781e4481
Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2005
diff
changeset
|
479 if (area == null) { |
2005
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
480 logger.warn("Cannot yet render above/under curve."); |
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
481 return; |
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
482 } |
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
483 |
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
|
484 XYAxisDataset axisDataset = (XYAxisDataset) getAxisDataset(index); |
2005
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
485 |
2020
4f7f781e4481
Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2005
diff
changeset
|
486 if (visible) { |
4f7f781e4481
Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2005
diff
changeset
|
487 axisDataset.addArea(area); |
4f7f781e4481
Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2005
diff
changeset
|
488 } |
2005
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
489 else { |
4650
31327b3b2455
XYChartGenerator: Avoid "range merging" for area series, as these might extend
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4620
diff
changeset
|
490 /* 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
|
491 * causes problems. */ |
2005
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
492 } |
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
493 } |
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
494 |
2020
4f7f781e4481
Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2005
diff
changeset
|
495 |
2005
79b15491177a
Added simple area registering functions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2000
diff
changeset
|
496 /** |
1935
5b51f5232661
Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1934
diff
changeset
|
497 * 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
|
498 * 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
|
499 * @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
|
500 * @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
|
501 * @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
|
502 */ |
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
|
503 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
|
504 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
|
505 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
|
506 } |
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
|
507 |
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
|
508 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
|
509 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
|
510 |
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
|
511 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
|
512 |
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
|
513 XYAxisDataset axisDataset = (XYAxisDataset) getAxisDataset(index); |
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
|
514 |
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
|
515 if (!visible) { |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
516 // Do this also when not visible to have axis scaled by default such |
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
517 // that every data-point could be seen (except for annotations). |
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
|
518 axisDataset.includeYRange(series); |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
519 } |
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
|
520 } |
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
|
521 |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
522 |
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
|
523 /** |
3063
33c167d6fff6
Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents:
2998
diff
changeset
|
524 * 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
|
525 */ |
3063
33c167d6fff6
Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents:
2998
diff
changeset
|
526 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
|
527 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
|
528 } |
8b4988815974
Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3978
diff
changeset
|
529 |
8b4988815974
Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3978
diff
changeset
|
530 |
8b4988815974
Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3978
diff
changeset
|
531 /** |
8b4988815974
Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3978
diff
changeset
|
532 * 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
|
533 * 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
|
534 * @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
|
535 * @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
|
536 */ |
8b4988815974
Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3978
diff
changeset
|
537 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
|
538 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
|
539 domainMarkers.add(marker); |
1959
eace020067da
Further flys/issue420 fix, NaN-guard X axis extent.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1958
diff
changeset
|
540 } |
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
|
541 } |
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
|
542 |
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
|
543 |
1930
de0c2bbb27f9
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1861
diff
changeset
|
544 /** |
3169
b6da650b0718
FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3160
diff
changeset
|
545 * 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
|
546 */ |
3169
b6da650b0718
FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3160
diff
changeset
|
547 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
|
548 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
|
549 } |
8b4988815974
Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3978
diff
changeset
|
550 |
8b4988815974
Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3978
diff
changeset
|
551 |
8b4988815974
Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3978
diff
changeset
|
552 /** |
8b4988815974
Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3978
diff
changeset
|
553 * 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
|
554 * 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
|
555 * @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
|
556 * @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
|
557 */ |
8b4988815974
Added marker for Ws and Qs in Historical Discharge WQ charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3978
diff
changeset
|
558 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
|
559 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
|
560 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
|
561 } |
3169
b6da650b0718
FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3160
diff
changeset
|
562 } |
b6da650b0718
FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3160
diff
changeset
|
563 |
b6da650b0718
FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3160
diff
changeset
|
564 |
3063
33c167d6fff6
Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents:
2998
diff
changeset
|
565 protected void addMarkers(XYPlot plot) { |
33c167d6fff6
Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents:
2998
diff
changeset
|
566 for(Marker marker : domainMarkers) { |
3064
478e8d9d88ba
Add missing imports.
Christian Lins <christian.lins@intevation.de>
parents:
3063
diff
changeset
|
567 plot.addDomainMarker(marker); |
3063
33c167d6fff6
Move marker generation to XYChartGenerator
Christian Lins <christian.lins@intevation.de>
parents:
2998
diff
changeset
|
568 } |
3169
b6da650b0718
FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3160
diff
changeset
|
569 for(Marker marker : valueMarkers) { |
b6da650b0718
FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3160
diff
changeset
|
570 plot.addRangeMarker(marker); |
b6da650b0718
FixA: Added longitudinal section chart.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3160
diff
changeset
|
571 } |
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
|
572 } |
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
|
573 |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
574 |
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
|
575 /** |
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
|
576 * 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
|
577 * |
3270
4ac581062c40
Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3257
diff
changeset
|
578 * @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
|
579 * @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
|
580 */ |
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
|
581 @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
|
582 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
|
583 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
|
584 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
|
585 return; |
eace020067da
Further flys/issue420 fix, NaN-guard X axis extent.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1958
diff
changeset
|
586 } |
eace020067da
Further flys/issue420 fix, NaN-guard X axis extent.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1958
diff
changeset
|
587 |
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
|
588 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
|
589 |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
590 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
|
591 || 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
|
592 || 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
|
593 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
|
594 } |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
595 |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
596 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
|
597 |
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
|
598 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
|
599 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
|
600 } |
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
|
601 |
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
|
602 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
|
603 } |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
604 |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
605 |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
606 @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
|
607 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
|
608 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
|
609 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
|
610 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
|
611 } |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
612 |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
613 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
|
614 |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
615 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
|
616 || 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
|
617 || 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
|
618 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
|
619 } |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
620 |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
621 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
|
622 |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
623 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
|
624 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
|
625 } |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
626 |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
627 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
|
628 } |
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
|
629 |
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
|
630 |
1930
de0c2bbb27f9
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1861
diff
changeset
|
631 /** |
1935
5b51f5232661
Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1934
diff
changeset
|
632 * 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
|
633 */ |
5b51f5232661
Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1934
diff
changeset
|
634 private void recoverEmptyPlot(XYPlot plot) { |
5b51f5232661
Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1934
diff
changeset
|
635 if (plot.getRangeAxis() == null) { |
5b51f5232661
Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1934
diff
changeset
|
636 logger.debug("debug: No range axis"); |
2414
b5f5af53a526
Make it compileable again
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2411
diff
changeset
|
637 plot.setRangeAxis(createYAxis(0)); |
1935
5b51f5232661
Added handling of empty plots.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1934
diff
changeset
|
638 } |
923
7ca4a287cd0e
#135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
718
diff
changeset
|
639 } |
7ca4a287cd0e
#135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
718
diff
changeset
|
640 |
7ca4a287cd0e
#135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
718
diff
changeset
|
641 |
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
|
642 /** |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
643 * 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
|
644 */ |
1686
e8d1e531687a
Bugfix: #114 Enabled rendering charts with a single data point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1685
diff
changeset
|
645 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
|
646 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
|
647 |
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
|
648 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
|
649 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
|
650 |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
651 |
3249
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
652 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
|
653 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
|
654 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
|
655 } |
e8d1e531687a
Bugfix: #114 Enabled rendering charts with a single data point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1685
diff
changeset
|
656 } |
e8d1e531687a
Bugfix: #114 Enabled rendering charts with a single data point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1685
diff
changeset
|
657 } |
e8d1e531687a
Bugfix: #114 Enabled rendering charts with a single data point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1685
diff
changeset
|
658 |
e8d1e531687a
Bugfix: #114 Enabled rendering charts with a single data point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1685
diff
changeset
|
659 |
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
|
660 /** |
654
bbc966c81809
#90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
653
diff
changeset
|
661 * 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
|
662 * 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
|
663 * 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
|
664 * 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
|
665 * 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
|
666 * |
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
|
667 * @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
|
668 */ |
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
|
669 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
|
670 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
|
671 |
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
|
672 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
|
673 Range yrange = getValueAxisRange(); |
654
bbc966c81809
#90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
653
diff
changeset
|
674 |
2050
c4e0e433f825
Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2049
diff
changeset
|
675 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
|
676 |
c4e0e433f825
Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2049
diff
changeset
|
677 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
|
678 if (fixedXRange != null) { |
c4e0e433f825
Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2049
diff
changeset
|
679 xAxis.setRange(fixedXRange); |
c4e0e433f825
Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2049
diff
changeset
|
680 } |
c4e0e433f825
Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2049
diff
changeset
|
681 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
|
682 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
|
683 } |
923
7ca4a287cd0e
#135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
718
diff
changeset
|
684 |
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
|
685 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
|
686 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
|
687 |
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
|
688 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
|
689 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
|
690 |
c4e0e433f825
Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2049
diff
changeset
|
691 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
|
692 if (fixedRange != null) { |
c4e0e433f825
Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2049
diff
changeset
|
693 yaxis.setRange(fixedRange); |
c4e0e433f825
Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2049
diff
changeset
|
694 continue; |
c4e0e433f825
Use axes ranges specified in ChartSettings for zooming in charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2049
diff
changeset
|
695 } |
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
|
696 } |
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
|
697 |
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
|
698 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
|
699 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
|
700 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
|
701 } |
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
|
702 |
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
|
703 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
|
704 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
|
705 } |
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
|
706 } |
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
|
707 |
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
|
708 |
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
|
709 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
|
710 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
|
711 |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
712 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
|
713 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
|
714 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
|
715 } |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
716 |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
717 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
|
718 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
|
719 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
|
720 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
|
721 |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
722 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
|
723 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
|
724 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
|
725 } |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
726 |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
727 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
|
728 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
|
729 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
|
730 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
|
731 } |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
732 |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
733 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
|
734 } |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
735 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
|
736 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
|
737 } |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
738 } |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
739 |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
740 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
|
741 } |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
742 |
cd4fb19ab892
Some API changes in ChartGenerator and XYChartGenerator for fetching user specified zoom values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2325
diff
changeset
|
743 |
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
|
744 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
|
745 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
|
746 |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
747 if (ranges == null || ranges.length < 2) { |
4433
5b8919ef601d
Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4432
diff
changeset
|
748 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
|
749 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
|
750 } |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
751 |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
752 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
|
753 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
|
754 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
|
755 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
|
756 |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
757 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
|
758 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
|
759 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
|
760 } |
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 |
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 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
|
763 ? 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
|
764 : 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
|
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 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
|
767 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
|
768 } |
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 } |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
770 |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
771 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
|
772 } |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
773 |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
774 |
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
|
775 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
|
776 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
|
777 } |
f3fd8c9b7f51
#157 Computed discharge curve charts always have a lower bound set to 0.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
717
diff
changeset
|
778 |
f3fd8c9b7f51
#157 Computed discharge curve charts always have a lower bound set to 0.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
717
diff
changeset
|
779 |
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
|
780 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
|
781 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
|
782 } |
f3fd8c9b7f51
#157 Computed discharge curve charts always have a lower bound set to 0.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
717
diff
changeset
|
783 |
f3fd8c9b7f51
#157 Computed discharge curve charts always have a lower bound set to 0.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
717
diff
changeset
|
784 |
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
|
785 /** |
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
|
786 * 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
|
787 * |
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
|
788 * @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
|
789 * @param axis The axis the shoud be modified. |
3270
4ac581062c40
Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3257
diff
changeset
|
790 * @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
|
791 * @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
|
792 * |
bbc966c81809
#90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
653
diff
changeset
|
793 * @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
|
794 */ |
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
|
795 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
|
796 |
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
|
797 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
|
798 return false; |
0155cbaba182
XYChartGenerator: Do not crash if no zoom axis given
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1735
diff
changeset
|
799 } |
0155cbaba182
XYChartGenerator: Do not crash if no zoom axis given
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1735
diff
changeset
|
800 |
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
|
801 if (x != null) { |
4620
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
802 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
|
803 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
|
804 |
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
|
805 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
|
806 |
bbc966c81809
#90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
653
diff
changeset
|
807 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
|
808 } |
654
bbc966c81809
#90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
653
diff
changeset
|
809 |
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
|
810 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
|
811 return false; |
bbc966c81809
#90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
653
diff
changeset
|
812 } |
bbc966c81809
#90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
653
diff
changeset
|
813 |
4620
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
814 /** |
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
815 * 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
|
816 * @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
|
817 * @param range The range specifying the zoom. |
4736
b195fede1c3b
Remove trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4650
diff
changeset
|
818 * |
4620
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
819 * @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
|
820 */ |
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
821 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
|
822 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
|
823 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
|
824 |
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
825 if (logger.isDebugEnabled()) { |
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
826 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
|
827 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
|
828 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
|
829 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
|
830 } |
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
831 |
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
832 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
|
833 |
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
834 DoubleBounds computed = new DoubleBounds( |
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
835 min + range.getLowerBound() * diff, |
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
836 min + range.getUpperBound() * diff); |
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
837 return computed; |
4a30d1d62caf
Extracted method to calculate the zoomed bound of a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
4445
diff
changeset
|
838 } |
654
bbc966c81809
#90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
653
diff
changeset
|
839 |
bbc966c81809
#90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
653
diff
changeset
|
840 /** |
2710
013882485011
Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2706
diff
changeset
|
841 * 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
|
842 * 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
|
843 * |
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
|
844 * @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
|
845 * |
bbc966c81809
#90 Removed margins between data area border and curves.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
653
diff
changeset
|
846 * @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
|
847 */ |
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
|
848 @Override |
1944
21a4d2c677a1
Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1943
diff
changeset
|
849 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
|
850 logger.debug("getRangesForAxis " + index); |
2132
e8fc770d2f8c
'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2110
diff
changeset
|
851 |
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
|
852 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
|
853 Bounds ry = getYBounds(Integer.valueOf(index)); |
2132
e8fc770d2f8c
'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2110
diff
changeset
|
854 |
e8fc770d2f8c
'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2110
diff
changeset
|
855 if (rx == null) { |
e8fc770d2f8c
'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2110
diff
changeset
|
856 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
|
857 " 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
|
858 rx = new DoubleBounds(0, 1); |
2132
e8fc770d2f8c
'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2110
diff
changeset
|
859 } |
e8fc770d2f8c
'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2110
diff
changeset
|
860 if (ry == null) { |
e8fc770d2f8c
'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2110
diff
changeset
|
861 logger.warn("Range for y" + index + |
e8fc770d2f8c
'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2110
diff
changeset
|
862 " 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
|
863 ry = new DoubleBounds(0, 1); |
2132
e8fc770d2f8c
'New Chart' for computed discharge curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2110
diff
changeset
|
864 } |
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
|
865 |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2584
diff
changeset
|
866 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
|
867 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
|
868 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
|
869 }; |
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
|
870 } |
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
|
871 |
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
|
872 |
2710
013882485011
Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2706
diff
changeset
|
873 /** 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
|
874 @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
|
875 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
|
876 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
|
877 } |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
878 |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
879 |
2710
013882485011
Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2706
diff
changeset
|
880 /** 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
|
881 @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
|
882 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
|
883 if (bounds.getLower() == bounds.getUpper()) { |
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
884 xBounds.put(axis, ChartHelper.expandBounds(bounds, 5d)); |
2138
59bb5c895be3
Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2132
diff
changeset
|
885 } |
59bb5c895be3
Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2132
diff
changeset
|
886 else { |
3249
f76cef888ee1
Fix issue710 - crashing one-point-diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3242
diff
changeset
|
887 xBounds.put(axis, bounds); |
2138
59bb5c895be3
Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2132
diff
changeset
|
888 } |
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
|
889 } |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
890 |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
891 |
2710
013882485011
Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2706
diff
changeset
|
892 /** 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
|
893 @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
|
894 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
|
895 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
|
896 } |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
897 |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
898 |
2710
013882485011
Cosmetics (docs).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2706
diff
changeset
|
899 /** 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
|
900 @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
|
901 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
|
902 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
|
903 } |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
904 |
5d8d24984819
New abstract methods in ChartGenerator and moved a method from ChartGenerator to XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2395
diff
changeset
|
905 |
369
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
906 /** |
2054
a653295c9ac0
Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2053
diff
changeset
|
907 * 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
|
908 * X axis. |
a653295c9ac0
Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2053
diff
changeset
|
909 * |
3650
cbe2febe30cc
Merged revisions 5391-5392 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3638
diff
changeset
|
910 * (Duplicate in TimeseriesChartGenerator) |
cbe2febe30cc
Merged revisions 5391-5392 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3638
diff
changeset
|
911 * |
369
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
912 * @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
|
913 */ |
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
914 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
|
915 ValueAxis xaxis = plot.getDomainAxis(); |
a653295c9ac0
Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2053
diff
changeset
|
916 |
a653295c9ac0
Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2053
diff
changeset
|
917 ChartSettings chartSettings = getChartSettings(); |
a653295c9ac0
Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2053
diff
changeset
|
918 if (chartSettings == null) { |
a653295c9ac0
Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2053
diff
changeset
|
919 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
|
920 } |
2054
a653295c9ac0
Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2053
diff
changeset
|
921 |
a653295c9ac0
Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2053
diff
changeset
|
922 Font labelFont = new Font( |
a653295c9ac0
Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2053
diff
changeset
|
923 DEFAULT_FONT_NAME, |
a653295c9ac0
Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2053
diff
changeset
|
924 Font.BOLD, |
a653295c9ac0
Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2053
diff
changeset
|
925 getXAxisLabelFontSize()); |
a653295c9ac0
Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2053
diff
changeset
|
926 |
a653295c9ac0
Make use of user defined axes font sizes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2053
diff
changeset
|
927 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
|
928 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
|
929 } |
414
0385bcc4229a
Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
375
diff
changeset
|
930 |
0385bcc4229a
Added subtitles to the available charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
375
diff
changeset
|
931 |
1940
0d12e70766c8
Refactored XYChartGenerator to have better working multi-axes features.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1935
diff
changeset
|
932 /** |
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
|
933 * 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
|
934 * 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
|
935 * 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
|
936 * |
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
|
937 * @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
|
938 */ |
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
|
939 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
|
940 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
|
941 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
|
942 |
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
|
943 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
|
944 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
|
945 } |
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
|
946 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
|
947 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
|
948 } |
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
|
949 } |
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
|
950 |
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
|
951 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
|
952 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
|
953 |
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
|
954 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
|
955 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
|
956 } |
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
|
957 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
|
958 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
|
959 } |
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
|
960 } |
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
|
961 } |
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
|
962 |
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
|
963 |
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
|
964 /** |
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
|
965 * 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
|
966 * 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
|
967 * |
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
|
968 * @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
|
969 */ |
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
|
970 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
|
971 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
|
972 ((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
|
973 } |
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
|
974 |
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
|
975 |
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
|
976 /** |
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
|
977 * 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
|
978 * 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
|
979 * |
3270
4ac581062c40
Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3257
diff
changeset
|
980 * @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
|
981 */ |
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
|
982 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
|
983 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
|
984 ((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
|
985 } |
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
|
986 |
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
|
987 |
1932
17e18948fe5e
Fix legend and themeing with new multiaxis feature.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1931
diff
changeset
|
988 /** |
2206
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
989 * Do Points out. |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
990 */ |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
991 protected void doPoints( |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
992 Object o, |
2325
1fcaeced48f2
#485 Fixed broken renaming of chart themes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2300
diff
changeset
|
993 ArtifactAndFacet aandf, |
2206
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
994 Document theme, |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
995 boolean visible, |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
996 int axisIndex |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
997 ) { |
2325
1fcaeced48f2
#485 Fixed broken renaming of chart themes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2300
diff
changeset
|
998 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
|
999 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
|
1000 |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
1001 // 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
|
1002 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
|
1003 |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
1004 try { |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
1005 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
|
1006 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
|
1007 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
|
1008 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
|
1009 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
|
1010 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
|
1011 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
|
1012 if (!act) { |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
1013 continue; |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
1014 } |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
1015 //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
|
1016 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
|
1017 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
|
1018 } |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
1019 } |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
1020 catch(JSONException e){ |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
1021 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
|
1022 } |
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
|
1023 |
5864
f2e46a668fe6
River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
1024 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
|
1025 annotations.setTextAnnotations(xy); |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
1026 |
2574
3598690dc9e2
Fix flys/issue501 (manual points have two legend entries).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2422
diff
changeset
|
1027 // 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
|
1028 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
|
1029 addAxisSeries(series, axisIndex, visible); |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
1030 } |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
1031 |
e2124ca11adb
Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2193
diff
changeset
|
1032 |
2584
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1033 /** |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1034 * Create a hash from a legenditem. |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1035 * 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
|
1036 * @return hash for given legenditem to identify mergeables. |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1037 */ |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1038 public static String legendItemHash(LegendItem li) { |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1039 // 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
|
1040 // getFillPaint() |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1041 // getFillPaintTransformer() |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1042 // getLabel() |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1043 // getLine() |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1044 // getLinePaint() |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1045 // getLineStroke() |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1046 // getOutlinePaint() |
3076
5642a83420f2
FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3064
diff
changeset
|
1047 // getOutlineStroke() |
2584
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1048 // Shape getShape() |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1049 // String getToolTipText() |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1050 // String getURLText() |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1051 // boolean isLineVisible() |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1052 // boolean isShapeFilled() |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1053 // boolean isShapeOutlineVisible() |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1054 // boolean isShapeVisible() |
2711
fa8ae7dbcb72
More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2710
diff
changeset
|
1055 String hash = li.getLinePaint().toString(); |
fa8ae7dbcb72
More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2710
diff
changeset
|
1056 String label = li.getLabel(); |
fa8ae7dbcb72
More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2710
diff
changeset
|
1057 if (label.startsWith("W (") || label.startsWith("W(")) { |
fa8ae7dbcb72
More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2710
diff
changeset
|
1058 hash += "-W-"; |
2584
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1059 } |
2711
fa8ae7dbcb72
More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2710
diff
changeset
|
1060 else if (label.startsWith("Q(") || label.startsWith("Q (")) { |
fa8ae7dbcb72
More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2710
diff
changeset
|
1061 hash += "-Q-"; |
2584
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1062 } |
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1063 |
2711
fa8ae7dbcb72
More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2710
diff
changeset
|
1064 // WQ.java holds example of using regex Matcher/Pattern. |
2584
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1065 |
2711
fa8ae7dbcb72
More stable legend item aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2710
diff
changeset
|
1066 return hash; |
2584
5d5457a1bd5f
Stubby legend aggregation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2574
diff
changeset
|
1067 } |
4433
5b8919ef601d
Backed out changeset e8a4d2fd25cc
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4432
diff
changeset
|
1068 |
4445
0eca080fc162
Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4433
diff
changeset
|
1069 /** 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
|
1070 public boolean isInverted() { |
0eca080fc162
Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4433
diff
changeset
|
1071 return inverted; |
0eca080fc162
Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4433
diff
changeset
|
1072 } |
0eca080fc162
Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4433
diff
changeset
|
1073 |
0eca080fc162
Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4433
diff
changeset
|
1074 |
0eca080fc162
Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4433
diff
changeset
|
1075 /** 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
|
1076 public void setInverted(boolean inverted) { |
0eca080fc162
Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4433
diff
changeset
|
1077 this.inverted = inverted; |
0eca080fc162
Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4433
diff
changeset
|
1078 } |
0eca080fc162
Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4433
diff
changeset
|
1079 |
0eca080fc162
Move inverted from LongitudinalSectionGenerator to XYChartGenerator
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4433
diff
changeset
|
1080 |
369
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
1081 } |
2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
1082 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |