001: /* Groupbox3d.java
002:
003: {{IS_NOTE
004: Purpose:
005:
006: Description:
007:
008: History:
009: Wed Sep 5 13:18:53 2007, Created by Dennis.Chen
010: }}IS_NOTE
011:
012: Copyright (C) 2007 Potix Corporation. All Rights Reserved.
013:
014: {{IS_RIGHT
015: This program is distributed under GPL Version 2.0 in the hope that
016: it will be useful, but WITHOUT ANY WARRANTY.
017: }}IS_RIGHT
018: */
019: package org.zkoss.zkmax.zul.render;
020:
021: import java.io.Writer;
022: import java.io.IOException;
023: import java.util.Iterator;
024:
025: import org.zkoss.zk.ui.Component;
026: import org.zkoss.zk.ui.Execution;
027: import org.zkoss.zk.ui.Executions;
028: import org.zkoss.zk.ui.render.ComponentRenderer;
029: import org.zkoss.zk.ui.render.SmartWriter;
030: import org.zkoss.zul.Caption;
031: import org.zkoss.zul.Groupbox;
032:
033: /**
034: * {@link Groupbox}'s 3d mold.
035: *
036: * @author dennis.chen
037: * @since 3.0.0
038: */
039: public class Groupbox3d implements ComponentRenderer {
040: public void render(Component comp, Writer out) throws IOException {
041: final SmartWriter wh = new SmartWriter(out);
042: final Groupbox self = (Groupbox) comp;
043: final String look = self.getCaptionLook() + '-';
044: final Caption caption = self.getCaption();
045: final String uuid = self.getUuid();
046: final Execution exec = Executions.getCurrent();
047:
048: wh.write("<div id=\"").write(uuid).write(
049: "\" z.type=\"zul.widget.Grbox\"").write(
050: self.getOuterAttrs()).write(self.getInnerAttrs())
051: .write(">");
052: String gcExtStyle;
053: if (caption != null) {
054: wh
055: .writeln("<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">");
056: wh.write("<tr><td class=\"").write(look).writeln(
057: "tl\"></td>");
058: wh.write("<td colspan=\"3\" class=\"").write(look).writeln(
059: "tm\"></td>");
060: wh.write("<td class=\"").write(look).writeln(
061: "tr\"></td></tr>");
062:
063: wh.write("<tr class=\"").write(look).write('m').write(
064: "\"><td class=\"").write(look)
065: .writeln("ml\"></td>");
066: wh.write("<td width=\"3\" class=\"").write(look).writeln(
067: "mm\"></td>");
068: wh.write("<td class=\"").write(look).write("mm\">");
069: caption.redraw(out);
070: wh.writeln("</td>");
071:
072: wh.write("<td width=\"3\" class=\"").write(look).writeln(
073: "mm\"></td>");
074: wh.write("<td class=\"").write(look).writeln(
075: "mr\"></td></tr>");
076:
077: wh.write("<tr><td colspan=\"5\" class=\"").write(look)
078: .writeln("b\"></td></tr>");
079: wh.write("</table>");
080: gcExtStyle = "border-top:0;";
081: } else {
082: gcExtStyle = "";
083: }
084:
085: String cs = self.getContentStyle();
086: if (cs != null)
087: gcExtStyle += cs;
088:
089: wh.write("<div id=\"").write(uuid).write("!slide\"");
090: if (!self.isOpen())
091: wh.write(" style=\"display:none\" ");
092: wh.write(">");
093:
094: wh.write("<div id=\"").write(uuid).write("!cave\" class=\"")
095: .write(self.getContentSclass()).write("\"").writeAttr(
096: "style", gcExtStyle).write(">");
097:
098: for (Iterator it = self.getChildren().iterator(); it.hasNext();) {
099: final Component child = (Component) it.next();
100: if (caption != child)
101: child.redraw(out);
102: }
103:
104: wh.write("</div></div>");
105:
106: // shadow
107: wh
108: .write("<table id=\"")
109: .write(self.getUuid())
110: .writeln(
111: "!sdw\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">");
112: wh.write("<tr><td class=\"").write(look)
113: .writeln("shdl\"></td>");
114: wh.write("<td class=\"").write(look)
115: .write("shdm\"><img src=\"").write(
116: exec.encodeURL("~./img/spacer.gif")).writeln(
117: "\"/></td>");
118: wh.write("<td class=\"").write(look).writeln("shdr\"></td>");
119: wh.write("</tr></table></div>");
120: }
121: }
|