New file |
0,0 → 1,722 |
/* |
Copyright (c) 2004-2006, 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.Toolbar"); |
dojo.require("dojo.widget.*"); |
dojo.require("dojo.html.style"); |
dojo.widget.defineWidget("dojo.widget.ToolbarContainer", dojo.widget.HtmlWidget, {isContainer:true, templateString:"<div class=\"toolbarContainer\" dojoAttachPoint=\"containerNode\"></div>", templateCssString:".toolbarContainer {\n\tborder-bottom : 0;\n\tbackground-color : #def;\n\tcolor : ButtonText;\n\tfont : Menu;\n\tbackground-image: url(images/toolbar-bg.gif);\n}\n\n.toolbar {\n\tpadding : 2px 4px;\n\tmin-height : 26px;\n\t_height : 26px;\n}\n\n.toolbarItem {\n\tfloat : left;\n\tpadding : 1px 2px;\n\tmargin : 0 2px 1px 0;\n\tcursor : pointer;\n}\n\n.toolbarItem.selected, .toolbarItem.down {\n\tmargin : 1px 1px 0 1px;\n\tpadding : 0px 1px;\n\tborder : 1px solid #bbf;\n\tbackground-color : #fafaff;\n}\n\n.toolbarButton img {\n\tvertical-align : bottom;\n}\n\n.toolbarButton span {\n\tline-height : 16px;\n\tvertical-align : middle;\n}\n\n.toolbarButton.hover {\n\tpadding : 0px 1px;\n\tborder : 1px solid #99c;\n}\n\n.toolbarItem.disabled {\n\topacity : 0.3;\n\tfilter : alpha(opacity=30);\n\tcursor : default;\n}\n\n.toolbarSeparator {\n\tcursor : default;\n}\n\n.toolbarFlexibleSpace {\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Toolbar.css"), getItem:function (name) { |
if (name instanceof dojo.widget.ToolbarItem) { |
return name; |
} |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.Toolbar) { |
var item = child.getItem(name); |
if (item) { |
return item; |
} |
} |
} |
return null; |
}, getItems:function () { |
var items = []; |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.Toolbar) { |
items = items.concat(child.getItems()); |
} |
} |
return items; |
}, enable:function () { |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.Toolbar) { |
child.enable.apply(child, arguments); |
} |
} |
}, disable:function () { |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.Toolbar) { |
child.disable.apply(child, arguments); |
} |
} |
}, select:function (name) { |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.Toolbar) { |
child.select(arguments); |
} |
} |
}, deselect:function (name) { |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.Toolbar) { |
child.deselect(arguments); |
} |
} |
}, getItemsState:function () { |
var values = {}; |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.Toolbar) { |
dojo.lang.mixin(values, child.getItemsState()); |
} |
} |
return values; |
}, getItemsActiveState:function () { |
var values = {}; |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.Toolbar) { |
dojo.lang.mixin(values, child.getItemsActiveState()); |
} |
} |
return values; |
}, getItemsSelectedState:function () { |
var values = {}; |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.Toolbar) { |
dojo.lang.mixin(values, child.getItemsSelectedState()); |
} |
} |
return values; |
}}); |
dojo.widget.defineWidget("dojo.widget.Toolbar", dojo.widget.HtmlWidget, {isContainer:true, templateString:"<div class=\"toolbar\" dojoAttachPoint=\"containerNode\" unselectable=\"on\" dojoOnMouseover=\"_onmouseover\" dojoOnMouseout=\"_onmouseout\" dojoOnClick=\"_onclick\" dojoOnMousedown=\"_onmousedown\" dojoOnMouseup=\"_onmouseup\"></div>", _getItem:function (node) { |
var start = new Date(); |
var widget = null; |
while (node && node != this.domNode) { |
if (dojo.html.hasClass(node, "toolbarItem")) { |
var widgets = dojo.widget.manager.getWidgetsByFilter(function (w) { |
return w.domNode == node; |
}); |
if (widgets.length == 1) { |
widget = widgets[0]; |
break; |
} else { |
if (widgets.length > 1) { |
dojo.raise("Toolbar._getItem: More than one widget matches the node"); |
} |
} |
} |
node = node.parentNode; |
} |
return widget; |
}, _onmouseover:function (e) { |
var widget = this._getItem(e.target); |
if (widget && widget._onmouseover) { |
widget._onmouseover(e); |
} |
}, _onmouseout:function (e) { |
var widget = this._getItem(e.target); |
if (widget && widget._onmouseout) { |
widget._onmouseout(e); |
} |
}, _onclick:function (e) { |
var widget = this._getItem(e.target); |
if (widget && widget._onclick) { |
widget._onclick(e); |
} |
}, _onmousedown:function (e) { |
var widget = this._getItem(e.target); |
if (widget && widget._onmousedown) { |
widget._onmousedown(e); |
} |
}, _onmouseup:function (e) { |
var widget = this._getItem(e.target); |
if (widget && widget._onmouseup) { |
widget._onmouseup(e); |
} |
}, addChild:function (item, pos, props) { |
var widget = dojo.widget.ToolbarItem.make(item, null, props); |
var ret = dojo.widget.Toolbar.superclass.addChild.call(this, widget, null, pos, null); |
return ret; |
}, push:function () { |
for (var i = 0; i < arguments.length; i++) { |
this.addChild(arguments[i]); |
} |
}, getItem:function (name) { |
if (name instanceof dojo.widget.ToolbarItem) { |
return name; |
} |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.ToolbarItem && child._name == name) { |
return child; |
} |
} |
return null; |
}, getItems:function () { |
var items = []; |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.ToolbarItem) { |
items.push(child); |
} |
} |
return items; |
}, getItemsState:function () { |
var values = {}; |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.ToolbarItem) { |
values[child._name] = {selected:child._selected, enabled:!child.disabled}; |
} |
} |
return values; |
}, getItemsActiveState:function () { |
var values = this.getItemsState(); |
for (var item in values) { |
values[item] = values[item].enabled; |
} |
return values; |
}, getItemsSelectedState:function () { |
var values = this.getItemsState(); |
for (var item in values) { |
values[item] = values[item].selected; |
} |
return values; |
}, enable:function () { |
var items = arguments.length ? arguments : this.children; |
for (var i = 0; i < items.length; i++) { |
var child = this.getItem(items[i]); |
if (child instanceof dojo.widget.ToolbarItem) { |
child.enable(false, true); |
} |
} |
}, disable:function () { |
var items = arguments.length ? arguments : this.children; |
for (var i = 0; i < items.length; i++) { |
var child = this.getItem(items[i]); |
if (child instanceof dojo.widget.ToolbarItem) { |
child.disable(); |
} |
} |
}, select:function () { |
for (var i = 0; i < arguments.length; i++) { |
var name = arguments[i]; |
var item = this.getItem(name); |
if (item) { |
item.select(); |
} |
} |
}, deselect:function () { |
for (var i = 0; i < arguments.length; i++) { |
var name = arguments[i]; |
var item = this.getItem(name); |
if (item) { |
item.disable(); |
} |
} |
}, setValue:function () { |
for (var i = 0; i < arguments.length; i += 2) { |
var name = arguments[i], value = arguments[i + 1]; |
var item = this.getItem(name); |
if (item) { |
if (item instanceof dojo.widget.ToolbarItem) { |
item.setValue(value); |
} |
} |
} |
}}); |
dojo.widget.defineWidget("dojo.widget.ToolbarItem", dojo.widget.HtmlWidget, {templateString:"<span unselectable=\"on\" class=\"toolbarItem\"></span>", _name:null, getName:function () { |
return this._name; |
}, setName:function (value) { |
return (this._name = value); |
}, getValue:function () { |
return this.getName(); |
}, setValue:function (value) { |
return this.setName(value); |
}, _selected:false, isSelected:function () { |
return this._selected; |
}, setSelected:function (is, force, preventEvent) { |
if (!this._toggleItem && !force) { |
return; |
} |
is = Boolean(is); |
if (force || !this.disabled && this._selected != is) { |
this._selected = is; |
this.update(); |
if (!preventEvent) { |
this._fireEvent(is ? "onSelect" : "onDeselect"); |
this._fireEvent("onChangeSelect"); |
} |
} |
}, select:function (force, preventEvent) { |
return this.setSelected(true, force, preventEvent); |
}, deselect:function (force, preventEvent) { |
return this.setSelected(false, force, preventEvent); |
}, _toggleItem:false, isToggleItem:function () { |
return this._toggleItem; |
}, setToggleItem:function (value) { |
this._toggleItem = Boolean(value); |
}, toggleSelected:function (force) { |
return this.setSelected(!this._selected, force); |
}, isEnabled:function () { |
return !this.disabled; |
}, setEnabled:function (is, force, preventEvent) { |
is = Boolean(is); |
if (force || this.disabled == is) { |
this.disabled = !is; |
this.update(); |
if (!preventEvent) { |
this._fireEvent(this.disabled ? "onDisable" : "onEnable"); |
this._fireEvent("onChangeEnabled"); |
} |
} |
return !this.disabled; |
}, enable:function (force, preventEvent) { |
return this.setEnabled(true, force, preventEvent); |
}, disable:function (force, preventEvent) { |
return this.setEnabled(false, force, preventEvent); |
}, toggleEnabled:function (force, preventEvent) { |
return this.setEnabled(this.disabled, force, preventEvent); |
}, _icon:null, getIcon:function () { |
return this._icon; |
}, setIcon:function (value) { |
var icon = dojo.widget.Icon.make(value); |
if (this._icon) { |
this._icon.setIcon(icon); |
} else { |
this._icon = icon; |
} |
var iconNode = this._icon.getNode(); |
if (iconNode.parentNode != this.domNode) { |
if (this.domNode.hasChildNodes()) { |
this.domNode.insertBefore(iconNode, this.domNode.firstChild); |
} else { |
this.domNode.appendChild(iconNode); |
} |
} |
return this._icon; |
}, _label:"", getLabel:function () { |
return this._label; |
}, setLabel:function (value) { |
var ret = (this._label = value); |
if (!this.labelNode) { |
this.labelNode = document.createElement("span"); |
this.domNode.appendChild(this.labelNode); |
} |
this.labelNode.innerHTML = ""; |
this.labelNode.appendChild(document.createTextNode(this._label)); |
this.update(); |
return ret; |
}, update:function () { |
if (this.disabled) { |
this._selected = false; |
dojo.html.addClass(this.domNode, "disabled"); |
dojo.html.removeClass(this.domNode, "down"); |
dojo.html.removeClass(this.domNode, "hover"); |
} else { |
dojo.html.removeClass(this.domNode, "disabled"); |
if (this._selected) { |
dojo.html.addClass(this.domNode, "selected"); |
} else { |
dojo.html.removeClass(this.domNode, "selected"); |
} |
} |
this._updateIcon(); |
}, _updateIcon:function () { |
if (this._icon) { |
if (this.disabled) { |
this._icon.disable(); |
} else { |
if (this._cssHover) { |
this._icon.hover(); |
} else { |
if (this._selected) { |
this._icon.select(); |
} else { |
this._icon.enable(); |
} |
} |
} |
} |
}, _fireEvent:function (evt) { |
if (typeof this[evt] == "function") { |
var args = [this]; |
for (var i = 1; i < arguments.length; i++) { |
args.push(arguments[i]); |
} |
this[evt].apply(this, args); |
} |
}, _onmouseover:function (e) { |
if (this.disabled) { |
return; |
} |
dojo.html.addClass(this.domNode, "hover"); |
this._fireEvent("onMouseOver"); |
}, _onmouseout:function (e) { |
dojo.html.removeClass(this.domNode, "hover"); |
dojo.html.removeClass(this.domNode, "down"); |
if (!this._selected) { |
dojo.html.removeClass(this.domNode, "selected"); |
} |
this._fireEvent("onMouseOut"); |
}, _onclick:function (e) { |
if (!this.disabled && !this._toggleItem) { |
this._fireEvent("onClick"); |
} |
}, _onmousedown:function (e) { |
if (e.preventDefault) { |
e.preventDefault(); |
} |
if (this.disabled) { |
return; |
} |
dojo.html.addClass(this.domNode, "down"); |
if (this._toggleItem) { |
if (this.parent.preventDeselect && this._selected) { |
return; |
} |
this.toggleSelected(); |
} |
this._fireEvent("onMouseDown"); |
}, _onmouseup:function (e) { |
dojo.html.removeClass(this.domNode, "down"); |
this._fireEvent("onMouseUp"); |
}, onClick:function () { |
}, onMouseOver:function () { |
}, onMouseOut:function () { |
}, onMouseDown:function () { |
}, onMouseUp:function () { |
}, fillInTemplate:function (args, frag) { |
if (args.name) { |
this._name = args.name; |
} |
if (args.selected) { |
this.select(); |
} |
if (args.disabled) { |
this.disable(); |
} |
if (args.label) { |
this.setLabel(args.label); |
} |
if (args.icon) { |
this.setIcon(args.icon); |
} |
if (args.toggleitem || args.toggleItem) { |
this.setToggleItem(true); |
} |
}}); |
dojo.widget.ToolbarItem.make = function (wh, whIsType, props) { |
var item = null; |
if (wh instanceof Array) { |
item = dojo.widget.createWidget("ToolbarButtonGroup", props); |
item.setName(wh[0]); |
for (var i = 1; i < wh.length; i++) { |
item.addChild(wh[i]); |
} |
} else { |
if (wh instanceof dojo.widget.ToolbarItem) { |
item = wh; |
} else { |
if (wh instanceof dojo.uri.Uri) { |
item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {icon:new dojo.widget.Icon(wh.toString())})); |
} else { |
if (whIsType) { |
item = dojo.widget.createWidget(wh, props); |
} else { |
if (typeof wh == "string" || wh instanceof String) { |
switch (wh.charAt(0)) { |
case "|": |
case "-": |
case "/": |
item = dojo.widget.createWidget("ToolbarSeparator", props); |
break; |
case " ": |
if (wh.length == 1) { |
item = dojo.widget.createWidget("ToolbarSpace", props); |
} else { |
item = dojo.widget.createWidget("ToolbarFlexibleSpace", props); |
} |
break; |
default: |
if (/\.(gif|jpg|jpeg|png)$/i.test(wh)) { |
item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {icon:new dojo.widget.Icon(wh.toString())})); |
} else { |
item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {label:wh.toString()})); |
} |
} |
} else { |
if (wh && wh.tagName && /^img$/i.test(wh.tagName)) { |
item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {icon:wh})); |
} else { |
item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {label:wh.toString()})); |
} |
} |
} |
} |
} |
} |
return item; |
}; |
dojo.widget.defineWidget("dojo.widget.ToolbarButtonGroup", dojo.widget.ToolbarItem, {isContainer:true, templateString:"<span unselectable=\"on\" class=\"toolbarButtonGroup\" dojoAttachPoint=\"containerNode\"></span>", defaultButton:"", postCreate:function () { |
for (var i = 0; i < this.children.length; i++) { |
this._injectChild(this.children[i]); |
} |
}, addChild:function (item, pos, props) { |
var widget = dojo.widget.ToolbarItem.make(item, null, dojo.lang.mixin(props || {}, {toggleItem:true})); |
var ret = dojo.widget.ToolbarButtonGroup.superclass.addChild.call(this, widget, null, pos, null); |
this._injectChild(widget); |
return ret; |
}, _injectChild:function (widget) { |
dojo.event.connect(widget, "onSelect", this, "onChildSelected"); |
dojo.event.connect(widget, "onDeselect", this, "onChildDeSelected"); |
if (widget._name == this.defaultButton || (typeof this.defaultButton == "number" && this.children.length - 1 == this.defaultButton)) { |
widget.select(false, true); |
} |
}, getItem:function (name) { |
if (name instanceof dojo.widget.ToolbarItem) { |
return name; |
} |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.ToolbarItem && child._name == name) { |
return child; |
} |
} |
return null; |
}, getItems:function () { |
var items = []; |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.ToolbarItem) { |
items.push(child); |
} |
} |
return items; |
}, onChildSelected:function (e) { |
this.select(e._name); |
}, onChildDeSelected:function (e) { |
this._fireEvent("onChangeSelect", this._value); |
}, enable:function (force, preventEvent) { |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.ToolbarItem) { |
child.enable(force, preventEvent); |
if (child._name == this._value) { |
child.select(force, preventEvent); |
} |
} |
} |
}, disable:function (force, preventEvent) { |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.ToolbarItem) { |
child.disable(force, preventEvent); |
} |
} |
}, _value:"", getValue:function () { |
return this._value; |
}, select:function (name, force, preventEvent) { |
for (var i = 0; i < this.children.length; i++) { |
var child = this.children[i]; |
if (child instanceof dojo.widget.ToolbarItem) { |
if (child._name == name) { |
child.select(force, preventEvent); |
this._value = name; |
} else { |
child.deselect(true, true); |
} |
} |
} |
if (!preventEvent) { |
this._fireEvent("onSelect", this._value); |
this._fireEvent("onChangeSelect", this._value); |
} |
}, setValue:this.select, preventDeselect:false}); |
dojo.widget.defineWidget("dojo.widget.ToolbarButton", dojo.widget.ToolbarItem, {fillInTemplate:function (args, frag) { |
dojo.widget.ToolbarButton.superclass.fillInTemplate.call(this, args, frag); |
dojo.html.addClass(this.domNode, "toolbarButton"); |
if (this._icon) { |
this.setIcon(this._icon); |
} |
if (this._label) { |
this.setLabel(this._label); |
} |
if (!this._name) { |
if (this._label) { |
this.setName(this._label); |
} else { |
if (this._icon) { |
var src = this._icon.getSrc("enabled").match(/[\/^]([^\.\/]+)\.(gif|jpg|jpeg|png)$/i); |
if (src) { |
this.setName(src[1]); |
} |
} else { |
this._name = this._widgetId; |
} |
} |
} |
}}); |
dojo.widget.defineWidget("dojo.widget.ToolbarDialog", dojo.widget.ToolbarButton, {fillInTemplate:function (args, frag) { |
dojo.widget.ToolbarDialog.superclass.fillInTemplate.call(this, args, frag); |
dojo.event.connect(this, "onSelect", this, "showDialog"); |
dojo.event.connect(this, "onDeselect", this, "hideDialog"); |
}, showDialog:function (e) { |
dojo.lang.setTimeout(dojo.event.connect, 1, document, "onmousedown", this, "deselect"); |
}, hideDialog:function (e) { |
dojo.event.disconnect(document, "onmousedown", this, "deselect"); |
}}); |
dojo.widget.defineWidget("dojo.widget.ToolbarMenu", dojo.widget.ToolbarDialog, {}); |
dojo.widget.ToolbarMenuItem = function () { |
}; |
dojo.widget.defineWidget("dojo.widget.ToolbarSeparator", dojo.widget.ToolbarItem, {templateString:"<span unselectable=\"on\" class=\"toolbarItem toolbarSeparator\"></span>", defaultIconPath:new dojo.uri.moduleUri("dojo.widget", "templates/buttons/sep.gif"), fillInTemplate:function (args, frag, skip) { |
dojo.widget.ToolbarSeparator.superclass.fillInTemplate.call(this, args, frag); |
this._name = this.widgetId; |
if (!skip) { |
if (!this._icon) { |
this.setIcon(this.defaultIconPath); |
} |
this.domNode.appendChild(this._icon.getNode()); |
} |
}, _onmouseover:null, _onmouseout:null, _onclick:null, _onmousedown:null, _onmouseup:null}); |
dojo.widget.defineWidget("dojo.widget.ToolbarSpace", dojo.widget.ToolbarSeparator, {fillInTemplate:function (args, frag, skip) { |
dojo.widget.ToolbarSpace.superclass.fillInTemplate.call(this, args, frag, true); |
if (!skip) { |
dojo.html.addClass(this.domNode, "toolbarSpace"); |
} |
}}); |
dojo.widget.defineWidget("dojo.widget.ToolbarSelect", dojo.widget.ToolbarItem, {templateString:"<span class=\"toolbarItem toolbarSelect\" unselectable=\"on\"><select dojoAttachPoint=\"selectBox\" dojoOnChange=\"changed\"></select></span>", fillInTemplate:function (args, frag) { |
dojo.widget.ToolbarSelect.superclass.fillInTemplate.call(this, args, frag, true); |
var keys = args.values; |
var i = 0; |
for (var val in keys) { |
var opt = document.createElement("option"); |
opt.setAttribute("value", keys[val]); |
opt.innerHTML = val; |
this.selectBox.appendChild(opt); |
} |
}, changed:function (e) { |
this._fireEvent("onSetValue", this.selectBox.value); |
}, setEnabled:function (is, force, preventEvent) { |
var ret = dojo.widget.ToolbarSelect.superclass.setEnabled.call(this, is, force, preventEvent); |
this.selectBox.disabled = this.disabled; |
return ret; |
}, _onmouseover:null, _onmouseout:null, _onclick:null, _onmousedown:null, _onmouseup:null}); |
dojo.widget.Icon = function (enabled, disabled, hovered, selected) { |
if (!arguments.length) { |
throw new Error("Icon must have at least an enabled state"); |
} |
var states = ["enabled", "disabled", "hovered", "selected"]; |
var currentState = "enabled"; |
var domNode = document.createElement("img"); |
this.getState = function () { |
return currentState; |
}; |
this.setState = function (value) { |
if (dojo.lang.inArray(states, value)) { |
if (this[value]) { |
currentState = value; |
var img = this[currentState]; |
if ((dojo.render.html.ie55 || dojo.render.html.ie60) && img.src && img.src.match(/[.]png$/i)) { |
domNode.width = img.width || img.offsetWidth; |
domNode.height = img.height || img.offsetHeight; |
domNode.setAttribute("src", dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif").uri); |
domNode.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.src + "',sizingMethod='image')"; |
} else { |
domNode.setAttribute("src", img.src); |
} |
} |
} else { |
throw new Error("Invalid state set on Icon (state: " + value + ")"); |
} |
}; |
this.setSrc = function (state, value) { |
if (/^img$/i.test(value.tagName)) { |
this[state] = value; |
} else { |
if (typeof value == "string" || value instanceof String || value instanceof dojo.uri.Uri) { |
this[state] = new Image(); |
this[state].src = value.toString(); |
} |
} |
return this[state]; |
}; |
this.setIcon = function (icon) { |
for (var i = 0; i < states.length; i++) { |
if (icon[states[i]]) { |
this.setSrc(states[i], icon[states[i]]); |
} |
} |
this.update(); |
}; |
this.enable = function () { |
this.setState("enabled"); |
}; |
this.disable = function () { |
this.setState("disabled"); |
}; |
this.hover = function () { |
this.setState("hovered"); |
}; |
this.select = function () { |
this.setState("selected"); |
}; |
this.getSize = function () { |
return {width:domNode.width || domNode.offsetWidth, height:domNode.height || domNode.offsetHeight}; |
}; |
this.setSize = function (w, h) { |
domNode.width = w; |
domNode.height = h; |
return {width:w, height:h}; |
}; |
this.getNode = function () { |
return domNode; |
}; |
this.getSrc = function (state) { |
if (state) { |
return this[state].src; |
} |
return domNode.src || ""; |
}; |
this.update = function () { |
this.setState(currentState); |
}; |
for (var i = 0; i < states.length; i++) { |
var arg = arguments[i]; |
var state = states[i]; |
this[state] = null; |
if (!arg) { |
continue; |
} |
this.setSrc(state, arg); |
} |
this.enable(); |
}; |
dojo.widget.Icon.make = function (a, b, c, d) { |
for (var i = 0; i < arguments.length; i++) { |
if (arguments[i] instanceof dojo.widget.Icon) { |
return arguments[i]; |
} |
} |
return new dojo.widget.Icon(a, b, c, d); |
}; |
dojo.widget.defineWidget("dojo.widget.ToolbarColorDialog", dojo.widget.ToolbarDialog, {palette:"7x10", fillInTemplate:function (args, frag) { |
dojo.widget.ToolbarColorDialog.superclass.fillInTemplate.call(this, args, frag); |
this.dialog = dojo.widget.createWidget("ColorPalette", {palette:this.palette}); |
this.dialog.domNode.style.position = "absolute"; |
dojo.event.connect(this.dialog, "onColorSelect", this, "_setValue"); |
}, _setValue:function (color) { |
this._value = color; |
this._fireEvent("onSetValue", color); |
}, showDialog:function (e) { |
dojo.widget.ToolbarColorDialog.superclass.showDialog.call(this, e); |
var abs = dojo.html.getAbsolutePosition(this.domNode, true); |
var y = abs.y + dojo.html.getBorderBox(this.domNode).height; |
this.dialog.showAt(abs.x, y); |
}, hideDialog:function (e) { |
dojo.widget.ToolbarColorDialog.superclass.hideDialog.call(this, e); |
this.dialog.hide(); |
}}); |
|