package manuelbarzi.wicket.flash; import org.apache.wicket.Component; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.transformer.AbstractTransformerBehavior; /** * simple & rude flash container using transformer :-) * * example: * * + html: * * <object wicket:id="flash" /> * * + java: * * Flash flash = new Flash("flash"); * flash.setMovie("http://www.notcelebrity.co.uk/flashcontent/flashHeader.swf?thename=Wicket"); * flash.setWidth("425"); * flash.setHeight("280"); * flash.setQuality("high"); * flash.setWmode("transparent"); * add(flash); * * + output: * * <object width="425" height="280"> * <param name="movie" value="http://www.notcelebrity.co.uk/flashcontent/flashHeader.swf?thename=Wicket" /> * <param name="wmode" value="transparent" /> * <param name="quality" value="high" /> * <embed src="http://www.notcelebrity.co.uk/flashcontent/flashHeader.swf?thename=Wicket" type="application/x-shockwave-flash" wmode="transparent" quality="high" width="425" height="280" /> * </object> * * @author manuelbarzi * */ public class Flash extends WebMarkupContainer { private static final long serialVersionUID = 1L; private String movie; private String wmode; private String width; private String height; private String quality; public Flash(String id) { super(id); add(new AbstractTransformerBehavior() { private static final long serialVersionUID = 1L; @Override public CharSequence transform(Component component, CharSequence output) throws Exception { StringBuilder sb = new StringBuilder(); sb.append("<object"); if (width != null) { appendParamAttribute(sb, "width", width); } if (height != null) { appendParamAttribute(sb, "height", height); } sb.append(">"); if (movie != null) { appendParamTag(sb, "movie", movie); } if (quality != null) { appendParamTag(sb, "quality", quality); } if (wmode != null) { appendParamTag(sb, "wmode", wmode); } sb.append("<embed"); if (width != null) { appendParamAttribute(sb, "width", width); } if (height != null) { appendParamAttribute(sb, "height", height); } if (movie != null) { appendParamAttribute(sb, "src", movie); } if (quality != null) { appendParamAttribute(sb, "quality", quality); } if (wmode != null) { appendParamAttribute(sb, "wmode", wmode); } appendParamAttribute(sb, "type", "application/x-shockwave-flash"); sb.append(" />"); sb.append("</object>"); return sb; } private void appendParamAttribute(StringBuilder sb, String name, String value) { sb.append(" "); sb.append(name); sb.append("=\""); sb.append(value); sb.append("\""); } private void appendParamTag(StringBuilder sb, String name, String value) { sb.append("<param"); appendParamAttribute(sb, "name", name); appendParamAttribute(sb, "value", value); sb.append(" />"); } }); } public void setMovie(String value) { movie = value; } public void setWmode(String value) { wmode = value; } public void setWidth(String value) { width = value; } public void setHeight(String value) { height = value; } public void setQuality(String value) { quality = value; } }