Palette.js 4.4 KB

12345678
  1. /*
  2. Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. if(!dojo._hasResource["jeus.Palette"]){dojo._hasResource["jeus.Palette"]=true;dojo.provide("jeus.Palette");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.require("dijit.form._FormWidget");dojo.declare("jeus.Palette",dijit.form._FormWidget,{widgetsInTemplate:true,templateString:"<div class=\"palette\">"+"<input dojoAttachPoint=\"focusNode\" type=\"hidden\" name=\"${name}\" value=\"\" />"+"<table class=\"paletteTable\">"+"<tr><th class=\"available-header\">${availableTitle}</th>"+"<th class=\"controls\"></th>"+"<th class=\"selected-header\">${selectedTitle}</th></tr>"+"<tr><td class=\"available-cell\"><select dojoAttachPoint=\"availableNode\" dojoAttachEvent=\"onchange:_onChangeAvailable\" multiple=\"multiple\" size=\"${size}\">"+"<option></option>"+"</select></td>"+"<td class=\"controls\">"+"<img dojoAttachEvent=\"onclick:_select\" dojoAttachPoint=\"selectImg\" alt=\"select\" src=\"\"/>"+"<img dojoAttachEvent=\"onclick:_deselect\" dojoAttachPoint=\"deselectImg\" alt=\"deselect\" src=\"\"/>"+"<img dojoAttachEvent=\"onclick:_up\" dojoAttachPoint=\"upImg\" alt=\"up\" src=\"\"/>"+"<img dojoAttachEvent=\"onclick:_down\" dojoAttachPoint=\"downImg\" alt=\"down\" src=\"\"/>"+"</td>"+"<td class=\"selected-cell\"><select dojoAttachPoint=\"selectedNode\" dojoAttachEvent=\"onchange:_onChangeSelected\" multiple=\"multiple\" size=\"${size}\"></select></td></tr>"+"</table></div>",availableTitle:"",selectedTitle:"",size:7,sort:false,available:"",selected:"",images:["select.gif","select_disable.gif","deselect.gif","deselect_disable.gif","up.gif","up_disable.gif","down.gif","down_disable.gif"],postMixInProperties:function(){this.inherited(arguments);this.available=dojo.fromJson(this.available);this.selected=dojo.fromJson(this.selected);this.preload=[];dojo.forEach(this.images,function(_1,_2){this.preload[_2]=new Image();this.preload[_2].src=dojo.moduleUrl("jeus","image/"+_1);},this);},postCreate:function(){if(!this.sort){dojo.style(this.upImg,"display","none");dojo.style(this.downImg,"display","none");}var c=dojo.query("option",this.availableNode)[0];dojo.forEach(this.available,function(_3){var n=this.availableNode.appendChild(dojo.clone(c));n.value=_3.value;n.innerHTML=_3.label;},this);dojo.forEach(this.selected,function(_4){var n=this.selectedNode.appendChild(dojo.clone(c));n.value=_4.value;n.innerHTML=_4.label;},this);c.parentNode.removeChild(c);this._update();},_getSelected:function(_5){return dojo.query("option",_5).filter(function(n){return n.selected;});},_getSelectedUp:function(){var s=this._getSelected(this.selectedNode);if(s.length==1&&s[0].index!=0){return s[0];}else{return null;}},_getSelectedDown:function(){var s=this._getSelected(this.selectedNode);if(s.length==1&&s[0].index!=this.selectedNode.length-1){return s[0];}else{return null;}},_select:function(e){this._getSelected(this.availableNode).place(this.selectedNode);this._update();},_deselect:function(e){this._getSelected(this.selectedNode).place(this.availableNode);this._update();},_up:function(e){var s=this._getSelectedUp();if(s==null){return;}dojo.place(s,s.previousSibling,"before");this._update();},_down:function(e){var s=this._getSelectedDown();if(s==null){return;}dojo.place(s,s.nextSibling,"after");this._update();},_onChangeAvailable:function(e){if(this._getSelected(this.availableNode).length>0){this.selectImg.src=this.preload[0].src;}else{this.selectImg.src=this.preload[1].src;}},_onChangeSelected:function(e){if(this._getSelected(this.selectedNode).length>0){this.deselectImg.src=this.preload[2].src;}else{this.deselectImg.src=this.preload[3].src;}if(this._getSelectedUp()!=null){this.upImg.src=this.preload[4].src;}else{this.upImg.src=this.preload[5].src;}if(this._getSelectedDown()!=null){this.downImg.src=this.preload[6].src;}else{this.downImg.src=this.preload[7].src;}},_update:function(){this._onChangeAvailable();this._onChangeSelected();this.focusNode.value=this.getValue();},_getValueDeprecated:false,getValue:function(){var _6=[];dojo.query("option",this.selectedNode).forEach(function(o){_6.push(o.value);},this);return _6;},_setDisabledAttr:function(_7){this.inherited(arguments);dojo.attr(this.selectedNode,"disabled",_7);dojo.attr(this.availableNode,"disabled",_7);dijit.setWaiState(this.selectedNode,"disabled",_7);dijit.setWaiState(this.availableNode,"disabled",_7);}});}