range.js
上传用户:q2283699q
上传日期:2022-05-17
资源大小:10704k
文件大小:5k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. /*----------------------------------------------------------------------------
  2. |                                Range Class                                  |
  3. |-----------------------------------------------------------------------------|
  4. |                         Created by Erik Arvidsson                           |
  5. |                  (http://webfx.eae.net/contact.html#erik)                   |
  6. |                      For WebFX (http://webfx.eae.net/)                      |
  7. |-----------------------------------------------------------------------------|
  8. | Used to  model the data  used  when working  with  sliders,  scrollbars and |
  9. | progress bars.  Based  on  the  ideas of  the javax.swing.BoundedRangeModel |
  10. | interface  defined  by  Sun  for  Java;   http://java.sun.com/products/jfc/ |
  11. | swingdoc-api-1.0.3/com/sun/java/swing/BoundedRangeModel.html                |
  12. |-----------------------------------------------------------------------------|
  13. |                Copyright (c) 2002, 2005, 2006 Erik Arvidsson                |
  14. |-----------------------------------------------------------------------------|
  15. | Licensed under the Apache License, Version 2.0 (the "License"); you may not |
  16. | use this file except in compliance with the License.  You may obtain a copy |
  17. | of the License at http://www.apache.org/licenses/LICENSE-2.0                |
  18. | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
  19. | Unless  required  by  applicable law or  agreed  to  in  writing,  software |
  20. | distributed under the License is distributed on an  "AS IS" BASIS,  WITHOUT |
  21. | WARRANTIES OR  CONDITIONS OF ANY KIND,  either express or implied.  See the |
  22. | License  for the  specific language  governing permissions  and limitations |
  23. | under the License.                                                          |
  24. |-----------------------------------------------------------------------------|
  25. | 2002-10-14 | Original version released                                      |
  26. | 2005-10-27 | Use Math.round instead of Math.floor                           |
  27. | 2006-05-28 | Changed license to Apache Software License 2.0.                |
  28. |-----------------------------------------------------------------------------|
  29. | Created 2002-10-14 | All changes are in the log above. | Updated 2006-05-28 |
  30. ----------------------------------------------------------------------------*/
  31. function Range() {
  32. this._value = 8;
  33. this._minimum = 0;
  34. this._maximum = 8;
  35. this._extent = 8;
  36. this._isChanging = false;
  37. }
  38. Range.prototype.setValue = function (value) {
  39. value = Math.round(parseFloat(value));
  40. if (isNaN(value)) return;
  41. if (this._value != value) {
  42. if (value + this._extent > this._maximum)
  43. this._value = this._maximum - this._extent;
  44. else if (value < this._minimum)
  45. this._value = this._minimum;
  46. else
  47. this._value = value;
  48. if (!this._isChanging && typeof this.onchange == "function")
  49.  this.onchange();
  50. }
  51. };
  52. Range.prototype.getValue = function () {
  53. return this._value;
  54. };
  55. Range.prototype.setExtent = function (extent) {
  56. if (this._extent != extent) {
  57. if (extent < 0)
  58. this._extent = 0;
  59. else if (this._value + extent > this._maximum)
  60. this._extent = this._maximum - this._value;
  61. else
  62. this._extent = extent;
  63. if (!this._isChanging && typeof this.onchange == "function")
  64. this.onchange();
  65. }
  66. };
  67. Range.prototype.getExtent = function () {
  68. return this._extent;
  69. };
  70. Range.prototype.setMinimum = function (minimum) {
  71. if (this._minimum != minimum) {
  72. var oldIsChanging = this._isChanging;
  73. this._isChanging = true;
  74. this._minimum = minimum;
  75. if (minimum > this._value)
  76. this.setValue(minimum);
  77. if (minimum > this._maximum) {
  78. this._extent = 0;
  79. this.setMaximum(minimum);
  80. this.setValue(minimum);
  81. }
  82. if (minimum + this._extent > this._maximum)
  83. this._extent = this._maximum - this._minimum;
  84. this._isChanging = oldIsChanging;
  85. if (!this._isChanging && typeof this.onchange == "function")
  86. this.onchange();
  87. }
  88. };
  89. Range.prototype.getMinimum = function () {
  90. return this._minimum;
  91. };
  92. Range.prototype.setMaximum = function (maximum) {
  93. if (this._maximum != maximum) {
  94. var oldIsChanging = this._isChanging;
  95. this._isChanging = true;
  96. this._maximum = maximum;
  97. if (maximum < this._value)
  98. this.setValue(maximum - this._extent);
  99. if (maximum < this._minimum) {
  100. this._extent = 0;
  101. this.setMinimum(maximum);
  102. this.setValue(this._maximum);
  103. }
  104. if (maximum < this._minimum + this._extent)
  105. this._extent = this._maximum - this._minimum;
  106. if (maximum < this._value + this._extent)
  107. this._extent = this._maximum - this._value;
  108. this._isChanging = oldIsChanging;
  109. if (!this._isChanging && typeof this.onchange == "function")
  110. this.onchange();
  111. }
  112. };
  113. Range.prototype.getMaximum = function () {
  114. return this._maximum;
  115. };