Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/LegendProcessor.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 | fe32a7f9655e |
children | 5e38e2924c07 |
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:
4047
diff
changeset
|
9 package org.dive4elements.river.exports; |
3183
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
10 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
11 import java.awt.geom.Line2D; |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
12 import java.util.ArrayList; |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
13 import java.util.HashMap; |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
14 import java.util.Iterator; |
4021
7cc05da7e35c
Add message for 'state.chart.km'
Christian Lins <christian.lins@intevation.de>
parents:
3224
diff
changeset
|
15 import java.util.LinkedHashMap; |
3183
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
16 import java.util.List; |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
17 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
18 import org.jfree.chart.LegendItem; |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
19 import org.jfree.chart.LegendItemCollection; |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
20 import org.jfree.chart.plot.XYPlot; |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
21 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
22 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
23 /** Class to process Plots legends. */ |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
24 public abstract class LegendProcessor { |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
25 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
26 /** (Empty) shape for aggregated Legend Items. */ |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
27 private static final Line2D.Double SPACE = new Line2D.Double(0,0,0,0); |
3189
89dc2db3a202
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3183
diff
changeset
|
28 |
3183
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
29 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
30 /** Prevent instantiations. */ |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
31 private LegendProcessor() { |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
32 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
33 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
34 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
35 /** |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
36 * Create a hash from a legenditem. |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
37 * This hash can then be used to merge legend items labels. |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
38 * @return hash for given legenditem to identify mergeables. |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
39 */ |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
40 protected static String legendItemHash(LegendItem li) { |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
41 // TODO Do proper implementation. Ensure that only mergable sets are created. |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
42 // getFillPaint() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
43 // getFillPaintTransformer() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
44 // getLabel() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
45 // getLine() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
46 // getLinePaint() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
47 // getLineStroke() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
48 // getOutminePaint() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
49 // getOutlineStroke() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
50 // Shape getShape() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
51 // String getToolTipText() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
52 // String getURLText() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
53 // boolean isLineVisible() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
54 // boolean isShapeFilled() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
55 // boolean isShapeOutlineVisible() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
56 // boolean isShapeVisible() |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
57 String hash = li.getLinePaint().toString(); |
4046
ca208b2f35a0
LegendProcessor: avoid redundant hashing. removed dead code.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4021
diff
changeset
|
58 // XXX: DEAD CODE // String label = li.getLabel(); |
3224
075f1ba25758
issue654
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3189
diff
changeset
|
59 /*if (label.startsWith("W (") || label.startsWith("W(")) { |
3183
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
60 hash += "-W-"; |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
61 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
62 else if (label.startsWith("Q(") || label.startsWith("Q (")) { |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
63 hash += "-Q-"; |
3224
075f1ba25758
issue654
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3189
diff
changeset
|
64 }*/ |
3183
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
65 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
66 // WQ.java holds example of using regex Matcher/Pattern. |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
67 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
68 return hash; |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
69 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
70 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
71 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
72 /** |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
73 * Create new legend entries, dependent on settings. |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
74 * @param plot The plot for which to modify the legend. |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
75 * @param threshold How many items are needed for aggregation to |
4021
7cc05da7e35c
Add message for 'state.chart.km'
Christian Lins <christian.lins@intevation.de>
parents:
3224
diff
changeset
|
76 * be triggered? |
3183
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
77 */ |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
78 public static void aggregateLegendEntries(XYPlot plot, int threshold) { |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
79 LegendItemCollection old = plot.getLegendItems(); |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
80 // Find "similar" entries if aggregation is enabled. |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
81 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
82 int maxListSize = 0; |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
83 int AGGR_THRESHOLD = threshold; |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
84 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
85 if (AGGR_THRESHOLD > old.getItemCount() || AGGR_THRESHOLD <= 0){ |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
86 return; |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
87 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
88 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
89 HashMap<String, List<LegendItem>> entries = new LinkedHashMap<String, List<LegendItem>>(); |
4021
7cc05da7e35c
Add message for 'state.chart.km'
Christian Lins <christian.lins@intevation.de>
parents:
3224
diff
changeset
|
90 for (Iterator<LegendItem> i = old.iterator(); i.hasNext();) { |
7cc05da7e35c
Add message for 'state.chart.km'
Christian Lins <christian.lins@intevation.de>
parents:
3224
diff
changeset
|
91 LegendItem item = i.next(); |
3183
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
92 String hash = legendItemHash(item); |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
93 List<LegendItem> itemList = entries.get(hash); |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
94 if (itemList == null) { |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
95 itemList = new ArrayList<LegendItem>(); |
4046
ca208b2f35a0
LegendProcessor: avoid redundant hashing. removed dead code.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4021
diff
changeset
|
96 entries.put(hash, itemList); |
3183
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
97 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
98 itemList.add(item); |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
99 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
100 if (itemList.size() > maxListSize) { |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
101 maxListSize = itemList.size(); |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
102 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
103 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
104 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
105 if (maxListSize < AGGR_THRESHOLD) { |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
106 // No need to do anything. |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
107 return; |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
108 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
109 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
110 // Run over collected entries, merge their names and create new |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
111 // entry if needed. |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
112 LegendItemCollection newLegend = new LegendItemCollection(); |
4046
ca208b2f35a0
LegendProcessor: avoid redundant hashing. removed dead code.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4021
diff
changeset
|
113 for (List<LegendItem> itemList: entries.values()) { |
3183
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
114 if (itemList.size() >= AGGR_THRESHOLD) { |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
115 // Now do merging. |
4046
ca208b2f35a0
LegendProcessor: avoid redundant hashing. removed dead code.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4021
diff
changeset
|
116 // XXX: DEAD CODE // LegendItem item = itemList.get(0); |
3183
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
117 // Unfortunately we cannot clone and just setDescription, as this |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
118 // method was added in JFreeChart 1.0.14 (we are at .13). |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
119 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
120 // Remove the shapes of all but the first items, |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
121 // to prevent "overfill" of legenditemblock. |
7254
fe32a7f9655e
Reduce usage of careless 'for (int i = 0; i < x.size(); i++)' pattern.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
122 for (int i = 0, I = itemList.size(); i < I; i++) { |
3183
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
123 if (i != 0) { |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
124 LegendItem litem = itemList.get(i); |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
125 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
126 // Make shape and line really small. |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
127 LegendItem merged = new LegendItem( |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
128 "," + litem.getLabel(), litem.getDescription(), litem.getToolTipText(), |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
129 litem.getURLText(), false, SPACE, |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
130 false, litem.getFillPaint(), false, |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
131 litem.getOutlinePaint(), litem.getOutlineStroke(), false, |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
132 SPACE, litem.getLineStroke(), litem.getLinePaint()); |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
133 newLegend.add(merged); |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
134 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
135 else { |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
136 newLegend.add(itemList.get(i)); |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
137 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
138 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
139 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
140 else { |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
141 // Do not merge entries. |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
142 for (LegendItem li: itemList) { |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
143 newLegend.add(li); |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
144 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
145 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
146 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
147 |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
148 plot.setFixedLegendItems (newLegend); |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
149 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
150 } |
05c84d65988a
Extracted legenditemaggregation from xychartgenerator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
151 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |