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

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.Slider");
  9. dojo.require("dojo.event.*");
  10. dojo.require("dojo.dnd.*");
  11. dojo.require("dojo.dnd.HtmlDragMove");
  12. dojo.require("dojo.widget.*");
  13. dojo.require("dojo.html.layout");
  14. dojo.widget.defineWidget("dojo.widget.Slider", dojo.widget.HtmlWidget, {minimumX:0, minimumY:0, maximumX:10, maximumY:10, snapValuesX:0, snapValuesY:0, _snapToGrid:true, isEnableX:true, isEnableY:true, _valueSizeX:0, _valueSizeY:0, _minX:0, _minY:0, _constraintWidth:0, _constraintHeight:0, _clipLeft:0, _clipRight:0, _clipTop:0, _clipBottom:0, _clipXdelta:0, _clipYdelta:0, initialValueX:0, initialValueY:0, flipX:false, flipY:false, clickSelect:true, activeDrag:false, templateCssString:".sliderMain {n  border: 0px !important;n  border-spacing: 0px !important;n  line-height: 0px !important;n  padding: 0px !important;n  display: -moz-inline-table !important;n  display: inline !important;n  -moz-user-focus: normal !important;n}nn.sliderComponent {n  border: 0px;n  padding: 0px;n  margin: 0px;n}nn.sliderHandle { n  top: 0px;n  left: 0px;n  z-index: 1000;n  position: absolute !important;n}nn.sliderOutsetButton { n  border-style: outset;n  border-width: 0px 1px 1px 0px;n  border-color: black;n}nn.sliderInsetButton { n  border-style: inset;n  border-width: 1px 0px 0px 1px;n  border-color: black;n}nn.sliderButtonY {n  margin: 0px;n  padding: 0px;n  z-index: 900;n}nn.sliderButtonX {n  margin: 0px;n  padding: 0px;n  z-index: 900;n}nn.sliderBackground { n  z-index: 0;n  display: block !important;n  position: relative !important;n}nn.sliderProgressBackground { n  z-index: 800;n  position: absolute !important;n  clip: rect(0px,0px,0px,0px);n}nn.sliderBackgroundSizeOnly { n}n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Slider.css"), templateString:"<table _="weird end tag formatting is to prevent whitespace from becoming &nbsp;" ntclass="sliderMain" ntdojoAttachPoint="focusNode" ntdojoAttachEvent="onmousedown:_setFocus; onkey:_handleKeyEvents; onkeyup:_buttonReleased; onmouseup:_buttonReleased; onmousewheel:_mouseWheeled;"nttabindex="0" cols=3 cellpadding=0 cellspacing=0 style="">nt<tr valign=middle align=center>ntt<td class="sliderComponent" colspan=3 dojoAttachPoint=topBorderNode style=""nttt><img class="sliderOutsetButton sliderButtonY"nttttdojoAttachPoint=topButtonNode nttttdojoAttachEvent="onmousedown:_topButtonPressed; onmousemove:_discardEvent; ondblclick:_topButtonDoubleClicked;"nttttsrc="${this.topButtonSrc}" nttttstyle="${this.buttonStyleY}"ntt></td>nt</tr>nt<tr valign=middle align=center>ntt<td class="sliderComponent" dojoAttachPoint=leftBorderNode style=""nttt><img class="sliderOutsetButton sliderButtonX"nttttdojoAttachPoint=leftButtonNodenttttdojoAttachEvent="onmousedown:_leftButtonPressed; onmousemove:_discardEvent; ondblclick:_leftButtonDoubleClicked;"nttttsrc="${this.leftButtonSrc}" nttttstyle="${this.buttonStyleX}"ntt></td>ntt<td dojoAttachPoint=constrainingContainerNode ntttclass="sliderComponent sliderBackground"ntttstyle="${this.backgroundStyle}"nttt><img src="${this.handleSrc}" nttttclass=sliderHandlenttttdojoAttachPoint=sliderHandleNodenttttstyle="${this.handleStyle}"nttt><img src="${this.progressBackgroundSrc}"nttttclass="sliderBackgroundSizeOnly sliderProgressBackground"nttttdojoAttachPoint=progressBackgroundNodenttttstyle="${this.backgroundSize}"nttt><img src="${this.backgroundSrc}" nttttclass=sliderBackgroundSizeOnlynttttdojoAttachPoint=sliderBackgroundNodenttttstyle="${this.backgroundSize}"ntt></td>ntt<td class="sliderComponent" dojoAttachPoint=rightBorderNode style=""nttt><img class="sliderOutsetButton sliderButtonX"nttttdojoAttachPoint=rightButtonNodenttttdojoAttachEvent="onmousedown:_rightButtonPressed; onmousemove:_discardEvent; ondblclick:_rightButtonDoubleClicked;"nttttsrc="${this.rightButtonSrc}" nttttstyle="${this.buttonStyleX}"ntt></td>nt</tr>nt<tr valign=middle align=center>ntt<td class="sliderComponent" colspan=3 dojoAttachPoint=bottomBorderNode style=""nttt><img class="sliderOutsetButton sliderButtonY"nttttdojoAttachPoint=bottomButtonNode nttttdojoAttachEvent="onmousedown:_bottomButtonPressed; onmousemove:_discardEvent; ondblclick:_bottomButtonDoubleClicked;"nttttsrc="${this.bottomButtonSrc}" nttttstyle="${this.buttonStyleY}"ntt></td>nt</tr>n</table>n", _isDragInProgress:false, bottomButtonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider_down_arrow.png"), topButtonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider_up_arrow.png"), leftButtonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider_left_arrow.png"), rightButtonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider_right_arrow.png"), backgroundSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif"), progressBackgroundSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif"), backgroundSize:"width:200px;height:200px;", backgroundStyle:"", buttonStyleX:"", buttonStyleY:"", handleStyle:"", handleSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider-button.png"), showButtons:true, _eventCount:0, _typamaticTimer:null, _typamaticFunction:null, defaultTimeout:500, timeoutChangeRate:0.9, _currentTimeout:this.defaultTimeout, _handleKeyEvents:function (evt) {
  15. if (!evt.key) {
  16. return;
  17. }
  18. if (!evt.ctrlKey && !evt.altKey) {
  19. switch (evt.key) {
  20.   case evt.KEY_LEFT_ARROW:
  21. dojo.event.browser.stopEvent(evt);
  22. this._leftButtonPressed(evt);
  23. return;
  24.   case evt.KEY_RIGHT_ARROW:
  25. dojo.event.browser.stopEvent(evt);
  26. this._rightButtonPressed(evt);
  27. return;
  28.   case evt.KEY_DOWN_ARROW:
  29. dojo.event.browser.stopEvent(evt);
  30. this._bottomButtonPressed(evt);
  31. return;
  32.   case evt.KEY_UP_ARROW:
  33. dojo.event.browser.stopEvent(evt);
  34. this._topButtonPressed(evt);
  35. return;
  36. }
  37. }
  38. this._eventCount++;
  39. }, _pressButton:function (buttonNode) {
  40. buttonNode.className = buttonNode.className.replace("Outset", "Inset");
  41. }, _releaseButton:function (buttonNode) {
  42. buttonNode.className = buttonNode.className.replace("Inset", "Outset");
  43. }, _buttonPressed:function (evt, buttonNode) {
  44. this._setFocus();
  45. if (typeof evt == "object") {
  46. if (this._typamaticTimer != null) {
  47. if (this._typamaticNode == buttonNode) {
  48. return;
  49. }
  50. clearTimeout(this._typamaticTimer);
  51. }
  52. this._buttonReleased(null);
  53. this._eventCount++;
  54. this._typamaticTimer = null;
  55. this._currentTimeout = this.defaultTimeout;
  56. dojo.event.browser.stopEvent(evt);
  57. } else {
  58. if (evt != this._eventCount) {
  59. this._buttonReleased(null);
  60. return false;
  61. }
  62. }
  63. if (buttonNode == this.leftButtonNode && this.isEnableX) {
  64. this._snapX(dojo.html.getPixelValue(this.sliderHandleNode, "left") - this._valueSizeX);
  65. } else {
  66. if (buttonNode == this.rightButtonNode && this.isEnableX) {
  67. this._snapX(dojo.html.getPixelValue(this.sliderHandleNode, "left") + this._valueSizeX);
  68. } else {
  69. if (buttonNode == this.topButtonNode && this.isEnableY) {
  70. this._snapY(dojo.html.getPixelValue(this.sliderHandleNode, "top") - this._valueSizeY);
  71. } else {
  72. if (buttonNode == this.bottomButtonNode && this.isEnableY) {
  73. this._snapY(dojo.html.getPixelValue(this.sliderHandleNode, "top") + this._valueSizeY);
  74. } else {
  75. return false;
  76. }
  77. }
  78. }
  79. }
  80. this._pressButton(buttonNode);
  81. this.notifyListeners();
  82. this._typamaticNode = buttonNode;
  83. this._typamaticTimer = dojo.lang.setTimeout(this, "_buttonPressed", this._currentTimeout, this._eventCount, buttonNode);
  84. this._currentTimeout = Math.round(this._currentTimeout * this.timeoutChangeRate);
  85. return false;
  86. }, _bottomButtonPressed:function (evt) {
  87. return this._buttonPressed(evt, this.bottomButtonNode);
  88. }, _bottomButtonDoubleClicked:function (evt) {
  89. var rc = this._bottomButtonPressed(evt);
  90. dojo.lang.setTimeout(this, "_buttonReleased", 50, null);
  91. return rc;
  92. }, _topButtonPressed:function (evt) {
  93. return this._buttonPressed(evt, this.topButtonNode);
  94. }, _topButtonDoubleClicked:function (evt) {
  95. var rc = this._topButtonPressed(evt);
  96. dojo.lang.setTimeout(this, "_buttonReleased", 50, null);
  97. return rc;
  98. }, _leftButtonPressed:function (evt) {
  99. return this._buttonPressed(evt, this.leftButtonNode);
  100. }, _leftButtonDoubleClicked:function (evt) {
  101. var rc = this._leftButtonPressed(evt);
  102. dojo.lang.setTimeout(this, "_buttonReleased", 50, null);
  103. return rc;
  104. }, _rightButtonPressed:function (evt) {
  105. return this._buttonPressed(evt, this.rightButtonNode);
  106. }, _rightButtonDoubleClicked:function (evt) {
  107. var rc = this._rightButtonPressed(evt);
  108. dojo.lang.setTimeout(this, "_buttonReleased", 50, null);
  109. return rc;
  110. }, _buttonReleased:function (evt) {
  111. if (typeof evt == "object" && evt != null && typeof evt.keyCode != "undefined" && evt.keyCode != null) {
  112. var keyCode = evt.keyCode;
  113. switch (keyCode) {
  114.   case evt.KEY_LEFT_ARROW:
  115.   case evt.KEY_RIGHT_ARROW:
  116.   case evt.KEY_DOWN_ARROW:
  117.   case evt.KEY_UP_ARROW:
  118. dojo.event.browser.stopEvent(evt);
  119. break;
  120. }
  121. }
  122. this._releaseButton(this.topButtonNode);
  123. this._releaseButton(this.bottomButtonNode);
  124. this._releaseButton(this.leftButtonNode);
  125. this._releaseButton(this.rightButtonNode);
  126. this._eventCount++;
  127. if (this._typamaticTimer != null) {
  128. clearTimeout(this._typamaticTimer);
  129. }
  130. this._typamaticTimer = null;
  131. this._currentTimeout = this.defaultTimeout;
  132. }, _mouseWheeled:function (evt) {
  133. var scrollAmount = 0;
  134. if (typeof evt.wheelDelta == "number") {
  135. scrollAmount = evt.wheelDelta;
  136. } else {
  137. if (typeof evt.detail == "number") {
  138. scrollAmount = -evt.detail;
  139. }
  140. }
  141. if (this.isEnableY) {
  142. if (scrollAmount > 0) {
  143. this._topButtonPressed(evt);
  144. this._buttonReleased(evt);
  145. } else {
  146. if (scrollAmount < 0) {
  147. this._bottomButtonPressed(evt);
  148. this._buttonReleased(evt);
  149. }
  150. }
  151. } else {
  152. if (this.isEnableX) {
  153. if (scrollAmount > 0) {
  154. this._rightButtonPressed(evt);
  155. this._buttonReleased(evt);
  156. } else {
  157. if (scrollAmount < 0) {
  158. this._leftButtonPressed(evt);
  159. this._buttonReleased(evt);
  160. }
  161. }
  162. }
  163. }
  164. }, _discardEvent:function (evt) {
  165. dojo.event.browser.stopEvent(evt);
  166. }, _setFocus:function () {
  167. if (this.focusNode.focus) {
  168. this.focusNode.focus();
  169. }
  170. }, fillInTemplate:function (args, frag) {
  171. var source = this.getFragNodeRef(frag);
  172. dojo.html.copyStyle(this.domNode, source);
  173. var padding = this.domNode.style.padding;
  174. if (dojo.lang.isString(padding) && padding != "" && padding != "0px" && padding != "0px 0px 0px 0px") {
  175. this.topBorderNode.style.padding = this.bottomBorderNode.style.padding = padding;
  176. this.topBorderNode.style.paddingBottom = "0px";
  177. this.bottomBorderNode.style.paddingTop = "0px";
  178. this.rightBorderNode.style.paddingRight = this.domNode.style.paddingRight;
  179. this.leftBorderNode.style.paddingLeft = this.domNode.style.paddingLeft;
  180. this.domNode.style.padding = "0px 0px 0px 0px";
  181. }
  182. var borderWidth = this.domNode.style.borderWidth;
  183. if (dojo.lang.isString(borderWidth) && borderWidth != "" && borderWidth != "0px" && borderWidth != "0px 0px 0px 0px") {
  184. this.topBorderNode.style.borderStyle = this.rightBorderNode.style.borderStyle = this.bottomBorderNode.style.borderStyle = this.leftBorderNode.style.borderStyle = this.domNode.style.borderStyle;
  185. this.topBorderNode.style.borderColor = this.rightBorderNode.style.borderColor = this.bottomBorderNode.style.borderColor = this.leftBorderNode.style.borderColor = this.domNode.style.borderColor;
  186. this.topBorderNode.style.borderWidth = this.bottomBorderNode.style.borderWidth = borderWidth;
  187. this.topBorderNode.style.borderBottomWidth = "0px";
  188. this.bottomBorderNode.style.borderTopWidth = "0px";
  189. this.rightBorderNode.style.borderRightWidth = this.domNode.style.borderRightWidth;
  190. this.leftBorderNode.style.borderLeftWidth = this.domNode.style.borderLeftWidth;
  191. this.domNode.style.borderWidth = "0px 0px 0px 0px";
  192. }
  193. this._handleMove = new dojo.widget._SliderDragMoveSource(this.sliderHandleNode);
  194. this._handleMove.setParent(this);
  195. if (this.clickSelect) {
  196. dojo.event.connect(this.constrainingContainerNode, "onmousedown", this, "_onClick");
  197. }
  198. if (this.isEnableX) {
  199. this.setValueX(!isNaN(this.initialValueX) ? this.initialValueX : (!isNaN(this.minimumX) ? this.minimumX : 0));
  200. }
  201. if (!this.isEnableX || !this.showButtons) {
  202. this.rightButtonNode.style.width = "1px";
  203. this.rightButtonNode.style.visibility = "hidden";
  204. this.leftButtonNode.style.width = "1px";
  205. this.leftButtonNode.style.visibility = "hidden";
  206. }
  207. if (this.isEnableY) {
  208. this.setValueY(!isNaN(this.initialValueY) ? this.initialValueY : (!isNaN(this.minimumY) ? this.minimumY : 0));
  209. }
  210. if (!this.isEnableY || !this.showButtons) {
  211. this.bottomButtonNode.style.width = "1px";
  212. this.bottomButtonNode.style.visibility = "hidden";
  213. this.topButtonNode.style.width = "1px";
  214. this.topButtonNode.style.visibility = "hidden";
  215. }
  216. if (this.focusNode.addEventListener) {
  217. this.focusNode.addEventListener("DOMMouseScroll", dojo.lang.hitch(this, "_mouseWheeled"), false);
  218. }
  219. }, _snapX:function (x) {
  220. if (x < 0) {
  221. x = 0;
  222. } else {
  223. if (x > this._constraintWidth) {
  224. x = this._constraintWidth;
  225. } else {
  226. var selectedValue = Math.round(x / this._valueSizeX);
  227. x = Math.round(selectedValue * this._valueSizeX);
  228. }
  229. }
  230. this.sliderHandleNode.style.left = x + "px";
  231. if (this.flipX) {
  232. this._clipLeft = x + this._clipXdelta;
  233. } else {
  234. this._clipRight = x + this._clipXdelta;
  235. }
  236. this.progressBackgroundNode.style.clip = "rect(" + this._clipTop + "px," + this._clipRight + "px," + this._clipBottom + "px," + this._clipLeft + "px)";
  237. }, _calc_valueSizeX:function () {
  238. var constrainingCtrBox = dojo.html.getContentBox(this.constrainingContainerNode);
  239. var sliderHandleBox = dojo.html.getContentBox(this.sliderHandleNode);
  240. if (isNaN(constrainingCtrBox.width) || isNaN(sliderHandleBox.width) || constrainingCtrBox.width <= 0 || sliderHandleBox.width <= 0) {
  241. return false;
  242. }
  243. this._constraintWidth = constrainingCtrBox.width + dojo.html.getPadding(this.constrainingContainerNode).width - sliderHandleBox.width;
  244. if (this.flipX) {
  245. this._clipLeft = this._clipRight = constrainingCtrBox.width;
  246. } else {
  247. this._clipLeft = this._clipRight = 0;
  248. }
  249. this._clipXdelta = sliderHandleBox.width >> 1;
  250. if (!this.isEnableY) {
  251. this._clipTop = 0;
  252. this._clipBottom = constrainingCtrBox.height;
  253. }
  254. if (this._constraintWidth <= 0) {
  255. return false;
  256. }
  257. if (this.snapValuesX == 0) {
  258. this.snapValuesX = this._constraintWidth + 1;
  259. }
  260. this._valueSizeX = this._constraintWidth / (this.snapValuesX - 1);
  261. return true;
  262. }, setValueX:function (value) {
  263. if (0 == this._valueSizeX) {
  264. if (this._calc_valueSizeX() == false) {
  265. dojo.lang.setTimeout(this, "setValueX", 100, value);
  266. return;
  267. }
  268. }
  269. if (isNaN(value)) {
  270. value = 0;
  271. }
  272. if (value > this.maximumX) {
  273. value = this.maximumX;
  274. } else {
  275. if (value < this.minimumX) {
  276. value = this.minimumX;
  277. }
  278. }
  279. var pixelPercent = (value - this.minimumX) / (this.maximumX - this.minimumX);
  280. if (this.flipX) {
  281. pixelPercent = 1 - pixelPercent;
  282. }
  283. this._snapX(pixelPercent * this._constraintWidth);
  284. this.notifyListeners();
  285. }, getValueX:function () {
  286. var pixelPercent = dojo.html.getPixelValue(this.sliderHandleNode, "left") / this._constraintWidth;
  287. if (this.flipX) {
  288. pixelPercent = 1 - pixelPercent;
  289. }
  290. return Math.round(pixelPercent * (this.snapValuesX - 1)) * ((this.maximumX - this.minimumX) / (this.snapValuesX - 1)) + this.minimumX;
  291. }, _snapY:function (y) {
  292. if (y < 0) {
  293. y = 0;
  294. } else {
  295. if (y > this._constraintHeight) {
  296. y = this._constraintHeight;
  297. } else {
  298. var selectedValue = Math.round(y / this._valueSizeY);
  299. y = Math.round(selectedValue * this._valueSizeY);
  300. }
  301. }
  302. this.sliderHandleNode.style.top = y + "px";
  303. if (this.flipY) {
  304. this._clipTop = y + this._clipYdelta;
  305. } else {
  306. this._clipBottom = y + this._clipYdelta;
  307. }
  308. this.progressBackgroundNode.style.clip = "rect(" + this._clipTop + "px," + this._clipRight + "px," + this._clipBottom + "px," + this._clipLeft + "px)";
  309. }, _calc_valueSizeY:function () {
  310. var constrainingCtrBox = dojo.html.getContentBox(this.constrainingContainerNode);
  311. var sliderHandleBox = dojo.html.getContentBox(this.sliderHandleNode);
  312. if (isNaN(constrainingCtrBox.height) || isNaN(sliderHandleBox.height) || constrainingCtrBox.height <= 0 || sliderHandleBox.height <= 0) {
  313. return false;
  314. }
  315. this._constraintHeight = constrainingCtrBox.height + dojo.html.getPadding(this.constrainingContainerNode).height - sliderHandleBox.height;
  316. if (this.flipY) {
  317. this._clipTop = this._clipBottom = constrainingCtrBox.height;
  318. } else {
  319. this._clipTop = this._clipBottom = 0;
  320. }
  321. this._clipYdelta = sliderHandleBox.height >> 1;
  322. if (!this.isEnableX) {
  323. this._clipLeft = 0;
  324. this._clipRight = constrainingCtrBox.width;
  325. }
  326. if (this._constraintHeight <= 0) {
  327. return false;
  328. }
  329. if (this.snapValuesY == 0) {
  330. this.snapValuesY = this._constraintHeight + 1;
  331. }
  332. this._valueSizeY = this._constraintHeight / (this.snapValuesY - 1);
  333. return true;
  334. }, setValueY:function (value) {
  335. if (0 == this._valueSizeY) {
  336. if (this._calc_valueSizeY() == false) {
  337. dojo.lang.setTimeout(this, "setValueY", 100, value);
  338. return;
  339. }
  340. }
  341. if (isNaN(value)) {
  342. value = 0;
  343. }
  344. if (value > this.maximumY) {
  345. value = this.maximumY;
  346. } else {
  347. if (value < this.minimumY) {
  348. value = this.minimumY;
  349. }
  350. }
  351. var pixelPercent = (value - this.minimumY) / (this.maximumY - this.minimumY);
  352. if (this.flipY) {
  353. pixelPercent = 1 - pixelPercent;
  354. }
  355. this._snapY(pixelPercent * this._constraintHeight);
  356. this.notifyListeners();
  357. }, getValueY:function () {
  358. var pixelPercent = dojo.html.getPixelValue(this.sliderHandleNode, "top") / this._constraintHeight;
  359. if (this.flipY) {
  360. pixelPercent = 1 - pixelPercent;
  361. }
  362. return Math.round(pixelPercent * (this.snapValuesY - 1)) * ((this.maximumY - this.minimumY) / (this.snapValuesY - 1)) + this.minimumY;
  363. }, _onClick:function (evt) {
  364. if (this._isDragInProgress) {
  365. return;
  366. }
  367. var parent = dojo.html.getAbsolutePosition(this.constrainingContainerNode, true, dojo.html.boxSizing.MARGIN_BOX);
  368. var content = dojo.html.getContentBox(this._handleMove.domNode);
  369. if (this.isEnableX) {
  370. var x = evt.pageX - parent.x - (content.width >> 1);
  371. this._snapX(x);
  372. }
  373. if (this.isEnableY) {
  374. var y = evt.pageY - parent.y - (content.height >> 1);
  375. this._snapY(y);
  376. }
  377. this.notifyListeners();
  378. }, notifyListeners:function () {
  379. this.onValueChanged(this.getValueX(), this.getValueY());
  380. }, onValueChanged:function (x, y) {
  381. }});
  382. dojo.widget.defineWidget("dojo.widget.SliderHorizontal", dojo.widget.Slider, {isEnableX:true, isEnableY:false, initialValue:"", snapValues:"", minimum:"", maximum:"", buttonStyle:"", backgroundSize:"height:10px;width:200px;", backgroundSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider-bg.gif"), flip:false, postMixInProperties:function () {
  383. dojo.widget.SliderHorizontal.superclass.postMixInProperties.apply(this, arguments);
  384. if (!isNaN(parseFloat(this.initialValue))) {
  385. this.initialValueX = parseFloat(this.initialValue);
  386. }
  387. if (!isNaN(parseFloat(this.minimum))) {
  388. this.minimumX = parseFloat(this.minimum);
  389. }
  390. if (!isNaN(parseFloat(this.maximum))) {
  391. this.maximumX = parseFloat(this.maximum);
  392. }
  393. if (!isNaN(parseInt(this.snapValues))) {
  394. this.snapValuesX = parseInt(this.snapValues);
  395. }
  396. if (dojo.lang.isString(this.buttonStyle) && this.buttonStyle != "") {
  397. this.buttonStyleX = this.buttonStyle;
  398. }
  399. if (dojo.lang.isBoolean(this.flip)) {
  400. this.flipX = this.flip;
  401. }
  402. }, notifyListeners:function () {
  403. this.onValueChanged(this.getValueX());
  404. }, getValue:function () {
  405. return this.getValueX();
  406. }, setValue:function (value) {
  407. this.setValueX(value);
  408. }, onValueChanged:function (value) {
  409. }});
  410. dojo.widget.defineWidget("dojo.widget.SliderVertical", dojo.widget.Slider, {isEnableX:false, isEnableY:true, initialValue:"", snapValues:"", minimum:"", maximum:"", buttonStyle:"", backgroundSize:"width:10px;height:200px;", backgroundSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider-bg-vert.gif"), flip:false, postMixInProperties:function () {
  411. dojo.widget.SliderVertical.superclass.postMixInProperties.apply(this, arguments);
  412. if (!isNaN(parseFloat(this.initialValue))) {
  413. this.initialValueY = parseFloat(this.initialValue);
  414. }
  415. if (!isNaN(parseFloat(this.minimum))) {
  416. this.minimumY = parseFloat(this.minimum);
  417. }
  418. if (!isNaN(parseFloat(this.maximum))) {
  419. this.maximumY = parseFloat(this.maximum);
  420. }
  421. if (!isNaN(parseInt(this.snapValues))) {
  422. this.snapValuesY = parseInt(this.snapValues);
  423. }
  424. if (dojo.lang.isString(this.buttonStyle) && this.buttonStyle != "") {
  425. this.buttonStyleY = this.buttonStyle;
  426. }
  427. if (dojo.lang.isBoolean(this.flip)) {
  428. this.flipY = this.flip;
  429. }
  430. }, notifyListeners:function () {
  431. this.onValueChanged(this.getValueY());
  432. }, getValue:function () {
  433. return this.getValueY();
  434. }, setValue:function (value) {
  435. this.setValueY(value);
  436. }, onValueChanged:function (value) {
  437. }});
  438. dojo.declare("dojo.widget._SliderDragMoveSource", dojo.dnd.HtmlDragMoveSource, {slider:null, onDragStart:function (evt) {
  439. this.slider._isDragInProgress = true;
  440. var dragObj = this.createDragMoveObject();
  441. this.slider.notifyListeners();
  442. return dragObj;
  443. }, onDragEnd:function (evt) {
  444. this.slider._isDragInProgress = false;
  445. this.slider.notifyListeners();
  446. }, createDragMoveObject:function () {
  447. var dragObj = new dojo.widget._SliderDragMoveObject(this.dragObject, this.type);
  448. dragObj.slider = this.slider;
  449. if (this.dragClass) {
  450. dragObj.dragClass = this.dragClass;
  451. }
  452. return dragObj;
  453. }, setParent:function (slider) {
  454. this.slider = slider;
  455. }});
  456. dojo.declare("dojo.widget._SliderDragMoveObject", dojo.dnd.HtmlDragMoveObject, {slider:null, onDragMove:function (evt) {
  457. this.updateDragOffset();
  458. if (this.slider.isEnableX) {
  459. var x = this.dragOffset.x + evt.pageX;
  460. this.slider._snapX(x);
  461. }
  462. if (this.slider.isEnableY) {
  463. var y = this.dragOffset.y + evt.pageY;
  464. this.slider._snapY(y);
  465. }
  466. if (this.slider.activeDrag) {
  467. this.slider.notifyListeners();
  468. }
  469. }});