001: /* TabpanelAccordion.java
002:
003: {{IS_NOTE
004: Purpose:
005:
006: Description:
007:
008: History:
009: Sep 6, 2007 8:07:46 PM , Created by robbiecheng
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.IOException;
022: import java.io.Writer;
023:
024: import org.zkoss.lang.Strings;
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.zk.ui.render.Out;
031:
032: import org.zkoss.zul.Tabbox;
033: import org.zkoss.zul.Tab;
034: import org.zkoss.zul.Tabpanel;
035:
036: /**
037: * {@link Tabpanel}'s accordion mold.
038: *
039: * @author robbiecheng
040: *
041: * @since 3.0.0
042: */
043:
044: public class TabpanelAccordion implements ComponentRenderer {
045: public void render(Component comp, Writer out) throws IOException {
046: final SmartWriter wh = new SmartWriter(out);
047: final Execution exec = Executions.getCurrent();
048: final Tabpanel self = (Tabpanel) comp;
049: final Tab tab = self.getLinkedTab();
050: if (tab == null)
051: return; //generate nothing (Bug 1848377)
052: final Tabbox tabbox = self.getTabbox();
053: final String look = tabbox.getTabLook() + '-';
054: final String suffix = self.isSelected() ? "-sel" : "-uns";
055:
056: wh.write("<div id=\"").write(self.getUuid()).write("\">");
057: wh
058: .write("<table id=\"")
059: .write(tab.getUuid())
060: .write("\"")
061: .write(tab.getOuterAttrs())
062: .write(tab.getInnerAttrs())
063: .write(" z.sel=\"")
064: .write(tab.isSelected())
065: .write("\" z.type=\"zul.tab.Tab\" z.box=\"")
066: .write(tabbox.getUuid())
067: .write("\" z.panel=\"")
068: .write(self.getUuid())
069: .write(
070: "\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" ")
071: .write("z.disabled=\"").write(tab.isDisabled()).write(
072: "\"").writeln(">");
073:
074: if (!Strings.isBlank(tabbox.getPanelSpacing())
075: && self.getIndex() != 0)
076: wh.write("<tr height=\"").write(tabbox.getPanelSpacing())
077: .writeln("\"><td></td></tr>");
078:
079: wh.write("<tr><td class=\"").write(look).write("tl").write(
080: suffix).writeln("\"></td>").write("<td colspan=\"")
081: .write(tab.isClosable() ? 4 : 3).write("\" class=\"")
082: .write(look).write("tm").write(suffix).writeln(
083: "\"></td>").write("<td class=\"").write(look)
084: .write("tr").write(suffix).writeln("\"></td></tr>");
085:
086: wh.write("<tr class=\"").write(look).write('m');
087: if (!Strings.isBlank(tab.getHeight()))
088: wh.write("\" style=\"height:").write(tab.getHeight());
089: wh.write("\"><td class=\"").write(look).write("ml").write(
090: suffix).writeln("\"></td>").write(
091: "<td width=\"3\" class=\"").write(look).write("mm")
092: .write(suffix).writeln("\"></td>").write(
093: "<td align=\"left\" class=\"").write(look)
094: .write("mm").write(suffix).write(
095: "\"><a href=\"javascript:;\" id=\"").write(
096: tab.getUuid()).write("!a\">").write(
097: tab.getImgTag());
098: new Out(tab.getLabel()).render(out);
099: wh.writeln("</a></td>");
100:
101: if (tab.isClosable()) {
102: wh.write("<td width=\"11\" align=\"right\" class=\"")
103: .write(look).write("mm").write(suffix).write(
104: "\"><img id=\"").write(tab.getUuid())
105: .write("!close\" src=\"").write(
106: exec.encodeURL("~./zul/img/close-off.gif"))
107: .writeln("\"/></td>");
108: }
109:
110: wh.write("<td width=\"3\" class=\"").write(look).write("mm")
111: .write(suffix).writeln("\"></td>")
112: .write("<td class=\"").write(look).write("mr").write(
113: suffix).writeln("\"></td></tr>");
114:
115: wh.write("<tr><td colspan=\"").write(tab.isClosable() ? 6 : 5)
116: .write("\" class=\"").write(look).write(
117: "b\"></td></tr>\n</table>");
118:
119: wh.write("<div id=\"").write(self.getUuid()).write("!real\"")
120: .write(self.getOuterAttrs())
121: .write(self.getInnerAttrs()).write("><div id=\"")
122: .write(self.getUuid()).write("!cave\">").writeChildren(
123: self).writeln("</div></div></div>");
124: }
125: }
|