package freenet.clients.http; import freenet.support.HTMLNode; /** PageNode is a wrapper similar to InfoboxNode for a whole page. Similarly, PageNode.outer is the * HTML for the whole page, PageNode.content is where you add content to the page, and headNode is * the <head> element so you can add headers. The title will already have been added. */ public class PageNode extends InfoboxNode { /** Return the HTMLNode corresponding to the <head> tag, so we can add stuff to it, e.g. * <meta> tags. */ public final HTMLNode headNode; PageNode(HTMLNode page, HTMLNode head, HTMLNode content) { super(page, content); this.headNode = head; } /** * Adds a custom style sheet to the header of the page. * * @param customStyleSheet * The URL of the custom style sheet */ public void addCustomStyleSheet(String customStyleSheet) { addForwardLink("stylesheet", customStyleSheet, "text/css", "screen"); } /** * Adds a document relationship forward link to the HTML document's HEAD * node. * * @param linkType * The link type (e.g. "stylesheet" or "shortcut icon") * @param href * The link */ public void addForwardLink(String linkType, String href) { addForwardLink(linkType, href, null, null); } /** * Adds a document relationship forward link to the HTML document's HEAD * node. * * @param linkType * The link type (e.g. "stylesheet" or "shortcut icon") * @param href * The link * @param type * The type of the referenced data * @param media * The media for which this link is valid */ public void addForwardLink(String linkType, String href, String type, String media) { HTMLNode linkNode = headNode.addChild("link", new String[] { "rel", "href" }, new String[] { linkType, href }); if (type != null) { linkNode.addAttribute("type", type); } if (media != null) { linkNode.addAttribute("media", media); } } }