Example usage for org.jfree.chart.entity EntityCollection iterator

List of usage examples for org.jfree.chart.entity EntityCollection iterator

Introduction

In this page you can find the example usage for org.jfree.chart.entity EntityCollection iterator.

Prototype

public Iterator iterator();

Source Link

Document

Returns an iterator for the entities in the collection.

Usage

From source file:net.sf.jasperreports.charts.util.ChartUtil.java

/**
 * /*from w  ww  .j a  va 2 s .c  o m*/
 */
public static List<JRPrintImageAreaHyperlink> getImageAreaHyperlinks(JFreeChart chart,
        ChartHyperlinkProvider chartHyperlinkProvider, Graphics2D grx, Rectangle2D renderingArea)// throws JRException
{
    List<JRPrintImageAreaHyperlink> areaHyperlinks = null;

    if (chartHyperlinkProvider != null && chartHyperlinkProvider.hasHyperlinks()) {
        ChartRenderingInfo renderingInfo = new ChartRenderingInfo();

        if (grx == null) {
            chart.createBufferedImage((int) renderingArea.getWidth(), (int) renderingArea.getHeight(),
                    renderingInfo);
        } else {
            chart.draw(grx, renderingArea, renderingInfo);
        }

        EntityCollection entityCollection = renderingInfo.getEntityCollection();
        if (entityCollection != null && entityCollection.getEntityCount() > 0) {
            areaHyperlinks = new ArrayList<JRPrintImageAreaHyperlink>(entityCollection.getEntityCount());

            for (@SuppressWarnings("unchecked")
            Iterator<ChartEntity> it = entityCollection.iterator(); it.hasNext();) {
                ChartEntity entity = it.next();
                JRPrintHyperlink printHyperlink = chartHyperlinkProvider.getEntityHyperlink(entity);
                if (printHyperlink != null) {
                    JRPrintImageArea area = getImageArea(entity);

                    JRPrintImageAreaHyperlink areaHyperlink = new JRPrintImageAreaHyperlink();
                    areaHyperlink.setArea(area);
                    areaHyperlink.setHyperlink(printHyperlink);
                    areaHyperlinks.add(areaHyperlink);
                }
            }
        }
    }

    return areaHyperlinks;
}

From source file:net.sf.maltcms.chromaui.charts.datastructures.QuadTreeEntityCollection.java

/**
 *
 * @param ec// w  w w  . j a va2 s  .com
 */
@Override
public void addAll(EntityCollection ec) {
    Iterator iter = ec.iterator();
    while (iter.hasNext()) {
        ChartEntity ce = (ChartEntity) iter.next();
        add(ce);
        ll.add(ce);
    }
}

From source file:org.locationtech.udig.processingtoolbox.tools.ChartComposite2.java

@SuppressWarnings("rawtypes")
@Override/* w  w w  .jav a2  s. com*/
public void zoom(Rectangle selection) {
    if (map == null || layer == null) {
        return;
    }
    Set<FeatureId> selected = new HashSet<FeatureId>();
    try {
        XYSeriesCollection ds = (XYSeriesCollection) getChart().getXYPlot().getDataset(2);
        XYSeries selectionSeries = ds.getSeries(0);
        selectionSeries.clear();

        EntityCollection entities = this.getChartRenderingInfo().getEntityCollection();
        Iterator iter = entities.iterator();
        while (iter.hasNext()) {
            ChartEntity entity = (ChartEntity) iter.next();
            if (entity instanceof XYItemEntity) {
                XYItemEntity item = (XYItemEntity) entity;
                if (item.getSeriesIndex() != 0) {
                    continue;
                }

                java.awt.Rectangle bound = item.getArea().getBounds();
                if (selection.intersects(bound.x, bound.y, bound.width, bound.height)) {
                    XYSeriesCollection dataSet = (XYSeriesCollection) item.getDataset();
                    XYSeries xySeries = dataSet.getSeries(item.getSeriesIndex());
                    XYDataItem xyDataItem = xySeries.getDataItem(item.getItem());
                    if (xyDataItem instanceof XYDataItem2) {
                        XYDataItem2 dataItem = (XYDataItem2) xyDataItem;
                        selectionSeries.add(dataItem);
                        selected.add(ff.featureId(dataItem.getFeature().getID()));
                    }
                }
            }
        }
    } catch (Exception e) {
        // skip
    } finally {
        if (selected.size() > 0) {
            map.select(ff.id(selected), layer);
        } else {
            map.select(Filter.EXCLUDE, layer);
        }
        this.forceRedraw();
    }
}

