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/03/11 22:19:18 UTC
svn commit: r385171 [21/24] - in
/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo:
./ src/ src/animation/ src/collections/ src/crypto/ src/data/ src/dnd/
src/event/ src/flash/ src/flash/flash6/ src/flash/flash8/ src/fx/ src/grap...
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/html/Tooltip.js
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/html/Tooltip.js?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/html/Tooltip.js (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/html/Tooltip.js Sat Mar 11 13:18:41 2006
@@ -0,0 +1,174 @@
+/*
+ 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.html.Tooltip");
+dojo.require("dojo.widget.html.ContentPane");
+dojo.require("dojo.widget.Tooltip");
+dojo.require("dojo.uri");
+dojo.require("dojo.widget.*");
+dojo.require("dojo.event");
+dojo.require("dojo.style");
+dojo.require("dojo.html");
+
+dojo.widget.html.Tooltip = function(){
+ // mix in the tooltip properties
+ dojo.widget.Tooltip.call(this);
+ dojo.widget.html.ContentPane.call(this);
+}
+dojo.inherits(dojo.widget.html.Tooltip, dojo.widget.html.ContentPane);
+dojo.lang.extend(dojo.widget.html.Tooltip, {
+
+ // Constructor arguments (should these be in tooltip.js rather than html/tooltip.js???)
+ caption: "",
+ showDelay: 500,
+ hideDelay: 100,
+ connectId: "",
+
+ templatePath: dojo.uri.dojoUri("src/widget/templates/HtmlTooltipTemplate.html"),
+ templateCssPath: dojo.uri.dojoUri("src/widget/templates/HtmlTooltipTemplate.css"),
+
+ connectNode: null,
+
+ // Tooltip has the following possible states:
+ // erased - nothing on screen
+ // displaying - currently being faded in (partially displayed)
+ // displayed - fully displayed
+ // erasing - currently being faded out (partially erased)
+ state: "erased",
+
+ fillInTemplate: function(args, frag){
+ if(this.caption != ""){
+ this.domNode.appendChild(document.createTextNode(this.caption));
+ }
+ this.connectNode = dojo.byId(this.connectId);
+
+ // IE bug workaround
+ this.bgIframe = new dojo.html.BackgroundIframe(this.domNode);
+
+ dojo.widget.html.Tooltip.superclass.fillInTemplate.call(this, args, frag);
+ },
+
+ postCreate: function(args, frag){
+ // The domnode was appended to my parent widget's domnode, but the positioning
+ // only works if the domnode is a child of document.body
+ document.body.appendChild(this.domNode);
+
+ dojo.event.connect(this.connectNode, "onmouseover", this, "onMouseOver");
+ dojo.widget.html.Tooltip.superclass.postCreate.call(this, args, frag);
+ },
+
+ onMouseOver: function(e) {
+ this.mouseX = e.pageX || e.clientX + document.body.scrollLeft;
+ this.mouseY = e.pageY || e.clientY + document.body.scrollTop;
+
+ if(!this.showTimer){
+ this.showTimer = setTimeout(dojo.lang.hitch(this, "show"), this.showDelay);
+ dojo.event.connect(document.documentElement, "onmousemove", this, "onMouseMove");
+ }
+ },
+
+ onMouseMove: function(e) {
+ this.mouseX = e.pageX || e.clientX + document.body.scrollLeft;
+ this.mouseY = e.pageY || e.clientY + document.body.scrollTop;
+
+ if(dojo.html.overElement(this.connectNode, e) || dojo.html.overElement(this.domNode, e)) {
+ // If the tooltip has been scheduled to be erased, cancel that timer
+ // since we are hovering over element/tooltip again
+ if(this.hideTimer) {
+ clearTimeout(this.hideTimer);
+ delete this.hideTimer;
+ }
+ } else {
+ // mouse has been moved off the element/tooltip
+ // note: can't use onMouseOut to detect this because the "explode" effect causes
+ // spurious onMouseOut/onMouseOver events (due to interference from outline)
+ if(this.showTimer){
+ clearTimeout(this.showTimer);
+ delete this.showTimer;
+ }
+ if((this.state=="displaying"||this.state=="displayed") && !this.hideTimer){
+ this.hideTimer = setTimeout(dojo.lang.hitch(this, "hide"), this.hideDelay);
+ }
+ }
+ },
+
+ show: function() {
+ if(this.state=="erasing"){
+ // we are in the process of erasing; when that is finished, display it.
+ this.displayScheduled=true;
+ return;
+ }
+ if ( this.state=="displaying" || this.state=="displayed" ) { return; }
+
+ this.position();
+
+ // if rendering using explosion effect, need to set explosion source
+ this.explodeSrc = [this.mouseX, this.mouseY];
+
+ this.state="displaying";
+
+ dojo.widget.html.Tooltip.superclass.show.call(this);
+ },
+
+ onShow: function() {
+ dojo.widget.html.Tooltip.superclass.onShow.call(this);
+
+ this.state="displayed";
+
+ // in the corner case where the user has moved his mouse away
+ // while the tip was fading in
+ if(this.eraseScheduled){
+ this.hide();
+ this.eraseScheduled=false;
+ }
+ },
+
+ hide: function() {
+ if(this.state=="displaying"){
+ // in the process of fading in. wait until that is finished and then fade out
+ this.eraseScheduled=true;
+ return;
+ }
+ if ( this.state=="displayed" ) {
+ this.state="erasing";
+ if ( this.showTimer ) {
+ clearTimeout(this.showTimer);
+ delete this.showTimer;
+ }
+ if ( this.hideTimer ) {
+ clearTimeout(this.hideTimer);
+ delete this.hideTimer;
+ }
+ dojo.event.disconnect(document.documentElement, "onmousemove", this, "onMouseMove");
+ dojo.widget.html.Tooltip.superclass.hide.call(this);
+ }
+ },
+
+ onHide: function(){
+ this.state="erased";
+
+ // in the corner case where the user has moved his mouse back
+ // while the tip was fading out
+ if(this.displayScheduled){
+ this.display();
+ this.displayScheduled=false;
+ }
+ },
+
+ position: function(){
+ dojo.html.placeOnScreenPoint(this.domNode, this.mouseX, this.mouseY, [10,15], true);
+ },
+
+ onLoad: function(){
+ // the tooltip has changed size due to downloaded contents, so reposition it
+ dojo.lang.setTimeout(this, this.position, 50);
+ dojo.widget.html.Tooltip.superclass.onLoad.apply(this, arguments);
+ }
+});
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/html/stabile.js
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/html/stabile.js?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/html/stabile.js (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/html/stabile.js Sat Mar 11 13:18:41 2006
@@ -0,0 +1,208 @@
+/*
+ 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
+*/
+
+// Maintain state of widgets when user hits back/forward button
+
+dojo.provide("dojo.widget.html.stabile");
+
+dojo.widget.html.stabile = {
+ // Characters to quote in single-quoted regexprs
+ _sqQuotables: new RegExp("([\\\\'])", "g"),
+
+ // Current depth.
+ _depth: 0,
+
+ // Set to true when calling v.toString, to sniff for infinite
+ // recursion.
+ _recur: false,
+
+ // Levels of nesting of Array and object displays.
+ // If when >= depth, no display or array or object internals.
+ depthLimit: 2
+};
+
+
+
+
+
+//// PUBLIC METHODS
+
+// Get the state stored for the widget with the given ID, or undefined
+// if none.
+//
+dojo.widget.html.stabile.getState = function(id){
+ dojo.widget.html.stabile.setup();
+ return dojo.widget.html.stabile.widgetState[id];
+}
+
+
+// Set the state stored for the widget with the given ID. If isCommit
+// is true, commits all widget state to more stable storage.
+//
+dojo.widget.html.stabile.setState = function(id, state, isCommit){
+ dojo.widget.html.stabile.setup();
+ dojo.widget.html.stabile.widgetState[id] = state;
+ if(isCommit){
+ dojo.widget.html.stabile.commit(dojo.widget.html.stabile.widgetState);
+ }
+}
+
+
+// Sets up widgetState: a hash keyed by widgetId, maps to an object
+// or array writable with "describe". If there is data in the widget
+// storage area, use it, otherwise initialize an empty object.
+//
+dojo.widget.html.stabile.setup = function(){
+ if(!dojo.widget.html.stabile.widgetState){
+ var text = dojo.widget.html.stabile.getStorage().value;
+ dojo.widget.html.stabile.widgetState = text ? dj_eval("("+text+")") : {};
+ }
+}
+
+
+// Commits all widget state to more stable storage, so if the user
+// navigates away and returns, it can be restored.
+//
+dojo.widget.html.stabile.commit = function(state){
+ dojo.widget.html.stabile.getStorage().value = dojo.widget.html.stabile.description(state);
+}
+
+
+// Return a JSON "description string" for the given value.
+// Supports only core JavaScript types with literals, plus Date,
+// and cyclic structures are unsupported.
+// showAll defaults to false -- if true, this becomes a simple symbolic
+// object dumper, but you cannot "eval" the output.
+//
+dojo.widget.html.stabile.description = function(v, showAll){
+ // Save and later restore dojo.widget.html.stabile._depth;
+ var depth = dojo.widget.html.stabile._depth;
+
+ try {
+
+ if(v===void(0)){
+ return "undefined";
+ }
+ if(v===null){
+ return "null";
+ }
+ if(typeof(v)=="boolean" || typeof(v)=="number"
+ || v instanceof Boolean || v instanceof Number){
+ return v.toString();
+ }
+
+ if(typeof(v)=="string" || v instanceof String){
+ // Quote strings and their contents as required.
+ // Replacing by $& fails in IE 5.0
+ var v1 = v.replace(dojo.widget.html.stabile._sqQuotables, "\\$1");
+ v1 = v1.replace(/\n/g, "\\n");
+ v1 = v1.replace(/\r/g, "\\r");
+ // Any other important special cases?
+ return "'"+v1+"'";
+ }
+
+ if(v instanceof Date){
+ // Create a data constructor.
+ return "new Date("+d.getFullYear+","+d.getMonth()+","+d.getDate()+")";
+ }
+
+ var d;
+ if(v instanceof Array || v.push){
+ // "push" test needed for KHTML/Safari, don't know why -cp
+
+ if(depth>=dojo.widget.html.stabile.depthLimit)
+ return "[ ... ]";
+
+ d = "[";
+ var first = true;
+ dojo.widget.html.stabile._depth++;
+ for(var i=0; i<v.length; i++){
+ // Skip functions and undefined values
+ // if(v[i]==undef || typeof(v[i])=="function")
+ // continue;
+ if(first){
+ first = false;
+ }else{
+ d += ",";
+ }
+ d+=arguments.callee(v[i], showAll);
+ }
+ return d+"]";
+ }
+
+ if(v.constructor==Object
+ || v.toString==describeThis){
+ if(depth>=dojo.widget.html.stabile.depthLimit)
+ return "{ ... }";
+
+ // Instanceof Hash is good, or if we just use Objects,
+ // we can say v.constructor==Object.
+ // IE (5?) lacks hasOwnProperty, but perhaps objects do not always
+ // have prototypes??
+ if(typeof(v.hasOwnProperty)!="function" && v.prototype){
+ throw new Error("description: "+v+" not supported by script engine");
+ }
+ var first = true;
+ d = "{";
+ dojo.widget.html.stabile._depth++;
+ for(var key in v){
+ // Skip values that are functions or undefined.
+ if(v[key]==void(0) || typeof(v[key])=="function")
+ continue;
+ if(first){
+ first = false;
+ }else{
+ d += ", ";
+ }
+ kd = key;
+ // If the key is not a legal identifier, use its description.
+ // For strings this will quote the stirng.
+ if(!kd.match(/^[a-zA-Z_][a-zA-Z0-9_]*$/)){
+ kd = arguments.callee(key, showAll);
+ }
+ d += kd+": "+arguments.callee(v[key], showAll);
+ }
+ return d+"}";
+ }
+
+ if(showAll){
+ if(dojo.widget.html.stabile._recur){
+ return objectToString.apply(v, []);
+ }else{
+ dojo.widget.html.stabile._recur = true;
+ return v.toString();
+ }
+ }else{
+ // log("Description? "+v.toString()+", "+typeof(v));
+ throw new Error("Unknown type: "+v);
+ return "'unknown'";
+ }
+
+ } finally {
+ // Always restore the global current depth.
+ dojo.widget.html.stabile._depth = depth;
+ }
+
+}
+
+
+
+//// PRIVATE TO MODULE
+
+// Gets an object (form field) with a read/write "value" property.
+//
+dojo.widget.html.stabile.getStorage = function(){
+ if (dojo.widget.html.stabile.dataField) {
+ return dojo.widget.html.stabile.dataField;
+ }
+ var form = document.forms._dojo_form;
+ return dojo.widget.html.stabile.dataField = form ? form.stabile : {value: ""};
+}
+
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/svg/Chart.js
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/svg/Chart.js?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/svg/Chart.js (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/svg/Chart.js Sat Mar 11 13:18:41 2006
@@ -0,0 +1,525 @@
+/*
+ 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.svg.Chart");
+
+dojo.require("dojo.widget.HtmlWidget");
+dojo.require("dojo.widget.Chart");
+dojo.require("dojo.math");
+dojo.require("dojo.html");
+dojo.require("dojo.svg");
+dojo.require("dojo.graphics.color");
+
+dojo.widget.svg.Chart=function(){
+ dojo.widget.Chart.call(this);
+ dojo.widget.HtmlWidget.call(this);
+};
+dojo.inherits(dojo.widget.svg.Chart, dojo.widget.HtmlWidget);
+dojo.lang.extend(dojo.widget.svg.Chart, {
+ // widget props
+ templatePath:null,
+ templateCssPath:null,
+
+ // state
+ _isInitialized:false,
+ hasData:false,
+
+ // chart props
+ vectorNode:null,
+ plotArea:null,
+ dataGroup:null,
+ axisGroup:null,
+
+ properties:{
+ height:400, // defaults, will resize to the domNode.
+ width:600,
+ plotType:null,
+ padding:{
+ top:10,
+ bottom:2,
+ left:60,
+ right:30
+ },
+ axes:{
+ x:{
+ plotAt:0,
+ label:"",
+ unitLabel:"",
+ unitType:Number,
+ nUnitsToShow:10,
+ range:{
+ min:0,
+ max:200
+ }
+ },
+ y:{
+ plotAt:0,
+ label:"",
+ unitLabel:"",
+ unitType:Number,
+ nUnitsToShow:10,
+ range:{
+ min:0,
+ max:200
+ }
+ }
+ }
+ },
+
+ fillInTemplate:function(args,frag){
+ this.initialize();
+ this.render();
+ },
+ parseData:function(){
+ },
+ initialize:function(){
+ this.parseData();
+
+ // begin by grabbing the table, and reading it in.
+ var table=this.domNode.getElementsByTagName("table")[0];
+ if (!table) return;
+
+ var bRangeX=false;
+ var bRangeY=false;
+
+ // properties off the table
+ if (table.getAttribute("width")) this.properties.width=table.getAttribute("width");
+ if (table.getAttribute("height")) this.properties.height=table.getAttribute("height");
+ if (table.getAttribute("plotType")) this.properties.plotType=table.getAttribute("plotType");
+ if (table.getAttribute("padding")){
+ if (table.getAttribute("padding").indexOf(",") > -1)
+ var p=table.getAttribute("padding").split(",");
+ else var p=table.getAttribute("padding").split(" ");
+ if (p.length==1){
+ var pad=parseFloat(p[0]);
+ this.properties.padding.top=pad;
+ this.properties.padding.right=pad;
+ this.properties.padding.bottom=pad;
+ this.properties.padding.left=pad;
+ } else if(p.length==2){
+ var padV=parseFloat(p[0]);
+ var padH=parseFloat(p[1]);
+ this.properties.padding.top=padV;
+ this.properties.padding.right=padH;
+ this.properties.padding.bottom=padV;
+ this.properties.padding.left=padH;
+ } else if(p.length==4){
+ this.properties.padding.top=parseFloat(p[0]);
+ this.properties.padding.right=parseFloat(p[1]);
+ this.properties.padding.bottom=parseFloat(p[2]);
+ this.properties.padding.left=parseFloat(p[3]);
+ }
+ }
+ if (table.getAttribute("rangeX")){
+ var p=table.getAttribute("rangeX");
+ if (p.indexOf(",")>-1) p=p.split(",");
+ else p=p.split(" ");
+ this.properties.axes.x.range.min=parseFloat(p[0]);
+ this.properties.axes.x.range.max=parseFloat(p[1]);
+ bRangeX=true;
+ }
+ if (table.getAttribute("rangeY")){
+ var p=table.getAttribute("rangeY");
+ if (p.indexOf(",")>-1) p=p.split(",");
+ else p=p.split(" ");
+ this.properties.axes.y.range.min=parseFloat(p[0]);
+ this.properties.axes.y.range.max=parseFloat(p[1]);
+ bRangeY=true;
+ }
+
+ var thead=table.getElementsByTagName("thead")[0];
+ var tbody=table.getElementsByTagName("tbody")[0];
+ if(!(thead&&tbody)) dojo.raise("dojo.widget.Chart: supplied table must define a head and a body.");
+
+ // set up the series.
+ var columns=thead.getElementsByTagName("tr")[0].getElementsByTagName("th"); // should be <tr><..>
+
+ // assume column 0 == X
+ for (var i=1; i<columns.length; i++){
+ var key="column"+i;
+ var label=columns[i].innerHTML;
+ var plotType=columns[i].getAttribute("plotType")||"line";
+ var color=columns[i].getAttribute("color");
+ var ds=new dojo.widget.Chart.DataSeries(key,label,plotType,color);
+ this.series.push(ds);
+ }
+
+ // ok, get the values.
+ var rows=tbody.getElementsByTagName("tr");
+ var xMin=Number.MAX_VALUE,xMax=Number.MIN_VALUE;
+ var yMin=Number.MAX_VALUE,yMax=Number.MIN_VALUE;
+ var ignore = ["accesskey","align","bgcolor","class","colspan","height","id","nowrap","rowspan","style","tabindex","title","valign","width"];
+
+ for(var i=0; i<rows.length; i++){
+ var row=rows[i];
+ var cells=row.getElementsByTagName("td");
+ var x=Number.MIN_VALUE;
+ for (var j=0; j<cells.length; j++){
+ if (j==0){
+ x=parseFloat(cells[j].innerHTML);
+ xMin=Math.min(xMin, x);
+ xMax=Math.max(xMax, x);
+ } else {
+ var ds=this.series[j-1];
+ var y=parseFloat(cells[j].innerHTML);
+ yMin=Math.min(yMin,y);
+ yMax=Math.max(yMax,y);
+ var o={x:x, value:y};
+ var attrs=cells[j].attributes;
+ for(var k=0; k<attrs.length; k++){
+ var attr=attrs.item(k);
+ var bIgnore=false;
+ for (var l=0; l<ignore.length; l++){
+ if (attr.nodeName.toLowerCase()==ignore[l]){
+ bIgnore=true;
+ break;
+ }
+ }
+ if(!bIgnore) o[attr.nodeName]=attr.nodeValue;
+ }
+ ds.add(o);
+ }
+ }
+ }
+
+ // fix the axes
+ if(!bRangeX){
+ this.properties.axes.x.range={min:xMin, max:xMax};
+ }
+ if(!bRangeY){
+ this.properties.axes.y.range={min:yMin, max:yMax};
+ }
+
+ // where to plot the axes
+ if (table.getAttribute("axisAt")){
+ var p=table.getAttribute("axisAt");
+ if (p.indexOf(",")>-1) p=p.split(",");
+ else p=p.split(" ");
+
+ // x axis
+ if (!isNaN(parseFloat(p[0]))){
+ this.properties.axes.x.plotAt=parseFloat(p[0]);
+ } else if (p[0].toLowerCase()=="ymin"){
+ this.properties.axes.x.plotAt=this.properties.axes.y.range.min;
+ } else if (p[0].toLowerCase()=="ymax"){
+ this.properties.axes.x.plotAt=this.properties.axes.y.range.max;
+ }
+
+ // y axis
+ if (!isNaN(parseFloat(p[1]))){
+ this.properties.axes.y.plotAt=parseFloat(p[1]);
+ } else if (p[1].toLowerCase()=="xmin"){
+ this.properties.axes.y.plotAt=this.properties.axes.x.range.min;
+ } else if (p[1].toLowerCase()=="xmax"){
+ this.properties.axes.y.plotAt=this.properties.axes.x.range.max;
+ }
+ } else {
+ this.properties.axes.x.plotAt=this.properties.axes.y.range.min;
+ this.properties.axes.y.plotAt=this.properties.axes.x.range.min;
+ }
+
+ // table values should be populated, now pop it off.
+ this.domNode.removeChild(table);
+
+ // get the width and the height.
+// this.properties.width=dojo.html.getInnerWidth(this.domNode);
+// this.properties.height=dojo.html.getInnerHeight(this.domNode);
+
+ // ok, lets create the chart itself.
+ dojo.svg.g.suspend();
+ if(this.vectorNode) this.destroy();
+ this.vectorNode=document.createElementNS(dojo.svg.xmlns.svg, "svg");
+ this.vectorNode.setAttribute("width", this.properties.width);
+ this.vectorNode.setAttribute("height", this.properties.height);
+
+ // set up the clip path for the plot area.
+ var defs = document.createElementNS(dojo.svg.xmlns.svg, "defs");
+ var clip = document.createElementNS(dojo.svg.xmlns.svg, "clipPath");
+ clip.setAttribute("id","plotClip"+this.widgetId);
+ var rect = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+ rect.setAttribute("x", this.properties.padding.left);
+ rect.setAttribute("y", this.properties.padding.top);
+ rect.setAttribute("width", this.properties.width-this.properties.padding.left-this.properties.padding.right);
+ rect.setAttribute("height", this.properties.height-this.properties.padding.bottom-this.properties.padding.bottom);
+ clip.appendChild(rect);
+ defs.appendChild(clip);
+ this.vectorNode.appendChild(defs);
+
+ // the plot background.
+ this.plotArea = document.createElementNS(dojo.svg.xmlns.svg, "g");
+ this.vectorNode.appendChild(this.plotArea);
+ var rect = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+ rect.setAttribute("x", this.properties.padding.left);
+ rect.setAttribute("y", this.properties.padding.top);
+ rect.setAttribute("width", this.properties.width-this.properties.padding.left-this.properties.padding.right);
+ rect.setAttribute("height", this.properties.height-this.properties.padding.bottom-this.properties.padding.bottom);
+ rect.setAttribute("fill", "#fff");
+ this.plotArea.appendChild(rect);
+
+ // data group
+ this.dataGroup = document.createElementNS(dojo.svg.xmlns.svg, "g");
+ this.dataGroup.setAttribute("style","clip-path:url(#plotClip"+this.widgetId+");");
+ this.plotArea.appendChild(this.dataGroup);
+
+ // axis group
+ this.axisGroup = document.createElementNS(dojo.svg.xmlns.svg, "g");
+ this.plotArea.appendChild(this.axisGroup);
+
+ // x axis
+ var stroke=1;
+ var line = document.createElementNS(dojo.svg.xmlns.svg, "line");
+ var y=dojo.widget.svg.Chart.Plotter.getY(this.properties.axes.x.plotAt, this);
+ line.setAttribute("y1", y);
+ line.setAttribute("y2", y);
+ line.setAttribute("x1",this.properties.padding.left-stroke);
+ line.setAttribute("x2",this.properties.width-this.properties.padding.right);
+ line.setAttribute("style","stroke:#000;stroke-width:"+stroke+";");
+ this.axisGroup.appendChild(line);
+
+ // x axis units.
+ // (min and max)
+ var textSize=10;
+ var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
+ text.setAttribute("x", this.properties.padding.left);
+ text.setAttribute("y", this.properties.height-this.properties.padding.bottom+textSize+2);
+ text.setAttribute("style", "text-anchor:middle;font-size:"+textSize+"px;fill:#000;");
+ text.appendChild(document.createTextNode(dojo.math.round(parseFloat(this.properties.axes.x.range.min),2)));
+ this.axisGroup.appendChild(text);
+
+ var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
+ text.setAttribute("x", this.properties.width-this.properties.padding.right-(textSize/2));
+ text.setAttribute("y", this.properties.height-this.properties.padding.bottom+textSize+2);
+ text.setAttribute("style", "text-anchor:middle;font-size:"+textSize+"px;fill:#000;");
+ text.appendChild(document.createTextNode(dojo.math.round(parseFloat(this.properties.axes.x.range.max),2)));
+ this.axisGroup.appendChild(text);
+
+ // y axis
+ var line=document.createElementNS(dojo.svg.xmlns.svg, "line");
+ var x=dojo.widget.svg.Chart.Plotter.getX(this.properties.axes.y.plotAt, this);
+ line.setAttribute("x1", x);
+ line.setAttribute("x2", x);
+ line.setAttribute("y1", this.properties.padding.top);
+ line.setAttribute("y2", this.properties.height-this.properties.padding.bottom);
+ line.setAttribute("style", "stroke:#000;stroke-width:"+stroke+";");
+ this.axisGroup.appendChild(line);
+
+ // y axis units
+ var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
+ text.setAttribute("x", this.properties.padding.left-4);
+ text.setAttribute("y", this.properties.height-this.properties.padding.bottom);
+ text.setAttribute("style", "text-anchor:end;font-size:"+textSize+"px;fill:#000;");
+ text.appendChild(document.createTextNode(dojo.math.round(parseFloat(this.properties.axes.y.range.min),2)));
+ this.axisGroup.appendChild(text);
+
+ var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
+ text.setAttribute("x", this.properties.padding.left-4);
+ text.setAttribute("y", this.properties.padding.top+(textSize/2));
+ text.setAttribute("style", "text-anchor:end;font-size:"+textSize+"px;fill:#000;");
+ text.appendChild(document.createTextNode(dojo.math.round(parseFloat(this.properties.axes.y.range.max),2)));
+ this.axisGroup.appendChild(text);
+
+ this.domNode.appendChild(this.vectorNode);
+ dojo.svg.g.resume();
+
+ // this is last.
+ this.assignColors();
+ this._isInitialized=true;
+ },
+ destroy:function(){
+ while(this.domNode.childNodes.length>0){
+ this.domNode.removeChild(this.domNode.childNodes.item(0));
+ }
+ this.vectorNode=this.plotArea=this.dataGroup=this.axisGroup=null;
+ },
+ render:function(){
+ dojo.svg.g.suspend();
+
+ if (this.dataGroup){
+ while(this.dataGroup.childNodes.length>0){
+ this.dataGroup.removeChild(this.dataGroup.childNodes.item(0));
+ }
+ } else {
+ this.initialize();
+ }
+
+ // the remove/append is an attempt to streamline the rendering, it's totally optional
+// var p=this.dataGroup.parentNode;
+// p.removeChild(this.dataGroup);
+ for(var i=0; i<this.series.length; i++){
+ dojo.widget.svg.Chart.Plotter.plot(this.series[i], this);
+ }
+// p.appendChild(this.dataGroup);
+
+ dojo.svg.g.resume();
+ }
+});
+
+dojo.widget.svg.Chart.Plotter=new function(){
+ var _this=this;
+ var plotters = {};
+ var types=dojo.widget.Chart.PlotTypes;
+
+ this.getX=function(value, chart){
+ var v=parseFloat(value);
+ var min=chart.properties.axes.x.range.min;
+ var max=chart.properties.axes.x.range.max;
+ var ofst=0-min;
+ min+=ofst; max+=ofst; v+=ofst;
+
+ var xmin=chart.properties.padding.left;
+ var xmax=chart.properties.width-chart.properties.padding.right;
+ var x=(v*((xmax-xmin)/max))+xmin;
+ return x;
+ };
+ this.getY=function(value, chart){
+ var v=parseFloat(value);
+ var max=chart.properties.axes.y.range.max;
+ var min=chart.properties.axes.y.range.min;
+ var ofst=0;
+ if(min<0)ofst+=Math.abs(min);
+ min+=ofst; max+=ofst; v+=ofst;
+
+ var ymin=chart.properties.height-chart.properties.padding.bottom;
+ var ymax=chart.properties.padding.top;
+ var y=(((ymin-ymax)/(max-min))*(max-v))+ymax;
+ return y;
+ };
+
+ this.addPlotter=function(name, func){
+ plotters[name]=func;
+ };
+ this.plot=function(series, chart){
+ if (series.values.length==0) return;
+ if (series.plotType && plotters[series.plotType]){
+ return plotters[series.plotType](series, chart);
+ }
+ else if (chart.plotType && plotters[chart.plotType]){
+ return plotters[chart.plotType](series, chart);
+ }
+ };
+
+ // plotting
+ plotters[types.Bar]=function(series, chart){
+ var space=1;
+ var lastW = 0;
+ for (var i=0; i<series.values.length; i++){
+ var x=_this.getX(series.values[i].x, chart);
+ var w;
+ if (i==series.values.length-1){
+ w=lastW;
+ } else{
+ w=_this.getX(series.values[i+1].x, chart)-x-space;
+ lastW=w;
+ }
+ x-=(w/2);
+
+ var yA=_this.getY(chart.properties.axes.x.plotAt, chart);
+ var y=_this.getY(series.values[i].value, chart);
+ var h=Math.abs(yA-y);
+ if (parseFloat(series.values[i].value)<chart.properties.axes.x.plotAt){
+ var oy=yA;
+ yA=y;
+ y=oy;
+ }
+
+ var bar=document.createElementNS(dojo.svg.xmlns.svg, "rect");
+ bar.setAttribute("fill", series.color);
+ bar.setAttribute("title", series.label + ": " + series.values[i].value);
+ bar.setAttribute("stroke-width", "0");
+ bar.setAttribute("x", x);
+ bar.setAttribute("y", y);
+ bar.setAttribute("width", w);
+ bar.setAttribute("height", h);
+ bar.setAttribute("fill-opacity", "0.9");
+ chart.dataGroup.appendChild(bar);
+ }
+ };
+ plotters[types.Line]=function(series, chart){
+ var tension=3;
+ var line = document.createElementNS(dojo.svg.xmlns.svg, "path");
+ line.setAttribute("fill", "none");
+ line.setAttribute("stroke", series.color);
+ line.setAttribute("stroke-width", "2");
+ line.setAttribute("stroke-opacity", "0.85");
+ line.setAttribute("title", series.label);
+ chart.dataGroup.appendChild(line);
+
+ var path = [];
+ for (var i=0; i<series.values.length; i++){
+ var x = _this.getX(series.values[i].x, chart)
+ var y = _this.getY(series.values[i].value, chart);
+
+ var dx = chart.properties.padding.left+1;
+ var dy = chart.properties.height-chart.properties.padding.bottom;
+ if (i>0){
+ dx=x-_this.getX(series.values[i-1].x, chart);
+ dy=_this.getY(series.values[i-1].value, chart);
+ }
+
+ if (i==0) path.push("M");
+ else {
+ path.push("C");
+ var cx=x-(tension-1)*(dx/tension);
+ path.push(cx+","+dy);
+ cx=x-(dx/tension);
+ path.push(cx+","+y);
+ }
+ path.push(x+","+y);
+ }
+ line.setAttribute("d", path.join(" "));
+ };
+ plotters[types.Scatter]=function(series, chart){
+ var r=7;
+ for (var i=0; i<series.values.length; i++){
+ var x=_this.getX(series.values[i].x, chart);
+ var y=_this.getY(series.values[i].value, chart);
+ var point = document.createElementNS(dojo.svg.xmlns.svg, "path");
+ point.setAttribute("fill", series.color);
+ point.setAttribute("stroke-width", "0");
+ point.setAttribute("title", series.label + ": " + series.values[i].value);
+ point.setAttribute("d",
+ "M " + x + "," + (y-r) + " " +
+ "Q " + x + "," + y + " " + (x+r) + "," + y + " " +
+ "Q " + x + "," + y + " " + x + "," + (y+r) + " " +
+ "Q " + x + "," + y + " " + (x-r) + "," + y + " " +
+ "Q " + x + "," + y + " " + x + "," + (y-r) + " " +
+ "Z"
+ );
+ chart.dataGroup.appendChild(point);
+ }
+ };
+ plotters[types.Bubble]=function(series, chart){
+ // added param for series[n].value: size
+ var minR=1;
+
+ // do this off the x axis?
+ var min=chart.properties.axes.x.range.min;
+ var max=chart.properties.axes.x.range.max;
+ var ofst=0-min;
+ min+=ofst; max+=ofst; v+=ofst;
+ var xmin=chart.properties.padding.left;
+ var xmax=chart.properties.width-chart.properties.padding.right;
+ var factor=(max-min)/(xmax-xmin)*25;
+
+ for (var i=0; i<series.values.length; i++){
+ var size = series.values[i].size;
+ if (isNaN(parseFloat(size))) size=minR;
+ var point=document.createElementNS(dojo.svg.xmlns.svg, "circle");
+ point.setAttribute("stroke-width", 0);
+ point.setAttribute("fill", series.color);
+ point.setAttribute("fill-opacity", "0.8");
+ point.setAttribute("r", (parseFloat(size)*factor)/2);
+ point.setAttribute("cx", _this.getX(series.values[i].x, chart));
+ point.setAttribute("cy", _this.getY(series.values[i].value, chart));
+ point.setAttribute("title", series.label + ": " + series.values[i].value + " (" + size + ")");
+ chart.dataGroup.appendChild(point);
+ }
+ };
+}();
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/svg/HslColorPicker.js
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/svg/HslColorPicker.js?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/svg/HslColorPicker.js (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/svg/HslColorPicker.js Sat Mar 11 13:18:41 2006
@@ -0,0 +1,139 @@
+/*
+ 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.svg.HslColorPicker");
+
+dojo.require("dojo.widget.HtmlWidget");
+dojo.require("dojo.widget.HslColorPicker");
+dojo.require("dojo.math");
+dojo.require("dojo.svg");
+dojo.require("dojo.graphics.color");
+
+dojo.widget.svg.HslColorPicker=function(){
+ dojo.widget.HslColorPicker.call(this);
+ dojo.widget.HtmlWidget.call(this);
+ dojo.debug("warning: the HslColorPicker is not a finished widget, and is not yet ready for general use");
+ this.hue = "0";
+ this.saturation = "0";
+ this.light = "0";
+ this.storedColor = "#0054aa";
+ var _this = this;
+ this.filterObject = {
+ }
+};
+dojo.inherits(dojo.widget.svg.HslColorPicker, dojo.widget.HtmlWidget);
+dojo.lang.extend(dojo.widget.svg.HslColorPicker, {
+ // widget props
+ templatePath: dojo.uri.dojoUri("src/widget/templates/HslColorPicker.svg"),
+ templateCssPath: dojo.uri.dojoUri("src/widget/templates/HslColorPicker.css"),
+ fillInTemplate: function() {
+ this.height = "131px";
+ this.svgDoc = this.hueNode.ownerDocument;
+ this.leftGradientColorNode = this.hueNode.ownerDocument.getElementById("leftGradientColor");
+ this.rightGradientColorNode = this.hueNode.ownerDocument.getElementById("rightGradientColor");
+ this.hueNode.setAttributeNS(dojo.dom.xmlns.xlink, "href", dojo.uri.dojoUri("src/widget/templates/images/hue.png"));
+ var hsl = dojo.graphics.color.hex2hsl(this.storedColor);
+ this.hue = hsl[0];
+ this.saturation = hsl[1];
+ this.light = hsl[2];
+ this.setSaturationStopColors();
+ //this.setHueSlider();
+ //this.setSaturationLightSlider();
+ },
+ setSaturationStopColors: function() {
+ //this.leftGradientStopColor = "rgb(" + dojo.graphics.color.hsl2rgb(this.hue, 20, 50).join(", ") + ")";
+ //this.rightGradientStopColor = "rgb(" + dojo.graphics.color.hsl2rgb(this.hue, 100, 50).join(", ") + ")";
+ //this.leftGradientStopColor = dojo.graphics.color.hsl2hex(this.hue, 20, 50);
+ //this.rightGradientStopColor = dojo.graphics.color.hsl2hex(this.hue, 100, 50);
+ this.leftGradientStopColor = dojo.graphics.color.rgb2hex(this.hsl2rgb(this.hue, 0, 50));
+ this.rightGradientStopColor = dojo.graphics.color.rgb2hex(this.hsl2rgb(this.hue, 100, 50));
+ this.leftGradientColorNode.setAttributeNS(null,'stop-color',this.leftGradientStopColor);
+ this.rightGradientColorNode.setAttributeNS(null,'stop-color',this.rightGradientStopColor);
+ },
+ setHue: function(hue) {
+ this.hue = hue;
+ },
+ setHueSlider: function() {
+ // FIXME: need to add some padding around the picker so you can see the slider at the top and bottom of the picker)
+ this.hueSliderNode.setAttribute("y", parseInt((this.hue/360) * parseInt(this.height) - 2) + "px" );
+ },
+ setSaturationLight: function(saturation, light) {
+ this.saturation = saturation;
+ this.light = light;
+ },
+ setSaturationLightSlider: function() {
+ // TODO
+ },
+ onHueClick: function(evt) {
+ // get the position that was clicked on the element
+ // FIXME: handle document scrolling, offset
+ var yPosition = parseInt(evt.clientY) - parseInt(evt.target.getAttribute("y"));
+ this.setHue( 360 - parseInt(yPosition*(360/parseInt(this.height))) );
+ this.setSaturationStopColors();
+ this.setStoredColor(dojo.graphics.color.hsl2hex(this.hue, this.saturation, this.light));
+ },
+ onHueDrag: function(evt) {
+ // TODO
+ },
+ onSaturationLightClick: function(evt) {
+ // get the position that was clicked on the element
+ // FIXME: handle document scrolling, offset
+ var xPosition = parseInt(evt.clientX) - parseInt(evt.target.getAttribute("y"));
+ var yPosition = parseInt(evt.clientY) - parseInt(evt.target.getAttribute("y"));
+ saturation = parseInt(parseInt(xPosition)*(101/106));
+ light = parseInt(parseInt(yPosition)*(101/106));
+ this.setSaturationLight(saturation, light);
+ this.setStoredColor(dojo.graphics.color.hsl2hex(this.hue, this.saturation, this.light));
+ },
+ onSaturationLightDrag: function(evt) {
+ // TODO
+ },
+ getStoredColor: function() {
+ return this.storedColor;
+ },
+ setStoredColor: function(rgbHexColor) {
+ this.storedColor = rgbHexColor;
+ dojo.event.topic.publish("/" + this.widgetId + "/setStoredColor", this.filterObject);
+ },
+ hsl2rgb: function(hue, saturation, light)
+ {
+ // hsl2rgb in dojo.graphics.color did not behave hte way I expected, so
+ // I'm using some old code I wrote until I figure out what the issue is
+ // first, check to see if saturation = 0
+ function rgb(q1,q2,hue) {
+ if (hue>360) hue=hue-360;
+ if (hue<0) hue=hue+360;
+ if (hue<60) return (q1+(q2-q1)*hue/60);
+ else if (hue<180) return(q2);
+ else if (hue<240) return(q1+(q2-q1)*(240-hue)/60);
+ else return(q1);
+ }
+ this.rgb = rgb
+
+ if (saturation==0) {
+ return [Math.round(light*255/100), Math.round(light*255/100), Math.round(light*255/100)];
+ } else {
+ light = light/100;
+ saturation = saturation/100;
+ // check to see if light > 0.5
+ if ((light)<0.5) {
+ var temp2 = (light)*(1.0+saturation)
+ } else {
+ var temp2 = (light+saturation-(light*saturation))
+ }
+ temp1 = 2.0*light - temp2;
+ var rgbcolor = [];
+ rgbcolor[0] = Math.round(rgb(temp1,temp2,parseInt(hue)+120)*255);
+ rgbcolor[1] = Math.round(rgb(temp1,temp2,hue)*255);
+ rgbcolor[2] = Math.round(rgb(temp1,temp2,parseInt(hue)-120)*255);
+ return rgbcolor;
+ }
+ }
+});
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/AccordionPanel.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/AccordionPanel.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/AccordionPanel.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/AccordionPanel.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,24 @@
+.AccordionPanel {
+ border: 0px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.AccordionPanelLabel {
+ cursor: pointer;
+ color: white;
+ background-color: #272937;
+ font-family: Verdana, Helvetica, sans-serif;
+ font-size: 0.8em;
+ border: 0px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.AccordionPanelInitialContent {
+ cursor: pointer;
+ background-color: #fffed0;
+ border: 0px;
+ margin: 0px;
+ padding: 0px;
+}
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/AccordionPanel.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/AccordionPanel.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/AccordionPanel.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/AccordionPanel.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,35 @@
+<div class="AccordionPanel">
+ <div dojoAttachPoint="labelNode"
+ dojoOnClick="toggleOpen"
+ class="AccordionPanelLabel"><span>
+ </span></div>
+ <div dojoAttachPoint="initialContentNode"
+ class="AccordionPanelInitialContent"><span>
+
+ </span></div>
+ <div dojoAttachPoint="contentNode"
+ class="AccordionPanelContent"><span>
+
+ </span></div>
+</div>
+<!--
+<table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td dojoAttachPoint="labelNode"
+ dojoOnClick="toggleOpen"
+ style="margin: 0px; padding: 0px; cursor: pointer;">
+ label
+ </td>
+ </tr>
+ <tr>
+ <td dojoAttachPoint="initialContentNode">
+ initial content
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <div dojoAttachPoint="contentNode"></div>
+ </td>
+ </tr>
+</table>
+-->
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HslColorPicker.svg
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HslColorPicker.svg?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HslColorPicker.svg (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HslColorPicker.svg Sat Mar 11 13:18:41 2006
@@ -0,0 +1,30 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.1" baseProfile="full" width="170" height="131" xmlns:html="http://www.w3.org/1999/xhtml">
+ <defs>
+ <linearGradient id="colorGradient" dojoAttachPoint="colorGradientNode" x1="0" x2="131" y1="0" y2="0" gradientUnits="userSpaceOnUse">
+ <stop id="leftGradientColor" dojoAttachPoint="leftGradientColorNode" offset="0%" stop-color="#828282"/>
+ <stop id="rightGradientColor" dojoAttachPoint="rightGradientColorNode" offset="100%" stop-color="#053fff"/>
+ </linearGradient>
+ <linearGradient id="verticalGradient" x1="0" x2="0" y1="0" y2="131" gradientUnits="userSpaceOnUse">
+ <stop offset="0%" style="stop-color:#000000;"/>
+ <stop offset="50%" style="stop-color:#000000;stop-opacity:0;"/>
+ <stop offset="50%" style="stop-color:#ffffff;stop-opacity:0;"/>
+ <stop offset="100%" style="stop-color:#ffffff;"/>
+ </linearGradient>
+ <linearGradient id="sliderGradient">
+ <stop offset="0%" style="stop-color:#000000;"/>
+ <stop offset="15%" style="stop-color:#ffffff;"/>
+ <stop offset="30%" style="stop-color:#000000;"/>
+ <stop offset="45%" style="stop-color:#ffffff;"/>
+ <stop offset="60%" style="stop-color:#000000;"/>
+ <stop offset="75%" style="stop-color:#ffffff;"/>
+ <stop offset="90%" style="stop-color:#000000;"/>
+ </linearGradient>
+</defs>
+ <rect x="0" y="0" width="131px" height="131px" fill="url(#colorGradient)"/>
+ <rect x="0" y="0" width="131px" height="131px" style="fill:url(#verticalGradient);"/>
+ <rect id="saturationLightSlider" dojoAttachPoint="saturationLightSliderNode" x="100" y="100" width="5px" height="5px" style="stroke:url(#sliderGradient);stroke-width:1px;fill-opacity:0;"/>
+ <image xlink:href="images/hue.png" dojoAttachPoint="hueNode" x="140px" y="0px" width="21px" height="131px" dojoAttachEvent="onclick: onHueClick;"/>
+ <rect dojoAttachPoint="hueSliderNode" x="139px" y="40px" width="24px" height="4px" style="stroke-opacity:1;fill-opacity:0;stroke:black;"/>
+</svg>
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButton2Template.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButton2Template.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButton2Template.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButton2Template.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,59 @@
+/* ---- button --- */
+.dojoButton {
+ padding: 0 0 0 0;
+ font-size: 8pt;
+ white-space: nowrap;
+ cursor: pointer;
+}
+
+.dojoButton .dojoButtonContents {
+ padding: 2px 2px 2px 2px;
+ text-align: center; /* if icon and label are split across two lines, center icon */
+ color: white;
+}
+
+.dojoButtonLeftPart .dojoButtonContents {
+ padding-right: 8px;
+}
+
+.dojoButtonDisabled {
+ cursor: url("images/no.gif"), default;
+}
+
+
+.dojoButtonContents img {
+ vertical-align: middle; /* if icon and label are on same line, center them */
+}
+
+/* -------- colors ------------ */
+
+.dojoButtonHover .dojoButtonContents {
+}
+
+.dojoButtonDepressed .dojoButtonContents {
+ font-style: italic;
+ color: yellow;
+}
+
+.dojoButtonDisabled .dojoButtonContents {
+ color: #eeeeee;
+}
+
+
+/* ---------- drop down button specific ---------- */
+
+/* border between label and arrow (for drop down buttons */
+.dojoButton .border {
+ width: 1px;
+ background: gray;
+}
+
+/* button arrow */
+.dojoButton .downArrow {
+ padding-left: 10px;
+ text-align: center;
+}
+
+.dojoButton.disabled .downArrow {
+ cursor : default;
+}
\ No newline at end of file
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButton2Template.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButton2Template.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButton2Template.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButton2Template.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,6 @@
+<div class="dojoButton" style="position:relative;" dojoAttachEvent="onMouseOver; onMouseOut; onMouseDown; onMouseUp; onClick:buttonClick;">
+ <div class="dojoButtonContents" align=center dojoAttachPoint="containerNode" style="position:absolute;z-index:2;"></div>
+ <img dojoAttachPoint="leftImage" style="position:absolute;left:0px;">
+ <img dojoAttachPoint="centerImage" style="position:absolute;z-index:1;">
+ <img dojoAttachPoint="rightImage" style="position:absolute;top:0px;right:0px;">
+</div>
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButtonTemplate.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButtonTemplate.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButtonTemplate.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButtonTemplate.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,83 @@
+/* ---- button --- */
+.dojoButton {
+ padding: 0 0 0 0;
+ margin: 0 0 0 0;
+ font-size: 8pt;
+ white-space: nowrap;
+ cursor: pointer;
+}
+
+.dojoButton.dojoDisabled {
+ cursor: default;
+}
+
+.dojoButton a {
+ color: black;
+ text-decoration: none;
+}
+.dojoButton.dojoDisabled a {
+ color: #999;
+}
+
+.dojoButton .label {
+ padding-right: 5px;
+ text-align: center; /* if icon and label are split across two lines, center icon */
+}
+
+.dojoButton img {
+ vertical-align: middle; /* if icon and label are on same line, center them */
+}
+
+.dojoButton td, .dojoButtonWrapper td {
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ position: relative;
+}
+.dojoButton table {
+ padding: 0 0 0 0;
+ cell-spacing: 0px;
+ cell-padding: 0px;
+}
+
+/* -------- colors ------------ */
+.dojoButtonNoHover {
+}
+
+.dojoButtonHover {
+}
+
+.dojoButton.disabled, .dojoButton.disabled * {
+ color : #999;
+ cursor : default;
+ background-color : #f4f4f4;
+}
+
+/** ----- container for the button and stub to attach the menu below it ----- **/
+.dojoButtonWrapper {
+ border-spacing: 0px;
+ cell-spacing: 0px;
+ cell-padding: 0px;
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ display: inline;
+ margin-right: 10px;
+ text-decoration: none;
+}
+
+/* ---------- drop down button specific ---------- */
+
+/* border between label and arrow (for drop down buttons */
+.dojoButton .border {
+ width: 1px;
+ background: gray;
+}
+
+/* button arrow */
+.dojoButton .downArrow {
+ padding-left: 10px;
+ text-align: center;
+}
+
+.dojoButton.disabled .downArrow {
+ cursor : default;
+}
\ No newline at end of file
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButtonTemplate.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButtonTemplate.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButtonTemplate.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlButtonTemplate.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,3 @@
+<button style="padding-top: 2px; padding-bottom: 2px;" class='dojoButton dojoButtonNoHover' resizeHandle='true'
+ dojoAttachEvent='onMouseOver; onMouseOut; onClick;'
+ dojoAttachPoint='containerNode'>${this.label}</button>
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlCiviCrmDatePicker.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlCiviCrmDatePicker.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlCiviCrmDatePicker.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlCiviCrmDatePicker.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,12 @@
+<table cellpadding="0" cellspacing="0" border="0" width="400">
+ <tr>
+ <td id="dateHolderTd" width="200">
+ </td>
+ <td id="timeHolderTd" width="200">
+ </td>
+ </tr>
+ <tr style="display: none;" id="formItemsTr">
+ <td id="formItemsTd"> </td>
+ <td> </td>
+ </tr>
+</table>
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlComboBox.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlComboBox.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlComboBox.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlComboBox.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,39 @@
+input.comboBoxInput {
+ font-size: 0.8em;
+ border: 0px;
+}
+
+.comboBoxOptions {
+ font-family: Verdana, Helvetica, Garamond, sans-serif;
+ font-size: 0.7em;
+ background-color: white;
+ border: 1px solid #afafaf;
+ position: absolute;
+ z-index: 1000;
+ overflow: auto;
+ -moz-opacity: 0;
+ cursor: default;
+}
+
+table.dojoComboBox {
+ border: 1px solid #afafaf;
+}
+
+.cbItem {
+ padding-left: 2px;
+ padding-top: 2px;
+ margin: 0px;
+}
+
+.cbItemEven {
+ background-color: #f4f4f4;
+}
+
+.cbItemOdd {
+ background-color: white;
+}
+
+.cbItemHighlight {
+ background-color: #63709A;
+ color: white;
+}
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlComboBox.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlComboBox.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlComboBox.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlComboBox.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,34 @@
+<div style="position: relative; z-index: 100;">
+ <input type="hidden" name="" value=""
+ dojoAttachPoint="comboBoxValue">
+ <input type="hidden" name="" value=""
+ dojoAttachPoint="comboBoxSelectionValue">
+ <table class="dojoComboBox"
+ cellpadding="0"
+ cellmargin="0"
+ border="0"
+ dojoAttachPoint="cbTableNode"
+ dojoAttachEvent="onClick: killEvent;">
+ <tr valign="top">
+ <td width=100%>
+ <input type="text" class="comboBoxInput"
+ dojoAttachEvent="keyDown: onKeyDown; keyUp: onKeyUp;"
+ dojoAttachPoint="textInputNode"
+ style="width: 100%;">
+ </td>
+ <td>
+ <img border="0"
+ hspace="0"
+ vspace="0"
+ dojoAttachPoint="downArrowNode"
+ dojoAttachEvent="onMouseUp: handleArrowClick;"
+ src="${dojoRoot}/src/widget/templates/images/combo_box_arrow.png">
+ </td>
+ </tr>
+ </table>
+ <div dojoAttachPoint="optionsListWrapper" style="position:relative;" tabindex="-1">
+ <div class="comboBoxOptions" dojoAttachPoint="optionsListNode"
+ dojoAttachEvent="onClick: selectOption" style="display:none;" tabindex="-1">
+ </div>
+ </div>
+</div>
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlComboButton2Template.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlComboButton2Template.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlComboButton2Template.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlComboButton2Template.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,18 @@
+<div class="dojoButton" style="position:relative;top:0px;left:0px; text-align:none;">
+
+ <div dojoAttachPoint="leftPart" class="dojoButtonLeftPart" style="position:absolute;left:0px;top:0px;"
+ dojoAttachEvent="onMouseOver:leftOver; onMouseOut:leftOut; onMouseUp:leftUp; onClick:leftClick;">
+ <div class="dojoButtonContents" dojoAttachPoint="containerNode" style="position:absolute;top:0px;right:0px;z-index:2;"></div>
+ <img dojoAttachPoint="leftImage" style="position:absolute;left:0px;top:0px;">
+ <img dojoAttachPoint="centerImage" style="position:absolute;right:0px;top:0px;z-index:1;">
+ </div>
+
+ <div dojoAttachPoint="rightPart" class="dojoButtonRightPart" style="position:absolute;top:0px;right:0px;"
+ dojoAttachEvent="onMouseOver:rightOver; onMouseOut:rightOut; onMouseUp:rightUp; onClick:rightClick;">
+ <img dojoAttachPoint="arrowBackgroundImage" style="position:absolute;top:0px;left:0px;z-index:1;">
+ <img src="${dojoRoot}/src/widget/templates/images/whiteDownArrow.gif"
+ style="z-index:2;position:absolute;left:3px;top:50%;">
+ <img dojoAttachPoint="rightImage" style="position:absolute;top:0px;right:0px;">
+ </div>
+
+</div>
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlContextMenuTemplate.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlContextMenuTemplate.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlContextMenuTemplate.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlContextMenuTemplate.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,3 @@
+<ul class="dojoContextMenu"
+ dojoAttachPoint="containerNode">
+</ul>
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDatePicker.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDatePicker.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDatePicker.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDatePicker.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,143 @@
+.calendarContainer {
+/* border:1px solid #566f8f;*/
+}
+
+.calendarBodyContainer {
+ width:160px;
+ background: #7591bc url("images/dpBg.gif") top left repeat-x;
+}
+
+.calendarBodyContainer thead tr td {
+ color:#293a4b;
+ font:bold 0.75em Helvetica, Arial, Verdana, sans-serif;
+ text-align:center;
+ padding:0.25em;
+ background: url("images/dpHorizLine.gif") bottom left repeat-x;
+}
+
+.calendarBodyContainer tbody tr td {
+ color:#fff;
+ font:bold 0.7em Helvetica, Arial, Verdana, sans-serif;
+ text-align:center;
+ padding:0.4em;
+ background: url("images/dpVertLine.gif") top right repeat-y;
+ cursor:pointer;
+ cursor:hand;
+}
+
+
+.monthWrapper {
+ padding-bottom:2px;
+ background: url("images/dpHorizLine.gif") bottom left repeat-x;
+}
+
+.monthContainer {
+ width:100%;
+}
+
+.monthLabelContainer {
+ text-align:center;
+ font:bold 0.75em Helvetica, Arial, Verdana, sans-serif;
+ background: url("images/dpMonthBg.png") repeat-x top left !important;
+ color:#293a4b;
+ padding:0.25em;
+}
+
+.monthCurve {
+ width:12px;
+}
+
+.monthCurveTL {
+ background: url("images/dpCurveTL.png") no-repeat top left !important;
+}
+
+.monthCurveTR {
+ background: url("images/dpCurveTR.png") no-repeat top left !important;
+}
+
+
+.yearWrapper {
+ background: url("images/dpHorizLineFoot.gif") top left repeat-x;
+ padding-top:2px;
+}
+
+.yearContainer {
+ width:100%;
+}
+
+.yearContainer td {
+ background:url("images/dpYearBg.png") top left repeat-x;
+}
+
+.yearContainer .yearLabel {
+ margin:0;
+ padding:0.45em 0 0.45em 0;
+ color:#fff;
+ font:bold 0.75em Helvetica, Arial, Verdana, sans-serif;
+ text-align:center;
+}
+
+.curveBL {
+ background: url("images/dpCurveBL.png") bottom left no-repeat !important;
+ width:9px !important;
+ padding:0;
+ margin:0;
+}
+
+.curveBR {
+ background: url("images/dpCurveBR.png") bottom left no-repeat !important;
+ width:9px !important;
+ padding:0;
+ margin:0;
+}
+
+
+.previousMonth {
+ background-color:#6782a8 !important;
+}
+
+.currentMonth {
+}
+
+.nextMonth {
+ background-color:#6782a8 !important;
+}
+
+.currentDate {
+ text-decoration:underline;
+ font-style:italic;
+}
+
+.selectedItem {
+ background-color:#fff !important;
+ color:#6782a8 !important;
+}
+
+.yearLabel .selectedYear {
+ padding:0.2em;
+ background-color:#9ec3fb !important;
+}
+
+.nextYear, .previousYear {
+ cursor:pointer;cursor:hand;
+ margin:0 0.55em;
+}
+
+.incrementControl {
+ cursor:pointer;cursor:hand;
+ width:1em;
+}
+
+.increase {
+ float:right;
+}
+
+.decrease {
+ float:left;
+}
+
+.lastColumn {
+ background-image:none !important;
+}
+
+
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDatePicker.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDatePicker.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDatePicker.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDatePicker.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,141 @@
+<div class="datePickerContainer" dojoAttachPoint="datePickerContainerNode">
+ <table cellspacing="0" cellpadding="0" class="calendarContainer">
+ <thead>
+ <tr>
+ <td class="monthWrapper" valign="top">
+ <table class="monthContainer" cellspacing="0" cellpadding="0" border="0">
+ <tr>
+ <td class="monthCurve monthCurveTL" valign="top"></td>
+ <td class="monthLabelContainer" valign="top">
+ <span dojoAttachPoint="increaseWeekNode"
+ dojoAttachEvent="onClick: onIncrementWeek;"
+ class="incrementControl increase">
+ <img src="${dojoRoot}/src/widget/templates/images/incrementMonth.png"
+ alt="↓" style="width:7px;height:5px;" />
+ </span>
+ <span
+ dojoAttachPoint="increaseMonthNode"
+ dojoAttachEvent="onClick: onIncrementMonth;" class="incrementControl increase">
+ <img src="${dojoRoot}/src/widget/templates/images/incrementMonth.png"
+ alt="↓" dojoAttachPoint="incrementMonthImageNode">
+ </span>
+ <span
+ dojoAttachPoint="decreaseWeekNode"
+ dojoAttachEvent="onClick: onIncrementWeek;"
+ class="incrementControl decrease">
+ <img src="${dojoRoot}/src/widget/templates/images/decrementMonth.png" alt="↑" style="width:7px;height:5px;" />
+ </span>
+ <span
+ dojoAttachPoint="decreaseMonthNode"
+ dojoAttachEvent="onClick: onIncrementMonth;" class="incrementControl decrease">
+ <img src="${dojoRoot}/src/widget/templates/images/decrementMonth.png"
+ alt="↑" dojoAttachPoint="decrementMonthImageNode">
+ </span>
+ <span dojoAttachPoint="monthLabelNode" class="month">July</span>
+ </td>
+ <td class="monthCurve monthCurveTR" valign="top"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td colspan="3">
+ <table class="calendarBodyContainer" cellspacing="0" cellpadding="0" border="0">
+ <thead>
+ <tr>
+ <td>S</td>
+ <td>M</td>
+ <td>T</td>
+ <td>W</td>
+ <td>T</td>
+ <td>F</td>
+ <td>S</td>
+ </tr>
+ </thead>
+ <tbody dojoAttachPoint="calendarDatesContainerNode"
+ dojoAttachEvent="onClick: onSetDate;">
+ <tr dojoAttachPoint="calendarRow0">
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr dojoAttachPoint="calendarRow1">
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr dojoAttachPoint="calendarRow2">
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr dojoAttachPoint="calendarRow3">
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr dojoAttachPoint="calendarRow4">
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr dojoAttachPoint="calendarRow5">
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td colspan="3" class="yearWrapper">
+ <table cellspacing="0" cellpadding="0" border="0" class="yearContainer">
+ <tr>
+ <td class="curveBL" valign="top"></td>
+ <td valign="top">
+ <h3 class="yearLabel">
+ <span dojoAttachPoint="previousYearLabelNode"
+ dojoAttachEvent="onClick: onIncrementYear;" class="previousYear"></span>
+ <span class="selectedYear" dojoAttachPoint="currentYearLabelNode"></span>
+ <span dojoAttachPoint="nextYearLabelNode"
+ dojoAttachEvent="onClick: onIncrementYear;" class="nextYear"></span>
+ </h3>
+ </td>
+ <td class="curveBR" valign="top"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </tfoot>
+ </table>
+
+</div>
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDialog.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDialog.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDialog.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDialog.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,13 @@
+<div id="${this.widgetId}" class="dojoDialog" dojoAttachPoint="wrapper">
+
+ <span dojoAttachPoint="tabStart"
+ dojoOnFocus="trapTabs"
+ dojoOnBlur="clearTrap" tabindex="0"></span>
+
+ <div dojoAttachPoint="containerNode" style=" position: relative; z-index: 2;"></div>
+
+ <span dojoAttachPoint="tabEnd"
+ dojoOnFocus="trapTabs"
+ dojoOnBlur="clearTrap" tabindex="0"></span>
+
+</div>
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDropDownButtonTemplate.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDropDownButtonTemplate.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDropDownButtonTemplate.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlDropDownButtonTemplate.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,9 @@
+<button dojoAttachPoint="button" class="dojoButton dojoButtonNoHover" dojoAttachEvent="onMouseOver: ; onMouseOut: ; onClick: ;">
+ <table dojoAttachPoint="table" style="margin:0 0 0 0;"><tr>
+ <td class="label" dojoAttachPoint="labelCell"></td>
+ <td class="border" dojoAttachPoint="borderCell"></td>
+ <td class="downArrow" dojoAttachPoint="arrowCell">
+ <img dojoAttachPoint="arrow">
+ </td>
+ </tr></table>
+</button>
\ No newline at end of file
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlFisheyeList.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlFisheyeList.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlFisheyeList.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlFisheyeList.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,27 @@
+.dojoHtmlFisheyeListItemLabel {
+ font-family: Arial, Helvetica, sans-serif;
+ background-color: #eee;
+ border: 2px solid #666;
+ padding: 2px;
+ text-align: center;
+ position: absolute;
+ display: none;
+}
+
+.dojoHtmlFisheyeListItemLabel.selected {
+ display: block;
+}
+
+.dojoHtmlFisheyeListItemImage {
+ border: 0px;
+ position: absolute;
+}
+
+.dojoHtmlFisheyeListItem {
+ position: absolute;
+ z-index: 2;
+}
+
+.dojoHtmlFisheyeListBar {
+ position: relative;
+}
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlFloatingPane.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlFloatingPane.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlFloatingPane.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlFloatingPane.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,89 @@
+
+.dojoFloatingPane {
+ /* essential css */
+ position: absolute;
+ overflow: visible; /* so drop shadow is displayed */
+ z-index: 5;
+ -moz-box-sizing: border-box;
+ -khtml-box-sizing: border-box;
+
+ /* styling css */
+ border: 1px solid;
+ border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;
+ background-color: ThreeDFace;
+}
+
+.dojoFloatingPaneTitleBar {
+ /* essential css */
+ z-index: 2;
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+
+ /* styling css */
+ vertical-align: middle;
+ height: 22px;
+ color: CaptionText;
+ font: small-caption;
+ background-color: #7596c6;
+ cursor: default;
+}
+.dojoFloatingPaneTitleText {
+ padding: 2px 4px 2px 2px;
+}
+
+/* minimize/maximize icons are specified by CSS only */
+.dojoFloatingPaneMinimizeIcon,
+.dojoFloatingPaneMaximizeIcon,
+.dojoFloatingPaneRestoreIcon,
+.dojoFloatingPaneCloseIcon {
+ vertical-align: middle;
+ height: 22px;
+ width: 22px;
+ float: right;
+}
+.dojoFloatingPaneMinimizeIcon {
+ background-image: url(images/floatingPaneMinimize.gif);
+}
+.dojoFloatingPaneMaximizeIcon {
+ background-image: url(images/floatingPaneMaximize.gif);
+}
+.dojoFloatingPaneRestoreIcon {
+ background-image: url(images/floatingPaneRestore.gif);
+}
+.dojoFloatingPaneCloseIcon {
+ background-image: url(images/floatingPaneClose.gif);
+}
+
+/* bar at bottom of window that holds resize handle */
+.dojoFloatingPaneResizebar {
+ /* essential css */
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ height: 13px;
+ z-index: 2;
+
+ /* styling css */
+ background-color: ThreeDFace;
+}
+
+/* the part that holds the actual content of the floating pane (text or whatever) */
+.dojoFloatingPaneClient {
+ /* essential css */
+ position: relative;
+ width: 100%;
+ height: 100%;
+ -moz-box-sizing: border-box;
+ -khtml-box-sizing: border-box;
+ z-index: 2;
+ overflow: auto;
+
+ /* styling css */
+ background-color: ThreeDFace;
+ padding: 8px;
+ font-family: Verdana, Helvetica, Garamond, sans-serif;
+ font-size: 12px;
+}
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlFloatingPane.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlFloatingPane.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlFloatingPane.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlFloatingPane.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,21 @@
+<div id="${this.widgetId}" class="dojoFloatingPane" dojoAttachEvent="onMouseDown">
+ <div dojoAttachPoint="titleBar" class="dojoFloatingPaneTitleBar" style="display:none">
+ <img dojoAttachPoint="titleBarIcon" src="${this.iconSrc}" class="dojoTitleBarIcon">
+ <div dojoAttachPoint="closeAction" dojoAttachEvent="onClick:closeWindow"
+ class="dojoFloatingPaneCloseIcon"></div>
+ <div dojoAttachPoint="restoreAction" dojoAttachEvent="onClick:restoreWindow"
+ class="dojoFloatingPaneRestoreIcon"></div>
+ <div dojoAttachPoint="maximizeAction" dojoAttachEvent="onClick:maximizeWindow"
+ class="dojoFloatingPaneMaximizeIcon"></div>
+ <div dojoAttachPoint="minimizeAction" dojoAttachEvent="onClick:minimizeWindow"
+ class="dojoFloatingPaneMinimizeIcon"></div>
+ <div dojoAttachPoint="titleBarText" class="dojoFloatingPaneTitleText">${this.title}</div>
+ </div>
+
+ <div dojoAttachPoint="containerNode" class="dojoFloatingPaneClient">
+ </div>
+
+ <div dojoAttachPoint="resizeBar" class="dojoFloatingPaneResizebar">
+ </div>
+
+</div>
\ No newline at end of file
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlInlineEditBox.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlInlineEditBox.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlInlineEditBox.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlInlineEditBox.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,24 @@
+.editLabel {
+ font-size : small;
+ padding : 0 5px;
+ display : none;
+}
+
+.editableRegion {
+ background-color : #ffc !important;
+ cursor : pointer;
+ _cursor : hand;
+}
+
+.editableRegion .editLabel {
+ display : inline;
+}
+
+.editableTextareaRegion .editLabel {
+ display : block;
+}
+
+.inlineEditBox {
+ /*background-color : #ffc;*/
+ display : inline;
+}
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlInlineEditBox.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlInlineEditBox.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlInlineEditBox.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlInlineEditBox.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,6 @@
+<form class="inlineEditBox" style="display: none" dojoAttachPoint="form" dojoAttachEvent="onSubmit:saveEdit; onReset:cancelEdit; onKeyUp: checkForValueChange;">
+ <input type="text" dojoAttachPoint="text" style="display: none;" />
+ <textarea dojoAttachPoint="textarea" style="display: none;"></textarea>
+ <input type="submit" value="Save" dojoAttachPoint="submitButton" />
+ <input type="reset" value="Cancel" dojoAttachPoint="cancelButton" />
+</form>
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlLayoutPane.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlLayoutPane.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlLayoutPane.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlLayoutPane.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,13 @@
+.dojoLayoutPane {
+ display: block;
+ position: relative;
+}
+
+.dojoAlignNone, .dojoAlignLeft, .dojoAlignRight,
+.dojoAlignTop, .dojoAlignBottom {
+ overflow: hidden;
+}
+
+.dojoAlignClient {
+ overflow: auto;
+}
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMenu2.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMenu2.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMenu2.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMenu2.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,129 @@
+
+.dojoPopupMenu2 {
+ position: absolute;
+ border: 1px solid;
+ border-color: ThreeDLightShadow ThreeDDarkShadow ThreeDDarkShadow ThreeDLightShadow;
+}
+
+.dojoPopupMenu2Client {
+ border: 1px solid;
+ border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;
+ background-color: ThreeDFace;
+ padding: 1px;
+}
+
+.dojoMenuItem2 {
+ position: relative;
+ white-space: nowrap;
+ font: menu;
+ color: WindowText;
+ margin: 0;
+}
+
+.dojoMenuItem2 span {
+ margin: 0;
+}
+
+.dojoMenuItem2Hover {
+ background-color: Highlight;
+ color: HighlightText;
+}
+
+.dojoMenuItem2Icon {
+ position: absolute;
+ background-position: center center;
+ background-repeat: no-repeat;
+ z-index: 1;
+}
+
+.dojoMenuItem2Label {
+ position: absolute;
+ vertical-align: middle;
+ z-index: 1;
+}
+
+.dojoMenuItem2Label span {
+ position: relative;
+ vertical-align: middle;
+ z-index: 2;
+}
+
+.dojoMenuItem2Label span span {
+ position: absolute;
+ color: ThreeDHighlight;
+ display: none;
+ left: 1px;
+ top: 1px;
+ z-index: -2;
+}
+
+.dojoMenuItem2Accel {
+ position: absolute;
+ vertical-align: middle;
+ z-index: 1;
+}
+
+.dojoMenuItem2Accel span {
+ position: relative;
+ vertical-align: middle;
+ z-index: 2;
+}
+
+.dojoMenuItem2Accel span span {
+ position: absolute;
+ color: ThreeDHighlight;
+ display: none;
+ left: 1px;
+ top: 1px;
+ z-index: -2;
+}
+
+.dojoMenuItem2Disabled .dojoMenuItem2Label span,
+.dojoMenuItem2Disabled .dojoMenuItem2Accel span {
+ color: ThreeDShadow;
+}
+
+.dojoMenuItem2Disabled .dojoMenuItem2Label span span,
+.dojoMenuItem2Disabled .dojoMenuItem2Accel span span {
+ color: ThreeDHighlight;
+ display: block;
+}
+
+.dojoMenuItem2Hover .dojoMenuItem2Label span span,
+.dojoMenuItem2Hover .dojoMenuItem2Accel span span {
+ display: none;
+}
+
+.dojoMenuItem2Submenu {
+ position: absolute;
+ background-position: center center;
+ background-repeat: no-repeat;
+}
+
+.dojoMenuItem2Target {
+ position: absolute;
+ z-index: 10;
+ font-size: 1px;
+ background-image: url('images/transparent.gif');
+ cursor: pointer;
+ _cursor: hand;
+}
+
+.dojoMenuSeparator2 {
+ font-size: 1px;
+ margin: 0;
+}
+
+.dojoMenuSeparator2Top {
+ height: 50%;
+ border-bottom: 1px solid ThreeDShadow;
+ margin: 0px 2px;
+ font-size: 1px;
+}
+
+.dojoMenuSeparator2Bottom {
+ height: 50%;
+ border-top: 1px solid ThreeDHighlight;
+ margin: 0px 2px;
+ font-size: 1px;
+}
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMenuItemTemplate.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMenuItemTemplate.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMenuItemTemplate.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMenuItemTemplate.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,2 @@
+<div dojoAttachPoint="labelNode" dojoAttachEvent="onClick">
+</div>
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMonthlyCalendar.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMonthlyCalendar.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMonthlyCalendar.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMonthlyCalendar.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,91 @@
+.datePickerContainer {
+ margin:0.5em 2em 0.5em 0;
+ /*width:10em;*/
+ float:left;
+}
+
+.previousMonth {
+ background-color:#bbbbbb;
+}
+
+.currentMonth {
+ background-color:#8f8f8f;
+}
+
+.nextMonth {
+ background-color:#eeeeee;
+}
+
+.currentDate {
+ text-decoration:underline;
+ font-style:italic;
+}
+
+.selectedItem {
+ background-color:#3a3a3a;
+ color:#ffffff;
+}
+
+.calendarContainer {
+ border-collapse:collapse;
+ border-spacing:0;
+ border-bottom:1px solid #e6e6e6;
+ overflow: hidden;
+ text-align: right;
+}
+
+.calendarContainer thead{
+ border-bottom:1px solid #e6e6e6;
+}
+
+.calendarContainer tbody * td {
+ height: 100px;
+ border: 1px solid gray;
+}
+
+.calendarContainer td {
+ width: 100px;
+ padding: 2px;
+ vertical-align: top;
+}
+
+.monthLabel {
+ font-size:0.9em;
+ font-weight:400;
+ margin:0;
+ text-align:center;
+}
+
+.monthLabel .month {
+ padding:0 0.4em 0 0.4em;
+}
+
+.yearLabel {
+ font-size:0.9em;
+ font-weight:400;
+ margin:0.25em 0 0 0;
+ text-align:right;
+ color:#a3a3a3;
+}
+
+.yearLabel .selectedYear {
+ color:#000;
+ padding:0 0.2em;
+}
+
+.nextYear, .previousYear {
+ cursor:pointer;cursor:hand;
+}
+
+.incrementControl {
+ cursor:pointer;cursor:hand;
+ width:1em;
+}
+
+.dojoMonthlyCalendarEvent {
+ font-size:0.7em;
+ overflow: hidden;
+ font-color: grey;
+ white-space: nowrap;
+ text-align: left;
+}
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMonthlyCalendar.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMonthlyCalendar.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMonthlyCalendar.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlMonthlyCalendar.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,110 @@
+<div class="datePickerContainer" dojoAttachPoint="datePickerContainerNode">
+ <h3 class="monthLabel">
+ <!--
+ <span
+ dojoAttachPoint="decreaseWeekNode"
+ dojoAttachEvent="onClick: onIncrementWeek;"
+ class="incrementControl">
+ <img src="${dojoRoot}/src/widget/templates/decrementWeek.gif" alt="↑" />
+ </span>
+ -->
+ <span
+ dojoAttachPoint="decreaseMonthNode"
+ dojoAttachEvent="onClick: onIncrementMonth;" class="incrementControl">
+ <img src="${dojoRoot}/src/widget/templates/decrementMonth.gif"
+ alt="↑" dojoAttachPoint="decrementMonthImageNode">
+ </span>
+ <span dojoAttachPoint="monthLabelNode" class="month">July</span>
+ <span
+ dojoAttachPoint="increaseMonthNode"
+ dojoAttachEvent="onClick: onIncrementMonth;" class="incrementControl">
+ <img src="${dojoRoot}/src/widget/templates/incrementMonth.gif"
+ alt="↓" dojoAttachPoint="incrementMonthImageNode">
+ </span>
+ <!--
+ <span dojoAttachPoint="increaseWeekNode"
+ dojoAttachEvent="onClick: onIncrementWeek;"
+ class="incrementControl">
+ <img src="${dojoRoot}/src/widget/templates/incrementWeek.gif"
+ alt="↓" />
+ </span>
+ -->
+ </h3>
+ <table class="calendarContainer">
+ <thead>
+ <tr>
+ <td>Sunday</td>
+ <td>Monday</td>
+ <td>Tuesday</td>
+ <td>Wednesday</td>
+ <td>Thursday</td>
+ <td>Friday</td>
+ <td>Saturday</td>
+ </tr>
+ </thead>
+ <tbody dojoAttachPoint="calendarDatesContainerNode"
+ dojoAttachEvent="onClick: onSetDate;">
+ <tr dojoAttachPoint="calendarRow0">
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr dojoAttachPoint="calendarRow1">
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr dojoAttachPoint="calendarRow2">
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr dojoAttachPoint="calendarRow3">
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr dojoAttachPoint="calendarRow4">
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr dojoAttachPoint="calendarRow5">
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+ <h3 class="yearLabel">
+ <span dojoAttachPoint="previousYearLabelNode"
+ dojoAttachEvent="onClick: onIncrementYear;" class="previousYear"></span>
+ <span class="selectedYear" dojoAttachPoint="currentYearLabelNode"></span>
+ <span dojoAttachPoint="nextYearLabelNode"
+ dojoAttachEvent="onClick: onIncrementYear;" class="nextYear"></span>
+ </h3>
+</div>
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlResizableTextarea.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlResizableTextarea.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlResizableTextarea.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlResizableTextarea.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,15 @@
+div.statusBar {
+ background-color: ThreeDFace;
+ height: 28px;
+ padding: 1px;
+ overflow: hidden;
+ font-size: 12px;
+}
+
+div.statusPanel {
+ background-color: ThreeDFace;
+ border: 1px solid;
+ border-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow;
+ margin: 1px;
+ padding: 2px 6px;
+}
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlResizableTextarea.html
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlResizableTextarea.html?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlResizableTextarea.html (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlResizableTextarea.html Sat Mar 11 13:18:41 2006
@@ -0,0 +1,14 @@
+<div>
+ <div style="border: 2px solid black; width: 90%; height: 200px;"
+ dojoAttachPoint="rootLayoutNode">
+ <div dojoAttachPoint="textAreaContainerNode"
+ style="border: 0px; margin: 0px; overflow: hidden;">
+ </div>
+ <div dojoAttachPoint="statusBarContainerNode" class="statusBar">
+ <div dojoAttachPoint="statusLabelNode"
+ class="statusPanel"
+ style="padding-right: 0px; z-index: 1;">drag to resize</div>
+ <div dojoAttachPoint="resizeHandleNode"></div>
+ </div>
+ </div>
+</div>
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlResizeHandle.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlResizeHandle.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlResizeHandle.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlResizeHandle.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,9 @@
+.dojoHtmlResizeHandle {
+ float: right;
+ width: 13px;
+ height: 13px;
+ z-index: 20;
+ cursor: nw-resize;
+ background-image: url(grabCorner.gif);
+ line-height: 0px;
+}
\ No newline at end of file
Added: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlSimpleDropdownButtons.css
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlSimpleDropdownButtons.css?rev=385171&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlSimpleDropdownButtons.css (added)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/html/dojo/src/widget/templates/HtmlSimpleDropdownButtons.css Sat Mar 11 13:18:41 2006
@@ -0,0 +1,100 @@
+ul.dojoSimpleDropdownButtons {
+ margin : 0;
+ padding : 5px 0;
+}
+
+ul.dojoSimpleDropdownButtons li {
+ display : inline;
+ margin-right : 5px;
+ padding : 2px 0;
+}
+
+ul.dojoSimpleDropdownButtons li a {
+ padding : 2px 9px;
+ border : 2px outset #ccc;
+ border-right-width : 1px;
+ background : #f4f4f4;
+ color : #333;
+ text-decoration : none;
+}
+
+ul.dojoSimpleDropdownButtons li ul {
+ display : none;
+}
+
+ul.dojoSimpleDropdownButtons li a.disabled {
+ color : #999;
+ cursor : default;
+}
+
+ul.dojoSimpleDropdownButtons li .downArrow {
+ display : inline;
+ padding : 2px 4px;
+ border : 2px outset #ccc;
+ border-left : 0;
+ background : #f4f4f4 url(images/dropdownButtonsArrow.gif) no-repeat 4px 9px;
+ text-decoration : none;
+ color : black;
+ cursor : pointer;
+ _cursor : hand;
+}
+
+ul.dojoSimpleDropdownButtons li .downArrow.disabled {
+ background-image : url(images/dropdownButtonsArrow-disabled.gif);
+ cursor : default;
+}
+
+ul.dojoSimpleDropdownButtons li a:hover,
+ul.dojoSimpleDropdownButtons li span.downArrow:hover {
+ color : black;
+ background-color : #ddd;
+}
+
+ul.dojoSimpleDropdownButtons li .downArrow.pressed, ul.dojoSimpleDropdownButtons li .downArrow:focus {
+ border-style : inset;
+ background-position : 5px 10px;
+ padding : 2px 4px;
+}
+
+ul.dojoSimpleDropdownButtons li a.disabled:hover,
+ul.dojoSimpleDropdownButtons li span.downArrow.disabled:hover {
+ color : #999;
+ background-color : #f4f4f4;
+}
+
+ul.dojoSimpleDropdownButtons li a:focus {
+ padding : 3px 8px 1px 10px;
+ color : #333;
+ border-style : inset;
+}
+
+/* Menu
+ ******************** */
+ul.dojoSimpleDropdownButtonsMenu {
+ position : absolute;
+ margin : 0;
+ _margin : -2px;
+ padding : 0;
+ display : none;
+ border : 1px solid #aaa;
+ background : #f4f4f4;
+ list-style : none;
+ z-index : 99;
+}
+
+ul.dojoSimpleDropdownButtonsMenu li {
+ _display : inline;
+}
+
+ul.dojoSimpleDropdownButtonsMenu a {
+ display : block;
+ padding : 2px 5px;
+ color : #333;
+ text-decoration : none;
+}
+
+ul.dojoSimpleDropdownButtonsMenu a:hover {
+ background : #ddd;
+ color : black;
+}
+
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org