diff options
Diffstat (limited to 'webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout')
9 files changed, 0 insertions, 4090 deletions
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/CanvasLayoutImpl.js b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/CanvasLayoutImpl.js deleted file mode 100644 index aec420dac6..0000000000 --- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/CanvasLayoutImpl.js +++ /dev/null @@ -1,299 +0,0 @@ -/* ************************************************************************ - - qooxdoo - the new era of web development - - http://qooxdoo.org - - Copyright: - 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org - - License: - LGPL: http://www.gnu.org/licenses/lgpl.html - EPL: http://www.eclipse.org/org/documents/epl-v10.php - See the LICENSE file in the project's top-level directory for details. - - Authors: - * Sebastian Werner (wpbasti) - * Andreas Ecker (ecker) - -************************************************************************ */ - -/* ************************************************************************ - -#module(ui_core) -#module(ui_layout) - -************************************************************************ */ - -qx.OO.defineClass("qx.renderer.layout.CanvasLayoutImpl", qx.renderer.layout.LayoutImpl, -function(vWidget) { - qx.renderer.layout.LayoutImpl.call(this, vWidget); -}); - - - -/*! - Global Structure: - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [09] FLUSH LAYOUT QUEUES OF CHILDREN - [10] LAYOUT CHILD - [11] DISPOSER - - - Inherits from qx.renderer.layout.LayoutImpl: - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [09] FLUSH LAYOUT QUEUES OF CHILDREN - [11] DISPOSER -*/ - - - -/* ---------------------------------------------------------------------------- - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD ---------------------------------------------------------------------------- -*/ - -/*! - Compute and return the box width of the given child -*/ -qx.Proto.computeChildBoxWidth = function(vChild) -{ - var vValue = null; - - if (vChild._computedLeftTypeNull || vChild._computedRightTypeNull) - { - vValue = vChild.getWidthValue(); - } - else if (vChild._hasParent) - { - vValue = this.getWidget().getInnerWidth() - vChild.getLeftValue() - vChild.getRightValue(); - } - - return vValue || vChild._computeBoxWidthFallback(); -} - -/*! - Compute and return the box height of the given child -*/ -qx.Proto.computeChildBoxHeight = function(vChild) -{ - var vValue = null; - - if (vChild._computedTopTypeNull || vChild._computedBottomTypeNull) - { - vValue = vChild.getHeightValue(); - } - else if (vChild._hasParent) - { - vValue = this.getWidget().getInnerHeight() - vChild.getTopValue() - vChild.getBottomValue(); - } - - return vValue || vChild._computeBoxHeightFallback(); -} - - - - - -/* ---------------------------------------------------------------------------- - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD ---------------------------------------------------------------------------- -*/ - -/*! - Compute and return the needed width of the given child -*/ -qx.Proto.computeChildNeededWidth = function(vChild) -{ - var vLeft = vChild._computedLeftTypePercent ? null : vChild.getLeftValue(); - var vRight = vChild._computedRightTypePercent ? null : vChild.getRightValue(); - var vMinBox = vChild._computedMinWidthTypePercent ? null : vChild.getMinWidthValue(); - var vMaxBox = vChild._computedMaxWidthTypePercent ? null : vChild.getMaxWidthValue(); - - if (vLeft != null && vRight != null) - { - var vBox = vChild.getPreferredBoxWidth() || 0; - } - else - { - var vBox = (vChild._computedWidthTypePercent ? null : vChild.getWidthValue()) || vChild.getPreferredBoxWidth() || 0; - } - - return qx.lang.Number.limit(vBox, vMinBox, vMaxBox) + vLeft + vRight + vChild.getMarginLeft() + vChild.getMarginRight(); -} - -/*! - Compute and return the needed height of the given child -*/ -qx.Proto.computeChildNeededHeight = function(vChild) -{ - var vTop = vChild._computedTopTypePercent ? null : vChild.getTopValue(); - var vBottom = vChild._computedBottomTypePercent ? null : vChild.getBottomValue(); - var vMinBox = vChild._computedMinHeightTypePercent ? null : vChild.getMinHeightValue(); - var vMaxBox = vChild._computedMaxHeightTypePercent ? null : vChild.getMaxHeightValue(); - - if (vTop != null && vBottom != null) - { - var vBox = vChild.getPreferredBoxHeight() || 0; - } - else - { - var vBox = (vChild._computedHeightTypePercent ? null : vChild.getHeightValue()) || vChild.getPreferredBoxHeight() || 0; - } - - return qx.lang.Number.limit(vBox, vMinBox, vMaxBox) + vTop + vBottom + vChild.getMarginTop() + vChild.getMarginBottom(); -} - - - - - - -/* ---------------------------------------------------------------------------- - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT ---------------------------------------------------------------------------- -*/ - -/*! - Actions that should be done if the inner width of the widget was changed. - Normally this includes update to percent values and ranges. -*/ -qx.Proto.updateChildOnInnerWidthChange = function(vChild) -{ - // this makes sure that both functions get executed before return - var vUpdatePercent = vChild._recomputePercentX(); - var vUpdateRange = vChild._recomputeRangeX(); - - return vUpdatePercent || vUpdateRange; -} - -/*! - Actions that should be done if the inner height of the widget was changed. - Normally this includes update to percent values and ranges. -*/ -qx.Proto.updateChildOnInnerHeightChange = function(vChild) -{ - // this makes sure that both functions get executed before return - var vUpdatePercent = vChild._recomputePercentY(); - var vUpdateRange = vChild._recomputeRangeY(); - - return vUpdatePercent || vUpdateRange; -} - - - - - -/* ---------------------------------------------------------------------------- - [10] LAYOUT CHILD ---------------------------------------------------------------------------- -*/ - -/*! - This is called from qx.ui.core.Widget and it's task is to apply the layout - (excluding border and padding) to the child. -*/ -qx.Proto.layoutChild = function(vChild, vJobs) -{ - this.layoutChild_sizeX_essentialWrapper(vChild, vJobs); - this.layoutChild_sizeY_essentialWrapper(vChild, vJobs); - - this.layoutChild_sizeLimitX(vChild, vJobs); - this.layoutChild_sizeLimitY(vChild, vJobs); - - this.layoutChild_locationX(vChild, vJobs); - this.layoutChild_locationY(vChild, vJobs); - - this.layoutChild_marginX(vChild, vJobs); - this.layoutChild_marginY(vChild, vJobs); -} - -if (qx.core.Client.getInstance().isMshtml() || qx.core.Client.getInstance().isOpera()) -{ - qx.Proto.layoutChild_sizeX = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.width || vJobs.minWidth || vJobs.maxWidth || vJobs.left || vJobs.right) - { - if (vChild._computedMinWidthTypeNull && vChild._computedWidthTypeNull && vChild._computedMaxWidthTypeNull && !(!vChild._computedLeftTypeNull && !vChild._computedRightTypeNull)) - { - vChild._resetRuntimeWidth(); - } - else - { - vChild._applyRuntimeWidth(vChild.getBoxWidth()); - } - } - } - - qx.Proto.layoutChild_sizeY = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.height || vJobs.minHeight || vJobs.maxHeight || vJobs.top || vJobs.bottom) - { - if (vChild._computedMinHeightTypeNull && vChild._computedHeightTypeNull && vChild._computedMaxHeightTypeNull && !(!vChild._computedTopTypeNull && !vChild._computedBottomTypeNull)) - { - vChild._resetRuntimeHeight(); - } - else - { - vChild._applyRuntimeHeight(vChild.getBoxHeight()); - } - } - } -} -else -{ - qx.Proto.layoutChild_sizeX = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.width) { - vChild._computedWidthTypeNull ? vChild._resetRuntimeWidth() : vChild._applyRuntimeWidth(vChild.getWidthValue()); - } - } - - qx.Proto.layoutChild_sizeY = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.height) { - vChild._computedHeightTypeNull ? vChild._resetRuntimeHeight() : vChild._applyRuntimeHeight(vChild.getHeightValue()); - } - } -} - -qx.Proto.layoutChild_locationX = function(vChild, vJobs) -{ - var vWidget = this.getWidget(); - - if (vJobs.initial || vJobs.left || vJobs.parentPaddingLeft) { - vChild._computedLeftTypeNull ? vChild._computedRightTypeNull && vWidget.getPaddingLeft() > 0 ? vChild._applyRuntimeLeft(vWidget.getPaddingLeft()) : vChild._resetRuntimeLeft() : vChild._applyRuntimeLeft(vChild.getLeftValue() + vWidget.getPaddingLeft()); - } - - if (vJobs.initial || vJobs.right || vJobs.parentPaddingRight) { - vChild._computedRightTypeNull ? vChild._computedLeftTypeNull && vWidget.getPaddingRight() > 0 ? vChild._applyRuntimeRight(vWidget.getPaddingRight()) : vChild._resetRuntimeRight() : vChild._applyRuntimeRight(vChild.getRightValue() + vWidget.getPaddingRight()); - } -} - -qx.Proto.layoutChild_locationY = function(vChild, vJobs) -{ - var vWidget = this.getWidget(); - - if (vJobs.initial || vJobs.top || vJobs.parentPaddingTop) { - vChild._computedTopTypeNull ? vChild._computedBottomTypeNull && vWidget.getPaddingTop() > 0 ? vChild._applyRuntimeTop(vWidget.getPaddingTop()) : vChild._resetRuntimeTop() : vChild._applyRuntimeTop(vChild.getTopValue() + vWidget.getPaddingTop()); - } - - if (vJobs.initial || vJobs.bottom || vJobs.parentPaddingBottom) { - vChild._computedBottomTypeNull ? vChild._computedTopTypeNull && vWidget.getPaddingBottom() > 0 ? vChild._applyRuntimeBottom(vWidget.getPaddingBottom()) : vChild._resetRuntimeBottom() : vChild._applyRuntimeBottom(vChild.getBottomValue() + vWidget.getPaddingBottom()); - } -} diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/DockLayoutImpl.js b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/DockLayoutImpl.js deleted file mode 100644 index 4c77209f50..0000000000 --- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/DockLayoutImpl.js +++ /dev/null @@ -1,490 +0,0 @@ -/* ************************************************************************ - - qooxdoo - the new era of web development - - http://qooxdoo.org - - Copyright: - 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org - - License: - LGPL: http://www.gnu.org/licenses/lgpl.html - EPL: http://www.eclipse.org/org/documents/epl-v10.php - See the LICENSE file in the project's top-level directory for details. - - Authors: - * Sebastian Werner (wpbasti) - * Andreas Ecker (ecker) - -************************************************************************ */ - -/* ************************************************************************ - -#module(ui_layout) - -************************************************************************ */ - -qx.OO.defineClass("qx.renderer.layout.DockLayoutImpl", qx.renderer.layout.LayoutImpl, -function(vWidget) { - qx.renderer.layout.LayoutImpl.call(this, vWidget); -}); - - -/*! - Global Structure: - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [09] FLUSH LAYOUT QUEUES OF CHILDREN - [10] LAYOUT CHILD - [11] DISPOSER - - - Inherits from qx.renderer.layout.LayoutImpl: - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [11] DISPOSER -*/ - - - - -/* ---------------------------------------------------------------------------- - [00] ADDITIONAL GLOBAL DATA AND METHODS ---------------------------------------------------------------------------- -*/ - -qx.renderer.layout.DockLayoutImpl.METHOD_LOCATION = "layoutChild_location_"; - -qx.renderer.layout.DockLayoutImpl._childRanking = { - vertical : function(c) { return c.getVerticalAlign() ? 1e6 : c.getHorizontalAlign() ? 2e6 : 3e6; }, - horizontal : function(c) { return c.getHorizontalAlign() ? 1e6 : c.getVerticalAlign() ? 2e6 : 3e6; }, - ordered : function(c) { return c.getHorizontalAlign() || c.getVerticalAlign() ? 1e6 : 2e6; } -} - -qx.renderer.layout.DockLayoutImpl._childCheck = -{ - common : function(vChild) { - if (!(vChild._computedLeftTypeNull && vChild._computedRightTypeNull && vChild._computedTopTypeNull && vChild._computedBottomTypeNull)) { - throw new Error("qx.renderer.layout.DockLayoutImpl: It is not allowed to define any location values for children: " + vChild + "!"); - } - }, - - horizontal : function(vChild) - { - if (!(vChild._computedMinHeightTypeNull && vChild._computedHeightTypeNull && vChild._computedMaxHeightTypeNull)) { - throw new Error("qx.renderer.layout.DockLayoutImpl: It is not allowed to define any vertical dimension for 'horizontal' placed children: " + vChild + "!"); - } - }, - - vertical : function(vChild) - { - if (!(vChild._computedMinWidthTypeNull && vChild._computedWidthTypeNull && vChild._computedMaxWidthTypeNull)) { - throw new Error("qx.renderer.layout.DockLayoutImpl: It is not allowed to define any horizontal dimension for 'vertical' placed children: " + vChild + "!"); - } - }, - - "default" : function(vChild) - { - qx.renderer.layout.DockLayoutImpl._childCheck.horizontal(vChild); - qx.renderer.layout.DockLayoutImpl._childCheck.vertical(vChild); - } -} - - - - - - - -/* ---------------------------------------------------------------------------- - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD ---------------------------------------------------------------------------- -*/ - -/*! - Compute and return the box width of the given child -*/ -qx.Proto.computeChildBoxWidth = function(vChild) -{ - if (this.getChildAlignMode(vChild) == "horizontal") { - return vChild.getWidthValue() || vChild._computeBoxWidthFallback(); - } - - return this.getWidget().getInnerWidth() - this._lastLeft - this._lastRight; -} - -/*! - Compute and return the box height of the given child -*/ -qx.Proto.computeChildBoxHeight = function(vChild) -{ - if (this.getChildAlignMode(vChild) == "vertical") { - return vChild.getHeightValue() || vChild._computeBoxHeightFallback(); - } - - return this.getWidget().getInnerHeight() - this._lastTop - this._lastBottom; -} - - - - - - - -/* ---------------------------------------------------------------------------- - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT ---------------------------------------------------------------------------- -*/ - -/*! - Actions that should be done if the inner width of the widget was changed. - Normally this includes update to percent values and ranges. -*/ -qx.Proto.updateChildOnInnerWidthChange = function(vChild) -{ - vChild._recomputePercentX(); - vChild.addToLayoutChanges("location"); - - // inform the caller if there were any notable changes occured - return true; -} - -/*! - Actions that should be done if the inner height of the widget was changed. - Normally this includes update to percent values and ranges. -*/ -qx.Proto.updateChildOnInnerHeightChange = function(vChild) -{ - vChild._recomputePercentY(); - vChild.addToLayoutChanges("location"); - - // inform the caller if there were any notable changes occured - return true; -} - - - - - -/* ---------------------------------------------------------------------------- - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH ---------------------------------------------------------------------------- -*/ - -/*! - Invalidate and recompute things because of job in queue (before the rest of job handling will be executed). -*/ -qx.Proto.updateSelfOnJobQueueFlush = qx.lang.Function.returnFalse; - - - - - - - -/* ---------------------------------------------------------------------------- - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH ---------------------------------------------------------------------------- -*/ - -/*! - Updates children on special jobs -*/ -qx.Proto.updateChildrenOnJobQueueFlush = function(vQueue) -{ - if (vQueue.mode || vQueue.addChild || vQueue.removeChild) { - this.getWidget()._addChildrenToLayoutQueue("location"); - } -} - - - - - - - - - -/* ---------------------------------------------------------------------------- - [09] FLUSH LAYOUT QUEUES OF CHILDREN ---------------------------------------------------------------------------- -*/ - -/*! - This method have full control of the order in which the - registered (or also non-registered) children should be - layouted on the horizontal axis. -*/ -qx.Proto.flushChildrenQueue = function(vChildrenQueue) -{ - var vWidget=this.getWidget(), vChildren=vWidget.getVisibleChildren(), vChildrenLength=vChildren.length, vMode=vWidget.getMode(); - - // reset layout - this._lastLeft = this._lastRight = this._lastTop = this._lastBottom = 0; - - // sorting children - var vRankImpl = qx.renderer.layout.DockLayoutImpl._childRanking[vMode]; - var vOrderedChildren = qx.lang.Array.copy(vChildren).sort(function(c1, c2) { - return (vRankImpl(c1) + vChildren.indexOf(c1)) - (vRankImpl(c2) + vChildren.indexOf(c2)); - }); - - // flushing children - for (var i=0; i<vChildrenLength; i++) { - vWidget._layoutChild(vOrderedChildren[i]); - } -} - -qx.Proto.getChildAlign = function(vChild) { - return vChild.getVerticalAlign() || vChild.getHorizontalAlign() || "default"; -} - -qx.Proto.getChildAlignMode = function(vChild) { - return vChild.getVerticalAlign() ? "vertical" : vChild.getHorizontalAlign() ? "horizontal" : "default"; -} - - - - - - - -/* ---------------------------------------------------------------------------- - [10] LAYOUT CHILD ---------------------------------------------------------------------------- -*/ - -/*! - This is called from qx.ui.core.Widget and it's task is to apply the layout - (excluding border and padding) to the child. -*/ -qx.Proto.layoutChild = function(vChild, vJobs) -{ - qx.renderer.layout.DockLayoutImpl._childCheck.common(vChild); - qx.renderer.layout.DockLayoutImpl._childCheck[this.getChildAlignMode(vChild)](vChild); - - this.layoutChild_sizeX_essentialWrapper(vChild, vJobs); - this.layoutChild_sizeY_essentialWrapper(vChild, vJobs); - - this.layoutChild_sizeLimitX(vChild, vJobs); - this.layoutChild_sizeLimitY(vChild, vJobs); - - this[qx.renderer.layout.DockLayoutImpl.METHOD_LOCATION + this.getChildAlign(vChild)](vChild, vJobs); -} - -qx.Proto.layoutChild_location_top = function(vChild, vJobs) -{ - vChild._applyRuntimeTop(this._lastTop); - vChild._applyRuntimeLeft(this._lastLeft); - - this.layoutChild_location_horizontal(vChild); - - this._lastTop += vChild.getBoxHeight(); -} - -qx.Proto.layoutChild_location_left = function(vChild, vJobs) -{ - vChild._applyRuntimeLeft(this._lastLeft); - vChild._applyRuntimeTop(this._lastTop); - - this.layoutChild_location_vertical(vChild); - - this._lastLeft += vChild.getBoxWidth(); -} - - - - - - - -if (qx.core.Client.getInstance().isMshtml() || qx.core.Client.getInstance().isOpera()) -{ - qx.Proto._applyComputedWidth = function(vChild) - { - // direct recompute (need to be done, while layouting as the - // _last* variable changes during layout process) - vChild._recomputeBoxWidth(); - - // wrong: simple invalidates are enough here - // correct: needs recompute to inform children (to update centering for example) - vChild._recomputeOuterWidth(); - vChild._recomputeInnerWidth(); - - // apply calculated width - vChild._applyRuntimeWidth(vChild.getBoxWidth()); - } - - qx.Proto._applyComputedHeight = function(vChild) - { - // direct recompute (need to be done, while layouting as the - // _last* variable changes during layout process) - vChild._recomputeBoxHeight(); - - // wrong: simple invalidates are enough here - // correct: needs recompute to inform children (to update centering for example) - vChild._recomputeOuterHeight(); - vChild._recomputeInnerHeight(); - - // apply calculated height - vChild._applyRuntimeHeight(vChild.getBoxHeight()); - } - - qx.Proto.layoutChild_sizeX = function(vChild, vJobs) - { - // We need to respect all dimension properties on the horizontal axis in internet explorer to set the 'width' style - if (vJobs.initial || vJobs.width || vJobs.minWidth || vJobs.maxWidth) { - vChild._computedWidthTypeNull && vChild._computedMinWidthTypeNull && vChild._computedMaxWidthTypeNull ? vChild._resetRuntimeWidth() : vChild._applyRuntimeWidth(vChild.getBoxWidth()); - } - } - - qx.Proto.layoutChild_sizeY = function(vChild, vJobs) - { - // We need to respect all dimension properties on the vertical axis in internet explorer to set the 'height' style - if (vJobs.initial || vJobs.height || vJobs.minHeight || vJobs.maxHeight) { - vChild._computedHeightTypeNull && vChild._computedMinHeightTypeNull && vChild._computedMaxHeightTypeNull ? vChild._resetRuntimeHeight() : vChild._applyRuntimeHeight(vChild.getBoxHeight()); - } - } - - qx.Proto.layoutChild_location_horizontal = function(vChild) { - this._applyComputedWidth(vChild); - } - - qx.Proto.layoutChild_location_vertical = function(vChild) { - this._applyComputedHeight(vChild); - } - - qx.Proto.layoutChild_location_right = function(vChild, vJobs) - { - vChild._applyRuntimeLeft(this.getWidget().getInnerWidth() - this._lastRight - vChild.getBoxWidth()); - vChild._applyRuntimeTop(this._lastTop); - - this.layoutChild_location_vertical(vChild); - - this._lastRight += vChild.getBoxWidth(); - } - - qx.Proto.layoutChild_location_bottom = function(vChild, vJobs) - { - vChild._applyRuntimeTop(this.getWidget().getInnerHeight() - this._lastBottom - vChild.getBoxHeight()); - vChild._applyRuntimeLeft(this._lastLeft); - - this.layoutChild_location_horizontal(vChild); - - this._lastBottom += vChild.getBoxHeight(); - } - - qx.Proto.layoutChild_location_default = function(vChild, vJobs) - { - var vWidget = this.getWidget(); - - vChild._resetRuntimeRight(); - vChild._resetRuntimeBottom(); - - vChild._applyRuntimeTop(this._lastTop); - vChild._applyRuntimeLeft(this._lastLeft); - - this._applyComputedWidth(vChild); - this._applyComputedHeight(vChild); - } -} -else -{ - qx.Proto._applyComputedWidth = function(vChild) - { - // direct recompute (need to be done, while layouting as the - // _last* variable changes during layout process) - vChild._recomputeBoxWidth(); - - // wrong: simple invalidates are enough here - // correct: needs recompute to inform children (to update centering for example) - vChild._recomputeOuterWidth(); - vChild._recomputeInnerWidth(); - } - - qx.Proto._applyComputedHeight = function(vChild) - { - // direct recompute (need to be done, while layouting as the - // _last* variable changes during layout process) - vChild._recomputeBoxHeight(); - - // wrong: simple invalidates are enough here - // correct: needs recompute to inform children (to update centering for example) - vChild._recomputeOuterHeight(); - vChild._recomputeInnerHeight(); - } - - qx.Proto.layoutChild_sizeX = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.width) { - vChild._computedWidthTypeNull ? vChild._resetRuntimeWidth() : vChild._applyRuntimeWidth(vChild.getWidthValue()); - } - } - - qx.Proto.layoutChild_sizeY = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.height) { - vChild._computedHeightTypeNull ? vChild._resetRuntimeHeight() : vChild._applyRuntimeHeight(vChild.getHeightValue()); - } - } - - qx.Proto.layoutChild_location_horizontal = function(vChild) - { - this._applyComputedWidth(vChild); - vChild._applyRuntimeRight(this._lastRight); - } - - qx.Proto.layoutChild_location_vertical = function(vChild) - { - this._applyComputedHeight(vChild); - vChild._applyRuntimeBottom(this._lastBottom); - } - - qx.Proto.layoutChild_location_right = function(vChild, vJobs) - { - vChild._applyRuntimeRight(this._lastRight); - vChild._applyRuntimeTop(this._lastTop); - - this.layoutChild_location_vertical(vChild); - - this._lastRight += vChild.getBoxWidth(); - } - - qx.Proto.layoutChild_location_bottom = function(vChild, vJobs) - { - vChild._applyRuntimeBottom(this._lastBottom); - vChild._applyRuntimeLeft(this._lastLeft); - - this.layoutChild_location_horizontal(vChild); - - this._lastBottom += vChild.getBoxHeight(); - } - - qx.Proto.layoutChild_location_default = function(vChild, vJobs) - { - vChild._resetRuntimeWidth(); - vChild._resetRuntimeHeight(); - - vChild._applyRuntimeTop(this._lastTop); - vChild._applyRuntimeRight(this._lastRight); - vChild._applyRuntimeBottom(this._lastBottom); - vChild._applyRuntimeLeft(this._lastLeft); - - this._applyComputedWidth(vChild); - this._applyComputedHeight(vChild); - } -} diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/FlowLayoutImpl.js b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/FlowLayoutImpl.js deleted file mode 100644 index 153356d3bb..0000000000 --- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/FlowLayoutImpl.js +++ /dev/null @@ -1,428 +0,0 @@ -/* ************************************************************************ - - qooxdoo - the new era of web development - - http://qooxdoo.org - - Copyright: - 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org - - License: - LGPL: http://www.gnu.org/licenses/lgpl.html - EPL: http://www.eclipse.org/org/documents/epl-v10.php - See the LICENSE file in the project's top-level directory for details. - - Authors: - * Sebastian Werner (wpbasti) - * Andreas Ecker (ecker) - -************************************************************************ */ - -/* ************************************************************************ - -#module(ui_layout) - -************************************************************************ */ - -qx.OO.defineClass("qx.renderer.layout.FlowLayoutImpl", qx.renderer.layout.LayoutImpl, -function(vWidget) { - qx.renderer.layout.LayoutImpl.call(this, vWidget); -}); - -qx.renderer.layout.FlowLayoutImpl.STR_FIRST = "getFirstVisibleChild"; -qx.renderer.layout.FlowLayoutImpl.STR_LAST = "getLastVisibleChild"; -qx.renderer.layout.FlowLayoutImpl.STR_NEXT = "getNextSibling"; -qx.renderer.layout.FlowLayoutImpl.STR_PREVIOUS = "getPreviousSibling"; - - -/*! - Global Structure: - - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [09] FLUSH LAYOUT QUEUES OF CHILDREN - [10] LAYOUT CHILD - [11] DISPOSER - - Inherits from qx.renderer.layout.LayoutImpl: - - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [11] DISPOSER -*/ - - - - - - -/* ---------------------------------------------------------------------------- - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN ---------------------------------------------------------------------------- -*/ - -/*! - Compute and return the width needed by all children of this widget -*/ -qx.Proto.computeChildrenNeededWidth = function() -{ - var w = this.getWidget(); - return qx.renderer.layout.LayoutImpl.prototype.computeChildrenNeededWidth_sum.call(this) + ((w.getVisibleChildrenLength()-1) * w.getHorizontalSpacing()); -} - -/*! - Calculate the layout to get the needed height of the children -*/ -qx.Proto.computeChildrenNeededHeight = function() -{ - var vWidget = this.getWidget(); - - var vInnerWidth = vWidget.getInnerWidth(); - - var vHorizontalSpacing = vWidget.getHorizontalSpacing(); - var vVerticalSpacing = vWidget.getVerticalSpacing(); - var vReversed = vWidget.getReverseChildrenOrder(); - - var vRowWidth = 0; - var vRowHeight = 0; - - var vRowHeightSum = 0; - - for (var i=0, ch=vWidget.getVisibleChildren(), chl=ch.length, chc; i<chl; i++) - { - chc = vReversed ? ch[chl-1-i] : ch[i]; - - vRowWidth += chc.getNeededWidth(); - - if (vRowWidth > vInnerWidth) - { - vRowHeightSum += vRowHeight + vVerticalSpacing; - vRowWidth = chc.getNeededWidth(); - vRowHeight = chc.getNeededHeight(); - } - else - { - vRowHeight = Math.max(vRowHeight, chc.getNeededHeight()); - } - - vRowWidth += vHorizontalSpacing; - } - - return vRowHeightSum + vRowHeight; -} - - - - - - - -/* ---------------------------------------------------------------------------- - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS ---------------------------------------------------------------------------- -*/ - -/*! - Things to do and layout when any of the childs changes it's outer width. - Needed by layouts where the children depends on each-other, like flow- or box-layouts. -*/ -qx.Proto.updateSelfOnChildOuterWidthChange = function(vChild) -{ - // If a child only change it's width also recompute the height - // as the layout flows around here - //this.getWidget()._recomputeNeededHeightHelper(); - this.getWidget()._invalidatePreferredInnerHeight(); -} - - - - - - -/* ---------------------------------------------------------------------------- - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT ---------------------------------------------------------------------------- -*/ - -/*! - Actions that should be done if the inner width of the widget was changed. - Normally this includes update to percent values and ranges. -*/ -qx.Proto.updateChildOnInnerWidthChange = function(vChild) -{ - vChild._recomputePercentX(); - vChild.addToLayoutChanges("location"); - - return true; -} - -/*! - Actions that should be done if the inner height of the widget was changed. - Normally this includes update to percent values and ranges. -*/ -qx.Proto.updateChildOnInnerHeightChange = function(vChild) -{ - vChild._recomputePercentY(); - vChild.addToLayoutChanges("location"); - - return true; -} - - - - - - - -/* ---------------------------------------------------------------------------- - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH ---------------------------------------------------------------------------- -*/ - -/*! - Updates children on special jobs -*/ -qx.Proto.updateChildrenOnJobQueueFlush = function(vQueue) -{ - if (vQueue.horizontalSpacing || vQueue.verticalSpacing || vQueue.reverseChildrenOrder || vQueue.horizontalChildrenAlign || vQueue.verticalChildrenAlign) { - this.getWidget()._addChildrenToLayoutQueue("location"); - } -} - - - - - - -/* ---------------------------------------------------------------------------- - [08] CHILDREN ADD/REMOVE/MOVE HANDLING ---------------------------------------------------------------------------- -*/ - -/*! - This method combines calls of methods which should be done if a widget should be removed from the current layout. - Needed by layouts where the children depends on each-other, like flow- or box-layouts. -*/ -qx.Proto.updateChildrenOnRemoveChild = function(vChild, vIndex) -{ - var w=this.getWidget(), ch=w.getVisibleChildren(), chl=ch.length, chc, i=-1; - - if (w.getReverseChildrenOrder()) - { - while((chc=ch[++i]) && i<vIndex) { - chc.addToLayoutChanges("location"); - } - } - else - { - i+=vIndex; - while(chc=ch[++i]) { - chc.addToLayoutChanges("location"); - } - } -} - -/*! - This method combines calls of methods which should be done if a child should be moved - inside the same parent to a new positions. - Needed by layouts where the children depends on each-other, like flow- or box-layouts. -*/ -qx.Proto.updateChildrenOnMoveChild = function(vChild, vIndex, vOldIndex) -{ - for (var i=Math.min(vIndex, vOldIndex), ch=this.getWidget().getVisibleChildren(), l=ch.length; i<l; i++) { - ch[i].addToLayoutChanges("location"); - } -} - - - - - - -/* ---------------------------------------------------------------------------- - [09] FLUSH LAYOUT QUEUES OF CHILDREN ---------------------------------------------------------------------------- -*/ - -/*! - This method have full control of the order in which the - registered (or also non-registered) children should be - layouted on the horizontal axis. -*/ - -qx.Proto.flushChildrenQueue = function(vChildrenQueue) -{ - var w=this.getWidget(), ch=w.getVisibleChildren(), chl=ch.length, chc, chh; - - if (w.getReverseChildrenOrder()) - { - // layout all childs from the first child - // with an own layout request to the end - var i=chl, changed=false; - while(chc=ch[--i]) - { - chh = chc.toHashCode(); - - if (changed || vChildrenQueue[chh]) - { - w._layoutChild(chc); - changed = true; - } - } - } - else - { - // layout all childs from the first child - // with an own layout request to the end - var i=-1, changed=false; - while(chc=ch[++i]) - { - chh = chc.toHashCode(); - - if (changed || vChildrenQueue[chh]) - { - w._layoutChild(chc); - changed = true; - } - } - } -} - - - - - - -/* ---------------------------------------------------------------------------- - [10] LAYOUT CHILD ---------------------------------------------------------------------------- -*/ - -qx.Proto.layoutChild = function(vChild, vJobs) -{ - this.layoutChild_sizeX_essentialWrapper(vChild, vJobs); - this.layoutChild_sizeY_essentialWrapper(vChild, vJobs); - - this.layoutChild_sizeLimitX(vChild, vJobs); - this.layoutChild_sizeLimitY(vChild, vJobs); - - this.layoutChild_marginX(vChild, vJobs); - this.layoutChild_marginY(vChild, vJobs); - - this.layoutChild_location(vChild, vJobs); -} - -if (qx.core.Client.getInstance().isMshtml() || qx.core.Client.getInstance().isOpera()) -{ - /*! - We need to respect all dimension properties on the horizontal axis in - internet explorer to set the 'width' style - */ - qx.Proto.layoutChild_sizeX = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.width || vJobs.minWidth || vJobs.maxWidth) { - vChild._computedWidthTypeNull && vChild._computedMinWidthTypeNull && vChild._computedMaxWidthTypeNull ? vChild._resetRuntimeWidth() : vChild._applyRuntimeWidth(vChild.getBoxWidth()); - } - } - - /*! - We need to respect all dimension properties on the vertical axis in - internet explorer to set the 'height' style - */ - qx.Proto.layoutChild_sizeY = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.height || vJobs.minHeight || vJobs.maxHeight) { - vChild._computedHeightTypeNull && vChild._computedMinHeightTypeNull && vChild._computedMaxHeightTypeNull ? vChild._resetRuntimeHeight() : vChild._applyRuntimeHeight(vChild.getBoxHeight()); - } - } -} -else -{ - qx.Proto.layoutChild_sizeX = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.width) { - vChild._computedWidthTypeNull ? vChild._resetRuntimeWidth() : vChild._applyRuntimeWidth(vChild.getWidthValue()); - } - } - - qx.Proto.layoutChild_sizeY = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.height) { - vChild._computedHeightTypeNull ? vChild._resetRuntimeHeight() : vChild._applyRuntimeHeight(vChild.getHeightValue()); - } - } -} - -qx.Proto.layoutChild_location = function(vChild, vJobs) -{ - var vWidget = this.getWidget(); - var vReverse = vWidget.getReverseChildrenOrder(); - - var vMethodBegin = vReverse ? qx.renderer.layout.FlowLayoutImpl.STR_LAST : qx.renderer.layout.FlowLayoutImpl.STR_FIRST; - var vMethodContinue = vReverse ? qx.renderer.layout.FlowLayoutImpl.STR_NEXT : qx.renderer.layout.FlowLayoutImpl.STR_PREVIOUS; - - if (vChild == vWidget[vMethodBegin]()) - { - vChild._cachedLocationHorizontal = vChild._cachedLocationVertical = vChild._cachedRow = 0; - } - else - { - var vTempChild = vChild[vMethodContinue](); - - // stupidly update cache value (check them later) - vChild._cachedLocationHorizontal = vTempChild._cachedLocationHorizontal + vTempChild.getOuterWidth() + vWidget.getHorizontalSpacing(); - vChild._cachedLocationVertical = vTempChild._cachedLocationVertical; - vChild._cachedRow = vTempChild._cachedRow; - - // check now - if ((vChild._cachedLocationHorizontal + vChild.getOuterWidth()) > vWidget.getInnerWidth()) - { - // evaluate width of previous row - vRowMax = vTempChild.getOuterHeight(); - while((vTempChild = vTempChild[vMethodContinue]()) && vTempChild._cachedRow == vChild._cachedRow) { - vRowMax = Math.max(vRowMax, vTempChild.getOuterHeight()); - } - - // switch to new row - vChild._cachedLocationHorizontal = 0; - vChild._cachedLocationVertical += vWidget.getVerticalSpacing() + vRowMax; - vChild._cachedRow++; - } - } - - // add margins and parent padding - if (vWidget.getHorizontalChildrenAlign() == "right") - { - vChild._resetRuntimeLeft(); - vChild._applyRuntimeRight(vWidget.getPaddingRight() + vChild._cachedLocationHorizontal); - } - else - { - vChild._resetRuntimeRight(); - vChild._applyRuntimeLeft(vWidget.getPaddingLeft() + vChild._cachedLocationHorizontal); - } - - if (vWidget.getVerticalChildrenAlign() == "bottom") - { - vChild._resetRuntimeTop(); - vChild._applyRuntimeBottom(vWidget.getPaddingBottom() + vChild._cachedLocationVertical); - } - else - { - vChild._resetRuntimeBottom(); - vChild._applyRuntimeTop(vWidget.getPaddingTop() + vChild._cachedLocationVertical); - } -} diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/GridLayoutImpl.js b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/GridLayoutImpl.js deleted file mode 100644 index e6079d31eb..0000000000 --- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/GridLayoutImpl.js +++ /dev/null @@ -1,302 +0,0 @@ -/* ************************************************************************ - - qooxdoo - the new era of web development - - http://qooxdoo.org - - Copyright: - 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org - - License: - LGPL: http://www.gnu.org/licenses/lgpl.html - EPL: http://www.eclipse.org/org/documents/epl-v10.php - See the LICENSE file in the project's top-level directory for details. - - Authors: - * Sebastian Werner (wpbasti) - * Andreas Ecker (ecker) - -************************************************************************ */ - -/* ************************************************************************ - -#module(ui_layout) - -************************************************************************ */ - -qx.OO.defineClass("qx.renderer.layout.GridLayoutImpl", qx.renderer.layout.LayoutImpl, -function(vWidget) { - qx.renderer.layout.LayoutImpl.call(this, vWidget); -}); - - - - -/*! - Global Structure: - - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [09] FLUSH LAYOUT QUEUES OF CHILDREN - [10] LAYOUT CHILD - [11] DISPOSER - - Inherits from qx.renderer.layout.LayoutImpl: - - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [09] FLUSH LAYOUT QUEUES OF CHILDREN - [11] DISPOSER -*/ - - - -/* ---------------------------------------------------------------------------- - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD ---------------------------------------------------------------------------- -*/ - -/*! - Compute and return the box width of the given child. -*/ -qx.Proto.computeChildBoxWidth = function(vChild) -{ - var vWidget = this.getWidget(); - var vColWidth = vWidget.getColumnInnerWidth(vChild._col, vChild._row); - - // extend colwidth to spanned area - if (vWidget.isSpanStart(vChild._col, vChild._row)) - { - var vEntry = vWidget.getSpanEntry(vChild._col, vChild._row); - for (var i=1; i<vEntry.colLength; i++) - { - // right padding from the previous cell - vColWidth += vWidget.getComputedCellPaddingRight(vChild._col + i - 1, vChild._row); - - // left padding from the current cell - vColWidth += vWidget.getComputedCellPaddingLeft(vChild._col + i, vChild._row); - - // spacing between previous and current cell - vColWidth += vWidget.getHorizontalSpacing(); - - // inner width of the current cell plus - vColWidth += vWidget.getColumnInnerWidth(vChild._col + i, vChild._row); - } - } - - return vChild.getAllowStretchX() ? vColWidth : Math.min(vChild.getWidthValue(), vColWidth); -} - -/*! - Compute and return the box height of the given child. -*/ -qx.Proto.computeChildBoxHeight = function(vChild) -{ - var vWidget = this.getWidget(); - var vRowHeight = vWidget.getRowInnerHeight(vChild._col, vChild._row); - - // extend colwidth to spanned area - if (vWidget.isSpanStart(vChild._col, vChild._row)) - { - var vEntry = vWidget.getSpanEntry(vChild._col, vChild._row); - for (var i=1; i<vEntry.rowLength; i++) - { - // right padding from the previous cell - vRowHeight += vWidget.getComputedCellPaddingBottom(vChild._col, vChild._row + i - 1); - - // left padding from the current cell - vRowHeight += vWidget.getComputedCellPaddingTop(vChild._col, vChild._row + i); - - // spacing between previous and current cell - vRowHeight += vWidget.getVerticalSpacing(); - - // inner width of the current cell plus - vRowHeight += vWidget.getRowInnerHeight(vChild._col, vChild._row + i); - } - } - - return vChild.getAllowStretchY() ? vRowHeight : Math.min(vChild.getHeightValue(), vRowHeight); -} - - - - - - - -/* ---------------------------------------------------------------------------- - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN ---------------------------------------------------------------------------- -*/ - -/*! - Compute and return the width needed by all children of this widget - which is in a grid layout the width used by all columns. -*/ -qx.Proto.computeChildrenNeededWidth = function() -{ - var vWidget = this.getWidget(); - var vSpacingX = vWidget.getHorizontalSpacing(); - var vSum = -vSpacingX; - - for (var i=0, l=vWidget.getColumnCount(); i<l; i++) { - vSum += vWidget.getColumnBoxWidth(i) + vSpacingX; - } - - return vSum; -} - -/*! - Compute and return the height needed by all children of this widget - which is in a grid layout the height used by all rows. -*/ -qx.Proto.computeChildrenNeededHeight = function() -{ - var vWidget = this.getWidget(); - var vSpacingY = vWidget.getVerticalSpacing(); - var vSum = -vSpacingY; - - for (var i=0, l=vWidget.getRowCount(); i<l; i++) { - vSum += vWidget.getRowBoxHeight(i) + vSpacingY; - } - - return vSum; -} - - - - - - - -/* ---------------------------------------------------------------------------- - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT ---------------------------------------------------------------------------- -*/ - -/*! - Actions that should be done if the inner width of the widget was changed. - Normally this includes update to percent values and ranges. -*/ -qx.Proto.updateChildOnInnerWidthChange = function(vChild) -{ - vChild._recomputePercentX(); - vChild.addToLayoutChanges("locationX"); - - return true; -} - -/*! - Actions that should be done if the inner height of the widget was changed. - Normally this includes update to percent values and ranges. -*/ -qx.Proto.updateChildOnInnerHeightChange = function(vChild) -{ - vChild._recomputePercentY(); - vChild.addToLayoutChanges("locationY"); - - return true; -} - - - - - - - - -/* ---------------------------------------------------------------------------- - [10] LAYOUT CHILD ---------------------------------------------------------------------------- -*/ - -/*! - This is called from qx.ui.core.Widget and it's task is to apply the layout - (excluding border and padding) to the child. -*/ - -qx.Proto.layoutChild = function(vChild, vJobs) -{ - var vWidget = this.getWidget(); - - this.layoutChild_sizeX(vChild, vJobs); - this.layoutChild_sizeY(vChild, vJobs); - - this.layoutChild_sizeLimitX(vChild, vJobs); - this.layoutChild_sizeLimitY(vChild, vJobs); - - this.layoutChild_marginX(vChild, vJobs); - this.layoutChild_marginY(vChild, vJobs); - - this.layoutChild_locationX(vChild, vJobs); - this.layoutChild_locationY(vChild, vJobs); -} - -qx.Proto.layoutChild_sizeX = function(vChild, vJobs) -{ - vChild._applyRuntimeWidth(vChild.getBoxWidth()); -} - -qx.Proto.layoutChild_sizeY = function(vChild, vJobs) -{ - vChild._applyRuntimeHeight(vChild.getBoxHeight()); -} - -qx.Proto.layoutChild_locationX = function(vChild, vJobs) -{ - var vWidget = this.getWidget(); - var vSpacingX = vWidget.getHorizontalSpacing(); - var vLocSumX = vWidget.getPaddingLeft() + vWidget.getComputedCellPaddingLeft(vChild._col, vChild._row); - - for (var i=0; i<vChild._col; i++) { - vLocSumX += vWidget.getColumnBoxWidth(i) + vSpacingX; - } - - switch(vChild.getHorizontalAlign() || vWidget.getColumnHorizontalAlignment(vChild._col) || vWidget.getRowHorizontalAlignment(vChild._row) || vWidget.getHorizontalChildrenAlign()) - { - case "center": - vLocSumX += Math.round((vWidget.getColumnInnerWidth(vChild._col, vChild._row) - vChild.getBoxWidth()) / 2); - break; - - case "right": - vLocSumX += vWidget.getColumnInnerWidth(vChild._col, vChild._row) - vChild.getBoxWidth(); - break; - } - - vChild._applyRuntimeLeft(vLocSumX); -} - -qx.Proto.layoutChild_locationY = function(vChild, vJobs) -{ - var vWidget = this.getWidget(); - var vSpacingY = vWidget.getVerticalSpacing(); - var vLocSumY = vWidget.getPaddingTop() + vWidget.getComputedCellPaddingTop(vChild._col, vChild._row); - - for (var i=0; i<vChild._row; i++) { - vLocSumY += vWidget.getRowBoxHeight(i) + vSpacingY; - } - - switch(vChild.getVerticalAlign() || vWidget.getRowVerticalAlignment(vChild._row) || vWidget.getColumnVerticalAlignment(vChild._col) || vWidget.getVerticalChildrenAlign()) - { - case "middle": - vLocSumY += Math.round((vWidget.getRowInnerHeight(vChild._col, vChild._row) - vChild.getBoxHeight()) / 2); - break; - - case "bottom": - vLocSumY += vWidget.getRowInnerHeight(vChild._col, vChild._row) - vChild.getBoxHeight(); - break; - } - - vChild._applyRuntimeTop(vLocSumY); -}
\ No newline at end of file diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/HorizontalBoxLayoutImpl.js b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/HorizontalBoxLayoutImpl.js deleted file mode 100644 index 035b146d0e..0000000000 --- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/HorizontalBoxLayoutImpl.js +++ /dev/null @@ -1,865 +0,0 @@ -/* ************************************************************************ - - qooxdoo - the new era of web development - - http://qooxdoo.org - - Copyright: - 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org - - License: - LGPL: http://www.gnu.org/licenses/lgpl.html - EPL: http://www.eclipse.org/org/documents/epl-v10.php - See the LICENSE file in the project's top-level directory for details. - - Authors: - * Sebastian Werner (wpbasti) - * Andreas Ecker (ecker) - -************************************************************************ */ - -/* ************************************************************************ - -#module(ui_basic) -#module(ui_layout) - -************************************************************************ */ - -qx.OO.defineClass("qx.renderer.layout.HorizontalBoxLayoutImpl", qx.renderer.layout.LayoutImpl, -function(vWidget) { - qx.renderer.layout.LayoutImpl.call(this, vWidget); -}); - -qx.OO.addProperty({ name : "enableFlexSupport", type : "boolean", defaultValue : true }); - -/*! - Global Structure: - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [09] FLUSH LAYOUT QUEUES OF CHILDREN - [10] LAYOUT CHILD - [11] DISPOSER - - - Inherits from qx.renderer.layout.LayoutImpl: - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD - [11] DISPOSER -*/ - - - - -/* ---------------------------------------------------------------------------- - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD ---------------------------------------------------------------------------- -*/ - -/*! - Compute and return the box width of the given child. -*/ -qx.Proto.computeChildBoxWidth = function(vChild) { - return vChild.getWidthValue() || vChild._computeBoxWidthFallback(); -} - -/*! - Compute and return the box height of the given child. -*/ -qx.Proto.computeChildBoxHeight = function(vChild) -{ - if (this.getWidget().getStretchChildrenOrthogonalAxis() && vChild._computedHeightTypeNull && vChild.getAllowStretchY()) { - return this.getWidget().getInnerHeight(); - } - - return vChild.getHeightValue() || vChild._computeBoxHeightFallback(); -} - -/*! - Computes the width of all flexible children. -*/ -qx.Proto.computeChildrenFlexWidth = function() -{ - if (this._childrenFlexWidthComputed || !this.getEnableFlexSupport()) { - return; - } - - this._childrenFlexWidthComputed = true; - - // this.debug("computeChildrenFlexWidth"); - - var vWidget = this.getWidget(); - var vChildren = vWidget.getVisibleChildren(); - var vChildrenLength = vChildren.length; - var vCurrentChild; - var vFlexibleChildren = []; - var vAvailWidth = vWidget.getInnerWidth(); - var vUsedWidth = vWidget.getSpacing() * (vChildrenLength-1); - var vIterator; - - - // ************************************************************* - // 1. Compute the sum of all static sized children and finding - // all flexible children. - // ************************************************************* - for (vIterator=0; vIterator<vChildrenLength; vIterator++) - { - vCurrentChild = vChildren[vIterator]; - - if (vCurrentChild._computedWidthTypeFlex) - { - vFlexibleChildren.push(vCurrentChild); - - if (vWidget._computedWidthTypeAuto) { - vUsedWidth += vCurrentChild.getPreferredBoxWidth(); - } - } - else - { - vUsedWidth += vCurrentChild.getOuterWidth(); - } - } - - // this.debug("Width: " + vUsedWidth + "/" + vAvailWidth); - // this.debug("Flexible Count: " + vFlexibleChildren.length); - - - // ************************************************************* - // 2. Compute the sum of all flexible children widths - // ************************************************************* - var vRemainingWidth = vAvailWidth - vUsedWidth; - var vFlexibleChildrenLength = vFlexibleChildren.length; - var vPrioritySum = 0; - - for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++) { - vPrioritySum += vFlexibleChildren[vIterator]._computedWidthParsed; - } - - - // ************************************************************* - // 3. Calculating the size of each 'part'. - // ************************************************************* - var vPartWidth = vRemainingWidth / vPrioritySum; - - - if (!vWidget.getUseAdvancedFlexAllocation()) - { - // ************************************************************* - // 4a. Computing the flex width value of each flexible child - // and add the width to the usedWidth, so that we can - // fix rounding problems later. - // ************************************************************* - for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++) - { - vCurrentChild = vFlexibleChildren[vIterator]; - - vCurrentChild._computedWidthFlexValue = Math.round(vCurrentChild._computedWidthParsed * vPartWidth); - vUsedWidth += vCurrentChild._computedWidthFlexValue; - } - } - else - { - // ************************************************************* - // 4b. Calculating the diff. Which means respect the min/max - // width configuration in flex and store the higher/lower - // data in a diff. - // ************************************************************* - - var vAllocationDiff = 0; - var vMinAllocationLoops, vFlexibleChildrenLength, vAdjust, vCurrentAllocationSum, vFactorSum, vComputedFlexibleWidth; - - for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++) - { - vCurrentChild = vFlexibleChildren[vIterator]; - - vComputedFlexibleWidth = vCurrentChild._computedWidthFlexValue = vCurrentChild._computedWidthParsed * vPartWidth; - vAllocationDiff += vComputedFlexibleWidth - qx.lang.Number.limit(vComputedFlexibleWidth, vCurrentChild.getMinWidthValue(), vCurrentChild.getMaxWidthValue()); - } - - // Rounding diff - vAllocationDiff = Math.round(vAllocationDiff); - - if (vAllocationDiff == 0) - { - // ************************************************************* - // 5a. If the diff is equal zero we must not do anything more - // and do nearly identical the same like in 4a. which means - // to round the calculated flex value and add it to the - // used width so we can fix rounding problems later. - // ************************************************************* - - // Rounding values and fixing rounding errors - for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++) - { - vCurrentChild = vFlexibleChildren[vIterator]; - - vCurrentChild._computedWidthFlexValue = Math.round(vCurrentChild._computedWidthFlexValue); - vUsedWidth += vCurrentChild._computedWidthFlexValue; - } - } - else - { - // ************************************************************* - // 5b. Find maximum loops of each adjustable child to adjust - // the width until the min/max width limits are reached. - // ************************************************************* - - var vUp = vAllocationDiff > 0; - for (vIterator=vFlexibleChildrenLength-1; vIterator>=0; vIterator--) - { - vCurrentChild = vFlexibleChildren[vIterator]; - - if (vUp) - { - vAdjust = (vCurrentChild.getMaxWidthValue() || Infinity) - vCurrentChild._computedWidthFlexValue; - - if (vAdjust > 0) - { - vCurrentChild._allocationLoops = Math.floor(vAdjust / vCurrentChild._computedWidthParsed); - } - else - { - qx.lang.Array.removeAt(vFlexibleChildren, vIterator); - - vCurrentChild._computedWidthFlexValue = Math.round(vCurrentChild._computedWidthFlexValue); - vUsedWidth += Math.round(vCurrentChild._computedWidthFlexValue + vAdjust); - } - } - else - { - vAdjust = qx.util.Validation.isValidNumber(vCurrentChild.getMinWidthValue()) ? vCurrentChild._computedWidthFlexValue - vCurrentChild.getMinWidthValue() : vCurrentChild._computedWidthFlexValue; - - if (vAdjust > 0) - { - vCurrentChild._allocationLoops = Math.floor(vAdjust / vCurrentChild._computedWidthParsed); - } - else - { - qx.lang.Array.removeAt(vFlexibleChildren, vIterator); - - vCurrentChild._computedWidthFlexValue = Math.round(vCurrentChild._computedWidthFlexValue); - vUsedWidth += Math.round(vCurrentChild._computedWidthFlexValue - vAdjust); - } - } - } - - // ************************************************************* - // 6. Try to reallocate the width between flexible children - // so that the requirements through min/max limits - // are satisfied. - // ************************************************************* - while (vAllocationDiff != 0 && vFlexibleChildrenLength > 0) - { - vFlexibleChildrenLength = vFlexibleChildren.length; - vMinAllocationLoops = Infinity; - vFactorSum = 0; - - // Find minimal loop amount - for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++) - { - vMinAllocationLoops = Math.min(vMinAllocationLoops, vFlexibleChildren[vIterator]._allocationLoops); - vFactorSum += vFlexibleChildren[vIterator]._computedWidthParsed; - } - - // Be sure that the adjustment is not bigger/smaller than diff - vCurrentAllocationSum = Math.min(vFactorSum * vMinAllocationLoops, vAllocationDiff); - - // this.debug("Diff: " + vAllocationDiff); - // this.debug("Min Loops: " + vMinAllocationLoops); - // this.debug("Sum: " + vCurrentAllocationSum); - // this.debug("Factor: " + vFactorSum); - - // Reducing diff by current sum - vAllocationDiff -= vCurrentAllocationSum; - - // Adding sizes to children to adjust - for (vIterator=vFlexibleChildrenLength-1; vIterator>=0; vIterator--) - { - vCurrentChild = vFlexibleChildren[vIterator]; - vCurrentChild._computedWidthFlexValue += vCurrentAllocationSum / vFactorSum * vCurrentChild._computedWidthParsed; - - if (vCurrentChild._allocationLoops == vMinAllocationLoops) - { - vCurrentChild._computedWidthFlexValue = Math.round(vCurrentChild._computedWidthFlexValue); - - vUsedWidth += vCurrentChild._computedWidthFlexValue; - delete vCurrentChild._allocationLoops; - qx.lang.Array.removeAt(vFlexibleChildren, vIterator); - } - else - { - if (vAllocationDiff == 0) - { - vCurrentChild._computedWidthFlexValue = Math.round(vCurrentChild._computedWidthFlexValue); - vUsedWidth += vCurrentChild._computedWidthFlexValue; - delete vCurrentChild._allocationLoops; - } - else - { - vCurrentChild._allocationLoops -= vMinAllocationLoops; - } - } - } - } - } - } - - // ************************************************************* - // 7. Fix rounding errors - // ************************************************************* - vCurrentChild._computedWidthFlexValue += vAvailWidth - vUsedWidth; -} - -qx.Proto.invalidateChildrenFlexWidth = function() { - delete this._childrenFlexWidthComputed; -} - - - - - - - -/* ---------------------------------------------------------------------------- - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN ---------------------------------------------------------------------------- -*/ - -/*! - Compute and return the width needed by all children of this widget -*/ -qx.Proto.computeChildrenNeededWidth = function() -{ - var w = this.getWidget(); - return qx.renderer.layout.LayoutImpl.prototype.computeChildrenNeededWidth_sum.call(this) + ((w.getVisibleChildrenLength()-1) * w.getSpacing()); -} - - - - - - -/* ---------------------------------------------------------------------------- - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS ---------------------------------------------------------------------------- -*/ - -/*! - Things to do and layout when any of the childs changes its outer width. - Needed by layouts where the children depends on each-other, like flow- or box-layouts. -*/ -qx.Proto.updateSelfOnChildOuterWidthChange = function(vChild) -{ - // if a childrens outer width changes we need to update our accumulated - // width of all childrens (used for center or right alignments) - this.getWidget()._invalidateAccumulatedChildrenOuterWidth(); -} - - - - - -/* ---------------------------------------------------------------------------- - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT ---------------------------------------------------------------------------- -*/ - -/*! - Actions that should be done if the inner width of the widget was changed. - Normally this includes update to percent values and ranges. -*/ -qx.Proto.updateChildOnInnerWidthChange = function(vChild) -{ - if (this.getWidget().getHorizontalChildrenAlign() == "center") { - vChild.addToLayoutChanges("locationX"); - } - - // use variables here to be sure to call both methods. - var vUpdatePercent = vChild._recomputePercentX(); - var vUpdateFlex = vChild._recomputeFlexX(); - - // inform the caller if there were any notable changes occured - return vUpdatePercent || vUpdateFlex; -} - -/*! - Actions that should be done if the inner height of the widget was changed. - Normally this includes update to percent values and ranges. -*/ -qx.Proto.updateChildOnInnerHeightChange = function(vChild) -{ - // use variables here to be sure to call both methods. - var vUpdatePercent = vChild._recomputePercentY(); - var vUpdateStretch = vChild._recomputeStretchingY(); - - // priority to childs internal alignment - if ((vChild.getVerticalAlign() || this.getWidget().getVerticalChildrenAlign()) == "middle") { - vChild.addToLayoutChanges("locationY"); - } - - // inform the caller if there were any notable changes occured - return vUpdatePercent || vUpdateStretch; -} - - - - - -/* ---------------------------------------------------------------------------- - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH ---------------------------------------------------------------------------- -*/ - -/*! - Invalidate and recompute things because of job in queue (before the rest of job handling will be executed). -*/ -qx.Proto.updateSelfOnJobQueueFlush = function(vJobQueue) -{ - if (vJobQueue.addChild || vJobQueue.removeChild) { - this.getWidget()._invalidateAccumulatedChildrenOuterWidth(); - } -} - - - - - - -/* ---------------------------------------------------------------------------- - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH ---------------------------------------------------------------------------- -*/ - -/*! - Updates children on special jobs -*/ -qx.Proto.updateChildrenOnJobQueueFlush = function(vQueue) -{ - var vStretchX=false, vStretchY=false; - var vWidget = this.getWidget(); - - // switching the orientation need updates for stretching on both axis - if (vQueue.orientation) { - vStretchX = vStretchY = true; - } - - // different updates depending from the current orientation (or the new one) - if (vQueue.spacing || vQueue.orientation || vQueue.reverseChildrenOrder || vQueue.horizontalChildrenAlign) { - vWidget._addChildrenToLayoutQueue("locationX"); - } - - if (vQueue.verticalChildrenAlign) { - vWidget._addChildrenToLayoutQueue("locationY"); - } - - if (vQueue.stretchChildrenOrthogonalAxis) { - vStretchY = true; - } - - // if stretching should be reworked reset the previous one and add - // a layout job to update the width respectively height. - if (vStretchX) - { - vWidget._recomputeChildrenStretchingX(); - vWidget._addChildrenToLayoutQueue("width"); - } - - if (vStretchY) - { - vWidget._recomputeChildrenStretchingY(); - vWidget._addChildrenToLayoutQueue("height"); - } - - return true; -} - - - - - -/* ---------------------------------------------------------------------------- - [08] CHILDREN ADD/REMOVE/MOVE HANDLING ---------------------------------------------------------------------------- -*/ - -/*! - This method combines calls of methods which should be done if a widget should be removed from the current layout. - Needed by layouts where the children depends on each-other, like flow- or box-layouts. -*/ -qx.Proto.updateChildrenOnRemoveChild = function(vChild, vIndex) -{ - var w=this.getWidget(), ch=w.getVisibleChildren(), chl=ch.length, chc, i=-1; - - // Fix index to be at the first flex child - if (this.getEnableFlexSupport()) - { - for (i=0; i<chl; i++) - { - chc = ch[i]; - if (chc.getHasFlexX()) - { - vIndex = Math.min(vIndex, i); - break; - } - } - - i=-1; - } - - // Handle differently depending on layout mode - switch(w.getLayoutMode()) - { - case "right": - case "left-reversed": - while((chc=ch[++i]) && i<vIndex) { - chc.addToLayoutChanges("locationX"); - } - - break; - - case "center": - case "center-reversed": - while(chc=ch[++i]) { - chc.addToLayoutChanges("locationX"); - } - - break; - - default: - i+=vIndex; - while(chc=ch[++i]) { - chc.addToLayoutChanges("locationX"); - } - } -} - -/*! - This method combines calls of methods which should be done if a child should be moved - inside the same parent to a new positions. - Needed by layouts where the children depends on each-other, like flow- or box-layouts. -*/ -qx.Proto.updateChildrenOnMoveChild = function(vChild, vIndex, vOldIndex) -{ - var vChildren = this.getWidget().getVisibleChildren(); - - var vStart = Math.min(vIndex, vOldIndex); - var vStop = Math.max(vIndex, vOldIndex)+1; - - for (var i=vStart; i<vStop; i++) { - vChildren[i].addToLayoutChanges("locationX"); - } -} - - - - - -/* ---------------------------------------------------------------------------- - [09] FLUSH LAYOUT QUEUES OF CHILDREN ---------------------------------------------------------------------------- -*/ - -/*! - This method have full control of the order in which the - registered (or also non-registered) children should be - layouted on the horizontal axis. -*/ -qx.Proto.flushChildrenQueue = function(vChildrenQueue) -{ - var w=this.getWidget(), ch=w.getVisibleChildren(), chl=ch.length, chc, i; - - // This block is needed for flex handling and - // will inform flex children if there was any - // change to the other content - if (this.getEnableFlexSupport()) - { - this.invalidateChildrenFlexWidth(); - - for (i=0; i<chl; i++) - { - chc = ch[i]; - if (chc.getHasFlexX()) - { - chc._computedWidthValue = null; - - if (chc._recomputeBoxWidth()) - { - chc._recomputeOuterWidth(); - chc._recomputeInnerWidth(); - } - - vChildrenQueue[chc.toHashCode()] = chc; - chc._layoutChanges.width = true; - } - } - } - - switch(w.getLayoutMode()) - { - case "right": - case "left-reversed": - // find the last child which has a layout request - for (var i=chl-1; i>=0 && !vChildrenQueue[ch[i].toHashCode()]; i--) {} - - // layout all children before this last child - for (var j=0; j<=i; j++) { - w._layoutChild(chc=ch[j]); - } - - break; - - case "center": - case "center-reversed": - // re-layout all children - i = -1; - while(chc=ch[++i]) { - w._layoutChild(chc); - } - - break; - - default: - // layout all childs from the first child - // with an own layout request to the end - i = -1; - var changed=false; - while(chc=ch[++i]) - { - if (changed || vChildrenQueue[chc.toHashCode()]) - { - w._layoutChild(chc); - changed = true; - } - } - } -} - - - - - - -/* ---------------------------------------------------------------------------- - [10] LAYOUT CHILD ---------------------------------------------------------------------------- -*/ - -/*! - This is called from qx.ui.core.Widget and it's task is to apply the layout - (excluding border and padding) to the child. -*/ -qx.Proto.layoutChild = function(vChild, vJobs) -{ - this.layoutChild_sizeX(vChild, vJobs); - this.layoutChild_sizeY(vChild, vJobs); - - this.layoutChild_sizeLimitX(vChild, vJobs); - this.layoutChild_sizeLimitY(vChild, vJobs); - - this.layoutChild_locationX(vChild, vJobs); - this.layoutChild_locationY(vChild, vJobs); - - this.layoutChild_marginX(vChild, vJobs); - this.layoutChild_marginY(vChild, vJobs); -} - -if (qx.core.Client.getInstance().isMshtml() || qx.core.Client.getInstance().isOpera() || qx.core.Client.getInstance().isWebkit() ) -{ - qx.Proto.layoutChild_sizeX = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.width || vJobs.minWidth || vJobs.maxWidth) - { - if (vChild._isWidthEssential() && (!vChild._computedWidthTypeNull || !vChild._computedMinWidthTypeNull || !vChild._computedMaxWidthTypeNull)) - { - vChild._applyRuntimeWidth(vChild.getBoxWidth()); - } - else - { - vChild._resetRuntimeWidth(); - } - } - } - - qx.Proto.layoutChild_sizeY = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.height || vJobs.minHeight || vJobs.maxHeight) - { - if ((vChild._isHeightEssential() && (!vChild._computedHeightTypeNull || !vChild._computedMinHeightTypeNull || !vChild._computedMaxHeightTypeNull)) || (vChild.getAllowStretchY() && this.getWidget().getStretchChildrenOrthogonalAxis())) - { - vChild._applyRuntimeHeight(vChild.getBoxHeight()); - } - else - { - vChild._resetRuntimeHeight(); - } - } - } -} -else -{ - qx.Proto.layoutChild_sizeX = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.width) - { - if (vChild._isWidthEssential() && !vChild._computedWidthTypeNull) - { - vChild._applyRuntimeWidth(vChild.getWidthValue()); - } - else - { - vChild._resetRuntimeWidth(); - } - } - } - - qx.Proto.layoutChild_sizeY = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.height) - { - if (vChild._isHeightEssential() && !vChild._computedHeightTypeNull) - { - vChild._applyRuntimeHeight(vChild.getHeightValue()); - } - else - { - vChild._resetRuntimeHeight(); - } - } - } -} - -qx.Proto.layoutChild_locationX = function(vChild, vJobs) -{ - var vWidget = this.getWidget(); - - // handle first child - if (vWidget.getFirstVisibleChild() == vChild) - { - switch(vWidget.getLayoutMode()) - { - case "right": - case "left-reversed": - var vPos = vWidget.getPaddingRight() + vWidget.getAccumulatedChildrenOuterWidth() - vChild.getOuterWidth(); - break; - - case "center": - case "center-reversed": - var vPos = vWidget.getPaddingLeft() + Math.round((vWidget.getInnerWidth() - vWidget.getAccumulatedChildrenOuterWidth()) / 2); - break; - - default: - var vPos = vWidget.getPaddingLeft(); - } - } - - // handle any following child - else - { - var vPrev = vChild.getPreviousVisibleSibling(); - - switch(vWidget.getLayoutMode()) - { - case "right": - case "left-reversed": - var vPos = vPrev._cachedLocationHorizontal - vChild.getOuterWidth() - vWidget.getSpacing(); - break; - - default: - var vPos = vPrev._cachedLocationHorizontal + vPrev.getOuterWidth() + vWidget.getSpacing(); - } - } - - // store for next sibling - vChild._cachedLocationHorizontal = vPos; - - // apply styles - switch(vWidget.getLayoutMode()) - { - case "right": - case "right-reversed": - case "center-reversed": - // add relative positions (like 'position:relative' in css) - vPos += !vChild._computedRightTypeNull ? vChild.getRightValue() : !vChild._computedLeftTypeNull ? -(vChild.getLeftValue()) : 0; - - vChild._resetRuntimeLeft(); - vChild._applyRuntimeRight(vPos); - break; - - default: - // add relative positions (like 'position:relative' in css) - vPos += !vChild._computedLeftTypeNull ? vChild.getLeftValue() : !vChild._computedRightTypeNull ? -(vChild.getRightValue()) : 0; - - vChild._resetRuntimeRight(); - vChild._applyRuntimeLeft(vPos); - } -} - -qx.Proto.layoutChild_locationY = function(vChild, vJobs) -{ - var vWidget = this.getWidget(); - - // special stretching support - if (qx.core.Client.getInstance().isGecko() && vChild.getAllowStretchY() && vWidget.getStretchChildrenOrthogonalAxis() && vChild._computedHeightTypeNull) - { - vChild._applyRuntimeTop(vWidget.getPaddingTop() || 0); - vChild._applyRuntimeBottom(vWidget.getPaddingBottom() || 0); - - return; - } - - // priority to childs internal alignment - var vAlign = vChild.getVerticalAlign() || vWidget.getVerticalChildrenAlign(); - - // handle middle alignment - var vPos = vAlign == "middle" ? Math.round((vWidget.getInnerHeight() - vChild.getOuterHeight()) / 2) : 0; - - // the bottom alignment use the real 'bottom' styleproperty to - // use the best available method in modern browsers - if (vAlign == "bottom") - { - // add parent padding - vPos += vWidget.getPaddingBottom(); - - // relative positions (like 'position:relative' in css) - if (!vChild._computedBottomTypeNull) { - vPos += vChild.getBottomValue(); - } - else if (!vChild._computedTopTypeNull) { - vPos -= vChild.getTopValue(); - } - - // apply styles - vChild._resetRuntimeTop(); - vChild._applyRuntimeBottom(vPos); - } - else - { - // add parent padding - vPos += vWidget.getPaddingTop(); - - // relative positions (like 'position:relative' in css) - if (!vChild._computedTopTypeNull) { - vPos += vChild.getTopValue(); - } - else if (!vChild._computedBottomTypeNull) { - vPos -= vChild.getBottomValue(); - } - - // apply styles - vChild._resetRuntimeBottom(); - vChild._applyRuntimeTop(vPos); - } -} diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/LayoutImpl.js b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/LayoutImpl.js deleted file mode 100644 index ee78f0cc50..0000000000 --- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/LayoutImpl.js +++ /dev/null @@ -1,551 +0,0 @@ -/* ************************************************************************ - - qooxdoo - the new era of web development - - http://qooxdoo.org - - Copyright: - 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org - - License: - LGPL: http://www.gnu.org/licenses/lgpl.html - EPL: http://www.eclipse.org/org/documents/epl-v10.php - See the LICENSE file in the project's top-level directory for details. - - Authors: - * Sebastian Werner (wpbasti) - * Andreas Ecker (ecker) - -************************************************************************ */ - -/* ************************************************************************ - -#module(ui_core) -#module(ui_layout) -#require(qx.core.Client) - -************************************************************************ */ - -/** - * Abstact base class of all layout implementations - * - * @param vWidget {qx.ui.core.Parent} reference to the associated widget - */ -qx.OO.defineClass("qx.renderer.layout.LayoutImpl", qx.core.Object, -function(vWidget) -{ - qx.core.Object.call(this); - - this._widget = vWidget; -}); - - - - -/** - * Returns the associated widget - * - * @return {qx.ui.core.Parent} reference to the associated widget - */ -qx.Proto.getWidget = function() { - return this._widget; -} - - -/* - Global Structure: - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [09] FLUSH LAYOUT QUEUES OF CHILDREN - [10] LAYOUT CHILD - [11] DISPOSER -*/ - - -/* ---------------------------------------------------------------------------- - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD ---------------------------------------------------------------------------- -*/ - -/** - * Compute and return the box width of the given child - * - * @param vChild {qx.ui.core.Widget} - * @return {Integer} box width of the given child - */ -qx.Proto.computeChildBoxWidth = function(vChild) { - return vChild.getWidthValue() || vChild._computeBoxWidthFallback(); -} - -/** - * Compute and return the box height of the given child - * - * @param vChild {qx.ui.core.Widget} - * @return {Integer} box height of the given child - */ -qx.Proto.computeChildBoxHeight = function(vChild) { - return vChild.getHeightValue() || vChild._computeBoxHeightFallback(); -} - - - - - -/* ---------------------------------------------------------------------------- - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD ---------------------------------------------------------------------------- -*/ - -/** - * Compute and return the needed width of the given child - * - * @param vChild {qx.ui.core.Widget} - * @return {Integer} needed width - */ -qx.Proto.computeChildNeededWidth = function(vChild) -{ - // omit ultra long lines, these two variables only needed once - // here, but this enhance the readability of the code :) - var vMinBox = vChild._computedMinWidthTypePercent ? null : vChild.getMinWidthValue(); - var vMaxBox = vChild._computedMaxWidthTypePercent ? null : vChild.getMaxWidthValue(); - - var vBox = (vChild._computedWidthTypePercent || vChild._computedWidthTypeFlex ? null : vChild.getWidthValue()) || vChild.getPreferredBoxWidth() || 0; - - return qx.lang.Number.limit(vBox, vMinBox, vMaxBox) + vChild.getMarginLeft() + vChild.getMarginRight(); -} - -/** - * Compute and return the needed height of the given child - * - * @param vChild {qx.ui.core.Widget} - * @return {Integer} needed height - */ -qx.Proto.computeChildNeededHeight = function(vChild) -{ - // omit ultra long lines, these two variables only needed once - // here, but this enhance the readability of the code :) - var vMinBox = vChild._computedMinHeightTypePercent ? null : vChild.getMinHeightValue(); - var vMaxBox = vChild._computedMaxHeightTypePercent ? null : vChild.getMaxHeightValue(); - - var vBox = (vChild._computedHeightTypePercent || vChild._computedHeightTypeFlex ? null : vChild.getHeightValue()) || vChild.getPreferredBoxHeight() || 0; - - return qx.lang.Number.limit(vBox, vMinBox, vMaxBox) + vChild.getMarginTop() + vChild.getMarginBottom(); -} - - - - -/* ---------------------------------------------------------------------------- - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN ---------------------------------------------------------------------------- -*/ - -/** - * Calculate the maximum needed width of all children - * - * @return {Integer} maximum needed width of all children - */ -qx.Proto.computeChildrenNeededWidth_max = function() -{ - for (var i=0, ch=this.getWidget().getVisibleChildren(), chl=ch.length, maxv=0; i<chl; i++) { - maxv = Math.max(maxv, ch[i].getNeededWidth()); - } - - return maxv; -} - -/** - * Calculate the maximum needed height of all children - * - * @return {Integer} maximum needed height of all children - */ -qx.Proto.computeChildrenNeededHeight_max = function() -{ - for (var i=0, ch=this.getWidget().getVisibleChildren(), chl=ch.length, maxv=0; i<chl; i++) { - maxv = Math.max(maxv, ch[i].getNeededHeight()); - } - - return maxv; -} - -/** - * Compute and return the width needed by all children of this widget - * - * @return {Integer} - */ -qx.Proto.computeChildrenNeededWidth_sum = function() -{ - for (var i=0, ch=this.getWidget().getVisibleChildren(), chl=ch.length, sumv=0; i<chl; i++) { - sumv += ch[i].getNeededWidth(); - } - - return sumv; -} - -/** - * Compute and return the height needed by all children of this widget - * - * @return {Integer} height needed by all children of this widget - */ -qx.Proto.computeChildrenNeededHeight_sum = function() -{ - for (var i=0, ch=this.getWidget().getVisibleChildren(), chl=ch.length, sumv=0; i<chl; i++) { - sumv += ch[i].getNeededHeight(); - } - - return sumv; -} - -/** - * Compute and return the width needed by all children of this widget - * - * @return {Integer} width needed by all children of this widget - */ -qx.Proto.computeChildrenNeededWidth = qx.Proto.computeChildrenNeededWidth_max; - -/** - * Compute and return the height needed by all children of this widget - * - * @return {Integer} height needed by all children of this widget - */ -qx.Proto.computeChildrenNeededHeight = qx.Proto.computeChildrenNeededHeight_max; - - - - -/* ---------------------------------------------------------------------------- - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS ---------------------------------------------------------------------------- -*/ - -/** - * Things to do and layout when any of the childs changes its outer width. - * Needed by layouts where the children depend on each other, like flow or box layouts. - * - * Subclasses might implement this method - * - * @param vChild {qx.ui.core.Widget} changed child widget - */ -qx.Proto.updateSelfOnChildOuterWidthChange = function(vChild) {} - -/** - * Things to do and layout when any of the childs changes its outer height. - * Needed by layouts where the children depend on each other, like flow or box layouts. - * - * Subclasses might implement this method - * - * @param vChild {qx.ui.core.Widget} changed child widget - */ -qx.Proto.updateSelfOnChildOuterHeightChange = function(vChild) {} - - - - - -/* ---------------------------------------------------------------------------- - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT ---------------------------------------------------------------------------- -*/ - -/** - * Actions that should be done if the inner width of the layout widget has changed. - * Normally this includes updates to percent values and ranges. - * - * Subclasses might implement this method - * - * @param vChild {qx.ui.core.Widget} changed child widget - */ -qx.Proto.updateChildOnInnerWidthChange = function(vChild) {} - -/** - * Actions that should be done if the inner height of the layout widget has changed. - * Normally this includes updates to percent values and ranges. - * - * Subclasses might implement this method - * - * @param vChild {qx.ui.core.Widget} changed child widget - */ -qx.Proto.updateChildOnInnerHeightChange = function(vChild) {} - - - - - -/* ---------------------------------------------------------------------------- - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH ---------------------------------------------------------------------------- -*/ - -/** - * Invalidate and recompute cached data according to job queue. - * This is executed at the beginning of the job queue handling. - * - * Subclasses might implement this method - * - * @param vJobQueue {Object} - */ -qx.Proto.updateSelfOnJobQueueFlush = function(vJobQueue) {} - - - - - - -/* ---------------------------------------------------------------------------- - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH ---------------------------------------------------------------------------- -*/ -/** - * Updates children on job queue flush. - * This is executed at the end of the job queue handling. - * - * Subclasses might implement this method - * - * @param vJobQueue {Object} - */ -qx.Proto.updateChildrenOnJobQueueFlush = function(vJobQueue) {} - - - - - - -/* ---------------------------------------------------------------------------- - [08] CHILDREN ADD/REMOVE/MOVE HANDLING ---------------------------------------------------------------------------- -*/ - -/** - * Add child to current layout. Rarely needed by some layout implementations. - * - * Subclasses might implement this method - * - * @param vChild {qx.ui.core.Widget} newly added child - * @param vIndex {Integer} index of the child - */ -qx.Proto.updateChildrenOnAddChild = function(vChild, vIndex) {} - -/** - *Remove child from current layout. - * Needed by layouts where the children depend on each other, like flow or box layouts. - * - * Subclasses might implement this method - * - * @param vChild {qx.ui.core.Widget} newly added child - * @param vIndex {Integer} index of the child - */ - qx.Proto.updateChildrenOnRemoveChild = function(vChild, vIndex) {} - -/** - * Move child within its parent to a new position. - * Needed by layouts where the children depend on each other, like flow or box layouts. - * - * Subclasses might implement this method - * - * @param vChild {qx.ui.core.Widget} newly added child - * @param vIndex {Integer} new index of the child - * @param vOldIndex {Integer} old index of the child - */ -qx.Proto.updateChildrenOnMoveChild = function(vChild, vIndex, vOldIndex) {} - - - - - - - -/* ---------------------------------------------------------------------------- - [09] FLUSH LAYOUT QUEUES OF CHILDREN ---------------------------------------------------------------------------- -*/ - -/** - * Has full control of the order in which the registered - * (or non-registered) children should be layouted. - * - * @param vChildrenQueue {Object} - */ -qx.Proto.flushChildrenQueue = function(vChildrenQueue) -{ - var vWidget = this.getWidget(); - - for (var vHashCode in vChildrenQueue) { - vWidget._layoutChild(vChildrenQueue[vHashCode]); - } -} - - - - - - - - -/* ---------------------------------------------------------------------------- - [10] LAYOUT CHILD ---------------------------------------------------------------------------- -*/ - -/** - * Called from qx.ui.core.Parent. Its task is to apply the layout - * (excluding border and padding) to the child. - * - * @param vChild {qx.ui.core.Widget} child to layout - * @param vJobs {Set} layout changes to perform - */ -qx.Proto.layoutChild = function(vChild, vJobs) {} - - -/** - * Apply min-/max-width to the child. Direct usage of stylesheet properties. - * This is only possible in modern capable clients (i.e. excluding all current - * versions of Internet Explorer) - * - * @param vChild {qx.ui.core.Widget} child to layout - * @param vJobs {Set} layout changes to perform - */ -qx.Proto.layoutChild_sizeLimitX = function(vChild, vJobs) {} - -/** - * Apply min-/max-height to the child. Direct usage of stylesheet properties. - * This is only possible in modern capable clients (i.e. excluding all current - * versions of Internet Explorer) - * - * @param vChild {qx.ui.core.Widget} child to layout - * @param vJobs {Set} layout changes to perform - */ -qx.Proto.layoutChild_sizeLimitY = function(vChild, vJobs) {} - -if (qx.core.Client.getInstance().isMshtml()) -{ - qx.Proto.layoutChild_sizeLimitX = qx.lang.Function.returnTrue; - qx.Proto.layoutChild_sizeLimitY = qx.lang.Function.returnTrue; -} -else -{ - - qx.Proto.layoutChild_sizeLimitX = function(vChild, vJobs) - { - if (vJobs.minWidth) { - vChild._computedMinWidthTypeNull ? vChild._resetRuntimeMinWidth() : vChild._applyRuntimeMinWidth(vChild.getMinWidthValue()); - } - else if (vJobs.initial && !vChild._computedMinWidthTypeNull) { - vChild._applyRuntimeMinWidth(vChild.getMinWidthValue()); - } - - if (vJobs.maxWidth) { - vChild._computedMaxWidthTypeNull ? vChild._resetRuntimeMaxWidth() : vChild._applyRuntimeMaxWidth(vChild.getMaxWidthValue()); - } - else if (vJobs.initial && !vChild._computedMaxWidthTypeNull) { - vChild._applyRuntimeMaxWidth(vChild.getMaxWidthValue()); - } - } - - qx.Proto.layoutChild_sizeLimitY = function(vChild, vJobs) - { - if (vJobs.minHeight) { - vChild._computedMinHeightTypeNull ? vChild._resetRuntimeMinHeight() : vChild._applyRuntimeMinHeight(vChild.getMinHeightValue()); - } - else if (vJobs.initial && !vChild._computedMinHeightTypeNull) { - vChild._applyRuntimeMinHeight(vChild.getMinHeightValue()); - } - - if (vJobs.maxHeight) { - vChild._computedMaxHeightTypeNull ? vChild._resetRuntimeMaxHeight() : vChild._applyRuntimeMaxHeight(vChild.getMaxHeightValue()); - } - else if (vJobs.initial && !vChild._computedMaxHeightTypeNull) { - vChild._applyRuntimeMaxHeight(vChild.getMaxHeightValue()); - } - } -} - -/** - * Apply the X margin values as pure stylesheet equivalent. - * - * @param vChild {qx.ui.core.Widget} child to layout - * @param vJobs {Set} layout changes to perform - */ -qx.Proto.layoutChild_marginX = function(vChild, vJobs) -{ - if (vJobs.marginLeft || vJobs.initial) - { - var vValueLeft = vChild.getMarginLeft(); - vValueLeft != null ? vChild._applyRuntimeMarginLeft(vValueLeft) : vChild._resetRuntimeMarginLeft(); - } - - if (vJobs.marginRight || vJobs.initial) - { - var vValueRight = vChild.getMarginRight(); - vValueRight != null ? vChild._applyRuntimeMarginRight(vValueRight) : vChild._resetRuntimeMarginRight(); - } -} - -/** - * Apply the Y margin values as pure stylesheet equivalent. - * - * @param vChild {qx.ui.core.Widget} child to layout - * @param vJobs {Set} layout changes to perform - */ -qx.Proto.layoutChild_marginY = function(vChild, vJobs) -{ - if (vJobs.marginTop || vJobs.initial) - { - var vValueTop = vChild.getMarginTop(); - vValueTop != null ? vChild._applyRuntimeMarginTop(vValueTop) : vChild._resetRuntimeMarginTop(); - } - - if (vJobs.marginBottom || vJobs.initial) - { - var vValueBottom = vChild.getMarginBottom(); - vValueBottom != null ? vChild._applyRuntimeMarginBottom(vValueBottom) : vChild._resetRuntimeMarginBottom(); - } -} - -qx.Proto.layoutChild_sizeX_essentialWrapper = function(vChild, vJobs) { - return vChild._isWidthEssential() ? this.layoutChild_sizeX(vChild, vJobs) : vChild._resetRuntimeWidth(); -} - -qx.Proto.layoutChild_sizeY_essentialWrapper = function(vChild, vJobs) { - return vChild._isHeightEssential() ? this.layoutChild_sizeY(vChild, vJobs) : vChild._resetRuntimeHeight(); -} - - - - - - -/* ---------------------------------------------------------------------------- - [11] DISPOSER ---------------------------------------------------------------------------- -*/ - -/*! - Dispose the layout implmentation and release the associated widget. -*/ -qx.Proto.dispose = function() -{ - if (this.getDisposed()) { - return true; - } - - this._widget = null; - - qx.core.Object.prototype.dispose.call(this); -} diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/MenuButtonLayoutImpl.js b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/MenuButtonLayoutImpl.js deleted file mode 100644 index a9c6f3499d..0000000000 --- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/MenuButtonLayoutImpl.js +++ /dev/null @@ -1,185 +0,0 @@ -/* ************************************************************************ - - qooxdoo - the new era of web development - - http://qooxdoo.org - - Copyright: - 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org - - License: - LGPL: http://www.gnu.org/licenses/lgpl.html - EPL: http://www.eclipse.org/org/documents/epl-v10.php - See the LICENSE file in the project's top-level directory for details. - - Authors: - * Sebastian Werner (wpbasti) - * Andreas Ecker (ecker) - -************************************************************************ */ - -/* ************************************************************************ - -#module(ui_menu) - -************************************************************************ */ - -qx.OO.defineClass("qx.renderer.layout.MenuButtonLayoutImpl", qx.renderer.layout.HorizontalBoxLayoutImpl, -function(vWidget) -{ - qx.renderer.layout.HorizontalBoxLayoutImpl.call(this, vWidget); - - // We don't need flex support, should make things a bit faster, - // as this omits some additional loops in qx.renderer.layout.HorizontalBoxLayoutImpl. - this.setEnableFlexSupport(false); -}); - - -/*! - Global Structure: - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [09] FLUSH LAYOUT QUEUES OF CHILDREN - [10] LAYOUT CHILD - [11] DISPOSER - - - Inherits from qx.renderer.layout.HorizontalBoxLayoutImpl: - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [09] FLUSH LAYOUT QUEUES OF CHILDREN - [11] DISPOSER -*/ - - - - - -/* ---------------------------------------------------------------------------- - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN ---------------------------------------------------------------------------- -*/ - -/*! - Compute and return the width needed by all children of this widget -*/ -qx.Proto.computeChildrenNeededWidth = function() -{ - // Caching the widget reference - var vWidget = this.getWidget(); - - // Ignore the verticalBoxLayout inside qx.ui.menu.Menu - var vMenu = vWidget.getParent().getParent(); - - // Let the menu do the real hard things - return vMenu.getMenuButtonNeededWidth(); -} - - - - - - - -/* ---------------------------------------------------------------------------- - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS ---------------------------------------------------------------------------- -*/ - -/*! - Things to do and layout when any of the childs changes its outer width. - Needed by layouts where the children depends on each-other, like flow- or box-layouts. -*/ -qx.Proto.updateSelfOnChildOuterWidthChange = function(vChild) -{ - // Caching the widget reference - var vWidget = this.getWidget(); - - // Ignore the verticalBoxLayout inside qx.ui.menu.Menu - var vMenu = vWidget.getParent().getParent(); - - // Send out invalidate signals - switch(vChild) - { - case vWidget._iconObject: - vMenu._invalidateMaxIconWidth(); - break; - - case vWidget._labelObject: - vMenu._invalidateMaxLabelWidth(); - break; - - case vWidget._shortcutObject: - vMenu._invalidateMaxShortcutWidth(); - break; - - case vWidget._arrowObject: - vMenu._invalidateMaxArrowWidth(); - break; - } - - // Call superclass implementation - return qx.renderer.layout.HorizontalBoxLayoutImpl.prototype.updateSelfOnChildOuterWidthChange.call(this, vChild); -} - - - - - - - -/* ---------------------------------------------------------------------------- - [10] LAYOUT CHILD ---------------------------------------------------------------------------- -*/ - -qx.Proto.layoutChild_locationX = function(vChild, vJobs) -{ - // Caching the widget reference - var vWidget = this.getWidget(); - - // Ignore the verticalBoxLayout inside qx.ui.menu.Menu - var vMenu = vWidget.getParent().getParent(); - - // Left position of the child - var vPos = null; - - // Ask the menu instance for the correct location - switch(vChild) - { - case vWidget._iconObject: - vPos = vMenu.getIconPosition(); - break; - - case vWidget._labelObject: - vPos = vMenu.getLabelPosition(); - break; - - case vWidget._shortcutObject: - vPos = vMenu.getShortcutPosition(); - break; - - case vWidget._arrowObject: - vPos = vMenu.getArrowPosition(); - break; - } - - if (vPos != null) - { - vPos += vWidget.getPaddingLeft(); - vChild._applyRuntimeLeft(vPos); - } -} diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/MenuLayoutImpl.js b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/MenuLayoutImpl.js deleted file mode 100644 index 14ef800a76..0000000000 --- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/MenuLayoutImpl.js +++ /dev/null @@ -1,102 +0,0 @@ -/* ************************************************************************ - - qooxdoo - the new era of web development - - http://qooxdoo.org - - Copyright: - 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org - - License: - LGPL: http://www.gnu.org/licenses/lgpl.html - EPL: http://www.eclipse.org/org/documents/epl-v10.php - See the LICENSE file in the project's top-level directory for details. - - Authors: - * Sebastian Werner (wpbasti) - * Andreas Ecker (ecker) - -************************************************************************ */ - -/* ************************************************************************ - -#module(ui_menu) - -************************************************************************ */ - -qx.OO.defineClass("qx.renderer.layout.MenuLayoutImpl", qx.renderer.layout.VerticalBoxLayoutImpl, -function(vWidget) -{ - qx.renderer.layout.VerticalBoxLayoutImpl.call(this, vWidget); - - // We don't need flex support, should make things a bit faster, - // as this omits some additional loops in qx.renderer.layout.HorizontalBoxLayoutImpl. - this.setEnableFlexSupport(false); -}); - - -/*! - Global Structure: - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [09] FLUSH LAYOUT QUEUES OF CHILDREN - [10] LAYOUT CHILD - [11] DISPOSER - - - Inherits from qx.renderer.layout.VerticalBoxLayoutImpl: - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [09] FLUSH LAYOUT QUEUES OF CHILDREN - [10] LAYOUT CHILD - [11] DISPOSER -*/ - - - - -/* ---------------------------------------------------------------------------- - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH ---------------------------------------------------------------------------- -*/ - -/*! - Updates children on special jobs -*/ -qx.Proto.updateChildrenOnJobQueueFlush = function(vQueue) -{ - var vWidget = this.getWidget(); - var ch, chc; - - if (vQueue.preferredInnerWidth) - { - var ch = vWidget.getChildren(), chl = ch.length, chc; - var sch, schl; - - for (var i=0; i<chl; i++) - { - chc = ch[i]; - sch = chc.getChildren(); - schl = sch.length; - - for (var j=0; j<schl; j++) { - sch[j].addToLayoutChanges("locationX"); - } - } - } - - // Call superclass implementation - return qx.renderer.layout.VerticalBoxLayoutImpl.prototype.updateChildrenOnJobQueueFlush.call(this, vQueue); -} diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/VerticalBoxLayoutImpl.js b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/VerticalBoxLayoutImpl.js deleted file mode 100644 index fe2eb8f897..0000000000 --- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/renderer/layout/VerticalBoxLayoutImpl.js +++ /dev/null @@ -1,868 +0,0 @@ -/* ************************************************************************ - - qooxdoo - the new era of web development - - http://qooxdoo.org - - Copyright: - 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org - - License: - LGPL: http://www.gnu.org/licenses/lgpl.html - EPL: http://www.eclipse.org/org/documents/epl-v10.php - See the LICENSE file in the project's top-level directory for details. - - Authors: - * Sebastian Werner (wpbasti) - * Andreas Ecker (ecker) - -************************************************************************ */ - -/* ************************************************************************ - -#module(ui_basic) -#module(ui_layout) - -************************************************************************ */ - -qx.OO.defineClass("qx.renderer.layout.VerticalBoxLayoutImpl", qx.renderer.layout.LayoutImpl, -function(vWidget) { - qx.renderer.layout.LayoutImpl.call(this, vWidget); -}); - -qx.OO.addProperty({ name : "enableFlexSupport", type : "boolean", defaultValue : true }); - - - -/*! - Global Structure: - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH - [08] CHILDREN ADD/REMOVE/MOVE HANDLING - [09] FLUSH LAYOUT QUEUES OF CHILDREN - [10] LAYOUT CHILD - [11] DISPOSER - - - Inherits from qx.renderer.layout.LayoutImpl: - [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD - [11] DISPOSER -*/ - - - -/* ---------------------------------------------------------------------------- - [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD ---------------------------------------------------------------------------- -*/ - -/*! - Compute and return the box width of the given child. -*/ -qx.Proto.computeChildBoxWidth = function(vChild) -{ - if (this.getWidget().getStretchChildrenOrthogonalAxis() && vChild._computedWidthTypeNull && vChild.getAllowStretchX()) { - return this.getWidget().getInnerWidth(); - } - - return vChild.getWidthValue() || vChild._computeBoxWidthFallback(); -} - -/*! - Compute and return the box height of the given child. -*/ -qx.Proto.computeChildBoxHeight = function(vChild) { - return vChild.getHeightValue() || vChild._computeBoxHeightFallback(); -} - -/*! - Computes the height of all flexible children. -*/ -qx.Proto.computeChildrenFlexHeight = function() -{ - if (this._childrenFlexHeightComputed || !this.getEnableFlexSupport()) { - return; - } - - this._childrenFlexHeightComputed = true; - - // this.debug("computeChildrenFlexHeight"); - - var vWidget = this.getWidget(); - var vChildren = vWidget.getVisibleChildren(); - var vChildrenLength = vChildren.length; - var vCurrentChild; - var vFlexibleChildren = []; - var vAvailHeight = vWidget.getInnerHeight(); - var vUsedHeight = vWidget.getSpacing() * (vChildrenLength-1); - var vIterator; - - - // ************************************************************* - // 1. Compute the sum of all static sized children and finding - // all flexible children. - // ************************************************************* - for (vIterator=0; vIterator<vChildrenLength; vIterator++) - { - vCurrentChild = vChildren[vIterator]; - - if (vCurrentChild._computedHeightTypeFlex) - { - vFlexibleChildren.push(vCurrentChild); - - if (vWidget._computedHeightTypeAuto) { - vUsedHeight += vCurrentChild.getPreferredBoxHeight(); - } - } - else - { - vUsedHeight += vCurrentChild.getOuterHeight(); - } - } - - // this.debug("Height: " + vUsedHeight + "/" + vAvailHeight); - // this.debug("Flexible Count: " + vFlexibleChildren.length); - - - // ************************************************************* - // 2. Compute the sum of all flexible children heights - // ************************************************************* - var vRemainingHeight = vAvailHeight - vUsedHeight; - var vFlexibleChildrenLength = vFlexibleChildren.length; - var vPrioritySum = 0; - - for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++) { - vPrioritySum += vFlexibleChildren[vIterator]._computedHeightParsed; - } - - - // ************************************************************* - // 3. Calculating the size of each 'part'. - // ************************************************************* - var vPartHeight = vRemainingHeight / vPrioritySum; - - - if (!vWidget.getUseAdvancedFlexAllocation()) - { - // ************************************************************* - // 4a. Computing the flex height value of each flexible child - // and add the height to the usedHeight, so that we can - // fix rounding problems later. - // ************************************************************* - for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++) - { - vCurrentChild = vFlexibleChildren[vIterator]; - - vCurrentChild._computedHeightFlexValue = Math.round(vCurrentChild._computedHeightParsed * vPartHeight); - vUsedHeight += vCurrentChild._computedHeightFlexValue; - } - } - else - { - // ************************************************************* - // 4b. Calculating the diff. Which means respect the min/max - // height configuration in flex and store the higher/lower - // data in a diff. - // ************************************************************* - - var vAllocationDiff = 0; - var vMinAllocationLoops, vFlexibleChildrenLength, vAdjust, vCurrentAllocationSum, vFactorSum, vComputedFlexibleHeight; - - for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++) - { - vCurrentChild = vFlexibleChildren[vIterator]; - - vComputedFlexibleHeight = vCurrentChild._computedHeightFlexValue = vCurrentChild._computedHeightParsed * vPartHeight; - vAllocationDiff += vComputedFlexibleHeight - qx.lang.Number.limit(vComputedFlexibleHeight, vCurrentChild.getMinHeightValue(), vCurrentChild.getMaxHeightValue()); - } - - // Rounding diff - vAllocationDiff = Math.round(vAllocationDiff); - - if (vAllocationDiff == 0) - { - // ************************************************************* - // 5a. If the diff is equal zero we must not do anything more - // and do nearly identical the same like in 4a. which means - // to round the calculated flex value and add it to the - // used height so we can fix rounding problems later. - // ************************************************************* - - // Rounding values and fixing rounding errors - for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++) - { - vCurrentChild = vFlexibleChildren[vIterator]; - - vCurrentChild._computedHeightFlexValue = Math.round(vCurrentChild._computedHeightFlexValue); - vUsedHeight += vCurrentChild._computedHeightFlexValue; - } - } - else - { - // ************************************************************* - // 5b. Find maximum loops of each adjustable child to adjust - // the height until the min/max height limits are reached. - // ************************************************************* - - var vUp = vAllocationDiff > 0; - for (vIterator=vFlexibleChildrenLength-1; vIterator>=0; vIterator--) - { - vCurrentChild = vFlexibleChildren[vIterator]; - - if (vUp) - { - vAdjust = (vCurrentChild.getMaxHeightValue() || Infinity) - vCurrentChild._computedHeightFlexValue; - - if (vAdjust > 0) - { - vCurrentChild._allocationLoops = Math.floor(vAdjust / vCurrentChild._computedHeightParsed); - } - else - { - qx.lang.Array.removeAt(vFlexibleChildren, vIterator); - - vCurrentChild._computedHeightFlexValue = Math.round(vCurrentChild._computedHeightFlexValue); - vUsedHeight += Math.round(vCurrentChild._computedHeightFlexValue + vAdjust); - } - } - else - { - vAdjust = qx.util.Validation.isValidNumber(vCurrentChild.getMinHeightValue()) ? vCurrentChild._computedHeightFlexValue - vCurrentChild.getMinHeightValue() : vCurrentChild._computedHeightFlexValue; - - if (vAdjust > 0) - { - vCurrentChild._allocationLoops = Math.floor(vAdjust / vCurrentChild._computedHeightParsed); - } - else - { - qx.lang.Array.removeAt(vFlexibleChildren, vIterator); - - vCurrentChild._computedHeightFlexValue = Math.round(vCurrentChild._computedHeightFlexValue); - vUsedHeight += Math.round(vCurrentChild._computedHeightFlexValue - vAdjust); - } - } - } - - // ************************************************************* - // 6. Try to reallocate the height between flexible children - // so that the requirements through min/max limits - // are satisfied. - // ************************************************************* - while (vAllocationDiff != 0 && vFlexibleChildrenLength > 0) - { - vFlexibleChildrenLength = vFlexibleChildren.length; - vMinAllocationLoops = Infinity; - vFactorSum = 0; - - // Find minimal loop amount - for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++) - { - vMinAllocationLoops = Math.min(vMinAllocationLoops, vFlexibleChildren[vIterator]._allocationLoops); - vFactorSum += vFlexibleChildren[vIterator]._computedHeightParsed; - } - - // Be sure that the adjustment is not bigger/smaller than diff - vCurrentAllocationSum = Math.min(vFactorSum * vMinAllocationLoops, vAllocationDiff); - - // this.debug("Diff: " + vAllocationDiff); - // this.debug("Min Loops: " + vMinAllocationLoops); - // this.debug("Sum: " + vCurrentAllocationSum); - // this.debug("Factor: " + vFactorSum); - - // Reducing diff by current sum - vAllocationDiff -= vCurrentAllocationSum; - - // Adding sizes to children to adjust - for (vIterator=vFlexibleChildrenLength-1; vIterator>=0; vIterator--) - { - vCurrentChild = vFlexibleChildren[vIterator]; - vCurrentChild._computedHeightFlexValue += vCurrentAllocationSum / vFactorSum * vCurrentChild._computedHeightParsed; - - if (vCurrentChild._allocationLoops == vMinAllocationLoops) - { - vCurrentChild._computedHeightFlexValue = Math.round(vCurrentChild._computedHeightFlexValue); - - vUsedHeight += vCurrentChild._computedHeightFlexValue; - delete vCurrentChild._allocationLoops; - qx.lang.Array.removeAt(vFlexibleChildren, vIterator); - } - else - { - if (vAllocationDiff == 0) - { - vCurrentChild._computedHeightFlexValue = Math.round(vCurrentChild._computedHeightFlexValue); - vUsedHeight += vCurrentChild._computedHeightFlexValue; - delete vCurrentChild._allocationLoops; - } - else - { - vCurrentChild._allocationLoops -= vMinAllocationLoops; - } - } - } - } - } - } - - // ************************************************************* - // 7. Fix rounding errors - // ************************************************************* - vCurrentChild._computedHeightFlexValue += vAvailHeight - vUsedHeight; -} - -qx.Proto.invalidateChildrenFlexHeight = function() { - delete this._childrenFlexHeightComputed; -} - - - - - -/* ---------------------------------------------------------------------------- - [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN ---------------------------------------------------------------------------- -*/ - -/*! - Compute and return the height needed by all children of this widget -*/ -qx.Proto.computeChildrenNeededHeight = function() -{ - var w = this.getWidget(); - return qx.renderer.layout.LayoutImpl.prototype.computeChildrenNeededHeight_sum.call(this) + ((w.getVisibleChildrenLength()-1) * w.getSpacing()); -} - - - - - - -/* ---------------------------------------------------------------------------- - [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS ---------------------------------------------------------------------------- -*/ - -/*! - Things to do and layout when any of the childs changes its outer height. - Needed by layouts where the children depends on each-other, like flow- or box-layouts. -*/ -qx.Proto.updateSelfOnChildOuterHeightChange = function(vChild) -{ - // if a childrens outer height changes we need to update our accumulated - // height of all childrens (used for middle or bottom alignments) - this.getWidget()._invalidateAccumulatedChildrenOuterHeight(); -} - - - - - -/* ---------------------------------------------------------------------------- - [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT ---------------------------------------------------------------------------- -*/ - -/*! - Actions that should be done if the inner width of the widget was changed. - Normally this includes update to percent values and ranges. -*/ -qx.Proto.updateChildOnInnerWidthChange = function(vChild) -{ - // use variables here to be sure to call both methods. - var vUpdatePercent = vChild._recomputePercentX(); - var vUpdateStretch = vChild._recomputeStretchingX(); - - // priority to childs internal alignment - if ((vChild.getHorizontalAlign() || this.getWidget().getHorizontalChildrenAlign()) == "center") { - vChild.addToLayoutChanges("locationX"); - } - - // inform the caller if there were any notable changes occured - return vUpdatePercent || vUpdateStretch; -} - -/*! - Actions that should be done if the inner height of the widget was changed. - Normally this includes update to percent values and ranges. -*/ -qx.Proto.updateChildOnInnerHeightChange = function(vChild) -{ - if (this.getWidget().getVerticalChildrenAlign() == "middle") { - vChild.addToLayoutChanges("locationY"); - } - - // use variables here to be sure to call both methods. - var vUpdatePercent = vChild._recomputePercentY(); - var vUpdateFlex = vChild._recomputeFlexY(); - - // inform the caller if there were any notable changes occured - return vUpdatePercent || vUpdateFlex; -} - - - - - - - -/* ---------------------------------------------------------------------------- - [06] UPDATE LAYOUT ON JOB QUEUE FLUSH ---------------------------------------------------------------------------- -*/ - -/*! - Invalidate and recompute things because of job in queue (before the rest of job handling will be executed). -*/ -qx.Proto.updateSelfOnJobQueueFlush = function(vJobQueue) -{ - if (vJobQueue.addChild || vJobQueue.removeChild) { - this.getWidget()._invalidateAccumulatedChildrenOuterHeight(); - } -} - - - - - - -/* ---------------------------------------------------------------------------- - [07] UPDATE CHILDREN ON JOB QUEUE FLUSH ---------------------------------------------------------------------------- -*/ - -/*! - Updates children on special jobs -*/ -qx.Proto.updateChildrenOnJobQueueFlush = function(vQueue) -{ - var vStretchX=false, vStretchY=false; - var vWidget = this.getWidget(); - - // switching the orientation need updates for stretching on both axis - if (vQueue.orientation) { - vStretchX = vStretchY = true; - } - - // different updates depending from the current orientation (or the new one) - if (vQueue.spacing || vQueue.orientation || vQueue.reverseChildrenOrder || vQueue.verticalChildrenAlign) { - vWidget._addChildrenToLayoutQueue("locationY"); - } - - if (vQueue.horizontalChildrenAlign) { - vWidget._addChildrenToLayoutQueue("locationX"); - } - - if (vQueue.stretchChildrenOrthogonalAxis) { - vStretchX = true; - } - - // if stretching should be reworked reset the previous one and add - // a layout job to update the width respectively height. - if (vStretchX) - { - vWidget._recomputeChildrenStretchingX(); - vWidget._addChildrenToLayoutQueue("width"); - } - - if (vStretchY) - { - vWidget._recomputeChildrenStretchingY(); - vWidget._addChildrenToLayoutQueue("height"); - } - - return true; -} - - - - - - -/* ---------------------------------------------------------------------------- - [08] CHILDREN ADD/REMOVE/MOVE HANDLING ---------------------------------------------------------------------------- -*/ - -/*! - This method combines calls of methods which should be done if a widget should be removed from the current layout. - Needed by layouts where the children depends on each-other, like flow- or box-layouts. -*/ -qx.Proto.updateChildrenOnRemoveChild = function(vChild, vIndex) -{ - var w=this.getWidget(), ch=w.getVisibleChildren(), chl=ch.length, chc, i=-1; - - // Fix index to be at the first flex child - if (this.getEnableFlexSupport()) - { - for (var i=0; i<chl; i++) - { - chc = ch[i]; - if (chc.getHasFlexY()) - { - vIndex = Math.min(vIndex, i); - break; - } - } - - i=-1; - } - - // Handle differently depending on layout mode - switch(w.getLayoutMode()) - { - case "bottom": - case "top-reversed": - while((chc=ch[++i]) && i<vIndex) { - chc.addToLayoutChanges("locationY"); - } - - break; - - case "middle": - case "middle-reversed": - while(chc=ch[++i]) { - chc.addToLayoutChanges("locationY"); - } - - break; - - default: - i+=vIndex; - while(chc=ch[++i]) { - chc.addToLayoutChanges("locationY"); - } - } -} - -/*! - This method combines calls of methods which should be done if a child should be moved - inside the same parent to a new positions. - Needed by layouts where the children depends on each-other, like flow- or box-layouts. -*/ -qx.Proto.updateChildrenOnMoveChild = function(vChild, vIndex, vOldIndex) -{ - var vChildren = this.getWidget().getVisibleChildren(); - - var vStart = Math.min(vIndex, vOldIndex); - var vStop = Math.max(vIndex, vOldIndex)+1; - - for (var i=vStart; i<vStop; i++) { - vChildren[i].addToLayoutChanges("locationY"); - } -} - - - - - -/* ---------------------------------------------------------------------------- - [09] FLUSH LAYOUT QUEUES OF CHILDREN ---------------------------------------------------------------------------- -*/ - -/*! - This method have full control of the order in which the - registered (or also non-registered) children should be - layouted on the horizontal axis. -*/ -qx.Proto.flushChildrenQueue = function(vChildrenQueue) -{ - var w=this.getWidget(), ch=w.getVisibleChildren(), chl=ch.length, chc, i; - - // This block is needed for flex handling and - // will inform flex children if there was any - // change to the other content - if (this.getEnableFlexSupport()) - { - this.invalidateChildrenFlexHeight(); - - for (i=0; i<chl; i++) - { - chc = ch[i]; - if (chc.getHasFlexY()) - { - chc._computedHeightValue = null; - - if (chc._recomputeBoxHeight()) - { - chc._recomputeOuterHeight(); - chc._recomputeInnerHeight(); - } - - vChildrenQueue[chc.toHashCode()] = chc; - chc._layoutChanges.height = true; - } - } - } - - switch(w.getLayoutMode()) - { - case "bottom": - case "top-reversed": - // find the last child which has a layout request - for (var i=chl-1; i>=0 && !vChildrenQueue[ch[i].toHashCode()]; i--) {} - - // layout all children before this last child - for (var j=0; j<=i; j++) { - w._layoutChild(chc=ch[j]); - } - - break; - - case "middle": - case "middle-reversed": - // re-layout all children - i = -1; - while(chc=ch[++i]) { - w._layoutChild(chc); - } - - break; - - default: - // layout all childs from the first child - // with an own layout request to the end - i = -1; - var changed=false; - while(chc=ch[++i]) - { - if (changed || vChildrenQueue[chc.toHashCode()]) - { - w._layoutChild(chc); - changed = true; - } - } - } -} - - - - - - - -/* ---------------------------------------------------------------------------- - [10] LAYOUT CHILD ---------------------------------------------------------------------------- -*/ - -/*! - This is called from qx.ui.core.Widget and it's task is to apply the layout - (excluding border and padding) to the child. -*/ -qx.Proto.layoutChild = function(vChild, vJobs) -{ - this.layoutChild_sizeX(vChild, vJobs); - this.layoutChild_sizeY(vChild, vJobs); - - this.layoutChild_sizeLimitX(vChild, vJobs); - this.layoutChild_sizeLimitY(vChild, vJobs); - - this.layoutChild_locationX(vChild, vJobs); - this.layoutChild_locationY(vChild, vJobs); - - this.layoutChild_marginX(vChild, vJobs); - this.layoutChild_marginY(vChild, vJobs); -} - -if (qx.core.Client.getInstance().isMshtml() || qx.core.Client.getInstance().isOpera() || qx.core.Client.getInstance().isWebkit()) -{ - qx.Proto.layoutChild_sizeX = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.width || vJobs.minWidth || vJobs.maxWidth) - { - if ((vChild._isWidthEssential() && (!vChild._computedWidthTypeNull || !vChild._computedMinWidthTypeNull || !vChild._computedMaxWidthTypeNull)) || (vChild.getAllowStretchX() && this.getWidget().getStretchChildrenOrthogonalAxis())) - { - vChild._applyRuntimeWidth(vChild.getBoxWidth()); - } - else - { - vChild._resetRuntimeWidth(); - } - } - } - - qx.Proto.layoutChild_sizeY = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.height || vJobs.minHeight || vJobs.maxHeight) - { - if (vChild._isHeightEssential() && (!vChild._computedHeightTypeNull || !vChild._computedMinHeightTypeNull || !vChild._computedMaxHeightTypeNull)) - { - vChild._applyRuntimeHeight(vChild.getBoxHeight()); - } - else - { - vChild._resetRuntimeHeight(); - } - } - } -} -else -{ - qx.Proto.layoutChild_sizeX = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.width) - { - if (vChild._isWidthEssential() && !vChild._computedWidthTypeNull) - { - vChild._applyRuntimeWidth(vChild.getWidthValue()); - } - else - { - vChild._resetRuntimeWidth(); - } - } - } - - qx.Proto.layoutChild_sizeY = function(vChild, vJobs) - { - if (vJobs.initial || vJobs.height) - { - if (vChild._isHeightEssential() && !vChild._computedHeightTypeNull) - { - vChild._applyRuntimeHeight(vChild.getHeightValue()); - } - else - { - vChild._resetRuntimeHeight(); - } - } - } -} - -qx.Proto.layoutChild_locationY = function(vChild, vJobs) -{ - var vWidget = this.getWidget(); - - // handle first child - if (vWidget.getFirstVisibleChild() == vChild) - { - switch(vWidget.getLayoutMode()) - { - case "bottom": - case "top-reversed": - var vPos = vWidget.getPaddingBottom() + vWidget.getAccumulatedChildrenOuterHeight() - vChild.getOuterHeight(); - break; - - case "middle": - case "middle-reversed": - var vPos = vWidget.getPaddingTop() + Math.round((vWidget.getInnerHeight() - vWidget.getAccumulatedChildrenOuterHeight()) / 2); - break; - - default: - var vPos = vWidget.getPaddingTop(); - } - } - - // handle any following child - else - { - var vPrev = vChild.getPreviousVisibleSibling(); - - switch(vWidget.getLayoutMode()) - { - case "bottom": - case "top-reversed": - var vPos = vPrev._cachedLocationVertical - vChild.getOuterHeight() - vWidget.getSpacing(); - break; - - default: - var vPos = vPrev._cachedLocationVertical + vPrev.getOuterHeight() + vWidget.getSpacing(); - } - } - - // store for next sibling - vChild._cachedLocationVertical = vPos; - - // apply styles - switch(this.getWidget().getLayoutMode()) - { - case "bottom": - case "bottom-reversed": - case "middle-reversed": - // add relative positions (like 'position:relative' in css) - vPos += !vChild._computedBottomTypeNull ? vChild.getBottomValue() : !vChild._computedTopTypeNull ? -(vChild.getTopValue()) : 0; - - vChild._resetRuntimeTop(); - vChild._applyRuntimeBottom(vPos); - break; - - default: - // add relative positions (like 'position:relative' in css) - vPos += !vChild._computedTopTypeNull ? vChild.getTopValue() : !vChild._computedBottomTypeNull ? -(vChild.getBottomValue()) : 0; - - vChild._resetRuntimeBottom(); - vChild._applyRuntimeTop(vPos); - } -} - -qx.Proto.layoutChild_locationX = function(vChild, vJobs) -{ - var vWidget = this.getWidget(); - - // special stretching support - if (qx.core.Client.getInstance().isGecko() && vChild.getAllowStretchX() && vWidget.getStretchChildrenOrthogonalAxis() && vChild._computedWidthTypeNull) - { - vChild._applyRuntimeLeft(vWidget.getPaddingLeft() || 0); - vChild._applyRuntimeRight(vWidget.getPaddingRight() || 0); - - return; - } - - // priority to childs internal alignment - var vAlign = vChild.getHorizontalAlign() || vWidget.getHorizontalChildrenAlign(); - - // handle center alignment - var vPos = vAlign == "center" ? Math.round((vWidget.getInnerWidth() - vChild.getOuterWidth()) / 2) : 0; - - // the right alignment use the real 'right' styleproperty to - // use the best available method in modern browsers - if (vAlign == "right") - { - // add parent padding - vPos += vWidget.getPaddingRight(); - - // relative positions (like 'position:relative' in css) - if (!vChild._computedRightTypeNull) { - vPos += vChild.getRightValue(); - } - else if (!vChild._computedLeftTypeNull) { - vPos -= vChild.getLeftValue(); - } - - // apply styles - vChild._resetRuntimeLeft(); - vChild._applyRuntimeRight(vPos); - } - else - { - // add parent padding - vPos += vWidget.getPaddingLeft(); - - // relative positions (like 'position:relative' in css) - if (!vChild._computedLeftTypeNull) { - vPos += vChild.getLeftValue(); - } - else if (!vChild._computedRightTypeNull) { - vPos -= vChild.getRightValue(); - } - - // apply styles - vChild._resetRuntimeRight(); - vChild._applyRuntimeLeft(vPos); - } -} |