annotate artifacts/src/main/java/org/dive4elements/river/jfree/XYStyle.java @ 9555:ef5754ba5573

Implemented legend aggregation based on type of themes. Added theme-editor style configuration for aggregated legend entries. Only configured themes get aggregated.
author gernotbelger
date Tue, 23 Oct 2018 16:26:48 +0200
parents ddcd52d239cd
children
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: 5863
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: 5863
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: 3464
diff changeset
9 package org.dive4elements.river.jfree;
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import java.awt.BasicStroke;
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import java.awt.Color;
7541
d20a26e96ef1 issue1585: Part 1/2 of patch from Sascha Teichmann to define shape for datapoints.
sascha.teichmann@intevation.de
parents: 7156
diff changeset
13 import java.awt.Shape;
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 import java.awt.geom.Ellipse2D;
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
16 import org.dive4elements.river.themes.ThemeDocument;
9555
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
17 import org.jfree.chart.LegendItem;
3464
0b9b2a0c4e64 Point labels can have a background color now.
Christian Lins <christian.lins@intevation.de>
parents: 3405
diff changeset
18 import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 /**
2648
8aaa7f4ce06a Let theme define whether or not to display a (yet static) label for line).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2321
diff changeset
21 * Utility to apply theme-settings to a renderer.
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
22 *
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 */
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
25 public final class XYStyle implements Style {
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
27 private final ThemeDocument theme;
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
29 private XYLineAndShapeRenderer renderer;
7541
d20a26e96ef1 issue1585: Part 1/2 of patch from Sascha Teichmann to define shape for datapoints.
sascha.teichmann@intevation.de
parents: 7156
diff changeset
30
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
31 private final Shape shape;
3155
74c974b10c75 Output code to trackdown the linecolor problem
Christian Lins <christian.lins@intevation.de>
parents: 3134
diff changeset
32
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
33 public XYStyle(final ThemeDocument theme) {
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
34 this(theme, null);
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 }
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
37 public XYStyle(final ThemeDocument theme, final Shape shape) {
7541
d20a26e96ef1 issue1585: Part 1/2 of patch from Sascha Teichmann to define shape for datapoints.
sascha.teichmann@intevation.de
parents: 7156
diff changeset
38 this.theme = theme;
d20a26e96ef1 issue1585: Part 1/2 of patch from Sascha Teichmann to define shape for datapoints.
sascha.teichmann@intevation.de
parents: 7156
diff changeset
39 this.shape = shape;
d20a26e96ef1 issue1585: Part 1/2 of patch from Sascha Teichmann to define shape for datapoints.
sascha.teichmann@intevation.de
parents: 7156
diff changeset
40 }
d20a26e96ef1 issue1585: Part 1/2 of patch from Sascha Teichmann to define shape for datapoints.
sascha.teichmann@intevation.de
parents: 7156
diff changeset
41
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 /**
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 * Applies line color, size and type attributes to renderer, also
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 * whether to draw lines and/or points.
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 */
3464
0b9b2a0c4e64 Point labels can have a background color now.
Christian Lins <christian.lins@intevation.de>
parents: 3405
diff changeset
46 @Override
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
47 public XYLineAndShapeRenderer applyTheme(final XYLineAndShapeRenderer r, final int idx) {
7541
d20a26e96ef1 issue1585: Part 1/2 of patch from Sascha Teichmann to define shape for datapoints.
sascha.teichmann@intevation.de
parents: 7156
diff changeset
48 this.renderer = r;
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
49
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
50 if (this.shape != null)
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
51 r.setShape(this.shape);
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
52
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
53 if (this.theme == null)
7156
2d690611d110 Add NPE guard to XYStyle.
Andre Heinecke <aheinecke@intevation.de>
parents: 6905
diff changeset
54 return r;
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
55
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 applyLineColor(r, idx);
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 applyLineSize(r, idx);
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 applyLineType(r, idx);
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 applyShowLine(r, idx);
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
60
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
61 applyPointStyles(r, idx);
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
62
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 applyShowMinimum(r, idx);
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 applyShowMaximum(r, idx);
3464
0b9b2a0c4e64 Point labels can have a background color now.
Christian Lins <christian.lins@intevation.de>
parents: 3405
diff changeset
65
0b9b2a0c4e64 Point labels can have a background color now.
Christian Lins <christian.lins@intevation.de>
parents: 3405
diff changeset
66 // Line label styles
2648
8aaa7f4ce06a Let theme define whether or not to display a (yet static) label for line).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2321
diff changeset
67 applyShowLineLabel(r, idx);
3464
0b9b2a0c4e64 Point labels can have a background color now.
Christian Lins <christian.lins@intevation.de>
parents: 3405
diff changeset
68 applyShowLineLabelBG(r, idx);
2656
f1dcd5f94ffa Parse more theme properties for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2648
diff changeset
69 applyLineLabelFont(r, idx);
2660
1a044c51abe4 Respect colors of theme for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2656
diff changeset
70 applyLineLabelColor(r, idx);
1a044c51abe4 Respect colors of theme for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2656
diff changeset
71 applyLineLabelBGColor(r, idx);
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72
3464
0b9b2a0c4e64 Point labels can have a background color now.
Christian Lins <christian.lins@intevation.de>
parents: 3405
diff changeset
73 // Point label styles
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
74 // TODO: Currently point label are annotations and
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
75 // are not drawn this way
3464
0b9b2a0c4e64 Point labels can have a background color now.
Christian Lins <christian.lins@intevation.de>
parents: 3405
diff changeset
76 /*
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
77 * applyShowPointLabelBG(r, idx);
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
78 * applyLinePointFont(r, idx);
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
79 * applyLinePointColor(r, idx);
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
80 * applyLinePointBGColor(r, idx);
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
81 */
3464
0b9b2a0c4e64 Point labels can have a background color now.
Christian Lins <christian.lins@intevation.de>
parents: 3405
diff changeset
82
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 return r;
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 }
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 /** Set line color to renderer. */
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
87 private void applyLineColor(final XYLineAndShapeRenderer r, final int idx) {
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
88 final Color c = this.theme.parseLineColorField();
7545
4dbbdf0c8b2c More on flys/issue1585: Do not fill circle for interpolated W/Q points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7541
diff changeset
89 if (c != null) {
3155
74c974b10c75 Output code to trackdown the linecolor problem
Christian Lins <christian.lins@intevation.de>
parents: 3134
diff changeset
90 r.setSeriesPaint(idx, c);
74c974b10c75 Output code to trackdown the linecolor problem
Christian Lins <christian.lins@intevation.de>
parents: 3134
diff changeset
91 }
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 }
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93
2648
8aaa7f4ce06a Let theme define whether or not to display a (yet static) label for line).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2321
diff changeset
94 /** Tells the renderer whether or not to add a label to a line. */
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
95 private void applyShowLineLabel(final XYLineAndShapeRenderer r, final int idx) {
2656
f1dcd5f94ffa Parse more theme properties for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2648
diff changeset
96 if (!(r instanceof EnhancedLineAndShapeRenderer)) {
f1dcd5f94ffa Parse more theme properties for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2648
diff changeset
97 return;
f1dcd5f94ffa Parse more theme properties for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2648
diff changeset
98 }
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
99 final boolean showLabelLine = this.theme.parseShowLineLabel();
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
100 final boolean anyLabel = showLabelLine || this.theme.parseShowWidth() || this.theme.parseShowLevel() || this.theme.parseShowMiddleHeight();
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
101 ((EnhancedLineAndShapeRenderer) r).setShowLineLabel(anyLabel, idx);
2656
f1dcd5f94ffa Parse more theme properties for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2648
diff changeset
102 }
f1dcd5f94ffa Parse more theme properties for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2648
diff changeset
103
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
104 /** Tells the renderer whether or not to fill the bg of a lines label. */
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
105 private void applyShowLineLabelBG(final XYLineAndShapeRenderer r, final int idx) {
2660
1a044c51abe4 Respect colors of theme for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2656
diff changeset
106 if (!(r instanceof EnhancedLineAndShapeRenderer)) {
1a044c51abe4 Respect colors of theme for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2656
diff changeset
107 return;
1a044c51abe4 Respect colors of theme for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2656
diff changeset
108 }
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
109 final boolean showLabelLine = this.theme.parseLabelShowBackground();
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
110 ((EnhancedLineAndShapeRenderer) r).setShowLineLabelBG(idx, showLabelLine);
2660
1a044c51abe4 Respect colors of theme for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2656
diff changeset
111 }
1a044c51abe4 Respect colors of theme for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2656
diff changeset
112
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
113 /**
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
114 * Tell the renderer which font (and -size and -style) to use for
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
115 * linelabels.
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
116 */
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
117 private void applyLineLabelFont(final XYLineAndShapeRenderer r, final int idx) {
2660
1a044c51abe4 Respect colors of theme for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2656
diff changeset
118 if (!(r instanceof EnhancedLineAndShapeRenderer)) {
1a044c51abe4 Respect colors of theme for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2656
diff changeset
119 return;
1a044c51abe4 Respect colors of theme for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2656
diff changeset
120 }
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
121 ((EnhancedLineAndShapeRenderer) r).setLineLabelFont(this.theme.parseTextFont(), idx);
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
122 }
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
123
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
124 /**
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
125 * Tell the renderer which color to use for
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
126 * linelabels.
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
127 */
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
128 private void applyLineLabelColor(final XYLineAndShapeRenderer r, final int idx) {
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
129 if (!(r instanceof EnhancedLineAndShapeRenderer)) {
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
130 return;
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
131 }
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
132 ((EnhancedLineAndShapeRenderer) r).setLineLabelTextColor(idx, this.theme.parseTextColor());
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
133 }
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
134
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
135 /**
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
136 * Tell the renderer which color to use for bg of
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
137 * linelabels.
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
138 */
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
139 private void applyLineLabelBGColor(final XYLineAndShapeRenderer r, final int idx) {
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
140 if (!(r instanceof EnhancedLineAndShapeRenderer)) {
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
141 return;
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
142 }
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
143 ((EnhancedLineAndShapeRenderer) r).setLineLabelBGColor(idx, this.theme.parseTextBackground());
2660
1a044c51abe4 Respect colors of theme for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2656
diff changeset
144 }
2656
f1dcd5f94ffa Parse more theme properties for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2648
diff changeset
145
f1dcd5f94ffa Parse more theme properties for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2648
diff changeset
146 /** Set stroke of series. */
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
147 private void applyLineSize(final XYLineAndShapeRenderer r, final int idx) {
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
148 final int size = this.theme.parseLineWidth();
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
149 r.setSeriesStroke(idx, new BasicStroke(size));
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
150 }
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
151
2656
f1dcd5f94ffa Parse more theme properties for linelabels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2648
diff changeset
152 /** Set stroke strength of series. */
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
153 private void applyLineType(final XYLineAndShapeRenderer r, final int idx) {
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
154 final int size = this.theme.parseLineWidth();
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
155 final float[] dashes = this.theme.parseLineStyle();
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
156
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
157 // Do not apply the dashed style.
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
158 if (dashes.length <= 1) {
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
159 return;
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
160 }
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
161
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
162 r.setSeriesStroke(idx, new BasicStroke(size, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1.0f, dashes, 0.0f));
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
163 }
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
164
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
165 private void applyPointStyles(final XYLineAndShapeRenderer r, final int idx) {
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
166 applyPointSize(r, idx);
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
167
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
168 final Color c = this.theme.parsePointColor();
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
169 final boolean show = this.theme.parseShowPoints();
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
170 final boolean showOutline = this.theme.parseShowPointsOutline();
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
171
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
172 if (c != null)
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
173 r.setSeriesFillPaint(idx, c);
9555
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
174 r.setUseFillPaint(c != null);
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
175
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
176 r.setSeriesShapesFilled(idx, show);
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
177
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
178 r.setSeriesOutlinePaint(idx, c);
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
179 r.setDrawOutlines(showOutline);
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
180 r.setUseOutlinePaint(c != null);
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
181
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
182 r.setSeriesShapesVisible(idx, show || showOutline);
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
183 }
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
184
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
185 private void applyPointSize(final XYLineAndShapeRenderer r, final int idx) {
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
186 final int size = this.theme.parsePointWidth();
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
187 final int dim = 2 * size;
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
188
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
189 r.setSeriesShape(idx, new Ellipse2D.Double(-size, -size, dim, dim));
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
190 }
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
191
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
192 private void applyShowLine(final XYLineAndShapeRenderer r, final int idx) {
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
193 final boolean show = this.theme.parseShowLine();
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
194 r.setSeriesLinesVisible(idx, show);
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
195 }
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
196
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
197 private void applyShowMinimum(final XYLineAndShapeRenderer r, final int idx) {
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
198 if (!(r instanceof EnhancedLineAndShapeRenderer)) {
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
199 return;
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
200 }
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
202 final boolean visible = this.theme.parseShowMinimum();
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
203
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
204 final EnhancedLineAndShapeRenderer er = (EnhancedLineAndShapeRenderer) r;
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
205 er.setIsMinimumShapeVisisble(idx, visible);
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
206 }
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
207
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
208 private void applyShowMaximum(final XYLineAndShapeRenderer r, final int idx) {
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
209 if (!(r instanceof EnhancedLineAndShapeRenderer)) {
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
210 return;
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
211 }
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
212
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
213 final boolean visible = this.theme.parseShowMaximum();
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
214
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
215 final EnhancedLineAndShapeRenderer er = (EnhancedLineAndShapeRenderer) r;
2321
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
216 er.setIsMaximumShapeVisible(idx, visible);
991e4a5df323 Enabled styling in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
217 }
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3090
diff changeset
218
3464
0b9b2a0c4e64 Point labels can have a background color now.
Christian Lins <christian.lins@intevation.de>
parents: 3405
diff changeset
219 @Override
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3090
diff changeset
220 public XYLineAndShapeRenderer getRenderer() {
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3090
diff changeset
221 return this.renderer;
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3090
diff changeset
222 }
9555
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
223
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
224 @Override
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
225 public void applyAggregatedLegendTheme(final LegendItem item, final ThemeDocument legendTheme) {
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
226
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
227 if (this.theme == null)
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
228 return;
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
229
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
230 if (this.shape != null)
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
231 item.setShape(this.shape);
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
232
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
233 final Color lineColor = legendTheme.parseLineColorField();
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
234 if (lineColor != null)
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
235 item.setLinePaint(lineColor);
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
236
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
237 if (legendTheme.getValue(ThemeDocument.SHOW_LINE) != null)
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
238 item.setLineVisible(legendTheme.parseShowLine());
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
239
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
240 /* remark cant set line stroke on legend item */
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
241 // applyLineSize(r, idx);
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
242 // applyLineType(r, idx);
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
243
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
244 /*
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
245 * REMARK: we only change the colors, as visibility and such are interdependend and should be the same as the original
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
246 * items
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
247 */
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
248 final Color c = legendTheme.parsePointColor();
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
249 if (c != null) {
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
250 item.setFillPaint(c);
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
251 item.setOutlinePaint(c);
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
252 }
ef5754ba5573 Implemented legend aggregation based on type of themes.
gernotbelger
parents: 9360
diff changeset
253 }
9325
094ed9d1f2ad Fixed: change of point style of interpolated data did not change in WQ chart of fixanalysis
gernotbelger
parents: 8856
diff changeset
254 }

http://dive4elements.wald.intevation.org