Example 3 : A simple Graph with Image Map
This is an example of how to add image maps to a DynamicImage
- Set the hasMap parameter of DynamicImage to true
- Map areas are added to the image in the paint method with the addMapArea(..) method of IPainterContext
-
Each area can have the following properties, that can be set with the
corresponding setter methods of
IPainterContext
- a tooltip
- javascript event handlers : onclick, ondblclick, onmouseover, onmouseout : see the js handler example
- a direct link : see the direct link example
- See the next examples how to add JavaScript Handlers and/or DirectLink actions to the map.
Note
This is static documentation. The image below is just a screenshot.
You can see this example live

MapDemo.html
<img jwcid="@sotacs:DynamicImage" hasMap="ognl:true"
parameters="ognl:{100, 80, 150}"
height="200" width="200" painter="painter:paintme" />
MapDemo.java
public abstract class MapDemo extends BasePage{
public void paintme(Graphics2D g2d, IPainterContext context){
// Enable antialiasing for shapes
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
//white background
g2d.setColor(Color.WHITE);
g2d.fillRect(0,0, context.getWidth(), context.getHeight());
//draw the time string
g2d.setColor(Color.BLACK);
g2d.drawString("produced " + new Date(), 0, 180);
//draw a green triangle
g2d.setColor(Color.GREEN);
Polygon triangle = new Polygon(new int[]{130, 150, 170}, new int[]{0, 60, 0},3);
g2d.fill(triangle);
//and declare the image map area
MapArea area = new PolygonMapArea(triangle);
area.setTooltip("This is a green triangle");
context.addMapArea(area);
//draw a black circle
g2d.setColor(Color.BLACK);
g2d.fillOval(0, 0, 60, 60);
//... and declare the image map area
area = new CircleMapArea(30,30,30);
area.setTooltip("This is a black circle");
context.addMapArea(area);
//draw the 3 bars
Color[] colors = new Color[]{Color.RED, Color.BLUE, Color.BLUE.darker()};
Rectangle[] bars = new Rectangle[3];
for (int i = 0; i < 3; i++) {
int value = (Integer)context.getParameters()[i];
g2d.setColor(colors[i]);
bars[i] = new Rectangle(0, 80 + 30 * i, value, 20);
g2d.fill(bars[i]);
//... and declare the image map area
area = new RectangleMapArea(bars[i]);
area.setTooltip("results of 200" + i);
context.addMapArea(area);
}
}
}
