Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/jfree/StripedAreaDataset.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 | d8e753d0fdb9 |
children |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/jfree/StripedAreaDataset.java Mon Oct 22 18:26:05 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/jfree/StripedAreaDataset.java Tue Oct 23 16:26:48 2018 +0200 @@ -10,15 +10,15 @@ package org.dive4elements.river.jfree; import java.awt.Color; -import java.awt.Font; import java.util.ArrayList; import java.util.List; +import org.dive4elements.artifactdatabase.state.Facet; import org.dive4elements.artifacts.CallMeta; +import org.dive4elements.river.exports.LegendAggregator; import org.dive4elements.river.java2d.ShapeUtils; import org.dive4elements.river.themes.ThemeDocument; import org.jfree.chart.LegendItem; -import org.jfree.chart.LegendItemCollection; import org.jfree.chart.plot.XYPlot; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; @@ -67,9 +67,16 @@ private final List<Stripe> stripes = new ArrayList<>(); + /** + * A 'type' that allows to categorize themes by it. Tyically this is simply the facet-name of the originating + * {@link Facet}. + */ + private final String themeType; + private final ThemeDocument theme; - public StripedAreaDataset(final ThemeDocument theme) { + public StripedAreaDataset(final String themeType, final ThemeDocument theme) { + this.themeType = themeType; this.theme = theme; } @@ -93,28 +100,18 @@ } @Override - public void applyTheme(final CallMeta callMeta, final XYPlot plot, final int datasetIndex, final Font legendFont) { + public void applyTheme(final CallMeta callMeta, final XYPlot plot, final LegendAggregator legendBuilder, final int datasetIndex) { final StripedAreaDatasetRenderer renderer = createRenderer(); plot.setRenderer(datasetIndex, renderer); - final LegendItemCollection newItems = new LegendItemCollection(); - final LegendItemCollection oldItems = plot.getFixedLegendItems(); - final int seriesCount = getSeriesCount(); for (int i = 0; i < seriesCount; i++) { final LegendItem legendItem = renderer.getLegendItem(datasetIndex, i); - if (legendItem != null) { - legendItem.setLabelFont(legendFont); - newItems.add(legendItem); - } + if (legendItem != null) + legendBuilder.addLegendItem(this.themeType, legendItem); } - - if (oldItems != null) - newItems.addAll(oldItems); - - plot.setFixedLegendItems(newItems); } private StripedAreaDatasetRenderer createRenderer() { @@ -130,4 +127,9 @@ return renderer; } + + @Override + public void applyAggregatedLegendTheme(final LegendItem item, final ThemeDocument legendTheme) { + /* not implemented at the moment */ + } } \ No newline at end of file