List of usage examples for org.jfree.chart.renderer AbstractRenderer getClass
@HotSpotIntrinsicCandidate public final native Class<?> getClass();
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); } } }