/* * Licensed Materials - Property of Perforce Software, Inc. * © Copyright Perforce Software, Inc. 2014, 2021 * © Copyright IBM Corp. 2009, 2014 * © Copyright ILOG 1996, 2009 * All Rights Reserved. * * Note to U.S. Government Users Restricted Rights: * The Software and Documentation were developed at private expense and * are "Commercial Items" as that term is defined at 48 CFR 2.101, * consisting of "Commercial Computer Software" and * "Commercial Computer Software Documentation", as such terms are * used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4, * as applicable. */ package imgmap; import java.util.HashMap; import java.util.List; import java.util.Map; import ilog.views.chart.IlvChart; import ilog.views.chart.IlvLegend; import ilog.views.chart.IlvLegendItem; import ilog.views.chart.data.IlvDataSet; import ilog.views.chart.faces.dhtml.IlvFacesChartImageMapGenerator; import ilog.views.chart.servlet.IlvDefaultIMapDefinition; import ilog.views.chart.servlet.IlvIMapAttributes; import ilog.views.chart.servlet.IlvIMapDefinition; import ilog.views.util.IlvResourceUtil; /** * The image map areas generator. */ public class ImageMapAreaGenerator implements IlvFacesChartImageMapGenerator { /** * Creates the image maps definition of the slices of the Pie chart. * * @param chart * The Pie chart. */ Override public IlvIMapDefinition createImageMapDefinition(IlvChart chart) { IlvDefaultIMapDefinition mapdef = null; IlvDataSet dataSet = chart.getDataSource().getDataSet(0); // Get the href property read by our HREFPropertyReader class. SuppressWarnings("unchecked") List<String> hrefs = (List<String>) dataSet.getProperty(HREFPropertyReader.HREFS_TAG); if (hrefs != null) { String[] hrefsValues = new String[hrefs.size()]; String[] titles = new String[hrefs.size()]; for (int i = 0; i < hrefsValues.length; ++i) { String srequest = i + ""; titles[i] = dataSet.getDataLabel(i); hrefsValues[i] = srequest; } // Create a new IlvDefaultIMapAttributes instance initialized with // the contents of the hrefs and title arrays. IlvIMapAttributes[] attrs = new IlvIMapAttributes[hrefsValues.length]; Map<IlvLegendItem, IlvIMapAttributes> legAttrs = new HashMap<IlvLegendItem, IlvIMapAttributes>( hrefsValues.length); IlvLegend legend = chart.getLegend(); for (int i = 0; i < hrefsValues.length; ++i) { attrs[i] = new SliceIMapAttributes(hrefsValues[i], titles[i], (String) hrefs.get(i)); legAttrs.put((IlvLegendItem) legend.getComponent(i), attrs[i]); } // Create the IlvIMapDefinition instance. try { mapdef = new IlvDefaultIMapDefinition(new IlvDataSet[] { dataSet }, new IlvIMapAttributes[][] { attrs }); mapdef.setLegendItemAttributes(legAttrs); } catch (IllegalArgumentException e) { String msg = IlvResourceUtil.getServerLocaleString(ImageMapAreaGenerator.class, "notCreateMapDefinition"); System.err.println(msg + e.getMessage()); e.printStackTrace(); } } return mapdef; } }