rendered paste bodypackage wicket.contrib.eudock;
import java.util.ArrayList;
import java.util.List;
import wicket.Component;
import wicket.RequestCycle;
import wicket.ResourceReference;
import wicket.Response;
import wicket.behavior.AbstractBehavior;
import wicket.markup.html.IHeaderResponse;
import wicket.markup.html.link.Link;
import wicket.markup.html.resources.CompressedResourceReference;
import wicket.util.string.JavascriptUtils;
public class EUDock extends AbstractBehavior {
private static final long serialVersionUID = 1L;
private static final CompressedResourceReference EUJS =
new CompressedResourceReference("contrib/eudock/euDock.2.0.js");
private static final CompressedResourceReference EUIMGJS =
new CompressedResourceReference("contrib/eudock/euDock.Image.js");
private static final CompressedResourceReference EULABELJS =
new CompressedResourceReference("contrib/eudock/euDock.Label.js");
private static final ResourceReference DOCKBGL =
new ResourceReference("contrib/eudock/images/dockBg-l.png");
private static final ResourceReference DOCKBGC =
new ResourceReference("contrib/eudock/images/dockBg-c-o.gif");
private static final ResourceReference DOCKBGR =
new ResourceReference("contrib/eudock/images/dockBg-r.png");
private static final ResourceReference DOCKBGV =
new ResourceReference("contrib/eudock/images/dockBg-c-v.gif");
private static final ResourceReference DOCKBGT =
new ResourceReference("contrib/eudock/images/dockBg-u.png");
private static final ResourceReference CUBE =
new ResourceReference("contrib/eudock/images/cube.png");
private static final ResourceReference IMGPATH =
new ResourceReference("contrib/eudock");
private int iconsOffset = 2;
private List<Icon> iconlist = new ArrayList();
public class Icon {
private String icon;
private String link;
private String text;
private String style = "background:#eeefff;border-style:solid;border-color:#9Fb6b6;border-width:3px;";
private int offsetX = 0;
private int offsetY = -120;
public Icon(String icon,String link,String text,String style) {
this.icon = icon;
this.link = link;
this.text = text;
this.style = style;
}
public Icon(String icon,String link,String text) {
this.icon = icon;
this.link = link;
this.text = text;
}
public Icon(String icon,String link) {
this.icon = icon;
this.link = link;
}
public Icon(String link) {
this.link = link;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getIcon() {
return icon;
}
public void setLink(String link) {
this.link = link;
}
public String getLink() {
return link;
}
public void setText(String text) {
this.text = text;
}
public String getText() {
return text;
}
public void setStyle(String style) {
this.style = style;
}
public String getStyle() {
return style;
}
public void setOffsetX(int offsetX) {
this.offsetX = offsetX;
}
public int getOffsetX() {
return offsetX;
}
public void setOffsetY(int offsetY) {
this.offsetY = offsetY;
}
public int getOffsetY() {
return offsetY;
}
}
public EUDock() {
}
public void renderHead(IHeaderResponse response) {
response.renderJavascriptReference(EUJS);
response.renderJavascriptReference(EUIMGJS);
response.renderJavascriptReference(EULABELJS);
}
public void addIcon(String iconImage,String link,String text) {
if(link == null)
return;
iconlist.add(new Icon(iconImage,link,text));
}
public void addIcon(String iconImage,String link,String text,String style) {
if(link == null)
return;
iconlist.add(new Icon(iconImage,link,text,style));
}
public void addIcon(String iconImage,String link) {
if(link == null)
return;
iconlist.add(new Icon(iconImage,link));
}
public void addIcon(String link) {
if(link == null)
return;
iconlist.add(new Icon(link));
}
public void addIcon(Icon icon) {
iconlist.add(icon);
}
private String fading = ABSOLUTE;
private String alignment = DOWN;
private int alignmentoffset = 0;
public final static String DOWN = "euDOWN";
public final static String LEFT = "euLEFT";
public final static String RIGHT = "euRIGHT";
public final static String UP = "euUP";
public final static String ABSOLUTE = "euABSOLUTE";
public final static String RELATIVE = "euRELATIVE";
public void onRendered(Component component) {
Response res = component.getResponse();
final String id = component.getMarkupId();
final String dock = "dock"+id;
res.write(JavascriptUtils.SCRIPT_OPEN_TAG);
res.write("euEnv.imageBasePath='"+getResourceUrl(IMGPATH)+"';\n");
res.write("var "+dock+" = new euDock();\n");
res.write(dock+".setBar({\n");
res.write("left: {euImage:{image:'"+getResourceUrl(DOCKBGL)+"'}},\n");
res.write("horizontal: {euImage:{image:'"+getResourceUrl(DOCKBGC)+"'}},\n");
res.write("top: {euImage:{image:'"+getResourceUrl(DOCKBGT)+"'}},\n");
res.write("vertical: {euImage:{image:'"+getResourceUrl(DOCKBGV)+"'}},\n");
res.write("right: {euImage:{image:'"+getResourceUrl(DOCKBGR)+"'}}\n");
res.write("});\n");
res.write(dock+".setIconsOffset("+getIconsOffset()+");\n");
res.write(dock+".setAnimation(euMOUSE,0.3);\n");
res.write(dock+".setScreenAlign("+alignment+","+alignmentoffset+");\n");
res.write(dock+".animFading = "+fading+";\n");
for(Icon icon : iconlist) {
if(icon.getIcon() == null)
icon.setIcon(getResourceUrl(CUBE));
res.write(dock+".addIcon(new Array({euImage:{image:'"+icon.getIcon()+"'}},{euLabel:{ object:{euImage:{image:'"+icon.getIcon()+"'}},");
if(icon.getText() != null)
res.write("txt:'"+icon.getText()+"',style: '"+icon.getStyle()+"',");
else
res.write("txt: '',style: '',");
res.write("anchor: "+alignment+
",offsetX: "+icon.getOffsetX()+",offsetY:"+icon.getOffsetY()+"}}),{" +
"link:'"+icon.getLink()+"'});\n");
}
res.write(JavascriptUtils.SCRIPT_CLOSE_TAG);
}
private String getResourceUrl(ResourceReference ref) {
return (String)RequestCycle.get().urlFor(ref);
}
public void setIconsOffset(int iconsOffset) {
this.iconsOffset = iconsOffset;
}
public int getIconsOffset() {
return iconsOffset;
}
public void setAnimationFading(String str) {
this.fading = str;
}
public void setAlignment(String alignment, int offset ) {
this.alignment = alignment;
this.alignmentoffset = offset;
}
}