From source file:org.orbeon.oxf.processor.JFreeChartProcessor.java

public ProcessorOutput createOutput(String name) {
    return new ProcessorOutputImpl(JFreeChartProcessor.this, name) {
        public void readImpl(PipelineContext context, XMLReceiver xmlReceiver) {
            JFreeChartSerializer.ChartConfig chartConfig = readChartConfig(context);
            ChartInfo info = createChart(context, chartConfig);
            try {
                xmlReceiver.startDocument();
                xmlReceiver.startElement("", "chart-info", "chart-info", new AttributesImpl());

                xmlReceiver.startElement("", "file", "file", new AttributesImpl());
                xmlReceiver.characters(info.file.toCharArray(), 0, info.file.length());
                xmlReceiver.endElement("", "file", "file");

                if (chartConfig.getMap() != null) {
                    AttributesImpl atts = new AttributesImpl();

                    atts.addAttribute("", "name", "name", "CDATA", chartConfig.getMap());
                    xmlReceiver.startElement("", "map", "map", atts);

                    EntityCollection entities = info.getInfo().getEntityCollection();

                    Iterator iterator = entities.iterator();
                    while (iterator.hasNext()) {
                        ChartEntity entity = (ChartEntity) iterator.next();
                        AttributesImpl attr = new AttributesImpl();
                        attr.addAttribute("", "shape", "shape", "CDATA", entity.getShapeType());
                        attr.addAttribute("", "coords", "coords", "CDATA", entity.getShapeCoords());

                        if (entity.getURLText() != null && !entity.getURLText().equals("")) {
                            attr.addAttribute("", "href", "href", "CDATA", entity.getURLText());
                        }//w  w w.j av  a 2s  . co  m
                        if (entity.getToolTipText() != null && !entity.getToolTipText().equals("")) {
                            attr.addAttribute("", "title", "title", "CDATA", entity.getToolTipText());

                        }
                        xmlReceiver.startElement("", "area", "area", attr);
                        xmlReceiver.endElement("", "area", "area");
                    }

                    xmlReceiver.endElement("", "map", "map");
                }
                xmlReceiver.endElement("", "chart-info", "chart-info");
                xmlReceiver.endDocument();

            } catch (SAXException e) {
                throw new OXFException(e);
            }
        }
    };
}

From source file:org.n52.server.io.EESGenerator.java

/**
 * Creates the image entities./*from   w ww. ja  va 2  s  .co m*/
 * 
 * @param entities
 *            the entities
 * @return the array list
 */
private ImageEntity[] createImageEntities(EntityCollection entities) {
    ArrayList<ImageEntity> imageEntities = new ArrayList<ImageEntity>();

    if (!this.isOverview) {
        // reducer
        int xyItemCount = 0;
        for (Iterator<?> iter = entities.iterator(); iter.hasNext();) {
            Object o = iter.next();
            if (o instanceof XYItemEntity) {
                xyItemCount++;
            }
        }
        int reducer = 1;
        if (xyItemCount > TOOLTIP_MIN_COUNT) {
            reducer = xyItemCount / TOOLTIP_MIN_COUNT;
        }
        LOGGER.debug("Reduce " + xyItemCount + " Entities to " + (xyItemCount / reducer) + " Tooltips");

        int counter = 0;
        for (Iterator<?> iter = entities.iterator(); iter.hasNext();) {
            counter++;
            Object o = iter.next();
            if ((counter % reducer) == 0) {
                if (o instanceof XYItemEntity) {
                    XYItemEntity e = (XYItemEntity) o;

                    ImageEntity imageEntity = new ImageEntity(
                            new Bounds(e.getArea().getBounds2D().getMinX(), e.getArea().getBounds2D().getMaxX(),
                                    e.getArea().getBounds2D().getMinY(), e.getArea().getBounds2D().getMaxY()),
                            e.getDataset().getGroup().getID());

                    double time = e.getDataset().getXValue(e.getSeriesIndex(), e.getItem());
                    double value = e.getDataset().getYValue(e.getSeriesIndex(), e.getItem());
                    String uom = e.getURLText().split(";")[0];
                    String color = e.getURLText().split(";")[1];
                    imageEntity.putHoverHtmlFragment(createHoverHtmlString(color, time, value, uom));
                    imageEntities.add(imageEntity);
                }
            }
        }
    }
    return imageEntities.toArray(new ImageEntity[imageEntities.size()]);
}

