1
19 package org.apache.batik.ext.awt.image.spi;
20
21 import java.awt.Color;
22 import java.awt.Graphics2D;
23 import java.awt.image.BufferedImage;
24 import java.util.Hashtable;
25
26 import org.apache.batik.ext.awt.image.GraphicsUtil;
27 import org.apache.batik.ext.awt.image.renderable.Filter;
28 import org.apache.batik.ext.awt.image.renderable.RedRable;
29 import org.apache.batik.i18n.LocalizableSupport;
30
31
35 public class DefaultBrokenLinkProvider
36 extends BrokenLinkProvider {
37
38 static Filter brokenLinkImg = null;
39 static final String MESSAGE_RSRC = "resources.Messages";
40
41 static final Color BROKEN_LINK_COLOR = new Color( 255,255,255,190 );
42
43 public static String formatMessage(Object base,
44 String code,
45 Object [] params) {
46
47 ClassLoader cl = null;
48 try {
49
50 cl = DefaultBrokenLinkProvider.class.getClassLoader();
51
52
53 cl = base.getClass().getClassLoader();
54 } catch (SecurityException se) {
55 }
56 LocalizableSupport ls;
57 ls = new LocalizableSupport(MESSAGE_RSRC, base.getClass(), cl);
58 return ls.formatMessage(code, params);
59 }
60
61 public Filter getBrokenLinkImage(Object base,
62 String code, Object [] params) {
63 synchronized (DefaultBrokenLinkProvider.class) {
64 if (brokenLinkImg != null)
65 return brokenLinkImg;
66
67 BufferedImage bi;
68 bi = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
69
70
71
72 Hashtable ht = new Hashtable();
73 ht.put(BROKEN_LINK_PROPERTY,
74 formatMessage(base, code, params));
75 bi = new BufferedImage(bi.getColorModel(), bi.getRaster(),
76 bi.isAlphaPremultiplied(),
77 ht);
78 Graphics2D g2d = bi.createGraphics();
79
80 g2d.setColor( BROKEN_LINK_COLOR );
81 g2d.fillRect(0, 0, 100, 100);
82 g2d.setColor(Color.black);
83 g2d.drawRect(2, 2, 96, 96);
84 g2d.drawString("Broken Image", 6, 50);
85 g2d.dispose();
86
87 brokenLinkImg = new RedRable(GraphicsUtil.wrap(bi));
88 return brokenLinkImg;
89 }
90 }
91 }
92