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.

http://dive4elements.wald.intevation.org