annotate artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java @ 8723:686d8876edf9

(issue1754) Fix Radius calculation for filtered (smoothed) facets To know the acutal extend of the Domain axis shown we need to know all data in the diagram as the acutal extend is the data point needed to calculate a Radius confusingly configured in zoom-scales we have to add all data first and then add the real filtered facets in a postprocessing step.
author Andre Heinecke <andre.heinecke@intevation.de>
date Wed, 29 Apr 2015 11:56:04 +0200
parents 0d3d018fc632
children bbf6cf555e89
rev   line source
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2013 by Bundesanstalt für Gewässerkunde
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
3 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
7 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
8
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.exports;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
10
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
11 import java.awt.Color;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
12 import java.awt.Font;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
13
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
14 import java.text.NumberFormat;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
15
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
16 import java.util.ArrayList;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
17 import java.util.HashMap;
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
18 import java.util.HashSet;
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
19 import java.util.LinkedHashSet;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
20 import java.util.List;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
21 import java.util.Map;
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
22 import java.util.Set;
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
23
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
24 import java.util.regex.Pattern;
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
25 import java.util.regex.Matcher;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
26
7123
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
27 import java.io.OutputStream;
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
28
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
29 import javax.swing.ImageIcon;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
30
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
31 import org.apache.log4j.Logger;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
32
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
33 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
34 import org.dive4elements.artifactdatabase.state.Facet;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
35
7123
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
36 import org.dive4elements.artifacts.CallContext;
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
37
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
38 import org.dive4elements.river.artifacts.D4EArtifact;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
39
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
40 import org.dive4elements.river.exports.process.Processor;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
41
8341
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
42 import org.dive4elements.river.jfree.RiverAnnotation;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
43 import org.dive4elements.river.jfree.AnnotationHelper;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
44 import org.dive4elements.river.jfree.AxisDataset;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
45 import org.dive4elements.river.jfree.Bounds;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
46 import org.dive4elements.river.jfree.DoubleBounds;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
47 import org.dive4elements.river.jfree.StyledAreaSeriesCollection;
7892
e844be34a606 Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
48 import org.dive4elements.river.jfree.XYMetaSeriesCollection;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
49
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
50 import org.dive4elements.river.themes.ThemeDocument;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
51
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
52 import org.jfree.chart.ChartFactory;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
53 import org.jfree.chart.JFreeChart;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
54 import org.jfree.chart.LegendItem;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
55
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
56 import org.jfree.chart.annotations.XYAnnotation;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
57 import org.jfree.chart.annotations.XYImageAnnotation;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
58
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
59 import org.jfree.chart.axis.LogarithmicAxis;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
60 import org.jfree.chart.axis.NumberAxis;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
61 import org.jfree.chart.axis.ValueAxis;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
62
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
63 import org.jfree.chart.plot.Marker;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
64 import org.jfree.chart.plot.PlotOrientation;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
65 import org.jfree.chart.plot.XYPlot;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
66
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
67 import org.jfree.data.Range;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
68
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
69 import org.jfree.data.general.Series;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
70
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
71 import org.jfree.data.xy.XYDataset;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
72 import org.jfree.data.xy.XYSeries;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
73 import org.jfree.data.xy.XYSeriesCollection;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
74
7123
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
75 import org.w3c.dom.Document;
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
76
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
77 import org.apache.commons.lang.StringUtils;
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
78
7051
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
79
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
80 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
81 * The main diagram creation class.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
82 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
83 * This class is the glue between output processors and facets.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
84 * The generator creates one diagram and calls the appropiate
7248
1dff8e71c4d6 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7246
diff changeset
85 * processors for the state and
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
86 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
87 * With respect to datasets, ranges and axis, there are following requirements:
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
88 * <ul>
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
89 * <li> First in, first drawn: "Early" datasets should be of lower Z-Oder
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
90 * than later ones (only works per-axis). </li>
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
91 * <li> Visible axis should initially show the range of all datasets that
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
92 * show data for this axis (even invisible ones). Motivation: Once
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
93 * a dataset (theme) has been activated, it should be on screen. </li>
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
94 * <li> There should always be a Y-Axis on the "left". </li>
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
95 * </ul>
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
96 */
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
97 public class DiagramGenerator extends ChartGenerator2 {
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
98
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
99 public static final int AXIS_SPACE = 5;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
100
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
101 /** The log that is used in this generator. */
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
102 private static Logger log = Logger.getLogger(DiagramGenerator.class);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
103
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
104 protected List<Marker> domainMarkers = new ArrayList<Marker>();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
105
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
106 protected List<Marker> valueMarkers = new ArrayList<Marker>();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
107
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
108 /** The max X range to include all X values of all series for each axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
109 protected Map<Integer, Bounds> xBounds;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
110
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
111 /** The max Y range to include all Y values of all series for each axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
112 protected Map<Integer, Bounds> yBounds;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
113
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
114 /** Whether or not the plot is inverted (left-right). */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
115 private boolean inverted;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
116
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
117 private static final Pattern UNIT_PATTERN =
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
118 Pattern.compile("\\s*\\[[\\w\\s\\+\\-]*\\]\\s*");
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
119
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
120 protected Map<Integer, LinkedHashSet<String>> axesLabels;
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
121
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
122 protected DiagramAttributes.Instance diagramAttributes;
7051
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
123
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
124 protected HashSet<String> subTitleParts;
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
125
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
126 public DiagramGenerator() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
127 super();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
128
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
129 axesLabels = new HashMap<Integer, LinkedHashSet<String>>();
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
130 xBounds = new HashMap<Integer, Bounds>();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
131 yBounds = new HashMap<Integer, Bounds>();
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
132 subTitleParts = new LinkedHashSet<String>();
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
133 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
134
7051
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
135 @Override
7087
ada424214b02 Use Object instead of DOM Element as argument for setup of out generators. First step to remove dependency to XML DOM when using configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7086
diff changeset
136 public void setup(Object config) {
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
137
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
138 if (!(config instanceof DiagramAttributes)) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
139 log.error("invalid config type");
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
140 return;
7086
42e243c640a0 Little workaround to make diagram attribute parsing more thread safe. This is not the right solution.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7084
diff changeset
141 }
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
142 DiagramAttributes da = (DiagramAttributes)config;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
143 diagramAttributes = da.new Instance();
7051
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
144 }
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
145
7123
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
146 @Override
7143
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
147 public void init(
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
148 String outName,
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
149 Document request,
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
150 OutputStream out,
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
151 CallContext context
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
152 ) {
7123
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
153 super.init(outName, request, out, context);
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
154 }
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
155
7143
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
156 private void setInvertedFromConfig() {
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
157 DiagramAttributes.DomainAxisAttributes dx =
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
158 diagramAttributes.getDomainAxis();
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
159
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
160 if (dx != null) {
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
161 inverted = (Boolean)dx.isInverted()
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
162 .evaluate((D4EArtifact)getMaster(), context);
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
163 log.debug("setInvertedFromConfig: " + inverted);
7167
2fd238b681a9 Add debug output triggered by debugging the last commit
Andre Heinecke <aheinecke@intevation.de>
parents: 7143
diff changeset
164 } else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
165 log.debug("setInvertedFromConfig no domain axis found?");
7143
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
166 }
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
167 }
7123
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
168
8723
686d8876edf9 (issue1754) Fix Radius calculation for filtered (smoothed) facets
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8351
diff changeset
169 protected void postProcess() {
686d8876edf9 (issue1754) Fix Radius calculation for filtered (smoothed) facets
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8351
diff changeset
170 return;
686d8876edf9 (issue1754) Fix Radius calculation for filtered (smoothed) facets
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8351
diff changeset
171 }
686d8876edf9 (issue1754) Fix Radius calculation for filtered (smoothed) facets
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8351
diff changeset
172
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
173 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
174 * Generate the chart anew (including localized axis and all).
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
175 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
176 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
177 public JFreeChart generateChart() {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
178 log.debug("DiagramGenerator.generateChart");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
179
8723
686d8876edf9 (issue1754) Fix Radius calculation for filtered (smoothed) facets
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8351
diff changeset
180 postProcess();
686d8876edf9 (issue1754) Fix Radius calculation for filtered (smoothed) facets
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8351
diff changeset
181
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
182 JFreeChart chart = ChartFactory.createXYLineChart(
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
183 getChartTitle(),
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
184 "",
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
185 "",
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
186 null,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
187 PlotOrientation.VERTICAL,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
188 isLegendVisible(),
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
189 false,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
190 false);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
191
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
192 XYPlot plot = (XYPlot) chart.getPlot();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
193 ValueAxis axis = createXAxis(getXAxisLabel());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
194 plot.setDomainAxis(axis);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
195
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
196 chart.setBackgroundPaint(Color.WHITE);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
197 plot.setBackgroundPaint(Color.WHITE);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
198 addSubtitles(chart);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
199 adjustPlot(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
200
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
201 //debugAxis(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
202
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
203 addDatasets(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
204
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
205 //debugDatasets(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
206
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
207 addMarkers(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
208
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
209 recoverEmptyPlot(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
210 preparePointRanges(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
211
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
212 //debugAxis(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
213
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
214 localizeAxes(plot);
7246
7ea428c4aca0 Check for inverted setting later.
Andre Heinecke <aheinecke@intevation.de>
parents: 7241
diff changeset
215
7ea428c4aca0 Check for inverted setting later.
Andre Heinecke <aheinecke@intevation.de>
parents: 7241
diff changeset
216 setInvertedFromConfig();
7ea428c4aca0 Check for inverted setting later.
Andre Heinecke <aheinecke@intevation.de>
parents: 7241
diff changeset
217
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
218 adjustAxes(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
219 if (!(axis instanceof LogarithmicAxis)) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
220 // XXX:
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
221 // The auto zoom without a range tries
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
222 // to include 0 in a logarithmic axis
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
223 // which triggers a bug in jfreechart that causes
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
224 // the values to be drawn carthesian
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
225 autoZoom(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
226 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
227
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
228 //debugAxis(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
229
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
230 // These have to go after the autozoom.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
231 AnnotationHelper.addAnnotationsToRenderer(annotations, plot,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
232 getChartSettings(), datasets);
8341
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
233 AnnotationHelper.addYAnnotationsToRenderer(yAnnotations, plot,
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
234 getChartSettings(), datasets);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
235
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
236 // Add a logo (maybe).
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
237 addLogo(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
238
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
239 aggregateLegendEntries(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
240
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
241 return chart;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
242 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
243
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
244 public String getOutName() {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
245 return outName;
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
246 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
247
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
248 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
249 * Return left most data points x value (on first axis).
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
250 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
251 protected double getLeftX() {
7106
ed8623b989f3 Minor cleanup / doc
Andre Heinecke <aheinecke@intevation.de>
parents: 7104
diff changeset
252 if (inverted) {
7104
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
253 return (Double)getXBounds(0).getUpper();
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
254 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
255 return (Double)getXBounds(0).getLower();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
256 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
257
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
258
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
259 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
260 * Return right most data points x value (on first axis).
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
261 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
262 protected double getRightX() {
7106
ed8623b989f3 Minor cleanup / doc
Andre Heinecke <aheinecke@intevation.de>
parents: 7104
diff changeset
263 if (inverted) {
7104
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
264 return (Double)getXBounds(0).getLower();
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
265 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
266 return (Double)getXBounds(0).getUpper();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
267 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
268
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
269
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
270 /** Add a logo as background annotation to plot. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
271 protected void addLogo(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
272 String logo = showLogo();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
273 if (logo == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
274 log.debug("No logo to show chosen");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
275 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
276 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
277
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
278 ImageIcon imageIcon = null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
279 if (logo.equals("none")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
280 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
281 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
282 /*
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
283 If you want to add images, remember to change code in these places:
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
284 flys-artifacts:
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
285 DiagramGenerator.java
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
286 Timeseries*Generator.java and
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
287 in the flys-client projects Chart*Propert*Editor.java.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
288 Also, these images have to be put in
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
289 flys-artifacts/src/main/resources/images/
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
290 flys-client/src/main/webapp/images/
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
291 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
292 java.net.URL imageURL;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
293 if (logo.equals("Intevation")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
294 imageURL = DiagramGenerator.class.getResource("/images/intevation.png");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
295 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
296 else { // TODO else if ...
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
297 imageURL = DiagramGenerator.class.getResource("/images/bfg_logo.gif");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
298 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
299 imageIcon = new ImageIcon(imageURL);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
300
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
301
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
302 double xPos = 0d, yPos = 0d;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
303
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
304 String placeh = logoHPlace();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
305 String placev = logoVPlace();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
306
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
307 if (placev == null || placev.equals("none")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
308 placev = "top";
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
309 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
310 if (placev.equals("top")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
311 yPos = (Double)getYBounds(0).getUpper();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
312 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
313 else if (placev.equals("bottom")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
314 yPos = (Double)getYBounds(0).getLower();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
315 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
316 else if (placev.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
317 yPos = ((Double)getYBounds(0).getUpper() + (Double)getYBounds(0).getLower())/2d;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
318 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
319 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
320 log.debug("Unknown place-v value: " + placev);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
321 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
322
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
323 if (placeh == null || placeh.equals("none")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
324 placeh = "center";
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
325 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
326 if (placeh.equals("left")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
327 xPos = getLeftX();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
328 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
329 else if (placeh.equals("right")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
330 xPos = getRightX();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
331 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
332 else if (placeh.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
333 xPos = ((Double)getXBounds(0).getUpper() + (Double)getXBounds(0).getLower())/2d;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
334 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
335 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
336 log.debug("Unknown place-h value: " + placeh);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
337 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
338
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
339 log.debug("logo position: " + xPos + "/" + yPos);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
340
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
341 org.jfree.ui.RectangleAnchor anchor
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
342 = org.jfree.ui.RectangleAnchor.TOP;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
343 if (placev.equals("top")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
344 if (placeh.equals("left")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
345 anchor = org.jfree.ui.RectangleAnchor.TOP_LEFT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
346 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
347 else if (placeh.equals("right")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
348 anchor = org.jfree.ui.RectangleAnchor.TOP_RIGHT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
349 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
350 else if (placeh.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
351 anchor = org.jfree.ui.RectangleAnchor.TOP;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
352 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
353 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
354 else if (placev.equals("bottom")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
355 if (placeh.equals("left")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
356 anchor = org.jfree.ui.RectangleAnchor.BOTTOM_LEFT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
357 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
358 else if (placeh.equals("right")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
359 anchor = org.jfree.ui.RectangleAnchor.BOTTOM_RIGHT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
360 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
361 else if (placeh.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
362 anchor = org.jfree.ui.RectangleAnchor.BOTTOM;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
363 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
364 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
365 else if (placev.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
366 if (placeh.equals("left")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
367 anchor = org.jfree.ui.RectangleAnchor.LEFT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
368 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
369 else if (placeh.equals("right")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
370 anchor = org.jfree.ui.RectangleAnchor.RIGHT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
371 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
372 else if (placeh.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
373 anchor = org.jfree.ui.RectangleAnchor.CENTER;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
374 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
375 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
376
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
377 XYAnnotation xyannotation =
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
378 new XYImageAnnotation(xPos, yPos, imageIcon.getImage(), anchor);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
379 plot.getRenderer().addAnnotation(xyannotation, org.jfree.ui.Layer.BACKGROUND);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
380 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
381
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
382
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
383 protected NumberAxis createXAxis(String label) {
7241
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
384 boolean logarithmic = (Boolean)diagramAttributes.getDomainAxis().
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
385 isLog().evaluate((D4EArtifact)getMaster(), context);
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
386
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
387 if (logarithmic) {
8288
2f7f9ced46a5 Essentially backout rev 8ad0b7bc3e73 as this makes some SQ-relation curves appear buckled.
"Tom Gottfried <tom@intevation.de>"
parents: 8202
diff changeset
388 return new LogarithmicAxis(label);
7241
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
389 }
8147
8ad0b7bc3e73 Make Logarithmic axis immun against negative values (not throwing Exceptions in that case).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7981
diff changeset
390 return new NumberAxis(label);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
391 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
392
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
393
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
394 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
395 protected Series getSeriesOf(XYDataset dataset, int idx) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
396 return ((XYSeriesCollection) dataset).getSeries(idx);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
397 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
398
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
399
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
400 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
401 protected AxisDataset createAxisDataset(int idx) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
402 log.debug("Create new AxisDataset for index: " + idx);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
403 return new AxisDataset(idx);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
404 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
405
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
406
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
407 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
408 * Put debug output about datasets.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
409 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
410 public void debugDatasets(XYPlot plot) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
411 log.debug("Number of datasets: " + plot.getDatasetCount());
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
412 for (int i = 0, P = plot.getDatasetCount(); i < P; i++) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
413 if (plot.getDataset(i) == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
414 log.debug("Dataset #" + i + " is null");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
415 continue;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
416 }
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
417 log.debug("Dataset #" + i + ":" + plot.getDataset(i));
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
418 XYSeriesCollection series = (XYSeriesCollection) plot.getDataset(i);
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
419 log.debug("X-Extend of Dataset: " + series.getSeries(0).getMinX()
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
420 + " " + series.getSeries(0).getMaxX());
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
421 log.debug("Y-Extend of Dataset: " + series.getSeries(0).getMinY()
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
422 + " " + series.getSeries(0).getMaxY());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
423 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
424 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
425
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
426
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
427 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
428 * Put debug output about axes.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
429 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
430 public void debugAxis(XYPlot plot) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
431 log.debug("...............");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
432 for (int i = 0, P = plot.getRangeAxisCount(); i < P; i++) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
433 if (plot.getRangeAxis(i) == null)
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
434 log.debug("Range-Axis #" + i + " == null");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
435 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
436 log.debug("Range-Axis " + i + " != null [" +
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
437 plot.getRangeAxis(i).getRange().getLowerBound() +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
438 " " + plot.getRangeAxis(i).getRange().getUpperBound() +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
439 "]");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
440 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
441 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
442 for (int i = 0, P = plot.getDomainAxisCount(); i < P; i++) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
443 if (plot.getDomainAxis(i) == null)
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
444 log.debug("Domain-Axis #" + i + " == null");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
445 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
446 log.debug("Domain-Axis " + i + " != null [" +
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
447 plot.getDomainAxis(i).getRange().getLowerBound() +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
448 " " + plot.getDomainAxis(i).getRange().getUpperBound() +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
449 "]");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
450 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
451 }
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
452 log.debug("...............");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
453 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
454
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
455 /**
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
456 * Registers an area to be drawn.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
457 * @param area Area to be drawn.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
458 * @param axisName Name of the axis.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
459 * @param visible Whether or not to be visible (important for range calculations).
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
460 */
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
461 public void addAreaSeries(StyledAreaSeriesCollection area, String axisName, boolean visible) {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
462 addAreaSeries(area, diagramAttributes.getAxisIndex(axisName), visible);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
463 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
464
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
465 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
466 * Registers an area to be drawn.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
467 * @param area Area to be drawn.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
468 * @param index 'axis index'
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
469 * @param visible Whether or not to be visible (important for range calculations).
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
470 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
471 public void addAreaSeries(StyledAreaSeriesCollection area, int index, boolean visible) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
472 if (area == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
473 log.warn("Cannot yet render above/under curve.");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
474 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
475 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
476
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
477 AxisDataset axisDataset = (AxisDataset) getAxisDataset(index);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
478
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
479 if (visible) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
480 axisDataset.addArea(area);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
481 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
482 else {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
483 /* No range merging, for areas extending to infinity this
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
484 * causes problems. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
485 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
486 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
487
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
488 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
489 * Add given series if visible, if not visible adjust ranges (such that
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
490 * all points in data would be plotted once visible).
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
491 * @param series the data series to include in plot.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
492 * @param index index of the axis.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
493 * @param visible whether or not the data should be plotted.
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
494 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
495 public void addAxisSeries(XYSeries series, int index, boolean visible) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
496 if (series == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
497 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
498 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
499
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
500 log.debug("Y Range of XYSeries: " +
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
501 series.getMinY() + " | " + series.getMaxY());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
502
7892
e844be34a606 Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
503 addAxisDataset(new XYMetaSeriesCollection(series), index, visible);
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
504 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
505
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
506 /**
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
507 * Add given series if visible, if not visible adjust ranges (such that
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
508 * all points in data would be plotted once visible).
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
509 * @param series the data series to include in plot.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
510 * @param axisName name of the axis.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
511 * @param visible whether or not the data should be plotted.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
512 */
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
513 public void addAxisSeries(XYSeries series, String axisName, boolean visible) {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
514 addAxisSeries(series, diagramAttributes.getAxisIndex(axisName), visible);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
515 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
516
7124
49ceab5f2263 Configure Longitudinal section diagram to use the new way.
Andre Heinecke <aheinecke@intevation.de>
parents: 7123
diff changeset
517 public void addAxisDataset(XYDataset dataset, String axisName, boolean visible) {
49ceab5f2263 Configure Longitudinal section diagram to use the new way.
Andre Heinecke <aheinecke@intevation.de>
parents: 7123
diff changeset
518 addAxisDataset(dataset, diagramAttributes.getAxisIndex(axisName), visible);
49ceab5f2263 Configure Longitudinal section diagram to use the new way.
Andre Heinecke <aheinecke@intevation.de>
parents: 7123
diff changeset
519 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
520
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
521 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
522 * Add the given vertical marker to the chart.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
523 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
524 public void addDomainMarker(Marker marker) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
525 addDomainMarker(marker, true);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
526 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
527
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
528
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
529 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
530 * Add the given vertical marker to the chart.<b>Note:</b> the marker is
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
531 * added to the chart only if it is not null and if <i>visible</i> is true.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
532 * @param marker The marker that should be added to the chart.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
533 * @param visible The visibility of the marker.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
534 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
535 public void addDomainMarker(Marker marker, boolean visible) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
536 if (visible && marker != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
537 domainMarkers.add(marker);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
538 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
539 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
540
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
541
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
542 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
543 * Add the given vertical marker to the chart.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
544 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
545 public void addValueMarker(Marker marker) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
546 addValueMarker(marker, true);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
547 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
548
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
549
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
550 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
551 * Add the given horizontal marker to the chart.<b>Note:</b> the marker is
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
552 * added to the chart only if it is not null and if <i>visible</i> is true.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
553 * @param marker The marker that should be added to the chart.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
554 * @param visible The visibility of the marker.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
555 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
556 public void addValueMarker(Marker marker, boolean visible) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
557 if (visible && marker != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
558 valueMarkers.add(marker);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
559 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
560 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
561
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
562
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
563 protected void addMarkers(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
564 for(Marker marker : domainMarkers) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
565 plot.addDomainMarker(marker);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
566 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
567 for(Marker marker : valueMarkers) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
568 plot.addRangeMarker(marker);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
569 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
570 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
571
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
572
8341
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
573 public void addYAnnotation(
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
574 RiverAnnotation annotation,
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
575 String axisName
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
576 ) {
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
577 addYAnnotation(annotation, diagramAttributes.getAxisIndex(axisName));
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
578 }
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
579
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
580
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
581 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
582 * Effect: extend range of x axis to include given limits.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
583 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
584 * @param bounds the given ("minimal") bounds.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
585 * @param index index of axis to be merged.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
586 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
587 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
588 protected void combineXBounds(Bounds bounds, int index) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
589 if (!(bounds instanceof DoubleBounds)) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
590 log.warn("Unsupported Bounds type: " + bounds.getClass());
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
591 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
592 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
593
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
594 DoubleBounds dBounds = (DoubleBounds) bounds;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
595
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
596 if (dBounds == null
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
597 || Double.isNaN((Double) dBounds.getLower())
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
598 || Double.isNaN((Double) dBounds.getUpper())) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
599 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
600 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
601
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
602 Bounds old = getXBounds(index);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
603
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
604 if (old != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
605 dBounds = (DoubleBounds) dBounds.combine(old);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
606 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
607
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
608 setXBounds(index, dBounds);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
609 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
610
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
611
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
612 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
613 protected void combineYBounds(Bounds bounds, int index) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
614 if (!(bounds instanceof DoubleBounds)) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
615 log.warn("Unsupported Bounds type: " + bounds.getClass());
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
616 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
617 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
618
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
619 DoubleBounds dBounds = (DoubleBounds) bounds;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
620
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
621 if (dBounds == null
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
622 || Double.isNaN((Double) dBounds.getLower())
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
623 || Double.isNaN((Double) dBounds.getUpper())) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
624 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
625 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
626
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
627 Bounds old = getYBounds(index);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
628
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
629 if (old != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
630 dBounds = (DoubleBounds) dBounds.combine(old);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
631 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
632
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
633 setYBounds(index, dBounds);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
634 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
635
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
636
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
637 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
638 * If no data is visible, draw at least empty axis.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
639 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
640 private void recoverEmptyPlot(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
641 if (plot.getRangeAxis() == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
642 log.debug("debug: No range axis");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
643 plot.setRangeAxis(createYAxis(0));
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
644 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
645 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
646
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
647
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
648 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
649 * Expands X axes if only a point is shown.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
650 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
651 private void preparePointRanges(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
652 for (int i = 0, num = plot.getDomainAxisCount(); i < num; i++) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
653
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
654 Integer key = Integer.valueOf(i);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
655 Bounds b = getXBounds(key);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
656
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
657
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
658 if (b != null && b.getLower().equals(b.getUpper())) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
659 log.debug("Check whether to expand a x axis.i ("+b.getLower() + "-" + b.getUpper()+")");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
660 setXBounds(key, ChartHelper.expandBounds(b, 5));
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
661 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
662 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
663 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
664
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
665
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
666 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
667 * This method zooms the plot to the specified ranges in the attribute
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
668 * document or to the ranges specified by the min/max values in the
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
669 * datasets. <b>Note:</b> We determine the range manually if no zoom ranges
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
670 * are given, because JFreeCharts auto-zoom adds a margin to the left and
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
671 * right of the data area.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
672 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
673 * @param plot The XYPlot.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
674 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
675 protected void autoZoom(XYPlot plot) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
676 log.debug("Zoom to specified ranges.");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
677
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
678 Range xrange = getDomainAxisRange();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
679 Range yrange = getValueAxisRange();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
680
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
681 ValueAxis xAxis = plot.getDomainAxis();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
682
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
683 Range fixedXRange = getRangeForAxisFromSettings("X");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
684 if (fixedXRange != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
685 xAxis.setRange(fixedXRange);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
686 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
687 else {
8338
ac7cb15e1946 Scale second W-axis in cm according to first axis, which is expanded relative to the data, and set bounds for zooming purposes (plus a bit of cleanup in DiagramGenerator).
"Tom Gottfried <tom@intevation.de>"
parents: 8288
diff changeset
688 zoom(plot, xAxis, getXBounds(0), xrange);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
689 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
690
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
691 for (int i = 0, num = plot.getRangeAxisCount(); i < num; i++) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
692 ValueAxis yaxis = plot.getRangeAxis(i);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
693
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
694 if (yaxis instanceof IdentifiableNumberAxis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
695 IdentifiableNumberAxis idAxis = (IdentifiableNumberAxis) yaxis;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
696
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
697 Range fixedRange = getRangeForAxisFromSettings(idAxis.getId());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
698 if (fixedRange != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
699 yaxis.setRange(fixedRange);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
700 continue;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
701 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
702 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
703
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
704 if (yaxis == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
705 log.debug("Zoom problem: no Y Axis for index: " + i);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
706 continue;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
707 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
708
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
709 log.debug("Prepare zoom settings for y axis at index: " + i);
8338
ac7cb15e1946 Scale second W-axis in cm according to first axis, which is expanded relative to the data, and set bounds for zooming purposes (plus a bit of cleanup in DiagramGenerator).
"Tom Gottfried <tom@intevation.de>"
parents: 8288
diff changeset
710 zoom(plot, yaxis, getYBounds(Integer.valueOf(i)), yrange);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
711 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
712 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
713
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
714
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
715 protected Range getDomainAxisRange() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
716 String[] ranges = getDomainAxisRangeFromRequest();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
717
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
718 if (ranges == null || ranges.length < 2) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
719 log.debug("No zoom range for domain axis specified.");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
720 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
721 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
722
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
723 if (ranges[0].length() > 0 && ranges[1].length() > 0) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
724 try {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
725 double from = Double.parseDouble(ranges[0]);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
726 double to = Double.parseDouble(ranges[1]);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
727
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
728 if (from == 0 && to == 0) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
729 log.debug("No range specified. Lower and upper X == 0");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
730 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
731 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
732
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
733 if (from > to) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
734 double tmp = to;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
735 to = from;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
736 from = tmp;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
737 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
738
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
739 return new Range(from, to);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
740 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
741 catch (NumberFormatException nfe) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
742 log.warn("Wrong values for domain axis range.");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
743 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
744 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
745
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
746 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
747 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
748
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
749
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
750 protected Range getValueAxisRange() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
751 String[] ranges = getValueAxisRangeFromRequest();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
752
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
753 if (ranges == null || ranges.length < 2) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
754 log.debug("No range specified. Lower and upper Y == 0");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
755 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
756 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
757
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
758 if (ranges[0].length() > 0 && ranges[1].length() > 0) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
759 try {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
760 double from = Double.parseDouble(ranges[0]);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
761 double to = Double.parseDouble(ranges[1]);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
762
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
763 if (from == 0 && to == 0) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
764 log.debug("No range specified. Lower and upper Y == 0");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
765 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
766 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
767
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
768 return from > to
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
769 ? new Range(to, from)
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
770 : new Range(from, to);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
771 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
772 catch (NumberFormatException nfe) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
773 log.warn("Wrong values for value axis range.");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
774 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
775 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
776
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
777 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
778 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
779
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
780
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
781 /**
8338
ac7cb15e1946 Scale second W-axis in cm according to first axis, which is expanded relative to the data, and set bounds for zooming purposes (plus a bit of cleanup in DiagramGenerator).
"Tom Gottfried <tom@intevation.de>"
parents: 8288
diff changeset
782 * Zooms the axis to the range specified in the attribute document.
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
783 *
8338
ac7cb15e1946 Scale second W-axis in cm according to first axis, which is expanded relative to the data, and set bounds for zooming purposes (plus a bit of cleanup in DiagramGenerator).
"Tom Gottfried <tom@intevation.de>"
parents: 8288
diff changeset
784 * @param plot The XYPlot.
ac7cb15e1946 Scale second W-axis in cm according to first axis, which is expanded relative to the data, and set bounds for zooming purposes (plus a bit of cleanup in DiagramGenerator).
"Tom Gottfried <tom@intevation.de>"
parents: 8288
diff changeset
785 * @param axis The axis that should be modified.
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
786 * @param bounds The whole range specified by a dataset.
8338
ac7cb15e1946 Scale second W-axis in cm according to first axis, which is expanded relative to the data, and set bounds for zooming purposes (plus a bit of cleanup in DiagramGenerator).
"Tom Gottfried <tom@intevation.de>"
parents: 8288
diff changeset
787 * @param x A user defined range (null permitted).
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
788 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
789 * @return true, if a zoom range was specified, otherwise false.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
790 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
791 protected boolean zoom(XYPlot plot, ValueAxis axis, Bounds bounds, Range x) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
792
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
793 if (bounds == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
794 return false;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
795 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
796
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
797 if (x != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
798 Bounds computed = calculateZoom(bounds, x);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
799 computed.applyBounds(axis, AXIS_SPACE);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
800
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
801 log.debug("Zoom axis to: " + computed);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
802
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
803 return true;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
804 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
805
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
806 bounds.applyBounds(axis, AXIS_SPACE);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
807 return false;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
808 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
809
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
810 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
811 * Calculates the start and end km for zoomed charts.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
812 * @param bounds The given total bounds (unzoomed).
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
813 * @param range The range specifying the zoom.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
814 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
815 * @return The start and end km for the zoomed chart.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
816 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
817 protected Bounds calculateZoom(Bounds bounds, Range range) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
818 double min = bounds.getLower().doubleValue();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
819 double max = bounds.getUpper().doubleValue();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
820
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
821 if (log.isDebugEnabled()) {
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
822 log.debug("Minimum is: " + min);
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
823 log.debug("Maximum is: " + max);
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
824 log.debug("Lower zoom is: " + range.getLowerBound());
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
825 log.debug("Upper zoom is: " + range.getUpperBound());
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
826 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
827
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
828 double diff = max > min ? max - min : min - max;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
829
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
830 DoubleBounds computed = new DoubleBounds(
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
831 min + range.getLowerBound() * diff,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
832 min + range.getUpperBound() * diff);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
833 return computed;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
834 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
835
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
836 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
837 * Extract the minimum and maximum values for x and y axes
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
838 * which are stored in <i>xRanges</i> and <i>yRanges</i>.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
839 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
840 * @param index The index of the y-Axis.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
841 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
842 * @return a Range[] as follows: [x-Range, y-Range].
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
843 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
844 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
845 public Range[] getRangesForAxis(int index) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
846 log.debug("getRangesForAxis " + index);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
847
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
848 Bounds rx = getXBounds(Integer.valueOf(0));
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
849 Bounds ry = getYBounds(Integer.valueOf(index));
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
850
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
851 if (rx == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
852 log.warn("Range for x axis not set." +
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
853 " Using default values: 0 - 1.");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
854 rx = new DoubleBounds(0, 1);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
855 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
856 if (ry == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
857 log.warn("Range for y" + index +
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
858 " axis not set. Using default values: 0 - 1.");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
859 ry = new DoubleBounds(0, 1);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
860 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
861
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
862 return new Range[] {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
863 new Range(rx.getLower().doubleValue(), rx.getUpper().doubleValue()),
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
864 new Range(ry.getLower().doubleValue(), ry.getUpper().doubleValue())
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
865 };
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
866 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
867
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
868
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
869 /** Get X (usually horizontal) extent for given axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
870 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
871 public Bounds getXBounds(int axis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
872 return xBounds.get(axis);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
873 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
874
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
875
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
876 /** Set X (usually horizontal) extent for given axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
877 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
878 protected void setXBounds(int axis, Bounds bounds) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
879 if (bounds.getLower() == bounds.getUpper()) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
880 xBounds.put(axis, ChartHelper.expandBounds(bounds, 5d));
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
881 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
882 else {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
883 xBounds.put(axis, bounds);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
884 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
885 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
886
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
887
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
888 /** Get Y (usually vertical) extent for given axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
889 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
890 public Bounds getYBounds(int axis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
891 return yBounds.get(axis);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
892 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
893
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
894
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
895 /** Set Y (usually vertical) extent for given axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
896 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
897 protected void setYBounds(int axis, Bounds bounds) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
898 yBounds.put(axis, bounds);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
899 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
900
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
901
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
902 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
903 * Adjusts the axes of a plot. This method sets the <i>labelFont</i> of the
7106
ed8623b989f3 Minor cleanup / doc
Andre Heinecke <aheinecke@intevation.de>
parents: 7104
diff changeset
904 * X axis and applies the inversion if inverted is true.
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
905 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
906 * (Duplicate in TimeseriesChartGenerator)
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
907 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
908 * @param plot The XYPlot of the chart.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
909 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
910 protected void adjustAxes(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
911 ValueAxis xaxis = plot.getDomainAxis();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
912
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
913 ChartSettings chartSettings = getChartSettings();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
914 if (chartSettings == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
915 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
916 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
917
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
918 Font labelFont = new Font(
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
919 DEFAULT_FONT_NAME,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
920 Font.BOLD,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
921 getXAxisLabelFontSize());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
922
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
923 xaxis.setLabelFont(labelFont);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
924 xaxis.setTickLabelFont(labelFont);
7104
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
925
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
926 log.debug("Adjusting xAxis. Inverted?: " + inverted);
7112
7b88b87958ac Fix applying the inversion of diagrams.
Andre Heinecke <aheinecke@intevation.de>
parents: 7107
diff changeset
927 if (inverted) {
7104
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
928 xaxis.setInverted(true);
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
929 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
930 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
931
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
932
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
933 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
934 * This method walks over all axes (domain and range) of <i>plot</i> and
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
935 * calls localizeDomainAxis() for domain axes or localizeRangeAxis() for
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
936 * range axes.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
937 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
938 * @param plot The XYPlot.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
939 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
940 private void localizeAxes(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
941 for (int i = 0, num = plot.getDomainAxisCount(); i < num; i++) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
942 ValueAxis axis = plot.getDomainAxis(i);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
943
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
944 if (axis != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
945 localizeDomainAxis(axis);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
946 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
947 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
948 log.warn("Domain axis at " + i + " is null.");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
949 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
950 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
951
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
952 for (int i = 0, num = plot.getRangeAxisCount(); i < num; i++) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
953 ValueAxis axis = plot.getRangeAxis(i);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
954
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
955 if (axis != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
956 localizeRangeAxis(axis);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
957 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
958 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
959 log.warn("Range axis at " + i + " is null.");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
960 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
961 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
962 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
963
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
964
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
965 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
966 * Overrides the NumberFormat with the NumberFormat for the current locale
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
967 * that is provided by getLocale().
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
968 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
969 * @param domainAxis The domain axis that needs localization.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
970 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
971 protected void localizeDomainAxis(ValueAxis domainAxis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
972 NumberFormat nf = NumberFormat.getInstance(getLocale());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
973 ((NumberAxis) domainAxis).setNumberFormatOverride(nf);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
974 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
975
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
976
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
977 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
978 * Overrides the NumberFormat with the NumberFormat for the current locale
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
979 * that is provided by getLocale().
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
980 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
981 * @param rangeAxis The domain axis that needs localization.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
982 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
983 protected void localizeRangeAxis(ValueAxis rangeAxis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
984 NumberFormat nf = NumberFormat.getInstance(getLocale());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
985 ((NumberAxis) rangeAxis).setNumberFormatOverride(nf);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
986 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
987
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
988
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
989 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
990 * Create a hash from a legenditem.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
991 * This hash can then be used to merge legend items labels.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
992 * @return hash for given legenditem to identify mergeables.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
993 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
994 public static String legendItemHash(LegendItem li) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
995 // TODO Do proper implementation. Ensure that only mergable sets are created.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
996 // getFillPaint()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
997 // getFillPaintTransformer()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
998 // getLabel()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
999 // getLine()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1000 // getLinePaint()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1001 // getLineStroke()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1002 // getOutlinePaint()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1003 // getOutlineStroke()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1004 // Shape getShape()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1005 // String getToolTipText()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1006 // String getURLText()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1007 // boolean isLineVisible()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1008 // boolean isShapeFilled()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1009 // boolean isShapeOutlineVisible()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1010 // boolean isShapeVisible()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1011 String hash = li.getLinePaint().toString();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1012 String label = li.getLabel();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1013 if (label.startsWith("W (") || label.startsWith("W(")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1014 hash += "-W-";
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1015 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1016 else if (label.startsWith("Q(") || label.startsWith("Q (")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1017 hash += "-Q-";
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1018 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1019
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1020 // WQ.java holds example of using regex Matcher/Pattern.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1021
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1022 return hash;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1023 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1024
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1025 /** True if x axis has been inverted. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1026 public boolean isInverted() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1027 return inverted;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1028 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1029
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1030
7106
ed8623b989f3 Minor cleanup / doc
Andre Heinecke <aheinecke@intevation.de>
parents: 7104
diff changeset
1031 /** Set to true if x axis should be inverted.
ed8623b989f3 Minor cleanup / doc
Andre Heinecke <aheinecke@intevation.de>
parents: 7104
diff changeset
1032 * This can not be set to false afterwards. */
7112
7b88b87958ac Fix applying the inversion of diagrams.
Andre Heinecke <aheinecke@intevation.de>
parents: 7107
diff changeset
1033 public void setInverted(boolean value) {
7b88b87958ac Fix applying the inversion of diagrams.
Andre Heinecke <aheinecke@intevation.de>
parents: 7107
diff changeset
1034 /* One request to invert dominates. */
7b88b87958ac Fix applying the inversion of diagrams.
Andre Heinecke <aheinecke@intevation.de>
parents: 7107
diff changeset
1035 if (!inverted) {
7b88b87958ac Fix applying the inversion of diagrams.
Andre Heinecke <aheinecke@intevation.de>
parents: 7107
diff changeset
1036 inverted = value;
7b88b87958ac Fix applying the inversion of diagrams.
Andre Heinecke <aheinecke@intevation.de>
parents: 7107
diff changeset
1037 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1038 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1039
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1040 @Override
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1041 public String getDefaultChartTitle() {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1042 DiagramAttributes.Title dTitle = diagramAttributes.getTitle();
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1043 if (dTitle == null) {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1044 return "Title not configured in conf.xml";
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1045 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1046
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1047 return dTitle.evaluate((D4EArtifact)getMaster(), context);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1048 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1049
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1050 @Override
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1051 public String getDefaultChartSubtitle() {
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1052 String parts = "";
7877
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1053 DiagramAttributes.Title dTitle = diagramAttributes.getSubtitle();
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1054 if (dTitle == null &&
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1055 (subTitleParts == null || subTitleParts.isEmpty())) {
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1056 /* Subtitle is optional */
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1057 return null;
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1058 }
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1059 if (subTitleParts != null && !subTitleParts.isEmpty()) {
7877
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1060 boolean first = true;
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1061 if (dTitle != null) {
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1062 first = false;
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1063 }
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1064 for (String p : subTitleParts) {
7877
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1065 if (!first) {
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1066 parts += ", ";
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1067 }
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1068 parts += p;
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1069 first = false;
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1070 }
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1071 }
7877
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1072 if (dTitle == null && parts.length() > 0) {
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1073 return parts;
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1074 }
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1075 return dTitle.evaluate((D4EArtifact)getMaster(), context) + parts;
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1076 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1077
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1078 /**
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1079 * Get internationalized label for the x axis.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1080 */
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1081 @Override
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1082 protected String getDefaultXAxisLabel() {
7143
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1083 DiagramAttributes.DomainAxisAttributes dx =
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1084 diagramAttributes.getDomainAxis();
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1085
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1086 if (dx != null) {
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1087 DiagramAttributes.Title t = dx.getTitle();
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1088 if (t != null) {
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1089 return t.evaluate((D4EArtifact)getMaster(), context);
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1090 }
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1091 }
7143
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1092 return "Domain Axis Title not configured in conf.xml";
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1093 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1094
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1095 @Override
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1096 protected String getDefaultYAxisLabel(String axisName) {
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1097 Set labelSet = axesLabels.get(diagramAttributes.getAxisIndex(axisName));
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
1098 log.debug("Labels for axis: " + labelSet);
7603
25bce6e8beea (issue1225) Use label code also when only one item is present
Andre Heinecke <aheinecke@intevation.de>
parents: 7597
diff changeset
1099 if (labelSet != null && !labelSet.isEmpty()) {
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1100 String label = StringUtils.join(labelSet, ", ");
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1101 Matcher units = UNIT_PATTERN.matcher(label);
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1102 if (units.find()) {
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1103 String firstUnit = units.group();
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1104 label = units.replaceAll("");
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1105 label += firstUnit;
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1106 }
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1107 return label;
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1108 }
7122
038a04e001d7 Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents: 7112
diff changeset
1109 for (Processor pr: diagramAttributes.getProcessorsForAxisName(axisName)) {
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1110 String label = pr.getAxisLabel(this);
7122
038a04e001d7 Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents: 7112
diff changeset
1111 if (label != null) {
038a04e001d7 Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents: 7112
diff changeset
1112 return label;
038a04e001d7 Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents: 7112
diff changeset
1113 }
038a04e001d7 Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents: 7112
diff changeset
1114 }
038a04e001d7 Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents: 7112
diff changeset
1115 return "No configured axis label";
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1116 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1117
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1118
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1119 /**
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1120 * Creates a list of Section for the chart's Y axes.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1121 *
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1122 * @return a list of Y axis sections.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1123 */
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1124 protected List<AxisSection> buildYAxisSections() {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1125 List<AxisSection> axisSections = new ArrayList<AxisSection>();
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1126
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1127 List<DiagramAttributes.AxisAttributes> axesAttrs = diagramAttributes.getAxesAttributes();
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1128
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1129 for (int i = 0, n = axesAttrs.size(); i < n; i++) {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1130 AxisSection ySection = new AxisSection();
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1131 String axisName = diagramAttributes.getAxisName(i);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1132 ySection.setIdentifier(axisName);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1133 ySection.setLabel(getYAxisLabel(axisName));
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1134 ySection.setSuggestedLabel(getDefaultYAxisLabel(axisName));
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1135 ySection.setFontSize(14);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1136 ySection.setFixed(false);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1137
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1138 // XXX We are able to find better default ranges that [0,0], the
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1139 // only problem is, that we do NOT have a better range than [0,0]
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1140 // for each axis, because the initial chart will not have a dataset
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1141 // for each axis set!
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1142 ySection.setUpperRange(0d);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1143 ySection.setLowerRange(0d);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1144
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1145 axisSections.add(ySection);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1146 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1147
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1148 return axisSections;
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1149 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1150
7241
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1151 protected String getYAxisLabel(int index) {
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1152 return getYAxisLabel(diagramAttributes.getAxisName(index));
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1153 }
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1154
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1155 /**
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1156 * Returns the Y-Axis label of a chart at position <i>pos</i>.
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1157 *
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1158 * @return the Y-Axis label of a chart at position <i>0</i>.
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1159 */
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1160 protected String getYAxisLabel(String axisName) {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1161 ChartSettings chartSettings = getChartSettings();
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1162 if (chartSettings == null) {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1163 return getDefaultYAxisLabel(axisName);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1164 }
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1165 AxisSection as = chartSettings.getAxisSection(axisName);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1166 if (as != null) {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1167 String label = as.getLabel();
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1168 if (label != null && !label.equals(as.getSuggestedLabel())) {
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1169 // Only if the suggested label is not the current label
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1170 // the user has modified the label. Otherwise lets
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1171 // recalculate the label
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1172 return label;
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1173 }
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1174 }
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1175
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1176 return getDefaultYAxisLabel(axisName);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1177 }
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1178
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1179 protected String axisIndexToName(int index) {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1180 return diagramAttributes.getAxisName(index);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1181 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1182
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1183 /** Add the acutal data to the diagram according to the processors.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1184 * For every outable facets, this function is
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1185 * called and handles the data accordingly. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1186 @Override
7052
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1187 public void doOut(
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1188 ArtifactAndFacet bundle,
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1189 ThemeDocument theme,
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1190 boolean visible
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1191 ) {
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1192 String facetName = bundle.getFacetName();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1193 Facet facet = bundle.getFacet();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1194
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1195 /* A conservative security check */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1196 if (facetName == null || facet == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1197 /* Can't happen,.. */
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
1198 log.error("doOut called with null facet.");
7052
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1199 return;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1200 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1201
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
1202 log.debug("DoOut for facet: " + facetName);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1203
7096
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1204 boolean found = false;
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1205 List<Processor> prL = diagramAttributes.getProcessors();
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1206 for (Processor pr: prL) {
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1207 if (pr.canHandle(facetName)) {
7096
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1208 found = true;
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1209 pr.doOut(this, bundle, theme, visible);
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1210
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1211 if (visible) {
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1212 // Save the label that should be added for this processor
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1213 int axisIdx = diagramAttributes.getAxisIndex(pr.getAxisName());
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1214 LinkedHashSet<String> curLabels = axesLabels.get(axisIdx);
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1215 if (curLabels == null) {
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1216 curLabels = new LinkedHashSet<String>(5);
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1217 }
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1218 curLabels.add(pr.getAxisLabel(this));
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1219 axesLabels.put(axisIdx, curLabels);
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1220 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1221 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1222 }
7096
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1223 if (!found) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
1224 log.warn("No processor found for: " + facetName);
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
1225 if (log.isDebugEnabled()) {
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
1226 log.debug("Configured processors for this diagram are:");
7096
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1227 for (Processor pr: prL) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
1228 log.debug(pr.getClass().getName());
7096
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1229 }
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1230 }
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1231 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1232 }
7107
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1233
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1234 @Override
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1235 protected NumberAxis createYAxis(int index) {
7241
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1236 NumberAxis axis;
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1237 boolean logarithmic = (Boolean)diagramAttributes.getAxesAttributes().
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1238 get(index).isLog().evaluate((D4EArtifact)getMaster(), context);
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1239
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1240 if (logarithmic) {
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1241 axis = new LogarithmicAxis(getYAxisLabel(index));
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1242 } else {
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1243 axis = super.createYAxis(index);
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1244 }
7107
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1245
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1246 if (diagramAttributes.getAxesAttributes().get(index).includeZero()) {
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1247 axis.setAutoRangeIncludesZero(true);
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1248 }
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1249 return axis;
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1250 }
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1251
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1252 /**
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1253 * @return the subtitle parts
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1254 */
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1255 public HashSet<String> getSubTitleParts() {
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1256 return subTitleParts;
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1257 }
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1258
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1259 /**
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1260 * @param part the subtitle part to set
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1261 */
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1262 public void addSubtitle(String part) {
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1263 this.subTitleParts.add(part);
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1264 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1265 }

http://dive4elements.wald.intevation.org