Toolbar.js
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:23k
源码类别:

OA系统

开发平台:

Java

  1. /*
  2. Copyright (c) 2004-2006, The Dojo Foundation
  3. All Rights Reserved.
  4. Licensed under the Academic Free License version 2.1 or above OR the
  5. modified BSD license. For more information on Dojo licensing, see:
  6. http://dojotoolkit.org/community/licensing.shtml
  7. */
  8. dojo.provide("dojo.widget.Toolbar");
  9. dojo.require("dojo.widget.*");
  10. dojo.require("dojo.html.style");
  11. dojo.widget.defineWidget("dojo.widget.ToolbarContainer", dojo.widget.HtmlWidget, {isContainer:true, templateString:"<div class="toolbarContainer" dojoAttachPoint="containerNode"></div>", templateCssString:".toolbarContainer {ntborder-bottom : 0;ntbackground-color : #def;ntcolor : ButtonText;ntfont : Menu;ntbackground-image: url(images/toolbar-bg.gif);n}nn.toolbar {ntpadding : 2px 4px;ntmin-height : 26px;nt_height : 26px;n}nn.toolbarItem {ntfloat : left;ntpadding : 1px 2px;ntmargin : 0 2px 1px 0;ntcursor : pointer;n}nn.toolbarItem.selected, .toolbarItem.down {ntmargin : 1px 1px 0 1px;ntpadding : 0px 1px;ntborder : 1px solid #bbf;ntbackground-color : #fafaff;n}nn.toolbarButton img {ntvertical-align : bottom;n}nn.toolbarButton span {ntline-height : 16px;ntvertical-align : middle;n}nn.toolbarButton.hover {ntpadding : 0px 1px;ntborder : 1px solid #99c;n}nn.toolbarItem.disabled {ntopacity : 0.3;ntfilter : alpha(opacity=30);ntcursor : default;n}nn.toolbarSeparator {ntcursor : default;n}nn.toolbarFlexibleSpace {n}n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Toolbar.css"), getItem:function (name) {
  12. if (name instanceof dojo.widget.ToolbarItem) {
  13. return name;
  14. }
  15. for (var i = 0; i < this.children.length; i++) {
  16. var child = this.children[i];
  17. if (child instanceof dojo.widget.Toolbar) {
  18. var item = child.getItem(name);
  19. if (item) {
  20. return item;
  21. }
  22. }
  23. }
  24. return null;
  25. }, getItems:function () {
  26. var items = [];
  27. for (var i = 0; i < this.children.length; i++) {
  28. var child = this.children[i];
  29. if (child instanceof dojo.widget.Toolbar) {
  30. items = items.concat(child.getItems());
  31. }
  32. }
  33. return items;
  34. }, enable:function () {
  35. for (var i = 0; i < this.children.length; i++) {
  36. var child = this.children[i];
  37. if (child instanceof dojo.widget.Toolbar) {
  38. child.enable.apply(child, arguments);
  39. }
  40. }
  41. }, disable:function () {
  42. for (var i = 0; i < this.children.length; i++) {
  43. var child = this.children[i];
  44. if (child instanceof dojo.widget.Toolbar) {
  45. child.disable.apply(child, arguments);
  46. }
  47. }
  48. }, select:function (name) {
  49. for (var i = 0; i < this.children.length; i++) {
  50. var child = this.children[i];
  51. if (child instanceof dojo.widget.Toolbar) {
  52. child.select(arguments);
  53. }
  54. }
  55. }, deselect:function (name) {
  56. for (var i = 0; i < this.children.length; i++) {
  57. var child = this.children[i];
  58. if (child instanceof dojo.widget.Toolbar) {
  59. child.deselect(arguments);
  60. }
  61. }
  62. }, getItemsState:function () {
  63. var values = {};
  64. for (var i = 0; i < this.children.length; i++) {
  65. var child = this.children[i];
  66. if (child instanceof dojo.widget.Toolbar) {
  67. dojo.lang.mixin(values, child.getItemsState());
  68. }
  69. }
  70. return values;
  71. }, getItemsActiveState:function () {
  72. var values = {};
  73. for (var i = 0; i < this.children.length; i++) {
  74. var child = this.children[i];
  75. if (child instanceof dojo.widget.Toolbar) {
  76. dojo.lang.mixin(values, child.getItemsActiveState());
  77. }
  78. }
  79. return values;
  80. }, getItemsSelectedState:function () {
  81. var values = {};
  82. for (var i = 0; i < this.children.length; i++) {
  83. var child = this.children[i];
  84. if (child instanceof dojo.widget.Toolbar) {
  85. dojo.lang.mixin(values, child.getItemsSelectedState());
  86. }
  87. }
  88. return values;
  89. }});
  90. 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) {
  91. var start = new Date();
  92. var widget = null;
  93. while (node && node != this.domNode) {
  94. if (dojo.html.hasClass(node, "toolbarItem")) {
  95. var widgets = dojo.widget.manager.getWidgetsByFilter(function (w) {
  96. return w.domNode == node;
  97. });
  98. if (widgets.length == 1) {
  99. widget = widgets[0];
  100. break;
  101. } else {
  102. if (widgets.length > 1) {
  103. dojo.raise("Toolbar._getItem: More than one widget matches the node");
  104. }
  105. }
  106. }
  107. node = node.parentNode;
  108. }
  109. return widget;
  110. }, _onmouseover:function (e) {
  111. var widget = this._getItem(e.target);
  112. if (widget && widget._onmouseover) {
  113. widget._onmouseover(e);
  114. }
  115. }, _onmouseout:function (e) {
  116. var widget = this._getItem(e.target);
  117. if (widget && widget._onmouseout) {
  118. widget._onmouseout(e);
  119. }
  120. }, _onclick:function (e) {
  121. var widget = this._getItem(e.target);
  122. if (widget && widget._onclick) {
  123. widget._onclick(e);
  124. }
  125. }, _onmousedown:function (e) {
  126. var widget = this._getItem(e.target);
  127. if (widget && widget._onmousedown) {
  128. widget._onmousedown(e);
  129. }
  130. }, _onmouseup:function (e) {
  131. var widget = this._getItem(e.target);
  132. if (widget && widget._onmouseup) {
  133. widget._onmouseup(e);
  134. }
  135. }, addChild:function (item, pos, props) {
  136. var widget = dojo.widget.ToolbarItem.make(item, null, props);
  137. var ret = dojo.widget.Toolbar.superclass.addChild.call(this, widget, null, pos, null);
  138. return ret;
  139. }, push:function () {
  140. for (var i = 0; i < arguments.length; i++) {
  141. this.addChild(arguments[i]);
  142. }
  143. }, getItem:function (name) {
  144. if (name instanceof dojo.widget.ToolbarItem) {
  145. return name;
  146. }
  147. for (var i = 0; i < this.children.length; i++) {
  148. var child = this.children[i];
  149. if (child instanceof dojo.widget.ToolbarItem && child._name == name) {
  150. return child;
  151. }
  152. }
  153. return null;
  154. }, getItems:function () {
  155. var items = [];
  156. for (var i = 0; i < this.children.length; i++) {
  157. var child = this.children[i];
  158. if (child instanceof dojo.widget.ToolbarItem) {
  159. items.push(child);
  160. }
  161. }
  162. return items;
  163. }, getItemsState:function () {
  164. var values = {};
  165. for (var i = 0; i < this.children.length; i++) {
  166. var child = this.children[i];
  167. if (child instanceof dojo.widget.ToolbarItem) {
  168. values[child._name] = {selected:child._selected, enabled:!child.disabled};
  169. }
  170. }
  171. return values;
  172. }, getItemsActiveState:function () {
  173. var values = this.getItemsState();
  174. for (var item in values) {
  175. values[item] = values[item].enabled;
  176. }
  177. return values;
  178. }, getItemsSelectedState:function () {
  179. var values = this.getItemsState();
  180. for (var item in values) {
  181. values[item] = values[item].selected;
  182. }
  183. return values;
  184. }, enable:function () {
  185. var items = arguments.length ? arguments : this.children;
  186. for (var i = 0; i < items.length; i++) {
  187. var child = this.getItem(items[i]);
  188. if (child instanceof dojo.widget.ToolbarItem) {
  189. child.enable(false, true);
  190. }
  191. }
  192. }, disable:function () {
  193. var items = arguments.length ? arguments : this.children;
  194. for (var i = 0; i < items.length; i++) {
  195. var child = this.getItem(items[i]);
  196. if (child instanceof dojo.widget.ToolbarItem) {
  197. child.disable();
  198. }
  199. }
  200. }, select:function () {
  201. for (var i = 0; i < arguments.length; i++) {
  202. var name = arguments[i];
  203. var item = this.getItem(name);
  204. if (item) {
  205. item.select();
  206. }
  207. }
  208. }, deselect:function () {
  209. for (var i = 0; i < arguments.length; i++) {
  210. var name = arguments[i];
  211. var item = this.getItem(name);
  212. if (item) {
  213. item.disable();
  214. }
  215. }
  216. }, setValue:function () {
  217. for (var i = 0; i < arguments.length; i += 2) {
  218. var name = arguments[i], value = arguments[i + 1];
  219. var item = this.getItem(name);
  220. if (item) {
  221. if (item instanceof dojo.widget.ToolbarItem) {
  222. item.setValue(value);
  223. }
  224. }
  225. }
  226. }});
  227. dojo.widget.defineWidget("dojo.widget.ToolbarItem", dojo.widget.HtmlWidget, {templateString:"<span unselectable="on" class="toolbarItem"></span>", _name:null, getName:function () {
  228. return this._name;
  229. }, setName:function (value) {
  230. return (this._name = value);
  231. }, getValue:function () {
  232. return this.getName();
  233. }, setValue:function (value) {
  234. return this.setName(value);
  235. }, _selected:false, isSelected:function () {
  236. return this._selected;
  237. }, setSelected:function (is, force, preventEvent) {
  238. if (!this._toggleItem && !force) {
  239. return;
  240. }
  241. is = Boolean(is);
  242. if (force || !this.disabled && this._selected != is) {
  243. this._selected = is;
  244. this.update();
  245. if (!preventEvent) {
  246. this._fireEvent(is ? "onSelect" : "onDeselect");
  247. this._fireEvent("onChangeSelect");
  248. }
  249. }
  250. }, select:function (force, preventEvent) {
  251. return this.setSelected(true, force, preventEvent);
  252. }, deselect:function (force, preventEvent) {
  253. return this.setSelected(false, force, preventEvent);
  254. }, _toggleItem:false, isToggleItem:function () {
  255. return this._toggleItem;
  256. }, setToggleItem:function (value) {
  257. this._toggleItem = Boolean(value);
  258. }, toggleSelected:function (force) {
  259. return this.setSelected(!this._selected, force);
  260. }, isEnabled:function () {
  261. return !this.disabled;
  262. }, setEnabled:function (is, force, preventEvent) {
  263. is = Boolean(is);
  264. if (force || this.disabled == is) {
  265. this.disabled = !is;
  266. this.update();
  267. if (!preventEvent) {
  268. this._fireEvent(this.disabled ? "onDisable" : "onEnable");
  269. this._fireEvent("onChangeEnabled");
  270. }
  271. }
  272. return !this.disabled;
  273. }, enable:function (force, preventEvent) {
  274. return this.setEnabled(true, force, preventEvent);
  275. }, disable:function (force, preventEvent) {
  276. return this.setEnabled(false, force, preventEvent);
  277. }, toggleEnabled:function (force, preventEvent) {
  278. return this.setEnabled(this.disabled, force, preventEvent);
  279. }, _icon:null, getIcon:function () {
  280. return this._icon;
  281. }, setIcon:function (value) {
  282. var icon = dojo.widget.Icon.make(value);
  283. if (this._icon) {
  284. this._icon.setIcon(icon);
  285. } else {
  286. this._icon = icon;
  287. }
  288. var iconNode = this._icon.getNode();
  289. if (iconNode.parentNode != this.domNode) {
  290. if (this.domNode.hasChildNodes()) {
  291. this.domNode.insertBefore(iconNode, this.domNode.firstChild);
  292. } else {
  293. this.domNode.appendChild(iconNode);
  294. }
  295. }
  296. return this._icon;
  297. }, _label:"", getLabel:function () {
  298. return this._label;
  299. }, setLabel:function (value) {
  300. var ret = (this._label = value);
  301. if (!this.labelNode) {
  302. this.labelNode = document.createElement("span");
  303. this.domNode.appendChild(this.labelNode);
  304. }
  305. this.labelNode.innerHTML = "";
  306. this.labelNode.appendChild(document.createTextNode(this._label));
  307. this.update();
  308. return ret;
  309. }, update:function () {
  310. if (this.disabled) {
  311. this._selected = false;
  312. dojo.html.addClass(this.domNode, "disabled");
  313. dojo.html.removeClass(this.domNode, "down");
  314. dojo.html.removeClass(this.domNode, "hover");
  315. } else {
  316. dojo.html.removeClass(this.domNode, "disabled");
  317. if (this._selected) {
  318. dojo.html.addClass(this.domNode, "selected");
  319. } else {
  320. dojo.html.removeClass(this.domNode, "selected");
  321. }
  322. }
  323. this._updateIcon();
  324. }, _updateIcon:function () {
  325. if (this._icon) {
  326. if (this.disabled) {
  327. this._icon.disable();
  328. } else {
  329. if (this._cssHover) {
  330. this._icon.hover();
  331. } else {
  332. if (this._selected) {
  333. this._icon.select();
  334. } else {
  335. this._icon.enable();
  336. }
  337. }
  338. }
  339. }
  340. }, _fireEvent:function (evt) {
  341. if (typeof this[evt] == "function") {
  342. var args = [this];
  343. for (var i = 1; i < arguments.length; i++) {
  344. args.push(arguments[i]);
  345. }
  346. this[evt].apply(this, args);
  347. }
  348. }, _onmouseover:function (e) {
  349. if (this.disabled) {
  350. return;
  351. }
  352. dojo.html.addClass(this.domNode, "hover");
  353. this._fireEvent("onMouseOver");
  354. }, _onmouseout:function (e) {
  355. dojo.html.removeClass(this.domNode, "hover");
  356. dojo.html.removeClass(this.domNode, "down");
  357. if (!this._selected) {
  358. dojo.html.removeClass(this.domNode, "selected");
  359. }
  360. this._fireEvent("onMouseOut");
  361. }, _onclick:function (e) {
  362. if (!this.disabled && !this._toggleItem) {
  363. this._fireEvent("onClick");
  364. }
  365. }, _onmousedown:function (e) {
  366. if (e.preventDefault) {
  367. e.preventDefault();
  368. }
  369. if (this.disabled) {
  370. return;
  371. }
  372. dojo.html.addClass(this.domNode, "down");
  373. if (this._toggleItem) {
  374. if (this.parent.preventDeselect && this._selected) {
  375. return;
  376. }
  377. this.toggleSelected();
  378. }
  379. this._fireEvent("onMouseDown");
  380. }, _onmouseup:function (e) {
  381. dojo.html.removeClass(this.domNode, "down");
  382. this._fireEvent("onMouseUp");
  383. }, onClick:function () {
  384. }, onMouseOver:function () {
  385. }, onMouseOut:function () {
  386. }, onMouseDown:function () {
  387. }, onMouseUp:function () {
  388. }, fillInTemplate:function (args, frag) {
  389. if (args.name) {
  390. this._name = args.name;
  391. }
  392. if (args.selected) {
  393. this.select();
  394. }
  395. if (args.disabled) {
  396. this.disable();
  397. }
  398. if (args.label) {
  399. this.setLabel(args.label);
  400. }
  401. if (args.icon) {
  402. this.setIcon(args.icon);
  403. }
  404. if (args.toggleitem || args.toggleItem) {
  405. this.setToggleItem(true);
  406. }
  407. }});
  408. dojo.widget.ToolbarItem.make = function (wh, whIsType, props) {
  409. var item = null;
  410. if (wh instanceof Array) {
  411. item = dojo.widget.createWidget("ToolbarButtonGroup", props);
  412. item.setName(wh[0]);
  413. for (var i = 1; i < wh.length; i++) {
  414. item.addChild(wh[i]);
  415. }
  416. } else {
  417. if (wh instanceof dojo.widget.ToolbarItem) {
  418. item = wh;
  419. } else {
  420. if (wh instanceof dojo.uri.Uri) {
  421. item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {icon:new dojo.widget.Icon(wh.toString())}));
  422. } else {
  423. if (whIsType) {
  424. item = dojo.widget.createWidget(wh, props);
  425. } else {
  426. if (typeof wh == "string" || wh instanceof String) {
  427. switch (wh.charAt(0)) {
  428.   case "|":
  429.   case "-":
  430.   case "/":
  431. item = dojo.widget.createWidget("ToolbarSeparator", props);
  432. break;
  433.   case " ":
  434. if (wh.length == 1) {
  435. item = dojo.widget.createWidget("ToolbarSpace", props);
  436. } else {
  437. item = dojo.widget.createWidget("ToolbarFlexibleSpace", props);
  438. }
  439. break;
  440.   default:
  441. if (/.(gif|jpg|jpeg|png)$/i.test(wh)) {
  442. item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {icon:new dojo.widget.Icon(wh.toString())}));
  443. } else {
  444. item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {label:wh.toString()}));
  445. }
  446. }
  447. } else {
  448. if (wh && wh.tagName && /^img$/i.test(wh.tagName)) {
  449. item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {icon:wh}));
  450. } else {
  451. item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {label:wh.toString()}));
  452. }
  453. }
  454. }
  455. }
  456. }
  457. }
  458. return item;
  459. };
  460. dojo.widget.defineWidget("dojo.widget.ToolbarButtonGroup", dojo.widget.ToolbarItem, {isContainer:true, templateString:"<span unselectable="on" class="toolbarButtonGroup" dojoAttachPoint="containerNode"></span>", defaultButton:"", postCreate:function () {
  461. for (var i = 0; i < this.children.length; i++) {
  462. this._injectChild(this.children[i]);
  463. }
  464. }, addChild:function (item, pos, props) {
  465. var widget = dojo.widget.ToolbarItem.make(item, null, dojo.lang.mixin(props || {}, {toggleItem:true}));
  466. var ret = dojo.widget.ToolbarButtonGroup.superclass.addChild.call(this, widget, null, pos, null);
  467. this._injectChild(widget);
  468. return ret;
  469. }, _injectChild:function (widget) {
  470. dojo.event.connect(widget, "onSelect", this, "onChildSelected");
  471. dojo.event.connect(widget, "onDeselect", this, "onChildDeSelected");
  472. if (widget._name == this.defaultButton || (typeof this.defaultButton == "number" && this.children.length - 1 == this.defaultButton)) {
  473. widget.select(false, true);
  474. }
  475. }, getItem:function (name) {
  476. if (name instanceof dojo.widget.ToolbarItem) {
  477. return name;
  478. }
  479. for (var i = 0; i < this.children.length; i++) {
  480. var child = this.children[i];
  481. if (child instanceof dojo.widget.ToolbarItem && child._name == name) {
  482. return child;
  483. }
  484. }
  485. return null;
  486. }, getItems:function () {
  487. var items = [];
  488. for (var i = 0; i < this.children.length; i++) {
  489. var child = this.children[i];
  490. if (child instanceof dojo.widget.ToolbarItem) {
  491. items.push(child);
  492. }
  493. }
  494. return items;
  495. }, onChildSelected:function (e) {
  496. this.select(e._name);
  497. }, onChildDeSelected:function (e) {
  498. this._fireEvent("onChangeSelect", this._value);
  499. }, enable:function (force, preventEvent) {
  500. for (var i = 0; i < this.children.length; i++) {
  501. var child = this.children[i];
  502. if (child instanceof dojo.widget.ToolbarItem) {
  503. child.enable(force, preventEvent);
  504. if (child._name == this._value) {
  505. child.select(force, preventEvent);
  506. }
  507. }
  508. }
  509. }, disable:function (force, preventEvent) {
  510. for (var i = 0; i < this.children.length; i++) {
  511. var child = this.children[i];
  512. if (child instanceof dojo.widget.ToolbarItem) {
  513. child.disable(force, preventEvent);
  514. }
  515. }
  516. }, _value:"", getValue:function () {
  517. return this._value;
  518. }, select:function (name, force, preventEvent) {
  519. for (var i = 0; i < this.children.length; i++) {
  520. var child = this.children[i];
  521. if (child instanceof dojo.widget.ToolbarItem) {
  522. if (child._name == name) {
  523. child.select(force, preventEvent);
  524. this._value = name;
  525. } else {
  526. child.deselect(true, true);
  527. }
  528. }
  529. }
  530. if (!preventEvent) {
  531. this._fireEvent("onSelect", this._value);
  532. this._fireEvent("onChangeSelect", this._value);
  533. }
  534. }, setValue:this.select, preventDeselect:false});
  535. dojo.widget.defineWidget("dojo.widget.ToolbarButton", dojo.widget.ToolbarItem, {fillInTemplate:function (args, frag) {
  536. dojo.widget.ToolbarButton.superclass.fillInTemplate.call(this, args, frag);
  537. dojo.html.addClass(this.domNode, "toolbarButton");
  538. if (this._icon) {
  539. this.setIcon(this._icon);
  540. }
  541. if (this._label) {
  542. this.setLabel(this._label);
  543. }
  544. if (!this._name) {
  545. if (this._label) {
  546. this.setName(this._label);
  547. } else {
  548. if (this._icon) {
  549. var src = this._icon.getSrc("enabled").match(/[/^]([^./]+).(gif|jpg|jpeg|png)$/i);
  550. if (src) {
  551. this.setName(src[1]);
  552. }
  553. } else {
  554. this._name = this._widgetId;
  555. }
  556. }
  557. }
  558. }});
  559. dojo.widget.defineWidget("dojo.widget.ToolbarDialog", dojo.widget.ToolbarButton, {fillInTemplate:function (args, frag) {
  560. dojo.widget.ToolbarDialog.superclass.fillInTemplate.call(this, args, frag);
  561. dojo.event.connect(this, "onSelect", this, "showDialog");
  562. dojo.event.connect(this, "onDeselect", this, "hideDialog");
  563. }, showDialog:function (e) {
  564. dojo.lang.setTimeout(dojo.event.connect, 1, document, "onmousedown", this, "deselect");
  565. }, hideDialog:function (e) {
  566. dojo.event.disconnect(document, "onmousedown", this, "deselect");
  567. }});
  568. dojo.widget.defineWidget("dojo.widget.ToolbarMenu", dojo.widget.ToolbarDialog, {});
  569. dojo.widget.ToolbarMenuItem = function () {
  570. };
  571. 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) {
  572. dojo.widget.ToolbarSeparator.superclass.fillInTemplate.call(this, args, frag);
  573. this._name = this.widgetId;
  574. if (!skip) {
  575. if (!this._icon) {
  576. this.setIcon(this.defaultIconPath);
  577. }
  578. this.domNode.appendChild(this._icon.getNode());
  579. }
  580. }, _onmouseover:null, _onmouseout:null, _onclick:null, _onmousedown:null, _onmouseup:null});
  581. dojo.widget.defineWidget("dojo.widget.ToolbarSpace", dojo.widget.ToolbarSeparator, {fillInTemplate:function (args, frag, skip) {
  582. dojo.widget.ToolbarSpace.superclass.fillInTemplate.call(this, args, frag, true);
  583. if (!skip) {
  584. dojo.html.addClass(this.domNode, "toolbarSpace");
  585. }
  586. }});
  587. 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) {
  588. dojo.widget.ToolbarSelect.superclass.fillInTemplate.call(this, args, frag, true);
  589. var keys = args.values;
  590. var i = 0;
  591. for (var val in keys) {
  592. var opt = document.createElement("option");
  593. opt.setAttribute("value", keys[val]);
  594. opt.innerHTML = val;
  595. this.selectBox.appendChild(opt);
  596. }
  597. }, changed:function (e) {
  598. this._fireEvent("onSetValue", this.selectBox.value);
  599. }, setEnabled:function (is, force, preventEvent) {
  600. var ret = dojo.widget.ToolbarSelect.superclass.setEnabled.call(this, is, force, preventEvent);
  601. this.selectBox.disabled = this.disabled;
  602. return ret;
  603. }, _onmouseover:null, _onmouseout:null, _onclick:null, _onmousedown:null, _onmouseup:null});
  604. dojo.widget.Icon = function (enabled, disabled, hovered, selected) {
  605. if (!arguments.length) {
  606. throw new Error("Icon must have at least an enabled state");
  607. }
  608. var states = ["enabled", "disabled", "hovered", "selected"];
  609. var currentState = "enabled";
  610. var domNode = document.createElement("img");
  611. this.getState = function () {
  612. return currentState;
  613. };
  614. this.setState = function (value) {
  615. if (dojo.lang.inArray(states, value)) {
  616. if (this[value]) {
  617. currentState = value;
  618. var img = this[currentState];
  619. if ((dojo.render.html.ie55 || dojo.render.html.ie60) && img.src && img.src.match(/[.]png$/i)) {
  620. domNode.width = img.width || img.offsetWidth;
  621. domNode.height = img.height || img.offsetHeight;
  622. domNode.setAttribute("src", dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif").uri);
  623. domNode.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.src + "',sizingMethod='image')";
  624. } else {
  625. domNode.setAttribute("src", img.src);
  626. }
  627. }
  628. } else {
  629. throw new Error("Invalid state set on Icon (state: " + value + ")");
  630. }
  631. };
  632. this.setSrc = function (state, value) {
  633. if (/^img$/i.test(value.tagName)) {
  634. this[state] = value;
  635. } else {
  636. if (typeof value == "string" || value instanceof String || value instanceof dojo.uri.Uri) {
  637. this[state] = new Image();
  638. this[state].src = value.toString();
  639. }
  640. }
  641. return this[state];
  642. };
  643. this.setIcon = function (icon) {
  644. for (var i = 0; i < states.length; i++) {
  645. if (icon[states[i]]) {
  646. this.setSrc(states[i], icon[states[i]]);
  647. }
  648. }
  649. this.update();
  650. };
  651. this.enable = function () {
  652. this.setState("enabled");
  653. };
  654. this.disable = function () {
  655. this.setState("disabled");
  656. };
  657. this.hover = function () {
  658. this.setState("hovered");
  659. };
  660. this.select = function () {
  661. this.setState("selected");
  662. };
  663. this.getSize = function () {
  664. return {width:domNode.width || domNode.offsetWidth, height:domNode.height || domNode.offsetHeight};
  665. };
  666. this.setSize = function (w, h) {
  667. domNode.width = w;
  668. domNode.height = h;
  669. return {width:w, height:h};
  670. };
  671. this.getNode = function () {
  672. return domNode;
  673. };
  674. this.getSrc = function (state) {
  675. if (state) {
  676. return this[state].src;
  677. }
  678. return domNode.src || "";
  679. };
  680. this.update = function () {
  681. this.setState(currentState);
  682. };
  683. for (var i = 0; i < states.length; i++) {
  684. var arg = arguments[i];
  685. var state = states[i];
  686. this[state] = null;
  687. if (!arg) {
  688. continue;
  689. }
  690. this.setSrc(state, arg);
  691. }
  692. this.enable();
  693. };
  694. dojo.widget.Icon.make = function (a, b, c, d) {
  695. for (var i = 0; i < arguments.length; i++) {
  696. if (arguments[i] instanceof dojo.widget.Icon) {
  697. return arguments[i];
  698. }
  699. }
  700. return new dojo.widget.Icon(a, b, c, d);
  701. };
  702. dojo.widget.defineWidget("dojo.widget.ToolbarColorDialog", dojo.widget.ToolbarDialog, {palette:"7x10", fillInTemplate:function (args, frag) {
  703. dojo.widget.ToolbarColorDialog.superclass.fillInTemplate.call(this, args, frag);
  704. this.dialog = dojo.widget.createWidget("ColorPalette", {palette:this.palette});
  705. this.dialog.domNode.style.position = "absolute";
  706. dojo.event.connect(this.dialog, "onColorSelect", this, "_setValue");
  707. }, _setValue:function (color) {
  708. this._value = color;
  709. this._fireEvent("onSetValue", color);
  710. }, showDialog:function (e) {
  711. dojo.widget.ToolbarColorDialog.superclass.showDialog.call(this, e);
  712. var abs = dojo.html.getAbsolutePosition(this.domNode, true);
  713. var y = abs.y + dojo.html.getBorderBox(this.domNode).height;
  714. this.dialog.showAt(abs.x, y);
  715. }, hideDialog:function (e) {
  716. dojo.widget.ToolbarColorDialog.superclass.hideDialog.call(this, e);
  717. this.dialog.hide();
  718. }});