Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/LongitudinalSectionGenerator2.java @ 7597:fca46ce8e4f5
(issue1225) Implement Magic labels.
There is now a new value in the chartsettings "Suggested Label" which
is hidden in the property editor. A suggested label is the label that
combines the label's of all processors that wrote data to an axis.
This suggested label is set as the label when the user has not
overwritten the label.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Mon, 25 Nov 2013 14:58:14 +0100 |
parents | 81416a62fa57 |
children | ad4a3980092f |
rev | line source |
---|---|
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
3 * |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
7 */ |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
8 |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.exports; |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
10 |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
11 import org.dive4elements.river.artifacts.D4EArtifact; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
12 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
13 import org.dive4elements.river.artifacts.access.RangeAccess; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
14 import org.dive4elements.river.jfree.Bounds; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
15 import org.dive4elements.river.jfree.DoubleBounds; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
16 import org.dive4elements.river.themes.ThemeDocument; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
17 |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
18 public class LongitudinalSectionGenerator2 extends DiagramGenerator |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
19 { |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
20 public static final String I18N_CHART_SHORT_SUBTITLE = |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
21 "chart.longitudinal.section.shortsubtitle"; |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
22 |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
23 public static final String I18N_CHART_LOCATION_SUBTITLE = |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
24 "chart.longitudinal.section.locsubtitle"; |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
25 |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
26 @Override |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
27 public String getDefaultChartSubtitle() { |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
28 double[] dist = getRange(); |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
29 |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
30 if (dist == null || dist.length != 2 || |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
31 Double.isNaN(dist[0]) || Double.isNaN(dist[1])) { |
7118
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
32 Object [] args = new Object[] {getRiverName()}; |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
33 return msg(I18N_CHART_SHORT_SUBTITLE, "", args); |
7118
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
34 } |
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
35 |
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
36 if (Math.abs(dist[0] - dist[1]) < 1E-5) { |
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
37 Object [] args = new Object[] {getRiverName(), dist[1]}; |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
38 return msg(I18N_CHART_LOCATION_SUBTITLE, "", args); |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
39 } |
7118
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
40 |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
41 return super.getDefaultChartSubtitle(); |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
42 } |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
43 |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
44 /* We override doOut here to save the startkm and endkm in the |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
45 * context. Some facets will deliver different data because of |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
46 * that setting. It is mainly used in MINFO where it causes |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
47 * adaptive smoothing on the data if you are zoomed out do |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
48 * reduce the static in the curve. */ |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
49 @Override |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
50 public void doOut( |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
51 ArtifactAndFacet bundle, |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
52 ThemeDocument theme, |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
53 boolean visible |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
54 ) { |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
55 /* Aheinecke (25.09.2013): I do not understand why this has to be |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
56 * done so difficult and if it really must be done for every |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
57 * facet. At least it has to be done _before_ the super class |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
58 * actually does the output and accesses the facet data. |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
59 */ |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
60 D4EArtifact artifact = (D4EArtifact)bundle.getArtifact(); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
61 |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
62 if (getXBounds(0) != null && getDomainAxisRange() != null) { |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
63 Bounds bounds = |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
64 calculateZoom(getXBounds(0), getDomainAxisRange()); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
65 context.putContextValue("startkm", bounds.getLower()); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
66 context.putContextValue("endkm", bounds.getUpper()); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
67 } |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
68 else if (getXBounds(0) != null && getDomainAxisRange() == null) { |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
69 context.putContextValue("startkm", getXBounds(0).getLower()); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
70 context.putContextValue("endkm", getXBounds(0).getUpper()); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
71 } |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
72 else if (getXBounds(0) == null && getDomainAxisRange() == null) { |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
73 RangeAccess access = new RangeAccess(artifact); |
7168
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
74 if (access.hasFrom() && access.hasTo()) { |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
75 context.putContextValue("startkm", access.getFrom()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
76 context.putContextValue("endkm", access.getTo()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
77 } |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
78 } |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
79 else if (getXBounds(0) == null && getDomainAxisRange() != null){ |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
80 RangeAccess access = new RangeAccess(artifact); |
7168
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
81 if (access.hasFrom() && access.hasTo()) { |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
82 Bounds b = new DoubleBounds(access.getFrom(), access.getTo()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
83 Bounds bounds = |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
84 calculateZoom(b, getDomainAxisRange()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
85 context.putContextValue("startkm", bounds.getLower()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
86 context.putContextValue("endkm", bounds.getUpper()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
87 } |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
88 } |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
89 super.doOut(bundle, theme, visible); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
90 } |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
91 } |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
92 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |