annotate flys-artifacts/src/main/java/de/intevation/flys/exports/TimeseriesChartGenerator.java @ 3623:119b8ba2b77f

Include logos in resources. flys-artifacts/trunk@5300 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 29 Aug 2012 23:46:21 +0000
parents 5e505060a9bf
children 347096b8cdf6
rev   line source
2233
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.exports;
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3242
diff changeset
3 import de.intevation.artifactdatabase.state.ArtifactAndFacet;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3242
diff changeset
4 import de.intevation.flys.jfree.Bounds;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3242
diff changeset
5 import de.intevation.flys.jfree.CollisionFreeXYTextAnnotation;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3242
diff changeset
6 import de.intevation.flys.jfree.DoubleBounds;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3242
diff changeset
7 import de.intevation.flys.jfree.FLYSAnnotation;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3242
diff changeset
8 import de.intevation.flys.jfree.StyledTimeSeries;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3242
diff changeset
9 import de.intevation.flys.jfree.TimeBounds;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3242
diff changeset
10
3139
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
11 import java.awt.Color;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
12 import java.awt.Font;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
13 import java.util.ArrayList;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
14 import java.util.Date;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
15 import java.util.HashMap;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
16 import java.util.List;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
17 import java.util.Map;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
18
3622
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
19 import javax.swing.ImageIcon;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
20
3139
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
21 import org.apache.log4j.Logger;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
22 import org.jfree.chart.ChartFactory;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
23 import org.jfree.chart.JFreeChart;
3622
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
24 import org.jfree.chart.annotations.XYAnnotation;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
25 import org.jfree.chart.annotations.XYImageAnnotation;
3139
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
26 import org.jfree.chart.annotations.XYTextAnnotation;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
27 import org.jfree.chart.axis.ValueAxis;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
28 import org.jfree.chart.plot.Marker;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
29 import org.jfree.chart.plot.XYPlot;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
30 import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
31 import org.jfree.data.Range;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
32 import org.jfree.data.general.Series;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
33 import org.jfree.data.time.Day;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
34 import org.jfree.data.time.TimeSeries;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
35 import org.jfree.data.time.TimeSeriesCollection;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
36 import org.jfree.data.xy.XYDataset;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
37 import org.jfree.ui.Layer;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
38 import org.json.JSONArray;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
39 import org.json.JSONException;
3242
1dca41dba135 Move annotation code to base class ChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3236
diff changeset
40 import org.w3c.dom.Document;
3139
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
41
2233
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 /**
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 */
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 public abstract class TimeseriesChartGenerator extends ChartGenerator {
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46
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
47
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
48 /**
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
49 * Inner class TimeseriesAxisDataset stores TimeSeriesCollection.
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
50 */
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
51 public class TimeseriesAxisDataset implements AxisDataset {
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
52
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
53 protected int axisSymbol;
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
54
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
55 protected List<TimeSeriesCollection> datasets;
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
56
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
57 protected Range range;
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
58
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
59 protected int plotAxisIndex;
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
60
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
61 public TimeseriesAxisDataset(int axisSymbol) {
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
62 this.axisSymbol = axisSymbol;
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
63 this.datasets = new ArrayList<TimeSeriesCollection>();
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
64 }
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
65
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
66
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
67 @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
68 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
69 if (!(dataset instanceof TimeSeriesCollection)) {
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
70 logger.warn("Skip non TimeSeriesCollection 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
71 return;
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
72 }
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
73
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
74 TimeSeriesCollection tsc = (TimeSeriesCollection) 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
75
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
76 datasets.add(tsc);
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
77 mergeRanges(tsc);
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
78 }
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
79
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
80
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
81 @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
82 public XYDataset[] getDatasets() {
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3242
diff changeset
83 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
84 }
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
85
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
86
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
87 @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
88 public boolean isEmpty() {
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
89 return datasets.isEmpty();
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
90 }
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
91
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
92
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
93 @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
94 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
95 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
96 }
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
97
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
98
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
99 @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
100 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
101 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
102 }
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
103
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
104
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
105 @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
106 public void setPlotAxisIndex(int plotAxisIndex) {
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
107 this.plotAxisIndex = plotAxisIndex;
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
108 }
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
109
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
110
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
111 @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
112 public int getPlotAxisIndex() {
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
113 return plotAxisIndex;
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
114 }
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
115
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
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
117 @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
118 public boolean isArea(XYDataset dataset) {
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 logger.warn("This AxisDataset doesn't support Areas yet!");
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 return false;
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
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
124 protected void mergeRanges(TimeSeriesCollection dataset) {
3236
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
125 logger.debug("Range before merging: " + range);
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
126 Range subRange = null;
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
127
3236
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
128 // Determine min/max of range axis.
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
129 for (int i = 0; i < dataset.getSeriesCount(); i++) {
3610
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3278
diff changeset
130 if (dataset.getSeries(i).getItemCount() == 0) {
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3278
diff changeset
131 continue;
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3278
diff changeset
132 }
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3278
diff changeset
133 double min = Double.MAX_VALUE;
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3278
diff changeset
134 double max = -Double.MAX_VALUE;
3236
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
135 TimeSeries series = dataset.getSeries(i);
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
136 for (int j = 0; j < series.getItemCount(); j++) {
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
137 double tmp = series.getValue(j).doubleValue();
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
138 min = tmp < min ? tmp : min;
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
139 max = tmp > max ? tmp : max;
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
140 }
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
141 if (subRange != null) {
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
142 subRange = new Range(
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
143 min < subRange.getLowerBound() ?
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
144 min : subRange.getLowerBound(),
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
145 max > subRange.getUpperBound() ?
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
146 max : subRange.getUpperBound());
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
147 }
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
148 else {
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
149 subRange = new Range(min, max);
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
150 }
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
151 }
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
152
3236
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
153 // Avoid merging NaNs, as they take min/max place forever.
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
154 if (subRange == null ||
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
155 Double.isNaN(subRange.getLowerBound()) ||
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
156 Double.isNaN(subRange.getUpperBound())) {
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
157 return;
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
158 }
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
159 if (range == null) {
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
160 range = subRange;
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
161 return;
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
162 }
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
163 range = Range.combine(range, subRange);
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
164 }
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
165
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
166 } // end of TimeseriesAxisDataset class
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
167
3130
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
168 protected List<Marker> domainMarker;
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
169
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
170 protected List<Marker> valueMarker;
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
171
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
172 protected Map<String, String> attributes;
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
173
3130
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
174 protected boolean domainZeroLineVisible;
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
175
2233
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
176 private static final Logger logger =
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
177 Logger.getLogger(TimeseriesChartGenerator.class);
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
178
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
179 public static final int AXIS_SPACE = 5;
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
180
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
181 protected Map<Integer, Bounds> xBounds;
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
182
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
183 protected Map<Integer, Bounds> yBounds;
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
184
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
185
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
186 /**
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
187 * The default constructor that initializes internal datastructures.
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
188 */
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
189 public TimeseriesChartGenerator() {
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
190 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
191
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
192 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: 2586
diff changeset
193 yBounds = new HashMap<Integer, Bounds>();
3130
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
194 domainMarker = new ArrayList<Marker>();
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
195 valueMarker = new ArrayList<Marker>();
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
196 attributes = new HashMap<String, String>();
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
197 }
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
198
2233
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
199
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
200
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201 @Override
2234
46ec09c7f578 Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2233
diff changeset
202 public JFreeChart generateChart() {
2233
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
203 logger.info("Generate Timeseries Chart.");
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
204
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
205 JFreeChart chart = ChartFactory.createTimeSeriesChart(
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
206 getChartTitle(),
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
207 getXAxisLabel(),
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
208 getYAxisLabel(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
209 null,
2554
ee5eca3871cb Apply legend specific settings (show/hide) in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2553
diff changeset
210 isLegendVisible(),
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
211 false,
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
212 false);
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
213
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
214 XYPlot plot = (XYPlot) chart.getPlot();
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
215
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
216 chart.setBackgroundPaint(Color.WHITE);
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
217 plot.setBackgroundPaint(Color.WHITE);
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
218
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
219 addSubtitles(chart);
2553
c7b0dfa6a52c Some refactoring in chart creation; timeseries charts are now able to apply plot specific settings as well.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2400
diff changeset
220 adjustPlot(plot);
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
221 addDatasets(plot);
2586
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
222 adjustAxes(plot);
3130
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
223 addDomainAxisMarker(plot);
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
224 addValueAxisMarker(plot);
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
225 adaptZoom(plot);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
226
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
227 applySeriesAttributes(plot);
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
228 addAnnotationsToRenderer(plot);
3622
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
229 addLogo(plot);
3185
f1e4b37dcb60 Enable legend item aggreation in time series charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3168
diff changeset
230 aggregateLegendEntries(plot);
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
231 return chart;
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
232 }
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
233
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
234
3622
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
235 /**
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
236 * Return left most data points x value (on first axis).
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
237 * Shortcut, especially to be overridden in (LS) charts where
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
238 * axis could be inverted.
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
239 */
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
240 protected double getLeftX() {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
241 return (Long)getXBounds(0).getLower();
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
242 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
243
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
244
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
245 /**
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
246 * Return right most data points x value (on first axis).
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
247 * Shortcut, especially to be overridden in (LS) charts where
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
248 * axis could be inverted.
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
249 */
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
250 protected double getRightX() {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
251 return (Long)getXBounds(0).getUpper();
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
252 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
253
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
254
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
255 /**
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
256 * Add a logo as background annotation to plot.
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
257 * Copy from XYChartGenerator.
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
258 */
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
259 protected void addLogo(XYPlot plot) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
260 String logo = showLogo();
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
261 if (logo == null) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
262 logger.debug("No logo to show chosen");
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
263 return;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
264 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
265
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
266 ImageIcon imageIcon = null;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
267 if (logo.equals("none")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
268 return;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
269 }
3623
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3622
diff changeset
270 /*
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3622
diff changeset
271 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: 3622
diff changeset
272 flys-artifacts:
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3622
diff changeset
273 XYChartGenerator.java
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3622
diff changeset
274 Timeseries*Generator.java and
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3622
diff changeset
275 in the flys-client projects Chart*Propert*Editor.java.
119b8ba2b77f Include logos in resources.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3622
diff changeset
276 */
3622
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
277 if (logo.equals("Intevation")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
278 imageIcon = new ImageIcon("/home/felix/Downloads/intevation_logo_120.png");
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
279 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
280 else { // TODO else if ...
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
281 imageIcon = new ImageIcon("/home/felix/Downloads/bfg_logo.gif");
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
282 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
283
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
284 double xPos = 0d, yPos = 0d;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
285
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
286 String placeh = logoHPlace();
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
287 String placev = logoVPlace();
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
288
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
289 if (placev == null || placev.equals("none")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
290 placev = "top";
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
291 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
292 if (placev.equals("top")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
293 yPos = (Double)getYBounds(0).getUpper();
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
294 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
295 else if (placev.equals("bottom")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
296 yPos = (Double)getYBounds(0).getLower();
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
297 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
298 else if (placev.equals("center")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
299 yPos = ((Double)getYBounds(0).getUpper() + (Double)getYBounds(0).getLower())/2d;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
300 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
301 else {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
302 logger.debug("Unknown place-v value: " + placev);
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
303 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
304
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
305 if (placeh == null || placeh.equals("none")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
306 placeh = "center";
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
307 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
308 if (placeh.equals("left")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
309 xPos = getLeftX();
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
310 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
311 else if (placeh.equals("right")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
312 xPos = getRightX();
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
313 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
314 else if (placeh.equals("center")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
315 xPos = ((Double)getXBounds(0).getUpper() + (Double)getXBounds(0).getLower())/2d;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
316 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
317 else {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
318 logger.debug("Unknown place-h value: " + placeh);
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
319 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
320
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
321 logger.debug("logo position: " + xPos + "/" + yPos);
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
322
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
323 org.jfree.ui.RectangleAnchor anchor
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
324 = org.jfree.ui.RectangleAnchor.TOP;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
325 if (placev.equals("top")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
326 if (placeh.equals("left")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
327 anchor = org.jfree.ui.RectangleAnchor.TOP_LEFT;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
328 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
329 else if (placeh.equals("right")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
330 anchor = org.jfree.ui.RectangleAnchor.TOP_RIGHT;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
331 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
332 else if (placeh.equals("center")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
333 anchor = org.jfree.ui.RectangleAnchor.TOP;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
334 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
335 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
336 else if (placev.equals("bottom")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
337 if (placeh.equals("left")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
338 anchor = org.jfree.ui.RectangleAnchor.BOTTOM_LEFT;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
339 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
340 else if (placeh.equals("right")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
341 anchor = org.jfree.ui.RectangleAnchor.BOTTOM_RIGHT;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
342 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
343 else if (placeh.equals("center")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
344 anchor = org.jfree.ui.RectangleAnchor.BOTTOM;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
345 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
346 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
347 else if (placev.equals("center")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
348 if (placeh.equals("left")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
349 anchor = org.jfree.ui.RectangleAnchor.LEFT;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
350 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
351 else if (placeh.equals("right")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
352 anchor = org.jfree.ui.RectangleAnchor.RIGHT;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
353 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
354 else if (placeh.equals("center")) {
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
355 anchor = org.jfree.ui.RectangleAnchor.CENTER;
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
356 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
357 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
358
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
359 XYAnnotation xyannotation =
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
360 new XYImageAnnotation(xPos, yPos, imageIcon.getImage(), anchor);
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
361 plot.getRenderer().addAnnotation(xyannotation, org.jfree.ui.Layer.BACKGROUND);
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
362 }
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
363
5e505060a9bf Enable logo rendering in timeseries charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3610
diff changeset
364
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
365 @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
366 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
367 return ((TimeSeriesCollection) 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
368 }
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
369
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
370
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
371 /**
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
372 * This method creates new instances of TimeseriesAxisDataset.
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
373 *
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
374 * @param idx The symbol for the new TimeseriesAxisDataset.
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
375 */
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
376 @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
377 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
378 logger.debug("Create a new AxisDataset 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
379 return new TimeseriesAxisDataset(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
380 }
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
381
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
382
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
383 @Override
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
384 protected void combineXBounds(Bounds bounds, int index) {
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
385 if (bounds != null) {
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
386 Bounds old = getXBounds(index);
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
387
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
388 if (old != null) {
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
389 bounds = bounds.combine(old);
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
390 }
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
391
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
392 setXBounds(index, bounds);
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
393 }
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
394 }
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: 2242
diff changeset
395
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
396
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
397 @Override
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
398 protected void combineYBounds(Bounds bounds, int index) {
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
399 if (bounds != null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
400 Bounds old = getYBounds(index);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
401
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
402 if (old != null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
403 bounds = bounds.combine(old);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
404 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
405
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
406 setYBounds(index, bounds);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
407 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
408 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
409
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
410
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
411 // TODO REPLACE THIS METHOD WITH getBoundsForAxis(index)
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
412 @Override
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
413 public Range[] getRangesForAxis(int index) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
414 // TODO
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
415 Bounds[] bounds = getBoundsForAxis(index);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
416
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
417 return new Range[] {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
418 new Range(
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
419 bounds[0].getLower().doubleValue(),
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
420 bounds[0].getUpper().doubleValue()),
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
421 new Range(
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
422 bounds[1].getLower().doubleValue(),
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
423 bounds[1].getUpper().doubleValue())
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
424 };
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
425 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
426
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
427
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: 2242
diff changeset
428 @Override
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
429 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: 2586
diff changeset
430 return xBounds.get(axis);
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
431 }
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: 2242
diff changeset
432
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
433
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
434 @Override
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
435 protected void setXBounds(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: 2586
diff changeset
436 xBounds.put(axis, bounds);
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
437 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
438
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
439
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
440 @Override
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
441 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: 2586
diff changeset
442 return yBounds.get(axis);
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
443 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
444
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
445
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
446 @Override
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
447 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: 2586
diff changeset
448 if (bounds != null) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
449 yBounds.put(axis, bounds);
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
450 }
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
451 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
452
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
453
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
454 public Bounds[] getBoundsForAxis(int index) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
455 logger.debug("Return x and y bounds for axis at: " + index);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
456
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
457 Bounds rx = getXBounds(Integer.valueOf(index));
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
458 Bounds ry = getYBounds(Integer.valueOf(index));
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: 2242
diff changeset
459
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
460 if (rx == null) {
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
461 logger.warn("Range for x axis not set." +
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
462 " Using default values: 0 - 1.");
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
463 rx = new TimeBounds(0l, 1l);
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: 2242
diff changeset
464 }
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
465
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
466 if (ry == null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
467 logger.warn("Range for y axis not set." +
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
468 " Using default values: 0 - 1.");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
469 ry = new DoubleBounds(0l, 1l);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
470 }
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: 2242
diff changeset
471
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
472 logger.debug("X Bounds at index " + index + " is: " + rx);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
473 logger.debug("Y Bounds at index " + index + " is: " + ry);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
474
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
475 return new Bounds[] {rx, ry};
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
476 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
477
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
478
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
479 public Bounds getDomainAxisRange() {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
480 String[] ranges = getDomainAxisRangeFromRequest();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
481
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
482 if (ranges == null || ranges.length < 2) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
483 logger.debug("No zoom range for domain axis specified.");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
484 return null;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
485 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
486
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
487 if (ranges[0] == null || ranges[1] == null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
488 logger.warn("Invalid ranges for domain axis specified!");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
489 return null;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
490 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
491
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
492 try {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
493 double lower = Double.parseDouble(ranges[0]);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
494 double upper = Double.parseDouble(ranges[1]);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
495
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
496 return new DoubleBounds(lower, upper);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
497 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
498 catch (NumberFormatException nfe) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
499 logger.warn("Invalid ranges for domain axis specified: " + nfe);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
500 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
501
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
502 return null;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
503 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
504
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
505
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
506 public Bounds getValueAxisRange() {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
507 String[] ranges = getValueAxisRangeFromRequest();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
508
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
509 if (ranges == null || ranges.length < 2) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
510 logger.debug("No zoom range for domain axis specified.");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
511 return null;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
512 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
513
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
514 if (ranges[0] == null || ranges[1] == null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
515 logger.warn("Invalid ranges for domain axis specified!");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
516 return null;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
517 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
518
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
519 try {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
520 double lower = Double.parseDouble(ranges[0]);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
521 double upper = Double.parseDouble(ranges[1]);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
522
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
523 return new DoubleBounds(lower, upper);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
524 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
525 catch (NumberFormatException nfe) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
526 logger.warn("Invalid ranges for domain axis specified: " + nfe);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
527 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
528
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
529 return null;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
530 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
531
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
532
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
533 protected void adaptZoom(XYPlot plot) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
534 logger.debug("Adapt zoom of Timeseries chart.");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
535
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
536 zoomX(plot, plot.getDomainAxis(), getXBounds(0), getDomainAxisRange());
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
537
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
538 Bounds valueAxisBounds = getValueAxisRange();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
539
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
540 for (int j = 0, n = plot.getRangeAxisCount(); j < n; j++) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
541 zoomY(
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
542 plot,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
543 plot.getRangeAxis(j),
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
544 getYBounds(j),
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
545 valueAxisBounds);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
546 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
547 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
548
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
549
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
550 protected void zoomX(
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
551 XYPlot plot,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
552 ValueAxis axis,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
553 Bounds total,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
554 Bounds user
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
555 ) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
556 if (logger.isDebugEnabled()) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
557 logger.debug("== Zoom X axis ==");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
558 logger.debug(" Total axis range : " + total);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
559 logger.debug(" User defined range: " + user);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
560 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
561
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
562 if (user != null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
563 long min = total.getLower().longValue();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
564 long max = total.getUpper().longValue();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
565 long diff = max > min ? max - min : min - max;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
566
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3242
diff changeset
567 long newMin = Math.round(min + user.getLower().doubleValue() * diff);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3242
diff changeset
568 long newMax = Math.round(min + user.getUpper().doubleValue() * diff);
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
569
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
570 TimeBounds newBounds = new TimeBounds(newMin, newMax);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
571
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
572 logger.debug(" Zoom axis to: " + newBounds);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
573
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
574 newBounds.applyBounds(axis, AXIS_SPACE);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
575 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
576 else {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
577 logger.debug("No user specified zoom values found!");
3140
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
578 if (total != null && axis != null) {
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
579 total.applyBounds(axis, AXIS_SPACE);
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
580 }
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
581 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
582 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
583
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
584
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
585 protected void zoomY(
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
586 XYPlot plot,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
587 ValueAxis axis,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
588 Bounds total,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
589 Bounds user
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
590 ) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
591 if (logger.isDebugEnabled()) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
592 logger.debug("== Zoom Y axis ==");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
593 logger.debug(" Total axis range : " + total);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
594 logger.debug(" User defined range: " + user);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
595 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
596
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
597 if (user != null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
598 double min = total.getLower().doubleValue();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
599 double max = total.getUpper().doubleValue();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
600 double diff = max > min ? max - min : min - max;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
601
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
602 double newMin = min + user.getLower().doubleValue() * diff;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
603 double newMax = min + user.getUpper().doubleValue() * diff;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
604
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
605 DoubleBounds newBounds = new DoubleBounds(newMin, newMax);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
606
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
607 logger.debug(" Zoom axis to: " + newBounds);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
608
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
609 newBounds.applyBounds(axis, AXIS_SPACE);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
610 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
611 else {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
612 logger.debug("No user specified zoom values found!");
3140
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
613 if (total != null && axis != null) {
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
614 total.applyBounds(axis, AXIS_SPACE);
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
615 }
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
616 }
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: 2242
diff changeset
617 }
2586
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
618
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
619
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
620 /**
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
621 * Adjusts the axes of a plot. This method sets the <i>labelFont</i> of the
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
622 * X axis.
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
623 *
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
624 * @param plot The XYPlot of the chart.
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
625 */
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
626 protected void adjustAxes(XYPlot plot) {
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
627 ValueAxis xaxis = plot.getDomainAxis();
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
628
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
629 ChartSettings chartSettings = getChartSettings();
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
630 if (chartSettings == null) {
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
631 return;
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
632 }
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
633
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
634 Font labelFont = new Font(
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
635 DEFAULT_FONT_NAME,
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
636 Font.BOLD,
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
637 getXAxisLabelFontSize());
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
638
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
639 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
640 xaxis.setTickLabelFont(labelFont);
2586
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
641 }
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
642
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
643
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
644 /**
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
645 * Do Points out.
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
646 */
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
647 protected void doPoints(
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
648 Object o,
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
649 ArtifactAndFacet aandf,
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
650 Document theme,
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
651 boolean visible,
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
652 int axisIndex
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
653 ) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
654 String seriesName = aandf.getFacetDescription();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
655 TimeSeries series = new StyledTimeSeries(seriesName, theme);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
656
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
657 // Add text annotations for single points.
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
658 List<XYTextAnnotation> xy = new ArrayList<XYTextAnnotation>();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
659 HashMap<Day, String> names = new HashMap<Day, String>();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
660
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
661 try {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
662 JSONArray points = new JSONArray((String) o);
3087
4a76da133144 Removed repeated x.size() calls from for loops.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2636
diff changeset
663 for (int i = 0, P = points.length(); i < P; i++) {
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
664 JSONArray array = points.getJSONArray(i);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
665 double x = array.getDouble(0);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
666 double y = array.getDouble(1);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
667 String name = array.getString(2);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
668 boolean act = array.getBoolean(3);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
669 if (!act) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
670 continue;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
671 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
672 long l = (new Double(x)).longValue();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
673 Date date = new Date(l);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
674 Day day = new Day(date);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
675 series.add(day, y, false);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
676 names.put(day, name);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
677 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
678 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
679 catch(JSONException e){
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
680 logger.error("Could not decode json.");
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
681 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
682
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
683 TimeSeriesCollection tsc = new TimeSeriesCollection();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
684 tsc.addSeries(series);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
685 // Add Annotations.
3087
4a76da133144 Removed repeated x.size() calls from for loops.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2636
diff changeset
686 for (int i = 0, S = series.getItemCount(); i < S; i++) {
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
687 double x = tsc.getXValue(0, i);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
688 double y = tsc.getYValue(0, i);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
689 xy.add(new CollisionFreeXYTextAnnotation(
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
690 names.get(series.getTimePeriod(i)), x, y));
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
691 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
692 FLYSAnnotation annotations =
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
693 new FLYSAnnotation(null, null, null, theme);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
694 annotations.setTextAnnotations(xy);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
695
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
696 // Do not generate second legend entry. (null was passed for the aand before).
2634
fa015cf5c0af Fixed duplicated legend entry for manual points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2633
diff changeset
697 doAnnotations(annotations, null, theme, visible);
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
698
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
699 addAxisDataset(tsc, axisIndex, visible);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
700 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
701
3130
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
702 public void addDomainAxisMarker(XYPlot plot) {
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
703 logger.debug("domainmarkers: " + domainMarker.size());
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
704 for (Marker marker: domainMarker) {
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
705 logger.debug("adding domain marker");
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
706 plot.addDomainMarker(marker, Layer.BACKGROUND);
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
707 }
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
708 domainMarker.clear();
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
709 }
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
710
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
711 public void addValueAxisMarker(XYPlot plot) {
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
712 for (Marker marker: valueMarker) {
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
713 logger.debug("adding value marker..");
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
714 plot.addRangeMarker(marker, Layer.BACKGROUND);
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
715 }
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
716 valueMarker.clear();
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
717 }
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
718
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
719 public void addAttribute(String seriesKey, String name) {
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
720 attributes.put(seriesKey, name);
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
721 }
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
722
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
723 protected void applySeriesAttributes(XYPlot plot) {
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
724 int count = plot.getDatasetCount();
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
725 for (int i = 0; i < count; i++) {
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
726 XYDataset data = plot.getDataset(i);
3140
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
727 if (data == null) {
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
728 continue;
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
729 }
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
730 int seriesCount = data.getSeriesCount();
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
731 for (int j = 0; j < seriesCount; j++) {
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
732 StyledTimeSeries series =
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
733 (StyledTimeSeries)getSeriesOf(data, j);
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
734 String key = series.getKey().toString();
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
735 if (attributes.containsKey(key)) {
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
736 if (attributes.get(key).equals("interpolate")) {
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
737 XYLineAndShapeRenderer renderer =
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
738 series.getStyle().getRenderer();
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
739 renderer.setSeriesPaint(
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
740 j,
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
741 renderer.getSeriesFillPaint(j));
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
742 renderer.setSeriesShapesFilled(j, false);
3168
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
743 }
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
744 }
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
745 if (attributes.containsKey(key)) {
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
746 if(attributes.get(key).equals("outline")) {
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
747 XYLineAndShapeRenderer renderer =
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
748 series.getStyle().getRenderer();
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
749 renderer.setSeriesPaint(
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
750 j,
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
751 renderer.getSeriesFillPaint(j));
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
752 renderer.setDrawOutlines(true);
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
753 }
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
754 }
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
755 }
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
756 }
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
757 }
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
758
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
759 /** Two Ranges that span a rectangular area. */
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
760 public static class Area {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
761 protected Range xRange;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
762 protected Range yRange;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
763
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
764 public Area(Range rangeX, Range rangeY) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
765 this.xRange = rangeX;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
766 this.yRange = rangeY;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
767 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
768
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
769 public Area(ValueAxis axisX, ValueAxis axisY) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
770 this.xRange = axisX.getRange();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
771 this.yRange = axisY.getRange();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
772 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
773
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
774 public double ofLeft(double percent) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
775 return xRange.getLowerBound()
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
776 + xRange.getLength() * percent;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
777 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
778
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
779 public double ofRight(double percent) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
780 return xRange.getUpperBound()
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
781 - xRange.getLength() * percent;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
782 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
783
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
784 public double ofGround(double percent) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
785 return yRange.getLowerBound()
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
786 + yRange.getLength() * percent;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
787 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
788
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
789 public double atTop() {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
790 return yRange.getUpperBound();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
791 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
792
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
793 public double atGround() {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
794 return yRange.getLowerBound();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
795 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
796
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
797 public double atRight() {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
798 return xRange.getUpperBound();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
799 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
800
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
801 public double atLeft() {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
802 return xRange.getLowerBound();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
803 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
804
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
805 public double above(double percent, double base) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
806 return base + yRange.getLength() * percent;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
807 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
808 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
809
2233
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
810 }
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
811 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org