annotate artifacts/src/main/java/org/dive4elements/river/exports/CrossSectionGenerator.java @ 6955:94cb1845c667

(issue1452) Coalesce to zero to avoid NaN arithmetic.
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 30 Aug 2013 15:45:14 +0200
parents 7a9cbb3a3d5a
children ed8623b989f3
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5130
diff changeset
9 package org.dive4elements.river.exports;
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
10
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
11 import java.awt.BasicStroke;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
12 import java.awt.Color;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
13 import java.awt.Paint;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
14 import java.awt.Stroke;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
15 import java.text.NumberFormat;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
16 import java.util.List;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
17
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
18 import org.apache.log4j.Logger;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
19 import org.jfree.chart.LegendItemCollection;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
20 import org.jfree.chart.annotations.XYBoxAnnotation;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
21 import org.jfree.chart.annotations.XYTextAnnotation;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
22 import org.jfree.chart.plot.XYPlot;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
23 import org.jfree.data.xy.XYSeries;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
24
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5130
diff changeset
25 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5130
diff changeset
26 import org.dive4elements.artifacts.DataProvider;
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
27 import org.dive4elements.river.artifacts.D4EArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5130
diff changeset
28 import org.dive4elements.river.artifacts.geom.Lines;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5130
diff changeset
29 import org.dive4elements.river.artifacts.model.CrossSectionFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5130
diff changeset
30 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5130
diff changeset
31 import org.dive4elements.river.artifacts.model.HYKFactory;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5130
diff changeset
32 import org.dive4elements.river.artifacts.resources.Resources;
5864
f2e46a668fe6 River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
33 import org.dive4elements.river.jfree.RiverAnnotation;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5130
diff changeset
34 import org.dive4elements.river.jfree.StyledXYSeries;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5130
diff changeset
35 import org.dive4elements.river.model.FastCrossSectionLine;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5130
diff changeset
36 import org.dive4elements.river.themes.LineStyle;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5130
diff changeset
37 import org.dive4elements.river.themes.TextStyle;
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
38 import org.dive4elements.river.themes.ThemeDocument;
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5864
diff changeset
39 import org.dive4elements.river.utils.RiverUtils;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5130
diff changeset
40 import org.dive4elements.river.utils.Formatter;
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
41
2120
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
42
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
43 /**
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44 * An OutGenerator that generates cross section graphs.
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
45 */
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
46 public class CrossSectionGenerator
2138
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
47 extends LongitudinalSectionGenerator
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48 implements FacetTypes
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49 {
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
50 /** The logger that is used in this generator. */
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
51 private static Logger logger =
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
52 Logger.getLogger(CrossSectionGenerator.class);
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
53
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
54 public static final String I18N_CHART_TITLE =
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
55 "chart.cross_section.title";
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
56
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
57 public static final String I18N_CHART_SUBTITLE =
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
58 "chart.cross_section.subtitle";
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
59
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
60 public static final String I18N_XAXIS_LABEL =
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
61 "chart.cross_section.xaxis.label";
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
62
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
63 public static final String I18N_YAXIS_LABEL =
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
64 "chart.cross_section.yaxis.label";
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
65
1125
65d8b3340397 Cleanups of CrossSection*.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1122
diff changeset
66 public static final String I18N_CHART_TITLE_DEFAULT = "Querprofildiagramm";
65d8b3340397 Cleanups of CrossSection*.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1122
diff changeset
67 public static final String I18N_XAXIS_LABEL_DEFAULT = "Abstand [m]";
65d8b3340397 Cleanups of CrossSection*.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1122
diff changeset
68 public static final String I18N_YAXIS_LABEL_DEFAULT = "W [NN + m]";
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
69
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
70
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
71 /** Trivial Constructor. */
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
72 public CrossSectionGenerator() {
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
73 super();
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
74 }
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
75
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
76
2052
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
77 @Override
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
78 protected YAxisWalker getYAxisWalker() {
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
79 return new YAxisWalker() {
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
80 @Override
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
81 public int length() {
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
82 return 1;
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
83 }
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
84
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
85 /** Get identifier for this index. */
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
86 @Override
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
87 public String getId(int idx) {
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
88 return "W";
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
89 }
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
90 };
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
91 }
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
92
c7f18fa0d685 Added missing getYAxisWalker() in CrossSectionGenerator and create new instances of IdentfifiableNumberAxis in XYChartGenerator.createYAxis(int).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2051
diff changeset
93
1125
65d8b3340397 Cleanups of CrossSection*.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1122
diff changeset
94 /**
65d8b3340397 Cleanups of CrossSection*.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1122
diff changeset
95 * Get localized chart title.
65d8b3340397 Cleanups of CrossSection*.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1122
diff changeset
96 */
2048
3157a78e6494 Improved chart title and subtitle creation in ChartGenerators - all ChartGenerators make now use of title and subtitle provided by ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2044
diff changeset
97 @Override
2104
bb0dede9294f Implementation towards areas at other than first axis (flys/issue441).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
98 public String getDefaultChartTitle() {
1141
bcba246d9c03 Fix various issues like i18n in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1125
diff changeset
99 Object[] i18n_msg_args = new Object[] {
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
100 getRiverName()
1141
bcba246d9c03 Fix various issues like i18n in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1125
diff changeset
101 };
bcba246d9c03 Fix various issues like i18n in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1125
diff changeset
102 return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT, i18n_msg_args);
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
103 }
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
104
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
105
2138
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
106 /** Always return default subtitle. */
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
107 @Override
1989
156304542edf Finished the ChartSection part of the chart Settings returned by the XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1975
diff changeset
108 protected String getChartSubtitle() {
2048
3157a78e6494 Improved chart title and subtitle creation in ChartGenerators - all ChartGenerators make now use of title and subtitle provided by ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2044
diff changeset
109 // XXX NOTE: overriding this method disables ChartSettings subtitle!
2167
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
110 // The default implementation of this method in ChartGenerator returns
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
111 // the subtitle changed via the chart settings dialog. This method
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
112 // always returns the subtitle containing river and km, NEVER the
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
113 // ChartSettings subtitle!
2048
3157a78e6494 Improved chart title and subtitle creation in ChartGenerators - all ChartGenerators make now use of title and subtitle provided by ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2044
diff changeset
114 return getDefaultChartSubtitle();
3157a78e6494 Improved chart title and subtitle creation in ChartGenerators - all ChartGenerators make now use of title and subtitle provided by ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2044
diff changeset
115 }
3157a78e6494 Improved chart title and subtitle creation in ChartGenerators - all ChartGenerators make now use of title and subtitle provided by ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2044
diff changeset
116
3157a78e6494 Improved chart title and subtitle creation in ChartGenerators - all ChartGenerators make now use of title and subtitle provided by ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2044
diff changeset
117
2138
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
118 /** Get Charts default subtitle. */
2048
3157a78e6494 Improved chart title and subtitle creation in ChartGenerators - all ChartGenerators make now use of title and subtitle provided by ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2044
diff changeset
119 @Override
3157a78e6494 Improved chart title and subtitle creation in ChartGenerators - all ChartGenerators make now use of title and subtitle provided by ChartSettings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2044
diff changeset
120 protected String getDefaultChartSubtitle() {
2042
3f6b519300ec Include selected km in cross section diagrams subtitle.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2033
diff changeset
121 List<DataProvider> providers =
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
122 context.getDataProvider(CrossSectionFacet.BLACKBOARD_CS_MASTER_DATA);
2042
3f6b519300ec Include selected km in cross section diagrams subtitle.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2033
diff changeset
123 double km = 0d;
3f6b519300ec Include selected km in cross section diagrams subtitle.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2033
diff changeset
124 if (providers.size() > 0) {
2120
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
125 FastCrossSectionLine csl = (FastCrossSectionLine) providers.get(0).
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
126 provideData(CrossSectionFacet.BLACKBOARD_CS_MASTER_DATA,
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
127 null, context);
3602
e1fd2dfdcb80 Issue #806 and NullPointerExceptions in CrossSectionGenerator fixed
Christian Lins <christian.lins@intevation.de>
parents: 3555
diff changeset
128 km = csl == null ? -1 : csl.getKm();
2042
3f6b519300ec Include selected km in cross section diagrams subtitle.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2033
diff changeset
129 }
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
130
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
131 Object[] args = new Object[] {
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
132 getRiverName(),
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
133 km
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
134 };
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
135
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
136 logger.debug("Locale: " + Resources.getLocale(context.getMeta()));
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
137
1989
156304542edf Finished the ChartSection part of the chart Settings returned by the XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1975
diff changeset
138 return msg(I18N_CHART_SUBTITLE, "", args);
156304542edf Finished the ChartSection part of the chart Settings returned by the XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1975
diff changeset
139 }
156304542edf Finished the ChartSection part of the chart Settings returned by the XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1975
diff changeset
140
156304542edf Finished the ChartSection part of the chart Settings returned by the XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1975
diff changeset
141
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
142 /** Get color for hyk zones by their type (which is the name). */
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
143 protected Paint colorForHYKZone(String zoneName) {
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
144 if (zoneName.startsWith("R")) {
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
145 // Brownish.
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
146 return new Color(153, 60, 0);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
147 }
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
148 else if (zoneName.startsWith("V")) {
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
149 // Greenish.
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
150 return new Color(0, 255, 0);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
151 }
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
152 else if (zoneName.startsWith("B")) {
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
153 // Grayish.
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
154 return new Color(128, 128, 128);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
155 }
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
156 else if (zoneName.startsWith("H")) {
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
157 // Blueish.
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
158 return new Color(0, 0, 255);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
159 }
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
160 else {
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
161 // Default.
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
162 logger.debug("Unknown zone type found.");
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
163 return new Color(255, 0, 0);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
164 }
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
165 }
3280
4a70525c5b0d Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3278
diff changeset
166
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
167 @Override
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
168 protected void addAnnotationsToRenderer(XYPlot plot) {
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
169 super.addAnnotationsToRenderer(plot);
3280
4a70525c5b0d Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3278
diff changeset
170
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
171 // Paints for the boxes/lines.
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
172 Stroke basicStroke = new BasicStroke(1.0f);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
173
4047
3dc26ec2558d Removed dead code
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3904
diff changeset
174 // XXX: DEAD CODE // Paint linePaint = new Color(255, 0,0,60);
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
175 Paint fillPaint = new Color(0, 255,0,60);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
176 Paint tranPaint = new Color(0, 0,0, 0);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
177
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
178 // OPTMIMIZE: Pre-calculate positions
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
179 ChartArea area = new ChartArea(
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
180 plot.getDomainAxis(0).getRange(),
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
181 plot.getRangeAxis().getRange());
3280
4a70525c5b0d Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3278
diff changeset
182
5864
f2e46a668fe6 River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
183 for(RiverAnnotation fa : this.annotations) {
3280
4a70525c5b0d Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3278
diff changeset
184
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
185 // Access text styling, if any.
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
186 ThemeDocument theme = fa.getTheme();
3464
0b9b2a0c4e64 Point labels can have a background color now.
Christian Lins <christian.lins@intevation.de>
parents: 3453
diff changeset
187 TextStyle textStyle = null;
4047
3dc26ec2558d Removed dead code
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3904
diff changeset
188 // XXX: DEAD CODE // LineStyle lineStyle = null;
3280
4a70525c5b0d Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3278
diff changeset
189
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
190 // Get Themeing information and add legend item.
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
191 if (theme != null) {
6906
7a9cbb3a3d5a Artifacts: Moved logic of ThemeUtils into ThemeDocument. TODO: Remove ThemeUtils
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6905
diff changeset
192 textStyle = theme.parseComplexTextStyle();
4047
3dc26ec2558d Removed dead code
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3904
diff changeset
193 // XXX: DEAD CODE // lineStyle = themeAccess.parseLineStyle();
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
194 if (fa.getLabel() != null) {
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
195 LegendItemCollection lic = new LegendItemCollection();
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
196 LegendItemCollection old = plot.getFixedLegendItems();
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
197 lic.add(createLegendItem(theme, fa.getLabel()));
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
198 // (Re-)Add prior legend entries.
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
199 if (old != null) {
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
200 old.addAll(lic);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
201 }
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
202 else {
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
203 old = lic;
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
204 }
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
205 plot.setFixedLegendItems(old);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
206 }
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
207 }
3280
4a70525c5b0d Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3278
diff changeset
208
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
209 // Hyks.
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
210 for (HYKFactory.Zone zone: fa.getBoxes()) {
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
211 // For each zone, create a box to fill with color, a box to draw
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
212 // the lines and a text to display the type.
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
213 fillPaint = colorForHYKZone(zone.getName());
3280
4a70525c5b0d Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3278
diff changeset
214
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
215 XYBoxAnnotation boxA = new XYBoxAnnotation(zone.getFrom(), area.atGround(),
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
216 zone.getTo(), area.ofGround(0.03f), basicStroke, tranPaint, fillPaint);
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
217 XYBoxAnnotation boxB = new XYBoxAnnotation(zone.getFrom(), area.atGround(),
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
218 zone.getTo(), area.atTop(), basicStroke, fillPaint, tranPaint);
3280
4a70525c5b0d Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3278
diff changeset
219
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
220 XYTextAnnotation tex = new XYTextAnnotation(zone.getName(),
4653
a93699cb31eb CrossSectionGenerator: Center HYK-labels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4047
diff changeset
221 zone.getFrom() + (zone.getTo() - zone.getFrom()) / 2.0d,
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
222 area.ofGround(0.015f));
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
223 if (textStyle != null) {
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
224 textStyle.apply(tex);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
225 }
3280
4a70525c5b0d Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3278
diff changeset
226
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
227 plot.getRenderer().addAnnotation(boxA, org.jfree.ui.Layer.BACKGROUND);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
228 plot.getRenderer().addAnnotation(boxB, org.jfree.ui.Layer.BACKGROUND);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
229 plot.getRenderer().addAnnotation(tex, org.jfree.ui.Layer.BACKGROUND);
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
230 }
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
231 }
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
232 }
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
233
2051
4ba5036109d2 Make use of user defined axes labels during chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2048
diff changeset
234 @Override
4ba5036109d2 Make use of user defined axes labels during chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2048
diff changeset
235 protected String getDefaultXAxisLabel() {
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
236 return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT);
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
237 }
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
238
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
239
2051
4ba5036109d2 Make use of user defined axes labels during chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2048
diff changeset
240 @Override
4ba5036109d2 Make use of user defined axes labels during chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2048
diff changeset
241 protected String getDefaultYAxisLabel(int pos) {
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
242 D4EArtifact flys = (D4EArtifact) master;
5130
b11f3563a117 Part of fix for flys/issue1128: Use rivers unit in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4653
diff changeset
243
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5864
diff changeset
244 String unit = RiverUtils.getRiver(flys).getWstUnit().getName();
5130
b11f3563a117 Part of fix for flys/issue1128: Use rivers unit in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4653
diff changeset
245
b11f3563a117 Part of fix for flys/issue1128: Use rivers unit in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4653
diff changeset
246 return msg(I18N_YAXIS_LABEL,
b11f3563a117 Part of fix for flys/issue1128: Use rivers unit in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4653
diff changeset
247 I18N_YAXIS_LABEL_DEFAULT,
b11f3563a117 Part of fix for flys/issue1128: Use rivers unit in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4653
diff changeset
248 new Object[] { unit });
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
249 }
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
250
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
251
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
252 /**
1116
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1113
diff changeset
253 * Let one facet do its job.
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1113
diff changeset
254 */
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
255 @Override
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1158
diff changeset
256 public void doOut(
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
257 ArtifactAndFacet artifactFacet,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
258 ThemeDocument attr,
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
259 boolean visible
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
260 ) {
1944
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1931
diff changeset
261 String name = artifactFacet.getFacetName();
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
262
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
263 logger.debug("CrossSectionGenerator.doOut: " + name);
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
264
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
265 if (name == null) {
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
266 logger.error("No facet name for doOut(). No output generated!");
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
267 return;
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
268 }
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
269
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
270 if (name.equals(CROSS_SECTION)) {
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1158
diff changeset
271 doCrossSectionOut(
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
272 artifactFacet.getData(context),
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
273 artifactFacet.getFacetDescription(),
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
274 attr,
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
275 visible);
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
276 }
1122
111794adf285 Get real (but yet not parameterized) data to display in CrossSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1116
diff changeset
277 else if (name.equals(CROSS_SECTION_WATER_LINE)) {
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1158
diff changeset
278 doCrossSectionWaterLineOut(
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
279 artifactFacet.getData(context),
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
280 artifactFacet.getFacetDescription(),
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
281 attr,
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
282 visible);
1122
111794adf285 Get real (but yet not parameterized) data to display in CrossSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1116
diff changeset
283 }
2020
4f7f781e4481 Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2006
diff changeset
284 else if (FacetTypes.IS.AREA(name)) {
2006
5aecebcc4698 Add area dataseries when facet delivers one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1989
diff changeset
285 doArea(artifactFacet.getData(context),
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
286 artifactFacet,
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
287 attr,
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
288 visible);
2006
5aecebcc4698 Add area dataseries when facet delivers one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1989
diff changeset
289 }
2138
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
290 else if (name.equals(HYK)) {
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
291 doHyk(artifactFacet.getData(context),
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
292 artifactFacet.getFacetDescription(),
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
293 attr,
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
294 visible);
2138
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
295 }
3198
d35f28655fa6 Create and handle new manual line type facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3076
diff changeset
296 else if (FacetTypes.IS.MANUALLINE(name)) {
d35f28655fa6 Create and handle new manual line type facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3076
diff changeset
297 doCrossSectionWaterLineOut(
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
298 artifactFacet.getData(context),
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
299 artifactFacet.getFacetDescription(),
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
300 attr,
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
301 visible);
3198
d35f28655fa6 Create and handle new manual line type facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3076
diff changeset
302 }
2206
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2167
diff changeset
303 else if (FacetTypes.IS.MANUALPOINTS(name)) {
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2167
diff changeset
304 doPoints(artifactFacet.getData(context),
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
305 artifactFacet,
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
306 attr, visible, YAXIS.W.idx);
2206
e2124ca11adb Add manual point handling for many different chart types.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2167
diff changeset
307 }
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
308 else {
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
309 logger.warn("CrossSection.doOut: Unknown facet name: " + name);
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
310 return;
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
311 }
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
312 }
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
313
2020
4f7f781e4481 Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2006
diff changeset
314
2104
bb0dede9294f Implementation towards areas at other than first axis (flys/issue441).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
315 /** Look up the axis identifier for a given facet type. */
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
316 @Override
2104
bb0dede9294f Implementation towards areas at other than first axis (flys/issue441).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
317 public int axisIdxForFacet(String facetName) {
bb0dede9294f Implementation towards areas at other than first axis (flys/issue441).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
318 // TODO Where to add thid axis too.
bb0dede9294f Implementation towards areas at other than first axis (flys/issue441).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
319 return 0;
2006
5aecebcc4698 Add area dataseries when facet delivers one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1989
diff changeset
320 }
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
321
2020
4f7f781e4481 Improved area rendering workflow.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2006
diff changeset
322
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
323 /**
1122
111794adf285 Get real (but yet not parameterized) data to display in CrossSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1116
diff changeset
324 * Do cross sections waterline out.
111794adf285 Get real (but yet not parameterized) data to display in CrossSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1116
diff changeset
325 *
1141
bcba246d9c03 Fix various issues like i18n in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1125
diff changeset
326 * @param seriesName name of the data (line) to display in legend.
1122
111794adf285 Get real (but yet not parameterized) data to display in CrossSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1116
diff changeset
327 * @param theme Theme for the data series.
111794adf285 Get real (but yet not parameterized) data to display in CrossSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1116
diff changeset
328 */
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1158
diff changeset
329 protected void doCrossSectionWaterLineOut(
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
330 Object o,
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
331 String seriesName,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
332 ThemeDocument theme,
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
333 boolean visible
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
334 ) {
1122
111794adf285 Get real (but yet not parameterized) data to display in CrossSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1116
diff changeset
335 logger.debug("CrossSectionGenerator.doCrossSectionWaterLineOut");
1141
bcba246d9c03 Fix various issues like i18n in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1125
diff changeset
336
2652
9d2a06c3a134 Added DataType for lines that also stores width, use it. Added HasLabel interface for some series.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2325
diff changeset
337 Lines.LineData lines = (Lines.LineData) o;
2728
306b9d0f0fb3 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2688
diff changeset
338 // DO NOT SORT DATA! This destroys the gaps indicated by NaNs.
2652
9d2a06c3a134 Added DataType for lines that also stores width, use it. Added HasLabel interface for some series.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2325
diff changeset
339 StyledXYSeries series = new StyledXYSeries(seriesName, false, theme);
1122
111794adf285 Get real (but yet not parameterized) data to display in CrossSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1116
diff changeset
340
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
341 if (!theme.parseShowLineLabel()) {
3228
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
342 series.setLabel("");
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
343 }
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
344 if (theme.parseShowWidth()) {
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
345 NumberFormat nf = Formatter.getMeterFormat(this.context);
3228
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
346 String labelAdd = "b=" + nf.format(lines.width) + "m";
3453
e74e707ff650 Replace string comparison with empty string with length equals zero comparison
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3409
diff changeset
347 if (series.getLabel().length() == 0) {
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
348 series.setLabel(labelAdd);
3228
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
349 }
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
350 else {
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
351 series.setLabel(series.getLabel() + ", " + labelAdd);
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
352 }
2663
33d61e2a49a2 Added and respect two new properties of waterlevels in cross-sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2652
diff changeset
353 }
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
354 if (theme.parseShowLevel() && lines.points.length > 1
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
355 && lines.points[1].length > 0) {
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
356 NumberFormat nf = Formatter.getMeterFormat(this.context);
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
357 D4EArtifact flys = (D4EArtifact) master;
5130
b11f3563a117 Part of fix for flys/issue1128: Use rivers unit in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4653
diff changeset
358
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5864
diff changeset
359 String unit = RiverUtils.getRiver(flys).getWstUnit().getName();
5130
b11f3563a117 Part of fix for flys/issue1128: Use rivers unit in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4653
diff changeset
360
b11f3563a117 Part of fix for flys/issue1128: Use rivers unit in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4653
diff changeset
361 String labelAdd = "W=" + nf.format(lines.points[1][0]) + unit;
3453
e74e707ff650 Replace string comparison with empty string with length equals zero comparison
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3409
diff changeset
362 if (series.getLabel().length() == 0) {
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
363 series.setLabel(labelAdd);
3228
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
364 }
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
365 else {
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
366 series.setLabel(series.getLabel() + ", " + labelAdd);
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
367 }
2663
33d61e2a49a2 Added and respect two new properties of waterlevels in cross-sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2652
diff changeset
368 }
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
369 if (theme.parseShowMiddleHeight() && lines.width != 0) {
3278
c27c4e06dd87 Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3228
diff changeset
370 NumberFormat nf = Formatter.getMeterFormat(this.context);
3640
1d2856de489d issue820: changed label for middle height/depth.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3619
diff changeset
371 String labelAdd = "T=" + nf.format(lines.area / lines.width) + "m";
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
372 // : " + lines.area + "/" + lines.width);
3453
e74e707ff650 Replace string comparison with empty string with length equals zero comparison
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3409
diff changeset
373 if (series.getLabel().length() == 0) {
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
374 series.setLabel(labelAdd);
3228
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
375 }
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
376 else {
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
377 series.setLabel(series.getLabel() + ", " + labelAdd);
698d09930329 Fix issue695 (labels of waterlines).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
378 }
2674
2be59d5b342c Added and respect theme prop whether or not to display (not yet calculated) middle height.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2663
diff changeset
379 }
2728
306b9d0f0fb3 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2688
diff changeset
380
2685
5652a851f1b4 Fix water-through-mountain in cross sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2674
diff changeset
381 StyledSeriesBuilder.addPoints(series, lines.points, false);
1791
e0e5a5b51a40 Added new StyledSeriesBuilder class and use it when adding points to XYSeries (in diagram generation).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1741
diff changeset
382
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1791
diff changeset
383 addAxisSeries(series, 0, visible);
1122
111794adf285 Get real (but yet not parameterized) data to display in CrossSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1116
diff changeset
384 }
111794adf285 Get real (but yet not parameterized) data to display in CrossSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1116
diff changeset
385
111794adf285 Get real (but yet not parameterized) data to display in CrossSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1116
diff changeset
386
2138
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
387 /** Add HYK-Annotations (colorize and label some areas, draw lines. */
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
388 protected void doHyk(
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
389 Object o,
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
390 String seriesName,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
391 ThemeDocument theme,
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
392 boolean visible
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
393 ) {
2138
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
394 logger.debug("CrossSectionGenerator.doHyk");
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
395
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
396 List<HYKFactory.Zone> zones = (List<HYKFactory.Zone>) o;
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
397
3555
b1912514e0f5 s/container.size() == 0/container.isEmpty()/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3464
diff changeset
398 if (zones == null || zones.isEmpty()) {
2789
834b81134b12 Fixed broken crosssection chart creation if no hyks are existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2772
diff changeset
399 logger.warn("CrossSectionGenerator.doHYK: empty zone list received.");
834b81134b12 Fixed broken crosssection chart creation if no hyks are existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2772
diff changeset
400 return;
2138
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
401 }
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
402
2152
2336927cb096 Add basic (text) styling for HYKS.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2143
diff changeset
403 // Actual Styling is done in XYChartGenerator.
2772
5e8e42a36a90 Minor refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2728
diff changeset
404 if (visible) {
5864
f2e46a668fe6 River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
405 addAnnotations(new RiverAnnotation(seriesName, null, zones, theme));
2772
5e8e42a36a90 Minor refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2728
diff changeset
406 }
2138
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
407 }
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
408
59bb5c895be3 Improved HYK/Zones- handling.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2126
diff changeset
409
1122
111794adf285 Get real (but yet not parameterized) data to display in CrossSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1116
diff changeset
410 /**
1116
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1113
diff changeset
411 * Do cross sections out.
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
412 *
1141
bcba246d9c03 Fix various issues like i18n in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1125
diff changeset
413 * @param seriesName name of the data (line) to display in legend.
1116
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1113
diff changeset
414 * @param theme Theme for the data series.
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
415 */
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1158
diff changeset
416 protected void doCrossSectionOut(
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
417 Object o,
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
418 String seriesName,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
419 ThemeDocument theme,
3771
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
420 boolean visible
04309ca24614 Locales fix
Christian Lins <christian.lins@intevation.de>
parents: 3640
diff changeset
421 ) {
1116
05e4ef0f9489 Improved stub for CrossSections (including Factory and Facet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1113
diff changeset
422 logger.debug("CrossSectionGenerator.doCrossSectionOut");
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
423
1141
bcba246d9c03 Fix various issues like i18n in cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1125
diff changeset
424 XYSeries series = new StyledXYSeries(seriesName, theme);
1122
111794adf285 Get real (but yet not parameterized) data to display in CrossSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1116
diff changeset
425
2685
5652a851f1b4 Fix water-through-mountain in cross sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2674
diff changeset
426 StyledSeriesBuilder.addPoints(series, (double [][]) o, false);
1791
e0e5a5b51a40 Added new StyledSeriesBuilder class and use it when adding points to XYSeries (in diagram generation).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1741
diff changeset
427
1931
7c52e9cb2a72 Allow more than two datasets and more flexibility with axes in plots. Based on patch by S. Teichmann.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1791
diff changeset
428 addAxisSeries(series, 0, visible);
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
429 }
2167
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
430
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
431
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
432 /**
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
433 * Creates a new <i>ChartSection</i>.
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
434 *
3619
1548935582bc Add logo settings to cross section chartsettings.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3613
diff changeset
435 * Overridden to prevent inclusion of subtitle.
1548935582bc Add logo settings to cross section chartsettings.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3613
diff changeset
436 *
2167
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
437 * @return a new <i>ChartSection</i>.
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
438 */
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
439 @Override
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
440 protected ChartSection buildChartSection() {
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
441 ChartSection chartSection = new ChartSection();
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
442 chartSection.setTitle(getChartTitle());
3613
dd6e25980c91 Fixed typo.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3602
diff changeset
443 chartSection.setDisplayGrid(isGridVisible());
3619
1548935582bc Add logo settings to cross section chartsettings.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3613
diff changeset
444 chartSection.setDisplayLogo(showLogo());
1548935582bc Add logo settings to cross section chartsettings.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3613
diff changeset
445 chartSection.setLogoVPlacement(logoVPlace());
1548935582bc Add logo settings to cross section chartsettings.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3613
diff changeset
446 chartSection.setLogoHPlacement(logoHPlace());
2167
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
447 return chartSection;
e0add4b2d4bc Issue 461.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2152
diff changeset
448 }
1111
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
449 }
b96ce07ba56c Added dummy sceleton for Cross Sections.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
450 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org