summaryrefslogtreecommitdiff
path: root/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ScrollBar.js
diff options
context:
space:
mode:
Diffstat (limited to 'webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ScrollBar.js')
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ScrollBar.js260
1 files changed, 0 insertions, 260 deletions
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ScrollBar.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ScrollBar.js
deleted file mode 100644
index c4630fba87..0000000000
--- a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ScrollBar.js
+++ /dev/null
@@ -1,260 +0,0 @@
-/* ************************************************************************
-
- qooxdoo - the new era of web development
-
- http://qooxdoo.org
-
- Copyright:
- 2006 by STZ-IDA, Germany, http://www.stz-ida.de
-
- License:
- LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
-
- Authors:
- * Til Schneider (til132)
-
-************************************************************************ */
-
-/* ************************************************************************
-
-
-************************************************************************ */
-
-/**
- * A scroll bar.
- *
- * @param horizontal {boolean ? false} whether the scroll bar should be
- * horizontal. If false it will be vertical.
- */
-qx.OO.defineClass("qx.ui.core.ScrollBar", qx.ui.layout.BoxLayout,
-function(horizontal) {
- qx.ui.layout.BoxLayout.call(this, horizontal ? "horizontal" : "vertical");
-
- this._horizontal = (horizontal == true);
-
- this._scrollBar = new qx.ui.layout.CanvasLayout;
- if (qx.sys.Client.getInstance().isGecko()) {
- // NOTE: We have to force not using position:absolute, because this causes
- // strange looking scrollbars in some cases (e.g. in Firefox under
- // Linux the horizontal scrollbar is too high)
- this._scrollBar.setStyleProperty("position", "");
- }
- this._scrollBar.setOverflow(horizontal ? "scrollX" : "scrollY");
- this._scrollBar.enableInlineEvent("scroll");
- this._scrollBar.addEventListener("scroll", this._onscroll, this);
-
- this._scrollContent = new qx.ui.basic.Terminator;
- if (qx.sys.Client.getInstance().isGecko()) {
- this._scrollContent.setStyleProperty("position", "");
- }
- this._scrollBar.add(this._scrollContent);
-
- if (this._horizontal) {
- this._scrollContent.setHeight(5);
- this._scrollBar.setWidth("100%");
- this._scrollBar.setHeight(this._getScrollBarWidth());
-
- // IE needs that the scrollbar element has a width of +1
- if (qx.sys.Client.getInstance().isMshtml()) {
- this.setHeight(this._getScrollBarWidth());
- this.setOverflow("hidden");
- this._scrollBar.setHeight(this._getScrollBarWidth() + 1);
- this._scrollBar.setTop(-1);
- }
- } else {
- this._scrollContent.setWidth(5);
- this._scrollBar.setHeight("100%");
- this._scrollBar.setWidth(this._getScrollBarWidth());
-
- // IE needs that the scrollbar element has a width of +1
- if (qx.sys.Client.getInstance().isMshtml()) {
- this.setWidth(this._getScrollBarWidth());
- this.setOverflow("hidden");
- this._scrollBar.setWidth(this._getScrollBarWidth() + 1);
- this._scrollBar.setLeft(-1);
- }
- }
-
- this.add(this._scrollBar);
-
- this.setMaximum(0);
-});
-
-/**
- * The current value of the scroll bar. This value is between 0 and
- * (maxium - size), where size is the width of a horizontal resp. the height of
- * a vertical scroll bar in pixels.
- *
- * @see #maximum
- */
-qx.OO.addProperty({ name:"value", type:"number", defaultValue:0, allowNull:false });
-
-/**
- * The maximum value of the scroll bar. Note that the size of the scroll bar is
- * substracted.
- *
- * @see #value
- */
-qx.OO.addProperty({ name:"maximum", type:"number", allowNull:false });
-
-/**
- * Whether to merge consecutive scroll event. If true, events will be collected
- * until the user stops scrolling, so the scroll bar itself will move smoothly
- * and the scrolled content will update asynchroniously.
- */
-qx.OO.addProperty({ name:"mergeEvents", type:"boolean", defaultValue:false, allowNull:false });
-
-
-// property checker
-qx.Proto._checkValue = function(propValue, propData) {
- var innerSize = !this.getElement() ? 0 :
- (this._horizontal ? this.getInnerWidth() : this.getInnerHeight());
-
- // NOTE: We can't use Number.limit here because our maximum may get negative
- // (when the scrollbar isn't needed). In this case Number.limit returns
- // this negative maximum instead of 0. But we need that the minimum is
- // stronger than the maximum.
- // -> We use Math.max and Math.min
- return Math.max(0, Math.min(this.getMaximum() - innerSize, propValue));
-}
-
-
-// property modifier
-qx.Proto._modifyValue = function(propValue, propOldValue, propData) {
- if (! this._internalValueChange && this._isCreated) {
- this._positionKnob(propValue);
- }
- return true;
-}
-
-
-// property modifier
-qx.Proto._modifyMaximum = function(propValue, propOldValue, propData) {
- if (this._horizontal) {
- this._scrollContent.setWidth(propValue);
- } else {
- this._scrollContent.setHeight(propValue);
- }
-
- // recheck the value
- this.setValue(this._checkValue(this.getValue()));
-
- return true;
-}
-
-
-// property modifier
-qx.Proto._modifyVisibility = function(propValue, propOldValue, propData) {
- if (! propValue) {
- this._positionKnob(0);
- } else {
- this._positionKnob(this.getValue());
- }
-
- return qx.ui.layout.BoxLayout.prototype._modifyVisibility.call(this, propValue, propOldValue, propData);
-};
-
-
-// overridden
-qx.Proto._computePreferredInnerWidth = function() {
- return this._horizontal ? 0 : this._getScrollBarWidth();
-}
-
-
-// overridden
-qx.Proto._computePreferredInnerHeight = function() {
- return this._horizontal ? this._getScrollBarWidth() : 0;
-}
-
-
-/**
- * Gets the width of vertical scroll bar.
- *
- * @return {int} the width in pixels.
- */
-qx.Proto._getScrollBarWidth = function() {
- // Auto-detect the scrollbar width
- if (qx.ui.core.ScrollBar._scrollBarWidth == null) {
- var dummy = document.createElement("div");
- dummy.style.width = "100px";
- dummy.style.height = "100px";
- dummy.style.overflow = "scroll";
- dummy.style.visibility = "hidden";
- document.body.appendChild(dummy);
- qx.ui.core.ScrollBar._scrollBarWidth = dummy.offsetWidth - dummy.clientWidth;
- document.body.removeChild(dummy);
- }
- return qx.ui.core.ScrollBar._scrollBarWidth;
-}
-
-
-/**
- * Event handler. Called when the user scrolled.
- *
- * @param evt {Map} the event.
- */
-qx.Proto._onscroll = function(evt) {
- var value = this._horizontal ? this._scrollBar.getScrollLeft() : this._scrollBar.getScrollTop();
- if (this.getMergeEvents()) {
- this._lastScrollEventValue = value;
- window.clearTimeout(this._setValueTimerId);
- var self = this;
- this._setValueTimerId = window.setTimeout(function() {
- self._internalValueChange = true;
- self.setValue(self._lastScrollEventValue);
- self._internalValueChange = false;
- qx.ui.core.Widget.flushGlobalQueues();
- }, qx.ui.core.ScrollBar.EVENT_DELAY);
- } else {
- this._internalValueChange = true;
- this.setValue(value);
- this._internalValueChange = false;
- qx.ui.core.Widget.flushGlobalQueues();
- }
-}
-
-
-/**
- * Positions the scroll bar knob at a certain value.
- *
- * @param value {int} The value where to postion the scroll bar.
- */
-qx.Proto._positionKnob = function(value) {
- if (this._horizontal) {
- this._scrollBar.setScrollLeft(value);
- } else {
- this._scrollBar.setScrollTop(value);
- }
-}
-
-
-// overridden
-qx.Proto._afterAppear = function() {
- qx.ui.layout.BoxLayout.prototype._afterAppear.call(this);
-
- //this.debug("Setting to value: " + this.getValue());
- this._positionKnob(this.getValue());
-}
-
-
-// overridden
-qx.Proto.dispose = function() {
- if (this.getDisposed()) {
- return;
- }
-
- if (this._scrollContent) {
- this._scrollContent.dispose();
- this._scrollContent = null;
- }
-
- return qx.ui.layout.BoxLayout.prototype.dispose.call(this);
-}
-
-
-/**
- * The delay when to update the scroll bar value after a scroll event if
- * {@link #mergeEvents} is true (in milliseconds). All scroll events that arrive
- * in shorter time will be merged.
- */
-qx.Class.EVENT_DELAY = 250;