From source file:net.sourceforge.processdash.ui.web.CGIChartBase.java

private void writeImageHtml(int width, int height, int imgID, ChartRenderingInfo info) throws IOException {
    String tooltip = getParameter("tooltip");
    if (!StringUtils.hasValue(tooltip))
        tooltip = resources.getHTML("More_Detail_Here_Instruction");

    String href = getParameter("href");
    if (StringUtils.hasValue(href)) {
        // create a copy of the entity collection, and place an entity for
        // the entire chart at the beginning of the list.  This will
        // make it appear last in the image map (which is important,
        // because browsers process the image map areas in the order that
        // they appear; having the entire chart area listed first would
        // obscure all of the other image map areas).
        EntityCollection entities = new StandardEntityCollection();
        entities.add(new ChartEntity(info.getChartArea(), tooltip, href));
        if (info.getEntityCollection() != null)
            entities.addAll(info.getEntityCollection());

        // Next: most of our chart entities will not have URLs. URL values
        // don't inherit in the imagemap, so if we want the entire image
        // to have a single URL, we need to assign that URL to every
        // area in the chart.
        for (Iterator i = entities.iterator(); i.hasNext();) {
            ChartEntity ce = (ChartEntity) i.next();
            // check for no-op chart entity - these won't appear in the
            // image map anyway, so they don't need to be adjusted
            if (ce.getToolTipText() == null && ce.getURLText() == null)
                continue;
            // for other entities, add a tooltip and a URL as needed.
            if (!StringUtils.hasValue(ce.getToolTipText()))
                ce.setToolTipText(tooltip);
            if (!StringUtils.hasValue(ce.getURLText()))
                ce.setURLText(href);/* ww w .  j av  a2 s  .  co m*/
        }

        // install our modified version of the entity collection into
        // the chart info object, so it will be used when generating
        // the image map later.
        info.setEntityCollection(entities);
    }

    // write the image tag
    out.write("<img width=\"" + width + "\" height=\"" + height + "\" src=\"/reports/pngCache?id=" + imgID
            + "\" usemap=\"#IMG" + imgID + '"');

    // imagemaps have hyperlink borders by default, even if we don't
    // have a URL we're pointing to.  Turn that border off.
    if (!StringUtils.hasValue(href) || parameters.containsKey("noBorder"))
        out.write(" border=\"0\"");

    // Our client might want to add attributes to the image tag. Look
    // through the query parameters we received for arbitrary attributes
    // starting with the prefix "img", and copy them into the tag.
    for (Iterator i = parameters.entrySet().iterator(); i.hasNext();) {
        Map.Entry e = (Map.Entry) i.next();
        String attrName = (String) e.getKey();
        if (attrName.startsWith("img") && !attrName.endsWith("_ALL")) {
            out.write(" " + attrName.substring(3) + "=\"");
            out.write(HTMLUtils.escapeEntities(e.getValue().toString()));
            out.write('"');
        }
    }

    out.write(">");

    // finally, write the image map.  Note that we have to strip line
    // break characters from the resulting HTML, otherwise firefox seems
    // to decide that the <map> tag actually takes up space on the page
    String imageMapHtml = ImageMapUtilities.getImageMap("IMG" + imgID, info, getToolTipGenerator(tooltip),
            new StandardURLTagFragmentGenerator());
    for (int i = 0; i < imageMapHtml.length(); i++) {
        char c = imageMapHtml.charAt(i);
        if (c != '\r' && c != '\n')
            out.write(c);
    }
    out.flush();
}

