package ilarkesto.ui.web; import java.io.PrintWriter; public class CssRenderer { private PrintWriter out; private Style style; public CssRenderer(PrintWriter out) { this.out = out; } public void flush() { endStartedStyle(); out.flush(); } public Style style(String name) { endStartedStyle(); out.print(name); out.print(" {"); style = new Style(); return style; } public Style html() { return style("html"); } public Style body() { return style("body"); } public Style table() { return style("table"); } public Style input() { return style("input"); } public Style textarea() { return style("textarea"); } public Style select() { return style("select"); } public Style form() { return style("form"); } public Style iframe() { return style("iframe"); } public Style h1() { return style("h1"); } public Style h2() { return style("h2"); } public Style h3() { return style("h3"); } public Style h4() { return style("h4"); } public Style h5() { return style("h5"); } public Style h6() { return style("h6"); } public Style blockquote() { return style("blockquote"); } public Style pre() { return style("pre"); } public Style code() { return style("code"); } public Style ul() { return style("ul"); } public Style ol() { return style("ol"); } public Style td() { return style("td"); } public Style div() { return style("div"); } public Style a() { return style("a"); } public Style aHover() { return style("a:hover"); } public Style p() { return style("p"); } public Style img() { return style("img"); } private void endStartedStyle() { if (style == null) return; out.println(" }"); style = null; } public class Style { public Style zIndex(int value) { return attr("z-index", value); } public Style positionAbsolute() { return position("absolute"); } public Style positionFixed(int top, int left) { positionFixed(); top(top, "px"); return left(left, "px"); } public Style top(int value, String unit) { return attr("top", value + unit); } public Style top(int value) { return top(value, "px"); } public Style left(int value) { return left(value, "px"); } public Style left(int value, String unit) { return attr("left", value + unit); } public Style positionRelative() { return position("relative"); } public Style positionFixed() { return position("fixed"); } public Style position(String value) { return attr("position", value); } public Style listStyleNone() { return listStyle("none"); } public Style listStyle(String value) { return attr("list-style", value); } public Style borderTop(int width, String color) { return borderTop(width, "solid", color); } public Style borderTop(int width, String style, String color) { return borderTop(width + "px " + style + " " + color); } public Style borderTop(String value) { return attr("border-top", value); } public Style borderLeft(String value) { return attr("border-left", value); } public Style borderRight(String value) { return attr("border-right", value); } public Style borderBottom(int width, String color) { return borderBottom(width, "solid", color); } public Style borderBottom(int width, String style, String color) { return borderBottom(width + "px " + style + " " + color); } public Style borderBottom(String value) { return attr("border-bottom", value); } public Style displayNone() { return display("none"); } public Style displayInline() { return display("inline"); } public Style displayBlock() { return display("block"); } public Style display(String value) { return attr("display", value); } public Style whiteSpaceNowrap() { return whiteSpace("nowrap"); } public Style whiteSpaceNormal() { return whiteSpace("normal"); } public Style whiteSpace(String value) { return attr("white-space", value); } public Style textAlignCenter() { return textAlign("center"); } public Style textAlignLeft() { return textAlign("left"); } public Style textAlignRight() { return textAlign("right"); } public Style textAlignJustify() { return textAlignJustify("auto"); } public Style textAlignJustify(String type) { return textAlign("justify").attr("text-justify", type); } public Style textAlign(String value) { return attr("text-align", value); } public Style float_(String value) { return attr("float", value); } public Style floatLeft() { return float_("left"); } public Style floatRight() { return float_("right"); } public Style clearBoth() { return clear("both"); } public Style clear(String value) { return attr("clear", value); } public Style textDecoration(String value) { return attr("text-decoration", value); } public Style textDecorationNone() { return textDecoration("none"); } public Style textDecorationLineThrough() { return textDecoration("line-through"); } public Style textDecorationUnderline() { return textDecoration("underline"); } public Style alignRight() { return align("right"); } public Style alignLeft() { return align("left"); } public Style alignCenter() { return align("center"); } public Style align(String value) { return attr("align", value); } public Style overflowVisible() { return overflow("visible"); } public Style overflowHidden() { return overflow("hidden"); } public Style overflowAuto() { return overflow("auto"); } public Style overflow(String value) { return attr("overflow", value); } public Style maxWidth(int pixels) { return maxWidth(pixels, "px"); } public Style maxWidth(int value, String unit) { return attr("max-width", value + unit); } public Style minWidth(int pixels) { return minWidth(pixels, "px"); } public Style minWidth(int value, String unit) { return attr("min-width", value + unit); } public Style maxHeight(int pixels) { return maxHeight(pixels, "px"); } public Style maxHeight(int value, String unit) { return attr("max-height", value + unit); } public Style minHeight(int pixels) { return minHeight(pixels, "px"); } public Style minHeight(int value, String unit) { return attr("min-height", value + unit); } public Style height(int pixels) { return height(pixels, "px"); } public Style height(int value, String unit) { return attr("height", value + unit); } public Style height100() { return height(100, "%"); } public Style width100() { return width(100, "%"); } public Style verticalAlignTop() { return verticalAlign("top"); } public Style verticalAlignMiddle() { return verticalAlign("middle"); } public Style verticalAlignBottom() { return verticalAlign("bottom"); } public Style verticalAlign(String value) { return attr("vertical-align", value); } public Style borderRadius(int value) { attr("-webkit-border-radius", value + "px"); return attr("-moz-border-radius", value + "px"); } public Style columnWidth(int value) { attr("-webkit-column-width", value + "px"); return attr("-moz-column-width", value + "px"); } public Style columnGap(int value) { attr("-webkit-column-gap", value + "px"); return attr("-moz-column-gap", value + "px"); } public Style columnCount(int value) { attr("-webkit-column-count", value); return attr("-moz-column-count", value); } public Style borderNone() { return border("none"); } public Style border(int width, String color) { return border(width, "solid", color); } public Style border(int width, String style, String color) { return border(width + "px " + style + " " + color); } public Style border(String value) { return attr("border", value); } public Style lineHeight(int pixels) { return lineHeight(pixels + "px"); } public Style lineHeight(String value) { return attr("line-height", value); } public Style borderWidth(int value) { return attr("border-width", value + "px"); } public Style width(int value) { return width(value, "px"); } public Style width(int value, String unit) { return attr("width", value + unit); } public Style colorWhite() { return color("white"); } public Style colorBlack() { return color("black"); } public Style colorGray() { return color("gray"); } public Style color(String value) { return attr("color", value); } public Style borderCollapseCollapse() { return borderCollapse("collapse"); } public Style borderCollapse(String value) { return attr("border-collapse", value); } public Style fontWeightNormal() { return fontWeight("normal"); } public Style fontWeightBold() { return fontWeight("bold"); } public Style fontWeight(String value) { return attr("font-weight", value); } public Style fontStyleNormal() { return fontStyle("normal"); } public Style fontStyleItalic() { return fontStyle("italic"); } public Style fontStyle(String value) { return attr("font-style", value); } public Style fontFamilyMonospace() { return fontFamily("monospace"); } public Style fontFamily(String value) { return attr("font-family", value); } public Style fontSize(int value) { return attr("font-size", value + "px"); } public Style marginBottom(int value) { return attr("margin-bottom", value + "px"); } public Style marginTop(int value) { return attr("margin-top", value + "px"); } public Style marginRight(int value) { return attr("margin-right", value + "px"); } public Style marginLeft(int value) { return attr("margin-left", value + "px"); } public Style margin(int value) { return attr("margin", value + "px"); } public Style margin(int top, int right, int bottom, int left) { return margin(top + "px " + right + "px " + bottom + "px " + left + "px"); } public Style margin(int topBottom, int leftRight) { return margin(topBottom + "px " + leftRight + "px"); } public Style margin(String margin) { return attr("margin", margin); } public Style padding(int value) { return attr("padding", value + "px"); } public Style padding(int top, int right, int bottom, int left) { return attr("padding", top + "px " + right + "px " + bottom + "px " + left + "px"); } public Style padding(int topBottom, int leftRight) { return attr("padding", topBottom + "px " + leftRight + "px"); } public Style paddingLeft(int value) { return attr("padding-left", value + "px"); } public Style paddingRight(int value) { return attr("padding-right", value + "px"); } public Style paddingTop(int value) { return attr("padding-top", value + "px"); } public Style paddingBottom(int value) { return attr("padding-bottom", value + "px"); } public Style background(String value) { return attr("background", value); } public Style background(String color, String url) { return attr("background", color + " url(" + url + ")"); } public Style backgroundUrl(String imageUrl) { return background("url(" + imageUrl + ")"); } public Style backgroundNone() { return background("none"); } public Style backgroundTransparent() { return background("transparent"); } public Style backgroundBlack() { return background("black"); } public Style backgroundWhite() { return background("white"); } public Style cursorPointer() { return cursor("pointer"); } public Style cursorDefault() { return cursor("default"); } public Style cursorMove() { return cursor("move"); } public Style cursor(String value) { return attr("cursor", value); } private Style attr(String name, int value) { return attr(name, String.valueOf(value)); } private Style attr(String name, String value) { out.print(" "); out.print(name); out.print(": "); out.print(value); out.print(";"); return this; } } }