001: /* TabDefault.java
002:
003: {{IS_NOTE
004: Purpose:
005:
006: Description:
007:
008: History:
009: Sep 6, 2007 3:59:51 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.Tab;
033: import org.zkoss.zul.Tabbox;
034: import org.zkoss.zul.Tabpanel;
035:
036: /**
037: * {@link Tab}'s default mold.
038: * It forward to {@link TabDefaultV} if the orient is vertical.
039: *
040: * @author robbiecheng
041: *
042: * @since 3.0.0
043: *
044: */
045: public class TabDefault implements ComponentRenderer {
046: private final TabDefaultV _vtab = new TabDefaultV();
047:
048: public void render(Component comp, Writer out) throws IOException {
049: final Tab self = (Tab) comp;
050: final Tabbox tabbox = self.getTabbox();
051: if ("vertical".equals(tabbox.getOrient())) {
052: _vtab.render(comp, out);
053: return; //done
054: }
055:
056: final SmartWriter wh = new SmartWriter(out);
057: final Execution exec = Executions.getCurrent();
058: final String look = tabbox.getTabLook() + '-';
059: final String suffix = self.isSelected() ? "-sel" : "-uns";
060: final Tabpanel panel = self.getLinkedPanel();
061:
062: final int colspan = self.isClosable() ? 4 : 3;
063: wh.write("<td id=\"").write(self.getUuid()).write(
064: "\" z.type=\"Tab\"").write(self.getOuterAttrs()).write(
065: self.getInnerAttrs()).write(" z.sel=\"").write(
066: self.isSelected()).write("\" z.box=\"").write(
067: tabbox.getUuid()).write("\" z.panel=\"").write(
068: panel == null ? "" : panel.getUuid()).write("\" ")
069: .write("z.disabled=\"").write(self.isDisabled()).write(
070: "\">");
071:
072: wh
073: .writeln(
074: "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">")
075: .write("<tr><td class=\"").write(look).write("tl")
076: .write(suffix).writeln("\"></td>").write(
077: "<td colspan=\"").write(colspan).write(
078: "\" class=\"").write(look).write("tm").write(
079: suffix).writeln("\"></td>").write(
080: "<td class=\"").write(look).write("tr").write(
081: suffix).writeln("\"></td></tr>");
082:
083: wh.write("<tr class=\"").write(look).write('m');
084: if (!Strings.isBlank(self.getHeight()))
085: wh.write("\" style=\"height:").write(self.getHeight());
086: wh.writeln("\"><td class=\"").write(look).write("ml").write(
087: suffix).writeln("\"></td>").write(
088: "<td width=\"3\" class=\"").write(look).write("mm")
089: .write(suffix).writeln("\"></td>").write(
090: "<td align=\"center\" class=\"").write(look)
091: .write("mm").write(suffix).write(
092: "\"><a href=\"javascript:;\"").write(" id=\"")
093: .write(self.getUuid()).write("!a\">").write(
094: self.getImgTag());
095: new Out(self.getLabel()).render(out);
096: wh.writeln("</a></td>");
097:
098: if (self.isClosable()) {
099: // Bug 1780044: width cannot (and need not) be specified
100: wh.write("<td align=\"right\" class=\"").write(look).write(
101: "mm").write(suffix).write("\"><img id=\"").write(
102: self.getUuid()).write("!close\" src=\"").write(
103: exec.encodeURL("~./zul/img/close-off.gif"))
104: .writeln("\"/></td>");
105: }
106:
107: wh.write("<td width=\"3\" class=\"").write(look).write("mm")
108: .write(suffix).writeln("\"></td>")
109: .write("<td class=\"").write(look).write("mr").write(
110: suffix).writeln("\"></td></tr>");
111:
112: wh.write("<tr><td class=\"").write(look).write("bl").write(
113: suffix).writeln("\"></td>").write("<td colspan=\"")
114: .write(colspan).write("\" class=\"").write(look).write(
115: "bm").write(suffix).writeln("\"></td>").write(
116: "<td class=\"").write(look).write("br").write(
117: suffix).writeln("\"></td></tr></table></td>");
118: }
119: }
|