From source file:org.operamasks.faces.render.graph.ChartRenderer.java

private void encodeItemTips(FacesContext context, UIChart comp, ChartRenderingInfo info) throws IOException {
    StringBuilder buf = new StringBuilder();

    buf.append("Ext.om.AreaTips.init();\n");
    buf.append("Ext.om.AreaTips.register({");
    buf.append("target:'").append(comp.getClientId(context)).append("'");
    buf.append(",trackMouse:true");
    buf.append(",areas:[");

    EntityCollection entities = info.getEntityCollection();
    Iterator it = entities.iterator();
    while (it.hasNext()) {
        ChartEntity entity = (ChartEntity) it.next();
        String tooltip = entity.getToolTipText();
        if (tooltip != null) {
            buf.append("{");
            buf.append("shape:'").append(entity.getShapeType()).append("'");
            buf.append(",coords:[").append(entity.getShapeCoords()).append("]");
            buf.append(",text:").append(HtmlEncoder.enquote(tooltip));
            buf.append("},");
        }//from   w w w .  java  2  s  .  c om
    }

    if (buf.charAt(buf.length() - 1) == ',') {
        buf.setLength(buf.length() - 1);
    }

    buf.append("]});\n");

    ResourceManager rm = ResourceManager.getInstance(context);
    if (isAjaxResponse(context)) {
        AjaxResponseWriter out = (AjaxResponseWriter) context.getResponseWriter();
        out.writeScript("OM.ajax.loadScript('" + rm.getResourceURL("/ext/om/AreaTips.js") + "');\n");
        out.writeScript(buf.toString());
    } else {
        YuiExtResource resource = YuiExtResource.register(rm, "Ext.om.AreaTips");
        resource.addInitScript(buf.toString());
    }
}

From source file:com.tonbeller.jpivot.chart.ChartComponent.java

/**
 * Writes an image map as a String//from  w w  w .j  a va2s  .  co m
 * This function has been requested to be added to jfreechart
 * Also requires slight change to ChartEntity.getImageMapAreaTag()
 * to produce valid xml tag and use &amp; entity in urls.
 * Diffs sent to jfreechart project - so hopefully this will be in there soon
 *
 * @param name  the map name.
 * @param info  the chart rendering info.
 * @param useOverLibForToolTips  whether to use OverLIB for tooltips
 *                               (http://www.bosrup.com/web/overlib/).
 */
public String writeImageMap(String name, ChartRenderingInfo info, boolean useOverLibForToolTips) {
    StringBuffer sb = new StringBuffer();
    sb.append("<map name=\"" + name + "\">");
    EntityCollection entities = info.getEntityCollection();
    Iterator iterator = entities.iterator();

    while (iterator.hasNext()) {
        ChartEntity entity = (ChartEntity) iterator.next();
        // the tag returned by getImageMapAreaTag is not valid xml
        //String area = entity.getImageMapAreaTag(useOverLibForToolTips);

        String area = "";

        if (useOverLibForToolTips)
            area = entity.getImageMapAreaTag(new org.jfree.chart.imagemap.OverLIBToolTipTagFragmentGenerator(),
                    new org.jfree.chart.imagemap.StandardURLTagFragmentGenerator());
        else
            area = entity.getImageMapAreaTag(new org.jfree.chart.imagemap.StandardToolTipTagFragmentGenerator(),
                    new org.jfree.chart.imagemap.StandardURLTagFragmentGenerator());
        // modify to valid xml tag
        area = area.replaceAll("&", "&amp;");
        //area = area.toLowerCase();
        //area = area.replaceAll(">$", "/>");
        if (area.length() > 0) {
            sb.append(area);
        }
    }
    sb.append("</map>");
    return sb.toString();
}