All pastes #420398 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-04-02 03:07 UTC
rendered paste body
package 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;
	}
}