annotate artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java @ 9431:eeea16ea0980

Added inverted attribute for y axis
author mschaefer
date Mon, 20 Aug 2018 09:42:32 +0200
parents 7c7f73e5e01e
children d8e753d0fdb9
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;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
13 import java.text.NumberFormat;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
14 import java.util.ArrayList;
8892
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
15 import java.util.Collection;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
16 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
17 import java.util.HashSet;
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
18 import java.util.LinkedHashSet;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
19 import java.util.List;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
20 import java.util.Map;
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
21 import java.util.Set;
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
22 import java.util.regex.Matcher;
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
23 import java.util.regex.Pattern;
7123
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
24
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
25 import javax.swing.ImageIcon;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
26
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
27 import org.apache.commons.lang.StringUtils;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
28 import org.apache.log4j.Logger;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
29 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
30 import org.dive4elements.artifactdatabase.state.Facet;
7123
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
31 import org.dive4elements.artifacts.CallContext;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
32 import org.dive4elements.river.artifacts.D4EArtifact;
8889
f87f435df856 Allow to configure lower and upper margin of a chart axis
gernotbelger
parents: 8885
diff changeset
33 import org.dive4elements.river.exports.DiagramAttributes.AxisAttributes;
9283
55e2155ab52d Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents: 9123
diff changeset
34 import org.dive4elements.river.exports.DiagramAttributes.AxisAttributes.TickUnits;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
35 import org.dive4elements.river.exports.process.Processor;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
36 import org.dive4elements.river.jfree.AxisDataset;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
37 import org.dive4elements.river.jfree.Bounds;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
38 import org.dive4elements.river.jfree.DoubleBounds;
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
39 import org.dive4elements.river.jfree.RiverAnnotation;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
40 import org.dive4elements.river.jfree.StyledAreaSeriesCollection;
7892
e844be34a606 Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
41 import org.dive4elements.river.jfree.XYMetaSeriesCollection;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
42 import org.dive4elements.river.themes.ThemeDocument;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
43 import org.jfree.chart.ChartFactory;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
44 import org.jfree.chart.JFreeChart;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
45 import org.jfree.chart.LegendItem;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
46 import org.jfree.chart.annotations.XYAnnotation;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
47 import org.jfree.chart.annotations.XYImageAnnotation;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
48 import org.jfree.chart.axis.LogarithmicAxis;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
49 import org.jfree.chart.axis.NumberAxis;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
50 import org.jfree.chart.axis.ValueAxis;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
51 import org.jfree.chart.plot.Marker;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
52 import org.jfree.chart.plot.PlotOrientation;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
53 import org.jfree.chart.plot.XYPlot;
9311
7c7f73e5e01e Moved chart metadata line to top of chart. Minor cleanup.
gernotbelger
parents: 9283
diff changeset
54 import org.jfree.chart.title.TextTitle;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
55 import org.jfree.data.Range;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
56 import org.jfree.data.general.Series;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
57 import org.jfree.data.xy.XYDataset;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
58 import org.jfree.data.xy.XYSeries;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
59 import org.jfree.data.xy.XYSeriesCollection;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
60
7051
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
61
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
62 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
63 * The main diagram creation class.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
64 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
65 * 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
66 * The generator creates one diagram and calls the appropiate
7248
1dff8e71c4d6 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7246
diff changeset
67 * processors for the state and
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
68 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
69 * 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
70 * <ul>
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
71 * <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
72 * than later ones (only works per-axis). </li>
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
73 * <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
74 * 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
75 * 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
76 * <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
77 * </ul>
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
78 */
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
79 public class DiagramGenerator extends ChartGenerator2 {
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 public static final int AXIS_SPACE = 5;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
82
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
83 /** 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
84 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
85
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
86 protected List<Marker> domainMarkers = new ArrayList<>();
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
87
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
88 protected List<Marker> valueMarkers = new ArrayList<>();
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
89
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
90 /** 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
91 protected Map<Integer, Bounds> xBounds;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
92
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
93 /** 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
94 protected Map<Integer, Bounds> yBounds;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
95
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
96 /** 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
97 private boolean inverted;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
98
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
99 private static final Pattern UNIT_PATTERN =
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
100 Pattern.compile("\\s*\\[[\\w\\s\\+\\-]*\\]\\s*");
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
101
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
102 protected Map<Integer, LinkedHashSet<String>> axesLabels;
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
103
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
104 protected DiagramAttributes.Instance diagramAttributes;
7051
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
105
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
106 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
107
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
108 public DiagramGenerator() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
109 super();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
110
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
111 axesLabels = new HashMap<Integer, LinkedHashSet<String>>();
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
112 xBounds = new HashMap<Integer, Bounds>();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
113 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
114 subTitleParts = new LinkedHashSet<String>();
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
115 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
116
7051
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
117 @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
118 public void setup(Object config) {
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
119
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
120 if (!(config instanceof DiagramAttributes)) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
121 log.error("invalid config type");
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
122 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
123 }
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
124 DiagramAttributes da = (DiagramAttributes)config;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7097
diff changeset
125 diagramAttributes = da.new Instance();
7051
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
126 }
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
127
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
128 private void setInvertedFromConfig(CallContext context) {
7143
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
129 DiagramAttributes.DomainAxisAttributes dx =
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
130 diagramAttributes.getDomainAxis();
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
131
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
132 if (dx != null) {
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
133 inverted = (Boolean)dx.isInverted()
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
134 .evaluate((D4EArtifact)getMaster(), context);
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
135 log.debug("setInvertedFromConfig: " + inverted);
7167
2fd238b681a9 Add debug output triggered by debugging the last commit
Andre Heinecke <aheinecke@intevation.de>
parents: 7143
diff changeset
136 } else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
137 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
138 }
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
139 }
7123
1a20738e9a21 Add currentKM context / request mapping to RiverUtils and use it in DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7122
diff changeset
140
8723
686d8876edf9 (issue1754) Fix Radius calculation for filtered (smoothed) facets
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8351
diff changeset
141 protected void postProcess() {
686d8876edf9 (issue1754) Fix Radius calculation for filtered (smoothed) facets
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8351
diff changeset
142 return;
686d8876edf9 (issue1754) Fix Radius calculation for filtered (smoothed) facets
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8351
diff changeset
143 }
686d8876edf9 (issue1754) Fix Radius calculation for filtered (smoothed) facets
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8351
diff changeset
144
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
145 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
146 * 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
147 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
148 @Override
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
149 protected JFreeChart generateChart(CallContext context) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
150 log.debug("DiagramGenerator.generateChart");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
151
8723
686d8876edf9 (issue1754) Fix Radius calculation for filtered (smoothed) facets
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8351
diff changeset
152 postProcess();
686d8876edf9 (issue1754) Fix Radius calculation for filtered (smoothed) facets
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8351
diff changeset
153
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
154 JFreeChart chart = ChartFactory.createXYLineChart(
9311
7c7f73e5e01e Moved chart metadata line to top of chart. Minor cleanup.
gernotbelger
parents: 9283
diff changeset
155 null,
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
156 "",
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
157 "",
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
158 null,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
159 PlotOrientation.VERTICAL,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
160 isLegendVisible(),
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
161 false,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
162 false);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
163
9311
7c7f73e5e01e Moved chart metadata line to top of chart. Minor cleanup.
gernotbelger
parents: 9283
diff changeset
164 generateTitles(chart);
7c7f73e5e01e Moved chart metadata line to top of chart. Minor cleanup.
gernotbelger
parents: 9283
diff changeset
165
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
166 XYPlot plot = (XYPlot) chart.getPlot();
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
167 ValueAxis axis = createXAxis(context, getXAxisLabel());
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
168 plot.setDomainAxis(axis);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
169
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
170 chart.setBackgroundPaint(Color.WHITE);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
171 plot.setBackgroundPaint(Color.WHITE);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
172 adjustPlot(plot);
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 //debugAxis(plot);
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 addDatasets(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
177
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
178 //debugDatasets(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
179
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
180 addMarkers(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
181
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
182 recoverEmptyPlot(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
183 preparePointRanges(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
184
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
185 //debugAxis(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
186
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
187 localizeAxes(plot);
7246
7ea428c4aca0 Check for inverted setting later.
Andre Heinecke <aheinecke@intevation.de>
parents: 7241
diff changeset
188
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
189 setInvertedFromConfig(context);
7246
7ea428c4aca0 Check for inverted setting later.
Andre Heinecke <aheinecke@intevation.de>
parents: 7241
diff changeset
190
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
191 adjustAxes(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
192 if (!(axis instanceof LogarithmicAxis)) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
193 // XXX:
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
194 // The auto zoom without a range tries
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
195 // to include 0 in a logarithmic axis
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
196 // which triggers a bug in jfreechart that causes
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
197 // the values to be drawn carthesian
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
198 autoZoom(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
199 }
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 // These have to go after the autozoom.
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
204 addAnnotationsToRenderer(plot);
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
205 addYAnnotationsToRenderer(plot);
7044
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 // Add a logo (maybe).
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
208 addLogo(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
209
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
210 aggregateLegendEntries(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
211
8892
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
212 /* allow extenders to do some work */
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
213 final Collection<ChartExtender> extenders = this.diagramAttributes.getExtenders();
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
214 for (final ChartExtender extender : extenders) {
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
215 extender.afterGenerateChart(this, plot);
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
216 }
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
217
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
218 return chart;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
219 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
220
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
221 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
222 * 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
223 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
224 protected double getLeftX() {
7106
ed8623b989f3 Minor cleanup / doc
Andre Heinecke <aheinecke@intevation.de>
parents: 7104
diff changeset
225 if (inverted) {
7104
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
226 return (Double)getXBounds(0).getUpper();
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
227 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
228 return (Double)getXBounds(0).getLower();
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
231
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
232 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
233 * 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
234 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
235 protected double getRightX() {
7106
ed8623b989f3 Minor cleanup / doc
Andre Heinecke <aheinecke@intevation.de>
parents: 7104
diff changeset
236 if (inverted) {
7104
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
237 return (Double)getXBounds(0).getLower();
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
238 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
239 return (Double)getXBounds(0).getUpper();
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
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 /** Add a logo as background annotation to plot. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
244 protected void addLogo(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
245 String logo = showLogo();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
246 if (logo == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
247 log.debug("No logo to show chosen");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
248 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
249 }
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 ImageIcon imageIcon = null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
252 if (logo.equals("none")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
253 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
254 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
255 /*
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
256 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
257 flys-artifacts:
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
258 DiagramGenerator.java
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
259 Timeseries*Generator.java and
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
260 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
261 Also, these images have to be put in
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
262 flys-artifacts/src/main/resources/images/
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
263 flys-client/src/main/webapp/images/
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
264 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
265 java.net.URL imageURL;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
266 if (logo.equals("Intevation")) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
267 imageURL = DiagramGenerator.class.getResource(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
268 "/images/intevation.png");
7044
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 else { // TODO else if ...
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
271 imageURL = DiagramGenerator.class.getResource(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
272 "/images/bfg_logo.gif");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
273 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
274 imageIcon = new ImageIcon(imageURL);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
275
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 double xPos = 0d, yPos = 0d;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
278
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
279 String placeh = logoHPlace();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
280 String placev = logoVPlace();
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 if (placev == null || placev.equals("none")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
283 placev = "top";
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
284 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
285 if (placev.equals("top")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
286 yPos = (Double)getYBounds(0).getUpper();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
287 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
288 else if (placev.equals("bottom")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
289 yPos = (Double)getYBounds(0).getLower();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
290 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
291 else if (placev.equals("center")) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
292 yPos = ((Double)getYBounds(0).getUpper()
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
293 + (Double)getYBounds(0).getLower())/2d;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
294 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
295 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
296 log.debug("Unknown place-v value: " + placev);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
297 }
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 if (placeh == null || placeh.equals("none")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
300 placeh = "center";
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 if (placeh.equals("left")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
303 xPos = getLeftX();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
304 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
305 else if (placeh.equals("right")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
306 xPos = getRightX();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
307 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
308 else if (placeh.equals("center")) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
309 xPos = ((Double)getXBounds(0).getUpper()
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
310 + (Double)getXBounds(0).getLower())/2d;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
311 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
312 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
313 log.debug("Unknown place-h value: " + placeh);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
314 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
315
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
316 log.debug("logo position: " + xPos + "/" + yPos);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
317
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
318 org.jfree.ui.RectangleAnchor anchor
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
319 = org.jfree.ui.RectangleAnchor.TOP;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
320 if (placev.equals("top")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
321 if (placeh.equals("left")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
322 anchor = org.jfree.ui.RectangleAnchor.TOP_LEFT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
323 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
324 else if (placeh.equals("right")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
325 anchor = org.jfree.ui.RectangleAnchor.TOP_RIGHT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
326 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
327 else if (placeh.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
328 anchor = org.jfree.ui.RectangleAnchor.TOP;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
329 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
330 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
331 else if (placev.equals("bottom")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
332 if (placeh.equals("left")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
333 anchor = org.jfree.ui.RectangleAnchor.BOTTOM_LEFT;
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 if (placeh.equals("right")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
336 anchor = org.jfree.ui.RectangleAnchor.BOTTOM_RIGHT;
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 else if (placeh.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
339 anchor = org.jfree.ui.RectangleAnchor.BOTTOM;
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 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
342 else if (placev.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
343 if (placeh.equals("left")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
344 anchor = org.jfree.ui.RectangleAnchor.LEFT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
345 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
346 else if (placeh.equals("right")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
347 anchor = org.jfree.ui.RectangleAnchor.RIGHT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
348 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
349 else if (placeh.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
350 anchor = org.jfree.ui.RectangleAnchor.CENTER;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
351 }
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 XYAnnotation xyannotation =
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
355 new XYImageAnnotation(xPos, yPos, imageIcon.getImage(), anchor);
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
356 plot.getRenderer().addAnnotation(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
357 xyannotation, org.jfree.ui.Layer.BACKGROUND);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
358 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
359
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
360
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
361 protected NumberAxis createXAxis(final CallContext context, 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
362 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
363 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
364
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
365 if (logarithmic) {
8892
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
366 final LogarithmicAxis axis = new LogarithmicAxis(label);
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
367 // REMARK: we overwrite the default values to 0.0, because in earlier version margins were never applied.
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
368 axis.setLowerMargin(0);
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
369 axis.setUpperMargin(0);
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
370 return axis;
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
371 }
8885
e5f688820951 Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents: 8856
diff changeset
372 final NumberAxis axis = new NumberAxis(label);
e5f688820951 Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents: 8856
diff changeset
373 // REMARK: we overwrite the default values to 0.0, because in earlier version margins were never applied.
e5f688820951 Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents: 8856
diff changeset
374 axis.setLowerMargin(0);
e5f688820951 Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents: 8856
diff changeset
375 axis.setUpperMargin(0);
8892
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
376 // REMARK: we overwrite the default values to 0.0, because in earlier version margins were never applied.
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
377 axis.setLowerMargin(0);
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
378 axis.setUpperMargin(0);
8885
e5f688820951 Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents: 8856
diff changeset
379 return axis;
7044
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 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
384 protected Series getSeriesOf(XYDataset dataset, int idx) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
385 return ((XYSeriesCollection) dataset).getSeries(idx);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
386 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
387
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
388
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
389 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
390 protected AxisDataset createAxisDataset(int idx) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
391 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
392 return new AxisDataset(idx);
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
395
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
396 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
397 * Put debug output about datasets.
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 public void debugDatasets(XYPlot plot) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
400 log.debug("Number of datasets: " + plot.getDatasetCount());
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
401 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
402 if (plot.getDataset(i) == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
403 log.debug("Dataset #" + i + " is null");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
404 continue;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
405 }
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
406 log.debug("Dataset #" + i + ":" + plot.getDataset(i));
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
407 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
408 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
409 + " " + series.getSeries(0).getMaxX());
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
410 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
411 + " " + series.getSeries(0).getMaxY());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
412 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
413 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
414
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
415
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
416 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
417 * Put debug output about axes.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
418 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
419 public void debugAxis(XYPlot plot) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
420 log.debug("...............");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
421 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
422 if (plot.getRangeAxis(i) == null)
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
423 log.debug("Range-Axis #" + i + " == null");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
424 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
425 log.debug("Range-Axis " + i + " != null [" +
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
426 plot.getRangeAxis(i).getRange().getLowerBound() +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
427 " " + plot.getRangeAxis(i).getRange().getUpperBound() +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
428 "]");
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 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
431 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
432 if (plot.getDomainAxis(i) == null)
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
433 log.debug("Domain-Axis #" + i + " == null");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
434 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
435 log.debug("Domain-Axis " + i + " != null [" +
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
436 plot.getDomainAxis(i).getRange().getLowerBound() +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
437 " " + plot.getDomainAxis(i).getRange().getUpperBound() +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
438 "]");
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 }
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
441 log.debug("...............");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
442 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
443
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
444 /**
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
445 * Registers an area to be drawn.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
446 * @param area Area to be drawn.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
447 * @param axisName Name of the axis.
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
448 * @param visible Whether or not to be visible
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
449 * (important for range calculations).
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
450 */
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
451 public void addAreaSeries(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
452 StyledAreaSeriesCollection area,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
453 String axisName,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
454 boolean visible
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
455 ) {
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
456 addAreaSeries(area, diagramAttributes.getAxisIndex(axisName), visible);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
457 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
458
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
459 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
460 * Registers an area to be drawn.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
461 * @param area Area to be drawn.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
462 * @param index 'axis index'
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
463 * @param visible Whether or not to be visible
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
464 * (important for range calculations).
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
465 */
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
466 public void addAreaSeries(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
467 StyledAreaSeriesCollection area,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
468 int index,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
469 boolean visible
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
470 ) {
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
471 if (area == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
472 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
473 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
474 }
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 AxisDataset axisDataset = (AxisDataset) getAxisDataset(index);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
477
8935
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
478 Bounds[] xyBounds = ChartHelper.getBounds(area);
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
479
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
480 if (xyBounds == null) {
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
481 log.warn("Skip XYDataset for Axis (invalid ranges): " + index);
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
482 return;
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
483 }
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
484
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
485
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
486 if (visible) {
8935
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
487 if (log.isDebugEnabled()) {
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
488 log.debug("Add new AxisDataset at index: " + index);
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
489 log.debug("X extent: " + xyBounds[0]);
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
490 log.debug("Y extent: " + xyBounds[1]);
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
491 }
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
492
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
493 axisDataset.addArea(area);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
494 }
8935
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
495
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
496 /* No range merging, for areas extending to infinity this causes problems. */
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
497 /* No range merging, for areas extending to infinity this causes problems. */
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
498 if( StyledSeriesBuilder.isBigDoubleValue( xyBounds[1].getLower() ) || StyledSeriesBuilder.isBigDoubleValue( xyBounds[1].getLower() ) )
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
499 return;
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
500
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
501 combineXBounds(xyBounds[0], 0);
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
502 combineYBounds(xyBounds[1], index);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
503 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
504
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
505 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
506 * 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
507 * 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
508 * @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
509 * @param index index of the axis.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
510 * @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
511 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
512 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
513 if (series == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
514 return;
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
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
517 log.debug("Y Range of XYSeries: " +
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
518 series.getMinY() + " | " + series.getMaxY());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
519
7892
e844be34a606 Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
520 addAxisDataset(new XYMetaSeriesCollection(series), index, visible);
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
521 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
522
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
523 /**
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
524 * 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
525 * 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
526 * @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
527 * @param axisName name of the axis.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
528 * @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
529 */
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
530 public void addAxisSeries(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
531 XYSeries series,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
532 String axisName,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
533 boolean visible
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
534 ) {
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
535 addAxisSeries(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
536 series, diagramAttributes.getAxisIndex(axisName), visible);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
537 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
538
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
539 public void addAxisDataset(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
540 XYDataset dataset,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
541 String axisName,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
542 boolean visible
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
543 ) {
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
544 addAxisDataset(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
545 dataset, diagramAttributes.getAxisIndex(axisName), visible);
7124
49ceab5f2263 Configure Longitudinal section diagram to use the new way.
Andre Heinecke <aheinecke@intevation.de>
parents: 7123
diff changeset
546 }
7044
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 * Add the given vertical marker to the chart.
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 public void addDomainMarker(Marker marker) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
552 addDomainMarker(marker, true);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
553 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
554
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 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
557 * 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
558 * 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
559 * @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
560 * @param visible The visibility of the marker.
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 public void addDomainMarker(Marker marker, boolean visible) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
563 if (visible && marker != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
564 domainMarkers.add(marker);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
565 }
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
568
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 * Add the given vertical marker to the chart.
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 public void addValueMarker(Marker marker) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
573 addValueMarker(marker, true);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
574 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
575
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
576
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
577 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
578 * 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
579 * 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
580 * @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
581 * @param visible The visibility of the marker.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
582 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
583 public void addValueMarker(Marker marker, boolean visible) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
584 if (visible && marker != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
585 valueMarkers.add(marker);
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 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
588
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
589
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
590 protected void addMarkers(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
591 for(Marker marker : domainMarkers) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
592 plot.addDomainMarker(marker);
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 for(Marker marker : valueMarkers) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
595 plot.addRangeMarker(marker);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
596 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
597 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
598
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
599
8341
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
600 public void addYAnnotation(
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
601 RiverAnnotation annotation,
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
602 String axisName
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
603 ) {
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
604 addYAnnotation(annotation, diagramAttributes.getAxisIndex(axisName));
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
605 }
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
606
130160b8d245 Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents: 8338
diff changeset
607
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
608 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
609 * 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
610 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
611 * @param bounds the given ("minimal") bounds.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
612 * @param index index of axis to be merged.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
613 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
614 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
615 protected void combineXBounds(Bounds bounds, int index) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
616 if (!(bounds instanceof DoubleBounds)) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
617 log.warn("Unsupported Bounds type: " + bounds.getClass());
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
618 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
619 }
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 DoubleBounds dBounds = (DoubleBounds) bounds;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
622
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
623 if (dBounds == null
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
624 || Double.isNaN((Double) dBounds.getLower())
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
625 || Double.isNaN((Double) dBounds.getUpper())) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
626 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
627 }
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 Bounds old = getXBounds(index);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
630
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
631 if (old != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
632 dBounds = (DoubleBounds) dBounds.combine(old);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
633 }
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 setXBounds(index, dBounds);
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
639 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
640 protected void combineYBounds(Bounds bounds, int index) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
641 if (!(bounds instanceof DoubleBounds)) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
642 log.warn("Unsupported Bounds type: " + bounds.getClass());
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
643 return;
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 DoubleBounds dBounds = (DoubleBounds) bounds;
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 if (dBounds == null
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
649 || Double.isNaN((Double) dBounds.getLower())
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
650 || Double.isNaN((Double) dBounds.getUpper())) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
651 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
652 }
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 Bounds old = getYBounds(index);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
655
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
656 if (old != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
657 dBounds = (DoubleBounds) dBounds.combine(old);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
658 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
659
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
660 setYBounds(index, dBounds);
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 * 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
666 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
667 private void recoverEmptyPlot(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
668 if (plot.getRangeAxis() == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
669 log.debug("debug: No range axis");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
670 plot.setRangeAxis(createYAxis(0));
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
671 }
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
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 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
676 * 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
677 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
678 private void preparePointRanges(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
679 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
680
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
681 Integer key = Integer.valueOf(i);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
682 Bounds b = getXBounds(key);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
683
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
684
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
685 if (b != null && b.getLower().equals(b.getUpper())) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
686 log.debug("Check whether to expand a x axis.i ("
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
687 + b.getLower() + "-" + b.getUpper() + ")");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
688 setXBounds(key, ChartHelper.expandBounds(b, 5));
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 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
692
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 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
695 * 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
696 * 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
697 * 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
698 * 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
699 * right of the data area.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
700 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
701 * @param plot The XYPlot.
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 protected void autoZoom(XYPlot plot) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
704 log.debug("Zoom to specified ranges.");
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
705
8935
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
706 /* allow chart extenders to tweak zoom behavior */
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
707 final Collection<ChartExtender> extenders = this.diagramAttributes.getExtenders();
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
708 for (final ChartExtender extender : extenders) {
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
709 extender.beforeAutoZoom(this);
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
710 }
3ac9cb0029b2 Introduced new hook for chart tweaking.
gernotbelger
parents: 8892
diff changeset
711
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
712 Range xrange = getDomainAxisRange();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
713 Range yrange = getValueAxisRange();
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 ValueAxis xAxis = plot.getDomainAxis();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
716
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
717 Range fixedXRange = getRangeForAxisFromSettings("X");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
718 if (fixedXRange != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
719 xAxis.setRange(fixedXRange);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
720 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
721 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
722 zoom(plot, xAxis, getXBounds(0), xrange);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
723 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
724
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
725 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
726 ValueAxis yaxis = plot.getRangeAxis(i);
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 (yaxis instanceof IdentifiableNumberAxis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
729 IdentifiableNumberAxis idAxis = (IdentifiableNumberAxis) yaxis;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
730
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
731 Range fixedRange = getRangeForAxisFromSettings(idAxis.getId());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
732 if (fixedRange != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
733 yaxis.setRange(fixedRange);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
734 continue;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
735 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
736 }
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 if (yaxis == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
739 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
740 continue;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
741 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
742
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
743 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
744 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
745 }
8892
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
746
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
747 for (final ChartExtender extender : extenders) {
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
748 extender.afterAutoZoom(this);
87a242425467 Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents: 8889
diff changeset
749 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
750 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
751
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
752 protected Range getDomainAxisRange() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
753 String[] ranges = getDomainAxisRangeFromRequest();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
754
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
755 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
756 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
757 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
758 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
759
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
760 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
761 try {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
762 double from = Double.parseDouble(ranges[0]);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
763 double to = Double.parseDouble(ranges[1]);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
764
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
765 if (from == 0 && to == 0) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
766 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
767 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
768 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
769
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
770 if (from > to) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
771 double tmp = to;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
772 to = from;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
773 from = tmp;
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 return new Range(from, to);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
777 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
778 catch (NumberFormatException nfe) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
779 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
780 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
781 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
782
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
783 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
784 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
785
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
786
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
787 protected Range getValueAxisRange() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
788 String[] ranges = getValueAxisRangeFromRequest();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
789
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
790 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
791 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
792 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
793 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
794
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
795 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
796 try {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
797 double from = Double.parseDouble(ranges[0]);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
798 double to = Double.parseDouble(ranges[1]);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
799
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
800 if (from == 0 && to == 0) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
801 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
802 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
803 }
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 return from > to
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
806 ? new Range(to, from)
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
807 : new Range(from, to);
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 catch (NumberFormatException nfe) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
810 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
811 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
812 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
813
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
814 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
815 }
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
818 /**
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
819 * 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
820 *
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
821 * @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
822 * @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
823 * @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
824 * @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
825 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
826 * @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
827 */
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
828 protected boolean zoom(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
829 XYPlot plot,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
830 ValueAxis axis,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
831 Bounds bounds,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
832 Range x
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
833 ) {
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
834 if (bounds == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
835 return false;
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
838 if (x != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
839 Bounds computed = calculateZoom(bounds, x);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
840 computed.applyBounds(axis, AXIS_SPACE);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
841
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
842 log.debug("Zoom axis to: " + computed);
7044
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 return true;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
845 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
846
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
847 bounds.applyBounds(axis, AXIS_SPACE);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
848 return false;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
849 }
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 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
852 * 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
853 * @param bounds The given total bounds (unzoomed).
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
854 * @param range The range specifying the zoom.
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 * @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
857 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
858 protected Bounds calculateZoom(Bounds bounds, Range range) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
859 double min = bounds.getLower().doubleValue();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
860 double max = bounds.getUpper().doubleValue();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
861
8778
bbf6cf555e89 Tidied.
Tom Gottfried <tom@intevation.de>
parents: 8723
diff changeset
862 log.debug("Minimum is: " + min);
bbf6cf555e89 Tidied.
Tom Gottfried <tom@intevation.de>
parents: 8723
diff changeset
863 log.debug("Maximum is: " + max);
bbf6cf555e89 Tidied.
Tom Gottfried <tom@intevation.de>
parents: 8723
diff changeset
864 log.debug("Lower zoom is: " + range.getLowerBound());
bbf6cf555e89 Tidied.
Tom Gottfried <tom@intevation.de>
parents: 8723
diff changeset
865 log.debug("Upper zoom is: " + range.getUpperBound());
7044
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 double diff = max > min ? max - min : min - max;
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 DoubleBounds computed = new DoubleBounds(
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
870 min + range.getLowerBound() * diff,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
871 min + range.getUpperBound() * diff);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
872 return computed;
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 * 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
877 * 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
878 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
879 * @param index The index of the y-Axis.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
880 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
881 * @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
882 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
883 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
884 public Range[] getRangesForAxis(int index) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
885 log.debug("getRangesForAxis " + index);
7044
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 Bounds rx = getXBounds(Integer.valueOf(0));
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
888 Bounds ry = getYBounds(Integer.valueOf(index));
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
889
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
890 if (rx == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
891 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
892 " Using default values: 0 - 1.");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
893 rx = new DoubleBounds(0, 1);
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 if (ry == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
896 log.warn("Range for y" + index +
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
897 " axis not set. Using default values: 0 - 1.");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
898 ry = new DoubleBounds(0, 1);
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 return new Range[] {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
902 new Range(rx.getLower().doubleValue(), rx.getUpper().doubleValue()),
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
903 new Range(ry.getLower().doubleValue(), ry.getUpper().doubleValue())
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
904 };
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
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 /** Get X (usually horizontal) extent for given axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
909 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
910 public Bounds getXBounds(int axis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
911 return xBounds.get(axis);
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
914
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
915 /** Set X (usually horizontal) extent for given axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
916 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
917 protected void setXBounds(int axis, Bounds bounds) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
918 if (bounds.getLower() == bounds.getUpper()) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
919 xBounds.put(axis, ChartHelper.expandBounds(bounds, 5d));
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
920 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
921 else {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
922 xBounds.put(axis, bounds);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
923 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
924 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
925
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
926
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
927 /** Get Y (usually vertical) extent for given axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
928 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
929 public Bounds getYBounds(int axis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
930 return yBounds.get(axis);
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 /** Set Y (usually vertical) extent for given axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
935 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
936 protected void setYBounds(int axis, Bounds bounds) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
937 yBounds.put(axis, bounds);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
938 }
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
941 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
942 * 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
943 * 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
944 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
945 * (Duplicate in TimeseriesChartGenerator)
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 * @param plot The XYPlot of the chart.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
948 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
949 protected void adjustAxes(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
950 ValueAxis xaxis = plot.getDomainAxis();
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 ChartSettings chartSettings = getChartSettings();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
953 if (chartSettings == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
954 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
955 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
956
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
957 Font labelFont = new Font(
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
958 DEFAULT_FONT_NAME,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
959 Font.BOLD,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
960 getXAxisLabelFontSize());
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 xaxis.setLabelFont(labelFont);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
963 xaxis.setTickLabelFont(labelFont);
7104
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
964
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
965 log.debug("Adjusting xAxis. Inverted?: " + inverted);
7112
7b88b87958ac Fix applying the inversion of diagrams.
Andre Heinecke <aheinecke@intevation.de>
parents: 7107
diff changeset
966 if (inverted) {
7104
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
967 xaxis.setInverted(true);
eb3a2bc5d591 Add more Inversion logic to the DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents: 7099
diff changeset
968 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
969 }
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
972 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
973 * 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
974 * calls localizeDomainAxis() for domain axes or localizeRangeAxis() for
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
975 * range axes.
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 * @param plot The XYPlot.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
978 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
979 private void localizeAxes(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
980 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
981 ValueAxis axis = plot.getDomainAxis(i);
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 if (axis != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
984 localizeDomainAxis(axis);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
985 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
986 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
987 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
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
991 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
992 ValueAxis axis = plot.getRangeAxis(i);
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 if (axis != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
995 localizeRangeAxis(axis);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
996 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
997 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
998 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
999 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1000 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1001 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1002
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1003
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1004 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1005 * 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
1006 * that is provided by getLocale().
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1007 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1008 * @param domainAxis The domain axis that needs localization.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1009 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1010 protected void localizeDomainAxis(ValueAxis domainAxis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1011 NumberFormat nf = NumberFormat.getInstance(getLocale());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1012 ((NumberAxis) domainAxis).setNumberFormatOverride(nf);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1013 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1014
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 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1017 * 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
1018 * that is provided by getLocale().
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 * @param rangeAxis The domain axis that needs localization.
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 protected void localizeRangeAxis(ValueAxis rangeAxis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1023 NumberFormat nf = NumberFormat.getInstance(getLocale());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1024 ((NumberAxis) rangeAxis).setNumberFormatOverride(nf);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1025 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1026
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1027
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 * Create a hash from a legenditem.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1030 * 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
1031 * @return hash for given legenditem to identify mergeables.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1032 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1033 public static String legendItemHash(LegendItem li) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
1034 // TODO Do proper implementation.
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
1035 // Ensure that only mergable sets are created.
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1036 // getFillPaint()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1037 // getFillPaintTransformer()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1038 // getLabel()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1039 // getLine()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1040 // getLinePaint()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1041 // getLineStroke()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1042 // getOutlinePaint()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1043 // getOutlineStroke()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1044 // Shape getShape()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1045 // String getToolTipText()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1046 // String getURLText()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1047 // boolean isLineVisible()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1048 // boolean isShapeFilled()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1049 // boolean isShapeOutlineVisible()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1050 // boolean isShapeVisible()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1051 String hash = li.getLinePaint().toString();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1052 String label = li.getLabel();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1053 if (label.startsWith("W (") || label.startsWith("W(")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1054 hash += "-W-";
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1055 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1056 else if (label.startsWith("Q(") || label.startsWith("Q (")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1057 hash += "-Q-";
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1058 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1059
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1060 // 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
1061
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1062 return hash;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1063 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1064
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1065 /** True if x axis has been inverted. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1066 public boolean isInverted() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1067 return inverted;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1068 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1069
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1070
7106
ed8623b989f3 Minor cleanup / doc
Andre Heinecke <aheinecke@intevation.de>
parents: 7104
diff changeset
1071 /** Set to true if x axis should be inverted.
ed8623b989f3 Minor cleanup / doc
Andre Heinecke <aheinecke@intevation.de>
parents: 7104
diff changeset
1072 * 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
1073 public void setInverted(boolean value) {
7b88b87958ac Fix applying the inversion of diagrams.
Andre Heinecke <aheinecke@intevation.de>
parents: 7107
diff changeset
1074 /* One request to invert dominates. */
7b88b87958ac Fix applying the inversion of diagrams.
Andre Heinecke <aheinecke@intevation.de>
parents: 7107
diff changeset
1075 if (!inverted) {
7b88b87958ac Fix applying the inversion of diagrams.
Andre Heinecke <aheinecke@intevation.de>
parents: 7107
diff changeset
1076 inverted = value;
7b88b87958ac Fix applying the inversion of diagrams.
Andre Heinecke <aheinecke@intevation.de>
parents: 7107
diff changeset
1077 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1078 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1079
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1080 @Override
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
1081 protected final String getDefaultChartTitle(CallContext context) {
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1082 DiagramAttributes.Title dTitle = diagramAttributes.getTitle();
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1083 if (dTitle == null) {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1084 return "Title not configured in conf.xml";
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1085 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1086
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1087 return dTitle.evaluate((D4EArtifact)getMaster(), context);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1088 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1089
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
1090
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1091 @Override
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
1092 protected String getDefaultChartSubtitle(CallContext context) {
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1093 String parts = "";
7877
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1094 DiagramAttributes.Title dTitle = diagramAttributes.getSubtitle();
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1095 if (dTitle == null &&
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1096 (subTitleParts == null || subTitleParts.isEmpty())) {
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1097 /* Subtitle is optional */
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1098 return null;
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1099 }
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1100 if (subTitleParts != null && !subTitleParts.isEmpty()) {
7877
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1101 boolean first = true;
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1102 if (dTitle != null) {
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1103 first = false;
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1104 }
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1105 for (String p : subTitleParts) {
7877
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1106 if (!first) {
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1107 parts += ", ";
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1108 }
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1109 parts += p;
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1110 first = false;
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1111 }
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1112 }
7877
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1113 if (dTitle == null && parts.length() > 0) {
43f18dc56c5a Fixed subtitle handling and added flowvelocity subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents: 7806
diff changeset
1114 return parts;
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1115 }
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1116 return dTitle.evaluate((D4EArtifact)getMaster(), context) + parts;
7068
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 * Get internationalized label for the x axis.
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 @Override
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
1123 protected String getDefaultXAxisLabel(CallContext context) {
7143
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1124 DiagramAttributes.DomainAxisAttributes dx =
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1125 diagramAttributes.getDomainAxis();
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1126
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1127 if (dx != null) {
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1128 DiagramAttributes.Title t = dx.getTitle();
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1129 if (t != null) {
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1130 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
1131 }
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1132 }
7143
053e39436ba3 Diagrams: Determine if axis should be inverted dynamically.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7124
diff changeset
1133 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
1134 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1135
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
1136 protected final String getDefaultYAxisLabel(String axisName) {
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1137 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
1138 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
1139 if (labelSet != null && !labelSet.isEmpty()) {
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1140 String label = StringUtils.join(labelSet, ", ");
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1141 Matcher units = UNIT_PATTERN.matcher(label);
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1142 if (units.find()) {
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1143 String firstUnit = units.group();
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1144 label = units.replaceAll("");
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1145 label += firstUnit;
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1146 }
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1147 return label;
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1148 }
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
1149 for (
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
1150 Processor pr: diagramAttributes.getProcessorsForAxisName(axisName)
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
1151 ) {
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1152 String label = pr.getAxisLabel(this);
7122
038a04e001d7 Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents: 7112
diff changeset
1153 if (label != null) {
038a04e001d7 Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents: 7112
diff changeset
1154 return label;
038a04e001d7 Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents: 7112
diff changeset
1155 }
038a04e001d7 Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents: 7112
diff changeset
1156 }
038a04e001d7 Handle multiple processors for axis labeling.
Andre Heinecke <aheinecke@intevation.de>
parents: 7112
diff changeset
1157 return "No configured axis label";
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1158 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1159
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1160
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1161 /**
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1162 * 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
1163 *
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1164 * @return a list of Y axis sections.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1165 */
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
1166 @Override
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
1167 protected final List<AxisSection> buildYAxisSections() {
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
1168 List<AxisSection> axisSections = new ArrayList<>();
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1169
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
1170 List<DiagramAttributes.AxisAttributes> axesAttrs =
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
1171 diagramAttributes.getAxesAttributes();
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1172
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1173 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
1174 AxisSection ySection = new AxisSection();
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1175 String axisName = diagramAttributes.getAxisName(i);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1176 ySection.setIdentifier(axisName);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1177 ySection.setLabel(getYAxisLabel(axisName));
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1178 ySection.setSuggestedLabel(getDefaultYAxisLabel(axisName));
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1179 ySection.setFontSize(14);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1180 ySection.setFixed(false);
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 // 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
1183 // 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
1184 // 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
1185 // for each axis set!
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1186 ySection.setUpperRange(0d);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1187 ySection.setLowerRange(0d);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1188
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1189 axisSections.add(ySection);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1190 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1191
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1192 return axisSections;
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1193 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1194
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
1195 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
1196 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
1197 }
32db4f89b65f Add new option to diagram axes "logarithmic" that can be set to an evaluator
Andre Heinecke <aheinecke@intevation.de>
parents: 7167
diff changeset
1198
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1199 /**
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1200 * 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
1201 *
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1202 * @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
1203 */
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1204 protected String getYAxisLabel(String axisName) {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1205 ChartSettings chartSettings = getChartSettings();
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1206 if (chartSettings == null) {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1207 return getDefaultYAxisLabel(axisName);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1208 }
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1209 AxisSection as = chartSettings.getAxisSection(axisName);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1210 if (as != null) {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1211 String label = as.getLabel();
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1212 if (label != null && !label.equals(as.getSuggestedLabel())) {
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1213 // Only if the suggested label is not the current label
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1214 // the user has modified the label. Otherwise lets
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1215 // recalculate the label
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1216 return label;
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1217 }
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1218 }
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1219
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1220 return getDefaultYAxisLabel(axisName);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1221 }
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1222
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1223 protected String axisIndexToName(int index) {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1224 return diagramAttributes.getAxisName(index);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1225 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1226
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1227 /** 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
1228 * For every outable facets, this function is
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1229 * called and handles the data accordingly. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1230 @Override
7052
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1231 public void doOut(
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1232 ArtifactAndFacet bundle,
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1233 ThemeDocument theme,
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1234 boolean visible
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1235 ) {
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1236 String facetName = bundle.getFacetName();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1237 Facet facet = bundle.getFacet();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1238
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1239 /* A conservative security check */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1240 if (facetName == null || facet == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1241 /* Can't happen,.. */
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
1242 log.error("doOut called with null facet.");
7052
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1243 return;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1244 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1245
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
1246 log.debug("DoOut for facet: " + facetName);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1247
7096
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1248 boolean found = false;
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1249 List<Processor> prL = diagramAttributes.getProcessors();
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1250 for (Processor pr: prL) {
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1251 if (pr.canHandle(facetName)) {
7096
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1252 found = true;
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1253 pr.doOut(this, bundle, theme, visible);
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1254
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1255 if (visible) {
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1256 // Save the label that should be added for this processor
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
1257 int axisIdx = diagramAttributes.getAxisIndex(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8778
diff changeset
1258 pr.getAxisName());
7597
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1259 LinkedHashSet<String> curLabels = axesLabels.get(axisIdx);
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1260 if (curLabels == null) {
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1261 curLabels = new LinkedHashSet<String>(5);
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1262 }
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1263 curLabels.add(pr.getAxisLabel(this));
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1264 axesLabels.put(axisIdx, curLabels);
fca46ce8e4f5 (issue1225) Implement Magic labels.
Andre Heinecke <aheinecke@intevation.de>
parents: 7248
diff changeset
1265 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1266 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1267 }
7096
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1268 if (!found) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
1269 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
1270 if (log.isDebugEnabled()) {
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
1271 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
1272 for (Processor pr: prL) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8147
diff changeset
1273 log.debug(pr.getClass().getName());
7096
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1274 }
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1275 }
5c059c05b100 Add useful debug output for diagram generator debugging
Andre Heinecke <aheinecke@intevation.de>
parents: 7088
diff changeset
1276 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1277 }
7107
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1278
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1279 @Override
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1280 protected NumberAxis createYAxis(int index) {
8889
f87f435df856 Allow to configure lower and upper margin of a chart axis
gernotbelger
parents: 8885
diff changeset
1281
f87f435df856 Allow to configure lower and upper margin of a chart axis
gernotbelger
parents: 8885
diff changeset
1282 final AxisAttributes axisAttributes = diagramAttributes.getAxesAttributes().get(index);
f87f435df856 Allow to configure lower and upper margin of a chart axis
gernotbelger
parents: 8885
diff changeset
1283
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
1284 boolean logarithmic = (Boolean)axisAttributes.isLog().evaluate((D4EArtifact)getMaster(), getContext());
8889
f87f435df856 Allow to configure lower and upper margin of a chart axis
gernotbelger
parents: 8885
diff changeset
1285
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
1286 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
1287 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
1288 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
1289 } 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
1290 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
1291 }
7107
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1292
8889
f87f435df856 Allow to configure lower and upper margin of a chart axis
gernotbelger
parents: 8885
diff changeset
1293 if (axisAttributes.includeZero()) {
7107
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1294 axis.setAutoRangeIncludesZero(true);
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1295 }
8889
f87f435df856 Allow to configure lower and upper margin of a chart axis
gernotbelger
parents: 8885
diff changeset
1296
9431
eeea16ea0980 Added inverted attribute for y axis
mschaefer
parents: 9311
diff changeset
1297 if (axisAttributes.isInverted() == DiagramAttributes.TRUE) {
eeea16ea0980 Added inverted attribute for y axis
mschaefer
parents: 9311
diff changeset
1298 axis.setInverted(true);
eeea16ea0980 Added inverted attribute for y axis
mschaefer
parents: 9311
diff changeset
1299 }
eeea16ea0980 Added inverted attribute for y axis
mschaefer
parents: 9311
diff changeset
1300
8889
f87f435df856 Allow to configure lower and upper margin of a chart axis
gernotbelger
parents: 8885
diff changeset
1301 axis.setLowerMargin(axisAttributes.getLowerMargin());
f87f435df856 Allow to configure lower and upper margin of a chart axis
gernotbelger
parents: 8885
diff changeset
1302 axis.setUpperMargin(axisAttributes.getUpperMargin());
9283
55e2155ab52d Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents: 9123
diff changeset
1303
55e2155ab52d Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents: 9123
diff changeset
1304 TickUnits tickUnits = axisAttributes.getTickUnits();
55e2155ab52d Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents: 9123
diff changeset
1305 if( tickUnits != TickUnits.standard )
55e2155ab52d Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents: 9123
diff changeset
1306 axis.setStandardTickUnits(tickUnits.createTickUnits());
55e2155ab52d Introduced new option 'tick-units' for axes. Configured the count Axis to only allow for integer ticks.
gernotbelger
parents: 9123
diff changeset
1307
7107
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1308 return axis;
564033adf9c6 Handle axis include zero setting for the new processing architecture
Andre Heinecke <aheinecke@intevation.de>
parents: 7106
diff changeset
1309 }
7806
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1310
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1311 /**
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1312 * @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
1313 */
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1314 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
1315 return subTitleParts;
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1316 }
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1317
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1318 /**
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1319 * @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
1320 */
7ac103a49e35 Added subtitle parts to modify the chart subtitle via the outprocessor.
Raimund Renkert <rrenkert@intevation.de>
parents: 7603
diff changeset
1321 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
1322 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
1323 }
9123
1cc7653ca84f Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents: 9104
diff changeset
1324 }

http://dive4elements.wald.intevation.org