annotate artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java @ 7087:ada424214b02 generator-refactoring

Use Object instead of DOM Element as argument for setup of out generators. First step to remove dependency to XML DOM when using configuration.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 22 Sep 2013 21:05:12 +0200
parents 42e243c640a0
children 41567bf1e131
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;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
15 import java.util.HashMap;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
16 import java.util.List;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
17 import java.util.Map;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
18
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
19 import javax.swing.ImageIcon;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
20
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
21 import org.apache.log4j.Logger;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
22 import org.jfree.chart.ChartFactory;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
23 import org.jfree.chart.JFreeChart;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
24 import org.jfree.chart.LegendItem;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
25 import org.jfree.chart.annotations.XYAnnotation;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
26 import org.jfree.chart.annotations.XYImageAnnotation;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
27 import org.jfree.chart.annotations.XYTextAnnotation;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
28 import org.jfree.chart.axis.NumberAxis;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
29 import org.jfree.chart.axis.ValueAxis;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
30 import org.jfree.chart.axis.LogarithmicAxis;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
31 import org.jfree.chart.plot.Marker;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
32 import org.jfree.chart.plot.PlotOrientation;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
33 import org.jfree.chart.plot.XYPlot;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
34 import org.jfree.data.Range;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
35 import org.jfree.data.general.Series;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
36 import org.jfree.data.xy.XYDataset;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
37 import org.jfree.data.xy.XYSeries;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
38 import org.jfree.data.xy.XYSeriesCollection;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
39 import org.json.JSONArray;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
40 import org.json.JSONException;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
41
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
42 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
43 import org.dive4elements.artifactdatabase.state.Facet;
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
44 import org.dive4elements.river.artifacts.D4EArtifact;
7076
7f600001c807 Add LTR inversion code to diagram generator.
Andre Heinecke <aheinecke@intevation.de>
parents: 7068
diff changeset
45 import org.dive4elements.river.artifacts.model.WKms;
7059
f9d5020af0af Remove AxisProcessor "glue" class and extend Processor interface
Andre Heinecke <aheinecke@intevation.de>
parents: 7052
diff changeset
46 import org.dive4elements.river.exports.process.Processor;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
47 import org.dive4elements.river.jfree.AxisDataset;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
48 import org.dive4elements.river.jfree.AnnotationHelper;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
49 import org.dive4elements.river.jfree.Bounds;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
50 import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
51 import org.dive4elements.river.jfree.DoubleBounds;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
52 import org.dive4elements.river.jfree.RiverAnnotation;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
53 import org.dive4elements.river.jfree.StyledAreaSeriesCollection;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
54 import org.dive4elements.river.jfree.StyledXYSeries;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
55 import org.dive4elements.river.themes.ThemeDocument;
7076
7f600001c807 Add LTR inversion code to diagram generator.
Andre Heinecke <aheinecke@intevation.de>
parents: 7068
diff changeset
56 import org.dive4elements.river.utils.DataUtil;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
57
7051
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
58 import org.w3c.dom.Element;
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
59
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
60 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
61 * The main diagram creation class.
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 * 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
64 * The generator creates one diagram and calls the appropiate
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
65 * processors for the state and
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
66 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
67 * 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
68 * <ul>
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
69 * <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
70 * than later ones (only works per-axis). </li>
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
71 * <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
72 * 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
73 * 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
74 * <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
75 * </ul>
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
76 */
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
77 public class DiagramGenerator extends ChartGenerator2 {
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
78
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
79 public static final int AXIS_SPACE = 5;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
80
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
81 /** The logger that is used in this generator. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
82 private static Logger logger = Logger.getLogger(DiagramGenerator.class);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
83
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
84 protected List<Marker> domainMarkers = new ArrayList<Marker>();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
85
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
86 protected List<Marker> valueMarkers = new ArrayList<Marker>();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
87
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
88 /** 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
89 protected Map<Integer, Bounds> xBounds;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
90
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
91 /** 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
92 protected Map<Integer, Bounds> yBounds;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
93
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
94 /** 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
95 private boolean inverted;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
96
7051
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
97 protected DiagramAttributes diagramAttributes;
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
98
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
99 public DiagramGenerator() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
100 super();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
101
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
102 xBounds = new HashMap<Integer, Bounds>();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
103 yBounds = new HashMap<Integer, Bounds>();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
104 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
105
7051
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
106 @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
107 public void setup(Object config) {
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
108 Element cfg = (Element)config;
7051
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
109 logger.debug("DiagramGenerator.setup");
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
110 // TODO: XML DOM is not thread safe! We have to re-factor this.
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
111 synchronized (cfg.getOwnerDocument()) {
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
112 diagramAttributes = new DiagramAttributes(cfg);
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
113 }
7051
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
114 }
c4bacc5ddd9b Parse config when setup a new diagram.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7044
diff changeset
115
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
116 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
117 * 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
118 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
119 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
120 public JFreeChart generateChart() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
121 logger.debug("DiagramGenerator.generateChart");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
122
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
123 JFreeChart chart = ChartFactory.createXYLineChart(
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
124 getChartTitle(),
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
125 "",
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
126 "",
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
127 null,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
128 PlotOrientation.VERTICAL,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
129 isLegendVisible(),
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
130 false,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
131 false);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
132
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
133 XYPlot plot = (XYPlot) chart.getPlot();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
134 ValueAxis axis = createXAxis(getXAxisLabel());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
135 plot.setDomainAxis(axis);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
136
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
137 chart.setBackgroundPaint(Color.WHITE);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
138 plot.setBackgroundPaint(Color.WHITE);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
139 addSubtitles(chart);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
140 adjustPlot(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
141
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
142 //debugAxis(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
143
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
144 addDatasets(plot);
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 //debugDatasets(plot);
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 addMarkers(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
149
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
150 recoverEmptyPlot(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
151 preparePointRanges(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
152
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
153 //debugAxis(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
154
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
155 localizeAxes(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
156 adjustAxes(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
157 if (!(axis instanceof LogarithmicAxis)) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
158 // XXX:
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
159 // The auto zoom without a range tries
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
160 // to include 0 in a logarithmic axis
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
161 // which triggers a bug in jfreechart that causes
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
162 // the values to be drawn carthesian
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
163 autoZoom(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
164 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
165
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
166 //debugAxis(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
167
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
168 // These have to go after the autozoom.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
169 AnnotationHelper.addAnnotationsToRenderer(annotations, plot,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
170 getChartSettings(), datasets);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
171
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
172 // Add a logo (maybe).
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
173 addLogo(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
174
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
175 aggregateLegendEntries(plot);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
176
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
177 return chart;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
178 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
179
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
180 public String getOutName() {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
181 return outName;
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
182 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
183
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 * 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
186 * Shortcut, especially to be overridden in (LS) charts where
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
187 * axis could be inverted.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
188 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
189 protected double getLeftX() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
190 return (Double)getXBounds(0).getLower();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
191 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
192
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
193
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
194 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
195 * 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
196 * Shortcut, especially to be overridden in (LS) charts where
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
197 * axis could be inverted.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
198 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
199 protected double getRightX() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
200 return (Double)getXBounds(0).getUpper();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
201 }
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
204 /** Add a logo as background annotation to plot. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
205 protected void addLogo(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
206 String logo = showLogo();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
207 if (logo == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
208 logger.debug("No logo to show chosen");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
209 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
210 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
211
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
212 ImageIcon imageIcon = null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
213 if (logo.equals("none")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
214 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
215 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
216 /*
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
217 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
218 flys-artifacts:
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
219 DiagramGenerator.java
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
220 Timeseries*Generator.java and
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
221 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
222 Also, these images have to be put in
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
223 flys-artifacts/src/main/resources/images/
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
224 flys-client/src/main/webapp/images/
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
225 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
226 java.net.URL imageURL;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
227 if (logo.equals("Intevation")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
228 imageURL = DiagramGenerator.class.getResource("/images/intevation.png");
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 else { // TODO else if ...
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
231 imageURL = DiagramGenerator.class.getResource("/images/bfg_logo.gif");
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 imageIcon = new ImageIcon(imageURL);
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
236 double xPos = 0d, yPos = 0d;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
237
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
238 String placeh = logoHPlace();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
239 String placev = logoVPlace();
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 if (placev == null || placev.equals("none")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
242 placev = "top";
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
243 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
244 if (placev.equals("top")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
245 yPos = (Double)getYBounds(0).getUpper();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
246 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
247 else if (placev.equals("bottom")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
248 yPos = (Double)getYBounds(0).getLower();
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 else if (placev.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
251 yPos = ((Double)getYBounds(0).getUpper() + (Double)getYBounds(0).getLower())/2d;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
252 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
253 else {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
254 logger.debug("Unknown place-v value: " + placev);
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
257 if (placeh == null || placeh.equals("none")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
258 placeh = "center";
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
259 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
260 if (placeh.equals("left")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
261 xPos = getLeftX();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
262 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
263 else if (placeh.equals("right")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
264 xPos = getRightX();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
265 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
266 else if (placeh.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
267 xPos = ((Double)getXBounds(0).getUpper() + (Double)getXBounds(0).getLower())/2d;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
268 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
269 else {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
270 logger.debug("Unknown place-h value: " + placeh);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
271 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
272
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
273 logger.debug("logo position: " + xPos + "/" + yPos);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
274
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
275 org.jfree.ui.RectangleAnchor anchor
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
276 = org.jfree.ui.RectangleAnchor.TOP;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
277 if (placev.equals("top")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
278 if (placeh.equals("left")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
279 anchor = org.jfree.ui.RectangleAnchor.TOP_LEFT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
280 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
281 else if (placeh.equals("right")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
282 anchor = org.jfree.ui.RectangleAnchor.TOP_RIGHT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
283 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
284 else if (placeh.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
285 anchor = org.jfree.ui.RectangleAnchor.TOP;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
286 }
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 if (placeh.equals("left")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
290 anchor = org.jfree.ui.RectangleAnchor.BOTTOM_LEFT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
291 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
292 else if (placeh.equals("right")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
293 anchor = org.jfree.ui.RectangleAnchor.BOTTOM_RIGHT;
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 if (placeh.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
296 anchor = org.jfree.ui.RectangleAnchor.BOTTOM;
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 else if (placev.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
300 if (placeh.equals("left")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
301 anchor = org.jfree.ui.RectangleAnchor.LEFT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
302 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
303 else if (placeh.equals("right")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
304 anchor = org.jfree.ui.RectangleAnchor.RIGHT;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
305 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
306 else if (placeh.equals("center")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
307 anchor = org.jfree.ui.RectangleAnchor.CENTER;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
308 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
309 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
310
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
311 XYAnnotation xyannotation =
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
312 new XYImageAnnotation(xPos, yPos, imageIcon.getImage(), anchor);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
313 plot.getRenderer().addAnnotation(xyannotation, org.jfree.ui.Layer.BACKGROUND);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
314 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
315
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
316
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
317 protected NumberAxis createXAxis(String label) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
318 return new NumberAxis(label);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
319 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
320
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
321
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
322 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
323 protected Series getSeriesOf(XYDataset dataset, int idx) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
324 return ((XYSeriesCollection) dataset).getSeries(idx);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
325 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
326
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
327
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
328 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
329 protected AxisDataset createAxisDataset(int idx) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
330 logger.debug("Create new AxisDataset for index: " + idx);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
331 return new AxisDataset(idx);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
332 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
333
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 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
336 * Put debug output about datasets.
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 public void debugDatasets(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
339 logger.debug("Number of datasets: " + plot.getDatasetCount());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
340 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
341 if (plot.getDataset(i) == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
342 logger.debug("Dataset #" + i + " is null");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
343 continue;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
344 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
345 logger.debug("Dataset #" + i + ":" + plot.getDataset(i));
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
346 XYSeriesCollection series = (XYSeriesCollection) plot.getDataset(i);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
347 logger.debug("X-Extend of Dataset: " + series.getSeries(0).getMinX()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
348 + " " + series.getSeries(0).getMaxX());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
349 logger.debug("Y-Extend of Dataset: " + series.getSeries(0).getMinY()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
350 + " " + series.getSeries(0).getMaxY());
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
355 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
356 * Put debug output about axes.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
357 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
358 public void debugAxis(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
359 logger.debug("...............");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
360 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
361 if (plot.getRangeAxis(i) == null)
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
362 logger.debug("Range-Axis #" + i + " == null");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
363 else {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
364 logger.debug("Range-Axis " + i + " != null [" +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
365 plot.getRangeAxis(i).getRange().getLowerBound() +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
366 " " + plot.getRangeAxis(i).getRange().getUpperBound() +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
367 "]");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
368 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
369 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
370 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
371 if (plot.getDomainAxis(i) == null)
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
372 logger.debug("Domain-Axis #" + i + " == null");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
373 else {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
374 logger.debug("Domain-Axis " + i + " != null [" +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
375 plot.getDomainAxis(i).getRange().getLowerBound() +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
376 " " + plot.getDomainAxis(i).getRange().getUpperBound() +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
377 "]");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
378 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
379 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
380 logger.debug("...............");
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
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
383 /**
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
384 * Registers an area to be drawn.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
385 * @param area Area to be drawn.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
386 * @param axisName Name of the axis.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
387 * @param visible Whether or not to be visible (important for range calculations).
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
388 */
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
389 public void addAreaSeries(StyledAreaSeriesCollection area, String axisName, boolean visible) {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
390 addAreaSeries(area, diagramAttributes.getAxisIndex(axisName), visible);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
391 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
392
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
393 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
394 * Registers an area to be drawn.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
395 * @param area Area to be drawn.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
396 * @param index 'axis index'
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
397 * @param visible Whether or not to be visible (important for range calculations).
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
398 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
399 public void addAreaSeries(StyledAreaSeriesCollection area, int index, boolean visible) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
400 if (area == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
401 logger.warn("Cannot yet render above/under curve.");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
402 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
403 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
404
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
405 AxisDataset axisDataset = (AxisDataset) getAxisDataset(index);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
406
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
407 if (visible) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
408 axisDataset.addArea(area);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
409 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
410 else {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
411 /* No range merging, for areas extending to infinity this
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
412 * causes problems. */
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 * 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
418 * 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
419 * @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
420 * @param index index of the axis.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
421 * @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
422 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
423 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
424 if (series == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
425 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
426 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
427
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
428 logger.debug("Y Range of XYSeries: " +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
429 series.getMinY() + " | " + series.getMaxY());
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 addAxisDataset(new XYSeriesCollection(series), index, visible);
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
432 }
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
433
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
434 /**
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
435 * 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
436 * 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
437 * @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
438 * @param axisName name of the axis.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
439 * @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
440 */
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
441 public void addAxisSeries(XYSeries series, String axisName, boolean visible) {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
442 addAxisSeries(series, diagramAttributes.getAxisIndex(axisName), visible);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
443 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
444
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
445
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
446 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
447 * Add the given vertical marker to the chart.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
448 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
449 public void addDomainMarker(Marker marker) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
450 addDomainMarker(marker, true);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
451 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
452
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
453
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
454 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
455 * 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
456 * 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
457 * @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
458 * @param visible The visibility of the marker.
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 public void addDomainMarker(Marker marker, boolean visible) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
461 if (visible && marker != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
462 domainMarkers.add(marker);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
463 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
464 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
465
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
466
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
467 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
468 * Add the given vertical marker to the chart.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
469 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
470 public void addValueMarker(Marker marker) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
471 addValueMarker(marker, true);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
472 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
473
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 * 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
477 * 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
478 * @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
479 * @param visible The visibility of the marker.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
480 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
481 public void addValueMarker(Marker marker, boolean visible) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
482 if (visible && marker != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
483 valueMarkers.add(marker);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
484 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
485 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
486
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
487
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
488 protected void addMarkers(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
489 for(Marker marker : domainMarkers) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
490 plot.addDomainMarker(marker);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
491 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
492 for(Marker marker : valueMarkers) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
493 plot.addRangeMarker(marker);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
494 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
495 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
496
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
497
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
498 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
499 * 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
500 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
501 * @param bounds the given ("minimal") bounds.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
502 * @param index index of axis to be merged.
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 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
505 protected void combineXBounds(Bounds bounds, int index) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
506 if (!(bounds instanceof DoubleBounds)) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
507 logger.warn("Unsupported Bounds type: " + bounds.getClass());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
508 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
509 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
510
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
511 DoubleBounds dBounds = (DoubleBounds) bounds;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
512
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
513 if (dBounds == null
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
514 || Double.isNaN((Double) dBounds.getLower())
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
515 || Double.isNaN((Double) dBounds.getUpper())) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
516 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
517 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
518
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
519 Bounds old = getXBounds(index);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
520
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
521 if (old != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
522 dBounds = (DoubleBounds) dBounds.combine(old);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
523 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
524
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
525 setXBounds(index, dBounds);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
526 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
527
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
528
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
529 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
530 protected void combineYBounds(Bounds bounds, int index) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
531 if (!(bounds instanceof DoubleBounds)) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
532 logger.warn("Unsupported Bounds type: " + bounds.getClass());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
533 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
534 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
535
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
536 DoubleBounds dBounds = (DoubleBounds) bounds;
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 if (dBounds == null
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
539 || Double.isNaN((Double) dBounds.getLower())
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
540 || Double.isNaN((Double) dBounds.getUpper())) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
541 return;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
542 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
543
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
544 Bounds old = getYBounds(index);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
545
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
546 if (old != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
547 dBounds = (DoubleBounds) dBounds.combine(old);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
548 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
549
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
550 setYBounds(index, dBounds);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
551 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
552
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 * 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
556 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
557 private void recoverEmptyPlot(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
558 if (plot.getRangeAxis() == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
559 logger.debug("debug: No range axis");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
560 plot.setRangeAxis(createYAxis(0));
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
561 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
562 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
563
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
564
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 * 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
567 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
568 private void preparePointRanges(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
569 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
570
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
571 Integer key = Integer.valueOf(i);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
572 Bounds b = getXBounds(key);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
573
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 if (b != null && b.getLower().equals(b.getUpper())) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
576 logger.debug("Check whether to expand a x axis.i ("+b.getLower() + "-" + b.getUpper()+")");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
577 setXBounds(key, ChartHelper.expandBounds(b, 5));
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
578 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
579 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
580 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
581
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
582
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
583 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
584 * 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
585 * 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
586 * 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
587 * 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
588 * right of the data area.
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 * @param plot The XYPlot.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
591 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
592 protected void autoZoom(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
593 logger.debug("Zoom to specified ranges.");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
594
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
595 Range xrange = getDomainAxisRange();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
596 Range yrange = getValueAxisRange();
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 ValueAxis xAxis = plot.getDomainAxis();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
599
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
600 Range fixedXRange = getRangeForAxisFromSettings("X");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
601 if (fixedXRange != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
602 xAxis.setRange(fixedXRange);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
603 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
604 else {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
605 zoomX(plot, xAxis, getXBounds(0), xrange);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
606 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
607
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
608 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
609 ValueAxis yaxis = plot.getRangeAxis(i);
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 if (yaxis instanceof IdentifiableNumberAxis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
612 IdentifiableNumberAxis idAxis = (IdentifiableNumberAxis) yaxis;
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 Range fixedRange = getRangeForAxisFromSettings(idAxis.getId());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
615 if (fixedRange != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
616 yaxis.setRange(fixedRange);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
617 continue;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
618 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
619 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
620
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
621 if (yaxis == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
622 logger.debug("Zoom problem: no Y Axis for index: " + i);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
623 continue;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
624 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
625
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
626 logger.debug("Prepare zoom settings for y axis at index: " + i);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
627 zoomY(plot, yaxis, getYBounds(Integer.valueOf(i)), yrange);
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 }
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
632 protected Range getDomainAxisRange() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
633 String[] ranges = getDomainAxisRangeFromRequest();
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 if (ranges == null || ranges.length < 2) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
636 logger.debug("No zoom range for domain axis specified.");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
637 return null;
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
640 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
641 try {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
642 double from = Double.parseDouble(ranges[0]);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
643 double to = Double.parseDouble(ranges[1]);
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 if (from == 0 && to == 0) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
646 logger.debug("No range specified. Lower and upper X == 0");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
647 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
648 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
649
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
650 if (from > to) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
651 double tmp = to;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
652 to = from;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
653 from = tmp;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
654 }
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 return new Range(from, to);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
657 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
658 catch (NumberFormatException nfe) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
659 logger.warn("Wrong values for domain axis range.");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
660 }
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 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
664 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
665
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
666
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
667 protected Range getValueAxisRange() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
668 String[] ranges = getValueAxisRangeFromRequest();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
669
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
670 if (ranges == null || ranges.length < 2) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
671 logger.debug("No range specified. Lower and upper Y == 0");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
672 return null;
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 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
676 try {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
677 double from = Double.parseDouble(ranges[0]);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
678 double to = Double.parseDouble(ranges[1]);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
679
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
680 if (from == 0 && to == 0) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
681 logger.debug("No range specified. Lower and upper Y == 0");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
682 return null;
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 return from > to
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
686 ? new Range(to, from)
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
687 : new Range(from, to);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
688 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
689 catch (NumberFormatException nfe) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
690 logger.warn("Wrong values for value axis range.");
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 return null;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
695 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
696
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
697
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
698 protected boolean zoomX(XYPlot plot, ValueAxis axis, Bounds bounds, Range x) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
699 return zoom(plot, axis, bounds, x);
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
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 boolean zoomY(XYPlot plot, ValueAxis axis, Bounds bounds, Range x) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
704 return zoom(plot, axis, bounds, x);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
705 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
706
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
707
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
708 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
709 * Zooms the x axis to the range specified in the attribute document.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
710 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
711 * @param plot The XYPlot.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
712 * @param axis The axis the shoud be modified.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
713 * @param bounds The whole range specified by a dataset.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
714 * @param x A user defined range (null permitted).
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
715 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
716 * @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
717 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
718 protected boolean zoom(XYPlot plot, ValueAxis axis, Bounds bounds, Range x) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
719
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
720 if (bounds == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
721 return false;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
722 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
723
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
724 if (x != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
725 Bounds computed = calculateZoom(bounds, x);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
726 computed.applyBounds(axis, AXIS_SPACE);
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 logger.debug("Zoom axis to: " + computed);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
729
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
730 return true;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
731 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
732
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
733 bounds.applyBounds(axis, AXIS_SPACE);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
734 return false;
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 * 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
739 * @param bounds The given total bounds (unzoomed).
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
740 * @param range The range specifying the zoom.
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 * @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
743 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
744 protected Bounds calculateZoom(Bounds bounds, Range range) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
745 double min = bounds.getLower().doubleValue();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
746 double max = bounds.getUpper().doubleValue();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
747
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
748 if (logger.isDebugEnabled()) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
749 logger.debug("Minimum is: " + min);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
750 logger.debug("Maximum is: " + max);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
751 logger.debug("Lower zoom is: " + range.getLowerBound());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
752 logger.debug("Upper zoom is: " + range.getUpperBound());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
753 }
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 double diff = max > min ? max - min : min - max;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
756
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
757 DoubleBounds computed = new DoubleBounds(
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
758 min + range.getLowerBound() * diff,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
759 min + range.getUpperBound() * diff);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
760 return computed;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
761 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
762
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
763 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
764 * 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
765 * 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
766 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
767 * @param index The index of the y-Axis.
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 * @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
770 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
771 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
772 public Range[] getRangesForAxis(int index) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
773 logger.debug("getRangesForAxis " + index);
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 Bounds rx = getXBounds(Integer.valueOf(0));
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
776 Bounds ry = getYBounds(Integer.valueOf(index));
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 if (rx == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
779 logger.warn("Range for x axis not set." +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
780 " Using default values: 0 - 1.");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
781 rx = new DoubleBounds(0, 1);
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 if (ry == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
784 logger.warn("Range for y" + index +
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
785 " axis not set. Using default values: 0 - 1.");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
786 ry = new DoubleBounds(0, 1);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
787 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
788
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
789 return new Range[] {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
790 new Range(rx.getLower().doubleValue(), rx.getUpper().doubleValue()),
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
791 new Range(ry.getLower().doubleValue(), ry.getUpper().doubleValue())
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
792 };
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
793 }
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
796 /** Get X (usually horizontal) extent for given axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
797 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
798 public Bounds getXBounds(int axis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
799 return xBounds.get(axis);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
800 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
801
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
802
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
803 /** Set X (usually horizontal) extent for given axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
804 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
805 protected void setXBounds(int axis, Bounds bounds) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
806 if (bounds.getLower() == bounds.getUpper()) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
807 xBounds.put(axis, ChartHelper.expandBounds(bounds, 5d));
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 else {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
810 xBounds.put(axis, bounds);
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
815 /** Get Y (usually vertical) extent for given axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
816 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
817 public Bounds getYBounds(int axis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
818 return yBounds.get(axis);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
819 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
820
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
821
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
822 /** Set Y (usually vertical) extent for given axis. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
823 @Override
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
824 protected void setYBounds(int axis, Bounds bounds) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
825 yBounds.put(axis, bounds);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
826 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
827
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
828
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
829 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
830 * Adjusts the axes of a plot. This method sets the <i>labelFont</i> of the
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
831 * X axis.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
832 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
833 * (Duplicate in TimeseriesChartGenerator)
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
834 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
835 * @param plot The XYPlot of the chart.
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 protected void adjustAxes(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
838 ValueAxis xaxis = plot.getDomainAxis();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
839
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
840 ChartSettings chartSettings = getChartSettings();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
841 if (chartSettings == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
842 return;
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
845 Font labelFont = new Font(
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
846 DEFAULT_FONT_NAME,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
847 Font.BOLD,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
848 getXAxisLabelFontSize());
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 xaxis.setLabelFont(labelFont);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
851 xaxis.setTickLabelFont(labelFont);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
852 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
853
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
854
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 * 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
857 * calls localizeDomainAxis() for domain axes or localizeRangeAxis() for
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
858 * range axes.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
859 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
860 * @param plot The XYPlot.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
861 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
862 private void localizeAxes(XYPlot plot) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
863 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
864 ValueAxis axis = plot.getDomainAxis(i);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
865
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
866 if (axis != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
867 localizeDomainAxis(axis);
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 else {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
870 logger.warn("Domain axis at " + i + " is null.");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
871 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
872 }
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 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
875 ValueAxis axis = plot.getRangeAxis(i);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
876
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
877 if (axis != null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
878 localizeRangeAxis(axis);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
879 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
880 else {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
881 logger.warn("Range axis at " + i + " is null.");
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 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
884 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
885
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
886
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
887 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
888 * 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
889 * that is provided by getLocale().
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
890 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
891 * @param domainAxis The domain axis that needs localization.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
892 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
893 protected void localizeDomainAxis(ValueAxis domainAxis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
894 NumberFormat nf = NumberFormat.getInstance(getLocale());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
895 ((NumberAxis) domainAxis).setNumberFormatOverride(nf);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
896 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
897
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
898
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 * 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
901 * that is provided by getLocale().
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
902 *
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
903 * @param rangeAxis The domain axis that needs localization.
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 protected void localizeRangeAxis(ValueAxis rangeAxis) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
906 NumberFormat nf = NumberFormat.getInstance(getLocale());
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
907 ((NumberAxis) rangeAxis).setNumberFormatOverride(nf);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
908 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
909
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
910
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
911 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
912 * Do Points out.
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 protected void doPoints(
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
915 Object o,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
916 ArtifactAndFacet aandf,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
917 ThemeDocument theme,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
918 boolean visible,
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
919 int axisIndex
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 String seriesName = aandf.getFacetDescription();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
922 XYSeries series = new StyledXYSeries(seriesName, theme);
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 // Add text annotations for single points.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
925 List<XYTextAnnotation> xy = new ArrayList<XYTextAnnotation>();
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 try {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
928 JSONArray points = new JSONArray((String) o);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
929 for (int i = 0, P = points.length(); i < P; i++) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
930 JSONArray array = points.getJSONArray(i);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
931 double x = array.getDouble(0);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
932 double y = array.getDouble(1);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
933 String name = array.getString(2);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
934 boolean act = array.getBoolean(3);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
935 if (!act) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
936 continue;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
937 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
938 //logger.debug(" x " + x + " y " + y );
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
939 series.add(x, y, false);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
940 xy.add(new CollisionFreeXYTextAnnotation(name, x, y));
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 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
943 catch(JSONException e){
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
944 logger.error("Could not decode json.");
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
945 }
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 RiverAnnotation annotation = new RiverAnnotation(null, null, null, theme);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
948 annotation.setTextAnnotations(xy);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
949
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
950 // Do not generate second legend entry. (null was passed for the aand before).
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
951 if (visible) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
952 annotations.add(annotation);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
953 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
954 // doAnnotations(annotations, null, theme, visible);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
955 addAxisSeries(series, axisIndex, visible);
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
958
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
959 /**
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
960 * Create a hash from a legenditem.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
961 * 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
962 * @return hash for given legenditem to identify mergeables.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
963 */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
964 public static String legendItemHash(LegendItem li) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
965 // TODO Do proper implementation. Ensure that only mergable sets are created.
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
966 // getFillPaint()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
967 // getFillPaintTransformer()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
968 // getLabel()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
969 // getLine()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
970 // getLinePaint()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
971 // getLineStroke()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
972 // getOutlinePaint()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
973 // getOutlineStroke()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
974 // Shape getShape()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
975 // String getToolTipText()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
976 // String getURLText()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
977 // boolean isLineVisible()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
978 // boolean isShapeFilled()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
979 // boolean isShapeOutlineVisible()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
980 // boolean isShapeVisible()
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
981 String hash = li.getLinePaint().toString();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
982 String label = li.getLabel();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
983 if (label.startsWith("W (") || label.startsWith("W(")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
984 hash += "-W-";
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 if (label.startsWith("Q(") || label.startsWith("Q (")) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
987 hash += "-Q-";
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 // 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
991
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
992 return hash;
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
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
995 /** True if x axis has been inverted. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
996 public boolean isInverted() {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
997 return inverted;
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
998 }
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 /** Set to true if x axis has been inverted. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1002 public void setInverted(boolean inverted) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1003 this.inverted = inverted;
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
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1006 @Override
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1007 public String getDefaultChartTitle() {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1008 DiagramAttributes.Title dTitle = diagramAttributes.getTitle();
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1009 if (dTitle == null) {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1010 return "Title not configured in conf.xml";
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1011 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1012
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1013 return dTitle.evaluate((D4EArtifact)getMaster(), context);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1014 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1015
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1016 @Override
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1017 public String getDefaultChartSubtitle() {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1018 DiagramAttributes.Title dTitle = diagramAttributes.getSubtitle();
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1019 if (dTitle == null) {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1020 return "Subtitle not configured in conf.xml";
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1021 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1022
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1023 return dTitle.evaluate((D4EArtifact)getMaster(), context);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1024 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1025
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1026 /**
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1027 * Get internationalized label for the x axis.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1028 */
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1029 @Override
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1030 protected String getDefaultXAxisLabel() {
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1031 DiagramAttributes.Title dTitle = diagramAttributes.getDomainAxisTitle();
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1032 if (dTitle == null) {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1033 return "Domain Axis Title not configured in conf.xml";
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1034 }
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1035
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1036 return dTitle.evaluate((D4EArtifact)getMaster(), context);
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1037 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1038
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1039 @Override
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1040 protected String getDefaultYAxisLabel(String axisName) {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1041 Processor pr = diagramAttributes.getProcessorForAxisName(axisName);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1042 return pr == null ? "" : pr.getAxisLabel(this);
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1043 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1044
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1045
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1046 /**
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1047 * 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
1048 *
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1049 * @return a list of Y axis sections.
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1050 */
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1051 protected List<AxisSection> buildYAxisSections() {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1052 List<AxisSection> axisSections = new ArrayList<AxisSection>();
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1053
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1054 List<DiagramAttributes.AxisAttributes> axesAttrs = diagramAttributes.getAxesAttributes();
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1055
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1056 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
1057 AxisSection ySection = new AxisSection();
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1058 String axisName = diagramAttributes.getAxisName(i);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1059 ySection.setIdentifier(axisName);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1060 ySection.setLabel(getYAxisLabel(axisName));
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1061 ySection.setFontSize(14);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1062 ySection.setFixed(false);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1063
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1064 // 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
1065 // 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
1066 // 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
1067 // for each axis set!
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1068 ySection.setUpperRange(0d);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1069 ySection.setLowerRange(0d);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1070
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1071 axisSections.add(ySection);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1072 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1073
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1074 return axisSections;
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1075 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1076
7084
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1077 /**
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1078 * 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
1079 *
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1080 * @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
1081 */
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1082 protected String getYAxisLabel(String axisName) {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1083 ChartSettings chartSettings = getChartSettings();
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1084 if (chartSettings == null) {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1085 return getDefaultYAxisLabel(axisName);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1086 }
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1087 AxisSection as = chartSettings.getAxisSection(axisName);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1088 if (as != null) {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1089 String label = as.getLabel();
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1090 if (label != null) {
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1091 return label;
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1092 }
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1093 }
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1094
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1095 return getDefaultYAxisLabel(axisName);
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1096 }
f0731aa7b735 Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents: 7081
diff changeset
1097
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1098 protected String axisIndexToName(int index) {
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1099 return diagramAttributes.getAxisName(index);
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1100 }
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1101
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1102 /** 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
1103 * For every outable facets, this function is
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1104 * called and handles the data accordingly. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1105 @Override
7052
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1106 public void doOut(
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1107 ArtifactAndFacet bundle,
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1108 ThemeDocument theme,
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1109 boolean visible
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1110 ) {
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1111 String facetName = bundle.getFacetName();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1112 Facet facet = bundle.getFacet();
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1113
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1114 /* A conservative security check */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1115 if (facetName == null || facet == null) {
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1116 /* Can't happen,.. */
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1117 logger.error("doOut called with null facet.");
7052
7056fa3b1f75 Call processors from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7051
diff changeset
1118 return;
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1119 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1120
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1121 logger.debug("DoOut for facet: " + facetName);
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1122
7059
f9d5020af0af Remove AxisProcessor "glue" class and extend Processor interface
Andre Heinecke <aheinecke@intevation.de>
parents: 7052
diff changeset
1123 for (Processor pr: diagramAttributes.getProcessors()) {
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1124 if (pr.canHandle(facetName)) {
7068
726d998dce29 Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents: 7059
diff changeset
1125 pr.doOut(this, bundle, theme, visible);
7044
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1126 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1127 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1128 }
6ab1464021ae Add DiagramGenerator which should mainly replace xygenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1129 }

http://dive4elements.wald.intevation.org