tag 1.5-M1
git-svn-id: https://svn.apache.org/repos/asf/incubator/click/tags/click-1.5-M1@717234 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/build/build.xml b/build/build.xml
index bbc84c0..5b63a52 100644
--- a/build/build.xml
+++ b/build/build.xml
@@ -88,10 +88,8 @@
<macrodef name="digestMacro">
<attribute name="file"/>
<sequential>
- <!--
<checksum file="@{file}" forceOverwrite="true" />
<checksum file="@{file}" forceOverwrite="true" algorithm="SHA1" />
- -->
</sequential>
</macrodef>
diff --git a/build/javascript-syntax-highlighter.xml b/build/javascript-syntax-highlighter.xml
index 3c40cc1..6fad0e1 100644
--- a/build/javascript-syntax-highlighter.xml
+++ b/build/javascript-syntax-highlighter.xml
@@ -1,6 +1,6 @@
<root>
<properties>
<!-- The javascript snippet provides syntax highlighting inside javadoc -->
- <highlighter><![CDATA[<style type='text/css'>.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;}.typ{color:#000;}.lit{color:#066;}.pun{color:#660;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}.dec{color:#606;}pre.prettyprint{padding:2px;border:1px solid #888;overflow:auto;}@media print{.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;font-style:italic;}.typ{color:#000;font-weight:bold;}.lit{color:#044;}.pun{color:#440;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}}</style><script type='text/javascript'>var PR_keywords={};(function(){var CPP_KEYWORDS='abstract bool break case catch char class const '+'const_cast continue default delete deprecated dllexport dllimport do '+'double dynamic_cast else enum explicit extern false float for friend '+'goto if inline int long mutable naked namespace new noinline noreturn '+'nothrow novtable operator private property protected public register '+'reinterpret_cast return selectany short signed sizeof static '+'static_cast struct switch template this thread throw true try typedef '+'typeid typename union unsigned using declaration, directive uuid '+'virtual void volatile while typeof';var CSHARP_KEYWORDS='as base by byte checked decimal delegate descending '+'event finally fixed foreach from group implicit in interface internal '+'into is lock null object override orderby params readonly ref sbyte '+'sealed stackalloc string select uint ulong unchecked unsafe ushort var';var JAVA_KEYWORDS='package synchronized boolean implements import throws '+'instanceof transient extends final strictfp native super';var JSCRIPT_KEYWORDS='debugger export function with NaN Infinity';var PERL_KEYWORDS='require sub unless until use elsif BEGIN END';var PYTHON_KEYWORDS='and assert def del elif except exec global lambda '+'not or pass print raise yield False True None';var RUBY_KEYWORDS='then end begin rescue ensure module when undef next '+'redo retry alias defined';var SH_KEYWORDS='done fi';var KEYWORDS=[CPP_KEYWORDS,CSHARP_KEYWORDS,JAVA_KEYWORDS,JSCRIPT_KEYWORDS,PERL_KEYWORDS,PYTHON_KEYWORDS,RUBY_KEYWORDS,SH_KEYWORDS];for(var k=0;k<KEYWORDS.length;k++){var kw=KEYWORDS[k].split(' ');for(var i=0;i<kw.length;i++){if(kw[i]){PR_keywords[kw[i]]=true;}}}}).call(this);var PR_STRING='str';var PR_KEYWORD='kwd';var PR_COMMENT='com';var PR_TYPE='typ';var PR_LITERAL='lit';var PR_PUNCTUATION='pun';var PR_PLAIN='pln';var PR_TAG='tag';var PR_DECLARATION='dec';var PR_SOURCE='src';var PR_ATTRIB_NAME='atn';var PR_ATTRIB_VALUE='atv';var PR_TAB_WIDTH=8;function PR_isWordChar(ch){return(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z');}function PR_spliceArrayInto(inserted,container,containerPosition,countReplaced){inserted.unshift(containerPosition,countReplaced||0);try{container.splice.apply(container,inserted);}finally{inserted.splice(0,2);}}var REGEXP_PRECEDER_PATTERN=(function(){var preceders=['!','!=','!==','#','%','%=','&','&&','&&=','&=','(','*','*=','+=',',','-=','->','/','/=',':','::',';','<','<<','<<=','<=','=','==','===','>','>=','>>','>>=','>>>','>>>=','?','@','[','^','^=','^^','^^=','{','|','|=','||','||=','~','break','case','continue','delete','do','else','finally','instanceof','return','throw','try','typeof'];var pattern='(?:'+'(?:(?:^|[^0-9\.])\\.{1,3})|'+'(?:(?:^|[^\\+])\\+)|'+'(?:(?:^|[^\\-])-)';for(var i=0;i<preceders.length;++i){var preceder=preceders[i];if(PR_isWordChar(preceder.charAt(0))){pattern+='|\\b'+preceder;}else{pattern+='|'+preceder.replace(/([^=<>:&])/g,'\\$1');}}pattern+='|^)\\s*$';return new RegExp(pattern);})();var pr_amp=/&/g;var pr_lt=/</g;var pr_gt=/>/g;var pr_quot=/\"/g;function PR_attribToHtml(str){return str.replace(pr_amp,'&').replace(pr_lt,'<').replace(pr_gt,'>').replace(pr_quot,'"');}function PR_textToHtml(str){return str.replace(pr_amp,'&').replace(pr_lt,'<').replace(pr_gt,'>');}var pr_ltEnt=/</g;var pr_gtEnt=/>/g;var pr_aposEnt=/'/g;var pr_quotEnt=/"/g;var pr_ampEnt=/&/g;function PR_htmlToText(html){var pos=html.indexOf('&');if(pos<0){return html;}for(--pos;(pos=html.indexOf('&#',pos+1))>=0;){var end=html.indexOf(';',pos);if(end>=0){var num=html.substring(pos+3,end);var radix=10;if(num&&num.charAt(0)=='x'){num=num.substring(1);radix=16;}var codePoint=parseInt(num,radix);if(!isNaN(codePoint)){html=(html.substring(0,pos)+String.fromCharCode(codePoint)+html.substring(end+1));}}}return html.replace(pr_ltEnt,'<').replace(pr_gtEnt,'>').replace(pr_aposEnt,\"'\").replace(pr_quotEnt,'\"').replace(pr_ampEnt,'&');}function PR_isRawContent(node){return'XMP'==node.tagName;}var PR_innerHtmlWorks=null;function PR_getInnerHtml(node){if(null===PR_innerHtmlWorks){var testNode=document.createElement('PRE');testNode.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC \"foo bar\">\n<foo />'));PR_innerHtmlWorks=!/</.test(testNode.innerHTML);}if(PR_innerHtmlWorks){var content=node.innerHTML;if(PR_isRawContent(node)){content=PR_textToHtml(content);}return content;}var out=[];for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}return out.join('');}function PR_normalizedHtml(node,out){switch(node.nodeType){case 1:var name=node.tagName.toLowerCase();out.push('\074',name);for(var i=0;i<node.attributes.length;++i){var attr=node.attributes[i];if(!attr.specified){continue;}out.push(' ');PR_normalizedHtml(attr,out);}out.push('>');for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}if(node.firstChild||!/^(?:br|link|img)$/.test(name)){out.push('<\/',name,'>');}break;case 2:out.push(node.name.toLowerCase(),'=\"',PR_attribToHtml(node.value),'\"');break;case 3:case 4:out.push(PR_textToHtml(node.nodeValue));break;}}function PR_tabExpander(tabWidth){var SPACES=' ';var charInLine=0;return function(plainText){var out=null;var pos=0;for(var i=0,n=plainText.length;i<n;++i){var ch=plainText.charAt(i);switch(ch){case'\t':if(!out){out=[];}out.push(plainText.substring(pos,i));var nSpaces=tabWidth-(charInLine%tabWidth);charInLine+=nSpaces;for(;nSpaces>=0;nSpaces-=SPACES.length){out.push(SPACES.substring(0,nSpaces));}pos=i+1;break;case'\n':charInLine=0;break;default:++charInLine;}}if(!out){return plainText;}out.push(plainText.substring(pos));return out.join('');};}var pr_chunkPattern=/(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g;var pr_commentPrefix=/^<!--/;var pr_cdataPrefix=/^<\[CDATA\[/;var pr_brPrefix=/^<br\b/i;function PR_extractTags(s){var matches=s.match(pr_chunkPattern);var sourceBuf=[];var sourceBufLen=0;var extractedTags=[];if(matches){for(var i=0,n=matches.length;i<n;++i){var match=matches[i];if(match.length>1&&match.charAt(0)==='<'){if(pr_commentPrefix.test(match)){continue;}if(pr_cdataPrefix.test(match)){sourceBuf.push(match.substring(9,match.length-3));sourceBufLen+=match.length-12;}else if(pr_brPrefix.test(match)){sourceBuf.push('\n');sourceBufLen+=1;}else{extractedTags.push(sourceBufLen,match);}}else{var literalText=PR_htmlToText(match);sourceBuf.push(literalText);sourceBufLen+=literalText.length;}}}return{source:sourceBuf.join(''),tags:extractedTags};}function PR_createSimpleLexer(shortcutStylePatterns,fallthroughStylePatterns){var shortcuts={};(function(){var allPatterns=shortcutStylePatterns.concat(fallthroughStylePatterns);for(var i=allPatterns.length;--i>=0;){var patternParts=allPatterns[i];var shortcutChars=patternParts[3];if(shortcutChars){for(var c=shortcutChars.length;--c>=0;){shortcuts[shortcutChars.charAt(c)]=patternParts;}}}})();var nPatterns=fallthroughStylePatterns.length;return function(sourceCode,opt_basePos){opt_basePos=opt_basePos||0;var decorations=[opt_basePos,PR_PLAIN];var lastToken='';var pos=0;var tail=sourceCode;while(tail.length){var style;var token=null;var patternParts=shortcuts[tail.charAt(0)];if(patternParts){var match=tail.match(patternParts[1]);token=match[0];style=patternParts[0];}else{for(var i=0;i<nPatterns;++i){patternParts=fallthroughStylePatterns[i];var contextPattern=patternParts[2];if(contextPattern&&!contextPattern.test(lastToken)){continue;}var match=tail.match(patternParts[1]);if(match){token=match[0];style=patternParts[0];break;}}if(!token){style=PR_PLAIN;token=tail.substring(0,1);}}decorations.push(opt_basePos+pos,style);pos+=token.length;tail=tail.substring(token.length);if(style!==PR_COMMENT&&/\S/.test(token)){lastToken=token;}}return decorations;};}var PR_C_STYLE_STRING_AND_COMMENT_LEXER=PR_createSimpleLexer([[PR_STRING,/^\'(?:[^\\\']|\\[\s\S])*(?:\'|$)/,null,\"'\"],[PR_STRING,/^\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)/,null,'\"'],[PR_STRING,/^\`(?:[^\\\`]|\\[\s\S])*(?:\`|$)/,null,'`']],[[PR_PLAIN,/^(?:[^\'\"\`\/\#]+)/,null,' \r\n'],[PR_COMMENT,/^#[^\r\n]*/,null,'#'],[PR_COMMENT,/^\/\/[^\r\n]*/,null],[PR_STRING,/^\/(?:[^\\\*\/]|\\[\s\S])+(?:\/|$)/,REGEXP_PRECEDER_PATTERN],[PR_COMMENT,/^\/\*[\s\S]*?(?:\*\/|$)/,null]]);function PR_splitStringAndCommentTokens(sourceCode){return PR_C_STYLE_STRING_AND_COMMENT_LEXER(sourceCode);}var PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER=PR_createSimpleLexer([],[[PR_PLAIN,/^\s+/,null,' \r\n'],[PR_PLAIN,/^[a-z_$@][a-z_$@0-9]*/i,null],[PR_LITERAL,/^0x[a-f0-9]+[a-z]/i,null],[PR_LITERAL,/^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?[a-z]*/i,null,'123456789'],[PR_PUNCTUATION,/^[^\s\w\.$@]+/,null]]);function PR_splitNonStringNonCommentTokens(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_PLAIN){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecs=PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER(chunk,start);for(var j=0,m=subDecs.length;j<m;j+=2){var subStyle=subDecs[j+1];if(subStyle===PR_PLAIN){var subStart=subDecs[j];var subEnd=j+2<m?subDecs[j+2]:chunk.length;var token=source.substring(subStart,subEnd);if(token=='.'){subDecs[j+1]=PR_PUNCTUATION;}else if(token in PR_keywords){subDecs[j+1]=PR_KEYWORD;}else if(/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(token)){subDecs[j+1]=token.charAt(0)=='@'?PR_LITERAL:PR_TYPE;}}}PR_spliceArrayInto(subDecs,decorations,i,2);i+=subDecs.length-2;}}return decorations;}var PR_MARKUP_LEXER=PR_createSimpleLexer([],[[PR_PLAIN,/^[^<]+/,null],[PR_DECLARATION,/^<!\w[^>]*(?:>|$)/,null],[PR_COMMENT,/^<!--[\s\S]*?(?:-->|$)/,null],[PR_SOURCE,/^<\?[\s\S]*?(?:\?>|$)/,null],[PR_SOURCE,/^<%[\s\S]*?(?:%>|$)/,null],[PR_SOURCE,/^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i,null],[PR_TAG,/^<\/?\w[^<>]*>/,null]]);var PR_SOURCE_CHUNK_PARTS=/^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/;function PR_tokenizeMarkup(source){var decorations=PR_MARKUP_LEXER(source);for(var i=0;i<decorations.length;i+=2){if(decorations[i+1]===PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var sourceChunk=source.substring(start,end);var match=(sourceChunk.match(PR_SOURCE_CHUNK_PARTS));if(match){decorations.splice(i,2,start,PR_TAG,start+match[1].length,PR_SOURCE,start+match[1].length+(match[2]||'').length,PR_TAG);}}}return decorations;}var PR_TAG_LEXER=PR_createSimpleLexer([[PR_ATTRIB_VALUE,/^\'[^\']*(?:\'|$)/,null,\"'\"],[PR_ATTRIB_VALUE,/^\"[^\"]*(?:\"|$)/,null,'\"'],[PR_PUNCTUATION,/^[<>\/=]+/,null,'<>/=']],[[PR_TAG,/^[\w-]+/,/^</],[PR_ATTRIB_VALUE,/^[\w-]+/,/^=/],[PR_ATTRIB_NAME,/^[\w-]+/,null],[PR_PLAIN,/^\s+/,null,' \r\n']]);function PR_splitTagAttributes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_TAG){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecorations=PR_TAG_LEXER(chunk,start);PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceNodes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style==PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var subDecorations=PR_decorateSource(source.substring(start,end));for(var j=0,m=subDecorations.length;j<m;j+=2){subDecorations[j]+=start;}PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceAttributes(source,decorations){var nextValueIsSource=false;for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_ATTRIB_NAME){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;nextValueIsSource=/^on|^style$/i.test(source.substring(start,end));}else if(style==PR_ATTRIB_VALUE){if(nextValueIsSource){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var attribValue=source.substring(start,end);var attribLen=attribValue.length;var quoted=(attribLen>=2&&/^[\"\']/.test(attribValue)&&attribValue.charAt(0)===attribValue.charAt(attribLen-1));var attribSource;var attribSourceStart;var attribSourceEnd;if(quoted){attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue;}else{attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue.substring(1,attribValue.length-1);}var attribSourceDecorations=PR_decorateSource(attribSource);for(var j=0,m=attribSourceDecorations.length;j<m;j+=2){attribSourceDecorations[j]+=attribSourceStart;}if(quoted){attribSourceDecorations.push(attribSourceEnd,PR_ATTRIB_VALUE);PR_spliceArrayInto(attribSourceDecorations,decorations,i+2,0);}else{PR_spliceArrayInto(attribSourceDecorations,decorations,i,2);}}nextValueIsSource=false;}}return decorations;}function PR_decorateSource(sourceCode){var decorations=PR_splitStringAndCommentTokens(sourceCode);decorations=PR_splitNonStringNonCommentTokens(sourceCode,decorations);return decorations;}function PR_decorateMarkup(sourceCode){var decorations=PR_tokenizeMarkup(sourceCode);decorations=PR_splitTagAttributes(sourceCode,decorations);decorations=PR_splitSourceNodes(sourceCode,decorations);decorations=PR_splitSourceAttributes(sourceCode,decorations);return decorations;}function PR_recombineTagsAndDecorations(sourceText,extractedTags,decorations){var html=[];var outputIdx=0;var openDecoration=null;var currentDecoration=null;var tagPos=0;var decPos=0;var tabExpander=PR_tabExpander(PR_TAB_WIDTH);function emitTextUpTo(sourceIdx){if(sourceIdx>outputIdx){if(openDecoration&&openDecoration!==currentDecoration){html.push('</span>');openDecoration=null;}if(!openDecoration&¤tDecoration){openDecoration=currentDecoration;html.push('<span class=\"',openDecoration,'\">');}var htmlChunk=PR_textToHtml(tabExpander(sourceText.substring(outputIdx,sourceIdx))).replace(/(\r\n?|\n| ) /g,'$1 ').replace(/\r\n?|\n/g,' <br>');html.push(htmlChunk);outputIdx=sourceIdx;}}while(true){var outputTag;if(tagPos<extractedTags.length){if(decPos<decorations.length){outputTag=extractedTags[tagPos]<=decorations[decPos];}else{outputTag=true;}}else{outputTag=false;}if(outputTag){emitTextUpTo(extractedTags[tagPos]);if(openDecoration){html.push('</span>');openDecoration=null;}html.push(extractedTags[tagPos+1]);tagPos+=2;}else if(decPos<decorations.length){emitTextUpTo(decorations[decPos]);currentDecoration=decorations[decPos+1];decPos+=2;}else{break;}}emitTextUpTo(sourceText.length);if(openDecoration){html.push('</span>');}return html.join('');}function prettyPrintOne(sourceCodeHtml){try{var sourceAndExtractedTags=PR_extractTags(sourceCodeHtml);var source=sourceAndExtractedTags.source;var extractedTags=sourceAndExtractedTags.tags;var isMarkup=/^\s*</.test(source)&&/>\s*$/.test(source);var decorations=isMarkup?PR_decorateMarkup(source):PR_decorateSource(source);return PR_recombineTagsAndDecorations(source,extractedTags,decorations);}catch(e){if('console'in window){console.log(e);console.trace();}return sourceCodeHtml;}}var PR_SHOULD_USE_CONTINUATION=true;function prettyPrint(opt_whenDone){var codeSegments=[document.getElementsByTagName('pre'),document.getElementsByTagName('code'),document.getElementsByTagName('xmp')];var elements=[];for(var i=0;i<codeSegments.length;++i){for(var j=0;j<codeSegments[i].length;++j){elements.push(codeSegments[i][j]);}}codeSegments=null;var k=0;function doWork(){var endTime=(PR_SHOULD_USE_CONTINUATION?new Date().getTime()+250:Infinity);for(;k<elements.length&&new Date().getTime()<endTime;k++){var cs=elements[k];if(cs.className&&cs.className.indexOf('prettyprint')>=0){var nested=false;for(var p=cs.parentNode;p!=null;p=p.parentNode){if((p.tagName=='pre'||p.tagName=='code'||p.tagName=='xmp')&&p.className&&p.className.indexOf('prettyprint')>=0){nested=true;break;}}if(!nested){var content=PR_getInnerHtml(cs);content=content.replace(/(?:\r\n?|\n)$/,'');var newContent=prettyPrintOne(content);if(!PR_isRawContent(cs)){cs.innerHTML=newContent;}else{var pre=document.createElement('PRE');for(var i=0;i<cs.attributes.length;++i){var a=cs.attributes[i];if(a.specified){pre.setAttribute(a.name,a.value);}}pre.innerHTML=newContent;cs.parentNode.replaceChild(pre,cs);}}}}if(k<elements.length){setTimeout(doWork,250);}else if(opt_whenDone){opt_whenDone();}}doWork();}</script><script type='text/javascript'>prettyPrint();</script>]]></highlighter>
+ <highlighter><![CDATA[<style type='text/css'>.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;}.typ{color:#000;}.lit{color:#066;}.pun{color:#660;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}.dec{color:#606;}pre.prettyprint{padding:1em;border:1px solid #888;overflow:auto;}@media print{.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;font-style:italic;}.typ{color:#000;font-weight:bold;}.lit{color:#044;}.pun{color:#440;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}}</style><script type='text/javascript'>var PR_keywords={};(function(){var CPP_KEYWORDS='abstract bool break case catch char class const '+'const_cast continue default delete deprecated dllexport dllimport do '+'double dynamic_cast else enum explicit extern false float for friend '+'goto if inline int long mutable naked namespace new noinline noreturn '+'nothrow novtable operator private property protected public register '+'reinterpret_cast return selectany short signed sizeof static '+'static_cast struct switch template this thread throw true try typedef '+'typeid typename union unsigned using declaration, directive uuid '+'virtual void volatile while typeof';var CSHARP_KEYWORDS='as base by byte checked decimal delegate descending '+'event finally fixed foreach from group implicit in interface internal '+'into is lock null object override orderby params readonly ref sbyte '+'sealed stackalloc string select uint ulong unchecked unsafe ushort var';var JAVA_KEYWORDS='package synchronized boolean implements import throws '+'instanceof transient extends final strictfp native super';var JSCRIPT_KEYWORDS='debugger export function with NaN Infinity';var PERL_KEYWORDS='require sub unless until use elsif BEGIN END';var PYTHON_KEYWORDS='and assert def del elif except exec global lambda '+'not or pass print raise yield False True None';var RUBY_KEYWORDS='then end begin rescue ensure module when undef next '+'redo retry alias defined';var SH_KEYWORDS='done fi';var KEYWORDS=[CPP_KEYWORDS,CSHARP_KEYWORDS,JAVA_KEYWORDS,JSCRIPT_KEYWORDS,PERL_KEYWORDS,PYTHON_KEYWORDS,RUBY_KEYWORDS,SH_KEYWORDS];for(var k=0;k<KEYWORDS.length;k++){var kw=KEYWORDS[k].split(' ');for(var i=0;i<kw.length;i++){if(kw[i]){PR_keywords[kw[i]]=true;}}}}).call(this);var PR_STRING='str';var PR_KEYWORD='kwd';var PR_COMMENT='com';var PR_TYPE='typ';var PR_LITERAL='lit';var PR_PUNCTUATION='pun';var PR_PLAIN='pln';var PR_TAG='tag';var PR_DECLARATION='dec';var PR_SOURCE='src';var PR_ATTRIB_NAME='atn';var PR_ATTRIB_VALUE='atv';var PR_TAB_WIDTH=8;function PR_isWordChar(ch){return(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z');}function PR_spliceArrayInto(inserted,container,containerPosition,countReplaced){inserted.unshift(containerPosition,countReplaced||0);try{container.splice.apply(container,inserted);}finally{inserted.splice(0,2);}}var REGEXP_PRECEDER_PATTERN=(function(){var preceders=['!','!=','!==','#','%','%=','&','&&','&&=','&=','(','*','*=','+=',',','-=','->','/','/=',':','::',';','<','<<','<<=','<=','=','==','===','>','>=','>>','>>=','>>>','>>>=','?','@','[','^','^=','^^','^^=','{','|','|=','||','||=','~','break','case','continue','delete','do','else','finally','instanceof','return','throw','try','typeof'];var pattern='(?:'+'(?:(?:^|[^0-9\.])\\.{1,3})|'+'(?:(?:^|[^\\+])\\+)|'+'(?:(?:^|[^\\-])-)';for(var i=0;i<preceders.length;++i){var preceder=preceders[i];if(PR_isWordChar(preceder.charAt(0))){pattern+='|\\b'+preceder;}else{pattern+='|'+preceder.replace(/([^=<>:&])/g,'\\$1');}}pattern+='|^)\\s*$';return new RegExp(pattern);})();var pr_amp=/&/g;var pr_lt=/</g;var pr_gt=/>/g;var pr_quot=/\"/g;function PR_attribToHtml(str){return str.replace(pr_amp,'&').replace(pr_lt,'<').replace(pr_gt,'>').replace(pr_quot,'"');}function PR_textToHtml(str){return str.replace(pr_amp,'&').replace(pr_lt,'<').replace(pr_gt,'>');}var pr_ltEnt=/</g;var pr_gtEnt=/>/g;var pr_aposEnt=/'/g;var pr_quotEnt=/"/g;var pr_ampEnt=/&/g;function PR_htmlToText(html){var pos=html.indexOf('&');if(pos<0){return html;}for(--pos;(pos=html.indexOf('&#',pos+1))>=0;){var end=html.indexOf(';',pos);if(end>=0){var num=html.substring(pos+3,end);var radix=10;if(num&&num.charAt(0)=='x'){num=num.substring(1);radix=16;}var codePoint=parseInt(num,radix);if(!isNaN(codePoint)){html=(html.substring(0,pos)+String.fromCharCode(codePoint)+html.substring(end+1));}}}return html.replace(pr_ltEnt,'<').replace(pr_gtEnt,'>').replace(pr_aposEnt,\"'\").replace(pr_quotEnt,'\"').replace(pr_ampEnt,'&');}function PR_isRawContent(node){return'XMP'==node.tagName;}var PR_innerHtmlWorks=null;function PR_getInnerHtml(node){if(null===PR_innerHtmlWorks){var testNode=document.createElement('PRE');testNode.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC \"foo bar\">\n<foo />'));PR_innerHtmlWorks=!/</.test(testNode.innerHTML);}if(PR_innerHtmlWorks){var content=node.innerHTML;if(PR_isRawContent(node)){content=PR_textToHtml(content);}return content;}var out=[];for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}return out.join('');}function PR_normalizedHtml(node,out){switch(node.nodeType){case 1:var name=node.tagName.toLowerCase();out.push('\074',name);for(var i=0;i<node.attributes.length;++i){var attr=node.attributes[i];if(!attr.specified){continue;}out.push(' ');PR_normalizedHtml(attr,out);}out.push('>');for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}if(node.firstChild||!/^(?:br|link|img)$/.test(name)){out.push('<\/',name,'>');}break;case 2:out.push(node.name.toLowerCase(),'=\"',PR_attribToHtml(node.value),'\"');break;case 3:case 4:out.push(PR_textToHtml(node.nodeValue));break;}}function PR_tabExpander(tabWidth){var SPACES=' ';var charInLine=0;return function(plainText){var out=null;var pos=0;for(var i=0,n=plainText.length;i<n;++i){var ch=plainText.charAt(i);switch(ch){case'\t':if(!out){out=[];}out.push(plainText.substring(pos,i));var nSpaces=tabWidth-(charInLine%tabWidth);charInLine+=nSpaces;for(;nSpaces>=0;nSpaces-=SPACES.length){out.push(SPACES.substring(0,nSpaces));}pos=i+1;break;case'\n':charInLine=0;break;default:++charInLine;}}if(!out){return plainText;}out.push(plainText.substring(pos));return out.join('');};}var pr_chunkPattern=/(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g;var pr_commentPrefix=/^<!--/;var pr_cdataPrefix=/^<\[CDATA\[/;var pr_brPrefix=/^<br\b/i;function PR_extractTags(s){var matches=s.match(pr_chunkPattern);var sourceBuf=[];var sourceBufLen=0;var extractedTags=[];if(matches){for(var i=0,n=matches.length;i<n;++i){var match=matches[i];if(match.length>1&&match.charAt(0)==='<'){if(pr_commentPrefix.test(match)){continue;}if(pr_cdataPrefix.test(match)){sourceBuf.push(match.substring(9,match.length-3));sourceBufLen+=match.length-12;}else if(pr_brPrefix.test(match)){sourceBuf.push('\n');sourceBufLen+=1;}else{extractedTags.push(sourceBufLen,match);}}else{var literalText=PR_htmlToText(match);sourceBuf.push(literalText);sourceBufLen+=literalText.length;}}}return{source:sourceBuf.join(''),tags:extractedTags};}function PR_createSimpleLexer(shortcutStylePatterns,fallthroughStylePatterns){var shortcuts={};(function(){var allPatterns=shortcutStylePatterns.concat(fallthroughStylePatterns);for(var i=allPatterns.length;--i>=0;){var patternParts=allPatterns[i];var shortcutChars=patternParts[3];if(shortcutChars){for(var c=shortcutChars.length;--c>=0;){shortcuts[shortcutChars.charAt(c)]=patternParts;}}}})();var nPatterns=fallthroughStylePatterns.length;return function(sourceCode,opt_basePos){opt_basePos=opt_basePos||0;var decorations=[opt_basePos,PR_PLAIN];var lastToken='';var pos=0;var tail=sourceCode;while(tail.length){var style;var token=null;var patternParts=shortcuts[tail.charAt(0)];if(patternParts){var match=tail.match(patternParts[1]);token=match[0];style=patternParts[0];}else{for(var i=0;i<nPatterns;++i){patternParts=fallthroughStylePatterns[i];var contextPattern=patternParts[2];if(contextPattern&&!contextPattern.test(lastToken)){continue;}var match=tail.match(patternParts[1]);if(match){token=match[0];style=patternParts[0];break;}}if(!token){style=PR_PLAIN;token=tail.substring(0,1);}}decorations.push(opt_basePos+pos,style);pos+=token.length;tail=tail.substring(token.length);if(style!==PR_COMMENT&&/\S/.test(token)){lastToken=token;}}return decorations;};}var PR_C_STYLE_STRING_AND_COMMENT_LEXER=PR_createSimpleLexer([[PR_STRING,/^\'(?:[^\\\']|\\[\s\S])*(?:\'|$)/,null,\"'\"],[PR_STRING,/^\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)/,null,'\"'],[PR_STRING,/^\`(?:[^\\\`]|\\[\s\S])*(?:\`|$)/,null,'`']],[[PR_PLAIN,/^(?:[^\'\"\`\/\#]+)/,null,' \r\n'],[PR_COMMENT,/^#[^\r\n]*/,null,'#'],[PR_COMMENT,/^\/\/[^\r\n]*/,null],[PR_STRING,/^\/(?:[^\\\*\/]|\\[\s\S])+(?:\/|$)/,REGEXP_PRECEDER_PATTERN],[PR_COMMENT,/^\/\*[\s\S]*?(?:\*\/|$)/,null]]);function PR_splitStringAndCommentTokens(sourceCode){return PR_C_STYLE_STRING_AND_COMMENT_LEXER(sourceCode);}var PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER=PR_createSimpleLexer([],[[PR_PLAIN,/^\s+/,null,' \r\n'],[PR_PLAIN,/^[a-z_$@][a-z_$@0-9]*/i,null],[PR_LITERAL,/^0x[a-f0-9]+[a-z]/i,null],[PR_LITERAL,/^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?[a-z]*/i,null,'123456789'],[PR_PUNCTUATION,/^[^\s\w\.$@]+/,null]]);function PR_splitNonStringNonCommentTokens(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_PLAIN){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecs=PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER(chunk,start);for(var j=0,m=subDecs.length;j<m;j+=2){var subStyle=subDecs[j+1];if(subStyle===PR_PLAIN){var subStart=subDecs[j];var subEnd=j+2<m?subDecs[j+2]:chunk.length;var token=source.substring(subStart,subEnd);if(token=='.'){subDecs[j+1]=PR_PUNCTUATION;}else if(token in PR_keywords){subDecs[j+1]=PR_KEYWORD;}else if(/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(token)){subDecs[j+1]=token.charAt(0)=='@'?PR_LITERAL:PR_TYPE;}}}PR_spliceArrayInto(subDecs,decorations,i,2);i+=subDecs.length-2;}}return decorations;}var PR_MARKUP_LEXER=PR_createSimpleLexer([],[[PR_PLAIN,/^[^<]+/,null],[PR_DECLARATION,/^<!\w[^>]*(?:>|$)/,null],[PR_COMMENT,/^<!--[\s\S]*?(?:-->|$)/,null],[PR_SOURCE,/^<\?[\s\S]*?(?:\?>|$)/,null],[PR_SOURCE,/^<%[\s\S]*?(?:%>|$)/,null],[PR_SOURCE,/^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i,null],[PR_TAG,/^<\/?\w[^<>]*>/,null]]);var PR_SOURCE_CHUNK_PARTS=/^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/;function PR_tokenizeMarkup(source){var decorations=PR_MARKUP_LEXER(source);for(var i=0;i<decorations.length;i+=2){if(decorations[i+1]===PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var sourceChunk=source.substring(start,end);var match=(sourceChunk.match(PR_SOURCE_CHUNK_PARTS));if(match){decorations.splice(i,2,start,PR_TAG,start+match[1].length,PR_SOURCE,start+match[1].length+(match[2]||'').length,PR_TAG);}}}return decorations;}var PR_TAG_LEXER=PR_createSimpleLexer([[PR_ATTRIB_VALUE,/^\'[^\']*(?:\'|$)/,null,\"'\"],[PR_ATTRIB_VALUE,/^\"[^\"]*(?:\"|$)/,null,'\"'],[PR_PUNCTUATION,/^[<>\/=]+/,null,'<>/=']],[[PR_TAG,/^[\w-]+/,/^</],[PR_ATTRIB_VALUE,/^[\w-]+/,/^=/],[PR_ATTRIB_NAME,/^[\w-]+/,null],[PR_PLAIN,/^\s+/,null,' \r\n']]);function PR_splitTagAttributes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_TAG){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecorations=PR_TAG_LEXER(chunk,start);PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceNodes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style==PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var subDecorations=PR_decorateSource(source.substring(start,end));for(var j=0,m=subDecorations.length;j<m;j+=2){subDecorations[j]+=start;}PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceAttributes(source,decorations){var nextValueIsSource=false;for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_ATTRIB_NAME){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;nextValueIsSource=/^on|^style$/i.test(source.substring(start,end));}else if(style==PR_ATTRIB_VALUE){if(nextValueIsSource){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var attribValue=source.substring(start,end);var attribLen=attribValue.length;var quoted=(attribLen>=2&&/^[\"\']/.test(attribValue)&&attribValue.charAt(0)===attribValue.charAt(attribLen-1));var attribSource;var attribSourceStart;var attribSourceEnd;if(quoted){attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue;}else{attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue.substring(1,attribValue.length-1);}var attribSourceDecorations=PR_decorateSource(attribSource);for(var j=0,m=attribSourceDecorations.length;j<m;j+=2){attribSourceDecorations[j]+=attribSourceStart;}if(quoted){attribSourceDecorations.push(attribSourceEnd,PR_ATTRIB_VALUE);PR_spliceArrayInto(attribSourceDecorations,decorations,i+2,0);}else{PR_spliceArrayInto(attribSourceDecorations,decorations,i,2);}}nextValueIsSource=false;}}return decorations;}function PR_decorateSource(sourceCode){var decorations=PR_splitStringAndCommentTokens(sourceCode);decorations=PR_splitNonStringNonCommentTokens(sourceCode,decorations);return decorations;}function PR_decorateMarkup(sourceCode){var decorations=PR_tokenizeMarkup(sourceCode);decorations=PR_splitTagAttributes(sourceCode,decorations);decorations=PR_splitSourceNodes(sourceCode,decorations);decorations=PR_splitSourceAttributes(sourceCode,decorations);return decorations;}function PR_recombineTagsAndDecorations(sourceText,extractedTags,decorations){var html=[];var outputIdx=0;var openDecoration=null;var currentDecoration=null;var tagPos=0;var decPos=0;var tabExpander=PR_tabExpander(PR_TAB_WIDTH);function emitTextUpTo(sourceIdx){if(sourceIdx>outputIdx){if(openDecoration&&openDecoration!==currentDecoration){html.push('</span>');openDecoration=null;}if(!openDecoration&¤tDecoration){openDecoration=currentDecoration;html.push('<span class=\"',openDecoration,'\">');}var htmlChunk=PR_textToHtml(tabExpander(sourceText.substring(outputIdx,sourceIdx))).replace(/(\r\n?|\n| ) /g,'$1 ').replace(/\r\n?|\n/g,' <br>');html.push(htmlChunk);outputIdx=sourceIdx;}}while(true){var outputTag;if(tagPos<extractedTags.length){if(decPos<decorations.length){outputTag=extractedTags[tagPos]<=decorations[decPos];}else{outputTag=true;}}else{outputTag=false;}if(outputTag){emitTextUpTo(extractedTags[tagPos]);if(openDecoration){html.push('</span>');openDecoration=null;}html.push(extractedTags[tagPos+1]);tagPos+=2;}else if(decPos<decorations.length){emitTextUpTo(decorations[decPos]);currentDecoration=decorations[decPos+1];decPos+=2;}else{break;}}emitTextUpTo(sourceText.length);if(openDecoration){html.push('</span>');}return html.join('');}function prettyPrintOne(sourceCodeHtml){try{var sourceAndExtractedTags=PR_extractTags(sourceCodeHtml);var source=sourceAndExtractedTags.source;var extractedTags=sourceAndExtractedTags.tags;var isMarkup=/^\s*</.test(source)&&/>\s*$/.test(source);var decorations=isMarkup?PR_decorateMarkup(source):PR_decorateSource(source);return PR_recombineTagsAndDecorations(source,extractedTags,decorations);}catch(e){if('console'in window){console.log(e);console.trace();}return sourceCodeHtml;}}var PR_SHOULD_USE_CONTINUATION=true;function prettyPrint(opt_whenDone){var codeSegments=[document.getElementsByTagName('pre'),document.getElementsByTagName('code'),document.getElementsByTagName('xmp')];var elements=[];for(var i=0;i<codeSegments.length;++i){for(var j=0;j<codeSegments[i].length;++j){elements.push(codeSegments[i][j]);}}codeSegments=null;var k=0;function doWork(){var endTime=(PR_SHOULD_USE_CONTINUATION?new Date().getTime()+250:Infinity);for(;k<elements.length&&new Date().getTime()<endTime;k++){var cs=elements[k];if(cs.className&&cs.className.indexOf('prettyprint')>=0){var nested=false;for(var p=cs.parentNode;p!=null;p=p.parentNode){if((p.tagName=='pre'||p.tagName=='code'||p.tagName=='xmp')&&p.className&&p.className.indexOf('prettyprint')>=0){nested=true;break;}}if(!nested){var content=PR_getInnerHtml(cs);content=content.replace(/(?:\r\n?|\n)$/,'');var newContent=prettyPrintOne(content);if(!PR_isRawContent(cs)){cs.innerHTML=newContent;}else{var pre=document.createElement('PRE');for(var i=0;i<cs.attributes.length;++i){var a=cs.attributes[i];if(a.specified){pre.setAttribute(a.name,a.value);}}pre.innerHTML=newContent;cs.parentNode.replaceChild(pre,cs);}}}}if(k<elements.length){setTimeout(doWork,250);}else if(opt_whenDone){opt_whenDone();}}doWork();}</script><script type='text/javascript'>prettyPrint();</script>]]></highlighter>
</properties>
</root>
\ No newline at end of file
diff --git a/documentation/docs/click-online.html b/documentation/docs/click-online.html
index 1433c67..c600d6f 100644
--- a/documentation/docs/click-online.html
+++ b/documentation/docs/click-online.html
@@ -132,11 +132,11 @@
<p>
FormCenter is a powerful customer self service electronic forms delivery platform designed to fully leverage Adobe LiveCycle. It is a web based - customer facing solution that manages the complete life cycle of electronic forms and their associated services and data.
</p><p>
- FormCenter has been designed for large organizations (both Corporate and Government) that need to delivery electronic form solutions. FormCenter has special features that make it suitable for a single organization hosting forms on behalf of a diverse range of departments, agencies or business partners.
+ FormCenter has been designed for large organizations (both Corporate and Government) that need to deliver electronic form solutions. FormCenter has special features that make it suitable for a single organization hosting forms on behalf of a diverse range of departments, agencies or business partners.
</p>
<ul class="thumbnails">
<li>
- <a class="thickbox" rel="group1" href="click-online/images/formcenter-home.png"><img src="click-online/images/thumb-form-central-find-forms.png" alt="thumb formcentral find forms"/></a>
+ <a class="thickbox" rel="group1" href="click-online/images/formcenter-home.png"><img src="click-online/images/thumb-formcenter-home.png" alt="thumb formcentral find forms"/></a>
</li>
</ul>
</td>
@@ -145,10 +145,10 @@
<tr>
<td>
<div class="powered_by">Telstra OOT</div>
- <p>Telstra OOT provides the a Business Broadband Online Ordering Tool (OOT) for <a target="_blank" class="external" href="http://www.telstra.com/business">Telstra</a>.</p>
+ <p>Telstra OOT provides a Business Broadband Online Ordering Tool (OOT) for <a target="_blank" class="external" href="http://www.telstra.com/business">Telstra</a>.</p>
<ul class="thumbnails">
<li>
- <a class="thickbox" rel="group1" href="click-online/images/telstra-oot.png"><img src="click-online/images/thumb-telstra-home.png" alt="thumb telstra home"/></a>
+ <a class="thickbox" rel="group1" href="click-online/images/telstra-oot.png"><img src="click-online/images/thumb-telstra-oot.png" alt="thumb telstra home"/></a>
</li>
</ul>
</td>
@@ -161,14 +161,14 @@
<table>
<tr>
<td>
+ <ul>
+ <li><a target="_blank" href="http://click-framework.blogspot.com/">Click Framework Blog</a> - where Click developers post announcements and other related news.</li>
+ <li><a target="_blank" href="http://takezoe.blogspot.com/">Naoki Takezoe's blog</a> - regularly posts Click related material. Naoki is also the author of the excellent <a href="click-ide.html">ClickIDE</a>.</li>
+ <li><a target="_blank" href="http://sabob.blogspot.com/">Bob Schellink's blog</a></li>
+ </ul>
Let us know of any Click related blog entries on the web so we can add them here. Send us a mail to one of our
<a target="blank" class="external" href="http://sourceforge.net/mail/?group_id=82095">Mailing Lists</a>,
or directly to "sabob1 at gmail.com".
- <ul>
- <li><a href="http://click-framework.blogspot.com/">Click Framework Blog</a> - where Click developers post announcements and other related news.</li>
- <li><a href="http://takezoe.blogspot.com/">Naoki Takezoe's blog</a> - regularly posts Click related material. Naoki is also the author of the excellent <a href="click-ide.html">ClickIDE</a>.</li>
- <li><a href="http://sabob.blogspot.com/">Bob Schellink's blog</a> - sometimes post Click code snippets.</li>
- </ul>
</td>
</tr>
</table>
diff --git a/documentation/docs/click-online/images/better-programmer.png b/documentation/docs/click-online/images/better-programmer.png
index c5bfd81..518f3fa 100644
--- a/documentation/docs/click-online/images/better-programmer.png
+++ b/documentation/docs/click-online/images/better-programmer.png
Binary files differ
diff --git a/documentation/docs/click-online/images/form-central-find-forms.png b/documentation/docs/click-online/images/form-central-find-forms.png
deleted file mode 100644
index b06eff0..0000000
--- a/documentation/docs/click-online/images/form-central-find-forms.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/form-central-home.png b/documentation/docs/click-online/images/form-central-home.png
deleted file mode 100644
index 018f751..0000000
--- a/documentation/docs/click-online/images/form-central-home.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/form-central-profiles.png b/documentation/docs/click-online/images/form-central-profiles.png
deleted file mode 100644
index 47bfb54..0000000
--- a/documentation/docs/click-online/images/form-central-profiles.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/formcenter-home.png b/documentation/docs/click-online/images/formcenter-home.png
new file mode 100644
index 0000000..8ac0a64
--- /dev/null
+++ b/documentation/docs/click-online/images/formcenter-home.png
Binary files differ
diff --git a/documentation/docs/click-online/images/telstra-home.png b/documentation/docs/click-online/images/telstra-home.png
deleted file mode 100644
index ccb25fd..0000000
--- a/documentation/docs/click-online/images/telstra-home.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/telstra-oot.png b/documentation/docs/click-online/images/telstra-oot.png
new file mode 100644
index 0000000..2d53195
--- /dev/null
+++ b/documentation/docs/click-online/images/telstra-oot.png
Binary files differ
diff --git a/documentation/docs/click-online/images/telstra-user-account.png b/documentation/docs/click-online/images/telstra-user-account.png
deleted file mode 100644
index c9f4a2a..0000000
--- a/documentation/docs/click-online/images/telstra-user-account.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-form-central-find-forms.png b/documentation/docs/click-online/images/thumb-form-central-find-forms.png
deleted file mode 100644
index 12b2ad4..0000000
--- a/documentation/docs/click-online/images/thumb-form-central-find-forms.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-form-central-home.png b/documentation/docs/click-online/images/thumb-form-central-home.png
deleted file mode 100644
index 1cc4899..0000000
--- a/documentation/docs/click-online/images/thumb-form-central-home.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-form-central-profiles.png b/documentation/docs/click-online/images/thumb-form-central-profiles.png
deleted file mode 100644
index 1de60bf..0000000
--- a/documentation/docs/click-online/images/thumb-form-central-profiles.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-formcenter-home.png b/documentation/docs/click-online/images/thumb-formcenter-home.png
new file mode 100644
index 0000000..d4365ed
--- /dev/null
+++ b/documentation/docs/click-online/images/thumb-formcenter-home.png
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-telstra-home.png b/documentation/docs/click-online/images/thumb-telstra-home.png
deleted file mode 100644
index 55980d7..0000000
--- a/documentation/docs/click-online/images/thumb-telstra-home.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-telstra-oot.png b/documentation/docs/click-online/images/thumb-telstra-oot.png
new file mode 100644
index 0000000..dec1f41
--- /dev/null
+++ b/documentation/docs/click-online/images/thumb-telstra-oot.png
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-telstra-user-account.png b/documentation/docs/click-online/images/thumb-telstra-user-account.png
deleted file mode 100644
index f094345..0000000
--- a/documentation/docs/click-online/images/thumb-telstra-user-account.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click.html b/documentation/docs/click.html
index af5140f..c44afd7 100644
--- a/documentation/docs/click.html
+++ b/documentation/docs/click.html
@@ -71,13 +71,14 @@
<div class="news-header">18 May 2008 - Click 1.5 Milestone 1 (M1) released</div>
<div class="news-item">
We are pleased to announce the first milestone release of the new 1.5 development branch.
- 1.5 is still undergoing changes and is not yet ready for production use. For production use rather consider 1.4.2.
+ 1.5 is still undergoing changes and is not ready for production use. Rather consider the
+ latest stable release, 1.4.2, for live deployments.
<p/>
- Significant changes to 1.5 include:
+ Significant new features in 1.5 include:
<ul>
<li class="item"><a href="controls.html#container">Container</a> - new interface for building arbitrary complex, hierarchical Controls.</li>
<li class="item"><a href="click-api/net/sf/click/service/package-summary.html#services">Services</a> - Click core has been refactored into pluggable services.</li>
- <li class="item"><a href="mock-api/overview-summary.html">Mock Test Support</a> - introduced an easy to use package to write Unit and Functional Testing.</li>
+ <li class="item"><a href="mock-api/overview-summary.html">Mock Test Support</a> - introduces an easy to use package to write Unit and Functional Testing.</li>
</ul>
A new <a href="click-online.html#powered">Powered by Click</a> section was added. If you would
like to add your own site to this list, please send us a mail to one of our
diff --git a/documentation/docs/configuration.html b/documentation/docs/configuration.html
index 4272e0e..4f308b6 100644
--- a/documentation/docs/configuration.html
+++ b/documentation/docs/configuration.html
@@ -653,39 +653,6 @@
-<a name="application-file-item-factory" class="heading"><h3>File Item Factory</h3></a>
-
-The optional <tt>file-item-factory</tt> element defines the
-<a href="http://commons.apache.org/fileupload/">Commons FileUpload</a>
-<a href="http://commons.apache.org/fileupload/apidocs/org/apache/commons/fileupload/FileItemFactory.html">FileItemFactory</a>
-object to be used for processing multipart file upload requests.
-
-<pre class="codeDtd">
-<!ELEMENT <span class="blue">file-item-factory</span> (<span class="red">property</span>*)>
- <ATTLIST file-item-factory <span class="blue">classname</span> CDATA #FIXED "<span class="green">org.apache.commons.fileupload.disk.DiskFileItemFactory</span>">
-
- <!-- FileItem Factory property set after factory creation. -->
- <!ELEMENT <span class="red">property</span> (#PCDATA)>
- <!ATTLIST property <span class="blue">name</span> CDATA #REQUIRED>
- <!ATTLIST property <span class="blue">value</span> CDATA #REQUIRED>
-</pre>
-
-By default file upload requests are processed using the
-<a target="topic" href="http://commons.apache.org/fileupload/apidocs/org/apache/commons/fileupload/disk/DiskFileItemFactory.html">DiskFileItemFactory</a>.
-<p/>
-Factory properties can also be set by specifying property elements. These property
-values will be applied to the FileItemFactory using OGNL type coercion. For example:
-
-<pre class="codeConfig">
-<click-app>
- ..
- <file-item-factory classname="<span class="green">org.apache.commons.fileupload.disk.DiskFileItemFactory</span>">
- <property name=<span class="blue">"sizeThreshold"</span> value=<span class="red">"524288"</span>/>
- </file-item-factory>
-</click-app>
-</pre>
-
-
<a name="auto-deployed-files" class="heading"><h2>Auto Deployed Files</h2></a>
To make pre-configured resources (templates, stylesheets, etc.) available to web applications,
diff --git a/documentation/docs/controls.html b/documentation/docs/controls.html
index 623615c..4d88af5 100644
--- a/documentation/docs/controls.html
+++ b/documentation/docs/controls.html
@@ -78,22 +78,10 @@
Methods on the Control interface include:
<ul>
<li>
- <a href="click-api/net/sf/click/Control.html#getContext()">getContext()</a>
- - provides access to the request <a href="click-api/net/sf/click/Context.html">Context</a>.
- </li>
- <li>
<a href="click-api/net/sf/click/Control.html#getHtmlImports()">getHtmlImports()</a>
- defines the controls HTML header imports.
</li>
<li>
- <a href="click-api/net/sf/click/Control.html#getId()">getId()</a>
- - defines the controls HTML id attribute.
- </li>
- <li>
- <a href="click-api/net/sf/click/Control.html#setListener(java.lang.Object, java.lang.String)">setListener()</a>
- - set the control action callback listener.
- </li>
- <li>
<a href="click-api/net/sf/click/Control.html#getMessages()">getMessages()</a>
- defines the controls localized messages map.
</li>
@@ -396,7 +384,7 @@
} </pre>
Lets test the Div: (note the MockContext used in this test is described in the
-<a href="testing.html">Test Support</a> documentation)
+<a href="mock-api/overview-summary.html">Mock Test Support</a> documentation)
<pre class="prettyprint">
public class Test {
diff --git a/documentation/docs/extras-overview.html b/documentation/docs/extras-overview.html
index 6ba045d..c85f969 100644
--- a/documentation/docs/extras-overview.html
+++ b/documentation/docs/extras-overview.html
@@ -47,7 +47,7 @@
Components and controls should have minimal dependencies. This is to support easy
deployment of the click-examples and keeps the click build process simple.
-See <a href="building.html#extras-dependencies">Extras Dependencies</a> for
+See <a href="../building.html#extras-dependencies">Extras Dependencies</a> for
details.
<p/>
Please Note the Cayenne and Spring dependencies are only required if you use these particular features.
@@ -66,7 +66,7 @@
directory at startup (existing files will not be overwritten).
<p/>
To enable your controls to deploy resources on startup it should use the Control
-<a href="click-api/net/sf/click/Control.html#on-deploy">onDeploy()</a> method.
+<a href="../click-api/net/sf/click/Control.html#on-deploy">onDeploy()</a> method.
Click extra controls which use this method should be registered in Click Extras
JAR <tt>extras-controls.xml</tt> file.
diff --git a/documentation/docs/roadmap-changes.html b/documentation/docs/roadmap-changes.html
index c9bf3d3..094e8a8 100644
--- a/documentation/docs/roadmap-changes.html
+++ b/documentation/docs/roadmap-changes.html
@@ -2,12 +2,14 @@
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
+ <!-- saved from url=(0014)about:internet -->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="Author" content="Malcolm Edgar"/>
<meta name="description" lang="en" content="Click Java web application framework"/>
<meta name="keywords" lang="en" content="Click Framework, Java, JEEE, web application framework, open source"/>
<title>Click Framework</title>
<link rel="stylesheet" type="text/css" href="../help.css"/>
+ <link rel="stylesheet" type="text/css" href="../syntax-highlighter.css"/>
<style type="text/css">
dl {
margin-left: 2em;
@@ -36,8 +38,10 @@
border: 1px solid #99A4DF;
}
</style>
+<script type="text/javascript" src="../syntax-highlighter.js"></script>
</head>
-<body>
+<!--Activate syntax highlighting-->
+ <body onload="prettyPrint();">
<h1>Road Map and Changes</h1>
@@ -87,11 +91,11 @@
Click 1.5 (currently in development) introduces important new features including:
<p/>
<ul style="margin-top:0.5em;">
- <li class="item"><a href="mock-api/overview-summary.html">Test Support</a> - Unit and Functional Testing.</li>
+ <li class="item"><a href="controls.html#container">Container</a> - new interface for building arbitrary complex, hierarchical Controls.</li>
<li class="item"><a href="click-api/net/sf/click/service/package-summary.html#services">Services</a> - Click core has been refactored into pluggable services.</li>
+ <li class="item"><a href="mock-api/overview-summary.html">Mock Test Support</a> - Unit and Functional Testing.</li>
<li class="item"><a href="click-api/net/sf/click/control/AbstractControl.html">AbstractControl</a>
- AbstractControl was extended to implement all Control methods, making it easier to create custom controls.</li>
- <li class="item"><a href="controls.html#container">Container</a> - new interface for building arbitrary complex, hierarchical Controls.</li>
</ul>
<div style="margin-top:1.5em;margin-bottom:1em;">
New examples and documentation were added:
@@ -125,16 +129,16 @@
<li class="change">New documentation:
<ul style="padding-top: 5px;">
<li class="change">
- <a href="control.html#container">Container</a>
+ <a href="controls.html#container">Container</a>
</li>
<li class="change">
- <a href="control.html#layout">Template vs Container layout</a>
+ <a href="controls.html#layout">Template vs Container layout</a>
</li>
<li class="change">
<a href="click-api/net/sf/click/service/package-summary.html">Click Runtime Services</a>
</li>
<li class="change">
- <a href="testing.html">Testing support</a>
+ <a href="mock-api/overview-summary.html">Mock Test Support</a>
</li>
</ul>
</li>
@@ -149,42 +153,43 @@
The following is a list of enhancements and bugsfixes:
</div>
<ul style="padding: 0em; margin-left:0em;">
- <li class="change">
- Added a <a href="extras-api/net/sf/click/extras/control/CountrySelect.html">Country Select</a>
- control based on the JDK's own built in Country/Locale support.
- </li>
- <li class="change">
- New <a href="extras-api/net/sf/click/extras/service/FreemarkerTemplateService.html">Freemarker support</a>
- added as an alternative template engine to Velocity and JSP.
- </li>
- <li class="change">
- Added a <a href="extras-api/net/sf/click/extras/control/VirtualKeyboard.html">Virtual Keyboard</a>
- control using <a href="http://www.greywyvern.com/code/js/keyboard.html">GreyWyvern</a> JavaScript library.
- </li>
+ <li class="change">
+ Added <a class="external" target="_blank" href="http://www.freemarker.org">Freemarker</a> support as an
+ alternative templating engine to Velocity, with new
+ <a href="extras-api/net/sf/click/extras/service/FreemarkerTemplateService.html">FreemarkerTemplateService</a>.
+ </li>
+ <li class="change">
+ Added a <a href="extras-api/net/sf/click/extras/control/CountrySelect.html">Country Select</a>
+ control based on the JDK's own built in Country/Locale support.
+ </li>
+ <li class="change">
+ Added a <a href="extras-api/net/sf/click/extras/control/VirtualKeyboard.html">Virtual Keyboard</a>
+ control using <a href="http://www.greywyvern.com/code/js/keyboard.html">GreyWyvern</a> JavaScript library.
+ </li>
<li class="change">
Added support for setting Form
- <a href="click-api/net/sf/click/control/Form.html#getActionURL()">action</a>
- URL attribute. This issue was raised by Erdem Gunay
- [<a target='blank' href="http://www.avoka.com/jira/browse/CLK-319">319</a>].
+ <a href="click-api/net/sf/click/control/Form.html#getActionURL()">action</a>
+ URL attribute. This issue was raised by Erdem Gunay
+ [<a target='blank' href="http://www.avoka.com/jira/browse/CLK-319">319</a>].
</li>
<li class="change">
- Added support for Page HTML imports with a new <tt>getHtmlImports()</tt>
- method. This enables Pages to programatically define HTML imports which
- will be included in a border template using the PageImports object.
- This issue was raised by David Frizelle
- [<a target='blank' href="http://www.avoka.com/jira/browse/CLK-329">329</a>].
+ Added support for Page HTML imports with a new <tt>getHtmlImports()</tt>
+ method. This enables Pages to programatically define HTML imports which
+ will be included in a border template using the PageImports object.
+ This issue was raised by David Frizelle
+ [<a target='blank' href="http://www.avoka.com/jira/browse/CLK-329">329</a>].
</li>
- <li class="change">
+ <li class="change">
Add Page <a href="click-api/net/sf/click/Page.html#setTemplate(java.lang.String)">setTemplate(String)</a>
method to enable dynamic changing of a page border template. This issue
was raised by Huy Do
[<a target='blank' href="http://www.avoka.com/jira/browse/CLK-353">353</a>].
</li>
- <li class="change">
+ <li class="change">
Updated <a href="click-api/net/sf/click/Page.html#setPath(java.lang.String)">Page.setPath</a> to handle JSP resources. This issue was raised and fixed by Huy Do.
[<a target='blank' href="http://www.avoka.com/jira/browse/CLK-141">141</a>].
</li>
- <li class="change">
+ <li class="change">
Added support for Hibernate AnnocationConfiguration. This issue was fixed by Jean-Francois.
[<a target='blank' href="http://www.avoka.com/jira/browse/CLK-355">355</a>].
</li>
@@ -206,23 +211,13 @@
[<a target='blank' href="http://www.avoka.com/jira/browse/CLK-342">342</a>].
</li>
<li class="change">
- <b>Upgraded the following libraries:</b>
- <ul style="padding-top: 5px">
- <li>
- commons-lang 2.1 -> commons-io 2.4
- </li>
- <li>
- commons-io 1.3 -> commons-io 1.4
- </li>
- <li>
- commons-fileupload 1.2 -> commons-fileupload 1.2.1
- </li>
- <li>
- Hibernate 3.1.3 -> Hibernate 3.2.6
- </li>
- <li>
- Spring 1.2.9 -> Spring 2.5.4
- </li>
+ <b>Upgraded</b> the following libraries:
+ <ul style="margin-top:1em;">
+ <li>commons-lang 2.1 -> commons-io 2.4</li>
+ <li>commons-io 1.3 -> commons-io 1.4</li>
+ <li>commons-fileupload 1.2 -> commons-fileupload 1.2.1</li>
+ <li>Hibernate 3.1.3 -> Hibernate 3.2.6</li>
+ <li>Spring 1.2.9 -> Spring 2.5.4</li>
</ul>
</li>
<li class="change">Removed support for Cayenne 1.2.x.</li>
@@ -232,46 +227,87 @@
<span style="margin-left:-2em;margin-bottom:1em; color:brown; font-weight:bold">Upgrade Path</span>
<ul style="padding: 0em; margin-left:0em;">
<li class="upgrade">
- 1.5 is not binary compatible with 1.4. What this means is that in order
- to use 1.5, you will have to recompile your application against the 1.5
- release. Note that Click 1.5 still runs on any <b>JDK >= 1.4</b>.
+ <b>Please Note</b> Click version 1.5 is <b>not</b> binary compatible with version 1.4. To upgrade your
+ applications to use version Click 1.5 you will need to:
+ <ol style="margin-top:1em;">
+ <li>Recompile your application with the 1.5 Click libraries.</li>
+ <li>Retrofit the new Control
+ <a href="click-api/net/sf/click/Control.html#render(net.sf.click.util.HtmlStringBuffer)">render()</a>
+ method to any on your custom controls.</li>
+ <li>Replace any Control <tt>toString()</tt> methods with an equivalent <a href="click-api/net/sf/click/Control.html#render(net.sf.click.util.HtmlStringBuffer)">render()</a>
+ method. For further details see the example below.</li>
+ </ol>
+ Note that Click 1.5 is still compatible with Java JDK 1.4 or later.
</li>
<li class="upgrade">
- <b>Deprecated methods:</b> <a href="click-api/net/sf/click/Control.html#setListener(java.lang.Object, java.lang.String)">Control.setListener(Object, String)</a>,
+ Deprecated methods: <a href="click-api/net/sf/click/Control.html#setListener(java.lang.Object, java.lang.String)">Control.setListener(Object, String)</a>,
<a href="click-api/net/sf/click/Control.html#getId()">Control.getId</a> and
- <a href="click-api/net/sf/click/Control.html#getContext()">Control.getContext()</a>
- have been deprecated as recent refactoring have rendered them redundant on
- this interface.
+ <a href="click-api/net/sf/click/Control.html#getContext()">Control.getContext()</a>.
+ These methods have been deprecated on the Control interface as they are not required for ClickServlet -> Control API.
+ This refactoring is part of making the Control interface as small as possible,
+ which allows more flexibility in future releases.
<p/>
- We are trying to make the Control interface as small as possible, which
- allows more flexibility in future releases.
- <p/>
- <b>Please note:</b> these methods will still be available on <a href="click-api/net/sf/click/control/AbstractControl.html">AbstractControl</a>
- so should have minimal impact on existing code bases.
+ Note these methods are still available on <a href="click-api/net/sf/click/control/AbstractControl.html">AbstractControl</a>,
+ so this change should have minimal impact on existing code bases.
</li>
<li class="upgrade">
- 1.5 M1 introduces two new properties: <span style="font-weight:bold;color:navy;">file-size-limit-exceeded-error</span>
- and <span style="font-weight:bold;color:navy;">post-size-limit-exceeded-error</span>.
- For those building i18n applications remember to add these two properties
- to your <span style="font-weight:bold;color:navy;">click-control<lang>.properties.</span>
- <br>If you send us patches for your preferred language we will include them in the distribution.
- </li>
- <li class="upgrade">
- ClickLogger has been replaced with <a href="click-api/net/sf/click/service/LogService.html">LogService</a>.
- LogService is an interface with a default implementation <a href="click-api/net/sf/click/service/ConsoleLogService.html">ConsoleLogService</a>.
- There are alternative implementations for Log4J (<a href="extras-api/net/sf/click/extras/service/Log4JLogService.html">Log4JLogService</a>)
- and JDK Logger (<a href="extras-api/net/sf/click/extras/service/JdkLogService.html">JdkLogService</a>).<br>
- To retrieve a LogService instance a new utility method was introduced,
- <a href="click-api/net/sf/click/util/ClickUtils.html#getLogService()">ClickUtils.getLogService()</a>.
+ Upgrade custom Control rendering code to use new
+ <a href="click-api/net/sf/click/Control.html#render(net.sf.click.util.HtmlStringBuffer)">render</a>
+ method. This method allows improved rendering performance, because all controls can be
+ rendered from a single buffer that is created when rendering starts.
<p/>
- It is possible to write your own LogService instance or extend from
- an existing implementation. To setup Click to use an alternative instance you have to
- specify the LogService implementation in <em>click.xml</em>:
- <pre>
-<click-app charset="UTF-8">
- <pages package="net.sf.click.examples.page"/>
- <<span style="font-weight:bold;color:#000099">log-service</span> <span style="color:#009900">classname</span>="net.sf.click.extras.service.JdkLogService"/>
-</click-app> </pre>
+ If your created custom controls override <em>toString()</em>, please adapt it to the following pattern. From this:
+ <pre class="prettyprint">
+public class HtmlTable extends AbstractControl {
+ ...
+
+ public String toString() {
+ int estimatedControlSize = 1000;
+ HtmlStringBuffer buffer = new HtmlStringBuffer(estimatedControlSize);
+
+ // Rendering Start
+ buffer.elementStart(<span style="font-weight:bold;color:#000099">"table"</span>);
+ appendAttributes(buffer);
+ buffer.elementClose();
+
+ renderRows(buffer);
+
+ buffer.closeElement(<span style="font-weight:bold;color:#000099">"table"</span>);
+ // Rendering End
+
+ return buffer.toString();
+ }
+} </pre>
+ to this:
+<pre class="prettyprint">
+public class HtmlTable extends AbstractControl {
+ ...
+
+ public void render(HtmlStringBuffer buffer) {
+ // Rendering Start
+ buffer.elementStart(<span style="font-weight:bold;color:#000099">"table"</span>);
+ appendAttributes(buffer);
+ buffer.elementClose();
+
+ renderRows(buffer);
+
+ buffer.closeElement(<span style="font-weight:bold;color:#000099">"table"</span>);
+ <span style="color:green">// Rendering End</span>
+ }
+
+ public String toString() {
+ int estimatedControlSize = 1000;
+ HtmlStringBuffer buffer = new HtmlStringBuffer(estimatedControlSize);
+ render(buffer);
+ return buffer.toString();
+ }
+} </pre>
+ Note, the code between the commented section, was moved from <em>toString</em> to the <em>render</em> method.
+ <p/>
+ Also note that invoking a Control's <a href="click-api/net/sf/click/control/AbstractControl.html#toString()">toString()</a>
+ method still outputs the same HTML representation, as toString() delegates to the
+ <a href="click-api/net/sf/click/Control.html#render(net.sf.click.util.HtmlStringBuffer)">render</a>
+ method.
</li>
<li class="upgrade">
Certain controls were retrofitted as containers including <a href="click-api/net/sf/click/control/FieldSet.html">FieldSet</a>.
@@ -284,64 +320,34 @@
If FieldSet is added to a BasicForm however, FieldSet will layout its own child controls.
</li>
<li class="upgrade">
- The last change to be aware of is the new <a href="click-api/net/sf/click/Control.html#render(net.sf.click.util.HtmlStringBuffer)">render</a>
- method. This method allows improved rendering performance, because all controls can be
- rendered from a single buffer that is created when rendering starts.
+ Click 1.5 M1 introduces two new properties: <span style="color:navy;">file-size-limit-exceeded-error</span>
+ and <span style="color:navy;">post-size-limit-exceeded-error</span>.
+ For those building i18n applications remember to add these two properties
+ to your <span style="color:navy;">click-control_<lang>.properties.</span>
+ <br>If you send us patches for your preferred language we will include them in the distribution.
+ </li>
+ <li class="upgrade">
+ ClickLogger has been replaced with <a href="click-api/net/sf/click/service/LogService.html">LogService</a>.
+ LogService is an interface with a default implementation <a href="click-api/net/sf/click/service/ConsoleLogService.html">ConsoleLogService</a>.
+ There are also alternative implementations <a href="extras-api/net/sf/click/extras/service/Log4JLogService.html">Log4JLogService</a>
+ and <a href="extras-api/net/sf/click/extras/service/JdkLogService.html">JdkLogService</a>.
<p/>
- If you created custom controls, and override <em>toString()</em>, please adapt it to the following pattern. From this:
- <pre>
-public class HtmlTable extends AbstractControl {
- ...
-
-public String toString() {
- int estimatedControlSize = 1000;
- HtmlStringBuffer buffer = new HtmlStringBuffer(estimatedControlSize);
-
- <span style="color:green">// Rendering Start</span>
- buffer.elementStart(<span style="font-weight:bold;color:#000099">"table"</span>);
- appendAttributes(buffer);
- buffer.elementClose();
-
- renderRows(buffer);
-
- buffer.closeElement(<span style="font-weight:bold;color:#000099">"table"</span>);
- <span style="color:green">// Rendering End</span>
-
- return buffer.toString();
-} </pre>
- to this:
- <pre>
-public class HtmlTable extends AbstractControl {
- ...
-
-public void render(HtmlStringBuffer buffer) {
- <span style="color:green">// Rendering Start</span>
- buffer.elementStart(<span style="font-weight:bold;color:#000099">"table"</span>);
- appendAttributes(buffer);
- buffer.elementClose();
-
- renderRows(buffer);
-
- buffer.closeElement(<span style="font-weight:bold;color:#000099">"table"</span>);
- <span style="color:green">// Rendering End</span>
-}
-
-public String toString() {
- int estimatedControlSize = 1000;
- HtmlStringBuffer buffer = new HtmlStringBuffer(estimatedControlSize);
- render(buffer);
- return buffer.toString();
-} </pre>
- Note, the code between the commented section, was moved from <em>toString</em> to the <em>render</em> method.
+ It is possible to write your own LogService instance or extend from
+ an existing implementation. To setup Click to use an alternative instance you have to
+ specify the LogService implementation in <em>click.xml</em>:
+ <pre class="prettyprint">
+<click-app charset="UTF-8">
+ <pages package="net.sf.click.examples.page"/>
+ <log-service classname="net.sf.click.extras.service.JdkLogService"/>
+</click-app> </pre>
<p/>
- <b>Also note</b> that invoking a Control's <a href="click-api/net/sf/click/control/AbstractControl.html#toString()">toString()</a>
- method still outputs the same HTML representation, as toString() delegates to the
- <a href="click-api/net/sf/click/Control.html#render(net.sf.click.util.HtmlStringBuffer)">render</a>
- method.
+ While it is generally not recommended to use the Click LogService in your application code, you can retrieve it using the ClickUtils method
+ <a href="click-api/net/sf/click/util/ClickUtils.html#getLogService()">getLogService()</a>.
</li>
</ul>
</dd>
<p/>
+
<dt><div class="release-header">Archives</div></dt>
<dt>Version 1.4.1 - 30 March 2008</dt>
<dd>
diff --git a/documentation/docs/servlet-api/stylesheet.css b/documentation/docs/servlet-api/stylesheet.css
index 270fb5f..bd3f41b 100644
--- a/documentation/docs/servlet-api/stylesheet.css
+++ b/documentation/docs/servlet-api/stylesheet.css
@@ -430,4 +430,41 @@
margin-bottom: -5px;
}
+/* Syntax Highlighter. */
+.str{color:#2A00FF;}
+.kwd{color:#7F0055;
+ font-weight:bold;}
+.com{color:#3F7F5F;}
+.typ{color:#000;}
+.lit{color:#066;}
+.pun{color:#660;}
+.pln{color:#000;}
+.tag{color:#000099;
+ font-weight:bold;}
+.atn{color:#009900;}
+.atv{color:#000;}
+.dec{color:#606;}
+
+pre.prettyprint{
+ padding:1em;
+ border:1px solid #888;
+ overflow:auto;
+}
+
+@media print{
+ .str{color:#2A00FF;}
+ .kwd{color:#7F0055;
+ font-weight:bold;}
+ .com{color:#3F7F5F;
+ font-style:italic;}
+ .typ{color:#000;
+ font-weight:bold;}
+ .lit{color:#044;}
+ .pun{color:#440;}
+ .pln{color:#000;}
+ .tag{color:#000099;
+ font-weight:bold;}
+ .atn{color:#009900;}
+ .atv{color:#000;}
+}
\ No newline at end of file
diff --git a/examples/build.xml b/examples/build.xml
index 49909da..256f6e6 100644
--- a/examples/build.xml
+++ b/examples/build.xml
@@ -15,7 +15,7 @@
<property name="jar.jstl" value="jstl-1.1.2.jar"/>
<property name="jar.log4j" value="log4j-1.2.14.jar"/>
<property name="jar.logging" value="commons-logging-1.0.4.jar"/>
- <property name="jar.poi" value="poi-3.0-FINAL.jar "/>
+ <property name="jar.poi" value="poi-3.0-FINAL.jar"/>
<property name="jar.oro" value="oro-2.0.8.jar"/>
<property name="jar.servlet" value="servlet-api-2.3.jar"/>
<property name="jar.spring-beans" value="spring-beans-2.5.4.jar"/>
@@ -80,7 +80,7 @@
<link href="http://click.sourceforge.net/docs/click-api/"/>
<link href="http://static.springframework.org/spring/docs/1.2.x/api/"/>
</javadoc>
- <copy file="../framework/stylesheet.css"
+ <copy file="../documentation/docs/javadoc-stylesheet.css"
overwrite="true"
todir="${dir.webapp}/javadoc"/>
<delete file="${dir.deploy}/${name}.war"/>
diff --git a/examples/src/click-page.properties b/examples/src/click-page.properties
index cf264a3..58896e9 100644
--- a/examples/src/click-page.properties
+++ b/examples/src/click-page.properties
@@ -1,3 +1,3 @@
-version=1.5 M1
+version=1.5-M1
invalid.form.submit=You have made an invalid form submission.
\ No newline at end of file
diff --git a/examples/webapp/form/contact-details.htm b/examples/webapp/form/contact-details.htm
index a201cc8..a7faf2c 100644
--- a/examples/webapp/form/contact-details.htm
+++ b/examples/webapp/form/contact-details.htm
@@ -13,10 +13,10 @@
<a href="$context/source-viewer.htm?filename=WEB-INF/classes/net/sf/click/examples/control/html/cssform/ContactDetailsForm.java" target="_blank">ContactDetailsForm.java</a>
</li>
<li>
- <a href="$context/source-viewer.htm?filename=WEB-INF/classes/net/sf/click/examples/control/html/cssform/cssform.css" target="_blank">cssform.css</a>
+ <a href="$context/source-viewer.htm?filename=assets/css/cssform.css" target="_blank">cssform.css</a>
</li>
<li>
- <a href="$context/source-viewer.htm?filename=WEB-INF/classes/net/sf/click/examples/control/html/list/List.java" target="_blank">List.java</a>
+ <a href="$context/source-viewer.htm?filename=WEB-INF/classes/net/sf/click/examples/control/html/list/HtmlList.java" target="_blank">HtmlList.java</a>
</li>
<li>
<a href="$context/source-viewer.htm?filename=WEB-INF/classes/net/sf/click/examples/control/html/list/ListItem.java" target="_blank">ListItem.java</a>
diff --git a/extras/src/net/sf/click/extras/service/FreemarkerTemplateService.java b/extras/src/net/sf/click/extras/service/FreemarkerTemplateService.java
index ace1502..4c9c46b 100644
--- a/extras/src/net/sf/click/extras/service/FreemarkerTemplateService.java
+++ b/extras/src/net/sf/click/extras/service/FreemarkerTemplateService.java
@@ -39,13 +39,13 @@
* To configure the Freemarker TemplateService add the following element to your
* <tt>click.xml</tt> configuration file.
*
- * <pre class="codeConfig">
+ * <pre class="prettyprint">
* <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
* <click-app charset="UTF-8">
*
* <pages package="net.sf.click.examples.page"/>
*
- * <<span class="red">template-service</span> classname="<span class="blue">net.sf.click.extras.service.FreemarkerTemplateService</span>">
+ * <template-service classname="net.sf.click.extras.service.FreemarkerTemplateService">
*
* </click-app> </pre>
*
diff --git a/framework/src/net/sf/click/Control.java b/framework/src/net/sf/click/Control.java
index 9a64fca..9810016 100644
--- a/framework/src/net/sf/click/Control.java
+++ b/framework/src/net/sf/click/Control.java
@@ -351,6 +351,9 @@
* return buffer.toString();
* }
*
+ * /**
+ * * @see Control#render(HtmlStringBuffer)
+ * */
* public void render(HtmlStringBuffer buffer) {
* buffer.elementStart("div");
* buffer.appendAttribute("name", getName());
diff --git a/framework/src/net/sf/click/control/Table.java b/framework/src/net/sf/click/control/Table.java
index ba4c3a1..07b0d64 100644
--- a/framework/src/net/sf/click/control/Table.java
+++ b/framework/src/net/sf/click/control/Table.java
@@ -136,6 +136,50 @@
* ..
* } </pre>
*
+ * <a name="paging-and-sorting"/>
+ * <h4>Paging and Sorting</h4>
+ *
+ * Table provides out-of-the-box paging and sorting.
+ * <p/>
+ * To enable Paging set the table's page size: {@link #setPageSize(int)} and
+ * make the Table Banner visible: {@link #setShowBanner(boolean)}.
+ * <p/>
+ * To enable/disable sorting use {@link #setSortable(boolean)}.
+ * <p/>
+ * You can also set parameters on links generated by the Table through
+ * the Table's {@link #getControlLink() controlLink}.
+ * <p/>
+ * One often needs to add extra parameters on the Table links in order to
+ * preserve state when navigating between pages or sorting columns.
+ * <p/>
+ * For example:
+ *
+ * <pre class="prettyprint">
+ * public CompanyPage extends BorderPage {
+ *
+ * // companyId is the criteria used to limit Table rows to clients from
+ * // the specified company
+ * public String companyId;
+ *
+ * public Table table = new Table();
+ *
+ * public onInit() {
+ * // companyId could be selected from a drop down list or similar means.
+ * // Set the companyId on the table's controlLink. If you view the
+ * // output rendered by Table you will note the companyId parameter
+ * // is rendered for each Paging and Sorting link.
+ * table.getControlLink().setParameter("companyId", companyId);
+ * }
+ *
+ * ...
+ *
+ * public void onRender() {
+ * // Select only clients for the specified companyId
+ * List rowList = getCompanyDao().getCompanyClients(companyId);
+ * table.setRowList(rowList);
+ * }
+ * } </pre>
+ *
* See also W3C HTML reference
* <a title="W3C HTML 4.01 Specification"
* href="../../../../../../html/struct/tables.html">Tables</a>
@@ -568,6 +612,11 @@
/**
* Return the table paging and sorting control action link.
+ * <p/>
+ * <b>Note</b> you can set parameters on the returned ActionLink in order
+ * to preserve state when paging or sorting columns. A common use case is
+ * to filter out Table rows on specified criteria. See
+ * <a href="#paging-and-sorting">here</a> for an example.
*
* @return the table paging and sorting control action link
*/