| <!DOCTYPE HTML> |
| <html lang="en"> |
| <head> |
| <!-- Generated by javadoc --> |
| <title>Source code</title> |
| <meta name="description" content="source: package: org.apache.juneau.html, class: BasicHtmlDocTemplate"> |
| <meta name="generator" content="javadoc/SourceToHTMLConverter"> |
| <link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style"> |
| </head> |
| <body class="source"> |
| <main role="main"> |
| <div class="sourceContainer"> |
| <pre><span class="sourceLineNo">001</span><a id="line.1">// ***************************************************************************************************************************</a> |
| <span class="sourceLineNo">002</span><a id="line.2">// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *</a> |
| <span class="sourceLineNo">003</span><a id="line.3">// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *</a> |
| <span class="sourceLineNo">004</span><a id="line.4">// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *</a> |
| <span class="sourceLineNo">005</span><a id="line.5">// * with the License. You may obtain a copy of the License at *</a> |
| <span class="sourceLineNo">006</span><a id="line.6">// * *</a> |
| <span class="sourceLineNo">007</span><a id="line.7">// * http://www.apache.org/licenses/LICENSE-2.0 *</a> |
| <span class="sourceLineNo">008</span><a id="line.8">// * *</a> |
| <span class="sourceLineNo">009</span><a id="line.9">// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *</a> |
| <span class="sourceLineNo">010</span><a id="line.10">// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *</a> |
| <span class="sourceLineNo">011</span><a id="line.11">// * specific language governing permissions and limitations under the License. *</a> |
| <span class="sourceLineNo">012</span><a id="line.12">// ***************************************************************************************************************************</a> |
| <span class="sourceLineNo">013</span><a id="line.13">package org.apache.juneau.html;</a> |
| <span class="sourceLineNo">014</span><a id="line.14"></a> |
| <span class="sourceLineNo">015</span><a id="line.15">import static org.apache.juneau.html.AsideFloat.*;</a> |
| <span class="sourceLineNo">016</span><a id="line.16"></a> |
| <span class="sourceLineNo">017</span><a id="line.17">import org.apache.juneau.internal.*;</a> |
| <span class="sourceLineNo">018</span><a id="line.18"></a> |
| <span class="sourceLineNo">019</span><a id="line.19">/**</a> |
| <span class="sourceLineNo">020</span><a id="line.20"> * A basic template for the HTML doc serializer.</a> |
| <span class="sourceLineNo">021</span><a id="line.21"> *</a> |
| <span class="sourceLineNo">022</span><a id="line.22"> * <p></a> |
| <span class="sourceLineNo">023</span><a id="line.23"> * This class can be subclassed to customize page rendering.</a> |
| <span class="sourceLineNo">024</span><a id="line.24"> *</a> |
| <span class="sourceLineNo">025</span><a id="line.25"> * <ul class='seealso'></a> |
| <span class="sourceLineNo">026</span><a id="line.26"> * <li class='link'><a class="doclink" href="../../../../overview-summary.html#juneau-marshall.jm.HtmlDetails">HTML Details</a></a> |
| <span class="sourceLineNo">027</span><a id="line.27"> * </ul></a> |
| <span class="sourceLineNo">028</span><a id="line.28"> */</a> |
| <span class="sourceLineNo">029</span><a id="line.29">public class BasicHtmlDocTemplate implements HtmlDocTemplate {</a> |
| <span class="sourceLineNo">030</span><a id="line.30"></a> |
| <span class="sourceLineNo">031</span><a id="line.31"> @Override /* HtmlDocTemplate */</a> |
| <span class="sourceLineNo">032</span><a id="line.32"> public void writeTo(HtmlDocSerializerSession session, HtmlWriter w, Object o) throws Exception {</a> |
| <span class="sourceLineNo">033</span><a id="line.33"> w.sTag("html").nl(0);</a> |
| <span class="sourceLineNo">034</span><a id="line.34"> w.sTag(1, "head").nl(1);</a> |
| <span class="sourceLineNo">035</span><a id="line.35"> head(session, w, o);</a> |
| <span class="sourceLineNo">036</span><a id="line.36"> w.eTag(1, "head").nl(1);</a> |
| <span class="sourceLineNo">037</span><a id="line.37"> w.sTag(1, "body").nl(1);</a> |
| <span class="sourceLineNo">038</span><a id="line.38"> body(session, w, o);</a> |
| <span class="sourceLineNo">039</span><a id="line.39"> w.eTag(1, "body").nl(1);</a> |
| <span class="sourceLineNo">040</span><a id="line.40"> w.eTag("html").nl(0);</a> |
| <span class="sourceLineNo">041</span><a id="line.41"> }</a> |
| <span class="sourceLineNo">042</span><a id="line.42"></a> |
| <span class="sourceLineNo">043</span><a id="line.43"> /**</a> |
| <span class="sourceLineNo">044</span><a id="line.44"> * Renders the contents of the <code><xt>&lt;head&gt;</xt></code> element.</a> |
| <span class="sourceLineNo">045</span><a id="line.45"> *</a> |
| <span class="sourceLineNo">046</span><a id="line.46"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">047</span><a id="line.47"> * @param w The writer being written to.</a> |
| <span class="sourceLineNo">048</span><a id="line.48"> * @param o The object being serialized.</a> |
| <span class="sourceLineNo">049</span><a id="line.49"> * @throws Exception Any exception can be thrown.</a> |
| <span class="sourceLineNo">050</span><a id="line.50"> */</a> |
| <span class="sourceLineNo">051</span><a id="line.51"> protected void head(HtmlDocSerializerSession session, HtmlWriter w, Object o) throws Exception {</a> |
| <span class="sourceLineNo">052</span><a id="line.52"></a> |
| <span class="sourceLineNo">053</span><a id="line.53"> String[] head = session.getHead();</a> |
| <span class="sourceLineNo">054</span><a id="line.54"> for (int i = 0; i < head.length; i++)</a> |
| <span class="sourceLineNo">055</span><a id="line.55"> w.sIf(i > 0).appendln(2, session.resolve(head[i]));</a> |
| <span class="sourceLineNo">056</span><a id="line.56"></a> |
| <span class="sourceLineNo">057</span><a id="line.57"> if (hasStyle(session)) {</a> |
| <span class="sourceLineNo">058</span><a id="line.58"> w.sTag(2, "style").nl(2);</a> |
| <span class="sourceLineNo">059</span><a id="line.59"> style(session, w, o);</a> |
| <span class="sourceLineNo">060</span><a id="line.60"> w.ie(2).eTag("style").nl(2);</a> |
| <span class="sourceLineNo">061</span><a id="line.61"> }</a> |
| <span class="sourceLineNo">062</span><a id="line.62"> if (hasScript(session)) {</a> |
| <span class="sourceLineNo">063</span><a id="line.63"> w.sTag(2, "script").nl(2);</a> |
| <span class="sourceLineNo">064</span><a id="line.64"> script(session, w, o);</a> |
| <span class="sourceLineNo">065</span><a id="line.65"> w.ie(2).eTag("script").nl(2);</a> |
| <span class="sourceLineNo">066</span><a id="line.66"> }</a> |
| <span class="sourceLineNo">067</span><a id="line.67"> }</a> |
| <span class="sourceLineNo">068</span><a id="line.68"></a> |
| <span class="sourceLineNo">069</span><a id="line.69"> /**</a> |
| <span class="sourceLineNo">070</span><a id="line.70"> * Renders the contents of the <code><xt>&lt;head&gt;</xt>/<xt>&lt;style&gt;</xt></code> element.</a> |
| <span class="sourceLineNo">071</span><a id="line.71"> *</a> |
| <span class="sourceLineNo">072</span><a id="line.72"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">073</span><a id="line.73"> * @param w The writer being written to.</a> |
| <span class="sourceLineNo">074</span><a id="line.74"> * @param o The object being serialized.</a> |
| <span class="sourceLineNo">075</span><a id="line.75"> * @throws Exception Any exception can be thrown.</a> |
| <span class="sourceLineNo">076</span><a id="line.76"> */</a> |
| <span class="sourceLineNo">077</span><a id="line.77"> protected void style(HtmlDocSerializerSession session, HtmlWriter w, Object o) throws Exception {</a> |
| <span class="sourceLineNo">078</span><a id="line.78"> Flag addSpace = Flag.create();</a> |
| <span class="sourceLineNo">079</span><a id="line.79"> for (String s : session.getStylesheet())</a> |
| <span class="sourceLineNo">080</span><a id="line.80"> w.sIf(addSpace.getAndSet()).append(3, "@import ").q().append(session.resolveUri(session.resolve(s))).q().appendln(";");</a> |
| <span class="sourceLineNo">081</span><a id="line.81"> if (session.isNowrap())</a> |
| <span class="sourceLineNo">082</span><a id="line.82"> w.appendln(3, "div.data * {white-space:nowrap;} ");</a> |
| <span class="sourceLineNo">083</span><a id="line.83"> for (String s : session.getStyle())</a> |
| <span class="sourceLineNo">084</span><a id="line.84"> w.sIf(addSpace.getAndSet()).appendln(3, session.resolve(s));</a> |
| <span class="sourceLineNo">085</span><a id="line.85"> session.forEachWidget(x -> {</a> |
| <span class="sourceLineNo">086</span><a id="line.86"> w.sIf(addSpace.getAndSet()).appendln(3, session.resolve(x.getStyle(session.getVarResolver())));</a> |
| <span class="sourceLineNo">087</span><a id="line.87"> });</a> |
| <span class="sourceLineNo">088</span><a id="line.88"> }</a> |
| <span class="sourceLineNo">089</span><a id="line.89"></a> |
| <span class="sourceLineNo">090</span><a id="line.90"> /**</a> |
| <span class="sourceLineNo">091</span><a id="line.91"> * Renders the contents of the <code><xt>&lt;head&gt;</xt>/<xt>&lt;script&gt;</xt></code> element.</a> |
| <span class="sourceLineNo">092</span><a id="line.92"> *</a> |
| <span class="sourceLineNo">093</span><a id="line.93"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">094</span><a id="line.94"> * @param w The writer being written to.</a> |
| <span class="sourceLineNo">095</span><a id="line.95"> * @param o The object being serialized.</a> |
| <span class="sourceLineNo">096</span><a id="line.96"> * @throws Exception Any exception can be thrown.</a> |
| <span class="sourceLineNo">097</span><a id="line.97"> */</a> |
| <span class="sourceLineNo">098</span><a id="line.98"> protected void script(HtmlDocSerializerSession session, HtmlWriter w, Object o) throws Exception {</a> |
| <span class="sourceLineNo">099</span><a id="line.99"> Flag addSpace = Flag.create();</a> |
| <span class="sourceLineNo">100</span><a id="line.100"> for (String s : session.getScript())</a> |
| <span class="sourceLineNo">101</span><a id="line.101"> w.sIf(addSpace.getAndSet()).append(3, session.resolve(s)).append('\n'); // Must always append a newline even if whitespace disabled!</a> |
| <span class="sourceLineNo">102</span><a id="line.102"> session.forEachWidget(x -> {</a> |
| <span class="sourceLineNo">103</span><a id="line.103"> w.sIf(addSpace.getAndSet()).append(3, session.resolve(x.getScript(session.getVarResolver()))).w('\n'); // Must always append a newline even if whitespace disabled!</a> |
| <span class="sourceLineNo">104</span><a id="line.104"> });</a> |
| <span class="sourceLineNo">105</span><a id="line.105"> }</a> |
| <span class="sourceLineNo">106</span><a id="line.106"></a> |
| <span class="sourceLineNo">107</span><a id="line.107"> /**</a> |
| <span class="sourceLineNo">108</span><a id="line.108"> * Renders the contents of the <code><xt>&lt;body&gt;</xt></code> element.</a> |
| <span class="sourceLineNo">109</span><a id="line.109"> *</a> |
| <span class="sourceLineNo">110</span><a id="line.110"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">111</span><a id="line.111"> * @param w The writer being written to.</a> |
| <span class="sourceLineNo">112</span><a id="line.112"> * @param o The object being serialized.</a> |
| <span class="sourceLineNo">113</span><a id="line.113"> * @throws Exception Any exception can be thrown.</a> |
| <span class="sourceLineNo">114</span><a id="line.114"> */</a> |
| <span class="sourceLineNo">115</span><a id="line.115"> protected void body(HtmlDocSerializerSession session, HtmlWriter w, Object o) throws Exception {</a> |
| <span class="sourceLineNo">116</span><a id="line.116"></a> |
| <span class="sourceLineNo">117</span><a id="line.117"> AsideFloat asideFloat = session.getAsideFloat();</a> |
| <span class="sourceLineNo">118</span><a id="line.118"> boolean hasAside = hasAside(session);</a> |
| <span class="sourceLineNo">119</span><a id="line.119"></a> |
| <span class="sourceLineNo">120</span><a id="line.120"> if (hasHeader(session)) {</a> |
| <span class="sourceLineNo">121</span><a id="line.121"> w.sTag(2, "header").nl(2);</a> |
| <span class="sourceLineNo">122</span><a id="line.122"> header(session, w, o);</a> |
| <span class="sourceLineNo">123</span><a id="line.123"> w.ie(2).eTag("header").nl(2);</a> |
| <span class="sourceLineNo">124</span><a id="line.124"> }</a> |
| <span class="sourceLineNo">125</span><a id="line.125"></a> |
| <span class="sourceLineNo">126</span><a id="line.126"> if (hasNav(session)) {</a> |
| <span class="sourceLineNo">127</span><a id="line.127"> w.sTag(2, "nav").nl(2);</a> |
| <span class="sourceLineNo">128</span><a id="line.128"> nav(session, w, o);</a> |
| <span class="sourceLineNo">129</span><a id="line.129"> w.ie(2).eTag("nav").nl(2);</a> |
| <span class="sourceLineNo">130</span><a id="line.130"> }</a> |
| <span class="sourceLineNo">131</span><a id="line.131"></a> |
| <span class="sourceLineNo">132</span><a id="line.132"> if (hasAside && asideFloat.is(TOP)) {</a> |
| <span class="sourceLineNo">133</span><a id="line.133"> w.sTag(2, "section").nl(2);</a> |
| <span class="sourceLineNo">134</span><a id="line.134"> w.sTag(3, "aside").nl(3);</a> |
| <span class="sourceLineNo">135</span><a id="line.135"> aside(session, w, o);</a> |
| <span class="sourceLineNo">136</span><a id="line.136"> w.ie(3).eTag("aside").nl(3);</a> |
| <span class="sourceLineNo">137</span><a id="line.137"> w.ie(2).eTag("section").nl(2);</a> |
| <span class="sourceLineNo">138</span><a id="line.138"> }</a> |
| <span class="sourceLineNo">139</span><a id="line.139"></a> |
| <span class="sourceLineNo">140</span><a id="line.140"> w.sTag(2, "section").nl(2);</a> |
| <span class="sourceLineNo">141</span><a id="line.141"></a> |
| <span class="sourceLineNo">142</span><a id="line.142"> if (hasAside && asideFloat.is(LEFT)) {</a> |
| <span class="sourceLineNo">143</span><a id="line.143"> w.sTag(3, "aside").nl(3);</a> |
| <span class="sourceLineNo">144</span><a id="line.144"> aside(session, w, o);</a> |
| <span class="sourceLineNo">145</span><a id="line.145"> w.ie(3).eTag("aside").nl(3);</a> |
| <span class="sourceLineNo">146</span><a id="line.146"> }</a> |
| <span class="sourceLineNo">147</span><a id="line.147"></a> |
| <span class="sourceLineNo">148</span><a id="line.148"> w.sTag(3, "article").nl(3);</a> |
| <span class="sourceLineNo">149</span><a id="line.149"> article(session, w, o);</a> |
| <span class="sourceLineNo">150</span><a id="line.150"> w.ie(3).eTag("article").nl(3);</a> |
| <span class="sourceLineNo">151</span><a id="line.151"></a> |
| <span class="sourceLineNo">152</span><a id="line.152"> if (hasAside && asideFloat.isAny(RIGHT, DEFAULT)) {</a> |
| <span class="sourceLineNo">153</span><a id="line.153"> w.sTag(3, "aside").nl(3);</a> |
| <span class="sourceLineNo">154</span><a id="line.154"> aside(session, w, o);</a> |
| <span class="sourceLineNo">155</span><a id="line.155"> w.ie(3).eTag("aside").nl(3);</a> |
| <span class="sourceLineNo">156</span><a id="line.156"> }</a> |
| <span class="sourceLineNo">157</span><a id="line.157"></a> |
| <span class="sourceLineNo">158</span><a id="line.158"> w.ie(2).eTag("section").nl(2);</a> |
| <span class="sourceLineNo">159</span><a id="line.159"></a> |
| <span class="sourceLineNo">160</span><a id="line.160"> if (hasAside && asideFloat.is(BOTTOM)) {</a> |
| <span class="sourceLineNo">161</span><a id="line.161"> w.sTag(2, "section").nl(2);</a> |
| <span class="sourceLineNo">162</span><a id="line.162"> w.sTag(3, "aside").nl(3);</a> |
| <span class="sourceLineNo">163</span><a id="line.163"> aside(session, w, o);</a> |
| <span class="sourceLineNo">164</span><a id="line.164"> w.ie(3).eTag("aside").nl(3);</a> |
| <span class="sourceLineNo">165</span><a id="line.165"> w.ie(2).eTag("section").nl(2);</a> |
| <span class="sourceLineNo">166</span><a id="line.166"> }</a> |
| <span class="sourceLineNo">167</span><a id="line.167"></a> |
| <span class="sourceLineNo">168</span><a id="line.168"> if (hasFooter(session)) {</a> |
| <span class="sourceLineNo">169</span><a id="line.169"> w.sTag(2, "footer").nl(2);</a> |
| <span class="sourceLineNo">170</span><a id="line.170"> footer(session, w, o);</a> |
| <span class="sourceLineNo">171</span><a id="line.171"> w.ie(2).eTag("footer").nl(2);</a> |
| <span class="sourceLineNo">172</span><a id="line.172"> }</a> |
| <span class="sourceLineNo">173</span><a id="line.173"> }</a> |
| <span class="sourceLineNo">174</span><a id="line.174"></a> |
| <span class="sourceLineNo">175</span><a id="line.175"> /**</a> |
| <span class="sourceLineNo">176</span><a id="line.176"> * Renders the contents of the <code><xt>&lt;body&gt;</xt>/<xt>&lt;header&gt;</xt></code> element.</a> |
| <span class="sourceLineNo">177</span><a id="line.177"> *</a> |
| <span class="sourceLineNo">178</span><a id="line.178"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">179</span><a id="line.179"> * @param w The writer being written to.</a> |
| <span class="sourceLineNo">180</span><a id="line.180"> * @param o The object being serialized.</a> |
| <span class="sourceLineNo">181</span><a id="line.181"> * @throws Exception Any exception can be thrown.</a> |
| <span class="sourceLineNo">182</span><a id="line.182"> */</a> |
| <span class="sourceLineNo">183</span><a id="line.183"> protected void header(HtmlDocSerializerSession session, HtmlWriter w, Object o) throws Exception {</a> |
| <span class="sourceLineNo">184</span><a id="line.184"> // Write the title of the page.</a> |
| <span class="sourceLineNo">185</span><a id="line.185"> String[] header = session.getHeader();</a> |
| <span class="sourceLineNo">186</span><a id="line.186"> for (int i = 0; i < header.length; i++)</a> |
| <span class="sourceLineNo">187</span><a id="line.187"> w.sIf(i > 0).appendln(3, session.resolve(header[i]));</a> |
| <span class="sourceLineNo">188</span><a id="line.188"> }</a> |
| <span class="sourceLineNo">189</span><a id="line.189"></a> |
| <span class="sourceLineNo">190</span><a id="line.190"> /**</a> |
| <span class="sourceLineNo">191</span><a id="line.191"> * Renders the contents of the <code><xt>&lt;body&gt;</xt>/<xt>&lt;nav&gt;</xt></code> element.</a> |
| <span class="sourceLineNo">192</span><a id="line.192"> *</a> |
| <span class="sourceLineNo">193</span><a id="line.193"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">194</span><a id="line.194"> * @param w The writer being written to.</a> |
| <span class="sourceLineNo">195</span><a id="line.195"> * @param o The object being serialized.</a> |
| <span class="sourceLineNo">196</span><a id="line.196"> * @throws Exception Any exception can be thrown.</a> |
| <span class="sourceLineNo">197</span><a id="line.197"> */</a> |
| <span class="sourceLineNo">198</span><a id="line.198"> protected void nav(HtmlDocSerializerSession session, HtmlWriter w, Object o) throws Exception {</a> |
| <span class="sourceLineNo">199</span><a id="line.199"> String[] links = session.getNavLinks();</a> |
| <span class="sourceLineNo">200</span><a id="line.200"> if (links.length > 0 && ! ArrayUtils.contains("NONE", links)) {</a> |
| <span class="sourceLineNo">201</span><a id="line.201"> w.sTag(3, "ol").nl(3);</a> |
| <span class="sourceLineNo">202</span><a id="line.202"> for (String l : links) {</a> |
| <span class="sourceLineNo">203</span><a id="line.203"> w.sTag(4, "li");</a> |
| <span class="sourceLineNo">204</span><a id="line.204"> l = session.resolve(l);</a> |
| <span class="sourceLineNo">205</span><a id="line.205"> if (l.matches("(?s)\\S+\\:.*")) {</a> |
| <span class="sourceLineNo">206</span><a id="line.206"> int i = l.indexOf(':');</a> |
| <span class="sourceLineNo">207</span><a id="line.207"> String key = l.substring(0, i);</a> |
| <span class="sourceLineNo">208</span><a id="line.208"> String val = l.substring(i+1).trim();</a> |
| <span class="sourceLineNo">209</span><a id="line.209"> if (val.startsWith("<"))</a> |
| <span class="sourceLineNo">210</span><a id="line.210"> w.nl(4).appendln(5, val);</a> |
| <span class="sourceLineNo">211</span><a id="line.211"> else</a> |
| <span class="sourceLineNo">212</span><a id="line.212"> w.oTag("a").attr("href", session.resolveUri(val), true).cTag().text(key, true).eTag("a");</a> |
| <span class="sourceLineNo">213</span><a id="line.213"> w.eTag("li").nl(4);</a> |
| <span class="sourceLineNo">214</span><a id="line.214"> } else {</a> |
| <span class="sourceLineNo">215</span><a id="line.215"> w.nl(4).appendln(5, l);</a> |
| <span class="sourceLineNo">216</span><a id="line.216"> w.eTag(4, "li").nl(4);</a> |
| <span class="sourceLineNo">217</span><a id="line.217"> }</a> |
| <span class="sourceLineNo">218</span><a id="line.218"> }</a> |
| <span class="sourceLineNo">219</span><a id="line.219"> w.eTag(3, "ol").nl(3);</a> |
| <span class="sourceLineNo">220</span><a id="line.220"> }</a> |
| <span class="sourceLineNo">221</span><a id="line.221"> String[] nav = session.getNav();</a> |
| <span class="sourceLineNo">222</span><a id="line.222"> if (nav.length > 0) {</a> |
| <span class="sourceLineNo">223</span><a id="line.223"> for (int i = 0; i < nav.length; i++)</a> |
| <span class="sourceLineNo">224</span><a id="line.224"> w.sIf(i > 0).appendln(3, session.resolve(nav[i]));</a> |
| <span class="sourceLineNo">225</span><a id="line.225"> }</a> |
| <span class="sourceLineNo">226</span><a id="line.226"> }</a> |
| <span class="sourceLineNo">227</span><a id="line.227"></a> |
| <span class="sourceLineNo">228</span><a id="line.228"> /**</a> |
| <span class="sourceLineNo">229</span><a id="line.229"> * Renders the contents of the <code><xt>&lt;body&gt;</xt>/<xt>&lt;aside&gt;</xt></code> element.</a> |
| <span class="sourceLineNo">230</span><a id="line.230"> *</a> |
| <span class="sourceLineNo">231</span><a id="line.231"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">232</span><a id="line.232"> * @param w The writer being written to.</a> |
| <span class="sourceLineNo">233</span><a id="line.233"> * @param o The object being serialized.</a> |
| <span class="sourceLineNo">234</span><a id="line.234"> * @throws Exception Any exception can be thrown.</a> |
| <span class="sourceLineNo">235</span><a id="line.235"> */</a> |
| <span class="sourceLineNo">236</span><a id="line.236"> protected void aside(HtmlDocSerializerSession session, HtmlWriter w, Object o) throws Exception {</a> |
| <span class="sourceLineNo">237</span><a id="line.237"> String[] aside = session.getAside();</a> |
| <span class="sourceLineNo">238</span><a id="line.238"> for (int i = 0; i < aside.length; i++)</a> |
| <span class="sourceLineNo">239</span><a id="line.239"> w.sIf(i > 0).appendln(4, session.resolve(aside[i]));</a> |
| <span class="sourceLineNo">240</span><a id="line.240"> }</a> |
| <span class="sourceLineNo">241</span><a id="line.241"></a> |
| <span class="sourceLineNo">242</span><a id="line.242"> /**</a> |
| <span class="sourceLineNo">243</span><a id="line.243"> * Renders the contents of the <code><xt>&lt;body&gt;</xt>/<xt>&lt;article&gt;</xt></code> element.</a> |
| <span class="sourceLineNo">244</span><a id="line.244"> *</a> |
| <span class="sourceLineNo">245</span><a id="line.245"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">246</span><a id="line.246"> * @param w The writer being written to.</a> |
| <span class="sourceLineNo">247</span><a id="line.247"> * @param o The object being serialized.</a> |
| <span class="sourceLineNo">248</span><a id="line.248"> * @throws Exception Any exception can be thrown.</a> |
| <span class="sourceLineNo">249</span><a id="line.249"> */</a> |
| <span class="sourceLineNo">250</span><a id="line.250"> protected void article(HtmlDocSerializerSession session, HtmlWriter w, Object o) throws Exception {</a> |
| <span class="sourceLineNo">251</span><a id="line.251"> // To allow for page formatting using CSS, we encapsulate the data inside two div tags:</a> |
| <span class="sourceLineNo">252</span><a id="line.252"> // <div class='outerdata'><div class='data' id='data'>...</div></div></a> |
| <span class="sourceLineNo">253</span><a id="line.253"> w.oTag(4, "div").attr("class","outerdata").append('>').nl(4);</a> |
| <span class="sourceLineNo">254</span><a id="line.254"> w.oTag(5, "div").attr("class","data").attr("id", "data").append('>').nl(5);</a> |
| <span class="sourceLineNo">255</span><a id="line.255"></a> |
| <span class="sourceLineNo">256</span><a id="line.256"> if (o == null) {</a> |
| <span class="sourceLineNo">257</span><a id="line.257"> w.append(6, "<null/>").nl(6);</a> |
| <span class="sourceLineNo">258</span><a id="line.258"> } else if (ObjectUtils.isEmpty(o)){</a> |
| <span class="sourceLineNo">259</span><a id="line.259"> String m = session.getNoResultsMessage();</a> |
| <span class="sourceLineNo">260</span><a id="line.260"> if (exists(m))</a> |
| <span class="sourceLineNo">261</span><a id="line.261"> w.append(6, session.resolve(m)).nl(6);</a> |
| <span class="sourceLineNo">262</span><a id="line.262"> } else {</a> |
| <span class="sourceLineNo">263</span><a id="line.263"> session.indent = 6;</a> |
| <span class="sourceLineNo">264</span><a id="line.264"> w.flush();</a> |
| <span class="sourceLineNo">265</span><a id="line.265"> session.parentSerialize(w, o);</a> |
| <span class="sourceLineNo">266</span><a id="line.266"> }</a> |
| <span class="sourceLineNo">267</span><a id="line.267"></a> |
| <span class="sourceLineNo">268</span><a id="line.268"> w.ie(5).eTag("div").nl(5);</a> |
| <span class="sourceLineNo">269</span><a id="line.269"> w.ie(4).eTag("div").nl(4);</a> |
| <span class="sourceLineNo">270</span><a id="line.270"> }</a> |
| <span class="sourceLineNo">271</span><a id="line.271"></a> |
| <span class="sourceLineNo">272</span><a id="line.272"> /**</a> |
| <span class="sourceLineNo">273</span><a id="line.273"> * Renders the contents of the <code><xt>&lt;body&gt;</xt>/<xt>&lt;footer&gt;</xt></code> element.</a> |
| <span class="sourceLineNo">274</span><a id="line.274"> *</a> |
| <span class="sourceLineNo">275</span><a id="line.275"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">276</span><a id="line.276"> * @param w The writer being written to.</a> |
| <span class="sourceLineNo">277</span><a id="line.277"> * @param o The object being serialized.</a> |
| <span class="sourceLineNo">278</span><a id="line.278"> * @throws Exception Any exception can be thrown.</a> |
| <span class="sourceLineNo">279</span><a id="line.279"> */</a> |
| <span class="sourceLineNo">280</span><a id="line.280"> protected void footer(HtmlDocSerializerSession session, HtmlWriter w, Object o) throws Exception {</a> |
| <span class="sourceLineNo">281</span><a id="line.281"> String[] footer = session.getFooter();</a> |
| <span class="sourceLineNo">282</span><a id="line.282"> for (int i = 0; i < footer.length; i++)</a> |
| <span class="sourceLineNo">283</span><a id="line.283"> w.sIf(i > 0).appendln(3, session.resolve(footer[i]));</a> |
| <span class="sourceLineNo">284</span><a id="line.284"> }</a> |
| <span class="sourceLineNo">285</span><a id="line.285"></a> |
| <span class="sourceLineNo">286</span><a id="line.286"> /**</a> |
| <span class="sourceLineNo">287</span><a id="line.287"> * Returns <jk>true</jk> if this page should render a <code><xt>&lt;head&gt;</xt>/<xt>&lt;style&gt;</xt></code> element.</a> |
| <span class="sourceLineNo">288</span><a id="line.288"> *</a> |
| <span class="sourceLineNo">289</span><a id="line.289"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">290</span><a id="line.290"> * @return A boolean flag.</a> |
| <span class="sourceLineNo">291</span><a id="line.291"> */</a> |
| <span class="sourceLineNo">292</span><a id="line.292"> protected boolean hasStyle(HtmlDocSerializerSession session) {</a> |
| <span class="sourceLineNo">293</span><a id="line.293"> return true;</a> |
| <span class="sourceLineNo">294</span><a id="line.294"> }</a> |
| <span class="sourceLineNo">295</span><a id="line.295"></a> |
| <span class="sourceLineNo">296</span><a id="line.296"> /**</a> |
| <span class="sourceLineNo">297</span><a id="line.297"> * Returns <jk>true</jk> if this page should render a <code><xt>&lt;head&gt;</xt>/<xt>&lt;script&gt;</xt></code> element.</a> |
| <span class="sourceLineNo">298</span><a id="line.298"> *</a> |
| <span class="sourceLineNo">299</span><a id="line.299"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">300</span><a id="line.300"> * @return A boolean flag.</a> |
| <span class="sourceLineNo">301</span><a id="line.301"> */</a> |
| <span class="sourceLineNo">302</span><a id="line.302"> protected boolean hasScript(HtmlDocSerializerSession session) {</a> |
| <span class="sourceLineNo">303</span><a id="line.303"> return true;</a> |
| <span class="sourceLineNo">304</span><a id="line.304"> }</a> |
| <span class="sourceLineNo">305</span><a id="line.305"></a> |
| <span class="sourceLineNo">306</span><a id="line.306"> /**</a> |
| <span class="sourceLineNo">307</span><a id="line.307"> * Returns <jk>true</jk> if this page should render a <code><xt>&lt;body&gt;</xt>/<xt>&lt;header&gt;</xt></code></a> |
| <span class="sourceLineNo">308</span><a id="line.308"> * element.</a> |
| <span class="sourceLineNo">309</span><a id="line.309"> *</a> |
| <span class="sourceLineNo">310</span><a id="line.310"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">311</span><a id="line.311"> * @return A boolean flag.</a> |
| <span class="sourceLineNo">312</span><a id="line.312"> */</a> |
| <span class="sourceLineNo">313</span><a id="line.313"> protected boolean hasHeader(HtmlDocSerializerSession session) {</a> |
| <span class="sourceLineNo">314</span><a id="line.314"> return session.getHeader().length > 0;</a> |
| <span class="sourceLineNo">315</span><a id="line.315"> }</a> |
| <span class="sourceLineNo">316</span><a id="line.316"></a> |
| <span class="sourceLineNo">317</span><a id="line.317"> /**</a> |
| <span class="sourceLineNo">318</span><a id="line.318"> * Returns <jk>true</jk> if this page should render a <code><xt>&lt;body&gt;</xt>/<xt>&lt;nav&gt;</xt></code></a> |
| <span class="sourceLineNo">319</span><a id="line.319"> * element.</a> |
| <span class="sourceLineNo">320</span><a id="line.320"> *</a> |
| <span class="sourceLineNo">321</span><a id="line.321"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">322</span><a id="line.322"> * @return A boolean flag.</a> |
| <span class="sourceLineNo">323</span><a id="line.323"> */</a> |
| <span class="sourceLineNo">324</span><a id="line.324"> protected boolean hasNav(HtmlDocSerializerSession session) {</a> |
| <span class="sourceLineNo">325</span><a id="line.325"> return session.getNav().length > 0 || session.getNavLinks().length > 0;</a> |
| <span class="sourceLineNo">326</span><a id="line.326"> }</a> |
| <span class="sourceLineNo">327</span><a id="line.327"></a> |
| <span class="sourceLineNo">328</span><a id="line.328"> /**</a> |
| <span class="sourceLineNo">329</span><a id="line.329"> * Returns <jk>true</jk> if this page should render a <code><xt>&lt;body&gt;</xt>/<xt>&lt;aside&gt;</xt></code></a> |
| <span class="sourceLineNo">330</span><a id="line.330"> * element.</a> |
| <span class="sourceLineNo">331</span><a id="line.331"> *</a> |
| <span class="sourceLineNo">332</span><a id="line.332"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">333</span><a id="line.333"> * @return A boolean flag.</a> |
| <span class="sourceLineNo">334</span><a id="line.334"> */</a> |
| <span class="sourceLineNo">335</span><a id="line.335"> protected boolean hasAside(HtmlDocSerializerSession session) {</a> |
| <span class="sourceLineNo">336</span><a id="line.336"> return session.getAside().length > 0;</a> |
| <span class="sourceLineNo">337</span><a id="line.337"> }</a> |
| <span class="sourceLineNo">338</span><a id="line.338"></a> |
| <span class="sourceLineNo">339</span><a id="line.339"> /**</a> |
| <span class="sourceLineNo">340</span><a id="line.340"> * Returns <jk>true</jk> if this page should render a <code><xt>&lt;body&gt;</xt>/<xt>&lt;footer&gt;</xt></code></a> |
| <span class="sourceLineNo">341</span><a id="line.341"> * element.</a> |
| <span class="sourceLineNo">342</span><a id="line.342"> *</a> |
| <span class="sourceLineNo">343</span><a id="line.343"> * @param session The current serializer session.</a> |
| <span class="sourceLineNo">344</span><a id="line.344"> * @return A boolean flag.</a> |
| <span class="sourceLineNo">345</span><a id="line.345"> */</a> |
| <span class="sourceLineNo">346</span><a id="line.346"> protected boolean hasFooter(HtmlDocSerializerSession session) {</a> |
| <span class="sourceLineNo">347</span><a id="line.347"> return session.getFooter().length > 0;</a> |
| <span class="sourceLineNo">348</span><a id="line.348"> }</a> |
| <span class="sourceLineNo">349</span><a id="line.349"></a> |
| <span class="sourceLineNo">350</span><a id="line.350"> private static boolean exists(String s) {</a> |
| <span class="sourceLineNo">351</span><a id="line.351"> return s != null && ! "NONE".equals(s);</a> |
| <span class="sourceLineNo">352</span><a id="line.352"> }</a> |
| <span class="sourceLineNo">353</span><a id="line.353">}</a> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| </pre> |
| </div> |
| </main> |
| </body> |
| </html> |