Example usage for org.jfree.chart.renderer AbstractRenderer getClass

List of usage examples for org.jfree.chart.renderer AbstractRenderer getClass

Introduction

In this page you can find the example usage for org.jfree.chart.renderer AbstractRenderer getClass.

Prototype

@HotSpotIntrinsicCandidate
public final native Class<?> getClass();

Source Link

Document

Returns the runtime class of this Object .

Usage

From source file:msi.gama.outputs.layers.ChartLayerStatement.java

public void updateseries(final IScope scope) throws GamaRuntimeException {
    // datas=dataswithoutlists;
    datasfromlists = new ArrayList<ChartData>();
    for (int dl = 0; dl < datalists.size(); dl++) {
        ChartDataList datalist = datalists.get(dl);

        Object val = datalist.valuelistexp.resolveAgainst(scope).value(scope);
        if (!(val instanceof GamaList)) {
            // GuiUtils.debug("chart list with no list...");
            return;
        }/*from  ww  w . j  a  v  a2 s .  co m*/
        List<List> values = Cast.asList(scope, val);
        if (datalist.doreverse) {
            List tempvalues = Cast.asList(scope, val);
            values = new ArrayList<List>();
            if (tempvalues.get(0) instanceof GamaList) {
                IList nval = Cast.asList(scope, tempvalues.get(0));
                for (int j = 0; j < nval.size(); j++) {
                    List nl = new ArrayList();
                    nl.add(nval.get(j));
                    values.add(nl);
                }
            } else {
                // GuiUtils.debug("Reverse series but not list of list..." + tempvalues);
                return;

            }
            if (tempvalues.size() > 1) {
                for (int i = 1; i < tempvalues.size(); i++) {
                    if (tempvalues.get(i) instanceof GamaList) {
                        IList nval = Cast.asList(scope, tempvalues.get(i));
                        for (int j = 0; j < nval.size(); j++) {
                            // Cast.asList(scope, values.get(j)).add(nval.get(j));

                            values.get(j).add(nval.get(j));

                        }
                    } else {
                        // GuiUtils.debug("Reverse series but not list of list..." + tempvalues);
                        return;

                    }
                }
            }

            // GuiUtils.debug("New Values"+values);
        }

        List defaultnames = new ArrayList<String>();
        List defaultcolors = new ArrayList<GamaColor>();
        for (int i = 0; i < values.size() + 1; i++) {
            defaultnames.add("data" + i);
            // defaultcolors.add(GamaColor.array[i]);
            if (i < 10) {

                if (i == 0) {
                    defaultcolors.add(Cast.asColor(scope, Color.CYAN));
                }
                if (i == 1) {
                    defaultcolors.add(Cast.asColor(scope, Color.RED));
                }
                if (i == 2) {
                    defaultcolors.add(Cast.asColor(scope, Color.YELLOW));
                }
                if (i == 3) {
                    defaultcolors.add(Cast.asColor(scope, Color.GREEN));
                }
                if (i == 4) {
                    defaultcolors.add(Cast.asColor(scope, Color.BLUE));
                }
                if (i == 5) {
                    defaultcolors.add(Cast.asColor(scope, Color.PINK));
                }
                if (i == 6) {
                    defaultcolors.add(Cast.asColor(scope, Color.MAGENTA));
                }
                if (i == 7) {
                    defaultcolors.add(Cast.asColor(scope, Color.ORANGE));
                }
                if (i == 8) {
                    defaultcolors.add(Cast.asColor(scope, Color.LIGHT_GRAY));
                }
                if (i == 9) {
                    defaultcolors.add(Cast.asColor(scope, Color.DARK_GRAY));
                }
            }
            if (i >= 10) {
                if (i < GamaColor.colors.size()) {
                    defaultcolors.add(GamaColor.int_colors.values()[i]);
                } else {
                    defaultcolors.add(GamaColor.getInt(Random.opRnd(scope, 10000)));
                }
            }

        }

        if (datalist.colorlistexp != null) {
            Object valcol = datalist.colorlistexp.resolveAgainst(scope).value(scope);
            if (valcol instanceof GamaList) {
                for (int c = 0; c < ((GamaList) valcol).size(); c++) {
                    // if ( type == SERIES_CHART)
                    // defaultcolors.set(c+1, Cast.asColor(scope, ((GamaList)valcol).get(c)));
                    // else
                    defaultcolors.set(c, Cast.asColor(scope, ((GamaList) valcol).get(c)));

                }

            }
        }

        boolean dynamicseriesnames = false;
        List<String> seriesnames = new ArrayList();

        if (datalist.legendlistexp != null) {
            Object valc = datalist.legendlistexp.resolveAgainst(scope).value(scope);

            if (valc instanceof GamaList) {
                dynamicseriesnames = true;
                seriesnames = (GamaList) valc;
                for (int i = 0; i < Math.min(values.size(), seriesnames.size()); i++) {
                    defaultnames.set(i, seriesnames.get(i) + "(" + i + ")");
                    if (type == SERIES_CHART && ((XYPlot) chart.getPlot()).getDataset(i + 1) != null) {
                        if (((DefaultTableXYDataset) ((XYPlot) chart.getPlot()).getDataset(i + 1))
                                .getSeriesCount() > 0) {
                            ((DefaultTableXYDataset) ((XYPlot) chart.getPlot()).getDataset(i + 1)).getSeries(0)
                                    .setKey(seriesnames.get(i) + "(" + i + ")");
                        }

                    }
                }
                if (values.size() > seriesnames.size()) {
                    for (int i = seriesnames.size(); i < values.size(); i++) {
                        defaultnames.set(i, "(" + i + ")");
                    }
                }
            } else {
                for (int i = values.size(); i < values.size(); i++) {
                    defaultnames.set(i, "(" + i + ")");
                }
            }
        }

        int nbseries = values.size();
        // if ( type==SERIES_CHART ) nbseries++;
        // ChartData first=datas.get(0);
        if (type == HISTOGRAM_CHART) {
            ((DefaultCategoryDataset) dataset).clear();
        }
        if (type == PIE_CHART) {
            ((DefaultPieDataset) dataset).clear();
        }
        if (nbseries > datalist.previoussize) {

            for (int i = datalist.previoussize; i < nbseries; i++) {
                AbstractRenderer r;
                try {
                    r = datalist.renderer.getClass().newInstance();
                    if (XYLineAndShapeRenderer.class.isAssignableFrom(r.getClass())) {
                        ((XYLineAndShapeRenderer) r).setBaseShapesFilled(
                                ((XYLineAndShapeRenderer) datalist.renderer).getBaseShapesFilled());
                        ((XYLineAndShapeRenderer) r).setBaseShapesVisible(
                                ((XYLineAndShapeRenderer) datalist.renderer).getBaseShapesVisible());
                        ((XYLineAndShapeRenderer) r).setSeriesLinesVisible(0,
                                ((XYLineAndShapeRenderer) datalist.renderer).getSeriesLinesVisible(0));
                    }
                    ChartData newdata;
                    newdata = ChartDataListStatement.newChartData(scope, r,
                            Cast.asString(scope, defaultnames.get(i)),
                            Cast.asColor(scope, defaultcolors.get(i)), values.get(i));

                    datas.add(newdata);
                    datasfromlists.add(newdata);

                    if (type == SERIES_CHART || type == XY_CHART || type == SCATTER_CHART) {
                        final XYPlot plot = (XYPlot) chart.getPlot();
                        final String legend = newdata.getName();
                        // if (dataset==null)
                        // dataset = new XYDataset();
                        if (type == SERIES_CHART || type == XY_CHART) {
                            dataset = new DefaultTableXYDataset();
                            final XYSeries serie = new XYSeries(legend, false, false);
                            ((DefaultTableXYDataset) dataset).addSeries(serie);

                        } else {
                            dataset = new XYSeriesCollection();
                            final XYSeries serie = new XYSeries(legend, false, true);
                            ((XYSeriesCollection) dataset).addSeries(serie);

                        }
                        expressions_index.put(legend, datas.size() - 1);
                        plot.setRenderer(datas.size() - 1, (XYItemRenderer) newdata.getRenderer(), false);
                        final Color c = newdata.getColor();
                        plot.getRenderer(datas.size() - 1).setSeriesPaint(0, c);
                        // if ((i>0)||(type==XY_CHART))
                        plot.setDataset(datas.size() - 1, (XYDataset) dataset);
                        history.append(legend);
                        history.append(',');
                    }

                    if (type == HISTOGRAM_CHART) {
                        final CategoryPlot plot = (CategoryPlot) chart.getPlot();
                        int l = 0;
                        for (final ChartData e : datas) {
                            // String legend = e.getName();
                            // ((DefaultCategoryDataset) dataset).setValue(0d, new Integer(0), legend/* , legend
                            // */);

                            final String legend = e.getName();
                            if (!CategoryItemRenderer.class.isInstance(e.getRenderer())) {
                                e.renderer = new BarRenderer();
                            }
                            plot.setRenderer(l, (CategoryItemRenderer) e.getRenderer(), false);
                            final Color c = e.getColor();
                            plot.getRenderer(l).setSeriesPaint(0, c);
                            // plot.setDataset(i, (DefaultCategoryDataset) dataset);
                            // }
                            l++;
                            history.append(legend);
                            history.append(',');

                        }
                        if (history.length() > 0) {
                            history.deleteCharAt(history.length() - 1);
                        }
                        history.append(Strings.LN);
                        // plot.setDataset((DefaultCategoryDataset) dataset);

                    }
                    if (type == PIE_CHART) {
                        int l = 0;
                        // dataset = new DefaultPieDataset();
                        final PiePlot plot = (PiePlot) chart.getPlot();
                        for (final ChartData e : datas) {
                            final String legend = e.getName();
                            ((DefaultPieDataset) dataset).insertValue(l++, legend, null);
                            history.append(legend);
                            history.append(',');
                        }
                        if (history.length() > 0) {
                            history.deleteCharAt(history.length() - 1);
                        }
                        history.append(Strings.LN);
                        history.append(Strings.LN);
                        // plot.setDataset((DefaultPieDataset) dataset);
                        l = 0;
                        for (final ChartData e : datas) {
                            plot.setSectionPaint(l++, e.getColor());
                        }
                        plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} = {1} ({2})"));
                        if (exploded) {
                            for (final Object c : ((DefaultPieDataset) dataset).getKeys()) {
                                plot.setExplodePercent((Comparable) c, 0.20);
                            }
                        }
                    }

                } catch (InstantiationException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
            datalist.previoussize = nbseries;
        }

        boolean dynamiccategorynames = false;
        List<String> categorynames = new ArrayList<String>();
        /*
         * if (datalist.categlistexp!=null)
         * {
         * Object valc=datalist.categlistexp.resolveAgainst(scope).value(scope);
         * if ((valc instanceof GamaList))
         * {
         * dynamiccategorynames=true;
         * categorynames=(GamaList)valc;
         * }
         *
         * if (type==HISTOGRAM_CHART)
         * {
         * for ( int i=0; i<values.size(); i++ ) {
         * GamaList x = new GamaList();
         * Object obj = values.get(i);
         * if ( obj instanceof GamaList ) {
         * x = (GamaList) obj;
         * // clearvalues=true;
         * if (dynamiccategorynames)
         * {
         * for (int j=0;j<x.length(scope);j++)
         * if (j<categorynames.size())
         * {
         * ((DefaultCategoryDataset) dataset).setValue(Cast.asFloat(scope,
         * x.get(j)).doubleValue(),(String)defaultnames.get(i),categorynames.get(j).toString()+"("+j+")");
         * }
         * else
         * ((DefaultCategoryDataset) dataset).setValue(Cast.asFloat(scope,
         * x.get(j)).doubleValue(),(String)defaultnames.get(i),"("+j+")");
         * }
         * else
         * {
         * for (int j=0;j<x.length(scope);j++)
         * ((DefaultCategoryDataset) dataset).setValue(Cast.asFloat(scope,
         * x.get(j)).doubleValue(),(String)defaultnames.get(i), new Integer(j));
         *
         * }
         * } else {
         * ((DefaultCategoryDataset) dataset).setValue(Cast.asFloat(scope, obj).doubleValue(), new
         * Integer(0),(String)defaultnames.get(i));
         * }
         * }
         * }
         * }
         */
        if (chart.getLegend() == null) {
            chart.addLegend(new LegendTitle(chart.getPlot()));
        }
        // LegendTitle legend = chart.getLegend();
        // GuiUtils.debug("dyncateg:"+defaultnames);
        // GuiUtils.debug("legend:"+legend);
        for (int i = 0; i < nbseries; i++) {
            ChartData first = datas.get(i);
            if (type == SERIES_CHART) {
                first = datas.get(i + 1);
            }
            first.lastvalue = values.get(i);

        }

    }
}