summaryrefslogtreecommitdiff
path: root/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/HorizontalBoxLayoutImpl.js
diff options
context:
space:
mode:
Diffstat (limited to 'webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/HorizontalBoxLayoutImpl.js')
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/HorizontalBoxLayoutImpl.js863
1 files changed, 0 insertions, 863 deletions
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/HorizontalBoxLayoutImpl.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/HorizontalBoxLayoutImpl.js
deleted file mode 100644
index 6276f309bc..0000000000
--- a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/HorizontalBoxLayoutImpl.js
+++ /dev/null
@@ -1,863 +0,0 @@
-/* ************************************************************************
-
- qooxdoo - the new era of web development
-
- http://qooxdoo.org
-
- Copyright:
- 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
-
- License:
- LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
-
- 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.sys.Client.getInstance().isMshtml() || qx.sys.Client.getInstance().isOpera() || qx.sys.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.sys.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);
- }
-}