Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/LegendProcessor.java @ 4021:7cc05da7e35c
Add message for 'state.chart.km'
author | Christian Lins <christian.lins@intevation.de> |
---|---|
date | Thu, 04 Oct 2012 10:57:24 +0200 |
parents | 075f1ba25758 |
children | ca208b2f35a0 |
comparison
equal
deleted
inserted
replaced
4020:cc9b6f23eaf8 | 4021:7cc05da7e35c |
---|---|
1 package de.intevation.flys.exports; | 1 package de.intevation.flys.exports; |
2 | 2 |
3 import java.awt.geom.Line2D; | 3 import java.awt.geom.Line2D; |
4 | |
5 import java.util.ArrayList; | 4 import java.util.ArrayList; |
6 import java.util.HashMap; | 5 import java.util.HashMap; |
7 import java.util.Iterator; | 6 import java.util.Iterator; |
7 import java.util.LinkedHashMap; | |
8 import java.util.List; | 8 import java.util.List; |
9 import java.util.LinkedHashMap; | |
10 import java.util.Map; | 9 import java.util.Map; |
11 | 10 |
12 import org.jfree.chart.JFreeChart; | |
13 import org.jfree.chart.LegendItem; | 11 import org.jfree.chart.LegendItem; |
14 import org.jfree.chart.LegendItemCollection; | 12 import org.jfree.chart.LegendItemCollection; |
15 import org.jfree.chart.plot.XYPlot; | 13 import org.jfree.chart.plot.XYPlot; |
16 | 14 |
17 | 15 |
66 | 64 |
67 /** | 65 /** |
68 * Create new legend entries, dependent on settings. | 66 * Create new legend entries, dependent on settings. |
69 * @param plot The plot for which to modify the legend. | 67 * @param plot The plot for which to modify the legend. |
70 * @param threshold How many items are needed for aggregation to | 68 * @param threshold How many items are needed for aggregation to |
71 * be triggered? | 69 * be triggered? |
72 */ | 70 */ |
73 public static void aggregateLegendEntries(XYPlot plot, int threshold) { | 71 public static void aggregateLegendEntries(XYPlot plot, int threshold) { |
74 LegendItemCollection old = plot.getLegendItems(); | 72 LegendItemCollection old = plot.getLegendItems(); |
75 // Find "similar" entries if aggregation is enabled. | 73 // Find "similar" entries if aggregation is enabled. |
76 | 74 |
80 if (AGGR_THRESHOLD > old.getItemCount() || AGGR_THRESHOLD <= 0){ | 78 if (AGGR_THRESHOLD > old.getItemCount() || AGGR_THRESHOLD <= 0){ |
81 return; | 79 return; |
82 } | 80 } |
83 | 81 |
84 HashMap<String, List<LegendItem>> entries = new LinkedHashMap<String, List<LegendItem>>(); | 82 HashMap<String, List<LegendItem>> entries = new LinkedHashMap<String, List<LegendItem>>(); |
85 for (Iterator i = old.iterator(); i.hasNext();) { | 83 for (Iterator<LegendItem> i = old.iterator(); i.hasNext();) { |
86 LegendItem item = (LegendItem) i.next(); | 84 LegendItem item = i.next(); |
87 String hash = legendItemHash(item); | 85 String hash = legendItemHash(item); |
88 List<LegendItem> itemList = entries.get(hash); | 86 List<LegendItem> itemList = entries.get(hash); |
89 if (itemList == null) { | 87 if (itemList == null) { |
90 itemList = new ArrayList<LegendItem>(); | 88 itemList = new ArrayList<LegendItem>(); |
91 } | 89 } |
108 LegendItemCollection newLegend = new LegendItemCollection(); | 106 LegendItemCollection newLegend = new LegendItemCollection(); |
109 for (Map.Entry<String, List<LegendItem>> cursor: entries.entrySet()) { | 107 for (Map.Entry<String, List<LegendItem>> cursor: entries.entrySet()) { |
110 List<LegendItem> itemList = cursor.getValue(); | 108 List<LegendItem> itemList = cursor.getValue(); |
111 if (itemList.size() >= AGGR_THRESHOLD) { | 109 if (itemList.size() >= AGGR_THRESHOLD) { |
112 // Now do merging. | 110 // Now do merging. |
113 LegendItem item = (LegendItem) itemList.get(0); | 111 LegendItem item = itemList.get(0); |
114 // Unfortunately we cannot clone and just setDescription, as this | 112 // Unfortunately we cannot clone and just setDescription, as this |
115 // method was added in JFreeChart 1.0.14 (we are at .13). | 113 // method was added in JFreeChart 1.0.14 (we are at .13). |
116 | 114 |
117 // Remove the shapes of all but the first items, | 115 // Remove the shapes of all but the first items, |
118 // to prevent "overfill" of legenditemblock. | 116 // to prevent "overfill" of legenditemblock. |