KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfree > chart > imagemap > ImageMapUtilities


1 /* ===========================================================
2  * JFreeChart : a free chart library for the Java(tm) platform
3  * ===========================================================
4  *
5  * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
6  *
7  * Project Info: http://www.jfree.org/jfreechart/index.html
8  *
9  * This library is free software; you can redistribute it and/or modify it
10  * under the terms of the GNU Lesser General Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17  * License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
22  * USA.
23  *
24  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
25  * in the United States and other countries.]
26  *
27  * ----------------------
28  * ImageMapUtilities.java
29  * ----------------------
30  * (C) Copyright 2004, 2005, by Richard Atkinson and Contributors.
31  *
32  * Original Author: Richard Atkinson;
33  * Contributor(s): David Gilbert (for Object Refinery Limited);
34  *
35  * $Id: ImageMapUtilities.java,v 1.3.2.1 2005/10/25 20:42:39 mungady Exp $
36  *
37  * Changes
38  * -------
39  * 02-Aug-2004 : Initial version (RA);
40  * 13-Jan-2005 : Renamed ImageMapUtilities (DG);
41  * 19-Jan-2005 : Reversed order of tags for chart entities to get correct
42  * layering (DG);
43  *
44  */

45
46 package org.jfree.chart.imagemap;
47
48 import java.io.IOException JavaDoc;
49 import java.io.PrintWriter JavaDoc;
50
51 import org.jfree.chart.ChartRenderingInfo;
52 import org.jfree.chart.entity.ChartEntity;
53 import org.jfree.chart.entity.EntityCollection;
54 import org.jfree.util.StringUtils;
55
56 /**
57  * Collection of utility methods related to producing image maps.
58  * Functionality was originally in {@link org.jfree.chart.ChartUtilities}.
59  *
60  * @author Richard Atkinson
61  */

62 public class ImageMapUtilities {
63
64     /**
65      * Writes an image map to an output stream.
66      *
67      * @param writer the writer (<code>null</code> not permitted).
68      * @param name the map name (<code>null</code> not permitted).
69      * @param info the chart rendering info (<code>null</code> not permitted).
70      *
71      * @throws java.io.IOException if there are any I/O errors.
72      */

73     public static void writeImageMap(PrintWriter JavaDoc writer, String JavaDoc name,
74                                      ChartRenderingInfo info)
75         throws IOException JavaDoc {
76
77         // defer argument checking...
78
ImageMapUtilities.writeImageMap(
79             writer, name, info,
80             new StandardToolTipTagFragmentGenerator(),
81             new StandardURLTagFragmentGenerator()
82         );
83
84     }
85
86     /**
87      * Writes an image map to an output stream.
88      *
89      * @param writer the writer (<code>null</code> not permitted).
90      * @param name the map name (<code>null</code> not permitted).
91      * @param info the chart rendering info (<code>null</code> not permitted).
92      * @param useOverLibForToolTips whether to use OverLIB for tooltips
93      * (http://www.bosrup.com/web/overlib/).
94      *
95      * @throws java.io.IOException if there are any I/O errors.
96      */

97     public static void writeImageMap(PrintWriter JavaDoc writer,
98                                      String JavaDoc name,
99                                      ChartRenderingInfo info,
100                                      boolean useOverLibForToolTips)
101         throws IOException JavaDoc {
102
103         ToolTipTagFragmentGenerator toolTipTagFragmentGenerator = null;
104         if (useOverLibForToolTips) {
105             toolTipTagFragmentGenerator
106                 = new OverLIBToolTipTagFragmentGenerator();
107         }
108         else {
109             toolTipTagFragmentGenerator
110                 = new StandardToolTipTagFragmentGenerator();
111         }
112         ImageMapUtilities.writeImageMap(
113             writer, name, info, toolTipTagFragmentGenerator,
114             new StandardURLTagFragmentGenerator()
115         );
116
117     }
118
119     /**
120      * Writes an image map to an output stream.
121      *
122      * @param writer the writer (<code>null</code> not permitted).
123      * @param name the map name (<code>null</code> not permitted).
124      * @param info the chart rendering info (<code>null</code> not permitted).
125      * @param toolTipTagFragmentGenerator the tool tip generator.
126      * @param urlTagFragmentGenerator the url generator.
127      *
128      * @throws java.io.IOException if there are any I/O errors.
129      */

130     public static void writeImageMap(PrintWriter JavaDoc writer, String JavaDoc name,
131             ChartRenderingInfo info,
132             ToolTipTagFragmentGenerator toolTipTagFragmentGenerator,
133             URLTagFragmentGenerator urlTagFragmentGenerator)
134         throws IOException JavaDoc {
135
136         writer.println(
137             ImageMapUtilities.getImageMap(
138                 name, info, toolTipTagFragmentGenerator, urlTagFragmentGenerator
139             )
140         );
141     }
142
143     /**
144      * Creates an image map element that complies with the XHTML 1.0
145      * specification.
146      *
147      * @param name the map name (<code>null</code> not permitted).
148      * @param info the chart rendering info (<code>null</code> not permitted).
149      *
150      * @return The map element.
151      */

152     public static String JavaDoc getImageMap(String JavaDoc name, ChartRenderingInfo info) {
153         return ImageMapUtilities.getImageMap(
154             name,
155             info,
156             new StandardToolTipTagFragmentGenerator(),
157             new StandardURLTagFragmentGenerator()
158         );
159     }
160
161     /**
162      * Creates an image map element that complies with the XHTML 1.0
163      * specification.
164      *
165      * @param name the map name (<code>null</code> not permitted).
166      * @param info the chart rendering info (<code>null</code> not permitted).
167      * @param toolTipTagFragmentGenerator the tool tip generator.
168      * @param urlTagFragmentGenerator the url generator.
169      *
170      * @return The map tag.
171      */

172     public static String JavaDoc getImageMap(String JavaDoc name, ChartRenderingInfo info,
173             ToolTipTagFragmentGenerator toolTipTagFragmentGenerator,
174             URLTagFragmentGenerator urlTagFragmentGenerator) {
175
176         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
177         sb.append("<map id=\"" + name + "\" name=\"" + name + "\">");
178         sb.append(StringUtils.getLineSeparator());
179         EntityCollection entities = info.getEntityCollection();
180         if (entities != null) {
181             int count = entities.getEntityCount();
182             for (int i = count - 1; i >= 0; i--) {
183                 ChartEntity entity = entities.getEntity(i);
184                 if (entity.getToolTipText() != null
185                         || entity.getURLText() != null) {
186                     String JavaDoc area = entity.getImageMapAreaTag(
187                         toolTipTagFragmentGenerator, urlTagFragmentGenerator
188                     );
189                     if (area.length() > 0) {
190                         sb.append(area);
191                         sb.append(StringUtils.getLineSeparator());
192                     }
193                 }
194             }
195         }
196         sb.append("</map>");
197         return sb.toString();
198         
199     }
200
201 }
202
Popular Tags