You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jk...@apache.org on 2006/02/16 00:31:07 UTC

svn commit: r378118 [22/23] - in /jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo: ./ src/ src/alg/ src/animation/ src/collections/ src/crypto/ src/data/ src/dnd/ src/event/ src/flash/ src/flash/flash6/ src/flash/flash8/ src/fx/...

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-blue_benji_p_01.svg
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-blue_benji_p_01.svg?rev=378118&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-blue_benji_p_01.svg (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-blue_benji_p_01.svg Wed Feb 15 15:30:01 2006
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="104.00000pt" id="svg1" inkscape:version="0.40" sodipodi:docbase="/home/bpcomp/Inkscape" sodipodi:docname="aqua-pill-blue.svg" sodipodi:version="0.32" width="308.00000pt" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <metadata>
+    <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <cc:Work rdf:about="">
+        <dc:title>pill-button-blue</dc:title>
+        <dc:description></dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>hash</rdf:li>
+            <rdf:li></rdf:li>
+            <rdf:li>webpage</rdf:li>
+            <rdf:li>shape</rdf:li>
+            <rdf:li>button</rdf:li>
+            <rdf:li>computer</rdf:li>
+            <rdf:li>buttons</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent rdf:about="http://www.openclipart.org">
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date></dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs id="defs3">
+    <linearGradient id="linearGradient1759">
+      <stop id="stop1760" offset="0.0000000" style="stop-color:#ffffff;stop-opacity:0.0000000;"/>
+      <stop id="stop1761" offset="1.0000000" style="stop-color:#ffffff;stop-opacity:1.0000000;"/>
+    </linearGradient>
+    <linearGradient id="linearGradient1755">
+      <stop id="stop1756" offset="0.0000000" style="stop-color:#0d56db;stop-opacity:1.0000000;"/>
+      <stop id="stop1757" offset="1.0000000" style="stop-color:#061176;stop-opacity:1.0000000;"/>
+    </linearGradient>
+    <linearGradient gradientTransform="matrix(1.800141,0.000000,0.000000,0.555512,-116.6050,-231.0506)" gradientUnits="userSpaceOnUse" id="linearGradient1686" inkscape:collect="always" x1="172.99106" x2="172.99106" xlink:href="#linearGradient1755" y1="432.17224" y2="633.04230"/>
+    <linearGradient gradientTransform="matrix(1.784730,0.000000,0.000000,0.560309,-116.6050,-231.0506)" gradientUnits="userSpaceOnUse" id="linearGradient1754" inkscape:collect="always" x1="175.19505" x2="175.19505" xlink:href="#linearGradient1755" y1="627.57422" y2="426.25912"/>
+    <linearGradient gradientTransform="scale(2.045893,0.488784)" gradientUnits="userSpaceOnUse" id="linearGradient1762" inkscape:collect="always" x1="91.269760" x2="91.269775" xlink:href="#linearGradient1759" y1="93.231247" y2="3.6385469"/>
+  </defs>
+  <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="173.73576" inkscape:cy="22.298666" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="914" inkscape:window-width="1276" inkscape:window-x="0" inkscape:window-y="46" inkscape:zoom="0.86831673" pagecolor="#ffffff"/>
+  <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1">
+    <g id="g5828">
+      <rect height="113.72585" id="rect1061" rx="57.582676" ry="56.143105" style="fill:url(#linearGradient1754);fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#linearGradient1686);stroke-width:6.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" width="368.52905" x="8.6373997" y="7.9563966"/>
+      <rect height="80.668518" id="rect1758" rx="48.225491" ry="38.806480" style="fill:url(#linearGradient1762);fill-opacity:1.0;fill-rule:nonzero;stroke:none;stroke-width:6.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;" width="343.50781" x="21.422380" y="15.607353"/>
+    </g>
+  </g>
+</svg>

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-gray_benji-c.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-gray_benji-c.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-gray_benji-c.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-gray_benji-l.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-gray_benji-l.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-gray_benji-l.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-gray_benji-r.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-gray_benji-r.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-gray_benji-r.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-gray_benji.svg
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-gray_benji.svg?rev=378118&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-gray_benji.svg (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-gray_benji.svg Wed Feb 15 15:30:01 2006
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="104.00000pt" id="svg1" inkscape:version="0.40" sodipodi:docbase="/home/bpcomp/Inkscape" sodipodi:docname="aqua-pill-blue.svg" sodipodi:version="0.32" width="308.00000pt" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <metadata>
+    <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <cc:Work rdf:about="">
+        <dc:title>pill-button-blue</dc:title>
+        <dc:description></dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>hash</rdf:li>
+            <rdf:li></rdf:li>
+            <rdf:li>webpage</rdf:li>
+            <rdf:li>shape</rdf:li>
+            <rdf:li>button</rdf:li>
+            <rdf:li>computer</rdf:li>
+            <rdf:li>buttons</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent rdf:about="http://www.openclipart.org">
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date></dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs id="defs3">
+    <linearGradient id="linearGradient1759">
+      <stop id="stop1760" offset="0.0000000" style="stop-color:#ffffff;stop-opacity:0.0000000;"/>
+      <stop id="stop1761" offset="1.0000000" style="stop-color:#ffffff;stop-opacity:1.0000000;"/>
+    </linearGradient>
+    <linearGradient id="linearGradient1755">
+      <stop id="stop1756" offset="0.0000000" style="stop-color:gray;stop-opacity:1.0000000;"/>
+      <stop id="stop1757" offset="1.0000000" style="stop-color:gray;stop-opacity:1.0000000;"/>
+    </linearGradient>
+    <linearGradient gradientTransform="matrix(1.800141,0.000000,0.000000,0.555512,-116.6050,-231.0506)" gradientUnits="userSpaceOnUse" id="linearGradient1686" inkscape:collect="always" x1="172.99106" x2="172.99106" xlink:href="#linearGradient1755" y1="432.17224" y2="633.04230"/>
+    <linearGradient gradientTransform="matrix(1.784730,0.000000,0.000000,0.560309,-116.6050,-231.0506)" gradientUnits="userSpaceOnUse" id="linearGradient1754" inkscape:collect="always" x1="175.19505" x2="175.19505" xlink:href="#linearGradient1755" y1="627.57422" y2="426.25912"/>
+    <linearGradient gradientTransform="scale(2.045893,0.488784)" gradientUnits="userSpaceOnUse" id="linearGradient1762" inkscape:collect="always" x1="91.269760" x2="91.269775" xlink:href="#linearGradient1759" y1="93.231247" y2="3.6385469"/>
+  </defs>
+  <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="173.73576" inkscape:cy="22.298666" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="914" inkscape:window-width="1276" inkscape:window-x="0" inkscape:window-y="46" inkscape:zoom="0.86831673" pagecolor="#ffffff"/>
+  <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1">
+    <g id="g5828">
+      <rect height="113.72585" id="rect1061" rx="57.582676" ry="56.143105" style="fill:url(#linearGradient1754);fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#linearGradient1686);stroke-width:6.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" width="368.52905" x="8.6373997" y="7.9563966"/>
+      <rect height="80.668518" id="rect1758" rx="48.225491" ry="38.806480" style="fill:url(#linearGradient1762);fill-opacity:1.0;fill-rule:nonzero;stroke:none;stroke-width:6.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;" width="343.50781" x="21.422380" y="15.607353"/>
+    </g>
+  </g>
+</svg>

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-purple_benji-c.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-purple_benji-c.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-purple_benji-c.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-purple_benji-l.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-purple_benji-l.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-purple_benji-l.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-purple_benji-r.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-purple_benji-r.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-purple_benji-r.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-purple_benji_01.svg
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-purple_benji_01.svg?rev=378118&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-purple_benji_01.svg (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-purple_benji_01.svg Wed Feb 15 15:30:01 2006
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="104.00000pt" id="svg1" inkscape:version="0.40" sodipodi:docbase="/home/bpcomp/Inkscape" sodipodi:docname="aqua-pill-purple.svg" sodipodi:version="0.32" width="308.00000pt" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <metadata>
+    <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <cc:Work rdf:about="">
+        <dc:title>pill-button-purple</dc:title>
+        <dc:description></dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>webpage</rdf:li>
+            <rdf:li>shape</rdf:li>
+            <rdf:li>button</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent rdf:about="http://www.openclipart.org">
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date></dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs id="defs3">
+    <linearGradient id="linearGradient1759">
+      <stop id="stop1760" offset="0.0000000" style="stop-color:#ffffff;stop-opacity:0.0000000;"/>
+      <stop id="stop1761" offset="1.0000000" style="stop-color:#ffffff;stop-opacity:1.0000000;"/>
+    </linearGradient>
+    <linearGradient id="linearGradient1755">
+      <stop id="stop1756" offset="0.0000000" style="stop-color:#db0d87;stop-opacity:1.0000000;"/>
+      <stop id="stop1757" offset="1.0000000" style="stop-color:#76064b;stop-opacity:1.0000000;"/>
+    </linearGradient>
+    <linearGradient gradientTransform="matrix(1.800141,0.000000,0.000000,0.555512,-116.6050,-231.0506)" gradientUnits="userSpaceOnUse" id="linearGradient1686" inkscape:collect="always" x1="172.99106" x2="172.99106" xlink:href="#linearGradient1755" y1="432.17224" y2="633.04230"/>
+    <linearGradient gradientTransform="matrix(1.784730,0.000000,0.000000,0.560309,-116.6050,-231.0506)" gradientUnits="userSpaceOnUse" id="linearGradient1754" inkscape:collect="always" x1="175.19505" x2="175.19505" xlink:href="#linearGradient1755" y1="627.57422" y2="426.25912"/>
+    <linearGradient gradientTransform="scale(2.045893,0.488784)" gradientUnits="userSpaceOnUse" id="linearGradient1762" inkscape:collect="always" x1="91.269760" x2="91.269775" xlink:href="#linearGradient1759" y1="93.231247" y2="3.6385469"/>
+  </defs>
+  <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="173.73576" inkscape:cy="22.298666" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="914" inkscape:window-width="1276" inkscape:window-x="0" inkscape:window-y="46" inkscape:zoom="0.86831673" pagecolor="#ffffff"/>
+  <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1">
+    <g id="g5828">
+      <rect height="113.72585" id="rect1061" rx="57.582676" ry="56.143105" style="fill:url(#linearGradient1754);fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#linearGradient1686);stroke-width:6.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" width="368.52905" x="8.6373997" y="7.9563966"/>
+      <rect height="80.668518" id="rect1758" rx="48.225491" ry="38.806480" style="fill:url(#linearGradient1762);fill-opacity:1.0;fill-rule:nonzero;stroke:none;stroke-width:6.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;" width="343.50781" x="21.422380" y="15.607353"/>
+    </g>
+  </g>
+</svg>

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-seagreen_ben_01.svg
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-seagreen_ben_01.svg?rev=378118&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-seagreen_ben_01.svg (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-seagreen_ben_01.svg Wed Feb 15 15:30:01 2006
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="104.00000pt" id="svg1" inkscape:version="0.40" sodipodi:docbase="/home/bpcomp/Inkscape" sodipodi:docname="aqua-pill-seagreen.svg" sodipodi:version="0.32" width="308.00000pt" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <metadata>
+    <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <cc:Work rdf:about="">
+        <dc:title>pill-button-seagreen</dc:title>
+        <dc:description></dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>webpage</rdf:li>
+            <rdf:li>shape</rdf:li>
+            <rdf:li>button</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent rdf:about="http://www.openclipart.org">
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date></dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs id="defs3">
+    <linearGradient id="linearGradient1759">
+      <stop id="stop1760" offset="0.0000000" style="stop-color:#ffffff;stop-opacity:0.0000000;"/>
+      <stop id="stop1761" offset="1.0000000" style="stop-color:#ffffff;stop-opacity:1.0000000;"/>
+    </linearGradient>
+    <linearGradient id="linearGradient1755">
+      <stop id="stop1756" offset="0.0000000" style="stop-color:#0cdbb7;stop-opacity:1.0000000;"/>
+      <stop id="stop1757" offset="1.0000000" style="stop-color:#067662;stop-opacity:1.0000000;"/>
+    </linearGradient>
+    <linearGradient gradientTransform="matrix(1.800141,0.000000,0.000000,0.555512,-116.6050,-231.0506)" gradientUnits="userSpaceOnUse" id="linearGradient1686" inkscape:collect="always" x1="172.99106" x2="172.99106" xlink:href="#linearGradient1755" y1="432.17224" y2="633.04230"/>
+    <linearGradient gradientTransform="matrix(1.784730,0.000000,0.000000,0.560309,-116.6050,-231.0506)" gradientUnits="userSpaceOnUse" id="linearGradient1754" inkscape:collect="always" x1="175.19505" x2="175.19505" xlink:href="#linearGradient1755" y1="627.57422" y2="426.25912"/>
+    <linearGradient gradientTransform="scale(2.045893,0.488784)" gradientUnits="userSpaceOnUse" id="linearGradient1762" inkscape:collect="always" x1="91.269760" x2="91.269775" xlink:href="#linearGradient1759" y1="93.231247" y2="3.6385469"/>
+  </defs>
+  <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="173.73585" inkscape:cy="22.298651" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="914" inkscape:window-width="1276" inkscape:window-x="0" inkscape:window-y="46" inkscape:zoom="1.2279853" pagecolor="#ffffff"/>
+  <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1">
+    <g id="g5828">
+      <rect height="113.72585" id="rect1061" rx="57.582676" ry="56.143105" style="fill:url(#linearGradient1754);fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#linearGradient1686);stroke-width:6.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" width="368.52905" x="8.6373997" y="7.9563966"/>
+      <rect height="80.668518" id="rect1758" rx="48.225491" ry="38.806480" style="fill:url(#linearGradient1762);fill-opacity:1.0;fill-rule:nonzero;stroke:none;stroke-width:6.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;" width="343.50781" x="21.422380" y="15.607353"/>
+    </g>
+  </g>
+</svg>

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-seagreen_benji-c.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-seagreen_benji-c.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-seagreen_benji-c.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-seagreen_benji-l.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-seagreen_benji-l.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-seagreen_benji-l.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-seagreen_benji-r.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-seagreen_benji-r.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/pill-button-seagreen_benji-r.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/submenu_off.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/submenu_off.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/submenu_off.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/submenu_on.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/submenu_on.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/submenu_on.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_left.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_left.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_left.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_left_r.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_left_r.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_left_r.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_left_r_curr.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_left_r_curr.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_left_r_curr.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_right.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_right.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_right.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_right_r.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_right_r.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_right_r.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_right_r_curr.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_right_r_curr.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/tab_right_r_curr.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/titlebar-bg.jpg
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/titlebar-bg.jpg?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/titlebar-bg.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/toolbar-bg.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/toolbar-bg.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/toolbar-bg.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/transparent.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/transparent.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/transparent.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_blank.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_blank.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_blank.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_expand_minus.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_expand_minus.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_expand_minus.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_expand_plus.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_expand_plus.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_expand_plus.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_c.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_c.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_c.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_l.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_l.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_l.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_p.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_p.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_p.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_t.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_t.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_t.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_v.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_v.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_v.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_x.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_x.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_x.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_y.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_y.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_y.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_z.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_z.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_grid_z.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_node.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_node.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/treenode_node.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/verticalbar.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/verticalbar.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/verticalbar.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/whiteDownArrow.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/whiteDownArrow.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/images/whiteDownArrow.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/incrementMonth.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/incrementMonth.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/incrementMonth.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/incrementWeek.gif
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/incrementWeek.gif?rev=378118&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/incrementWeek.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/validate.js
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/validate.js?rev=378118&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/validate.js (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/validate.js Wed Feb 15 15:30:01 2006
@@ -0,0 +1,774 @@
+/*
+	Copyright (c) 2004-2005, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.widget.validate");
+
+dojo.provide("dojo.widget.validate.Textbox");
+dojo.provide("dojo.widget.validate.ValidationTextbox");
+dojo.provide("dojo.widget.validate.IntegerTextbox");
+dojo.provide("dojo.widget.validate.RealNumberTextbox");
+dojo.provide("dojo.widget.validate.CurrencyTextbox");
+dojo.provide("dojo.widget.validate.IpAddressTextbox");
+dojo.provide("dojo.widget.validate.UrlTextbox");
+dojo.provide("dojo.widget.validate.EmailTextbox");
+dojo.provide("dojo.widget.validate.EmailListTextbox");
+dojo.provide("dojo.widget.validate.DateTextbox");
+dojo.provide("dojo.widget.validate.TimeTextbox");
+dojo.provide("dojo.widget.validate.UsStateTextbox");
+dojo.provide("dojo.widget.validate.UsZipTextbox");
+dojo.provide("dojo.widget.validate.UsPhoneNumberTextbox");
+
+dojo.require("dojo.widget.HtmlWidget");
+dojo.require("dojo.widget.Manager");
+dojo.require("dojo.widget.Parse");
+dojo.require("dojo.xml.Parse");
+dojo.require("dojo.lang");
+dojo.require("dojo.validate");
+
+dojo.widget.manager.registerWidgetPackage("dojo.widget.validate");
+
+
+/*
+  ****** Textbox ******
+
+  This widget is a generic textbox field.
+  Serves as a base class to derive more specialized functionality in subclasses.
+  Has the following properties that can be specified as attributes in the markup.
+
+  @attr id         The textbox id attribute.
+  @attr className  The textbox class attribute.
+  @attr name       The textbox name attribute.
+  @attr value      The textbox value attribute.
+  @attr trim       Removes leading and trailing whitespace if true.  Default is false.
+  @attr uppercase  Converts all characters to uppercase if true.  Default is false.
+  @attr lowercase  Converts all characters to lowercase if true.  Default is false.
+  @attr ucFirst    Converts the first character of each word to uppercase if true.
+  @attr lowercase  Removes all characters that are not digits if true.  Default is false.
+*/
+dojo.widget.validate.Textbox = function() {  }
+
+dojo.inherits(dojo.widget.validate.Textbox, dojo.widget.HtmlWidget);
+
+dojo.lang.extend(dojo.widget.validate.Textbox, {
+	// default values for new subclass properties
+	widgetId: "", 
+	widgetType: "Textbox", 
+	id: "",
+	className: "",
+	name: "",
+	value: "",
+	trim: false,
+	uppercase: false,
+	lowercase: false,
+	ucFirst: false,
+	digit: false,
+	
+	templateString: "<input dojoAttachPoint='textbox' dojoAttachEvent='onblur;onfocus'"
+					+ " id='${this.id}' name='${this.name}' "
+					+ " value='${this.value}' class='${this.className}'></input>",
+
+	// our DOM nodes
+	textbox: null,
+
+	// Apply various filters to textbox value
+	filter: function() { 
+		if (this.trim) {
+			this.textbox.value = this.textbox.value.replace(/(^\s*|\s*$)/g, "");
+		} 
+		if (this.uppercase) {
+			this.textbox.value = this.textbox.value.toUpperCase();
+		} 
+		if (this.lowercase) {
+			this.textbox.value = this.textbox.value.toLowerCase();
+		} 
+		if (this.ucFirst) {
+			this.textbox.value = this.textbox.value.replace(/\b\w+\b/g, 
+				function(word) { return word.substring(0,1).toUpperCase() + word.substring(1).toLowerCase(); });
+		} 
+		if (this.digit) {
+			this.textbox.value = this.textbox.value.replace(/\D/g, "");
+		} 
+	},
+
+	// event handlers, you can over-ride these in your own subclasses
+	onfocus: function() {},
+	onblur: function() { this.filter(); },
+
+	// All functions below are called by create from dojo.widget.Widget
+	mixInProperties: function(localProperties, frag) {
+		dojo.widget.validate.Textbox.superclass.mixInProperties.apply(this, arguments);
+		if ( localProperties["class"] ) { 
+			this.className = localProperties["class"];
+		}
+	},
+
+	fillInTemplate: function() {
+		// apply any filters to initial value
+		this.filter();
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:Textbox");
+
+
+/*
+  ****** ValidationTextbox ******
+
+  A subclass of Textbox.
+  Over-ride isValid in subclasses to perform specific kinds of validation.
+  Has 4 new properties that can be specified as attributes in the markup.
+
+  @attr required          Can be true or false, default is false.
+  @attr validColor        The color textbox is highlighted for valid input. Default is #cfc.
+  @attr invalidColor      The color textbox is highlighted for invalid input. Default is #fcc.
+  @attr missingMessage    The message to display if value is missing.
+  @attr invalidMessage    The message to display if value is invalid.
+  @attr listenOnKeyPress  Updates messages on each key press.  Default is true.
+*/
+dojo.widget.validate.ValidationTextbox = function() {}
+
+dojo.inherits(dojo.widget.validate.ValidationTextbox, dojo.widget.validate.Textbox);
+
+dojo.lang.extend(dojo.widget.validate.ValidationTextbox, {
+	// default values for new subclass properties
+	widgetType: "ValidationTextbox", 
+	required: false,
+	validColor: "#cfc",
+	invalidColor: "#fcc",
+	invalidMessage: "* The value entered is not valid.",
+	missingMessage: "* This value is required.",
+	listenOnKeyPress: true,
+
+	templateString:   "<div>"
+					+   "<input dojoAttachPoint='textbox' dojoAttachEvent='onblur;onfocus;onkeyup'"
+					+     " id='${this.id}' name='${this.name}' "
+					+     " value='${this.value}' class='${this.className}'></input>"
+					+   "<span dojoAttachPoint='invalidSpan' class='invalid'>${this.invalidMessage}</span>"
+					+   "<span dojoAttachPoint='missingSpan' class='missing'>${this.missingMessage}</span>"
+					+ "</div>",
+
+	// new DOM nodes
+	invalidSpan: null,
+	missingSpan: null,
+
+	// Need to over-ride with your own validation code in subclasses
+	isValid: function() { return true; },
+
+	// Returns true if value is all whitespace
+	isEmpty: function() { 
+		return ( /^\s*$/.test(this.textbox.value) );
+	},
+
+	// Returns true if value is required and it is all whitespace.
+	isMissing: function() { 
+		return ( this.required && this.isEmpty() );
+	},
+
+	// Called oninit, onblur, and onkeypress.
+	// Show missing or invalid messages if appropriate, and highlight textbox field.
+	update: function() {
+		this.missingSpan.style.display = "none";
+		this.invalidSpan.style.display = "none";
+
+		var empty = this.isEmpty();
+		var valid = this.isValid();
+		var missing = this.isMissing();
+
+		// Display at most one error message
+		if ( missing ){
+			this.missingSpan.style.display = "";
+		}
+		else if ( !empty && !valid ){
+			this.invalidSpan.style.display = "";
+		}
+	},
+
+	// Called oninit, and onblur.
+	highlight: function() {
+		// highlight textbox background 
+		if ( this.isEmpty() ) {
+			this.textbox.style.backgroundColor = "";
+		}
+		else if ( this.isValid() ) {
+			this.textbox.style.backgroundColor = this.validColor;
+		}
+		else {
+			this.textbox.style.backgroundColor = this.invalidColor;
+		}
+	},
+
+	onfocus: function() {
+		// Put the textbox background back to normal
+		this.textbox.style.backgroundColor = "";
+	},
+
+	onblur: function() { 
+		this.filter();
+		this.update(); 
+		this.highlight(); 
+	},
+
+	onkeyup: function() { 
+		if ( this.listenOnKeyPress ) { 
+			//this.filter();  trim is problem if you have to type two words
+			this.update(); 
+		} 
+	},
+
+	fillInTemplate: function() {
+		// Attach isMissing and isValid methods to the textbox.
+		// We may use them later in connection with a submit button widget.
+		// TODO: this is unorthodox; it seems better to do it another way -- Bill
+		this.textbox.isValid = function() { _this.isValid.call(_this); };
+		this.textbox.isMissing = function() { _this.isMissing.call(_this); };
+	},
+
+	fillInTemplate: function() {
+		// apply any filters to initial value
+		this.filter();
+
+		// highlight textbox as valid or invalid
+		this.highlight(); 
+
+		// show missing or invalid messages on init
+		this.update(); 
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:ValidationTextbox");
+
+
+/*
+  ****** IntegerTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test for integer input.
+  Has two new properties that can be specified as attributes in the markup.
+
+  @attr signed     The leading plus-or-minus sign. Can be true or false, default is either.
+  @attr separator  The character used as the thousands separator.  Default is no separator.
+*/
+dojo.widget.validate.IntegerTextbox = function(node) {
+	// this property isn't a primitive and needs to be created on a per-item basis.
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.IntegerTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.IntegerTextbox, {
+	// new subclass properties
+	widgetType: "IntegerTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.IntegerTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.signed ) { 
+			this.flags.signed = ( localProperties.signed == "true" );
+		}
+		if ( localProperties.separator ) { 
+			this.flags.separator = localProperties.separator;
+		}
+	},
+
+	// Over-ride for integer validation
+	isValid: function() { 
+		return dojo.validate.isInteger(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:IntegerTextbox");
+
+
+/*
+  ****** RealNumberTextbox ******
+
+  A subclass that extends IntegerTextbox.
+  Over-rides isValid to test for real number input.
+  Has three new properties that can be specified as attributes in the markup.
+
+  @attr places    The exact number of decimal places.  If omitted, it's unlimited and optional.
+  @attr exponent  Can be true or false.  If omitted the exponential part is optional.
+  @attr eSigned   Is the exponent signed?  Can be true or false, if omitted the sign is optional.
+*/
+dojo.widget.validate.RealNumberTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.RealNumberTextbox, dojo.widget.validate.IntegerTextbox);
+
+dojo.lang.extend(dojo.widget.validate.RealNumberTextbox, {
+	// new subclass properties
+	widgetType: "RealNumberTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.RealNumberTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.places ) { 
+			this.flags.places = Number( localProperties.places );
+		}
+		if ( localProperties.exponent ) { 
+			this.flags.exponent = ( localProperties.exponent == "true" );
+		}
+		if ( localProperties.esigned ) { 
+			this.flags.eSigned = ( localProperties.esigned == "true" );
+		}
+	},
+
+	// Over-ride for real number validation
+	isValid: function() { 
+		return dojo.validate.isRealNumber(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:RealNumberTextbox");
+
+
+/*
+  ****** CurrencyTextbox ******
+
+  A subclass that extends IntegerTextbox.
+  Over-rides isValid to test if input denotes a monetary value .
+  Has 2 new properties that can be specified as attributes in the markup.
+
+  @attr cents      The two decimal places for cents.  Can be true or false, optional if omitted.
+  @attr symbol     A currency symbol such as Yen "�", Pound "�", or the Euro "�". Default is "$".
+  @attr separator  Default is "," instead of no separator as in IntegerTextbox.
+*/
+dojo.widget.validate.CurrencyTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.CurrencyTextbox, dojo.widget.validate.IntegerTextbox);
+
+dojo.lang.extend(dojo.widget.validate.CurrencyTextbox, {
+	// new subclass properties
+	widgetType: "CurrencyTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.CurrencyTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.cents ) { 
+			this.flags.cents = ( localProperties.cents == "true" );
+		}
+		if ( localProperties.symbol ) { 
+			this.flags.symbol = localProperties.symbol;
+		}
+	},
+
+	// Over-ride for currency validation
+	isValid: function() { 
+		return dojo.validate.isCurrency(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:CurrencyTextbox");
+
+
+/*
+  ****** IpAddressTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test for IP addresses.
+  Can specify formats for ipv4 or ipv6 as attributes in the markup.
+
+  @attr allowDottedDecimal  true or false, default is true.
+  @attr allowDottedHex      true or false, default is true.
+  @attr allowDottedOctal    true or false, default is true.
+  @attr allowDecimal        true or false, default is true.
+  @attr allowHex            true or false, default is true.
+  @attr allowIPv6           true or false, default is true.
+  @attr allowHybrid         true or false, default is true.
+*/
+dojo.widget.validate.IpAddressTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.IpAddressTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.IpAddressTextbox, {
+	// new subclass properties
+	widgetType: "IpAddressTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.IpAddressTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.allowdotteddecimal ) { 
+			this.flags.allowDottedDecimal = ( localProperties.allowdotteddecimal == "true" );
+		}
+		if ( localProperties.allowdottedhex ) { 
+			this.flags.allowDottedHex = ( localProperties.allowdottedhex == "true" );
+		}
+		if ( localProperties.allowdottedoctal ) { 
+			this.flags.allowDottedOctal = ( localProperties.allowdottedoctal == "true" );
+		}
+		if ( localProperties.allowdecimal ) { 
+			this.flags.allowDecimal = ( localProperties.allowdecimal == "true" );
+		}
+		if ( localProperties.allowhex ) { 
+			this.flags.allowHex = ( localProperties.allowhex == "true" );
+		}
+		if ( localProperties.allowipv6 ) { 
+			this.flags.allowIPv6 = ( localProperties.allowipv6 == "true" );
+		}
+		if ( localProperties.allowhybrid ) { 
+			this.flags.allowHybrid = ( localProperties.allowhybrid == "true" );
+		}
+	},
+
+	// Over-ride for IP address validation
+	isValid: function() { 
+		return dojo.validate.isIpAddress(this.textbox.value, this.flags);
+	}
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:IpAddressTextbox");
+
+
+/*
+  ****** UrlTextbox ******
+
+  A subclass of IpAddressTextbox.
+  Over-rides isValid to test for URL's.
+  Can specify 5 additional attributes in the markup.
+
+  @attr scheme        Can be true or false.  If omitted the scheme is optional.
+  @attr allowIP       Allow an IP address for hostname.  Default is true.
+  @attr allowLocal    Allow the host to be "localhost".  Default is false.
+  @attr allowCC       Allow 2 letter country code domains.  Default is true.
+  @attr allowGeneric  Allow generic domains.  Can be true or false, default is true.
+*/
+dojo.widget.validate.UrlTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.UrlTextbox, dojo.widget.validate.IpAddressTextbox);
+
+dojo.lang.extend(dojo.widget.validate.UrlTextbox, {
+	// new subclass properties
+	widgetType: "UrlTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.UrlTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.scheme ) { 
+			this.flags.scheme = ( localProperties.scheme == "true" );
+		}
+		if ( localProperties.allowip ) { 
+			this.flags.allowIP = ( localProperties.allowip == "true" );
+		}
+		if ( localProperties.allowlocal ) { 
+			this.flags.allowLocal = ( localProperties.allowlocal == "true" );
+		}
+		if ( localProperties.allowcc ) { 
+			this.flags.allowCC = ( localProperties.allowcc == "true" );
+		}
+		if ( localProperties.allowgeneric ) { 
+			this.flags.allowGeneric = ( localProperties.allowgeneric == "true" );
+		}
+	},
+
+	// Over-ride for URL validation
+	isValid: function() { 
+		return dojo.validate.isUrl(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:UrlTextbox");
+
+
+/*
+  ****** EmailTextbox ******
+
+  A subclass of UrlTextbox.
+  Over-rides isValid to test for email addresses.
+  Can use all markup attributes/properties of UrlTextbox except scheme.
+  One new attribute available in the markup.
+
+  @attr allowCruft  Allow address like <ma...@yahoo.com>.  Default is false.
+*/
+dojo.widget.validate.EmailTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.EmailTextbox, dojo.widget.validate.UrlTextbox);
+
+dojo.lang.extend(dojo.widget.validate.EmailTextbox, {
+	// new subclass properties
+	widgetType: "EmailTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.EmailTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.allowcruft ) { 
+			this.flags.allowCruft = ( localProperties.allowcruft == "true" );
+		}
+	},
+
+	// Over-ride for email address validation
+	isValid: function() { 
+		return dojo.validate.isEmailAddress(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:EmailTextbox");
+
+
+/*
+  ****** EmailListTextbox ******
+
+  A subclass of EmailTextbox.
+  Over-rides isValid to test for a list of email addresses.
+  Can use all markup attributes/properties of EmailTextbox and ...
+
+  @attr listSeparator  The character used to separate email addresses.  
+    Default is ";", ",", "\n" or " ".
+*/
+dojo.widget.validate.EmailListTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.EmailListTextbox, dojo.widget.validate.EmailTextbox);
+
+dojo.lang.extend(dojo.widget.validate.EmailListTextbox, {
+	// new subclass properties
+	widgetType: "EmailListTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.EmailListTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.listseparator ) { 
+			this.flags.listSeparator = localProperties.listseparator;
+		}
+	},
+
+	// Over-ride for email address list validation
+	isValid: function() { 
+		return dojo.validate.isEmailAddressList(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:EmailListTextbox");
+
+
+/*
+  ****** DateTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test if input is in a valid date format.
+
+  @attr format  Described in dojo.validate.js.  Default is  "MM/DD/YYYY".
+*/
+dojo.widget.validate.DateTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.DateTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.DateTextbox, {
+	// new subclass properties
+	widgetType: "DateTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.DateTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.format ) { 
+			this.flags.format = localProperties.format;
+		}
+	},
+
+	// Over-ride for date validation
+	isValid: function() { 
+		return dojo.validate.isValidDate(this.textbox.value, this.flags.format);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:DateTextbox");
+
+
+/*
+  ****** TimeTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test if input is in a valid time format.
+
+  @attr format    Described in dojo.validate.js.  Default is  "h:mm:ss t".
+  @attr amSymbol  The symbol used for AM.  Default is "AM" or "am".
+  @attr pmSymbol  The symbol used for PM.  Default is "PM" or "pm".
+*/
+dojo.widget.validate.TimeTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.TimeTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.TimeTextbox, {
+	// new subclass properties
+	widgetType: "TimeTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.TimeTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.format ) { 
+			this.flags.format = localProperties.format;
+		}
+		if ( localProperties.amsymbol ) { 
+			this.flags.amSymbol = localProperties.amsymbol;
+		}
+		if ( localProperties.pmsymbol ) { 
+			this.flags.pmSymbol = localProperties.pmsymbol;
+		}
+	},
+
+	// Over-ride for time validation
+	isValid: function() { 
+		return dojo.validate.isValidTime(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:TimeTextbox");
+
+
+/*
+  ****** UsStateTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test if input is a US state abbr.
+
+  @attr allowTerritories  Allow Guam, Puerto Rico, etc.  Default is true.
+  @attr allowMilitary     Allow military 'states', e.g. Armed Forces Europe (AE). Default is true.
+*/
+dojo.widget.validate.UsStateTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.UsStateTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.UsStateTextbox, {
+	// new subclass properties
+	widgetType: "UsStateTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// Initialize properties in super-class.
+		dojo.widget.validate.UsStateTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.allowterritories ) { 
+			this.flags.allowTerritories = ( localProperties.allowterritories == "true" );
+		}
+		if ( localProperties.allowmilitary ) { 
+			this.flags.allowMilitary = ( localProperties.allowmilitary == "true" );
+		}
+	},
+
+	isValid: function() { 
+		return dojo.validate.us.isState(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:UsStateTextbox");
+
+
+/*
+  ****** UsZipTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test if input is a US zip code.
+  Validates zip-5 and zip-5 plus 4.
+*/
+dojo.widget.validate.UsZipTextbox = function(node) {}
+
+dojo.inherits(dojo.widget.validate.UsZipTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.UsZipTextbox, {
+	// new subclass properties
+	widgetType: "UsZipTextbox", 
+
+	isValid: function() { 
+		return dojo.validate.us.isZipCode(this.textbox.value);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:UsZipTextbox");
+
+
+/*
+  ****** UsSocialSecurityNumberTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test if input is a US Social Security Number.
+*/
+dojo.widget.validate.UsSocialSecurityNumberTextbox = function(node) {}
+
+dojo.inherits(dojo.widget.validate.UsSocialSecurityNumberTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.UsSocialSecurityNumberTextbox, {
+	// new subclass properties
+	widgetType: "UsSocialSecurityNumberTextbox", 
+
+	isValid: function() { 
+		return dojo.validate.us.isSocialSecurityNumber(this.textbox.value);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:UsSocialSecurityNumberTextbox");
+
+
+/*
+  ****** UsPhoneNumberTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test if input is a 10-digit US phone number, an extension is optional.
+*/
+dojo.widget.validate.UsPhoneNumberTextbox = function(node) {}
+
+dojo.inherits(dojo.widget.validate.UsPhoneNumberTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.UsPhoneNumberTextbox, {
+	// new subclass properties
+	widgetType: "UsPhoneNumberTextbox", 
+
+	isValid: function() { 
+		return dojo.validate.us.isPhoneNumber(this.textbox.value);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:UsPhoneNumberTextbox");

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/xml/Parse.js
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/xml/Parse.js?rev=378118&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/xml/Parse.js (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/xml/Parse.js Wed Feb 15 15:30:01 2006
@@ -0,0 +1,171 @@
+/*
+	Copyright (c) 2004-2005, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.xml.Parse");
+
+dojo.require("dojo.dom");
+
+//TODO: determine dependencies
+// currently has dependency on dojo.xml.DomUtil nodeTypes constants...
+
+/* generic method for taking a node and parsing it into an object
+
+TODO: WARNING: This comment is wrong!
+
+For example, the following xml fragment
+
+<foo bar="bar">
+	<baz xyzzy="xyzzy"/>
+</foo>
+
+can be described as:
+
+dojo.???.foo = {}
+dojo.???.foo.bar = {}
+dojo.???.foo.bar.value = "bar";
+dojo.???.foo.baz = {}
+dojo.???.foo.baz.xyzzy = {}
+dojo.???.foo.baz.xyzzy.value = "xyzzy"
+
+*/
+// using documentFragment nomenclature to generalize in case we don't want to require passing a collection of nodes with a single parent
+dojo.xml.Parse = function(){
+	this.parseFragment = function(documentFragment) {
+		// handle parent element
+		var parsedFragment = {};
+		// var tagName = dojo.xml.domUtil.getTagName(node);
+		var tagName = dojo.dom.getTagName(documentFragment);
+		// TODO: What if document fragment is just text... need to check for nodeType perhaps?
+		parsedFragment[tagName] = new Array(documentFragment.tagName);
+		var attributeSet = this.parseAttributes(documentFragment);
+		for(var attr in attributeSet){
+			if(!parsedFragment[attr]){
+				parsedFragment[attr] = [];
+			}
+			parsedFragment[attr][parsedFragment[attr].length] = attributeSet[attr];
+		}
+		var nodes = documentFragment.childNodes;
+		for(var childNode in nodes){
+			switch(nodes[childNode].nodeType){
+				case  dojo.dom.ELEMENT_NODE: // element nodes, call this function recursively
+					parsedFragment[tagName].push(this.parseElement(nodes[childNode]));
+					break;
+				case  dojo.dom.TEXT_NODE: // if a single text node is the child, treat it as an attribute
+					if(nodes.length == 1){
+						if(!parsedFragment[documentFragment.tagName]){
+							parsedFragment[tagName] = [];
+						}
+						parsedFragment[tagName].push({ value: nodes[0].nodeValue });
+					}
+					break;
+			}
+		}
+		
+		return parsedFragment;
+	}
+
+	this.parseElement = function(node, hasParentNodeSet, optimizeForDojoML, thisIdx){
+		// TODO: make this namespace aware
+		var parsedNodeSet = {};
+		var tagName = dojo.dom.getTagName(node);
+		parsedNodeSet[tagName] = [];
+		if((!optimizeForDojoML)||(tagName.substr(0,4).toLowerCase()=="dojo")){
+			var attributeSet = this.parseAttributes(node);
+			for(var attr in attributeSet){
+				if((!parsedNodeSet[tagName][attr])||(typeof parsedNodeSet[tagName][attr] != "array")){
+					parsedNodeSet[tagName][attr] = [];
+				}
+				parsedNodeSet[tagName][attr].push(attributeSet[attr]);
+			}
+	
+			// FIXME: we might want to make this optional or provide cloning instead of
+			// referencing, but for now, we include a node reference to allow
+			// instantiated components to figure out their "roots"
+			parsedNodeSet[tagName].nodeRef = node;
+			parsedNodeSet.tagName = tagName;
+			parsedNodeSet.index = thisIdx||0;
+		}
+	
+		var count = 0;
+		for(var i=0; i<node.childNodes.length; i++){
+			var tcn = node.childNodes.item(i);
+			switch(tcn.nodeType){
+				case  dojo.dom.ELEMENT_NODE: // element nodes, call this function recursively
+					count++;
+					var ctn = dojo.dom.getTagName(tcn);
+					if(!parsedNodeSet[ctn]){
+						parsedNodeSet[ctn] = [];
+					}
+					parsedNodeSet[ctn].push(this.parseElement(tcn, true, optimizeForDojoML, count));
+					if(	(tcn.childNodes.length == 1)&&
+						(tcn.childNodes.item(0).nodeType == dojo.dom.TEXT_NODE)){
+						parsedNodeSet[ctn][parsedNodeSet[ctn].length-1].value = tcn.childNodes.item(0).nodeValue;
+					}
+					break;
+				case  dojo.dom.TEXT_NODE: // if a single text node is the child, treat it as an attribute
+					if(node.childNodes.length == 1) {
+						parsedNodeSet[tagName].push({ value: node.childNodes.item(0).nodeValue });
+					}
+					break;
+				default: break;
+				/*
+				case  dojo.dom.ATTRIBUTE_NODE: // attribute node... not meaningful here
+					break;
+				case  dojo.dom.CDATA_SECTION_NODE: // cdata section... not sure if this would ever be meaningful... might be...
+					break;
+				case  dojo.dom.ENTITY_REFERENCE_NODE: // entity reference node... not meaningful here
+					break;
+				case  dojo.dom.ENTITY_NODE: // entity node... not sure if this would ever be meaningful
+					break;
+				case  dojo.dom.PROCESSING_INSTRUCTION_NODE: // processing instruction node... not meaningful here
+					break;
+				case  dojo.dom.COMMENT_NODE: // comment node... not not sure if this would ever be meaningful 
+					break;
+				case  dojo.dom.DOCUMENT_NODE: // document node... not sure if this would ever be meaningful
+					break;
+				case  dojo.dom.DOCUMENT_TYPE_NODE: // document type node... not meaningful here
+					break;
+				case  dojo.dom.DOCUMENT_FRAGMENT_NODE: // document fragment node... not meaningful here
+					break;
+				case  dojo.dom.NOTATION_NODE:// notation node... not meaningful here
+					break;
+				*/
+			}
+		}
+		//return (hasParentNodeSet) ? parsedNodeSet[node.tagName] : parsedNodeSet;
+		return parsedNodeSet;
+	}
+
+	/* parses a set of attributes on a node into an object tree */
+	this.parseAttributes = function(node) {
+		// TODO: make this namespace aware
+		var parsedAttributeSet = {};
+		var atts = node.attributes;
+		// TODO: should we allow for duplicate attributes at this point...
+		// would any of the relevant dom implementations even allow this?
+		for(var i=0; i<atts.length; i++) {
+			var attnode = atts.item(i);
+			if((dojo.render.html.capable)&&(dojo.render.html.ie)){
+				if(!attnode){ continue; }
+				if(	(typeof attnode == "object")&&
+					(typeof attnode.nodeValue == 'undefined')||
+					(attnode.nodeValue == null)||
+					(attnode.nodeValue == '')){ 
+					continue; 
+				}
+			}
+			var nn = (attnode.nodeName.indexOf("dojo:") == -1) ? attnode.nodeName : attnode.nodeName.split("dojo:")[1];
+			parsedAttributeSet[nn] = { 
+				value: attnode.nodeValue 
+			};
+		}
+		return parsedAttributeSet;
+	}
+}

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/xml/__package__.js
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/xml/__package__.js?rev=378118&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/xml/__package__.js (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/xml/__package__.js Wed Feb 15 15:30:01 2006
@@ -0,0 +1,18 @@
+/*
+	Copyright (c) 2004-2005, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.require("dojo.xml.Parse");
+dojo.hostenv.conditionalLoadModule({
+	common:		["dojo.xml.domUtil"],
+    browser: 	["dojo.xml.htmlUtil"],
+    dashboard: 	["dojo.xml.htmlUtil"],
+    svg: 		["dojo.xml.svgUtil"]
+});
+dojo.hostenv.moduleLoaded("dojo.xml.*");

Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/xml/domUtil.js
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/xml/domUtil.js?rev=378118&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/xml/domUtil.js (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/xml/domUtil.js Wed Feb 15 15:30:01 2006
@@ -0,0 +1,84 @@
+/*
+	Copyright (c) 2004-2005, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.xml.domUtil");
+dojo.require("dojo.graphics.color");
+dojo.require("dojo.dom");
+dojo.require("dojo.style");
+
+dj_deprecated("dojo.xml.domUtil is deprecated, use dojo.dom instead");
+
+// for loading script:
+dojo.xml.domUtil = new function(){
+	this.nodeTypes = {
+		ELEMENT_NODE                  : 1,
+		ATTRIBUTE_NODE                : 2,
+		TEXT_NODE                     : 3,
+		CDATA_SECTION_NODE            : 4,
+		ENTITY_REFERENCE_NODE         : 5,
+		ENTITY_NODE                   : 6,
+		PROCESSING_INSTRUCTION_NODE   : 7,
+		COMMENT_NODE                  : 8,
+		DOCUMENT_NODE                 : 9,
+		DOCUMENT_TYPE_NODE            : 10,
+		DOCUMENT_FRAGMENT_NODE        : 11,
+		NOTATION_NODE                 : 12
+	}
+	
+	this.dojoml = "http://www.dojotoolkit.org/2004/dojoml";
+	this.idIncrement = 0;
+	
+	this.getTagName = function(){return dojo.dom.getTagName.apply(dojo.dom, arguments);}
+	this.getUniqueId = function(){return dojo.dom.getUniqueId.apply(dojo.dom, arguments);}
+	this.getFirstChildTag = function() {return dojo.dom.getFirstChildElement.apply(dojo.dom, arguments);}
+	this.getLastChildTag = function() {return dojo.dom.getLastChildElement.apply(dojo.dom, arguments);}
+	this.getNextSiblingTag = function() {return dojo.dom.getNextSiblingElement.apply(dojo.dom, arguments);}
+	this.getPreviousSiblingTag = function() {return dojo.dom.getPreviousSiblingElement.apply(dojo.dom, arguments);}
+
+	this.forEachChildTag = function(node, unaryFunc) {
+		var child = this.getFirstChildTag(node);
+		while(child) {
+			if(unaryFunc(child) == "break") { break; }
+			child = this.getNextSiblingTag(child);
+		}
+	}
+
+	this.moveChildren = function() {return dojo.dom.moveChildren.apply(dojo.dom, arguments);}
+	this.copyChildren = function() {return dojo.dom.copyChildren.apply(dojo.dom, arguments);}
+	this.clearChildren = function() {return dojo.dom.removeChildren.apply(dojo.dom, arguments);}
+	this.replaceChildren = function() {return dojo.dom.replaceChildren.apply(dojo.dom, arguments);}
+
+	this.getStyle = function() {return dojo.style.getStyle.apply(dojo.style, arguments);}
+	this.toCamelCase = function() {return dojo.style.toCamelCase.apply(dojo.style, arguments);}
+	this.toSelectorCase = function() {return dojo.style.toSelectorCase.apply(dojo.style, arguments);}
+
+	this.getAncestors = function(){return dojo.dom.getAncestors.apply(dojo.dom, arguments);}
+	this.isChildOf = function() {return dojo.dom.isDescendantOf.apply(dojo.dom, arguments);}
+	this.createDocumentFromText = function() {return dojo.dom.createDocumentFromText.apply(dojo.dom, arguments);}
+
+	if(dojo.render.html.capable || dojo.render.svg.capable) {
+		this.createNodesFromText = function(txt, wrap){return dojo.dom.createNodesFromText.apply(dojo.dom, arguments);}
+	}
+
+	this.extractRGB = function(color) { return dojo.graphics.color.extractRGB(color); }
+	this.hex2rgb = function(hex) { return dojo.graphics.color.hex2rgb(hex); }
+	this.rgb2hex = function(r, g, b) { return dojo.graphics.color.rgb2hex(r, g, b); }
+
+	this.insertBefore = function() {return dojo.dom.insertBefore.apply(dojo.dom, arguments);}
+	this.before = this.insertBefore;
+	this.insertAfter = function() {return dojo.dom.insertAfter.apply(dojo.dom, arguments);}
+	this.after = this.insertAfter
+	this.insert = function(){return dojo.dom.insertAtPosition.apply(dojo.dom, arguments);}
+	this.insertAtIndex = function(){return dojo.dom.insertAtIndex.apply(dojo.dom, arguments);}
+	this.textContent = function () {return dojo.dom.textContent.apply(dojo.dom, arguments);}
+	this.renderedTextContent = function () {return dojo.dom.renderedTextContent.apply(dojo.dom, arguments);}
+	this.remove = function (node) {return dojo.dom.removeNode.apply(dojo.dom, arguments);}
+}
+



---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org