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

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.ShowSlide");
  9. dojo.require("dojo.widget.*");
  10. dojo.require("dojo.lang.common");
  11. dojo.require("dojo.widget.HtmlWidget");
  12. dojo.require("dojo.lfx.html");
  13. dojo.require("dojo.html.display");
  14. dojo.require("dojo.html.layout");
  15. dojo.require("dojo.animation.Animation");
  16. dojo.require("dojo.gfx.color");
  17. dojo.widget.defineWidget("dojo.widget.ShowSlide", dojo.widget.HtmlWidget, {title:"", _action:-1, isContainer:true, _components:{}, _actions:[], gotoAction:function (action) {
  18. this._action = action;
  19. }, _nextAction:function (event) {
  20. if ((this._action + 1) != this._actions.length) {
  21. ++this._action;
  22. return true;
  23. }
  24. return false;
  25. }, _previousAction:function (event) {
  26. if ((this._action - 1) != -1) {
  27. --this._action;
  28. return true;
  29. }
  30. return false;
  31. }, htmlTitle:null, debug:false, noClick:false, templateString:"<div class="dojoShowSlide">nt<div class="dojoShowSlideTitle">ntt<h1 dojoAttachPoint="htmlTitle">Title</h1>nt</div>nt<div class="dojoShowSlideBody" dojoAttachPoint="containerNode"></div>n</div>n", templateCssString:".dojoShowSlideTitle {ntheight: 100px;ntbackground: #369;n}n.dojoShowSlideTitle h1 {ntmargin-top: 0;ntline-height: 100px;ntmargin-left: 30px;n}n.dojoShowSlideBody {ntmargin: 15px;n}n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ShowSlide.css"), postCreate:function () {
  32. this.htmlTitle.innerHTML = this.title;
  33. var actions = this.getChildrenOfType("ShowAction", false);
  34. var atypes = {};
  35. dojo.lang.forEach(actions, function (act) {
  36. atypes[act.on] = true;
  37. });
  38. this._components = {};
  39. var cn = this.containerNode;
  40. var nodes = dojo.render.html.ie ? cn.all : cn.getElementsByTagName("*");
  41. dojo.lang.forEach(nodes, function (node) {
  42. var as = node.getAttribute("as");
  43. if (as) {
  44. if (!this._components[as]) {
  45. this._components[as] = [];
  46. }
  47. this._components[as].push(node);
  48. if (!atypes[as]) {
  49. var tmpAction = dojo.widget.createWidget("ShowAction", {on:as});
  50. this.addChild(tmpAction);
  51. atypes[as] = true;
  52. }
  53. }
  54. }, this);
  55. this._actions = [];
  56. actions = this.getChildrenOfType("ShowAction", false);
  57. dojo.lang.forEach(actions, function (child) {
  58. this._actions.push(child);
  59. var components = this._components[child.on];
  60. for (var j = 0, component; component = components[j]; j++) {
  61. if (child["action"] && ((child.action != "remove") && (child.action != "fadeout") && (child.action != "wipeout"))) {
  62. this.hideComponent(component);
  63. }
  64. }
  65. }, this);
  66. }, previousAction:function (event) {
  67. if (!this.parent.stopEvent(event)) {
  68. return false;
  69. }
  70. var action = this._actions[this._action];
  71. if (!action) {
  72. return false;
  73. }
  74. var on = action.on;
  75. while (action.on == on) {
  76. var components = this._components[on];
  77. for (var i = 0, component; component = components[i]; i++) {
  78. if ((action.action == "remove") || (action.action == "fadeout") || (action.action == "wipeout")) {
  79. if (component.style.display == "none") {
  80. component.style.display = "";
  81. component.style.visibility = "visible";
  82. var exits = true;
  83. }
  84. dojo.html.setOpacity(component, 1);
  85. } else {
  86. if (action.action) {
  87. this.hideComponent(component);
  88. }
  89. }
  90. }
  91. --this._action;
  92. if (exits) {
  93. return true;
  94. }
  95. if (action.auto == "true") {
  96. on = this._actions[this._action].on;
  97. }
  98. action = this._actions[this._action];
  99. if (!action) {
  100. return false;
  101. }
  102. }
  103. return true;
  104. }, hideComponent:function (component) {
  105. component.style.visibility = "hidden";
  106. component.style.backgroundColor = "transparent";
  107. var parent = component.parentNode;
  108. if ((parent) && (parent.tagName.toLowerCase() == "li")) {
  109. parent.oldType = parent.style.listStyleType;
  110. parent.style.listStyleType = "none";
  111. }
  112. }, nextAction:function (event) {
  113. if (!this.parent.stopEvent(event)) {
  114. return false;
  115. }
  116. if (!this._nextAction(this)) {
  117. return false;
  118. }
  119. var action = this._actions[this._action];
  120. if (!action) {
  121. return false;
  122. }
  123. var tmpAction = action["action"];
  124. var components = this._components[action.on];
  125. for (var i = 0, component; component = components[i]; i++) {
  126. if (tmpAction) {
  127. var duration = action.duration || 1000;
  128. if ((tmpAction == "fade") || (tmpAction == "fadeIn")) {
  129. dojo.html.setOpacity(component, 0);
  130. dojo.lfx.html.fadeShow(component, duration).play(true);
  131. } else {
  132. if (tmpAction == "fadeout") {
  133. dojo.lfx.html.fadeHide(component, duration).play(true);
  134. } else {
  135. if (tmpAction == "fly") {
  136. var width = dojo.html.getMarginBox(component).width;
  137. var position = dojo.html.getAbsolutePosition(component);
  138. component.style.position = "relative";
  139. component.style.left = -(width + position.x) + "px";
  140. dojo.lfx.html.slideBy(component, {top:0, left:(width + position.x)}, duration, -1, this.callWith).play(true);
  141. } else {
  142. if ((tmpAction == "wipe") || (tmpAction == "wipein")) {
  143. dojo.lfx.html.wipeIn(component, duration).play();
  144. } else {
  145. if (tmpAction == "wipeout") {
  146. dojo.lfx.html.wipeOut(component, duration).play();
  147. } else {
  148. if (tmpAction == "color") {
  149. var from = new dojo.gfx.color.Color(action.from).toRgb();
  150. var to = new dojo.gfx.color.Color(action.to).toRgb();
  151. var anim = new dojo.animation.Animation(new dojo.math.curves.Line(from, to), duration, 0);
  152. var node = component;
  153. dojo.event.connect(anim, "onAnimate", function (e) {
  154. node.style.color = "rgb(" + e.coordsAsInts().join(",") + ")";
  155. });
  156. anim.play(true);
  157. } else {
  158. if (tmpAction == "bgcolor") {
  159. dojo.lfx.html.unhighlight(component, action.to, duration).play();
  160. } else {
  161. if (tmpAction == "remove") {
  162. component.style.display = "none";
  163. }
  164. }
  165. }
  166. }
  167. }
  168. }
  169. }
  170. }
  171. if (tmpAction == "hide") {
  172. component.style.visibility = "hidden";
  173. } else {
  174. component.style.visibility = "visible";
  175. }
  176. }
  177. }
  178. action = this._actions[this._action + 1];
  179. if (action && action.auto == "true") {
  180. this.nextAction();
  181. }
  182. return true;
  183. }, callWith:function (node) {
  184. if (!node) {
  185. return;
  186. }
  187. if (dojo.lang.isArray(node)) {
  188. dojo.lang.forEach(node, arguments.callee);
  189. return;
  190. }
  191. var parent = node.parentNode;
  192. if ((parent) && (parent.tagName.toLowerCase() == "li")) {
  193. parent.style.listStyleType = parent.oldType;
  194. }
  195. }});