Thread: [qooxdoo-commit] SF.net SVN: qooxdoo: [10252] trunk/qooxdoo/frontend/framework/source/class/ qx/ui2
Brought to you by:
ecker,
martinwittemann
From: <wp...@us...> - 2007-09-25 10:19:31
|
Revision: 10252 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10252&view=rev Author: wpbasti Date: 2007-09-25 03:19:25 -0700 (Tue, 25 Sep 2007) Log Message: ----------- Renamed box layout Added Paths: ----------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Removed Paths: ------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HorizontalBoxLayout.js Copied: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js (from rev 10251, trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HorizontalBoxLayout.js) =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js (rev 0) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-25 10:19:25 UTC (rev 10252) @@ -0,0 +1,187 @@ +/* ************************************************************************ + + 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) + * Fabian Jakobs (fjakobs) + +************************************************************************ */ + +qx.Class.define("qx.ui2.layout.HBox", +{ + extend : qx.ui2.layout.AbstractLayout, + + + + + + + /* + ***************************************************************************** + CONSTRUCTOR + ***************************************************************************** + */ + + construct : function() + { + this.base(arguments); + + this._children = []; + this._preferredWidth = null; + this._preferredHeight = null; + }, + + + + + /* + ***************************************************************************** + PROPERTIES + ***************************************************************************** + */ + + properties : + { + spacing : + { + check : "Integer", + init : 5 + } + }, + + + + + /* + ***************************************************************************** + MEMBERS + ***************************************************************************** + */ + + members : + { + + // overridden + add : function(widget) { + this._children.push(widget); + }, + + // overridden + remove : function(widget) { + qx.lang.Array.remove(this._children, widget); + }, + + // overridden + getChildren : function() { + return this._children; + }, + + // overridden + layout : function(width, height) + { + var posX = 0; + var spacing = this.getSpacing(); + + + for (var i=0, l=this._children.length; i<l; i++) + { + var child = this._children[i]; + var childWidth = child.getPreferredWidth(); + + if (posX < width) + { + child.layout(posX, 0, childWidth, child.getPreferredHeight()); + child.getElement().include(); + } + else + { + child.getElement().exclude(); + } + + posX += childWidth + spacing; + } + }, + + // overridden + invalidate : function() + { + this.debug("Clear layout cache."); + this._preferredWidth = null; + this._preferredHeight = null; + }, + + // overridden + getPreferredWidth : function() + { + if (this._preferredWidth !== null) { + this.debug("cached preferred width: ", this._preferredWidth); + return this._preferredWidth; + } + + var width = 0; + + for (var i=0, l=this._children.length; i<l; i++) + { + var child = this._children[i]; + width += child.getPreferredWidth(); + } + width += this.getSpacing() * (this._children.length-1); + + this._preferredWidth = width; + this.debug("computed preferred width: ", this._preferredWidth); + + return width; + }, + + + // overridden + getPreferredHeight : function() + { + if (this._preferredHeight !== null) { + this.debug("cached preferred height: ", this._preferredHeight); + return this._preferredHeight; + } + + var height = 0; + + for (var i=0, l=this._children.length; i<l; i++) + { + var child = this._children[i]; + height = Math.max(height, child.getPreferredHeight()); + } + + this._preferredHeight = height; + this.debug("computed preferred height: ", this._preferredHeight); + + return height; + } + + + }, + + + + + /* + ***************************************************************************** + DESTRUCT + ***************************************************************************** + */ + + destruct : function() + { + + + } +}); \ No newline at end of file Deleted: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HorizontalBoxLayout.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HorizontalBoxLayout.js 2007-09-25 09:32:52 UTC (rev 10251) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HorizontalBoxLayout.js 2007-09-25 10:19:25 UTC (rev 10252) @@ -1,187 +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) - * Fabian Jakobs (fjakobs) - -************************************************************************ */ - -qx.Class.define("qx.ui2.layout.HBox", -{ - extend : qx.ui2.layout.AbstractLayout, - - - - - - - /* - ***************************************************************************** - CONSTRUCTOR - ***************************************************************************** - */ - - construct : function() - { - this.base(arguments); - - this._children = []; - this._preferredWidth = null; - this._preferredHeight = null; - }, - - - - - /* - ***************************************************************************** - PROPERTIES - ***************************************************************************** - */ - - properties : - { - spacing : - { - check : "Integer", - init : 5 - } - }, - - - - - /* - ***************************************************************************** - MEMBERS - ***************************************************************************** - */ - - members : - { - - // overridden - add : function(widget) { - this._children.push(widget); - }, - - // overridden - remove : function(widget) { - qx.lang.Array.remove(this._children, widget); - }, - - // overridden - getChildren : function() { - return this._children; - }, - - // overridden - layout : function(width, height) - { - var posX = 0; - var spacing = this.getSpacing(); - - - for (var i=0, l=this._children.length; i<l; i++) - { - var child = this._children[i]; - var childWidth = child.getPreferredWidth(); - - if (posX < width) - { - child.layout(posX, 0, childWidth, child.getPreferredHeight()); - child.getElement().include(); - } - else - { - child.getElement().exclude(); - } - - posX += childWidth + spacing; - } - }, - - // overridden - invalidate : function() - { - this.debug("Clear layout cache."); - this._preferredWidth = null; - this._preferredHeight = null; - }, - - // overridden - getPreferredWidth : function() - { - if (this._preferredWidth !== null) { - this.debug("cached preferred width: ", this._preferredWidth); - return this._preferredWidth; - } - - var width = 0; - - for (var i=0, l=this._children.length; i<l; i++) - { - var child = this._children[i]; - width += child.getPreferredWidth(); - } - width += this.getSpacing() * (this._children.length-1); - - this._preferredWidth = width; - this.debug("computed preferred width: ", this._preferredWidth); - - return width; - }, - - - // overridden - getPreferredHeight : function() - { - if (this._preferredHeight !== null) { - this.debug("cached preferred height: ", this._preferredHeight); - return this._preferredHeight; - } - - var height = 0; - - for (var i=0, l=this._children.length; i<l; i++) - { - var child = this._children[i]; - height = Math.max(height, child.getPreferredHeight()); - } - - this._preferredHeight = height; - this.debug("computed preferred height: ", this._preferredHeight); - - return height; - } - - - }, - - - - - /* - ***************************************************************************** - DESTRUCT - ***************************************************************************** - */ - - destruct : function() - { - - - } -}); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fj...@us...> - 2007-09-25 15:51:26
|
Revision: 10264 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10264&view=rev Author: fjakobs Date: 2007-09-25 08:51:24 -0700 (Tue, 25 Sep 2007) Log Message: ----------- implement sizeHint in layout managers Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/AbstractLayout.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/AbstractLayout.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/AbstractLayout.js 2007-09-25 15:48:12 UTC (rev 10263) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/AbstractLayout.js 2007-09-25 15:51:24 UTC (rev 10264) @@ -103,14 +103,11 @@ layout : function(width, height) {}, /** - * Get the layout's preferred width. The layout manager should always cache - * this value + * Get the layout's preferred size. The layout manager should always cache + * this value */ - getPreferredWidth : function() {}, + getSizeHint : function() {}, - /** Get the layout's preferred height */ - getPreferredHeight : function() {}, - /** Invalidate all leyout relevant caches */ invalidate : function() {} Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-25 15:48:12 UTC (rev 10263) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-25 15:51:24 UTC (rev 10264) @@ -38,9 +38,7 @@ this.base(arguments); this._children = []; - - this._preferredWidth = null; - this._preferredHeight = null; + this._sizeHint = null; }, @@ -114,59 +112,46 @@ invalidate : function() { this.debug("Clear layout cache."); - this._preferredWidth = null; - this._preferredHeight = null; + this._sizeHint = null; }, // overridden - getPreferredWidth : function() + getSizeHint : function() { - if (this._preferredWidth !== null) { - this.debug("cached preferred width: ", this._preferredWidth); - return this._preferredWidth; + if (this._sizeHint !== null) { + this.debug("cached preferred hint: ", this._sizeHint); + return this._sizeHint; } - var width = 0; + var hint = { + minWidth : 0, + width : 0, + maxWidth : 32000, + minHeight : 0, + height : 0, + maxHeight : 32000 + }; for (var i=0, l=this._children.length; i<l; i++) { var child = this._children[i]; var childHint = child.getSizeHint(); var childLeft = child.getLayoutProperty("left") || 0; + var childTop = child.getLayoutProperty("top") || 0; - width = Math.max(width, childLeft + childHint.width); - } + hint.minWidth = Math.max(hint.minWidth, childLeft + childHint.minWidth); + hint.width = Math.max(hint.width, childLeft + childHint.width); + hint.maxWidth = Math.max(hint.maxWidth, childLeft + childHint.maxWidth); - this._preferredWidth = width; - this.debug("computed preferred width: ", this._preferredWidth); - - return width; - }, - - - // overridden - getPreferredHeight : function() - { - if (this._preferredHeight !== null) { - this.debug("cached computed height: ", this._preferredHeight); - return this._preferredHeight; + hint.minHeight = Math.max(hint.minHeight, childTop + childHint.minHeight); + hint.height = Math.max(hint.height, childTop + childHint.height); + hint.maxHeight = Math.max(hint.maxHeight, childTop + childHint.maxHeight); } - var height = 0; + this._sizeHint = hint; + this.debug("computed preferred width: ", this._sizeHint); - for (var i=0, l=this._children.length; i<l; i++) - { - var child = this._children[i]; - var childHint = child.getSizeHint(); - var childTop = child.getLayoutProperty("top") || 0; - - height = Math.max(height, childTop + childHint.height); - } - - this._preferredHeight = height; - this.debug("computed preferred height: ", this._preferredHeight); - - return height; + return hint; } }, Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-25 15:48:12 UTC (rev 10263) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-25 15:51:24 UTC (rev 10264) @@ -36,7 +36,9 @@ construct : function() { this.base(arguments); + this._children = []; + this._sizeHint = null; }, @@ -68,12 +70,7 @@ members : { - /** {Integer} Currently cached preferred width */ - _preferredWidth : null, - /** {Integer} Currently cached preferred height */ - _preferredHeight : null, - // overridden add : function(widget, hFlex, vAlign) { @@ -152,53 +149,51 @@ this._preferredHeight = null; }, + // overridden - getPreferredWidth : function() + invalidate : function() { - if (this._preferredWidth !== null) { - this.debug("cached preferred width: ", this._preferredWidth); - return this._preferredWidth; - } - - var width = 0; - - for (var i=0, l=this._children.length; i<l; i++) - { - var child = this._children[i]; - width += child.getSizeHint().width; - } - width += this.getSpacing() * (this._children.length-1); - - this._preferredWidth = width; - this.debug("computed preferred width: ", this._preferredWidth); - - return width; + this.debug("Clear layout cache."); + this._sizeHint = null; }, - // overridden - getPreferredHeight : function() + getSizeHint : function() { - if (this._preferredHeight !== null) { - this.debug("cached preferred height: ", this._preferredHeight); - return this._preferredHeight; + if (this._sizeHint !== null) { + this.debug("cached preferred hint: ", this._sizeHint); + return this._sizeHint; } - var height = 0; + var hint = { + minWidth : 0, + width : 0, + maxWidth : 32000, + minHeight : 0, + height : 0, + maxHeight : 32000 + }; for (var i=0, l=this._children.length; i<l; i++) { var child = this._children[i]; - height = Math.max(height, child.getSizeHint().height); + var childHint = child.getSizeHint(); + + hint.minWidth += child.getSizeHint().minWidth; + hint.width += child.getSizeHint().width; + hint.maxWidth += child.getSizeHint().maxWidth; + + hint.minHeight = Math.max(hint.minHeight, childHint.minHeight); + hint.height = Math.max(hint.height, childHint.height); + hint.maxHeight = Math.max(hint.maxHeight, childHint.maxHeight); } - this._preferredHeight = height; - this.debug("computed preferred height: ", this._preferredHeight); + this._sizeHint = hint; + this.debug("computed preferred width: ", this._sizeHint); - return height; + return hint; } - }, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-09-25 16:04:09
|
Revision: 10268 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10268&view=rev Author: wpbasti Date: 2007-09-25 09:04:07 -0700 (Tue, 25 Sep 2007) Log Message: ----------- Minor cleanup Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-25 16:02:58 UTC (rev 10267) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-25 16:04:07 UTC (rev 10268) @@ -126,10 +126,10 @@ var hint = { minWidth : 0, width : 0, - maxWidth : 32000, + maxWidth : 0, minHeight : 0, height : 0, - maxHeight : 32000 + maxHeight : 0 }; for (var i=0, l=this._children.length; i<l; i++) Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-25 16:02:58 UTC (rev 10267) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-25 16:04:07 UTC (rev 10268) @@ -167,7 +167,7 @@ } var minWidth=0, width=0, maxWidth=0; - var minHeight=0, width=0, maxHeight=0; + var minHeight=0, height=0, maxHeight=0; for (var i=0, l=this._children.length; i<l; i++) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-09-26 09:29:50
|
Revision: 10279 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10279&view=rev Author: wpbasti Date: 2007-09-26 02:29:48 -0700 (Wed, 26 Sep 2007) Log Message: ----------- Minor performance and style improvements of basic layout Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-26 09:23:04 UTC (rev 10278) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-26 09:29:48 UTC (rev 10279) @@ -79,16 +79,19 @@ } }, + // overridden remove : function(widget) { qx.lang.Array.remove(this._children, widget); }, + // overridden getChildren : function() { return this._children; }, + // overridden layout : function(width, height) { @@ -108,52 +111,61 @@ } }, + // overridden invalidate : function() { - this.debug("Clear layout cache."); - this._sizeHint = null; + if (this._sizeHint) + { + this.debug("Clear old size hint"); + this._sizeHint = null; + } }, + // overridden getSizeHint : function() { - if (this._sizeHint !== null) { - this.debug("cached preferred hint: ", this._sizeHint); + if (this._sizeHint) + { + this.debug("Cached size hint: ", this._sizeHint); return this._sizeHint; } - var hint = { - minWidth : 0, - width : 0, - maxWidth : 0, - minHeight : 0, - height : 0, - maxHeight : 0 - }; + var minWidth=0, width=0, maxWidth=0; + var minHeight=0, height=0, maxHeight=0; - for (var i=0, l=this._children.length; i<l; i++) + var children = this._children; + var child, childHint, childLeft, childTop; + + for (var i=0, l=children.length; i<l; i++) { - var child = this._children[i]; - var childHint = child.getSizeHint(); - var childLeft = child.getLayoutProperty("left") || 0; - var childTop = child.getLayoutProperty("top") || 0; + child = children[i]; + childHint = child.getSizeHint(); + childLeft = child.getLayoutProperty("left") || 0; + childTop = child.getLayoutProperty("top") || 0; - hint.minWidth = Math.max(hint.minWidth, childLeft + childHint.minWidth); - hint.width = Math.max(hint.width, childLeft + childHint.width); - hint.maxWidth = Math.max(hint.maxWidth, childLeft + childHint.maxWidth); + minWidth = Math.max(minWidth, childLeft + childHint.minWidth); + width = Math.max(width, childLeft + childHint.width); + maxWidth = Math.max(maxWidth, childLeft + childHint.maxWidth); - hint.minHeight = Math.max(hint.minHeight, childTop + childHint.minHeight); - hint.height = Math.max(hint.height, childTop + childHint.height); - hint.maxHeight = Math.max(hint.maxHeight, childTop + childHint.maxHeight); + minHeight = Math.max(minHeight, childTop + childHint.minHeight); + height = Math.max(height, childTop + childHint.height); + maxHeight = Math.max(maxHeight, childTop + childHint.maxHeight); } - this._sizeHint = hint; - this.debug("computed preferred width: ", this._sizeHint); + var hint = { + minWidth : minWidth, + width : width, + maxWidth : maxWidth, + minHeight : minHeight, + height : height, + maxHeight : maxHeight + }; - return hint; + this.debug("Computed size hint: ", hint); + return this._sizeHint = hint; } - }, Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-26 09:23:04 UTC (rev 10278) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-26 09:29:48 UTC (rev 10279) @@ -275,8 +275,8 @@ maxHeight : maxHeight }; + this.debug("Computed size hint: ", hint); this._sizeHint = hint; - this.debug("Computed size hint: ", this._sizeHint); return hint; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-09-26 13:58:57
|
Revision: 10293 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10293&view=rev Author: wpbasti Date: 2007-09-26 06:58:53 -0700 (Wed, 26 Sep 2007) Log Message: ----------- Splitted algo into util class method Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Added Paths: ----------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-26 13:44:26 UTC (rev 10292) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-26 13:58:53 UTC (rev 10293) @@ -132,100 +132,10 @@ } } - return this._computeFlexOffsets(flexibles, spaceDifference); + return qx.ui2.layout.Util.computeFlexOffsets(flexibles, spaceDifference); }, - _computeFlexOffsets : function(flexibles, spaceDifference) - { - var fillUp = spaceDifference > 0; - var remaining = Math.abs(spaceDifference); - // Initialialize return field - var flexOffsets = {}; - for (var i=0, l=flexibles.length; i<l; i++) { - flexOffsets[flexibles[i].id] = 0; - } - - - while (flexibles.length > 0 && remaining != 0) - { - qx.core.Log.debug("!! Flex loop, remaining space: " + remaining); - - var minFlexUnit = 32000; - var minEntry; - var flexCount = 0; - var flexLength = flexibles.length; - var hasFlexPotential = false; - - for (var i=0; i<flexLength; i++) - { - child = flexibles[i]; - - if (child.potential == 0) { - continue; - } - - hasFlexPotential = true; - - flexCount += child.flex; - flexUnit = child.potential / child.flex; // pixel per flex unit - - qx.core.Log.debug(" - potential: " + child.potential + ", flex unit: " + flexUnit); - - if (flexUnit < minFlexUnit) { - minFlexUnit = flexUnit; - } - } - - if (!hasFlexPotential) { - break; - } - - qx.core.Log.debug("Min Flex Unit: " + minFlexUnit); - - pixelIncrement = minFlexUnit * flexCount // pixel to grow - pixelTodo = Math.min(remaining, pixelIncrement); - minFlexUnit = pixelTodo / flexCount; // corrected flex unit minimum - childRounding = 0; - - qx.core.Log.debug("Pixel to grow: " + pixelIncrement); - qx.core.Log.debug("Pixel todo: " + pixelTodo); - qx.core.Log.debug("Corrected minFlexUnit: " + minFlexUnit); - - var roundingError = 0; - - for (var i=flexLength-1; i>=0; i--) - { - child = flexibles[i]; - - if (child.potential == 0) { - continue; - } - - childGrow = Math.min(remaining, child.potential, Math.ceil(minFlexUnit * child.flex)); - roundingError += childGrow - (minFlexUnit * child.flex); - - if (roundingError >= 1) - { - roundingError -= 1; - childGrow -= 1; - } - - qx.core.Log.debug("Rounding error: ", roundingError); - - flexOffsets[child.id] += (fillUp ? childGrow : -childGrow); - - child.potential -= childGrow; - remaining -= childGrow; - - qx.core.Log.debug(" - grow by: " + childGrow + " (potential: " + child.potential + ")"); - } - } - - return flexOffsets; - }, - - // overridden layout : function(width, height) { Added: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js (rev 0) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js 2007-09-26 13:58:53 UTC (rev 10293) @@ -0,0 +1,115 @@ +/* ************************************************************************ + + 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) + * Fabian Jakobs (fjakobs) + +************************************************************************ */ + +qx.Class.define("qx.ui2.layout.Util", +{ + statics : + { + computeFlexOffsets : function(flexibles, spaceDifference) + { + var fillUp = spaceDifference > 0; + var remaining = Math.abs(spaceDifference); + + // Initialialize return field + var flexOffsets = {}; + for (var i=0, l=flexibles.length; i<l; i++) { + flexOffsets[flexibles[i].id] = 0; + } + + + while (flexibles.length > 0 && remaining != 0) + { + qx.core.Log.debug("!! Flex loop, remaining space: " + remaining); + + var minFlexUnit = 32000; + var minEntry; + var flexCount = 0; + var flexLength = flexibles.length; + var hasFlexPotential = false; + + for (var i=0; i<flexLength; i++) + { + child = flexibles[i]; + + if (child.potential == 0) { + continue; + } + + hasFlexPotential = true; + + flexCount += child.flex; + flexUnit = child.potential / child.flex; // pixel per flex unit + + qx.core.Log.debug(" - potential: " + child.potential + ", flex unit: " + flexUnit); + + if (flexUnit < minFlexUnit) { + minFlexUnit = flexUnit; + } + } + + if (!hasFlexPotential) { + break; + } + + qx.core.Log.debug("Min Flex Unit: " + minFlexUnit); + + pixelIncrement = minFlexUnit * flexCount // pixel to grow + pixelTodo = Math.min(remaining, pixelIncrement); + minFlexUnit = pixelTodo / flexCount; // corrected flex unit minimum + childRounding = 0; + + qx.core.Log.debug("Pixel to grow: " + pixelIncrement); + qx.core.Log.debug("Pixel todo: " + pixelTodo); + qx.core.Log.debug("Corrected minFlexUnit: " + minFlexUnit); + + var roundingError = 0; + + for (var i=flexLength-1; i>=0; i--) + { + child = flexibles[i]; + + if (child.potential == 0) { + continue; + } + + childGrow = Math.min(remaining, child.potential, Math.ceil(minFlexUnit * child.flex)); + roundingError += childGrow - (minFlexUnit * child.flex); + + if (roundingError >= 1) + { + roundingError -= 1; + childGrow -= 1; + } + + qx.core.Log.debug("Rounding error: ", roundingError); + + flexOffsets[child.id] += (fillUp ? childGrow : -childGrow); + + child.potential -= childGrow; + remaining -= childGrow; + + qx.core.Log.debug(" - grow by: " + childGrow + " (potential: " + child.potential + ")"); + } + } + + return flexOffsets; + } + } +}); Property changes on: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js ___________________________________________________________________ Name: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-09-26 15:20:50
|
Revision: 10299 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10299&view=rev Author: wpbasti Date: 2007-09-26 08:20:44 -0700 (Wed, 26 Sep 2007) Log Message: ----------- Further cleanups and polishing Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-26 14:24:00 UTC (rev 10298) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-26 15:20:44 UTC (rev 10299) @@ -121,7 +121,7 @@ hint = child.getSizeHint(); flexibles.push({ - id : child.toHashCode(), + id : i, potential : diff > 0 ? hint.maxWidth - hint.width : hint.width - hint.minWidth, flex : child.getLayoutProperty("hFlex") || 1 }); @@ -149,7 +149,7 @@ { child = children[i]; childHint = child.getSizeHint(); - childOffset = offsets[child.toHashCode()] || 0; + childOffset = offsets[i] || 0; if (left < width) { Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js 2007-09-26 14:24:00 UTC (rev 10298) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js 2007-09-26 15:20:44 UTC (rev 10299) @@ -25,11 +25,9 @@ computeFlexOffsets : function(flexibles, spaceDifference) { var child; - var flexCount, hasFlexPotential; - var roundingError, childOffset; + var flexSum, flexStep; + var roundingOffset, childOffset; var flexLength = flexibles.length; - var flexUnit; - var minFlexUnit, pixelIncrement, pixelTodo; // Normalize space difference @@ -47,78 +45,63 @@ // Continue as long as we need to do anything while (remaining != 0) { - // qx.core.Log.debug("Flex loop, remaining space: " + remaining); + // qx.core.Log.debug("Flex loop, remaining: " + remaining); - minFlexUnit = 32000; - flexCount = 0; - hasFlexPotential = false; - // Find minimum potential for next correction + flexStep = 32000; + flexSum = 0; for (var i=0; i<flexLength; i++) { child = flexibles[i]; - if (child.potential == 0) { - continue; + if (child.potential > 0) + { + flexSum += child.flex; + flexStep = Math.min(flexStep, child.potential / child.flex); } - - hasFlexPotential = true; - - flexCount += child.flex; - flexUnit = child.potential / child.flex; - - // qx.core.Log.debug(" - potential: " + child.potential + ", flex unit: " + flexUnit); - - if (flexUnit < minFlexUnit) { - minFlexUnit = flexUnit; - } } - if (!hasFlexPotential) { + + // No potential found, quit here + if (flexSum == 0) { break; } - // qx.core.Log.debug("Min Flex Unit: " + minFlexUnit); - pixelIncrement = minFlexUnit * flexCount; - pixelTodo = Math.min(remaining, pixelIncrement); - minFlexUnit = pixelTodo / flexCount; + // Respect maximum potential given through remaining space + // The parent should always win in such conflicts. + flexStep = Math.min(remaining, flexStep * flexSum) / flexSum; + // qx.core.Log.debug("Flex Step (corrected): " + flexStep); - // qx.core.Log.debug("Pixel to grow: " + pixelIncrement); - // qx.core.Log.debug("Pixel todo: " + pixelTodo); - // qx.core.Log.debug("Corrected minFlexUnit: " + minFlexUnit); - roundingError = 0; + // Start with correction + roundingOffset = 0; for (var i=flexLength-1; i>=0; i--) { child = flexibles[i]; - if (child.potential == 0) { - continue; - } - - childOffset = Math.min(remaining, child.potential, Math.ceil(minFlexUnit * child.flex)); - - // Fix rounding issue - roundingError += childOffset - (minFlexUnit * child.flex); - if (roundingError >= 1) + if (child.potential > 0) { - roundingError -= 1; - childOffset -= 1; - } + // Compute offset for this step + childOffset = Math.min(remaining, child.potential, Math.ceil(flexStep * child.flex)); - // qx.core.Log.debug("Rounding error: ", roundingError); + // Fix rounding issues + roundingOffset += childOffset - (flexStep * child.flex); + if (roundingOffset >= 1) + { + roundingOffset -= 1; + childOffset -= 1; + } - // Update child status - child.potential -= childOffset; + // Update child status + child.potential -= childOffset; + offsets[child.id] += (fillUp ? childOffset : -childOffset); - // Update parent status - remaining -= childOffset; + // Update parent status + remaining -= childOffset; - // Store child offset - offsets[child.id] += (fillUp ? childOffset : -childOffset); - - // qx.core.Log.debug(" - grow by: " + childOffset + " (potential: " + child.potential + ")"); + // qx.core.Log.debug(" - grow by: " + childOffset + " (potential: " + child.potential + ")"); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-09-26 17:31:27
|
Revision: 10303 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10303&view=rev Author: wpbasti Date: 2007-09-26 10:31:19 -0700 (Wed, 26 Sep 2007) Log Message: ----------- Minor fix Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-26 16:56:51 UTC (rev 10302) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-26 17:31:19 UTC (rev 10303) @@ -132,12 +132,14 @@ return this._sizeHint; } - var minWidth=0, width=0, maxWidth=0; - var minHeight=0, height=0, maxHeight=0; + var minWidth=0, width=0, maxWidth=32000; + var minHeight=0, height=0, maxHeight=32000; var children = this._children; var child, childHint, childLeft, childTop; + + // Iterate for (var i=0, l=children.length; i<l; i++) { child = children[i]; @@ -145,15 +147,22 @@ childLeft = child.getLayoutProperty("left") || 0; childTop = child.getLayoutProperty("top") || 0; - minWidth = Math.max(minWidth, childLeft + childHint.minWidth); width = Math.max(width, childLeft + childHint.width); - maxWidth = Math.max(maxWidth, childLeft + childHint.maxWidth); - - minHeight = Math.max(minHeight, childTop + childHint.minHeight); height = Math.max(height, childTop + childHint.height); - maxHeight = Math.max(maxHeight, childTop + childHint.maxHeight); } + + // Limit to integer range + minWidth = Math.min(32000, Math.max(0, minWidth)); + width = Math.min(32000, Math.max(0, width)); + maxWidth = Math.min(32000, Math.max(0, maxWidth)); + + minHeight = Math.min(32000, Math.max(0, minHeight)); + height = Math.min(32000, Math.max(0, height)); + maxHeight = Math.min(32000, Math.max(0, maxHeight)); + + + // Build hint var hint = { minWidth : minWidth, width : width, Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-26 16:56:51 UTC (rev 10302) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-26 17:31:19 UTC (rev 10303) @@ -216,11 +216,16 @@ } - // Limit integer range - minWidth = Math.max(0, minWidth); - maxWidth = Math.min(32000, maxWidth); + // Limit to integer range + minWidth = Math.min(32000, Math.max(0, minWidth)); + width = Math.min(32000, Math.max(0, width)); + maxWidth = Math.min(32000, Math.max(0, maxWidth)); + minHeight = Math.min(32000, Math.max(0, minHeight)); + height = Math.min(32000, Math.max(0, height)); + maxHeight = Math.min(32000, Math.max(0, maxHeight)); + // Build hint var hint = { minWidth : minWidth, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-09-27 10:30:28
|
Revision: 10314 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10314&view=rev Author: wpbasti Date: 2007-09-27 03:30:24 -0700 (Thu, 27 Sep 2007) Log Message: ----------- Reworked offset handling in preparation for percent support Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-27 10:19:46 UTC (rev 10313) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-27 10:30:24 UTC (rev 10314) @@ -97,10 +97,10 @@ }, - _getFlexOffsets : function(width, height) + _addFlexOffsets : function(availWidth, childWidths) { var hint = this.getSizeHint(); - var diff = width - hint.width; + var diff = availWidth - hint.width; if (diff == 0) { return {}; @@ -123,39 +123,48 @@ hint = child.getSizeHint(); flexibles.push({ - id : i, - potential : diff > 0 ? hint.maxWidth - hint.width : hint.width - hint.minWidth, + potential : diff > 0 ? hint.maxWidth - childWidths[i] : childWidths[i] - hint.minWidth, flex : child.getLayoutProperty("hFlex") || 1 }); } } } - return qx.ui2.layout.Util.computeFlexOffsets(flexibles, diff); + var offsets = qx.ui2.layout.Util.computeFlexOffsets(flexibles, diff); + + for (var i=0, l=flexibles.length; i<l; i++) { + childWidths[i] += offsets[i]; + } }, // overridden - layout : function(width, height) + layout : function(availWidth, availHeight) { + // Initialize var left = 0; - var top = 0; + var children = this._children; + var child; - var spacing = this.getSpacing(); - var offsets = this._getFlexOffsets(width, height); - var children = this._children; - var child, childHint, childOffset; + // Preprocess children width data + var childWidths = []; + for (var i=0, l=children.length; i<l; i++) { + childWidths[i] = children[i].getSizeHint().width; + } + this._addFlexOffsets(availWidth, childWidths); + + + // Iterate + var spacing = this.getSpacing(); for (var i=0, l=children.length; i<l; i++) { child = children[i]; - childHint = child.getSizeHint(); - childOffset = offsets[i] || 0; - if (left < width) + if (left < availWidth) { - child.layout(left, top, childHint.width + childOffset, childHint.height); + child.layout(left, 0, childWidths[i], child.getSizeHint().height); child.include(); } else @@ -163,7 +172,7 @@ child.exclude(); } - left += childHint.width + childOffset + spacing; + left += childWidths[i] + spacing; } }, @@ -243,7 +252,6 @@ return hint; } - }, Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js 2007-09-27 10:19:46 UTC (rev 10313) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js 2007-09-27 10:30:24 UTC (rev 10314) @@ -36,9 +36,9 @@ // Initialialize return field - var offsets = {}; + var offsets = []; for (var i=0, l=flexLength; i<l; i++) { - offsets[flexibles[i].id] = 0; + offsets[i] = 0; } @@ -95,7 +95,7 @@ // Update child status child.potential -= childOffset; - offsets[child.id] += (fillUp ? childOffset : -childOffset); + offsets[i] += (fillUp ? childOffset : -childOffset); // Update parent status remaining -= childOffset; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fj...@us...> - 2007-09-27 14:19:00
|
Revision: 10323 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10323&view=rev Author: fjakobs Date: 2007-09-27 07:18:58 -0700 (Thu, 27 Sep 2007) Log Message: ----------- extract alignment code to Util Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js 2007-09-27 14:15:29 UTC (rev 10322) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js 2007-09-27 14:18:58 UTC (rev 10323) @@ -18,6 +18,16 @@ ************************************************************************ */ +/** + * This layout manager lays out its children in a two dimensional grid. The + * grid supports: + * <ul> + * <li>autosizing</li> + * <li>flex values for rows and columns</li> + * <li>minimal and maximal column and row sizes</li> + * <li>horizontal and vertical alignment</li> + * </ul> + */ qx.Class.define("qx.ui2.layout.Grid", { extend : qx.ui2.layout.AbstractLayout, @@ -87,7 +97,7 @@ if (cellData.widget !== undefined) { throw new Error("There is already a widget in this cell (" + row + ", " + column + ")"); } - this._setCellData(row ,column, {widget: widget}); + this._setCellData(row ,column, "widget", widget); this._children.push(widget); this._addToParent(widget); @@ -107,34 +117,37 @@ }, - _setCellData : function(row, column, props) + _setCellData : function(row, column, key, value) { var grid = this._grid; - if (grid[row] === undefined) { + if (grid[row] == undefined) { grid[row] = []; } - if (!grid[row][column]) { - grid[row][column] = props; - return; + var gridData = grid[row][column]; + if (!gridData) + { + grid[row][column] = {} + grid[row][column][key] = value; } - var gridData = grid[row][column] - for (var key in props) { - gridData[key] = props[key]; + else + { + gridData[key] = value; } }, - _setRowData : function(row, props) + _setRowData : function(row, key, value) { var rowData = this._rowData[row]; if (!rowData) { - this._rowData[row] = props; - return; + this._rowData[row] = {}; + this._rowData[row][key] = value; } - for (var key in props) { - rowData[key] = props[key]; + else + { + rowData[key] = value; } }, @@ -144,21 +157,24 @@ var data = this._rowData[row] || {}; return { hAlign : data.hAlign || "left", - flex : data.flex || 1 + flex : data.flex || 1, + minHeight : data.minHeight || 0, + maxHeight : data.maxHeight || 32000 } }, - _setColumnData : function(column, props) + _setColumnData : function(column, key, value) { var colData = this._colData[column]; if (!colData) { - this._colData[column] = props; - return; + this._colData[column] = {}; + this._colData[column][key] = value; } - for (var key in props) { - colData[key] = props[key]; + else + { + colData[key] = value; } }, @@ -169,7 +185,9 @@ return { vAlign : data.vAlign || "top", hAlign : data.hAlign || "left", - flex : data.flex || 1 + flex : data.flex || 1, + minWidth : data.minWidth || 0, + maxWidth : data.maxWidth || 32000 } }, @@ -189,10 +207,8 @@ this._validateArgument(hAlign, ["left", "center", "right"]); this._validateArgument(vAlign, ["top", "middle", "bottom"]); - this._setColumnData(column, { - hAlign: hAlign, - vAlign: vAlign - }); + this._setColumnData(column, "hAlign", hAlign); + this._setColumnData(column, "vAlign", vAlign); }, @@ -212,29 +228,40 @@ this._validateArgument(hAlign, ["left", "center", "right"]); this._validateArgument(vAlign, ["top", "middle", "bottom"]); - this._setColumnData(column, { - hAlign: hAlign, - vAlign: vAlign - }); + this._setCellData(column, "hAlign", hAlign); + this._setCellData(column, "vAlign", vAlign); }, - setColumnFlex : function(column, flex) - { - this._setColumnData(column, { - flex: flex - }); + setColumnFlex : function(column, flex) { + this._setColumnData(column, "flex", flex); }, + setRowFlex : function(row, flex) { + this._setRowData(row, "flex", flex); + }, - setRowFlex : function(row, flex) - { - this._setRowData(row, { - flex: flex - }); + setColumnMaxWidth : function(maxWidth) { + this._setColumnData(column, "maxWidth", maxWidth); }, + setColumnMinWidth : function(minWidth) { + this._setColumnData(column, "minWidth", minWidth); + }, + setRowMaxHeight : function(maxHeight) { + this._setRowData(column, "maxHeight", maxHeight); + }, + + setRowMinHeight : function(minHeight) { + this._setRowData(column, "minHeight", minHeight); + }, + + + + + + /** * Get a map with all information about a cell * @@ -292,10 +319,12 @@ maxHeight = Math.max(maxHeight, cellSize.maxHeight); } + var rowData = this._getRowData(row); + rowHeights[row] = { - minHeight : minHeight, + minHeight : Math.max(minHeight, rowData.minHeight), height : height, - maxHeight : maxHeight + maxHeight : Math.min(maxHeight, rowData.maxHeight) }; } @@ -331,10 +360,12 @@ maxWidth = Math.max(maxWidth, cellSize.maxWidth); } + var colData = this._getColumnData(col); + colWidths[col] = { - minWidth: minWidth, + minWidth: Math.max(minWidth, colData.minWidth), width : width, - maxWidth : maxWidth + maxWidth : Math.max(maxWidth, colData.maxWidth) }; } @@ -364,7 +395,7 @@ continue; } - colFlex = this._getColumnData(i).flex; + var colFlex = this._getColumnData(i).flex; if (colFlex > 0) { @@ -401,7 +432,7 @@ continue; } - rowFlex = this._getRowData(i).flex; + var rowFlex = this._getRowData(i).flex; if (rowFlex > 0) { @@ -420,6 +451,7 @@ // overridden layout : function(width, height) { + var Util = qx.ui2.layout.Util; var spacing = this.getSpacing(); var colWidths = this._getColWidths(); @@ -448,49 +480,9 @@ var cellWidth = Math.min(width, cellHint.maxWidth); var cellHeight = Math.min(height, cellHint.maxHeight); - var cellLeft = left; - var cellTop = top; + var cellLeft = left + Util.computeHorizontalAlignOffset(cellData.hAlign, cellWidth, width); + var cellTop = top + Util.computeVerticalAlignOffset(cellData.vAlign, cellHeight, height); - if (cellWidth !== width) - { - switch (cellData.hAlign) - { - case "left": - break; - - case "center": - cellLeft += Math.floor((width - cellWidth) / 2); - break; - - case "right": - cellLeft += (width - cellWidth) - break; - - default: - throw new Error("Invalid state!") - } - } - - if (cellHeight !== height) - { - switch (cellData.vAlign) - { - case "top": - break; - - case "middle": - cellTop += Math.floor((height - cellHeight) / 2); - break; - - case "bottom": - cellTop += (height - cellHeight) - break; - - default: - throw new Error("Invalid state!") - } - } - cellData.widget.layout( cellLeft, cellTop, @@ -528,6 +520,7 @@ // calculate col widths var colWidths = this._getColWidths(); + var minWidth=0, width=0, maxWidth=0; for (var i=0, l=colWidths.length; i<l; i++) Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js 2007-09-27 14:15:29 UTC (rev 10322) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js 2007-09-27 14:18:58 UTC (rev 10323) @@ -106,6 +106,57 @@ } return offsets; + }, + + + computeHorizontalAlignOffset : function(hAlign, widgetWidth, outerWidth) + { + if (widgetWidth !== outerWidth) + { + switch (hAlign) + { + case "left": + return 0; + break; + + case "center": + return Math.floor((outerWidth - widgetWidth) / 2); + break; + + case "right": + return outerWidth - widgetWidth; + break; + + default: + throw new Error("Invalid state!") + } + } + return 0; + }, + + + computeVerticalAlignOffset : function(vAlign, widgetHeight, outerHeight) + { + if (widgetHeight !== outerHeight) + { + switch (vAlign) + { + case "top": + return 0; + + case "middle": + return Math.floor((outerHeight - widgetHeight) / 2); + break; + + case "bottom": + return outerHeight - widgetHeight; + break; + + default: + throw new Error("Invalid state!") + } + } + return 0; } } }); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-09-27 14:26:32
|
Revision: 10324 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10324&view=rev Author: wpbasti Date: 2007-09-27 07:26:30 -0700 (Thu, 27 Sep 2007) Log Message: ----------- Minor cleanups Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-27 14:18:58 UTC (rev 10323) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-27 14:26:30 UTC (rev 10324) @@ -38,7 +38,6 @@ this.base(arguments); this._children = []; - this._sizeHint = null; }, @@ -119,7 +118,7 @@ { if (this._sizeHint) { - this.debug("Clear old size hint"); + this.debug("Clear layout cache"); this._sizeHint = null; } }, @@ -134,18 +133,17 @@ return this._sizeHint; } - var minWidth=0, width=0, maxWidth=32000; - var minHeight=0, height=0, maxHeight=32000; - var children = this._children; var child, childHint, childLeft, childTop; + var width=0, height=0; - // Iterate + // Iterate over children for (var i=0, l=children.length; i<l; i++) { child = children[i]; childHint = child.getSizeHint(); + childLeft = child.getLayoutProperty("left") || 0; childTop = child.getLayoutProperty("top") || 0; @@ -155,23 +153,18 @@ // Limit to integer range - minWidth = Math.min(32000, Math.max(0, minWidth)); width = Math.min(32000, Math.max(0, width)); - maxWidth = Math.min(32000, Math.max(0, maxWidth)); - - minHeight = Math.min(32000, Math.max(0, minHeight)); height = Math.min(32000, Math.max(0, height)); - maxHeight = Math.min(32000, Math.max(0, maxHeight)); // Build hint var hint = { - minWidth : minWidth, + minWidth : 0, width : width, - maxWidth : maxWidth, - minHeight : minHeight, + maxWidth : 32000, + minHeight : 0, height : height, - maxHeight : maxHeight + maxHeight : 32000 }; this.debug("Computed size hint: ", hint); Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js 2007-09-27 14:18:58 UTC (rev 10323) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js 2007-09-27 14:26:30 UTC (rev 10324) @@ -52,7 +52,6 @@ this._colData = []; this._children = []; - this._sizeHint = null; this._maxRowIndex = 0; this._maxColIndex = 0; @@ -501,11 +500,14 @@ // overridden invalidate : function() { - this.debug("Clear layout cache."); + if (this._sizeHint || this._rowHeights || this._colHeights) + { + this.debug("Clear layout cache"); - this._sizeHint = null; - this._rowHeights = null; - this._colHeights = null; + this._sizeHint = null; + this._rowHeights = null; + this._colHeights = null; + } }, Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-27 14:18:58 UTC (rev 10323) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-27 14:26:30 UTC (rev 10324) @@ -38,7 +38,6 @@ this.base(arguments); this._children = []; - this._sizeHint = null; }, @@ -179,21 +178,14 @@ // overridden invalidate : function() { - this.debug("Clear layout cache."); - - this._preferredWidth = null; - this._preferredHeight = null; + if (this._sizeHint) + { + this.debug("Clear layout cache"); + this._sizeHint = null; + } }, - // overridden - invalidate : function() - { - this.debug("Clear layout cache."); - this._sizeHint = null; - }, - - // overridden getSizeHint : function() { if (this._sizeHint) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-09-27 14:38:42
|
Revision: 10325 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10325&view=rev Author: wpbasti Date: 2007-09-27 07:38:40 -0700 (Thu, 27 Sep 2007) Log Message: ----------- Moved generic stuff to AbstractLayout. Added initial reduced copy of basic for canvas impl. Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/AbstractLayout.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Added Paths: ----------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/AbstractLayout.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/AbstractLayout.js 2007-09-27 14:26:30 UTC (rev 10324) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/AbstractLayout.js 2007-09-27 14:38:40 UTC (rev 10325) @@ -36,6 +36,8 @@ construct : function() { this.base(arguments); + + this._children = []; }, @@ -108,6 +110,7 @@ * @return {void} */ add : function(widget) { + this._children.push(widget); }, @@ -119,6 +122,7 @@ * @return {void} */ remove : function(widget) { + qx.lang.Array.remove(this._children, widget); }, @@ -130,6 +134,7 @@ * @return {void} */ has : function(widget) { + qx.lang.Array.contains(this._children, widget); }, @@ -141,6 +146,7 @@ * @return {void} */ getChildren : function() { + return this._children; }, @@ -161,6 +167,7 @@ * @return {void} */ invalidate : function() { + return; }, @@ -173,6 +180,7 @@ * @return {void} */ layout : function(width, height) { + throw new Error("Missing layout implementation!"); }, @@ -186,6 +194,7 @@ * is not supported by the layout. */ getSizeHint : function() { + return null; }, @@ -257,6 +266,8 @@ destruct : function() { + this._disposeDeep("_children", 1); + } }); \ No newline at end of file Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-27 14:26:30 UTC (rev 10324) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-27 14:38:40 UTC (rev 10325) @@ -26,38 +26,8 @@ - /* ***************************************************************************** - CONSTRUCTOR - ***************************************************************************** - */ - - construct : function() - { - this.base(arguments); - - this._children = []; - }, - - - - - /* - ***************************************************************************** - PROPERTIES - ***************************************************************************** - */ - - properties : - { - }, - - - - - /* - ***************************************************************************** MEMBERS ***************************************************************************** */ @@ -82,18 +52,6 @@ // overridden - remove : function(widget) { - qx.lang.Array.remove(this._children, widget); - }, - - - // overridden - getChildren : function() { - return this._children; - }, - - - // overridden layout : function(width, height) { for (var i=0, l=this._children.length; i<l; i++) Added: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js (rev 0) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js 2007-09-27 14:38:40 UTC (rev 10325) @@ -0,0 +1,83 @@ +/* ************************************************************************ + + 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) + * Fabian Jakobs (fjakobs) + +************************************************************************ */ + +qx.Class.define("qx.ui2.layout.Canvas", +{ + extend : qx.ui2.layout.Basic, + + + + + + + /* + ***************************************************************************** + MEMBERS + ***************************************************************************** + */ + + members : + { + // overridden + layout : function(width, height) + { + for (var i=0, l=this._children.length; i<l; i++) + { + var child = this._children[i]; + + if (child.isLayoutValid()) { + continue; + } + + var childHint = child.getSizeHint(); + var childLeft = child.getLayoutProperty("left") || 0; + var childTop = child.getLayoutProperty("top") || 0; + + child.layout(childLeft, childTop, childHint.width, childHint.height); + } + }, + + + // overridden + invalidate : function() { + }, + + + // overridden + getSizeHint : function() { + return null; + } + }, + + + + + /* + ***************************************************************************** + DESTRUCT + ***************************************************************************** + */ + + destruct : function() + { + + + } +}); \ No newline at end of file Property changes on: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js ___________________________________________________________________ Name: svn:executable + * Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js 2007-09-27 14:26:30 UTC (rev 10324) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js 2007-09-27 14:38:40 UTC (rev 10325) @@ -51,8 +51,6 @@ this._rowData = []; this._colData = []; - this._children = []; - this._maxRowIndex = 0; this._maxColIndex = 0; }, @@ -286,12 +284,7 @@ throw new Error("Not yet implemented."); }, - // overridden - getChildren : function() { - return this._children; - }, - _getRowHeights : function() { if (this._rowHeights != null) { Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-27 14:26:30 UTC (rev 10324) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-27 14:38:40 UTC (rev 10325) @@ -29,22 +29,6 @@ /* ***************************************************************************** - CONSTRUCTOR - ***************************************************************************** - */ - - construct : function() - { - this.base(arguments); - - this._children = []; - }, - - - - - /* - ***************************************************************************** PROPERTIES ***************************************************************************** */ @@ -85,17 +69,6 @@ this._addToParent(widget); }, - // overridden - remove : function(widget) { - qx.lang.Array.remove(this._children, widget); - }, - - // overridden - getChildren : function() { - return this._children; - }, - - _addFlexOffsets : function(availWidth, childWidths) { var hint = this.getSizeHint(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-09-27 14:54:57
|
Revision: 10329 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10329&view=rev Author: wpbasti Date: 2007-09-27 07:54:54 -0700 (Thu, 27 Sep 2007) Log Message: ----------- Renamed abstractLayout => abstract Added Paths: ----------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js Removed Paths: ------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/AbstractLayout.js Copied: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js (from rev 10328, trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/AbstractLayout.js) =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js (rev 0) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js 2007-09-27 14:54:54 UTC (rev 10329) @@ -0,0 +1,273 @@ +/* ************************************************************************ + + 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) + * Fabian Jakobs (fjakobs) + +************************************************************************ */ + +qx.Class.define("qx.ui2.layout.Abstract", +{ + extend : qx.core.Object, + + + + + + + /* + ***************************************************************************** + CONSTRUCTOR + ***************************************************************************** + */ + + construct : function() + { + this.base(arguments); + + this._children = []; + }, + + + + + /* + ***************************************************************************** + EVENTS + ***************************************************************************** + */ + + events : + { + }, + + + + + /* + ***************************************************************************** + PROPERTIES + ***************************************************************************** + */ + + properties : + { + widget : + { + check : "qx.ui2.core.Widget", + init : null, + nullable : true, + apply : "_applyWidget" + } + }, + + + + /* + ***************************************************************************** + STATICS + ***************************************************************************** + */ + + statics : + { + }, + + + + + /* + ***************************************************************************** + MEMBERS + ***************************************************************************** + */ + + members : + { + /* + --------------------------------------------------------------------------- + CHILDREN HANDLING + --------------------------------------------------------------------------- + */ + + /** + * Add this widget to the layout + * + * @type member + * @param widget {qx.ui2.core.Widget} the widget to add + * @return {void} + */ + add : function(widget) { + this._children.push(widget); + }, + + + /** + * Remove this from the layout + * + * @type member + * @param widget {qx.ui2.core.Widget} the widget to add + * @return {void} + */ + remove : function(widget) { + qx.lang.Array.remove(this._children, widget); + }, + + + /** + * Whether the widget is a child of this layout + * + * @type member + * @param widget {qx.ui2.core.Widget} the widget to add + * @return {void} + */ + has : function(widget) { + qx.lang.Array.contains(this._children, widget); + }, + + + /** + * Returns the children list + * + * @type member + * @param widget {qx.ui2.core.Widget} the widget to add + * @return {void} + */ + getChildren : function() { + return this._children; + }, + + + + + + + /* + --------------------------------------------------------------------------- + LAYOUT INTERFACE + --------------------------------------------------------------------------- + */ + + /** + * Invalidate all layout relevant caches + * + * @type member + * @return {void} + */ + invalidate : function() { + return; + }, + + + /** + * Applies the children layout. + * + * @type member + * @param width {Integer} Final (content) width (in pixel) of the parent widget + * @param width {Integer} Final (content) height (in pixel) of the parent widget + * @return {void} + */ + layout : function(width, height) { + throw new Error("Missing layout implementation!"); + }, + + + /** + * Computes the layout dimensions and possible ranges of these. + * + * @type member + * @return {Map|null} The map with the preferred width/height and the allowed + * minimum and maximum values in cases where shrinking or growing + * is required. Can also return <code>null</code> when this detection + * is not supported by the layout. + */ + getSizeHint : function() { + return null; + }, + + + + + + + + /* + --------------------------------------------------------------------------- + PARENT UTILS + --------------------------------------------------------------------------- + */ + + _addToParent : function(widget) + { + var parent = this.getWidget(); + + if (parent) + { + parent._contentElement.add(widget.getElement()); + widget.setParent(parent); + } + }, + + _removeFromParent : function(widget) + { + widget.getElement().free(); + widget.setParent(null); + }, + + + + + /* + --------------------------------------------------------------------------- + PROPERTY HANDLER + --------------------------------------------------------------------------- + */ + + _applyWidget : function(value, old) + { + var children = this.getChildren(); + + if (old) + { + for (var i=0, l=children.length; i<l; i++) { + this._removeFromParent(children[i]); + } + } + + if (value) + { + for (var i=0, l=children.length; i<l; i++) { + this._addToParent(children[i]); + } + } + } + }, + + + + + /* + ***************************************************************************** + DESTRUCT + ***************************************************************************** + */ + + destruct : function() + { + this._disposeDeep("_children", 1); + + + } +}); \ No newline at end of file Deleted: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/AbstractLayout.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/AbstractLayout.js 2007-09-27 14:54:07 UTC (rev 10328) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/AbstractLayout.js 2007-09-27 14:54:54 UTC (rev 10329) @@ -1,273 +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) - * Fabian Jakobs (fjakobs) - -************************************************************************ */ - -qx.Class.define("qx.ui2.layout.Abstract", -{ - extend : qx.core.Object, - - - - - - - /* - ***************************************************************************** - CONSTRUCTOR - ***************************************************************************** - */ - - construct : function() - { - this.base(arguments); - - this._children = []; - }, - - - - - /* - ***************************************************************************** - EVENTS - ***************************************************************************** - */ - - events : - { - }, - - - - - /* - ***************************************************************************** - PROPERTIES - ***************************************************************************** - */ - - properties : - { - widget : - { - check : "qx.ui2.core.Widget", - init : null, - nullable : true, - apply : "_applyWidget" - } - }, - - - - /* - ***************************************************************************** - STATICS - ***************************************************************************** - */ - - statics : - { - }, - - - - - /* - ***************************************************************************** - MEMBERS - ***************************************************************************** - */ - - members : - { - /* - --------------------------------------------------------------------------- - CHILDREN HANDLING - --------------------------------------------------------------------------- - */ - - /** - * Add this widget to the layout - * - * @type member - * @param widget {qx.ui2.core.Widget} the widget to add - * @return {void} - */ - add : function(widget) { - this._children.push(widget); - }, - - - /** - * Remove this from the layout - * - * @type member - * @param widget {qx.ui2.core.Widget} the widget to add - * @return {void} - */ - remove : function(widget) { - qx.lang.Array.remove(this._children, widget); - }, - - - /** - * Whether the widget is a child of this layout - * - * @type member - * @param widget {qx.ui2.core.Widget} the widget to add - * @return {void} - */ - has : function(widget) { - qx.lang.Array.contains(this._children, widget); - }, - - - /** - * Returns the children list - * - * @type member - * @param widget {qx.ui2.core.Widget} the widget to add - * @return {void} - */ - getChildren : function() { - return this._children; - }, - - - - - - - /* - --------------------------------------------------------------------------- - LAYOUT INTERFACE - --------------------------------------------------------------------------- - */ - - /** - * Invalidate all layout relevant caches - * - * @type member - * @return {void} - */ - invalidate : function() { - return; - }, - - - /** - * Applies the children layout. - * - * @type member - * @param width {Integer} Final (content) width (in pixel) of the parent widget - * @param width {Integer} Final (content) height (in pixel) of the parent widget - * @return {void} - */ - layout : function(width, height) { - throw new Error("Missing layout implementation!"); - }, - - - /** - * Computes the layout dimensions and possible ranges of these. - * - * @type member - * @return {Map|null} The map with the preferred width/height and the allowed - * minimum and maximum values in cases where shrinking or growing - * is required. Can also return <code>null</code> when this detection - * is not supported by the layout. - */ - getSizeHint : function() { - return null; - }, - - - - - - - - /* - --------------------------------------------------------------------------- - PARENT UTILS - --------------------------------------------------------------------------- - */ - - _addToParent : function(widget) - { - var parent = this.getWidget(); - - if (parent) - { - parent._contentElement.add(widget.getElement()); - widget.setParent(parent); - } - }, - - _removeFromParent : function(widget) - { - widget.getElement().free(); - widget.setParent(null); - }, - - - - - /* - --------------------------------------------------------------------------- - PROPERTY HANDLER - --------------------------------------------------------------------------- - */ - - _applyWidget : function(value, old) - { - var children = this.getChildren(); - - if (old) - { - for (var i=0, l=children.length; i<l; i++) { - this._removeFromParent(children[i]); - } - } - - if (value) - { - for (var i=0, l=children.length; i<l; i++) { - this._addToParent(children[i]); - } - } - } - }, - - - - - /* - ***************************************************************************** - DESTRUCT - ***************************************************************************** - */ - - destruct : function() - { - this._disposeDeep("_children", 1); - - - } -}); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-09-27 15:56:58
|
Revision: 10335 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10335&view=rev Author: wpbasti Date: 2007-09-27 08:56:54 -0700 (Thu, 27 Sep 2007) Log Message: ----------- Added _importProperties Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js 2007-09-27 15:56:17 UTC (rev 10334) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js 2007-09-27 15:56:54 UTC (rev 10335) @@ -174,7 +174,6 @@ * @return {void} */ invalidate : function() { - return; }, @@ -251,6 +250,25 @@ /* --------------------------------------------------------------------------- + HELPERS + --------------------------------------------------------------------------- + */ + + _importProperties : function(widget, args) + { + for (var i=1, l=args.length; i<l; i++) + { + if (args[i] != null && arguments[i+1] != null) { + widget.addLayoutProperty(arguments[i+1], args[i]); + } + } + }, + + + + + /* + --------------------------------------------------------------------------- PROPERTY HANDLER --------------------------------------------------------------------------- */ Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-27 15:56:17 UTC (rev 10334) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-27 15:56:54 UTC (rev 10335) @@ -38,14 +38,7 @@ add : function(widget, left, top) { this.base(arguments, widget); - - if (left != null) { - widget.addLayoutProperty("left", left); - } - - if (top != null) { - widget.addLayoutProperty("top", top); - } + this._importProperties(widget, arguments, "left", "top"); }, Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js 2007-09-27 15:56:17 UTC (rev 10334) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js 2007-09-27 15:56:54 UTC (rev 10335) @@ -36,6 +36,14 @@ members : { // overridden + add : function(widget, left, top, right, bottom) + { + this.base(arguments, widget); + this._importProperties(widget, arguments, "left", "top", "right", "bottom"); + }, + + + // overridden layout : function(width, height) { var children = this.getChildren(); @@ -49,22 +57,12 @@ } var childHint = child.getSizeHint(); + var childLeft = child.getLayoutProperty("left") || 0; var childTop = child.getLayoutProperty("top") || 0; child.layout(childLeft, childTop, childHint.width, childHint.height); } - }, - - - // overridden - invalidate : function() { - }, - - - // overridden - getSizeHint : function() { - return null; } }, Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-27 15:56:17 UTC (rev 10334) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-27 15:56:54 UTC (rev 10335) @@ -63,14 +63,7 @@ add : function(widget, hFlex, vAlign) { this.base(arguments, widget); - - if (hFlex != null) { - widget.addLayoutProperty("hFlex", hFlex); - } - - if (vAlign != null) { - widget.addLayoutProperty("vAlign", vAlign); - } + this._importProperties(widget, arguments, "hFlex", "vAlign"); }, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-09-27 17:09:53
|
Revision: 10340 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10340&view=rev Author: wpbasti Date: 2007-09-27 10:09:50 -0700 (Thu, 27 Sep 2007) Log Message: ----------- Further test improvements. Better API documentation Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js 2007-09-27 16:46:23 UTC (rev 10339) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js 2007-09-27 17:09:50 UTC (rev 10340) @@ -170,6 +170,7 @@ /** * Invalidate all layout relevant caches * + * @internal * @type member * @return {void} */ @@ -180,6 +181,8 @@ /** * Indicate that the layout has layout changes and propagate this information * up the widget hierarchy. + * + * @internal */ invalidateLayout : function() { @@ -193,6 +196,7 @@ /** * Applies the children layout. * + * @internal * @type member * @param width {Integer} Final (content) width (in pixel) of the parent widget * @param width {Integer} Final (content) height (in pixel) of the parent widget @@ -206,6 +210,7 @@ /** * Computes the layout dimensions and possible ranges of these. * + * @internal * @type member * @return {Map|null} The map with the preferred width/height and the allowed * minimum and maximum values in cases where shrinking or growing Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js 2007-09-27 16:46:23 UTC (rev 10339) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js 2007-09-27 17:09:50 UTC (rev 10340) @@ -75,25 +75,25 @@ if (typeof childLeft === "string" && percent.test(childLeft)) { childLeft = Math.round(parseFloat(childLeft) * availWidth / 100); - } else if (childLeft != null) { + } else if (childLeft != null && typeof childLeft !== "number") { throw new Error("Could not parse percent value for left position: " + childLeft); } if (typeof childTop === "string" && percent.test(childTop)) { childTop = Math.round(parseFloat(childTop) * availHeight / 100); - } else if (childTop != null) { + } else if (childTop != null && typeof childTop !== "number") { throw new Error("Could not parse percent value for top position: " + childTop); } if (typeof childRight === "string" && percent.test(childRight)) { childRight = Math.round(parseFloat(childRight) * availWidth / 100); - } else if (childRight != null) { + } else if (childRight != null && typeof childRight !== "number") { throw new Error("Could not parse percent value for right position: " + childRight); } if (typeof childBottom === "string" && percent.test(childBottom)) { childBottom = Math.round(parseFloat(childBottom) * availHeight / 100); - } else if (childBottom != null) { + } else if (childBottom != null && typeof childBottom !== "number") { throw new Error("Could not parse percent value for bottom position: " + childBottom); } @@ -156,32 +156,293 @@ /* --------------------------------------------------------------------------- - LAYOUT PROPERTIES + LAYOUT PROPERTIES: DIMENSION --------------------------------------------------------------------------- */ - setWidth : function(widget, value) { + /** + * Sets the width of the given widget. + * Supports percent values (string). For integer values please + * use the <code>width</code> property of the widget itself. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @param value {String} The width to apply + * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + */ + setWidth : function(widget, value) + { widget.addLayoutProperty("width", value); + return this; }, - resetWidth : function(widget) { + + /** + * Resets the width of the given widget. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + */ + resetWidth : function(widget) + { widget.removeLayoutProperty("width"); + return this; }, + + /** + * Returns the currently configured width of the given widget. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to query + * @return {String|null} The currently configured width + */ getWidth : function(widget) { return widget.getLayoutProperty("width"); }, - setHeight : function(widget, value) { + + /** + * Sets the height of the given widget. + * Supports percent values (string). For integer values please + * use the <code>height</code> property of the widget itself. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @param value {String} The height to apply + * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + */ + setHeight : function(widget, value) + { widget.addLayoutProperty("height", value); + return this; }, - resetHeight : function(widget) { + + /** + * Resets the height of the given widget. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + */ + resetHeight : function(widget) + { widget.removeLayoutProperty("height"); + return this; }, + + /** + * Returns the currently configured height of the given widget. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to query + * @return {String|null} The currently configured height + */ getHeight : function(widget) { return widget.getLayoutProperty("height"); + }, + + + + + /* + --------------------------------------------------------------------------- + LAYOUT PROPERTIES: LOCATION: LEFT + --------------------------------------------------------------------------- + */ + + /** + * Sets the left position on the canvas. + * Supports pixel values (integer) and percent values (string). + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @param value {String|Integer} The left position to apply + * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + */ + setLeft : function(widget, value) + { + widget.addLayoutProperty("left", value); + return this; + }, + + + /** + * Resets the left position on the canvas. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + */ + resetLeft : function(widget) + { + widget.removeLayoutProperty("left"); + return this; + }, + + + /** + * Returns the currently configured left position on the canvas. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to query + * @return {String|Integer|null} The currently configured left position + */ + getLeft : function(widget) { + return widget.getLayoutProperty("left"); + }, + + + + + + /* + --------------------------------------------------------------------------- + LAYOUT PROPERTIES: LOCATION: TOP + --------------------------------------------------------------------------- + */ + + /** + * Sets the top position on the canvas. + * Supports pixel values (integer) and percent values (string). + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @param value {String|Integer} The top position to apply + * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + */ + setTop : function(widget, value) + { + widget.addLayoutProperty("top", value); + return this; + }, + + + /** + * Resets the top position on the canvas. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + */ + resetTop : function(widget) + { + widget.removeLayoutProperty("top"); + return this; + }, + + + /** + * Returns the currently configured top position on the canvas. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to query + * @return {String|Integer|null} The currently configured top position + */ + getTop : function(widget) { + return widget.getLayoutProperty("top"); + }, + + + + + /* + --------------------------------------------------------------------------- + LAYOUT PROPERTIES: LOCATION: RIGHT + --------------------------------------------------------------------------- + */ + + /** + * Sets the right position on the canvas. + * Supports pixel values (integer) and percent values (string). + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @param value {String|Integer} The right position to apply + * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + */ + setRight : function(widget, value) + { + widget.addLayoutProperty("right", value); + return this; + }, + + + /** + * Resets the right position on the canvas. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + */ + resetRight : function(widget) + { + widget.removeLayoutProperty("right"); + return this; + }, + + + /** + * Returns the currently configured right position on the canvas. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to query + * @return {String|Integer|null} The currently configured right position + */ + getRight : function(widget) { + return widget.getLayoutProperty("right"); + }, + + + + /* + --------------------------------------------------------------------------- + LAYOUT PROPERTIES: LOCATION: BOTTOM + --------------------------------------------------------------------------- + */ + + /** + * Sets the bottom position on the canvas. + * Supports pixel values (integer) and percent values (string). + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @param value {String|Integer} The bottom position to apply + * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + */ + setBottom : function(widget, value) + { + widget.addLayoutProperty("bottom", value); + return this; + }, + + + /** + * Resets the bottom position on the canvas. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + */ + resetBottom : function(widget) + { + widget.removeLayoutProperty("bottom"); + return this; + }, + + + /** + * Returns the currently configured bottom position on the canvas. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to query + * @return {String|Integer|null} The currently configured bottom position + */ + getBottom : function(widget) { + return widget.getLayoutProperty("bottom"); } }, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-09-27 17:40:29
|
Revision: 10341 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10341&view=rev Author: wpbasti Date: 2007-09-27 10:40:27 -0700 (Thu, 27 Sep 2007) Log Message: ----------- Re-reverted bad flex offset stuff in hbox (get lost somehow). Minor other changes. Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js 2007-09-27 17:09:50 UTC (rev 10340) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js 2007-09-27 17:40:27 UTC (rev 10341) @@ -18,6 +18,23 @@ ************************************************************************ */ +/** + * Advanced canvas layout. Children will be positioned by coordinates + * which should be given by the user. + * + * Supports: + * + * * Integer dimensions (using widget properties) + * * Integer locations (using layout properties) + * * Percent dimensions and locations (using layout properties) + * * Stretching between left+right and top+bottom + * * Min and max dimensions (using widget properties) + * + * Notes: + * + * * Stretching has a higher priority than the preferred dimensions + * * Stretching has a lower priority than the min/max dimensions. + */ qx.Class.define("qx.ui2.layout.Canvas", { extend : qx.ui2.layout.Basic, @@ -145,6 +162,11 @@ } + + // Limit dimensions + // childWidth = Math.min( + + // Layout child child.layout(childLeft, childTop, childWidth, childHeight); } @@ -444,20 +466,5 @@ getBottom : function(widget) { return widget.getLayoutProperty("bottom"); } - }, - - - - - /* - ***************************************************************************** - DESTRUCT - ***************************************************************************** - */ - - destruct : function() - { - - } -}); \ No newline at end of file +}); Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-27 17:09:50 UTC (rev 10340) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-27 17:40:27 UTC (rev 10341) @@ -70,45 +70,43 @@ // overridden layout : function(availWidth, availHeight) { - this.printStackTrace(); - // Initialize - var left = 0; var children = this.getChildren(); - var child; + var child, childHint; + var childHeight, childAlign, childTop, childLeft=0; - // Preprocess children width data - var childWidths = []; - for (var i=0, l=children.length; i<l; i++) { - childWidths[i] = children[i].getSizeHint().width; - } + // Get flex offsets + var offsets = this._getFlexOffsets(availWidth); - this._addFlexOffsets(availWidth, childWidths); - // Iterate var spacing = this.getSpacing(); for (var i=0, l=children.length; i<l; i++) { child = children[i]; - if (left < availWidth) + childHint = child.getSizeHint(); + childWidth = childHint.width + (offsets[i] || 0); + + if (childLeft < availWidth) { - var height = child.getSizeHint().height; - var widgetHeight = Math.min(height, availHeight); + // Get top position (through alignment) + childHeight = childHint.height; + childAlign = child.getLayoutProperty("vAlign") || "top"; + childTop = qx.ui2.layout.Util.computeVerticalAlignOffset(childAlign, childHeight, availHeight); - var vAlign = child.getLayoutProperty("vAlign") || "top"; - var top = qx.ui2.layout.Util.computeVerticalAlignOffset(vAlign, height, availHeight); - child.layout(left, top, childWidths[i], widgetHeight); + // Layout child + child.layout(childLeft, childTop, childWidth, childHeight); child.include(); } else { + // Exclude (completely) hidden children child.exclude(); } - left += childWidths[i] + spacing; + childLeft += childWidth + spacing; } }, @@ -184,7 +182,7 @@ --------------------------------------------------------------------------- */ - _addFlexOffsets : function(availWidth, childWidths) + _getFlexOffsets : function(availWidth) { var hint = this.getSizeHint(); var diff = availWidth - hint.width; @@ -210,18 +208,15 @@ hint = child.getSizeHint(); flexibles.push({ - potential : diff > 0 ? hint.maxWidth - childWidths[i] : childWidths[i] - hint.minWidth, + id : i, + potential : diff > 0 ? hint.maxWidth - hint.width : hint.width - hint.minWidth, flex : childFlex || 1 }); } } } - var offsets = qx.ui2.layout.Util.computeFlexOffsets(flexibles, diff); - - for (var i=0, l=flexibles.length; i<l; i++) { - childWidths[i] += offsets[i]; - } + return qx.ui2.layout.Util.computeFlexOffsets(flexibles, diff); } }, Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js 2007-09-27 17:09:50 UTC (rev 10340) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js 2007-09-27 17:40:27 UTC (rev 10341) @@ -37,8 +37,10 @@ // Initialialize return field var offsets = []; - for (var i=0, l=flexLength; i<l; i++) { - offsets[i] = 0; + for (var i=0, l=flexLength; i<l; i++) + { + child = flexibles[i]; + offsets[child.id] = 0; } @@ -95,7 +97,7 @@ // Update child status child.potential -= childOffset; - offsets[i] += (fillUp ? childOffset : -childOffset); + offsets[child.id] += (fillUp ? childOffset : -childOffset); // Update parent status remaining -= childOffset; @@ -131,6 +133,7 @@ throw new Error("Invalid state!") } } + return 0; }, @@ -156,6 +159,7 @@ throw new Error("Invalid state!") } } + return 0; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-09-28 09:41:49
|
Revision: 10353 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10353&view=rev Author: wpbasti Date: 2007-09-28 02:41:46 -0700 (Fri, 28 Sep 2007) Log Message: ----------- Namespaces layout properties for Basic and Canvas Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-28 09:23:24 UTC (rev 10352) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-09-28 09:41:46 UTC (rev 10353) @@ -39,7 +39,7 @@ add : function(widget, left, top) { this.base(arguments, widget); - this._importProperties(widget, arguments, "left", "top"); + this._importProperties(widget, arguments, "basic.left", "basic.top"); }, @@ -57,8 +57,8 @@ { childHint = child.getSizeHint(); - childLeft = child.getLayoutProperty("left") || 0; - childTop = child.getLayoutProperty("top") || 0; + childLeft = child.getLayoutProperty("basic.left") || 0; + childTop = child.getLayoutProperty("basic.top") || 0; child.layout(childLeft, childTop, childHint.width, childHint.height); } @@ -97,8 +97,8 @@ child = children[i]; childHint = child.getSizeHint(); - childLeft = child.getLayoutProperty("left") || 0; - childTop = child.getLayoutProperty("top") || 0; + childLeft = child.getLayoutProperty("basic.left") || 0; + childTop = child.getLayoutProperty("basic.top") || 0; childWidth = Math.max(childWidth, childLeft + childHint.width); childHeight = Math.max(childHeight, childTop + childHint.height); Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-28 09:23:24 UTC (rev 10352) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-09-28 09:41:46 UTC (rev 10353) @@ -218,20 +218,5 @@ return qx.ui2.layout.Util.computeFlexOffsets(flexibles, diff); } - }, - - - - - /* - ***************************************************************************** - DESTRUCT - ***************************************************************************** - */ - - destruct : function() - { - - } -}); \ No newline at end of file +}); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-10-01 13:47:48
|
Revision: 10421 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10421&view=rev Author: wpbasti Date: 2007-10-01 06:47:46 -0700 (Mon, 01 Oct 2007) Log Message: ----------- Improved documentation Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js 2007-10-01 13:35:11 UTC (rev 10420) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js 2007-10-01 13:47:46 UTC (rev 10421) @@ -56,11 +56,29 @@ members : { - // overridden + /* + --------------------------------------------------------------------------- + CHILDREN MANAGMENT + --------------------------------------------------------------------------- + */ + + /** + * Adds a new widget to this layout. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to add + * @param edge {String?null} Edge to attach. Could be anyone of + * <code>north</code>, <code>west</code>, <code>south</code>, + * <code>east</code> or <code>center</code>. + * @param flexX {Integer?null} Flex value for the x-axis. + * @param flexY {Integer?null} Flex value for the y-axis. + * @return {qx.ui2.layout.HBox} This object (for chaining support) + */ add : function(widget, edge, flexX, flexY) { this.base(arguments, widget); this._importProperties(widget, arguments, "dock.edge", "dock.flexX", "dock.flexY"); + return this; }, Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-01 13:35:11 UTC (rev 10420) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-01 13:47:46 UTC (rev 10421) @@ -83,18 +83,37 @@ { /* --------------------------------------------------------------------------- - LAYOUT INTERFACE + CHILDREN MANAGMENT --------------------------------------------------------------------------- */ - // overridden + /** + * Adds a new widget to this layout. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to add + * @param flex {Integer?null} Flex value to use + * @param align {String?null} Vertical alignment of widget + * @return {qx.ui2.layout.HBox} This object (for chaining support) + */ add : function(widget, flex, align) { this.base(arguments, widget); this._importProperties(widget, arguments, "hbox.flex", "hbox.align"); + return this; }, + + + + + /* + --------------------------------------------------------------------------- + LAYOUT INTERFACE + --------------------------------------------------------------------------- + */ + // overridden layout : function(availWidth, availHeight) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-10-01 21:57:01
|
Revision: 10422 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10422&view=rev Author: wpbasti Date: 2007-10-01 14:56:58 -0700 (Mon, 01 Oct 2007) Log Message: ----------- Minor changes Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js 2007-10-01 13:47:46 UTC (rev 10421) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js 2007-10-01 21:56:58 UTC (rev 10422) @@ -42,19 +42,8 @@ - /* - ***************************************************************************** - EVENTS - ***************************************************************************** - */ - events : - { - }, - - - /* ***************************************************************************** PROPERTIES @@ -63,6 +52,10 @@ properties : { + /** + * Stores the connected widget instance. Each layout instance can only + * be used by one widget and this is the place this relation is stored. + */ widget : { check : "qx.ui2.core.Widget", @@ -74,19 +67,8 @@ - /* - ***************************************************************************** - STATICS - ***************************************************************************** - */ - statics : - { - }, - - - /* ***************************************************************************** MEMBERS @@ -106,12 +88,15 @@ * * @type member * @param widget {qx.ui2.core.Widget} the widget to add - * @return {void} + * @return {qx.ui2.layout.Abstract} This object (for chaining support) */ add : function(widget) { this._children.push(widget); this._addToParent(widget); + + // Chaining support + return this; }, @@ -120,7 +105,7 @@ * * @type member * @param widget {qx.ui2.core.Widget} the widget to add - * @return {void} + * @return {qx.ui2.layout.Abstract} This object (for chaining support) */ remove : function(widget) { @@ -130,6 +115,9 @@ // invalidate the layouts of the widget and its old parent widget.invalidateLayout(); this.invalidateLayout(); + + // Chaining support + return this; }, @@ -138,10 +126,11 @@ * * @type member * @param widget {qx.ui2.core.Widget} the widget to add - * @return {void} + * @return {Boolean} <code>true</code> when the given widget is a child + * of this layout. */ has : function(widget) { - qx.lang.Array.contains(this._children, widget); + return qx.lang.Array.contains(this._children, widget); }, @@ -150,7 +139,7 @@ * * @type member * @param widget {qx.ui2.core.Widget} the widget to add - * @return {void} + * @return {Array} The children array */ getChildren : function() { return this._children; @@ -171,10 +160,12 @@ * Invalidate all layout relevant caches * * @internal + * @abstract * @type member * @return {void} */ invalidate : function() { + throw new Error("Missing invalidate() implementation!"); }, @@ -183,6 +174,8 @@ * up the widget hierarchy. * * @internal + * @type member + * @return {void} */ invalidateLayout : function() { @@ -197,13 +190,14 @@ * Applies the children layout. * * @internal + * @abstract * @type member * @param width {Integer} Final (content) width (in pixel) of the parent widget * @param width {Integer} Final (content) height (in pixel) of the parent widget * @return {void} */ layout : function(width, height) { - throw new Error("Missing layout implementation!"); + throw new Error("Missing layout() implementation!"); }, @@ -233,6 +227,13 @@ --------------------------------------------------------------------------- */ + /** + * Helper to manage child insertion. + * + * @type member + + * + */ _addToParent : function(widget) { var parent = this.getWidget(); Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js 2007-10-01 13:47:46 UTC (rev 10421) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js 2007-10-01 21:56:58 UTC (rev 10422) @@ -36,6 +36,10 @@ properties : { + /** + * The way the widgets should be displayed (in conjunction with their + * position in the childrens array). + */ sort : { check : [ "auto", "yfirst", "xfirst" ], Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-01 13:47:46 UTC (rev 10421) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-01 21:56:58 UTC (rev 10422) @@ -100,6 +100,7 @@ { this.base(arguments, widget); this._importProperties(widget, arguments, "hbox.flex", "hbox.align"); + return this; }, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-10-02 09:18:28
|
Revision: 10425 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10425&view=rev Author: wpbasti Date: 2007-10-02 02:18:25 -0700 (Tue, 02 Oct 2007) Log Message: ----------- Completed documentation of most layout managers. Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js 2007-10-02 08:31:58 UTC (rev 10424) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Abstract.js 2007-10-02 09:18:25 UTC (rev 10425) @@ -25,8 +25,6 @@ - - /* ***************************************************************************** CONSTRUCTOR @@ -36,6 +34,8 @@ construct : function() { this.base(arguments); + + // This array contains the children (instances of Widget) this._children = []; }, @@ -84,7 +84,7 @@ */ /** - * Add this widget to the layout + * Adds a new widget to this layout. * * @type member * @param widget {qx.ui2.core.Widget} the widget to add @@ -138,8 +138,8 @@ * Returns the children list * * @type member - * @param widget {qx.ui2.core.Widget} the widget to add - * @return {Array} The children array + * @return {qx.ui2.core.Widget[]} The children array (Arrays are + * reference types, please to not modify them in-place) */ getChildren : function() { return this._children; @@ -165,7 +165,7 @@ * @return {void} */ invalidate : function() { - throw new Error("Missing invalidate() implementation!"); + this.warn("Missing invalidate() implementation!"); }, @@ -193,11 +193,11 @@ * @abstract * @type member * @param width {Integer} Final (content) width (in pixel) of the parent widget - * @param width {Integer} Final (content) height (in pixel) of the parent widget + * @param height {Integer} Final (content) height (in pixel) of the parent widget * @return {void} */ layout : function(width, height) { - throw new Error("Missing layout() implementation!"); + this.warn("Missing layout() implementation!"); }, @@ -336,10 +336,7 @@ ***************************************************************************** */ - destruct : function() - { + destruct : function() { this._disposeDeep("_children", 1); - - } }); \ No newline at end of file Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-10-02 08:31:58 UTC (rev 10424) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-10-02 09:18:25 UTC (rev 10425) @@ -40,16 +40,27 @@ members : { - // overridden + /** + * Adds a new widget to this layout. + * + * @type member + * @param widget {qx.ui2.core.Widget} the widget to add + * @param left {Integer?null} Left position of the widget + * @param top {Integer?null} Top position of the widget + * @return {qx.ui2.layout.Basic} This object (for chaining support) + */ add : function(widget, left, top) { this.base(arguments, widget); this._importProperties(widget, arguments, "basic.left", "basic.top"); + + // Chaining support + return this; }, // overridden - layout : function(availWidth, availHeight) + layout : function(width, height) { var children = this.getChildren(); var child, childHint, childLeft, childTop; @@ -62,8 +73,8 @@ { childHint = child.getSizeHint(); - childLeft = child.getLayoutProperty("basic.left") || 0; - childTop = child.getLayoutProperty("basic.top") || 0; + childLeft = Math.max(0, child.getLayoutProperty("basic.left") || 0); + childTop = Math.max(0, child.getLayoutProperty("basic.top") || 0); child.layout(childLeft, childTop, childHint.width, childHint.height); } @@ -115,7 +126,6 @@ childHeight = Math.max(Math.min(childHeight, childHint.maxHeight), childHint.minHeight); - // Build hint var hint = { minWidth : childWidth, Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js 2007-10-02 08:31:58 UTC (rev 10424) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js 2007-10-02 09:18:25 UTC (rev 10425) @@ -58,16 +58,33 @@ --------------------------------------------------------------------------- */ - // overridden + /** + * Adds a new widget to this layout. + * + * @type member + * @param widget {qx.ui2.core.Widget} the widget to add + * @param left {Integer|String?null} Left position of the widget (accepts + * both, integer(pixel) and string(percent) values. + * @param top {Integer|String?null} Top position of the widget (accepts + * both, integer(pixel) and string(percent) values. + * @param right {Integer|String?null} Right position of the widget (accepts + * both, integer(pixel) and string(percent) values. + * @param bottom {Integer|String?null} Bottom position of the widget (accepts + * both, integer(pixel) and string(percent) values. + * @return {qx.ui2.layout.Canvas} This object (for chaining support) + */ add : function(widget, left, top, right, bottom) { this.base(arguments, widget); this._importProperties(widget, arguments, "canvas.left", "canvas.top", "canvas.right", "canvas.bottom"); + + // Chaining support + return this; }, // overridden - layout : function(availWidth, availHeight) + layout : function(width, height) { var children = this.getChildren(); var child, childHint; @@ -89,25 +106,25 @@ childBottom = child.getLayoutProperty("canvas.bottom"); if (typeof childLeft === "string" && percent.test(childLeft)) { - childLeft = Math.round(parseFloat(childLeft) * availWidth / 100); + childLeft = Math.round(parseFloat(childLeft) * width / 100); } else if (childLeft != null && typeof childLeft !== "number") { throw new Error("Could not parse percent value for left position: " + childLeft); } if (typeof childTop === "string" && percent.test(childTop)) { - childTop = Math.round(parseFloat(childTop) * availHeight / 100); + childTop = Math.round(parseFloat(childTop) * height / 100); } else if (childTop != null && typeof childTop !== "number") { throw new Error("Could not parse percent value for top position: " + childTop); } if (typeof childRight === "string" && percent.test(childRight)) { - childRight = Math.round(parseFloat(childRight) * availWidth / 100); + childRight = Math.round(parseFloat(childRight) * width / 100); } else if (childRight != null && typeof childRight !== "number") { throw new Error("Could not parse percent value for right position: " + childRight); } if (typeof childBottom === "string" && percent.test(childBottom)) { - childBottom = Math.round(parseFloat(childBottom) * availHeight / 100); + childBottom = Math.round(parseFloat(childBottom) * height / 100); } else if (childBottom != null && typeof childBottom !== "number") { throw new Error("Could not parse percent value for bottom position: " + childBottom); } @@ -118,7 +135,7 @@ childHeight = child.getLayoutProperty("canvas.height"); if (typeof childWidth === "string" && percent.test(childWidth)) { - childWidth = Math.round(parseFloat(childWidth) * availWidth / 100); + childWidth = Math.round(parseFloat(childWidth) * width / 100); } else if (childWidth != null) { throw new Error("Could not parse percent value for width: " + childWidth); } else { @@ -126,7 +143,7 @@ } if (typeof childHeight === "string" && percent.test(childHeight)) { - childHeight = Math.round(parseFloat(childHeight) * availHeight / 100); + childHeight = Math.round(parseFloat(childHeight) * height / 100); } else if (childHeight != null) { throw new Error("Could not parse percent value for width: " + childHeight); } else { @@ -144,14 +161,14 @@ { if (childLeft != null) { - childWidth = availWidth - childLeft - childRight; + childWidth = width - childLeft - childRight; // Re-apply limit childWidth = Math.max(Math.min(childWidth, childHint.maxWidth), childHint.minWidth); } else if (childWidth != null) { - childLeft = availWidth - childWidth - childRight; + childLeft = width - childWidth - childRight; } } @@ -161,14 +178,14 @@ { if (childTop != null) { - childHeight = availHeight - childTop - childBottom; + childHeight = height - childTop - childBottom; // Re-apply limit childHeight = Math.max(Math.min(childHeight, childHint.maxHeight), childHint.minHeight); } else if (childHeight != null) { - childTop = availHeight - childHeight - childBottom; + childTop = height - childHeight - childBottom; } } @@ -195,11 +212,13 @@ * @type member * @param widget {qx.ui2.core.Widget} Widget to modify * @param value {String} The width to apply - * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + * @return {qx.ui2.layout.Canvas} This layout (for chaining support) */ setWidth : function(widget, value) { widget.addLayoutProperty("canvas.width", value); + + // Chaining support return this; }, @@ -209,11 +228,13 @@ * * @type member * @param widget {qx.ui2.core.Widget} Widget to modify - * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + * @return {qx.ui2.layout.Canvas} This layout (for chaining support) */ resetWidth : function(widget) { widget.removeLayoutProperty("canvas.width"); + + // Chaining support return this; }, @@ -223,7 +244,7 @@ * * @type member * @param widget {qx.ui2.core.Widget} Widget to query - * @return {String|null} The currently configured width + * @return {String} The currently configured width */ getWidth : function(widget) { return widget.getLayoutProperty("canvas.width"); @@ -238,11 +259,13 @@ * @type member * @param widget {qx.ui2.core.Widget} Widget to modify * @param value {String} The height to apply - * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + * @return {qx.ui2.layout.Canvas} This layout (for chaining support) */ setHeight : function(widget, value) { widget.addLayoutProperty("canvas.height", value); + + // Chaining support return this; }, @@ -252,11 +275,13 @@ * * @type member * @param widget {qx.ui2.core.Widget} Widget to modify - * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + * @return {qx.ui2.layout.Canvas} This layout (for chaining support) */ resetHeight : function(widget) { widget.removeLayoutProperty("canvas.height"); + + // Chaining support return this; }, @@ -266,7 +291,7 @@ * * @type member * @param widget {qx.ui2.core.Widget} Widget to query - * @return {String|null} The currently configured height + * @return {String} The currently configured height */ getHeight : function(widget) { return widget.getLayoutProperty("canvas.height"); @@ -288,11 +313,13 @@ * @type member * @param widget {qx.ui2.core.Widget} Widget to modify * @param value {String|Integer} The left position to apply - * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + * @return {qx.ui2.layout.Canvas} This layout (for chaining support) */ setLeft : function(widget, value) { widget.addLayoutProperty("canvas.left", value); + + // Chaining support return this; }, @@ -302,11 +329,13 @@ * * @type member * @param widget {qx.ui2.core.Widget} Widget to modify - * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + * @return {qx.ui2.layout.Canvas} This layout (for chaining support) */ resetLeft : function(widget) { widget.removeLayoutProperty("canvas.left"); + + // Chaining support return this; }, @@ -316,7 +345,7 @@ * * @type member * @param widget {qx.ui2.core.Widget} Widget to query - * @return {String|Integer|null} The currently configured left position + * @return {String|Integer} The currently configured left position */ getLeft : function(widget) { return widget.getLayoutProperty("canvas.left"); @@ -339,11 +368,13 @@ * @type member * @param widget {qx.ui2.core.Widget} Widget to modify * @param value {String|Integer} The top position to apply - * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + * @return {qx.ui2.layout.Canvas} This layout (for chaining support) */ setTop : function(widget, value) { widget.addLayoutProperty("canvas.top", value); + + // Chaining support return this; }, @@ -353,11 +384,13 @@ * * @type member * @param widget {qx.ui2.core.Widget} Widget to modify - * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + * @return {qx.ui2.layout.Canvas} This layout (for chaining support) */ resetTop : function(widget) { widget.removeLayoutProperty("canvas.top"); + + // Chaining support return this; }, @@ -367,7 +400,7 @@ * * @type member * @param widget {qx.ui2.core.Widget} Widget to query - * @return {String|Integer|null} The currently configured top position + * @return {String|Integer} The currently configured top position */ getTop : function(widget) { return widget.getLayoutProperty("canvas.top"); @@ -389,11 +422,13 @@ * @type member * @param widget {qx.ui2.core.Widget} Widget to modify * @param value {String|Integer} The right position to apply - * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + * @return {qx.ui2.layout.Canvas} This layout (for chaining support) */ setRight : function(widget, value) { widget.addLayoutProperty("canvas.right", value); + + // Chaining support return this; }, @@ -403,11 +438,13 @@ * * @type member * @param widget {qx.ui2.core.Widget} Widget to modify - * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + * @return {qx.ui2.layout.Canvas} This layout (for chaining support) */ resetRight : function(widget) { widget.removeLayoutProperty("canvas.right"); + + // Chaining support return this; }, @@ -417,7 +454,7 @@ * * @type member * @param widget {qx.ui2.core.Widget} Widget to query - * @return {String|Integer|null} The currently configured right position + * @return {String|Integer} The currently configured right position */ getRight : function(widget) { return widget.getLayoutProperty("canvas.right"); @@ -438,11 +475,13 @@ * @type member * @param widget {qx.ui2.core.Widget} Widget to modify * @param value {String|Integer} The bottom position to apply - * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + * @return {qx.ui2.layout.Canvas} This layout (for chaining support) */ setBottom : function(widget, value) { widget.addLayoutProperty("canvas.bottom", value); + + // Chaining support return this; }, @@ -452,11 +491,13 @@ * * @type member * @param widget {qx.ui2.core.Widget} Widget to modify - * @return {qx.ui2.layout.Abstract} This layout (for chaining support) + * @return {qx.ui2.layout.Canvas} This layout (for chaining support) */ resetBottom : function(widget) { widget.removeLayoutProperty("canvas.bottom"); + + // Chaining support return this; }, @@ -466,7 +507,7 @@ * * @type member * @param widget {qx.ui2.core.Widget} Widget to query - * @return {String|Integer|null} The currently configured bottom position + * @return {String|Integer} The currently configured bottom position */ getBottom : function(widget) { return widget.getLayoutProperty("canvas.bottom"); Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js 2007-10-02 08:31:58 UTC (rev 10424) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js 2007-10-02 09:18:25 UTC (rev 10425) @@ -36,8 +36,8 @@ properties : { - /** - * The way the widgets should be displayed (in conjunction with their + /** + * The way the widgets should be displayed (in conjunction with their * position in the childrens array). */ sort : @@ -82,6 +82,8 @@ { this.base(arguments, widget); this._importProperties(widget, arguments, "dock.edge", "dock.flexX", "dock.flexY"); + + // Chaining support return this; }, @@ -96,7 +98,7 @@ */ // overridden - layout : function(availWidth, availHeight) + layout : function(width, height) { var children = this._getSortedChildren(); var child, childEdge, childHint, childFlex; @@ -137,15 +139,15 @@ } } - console.debug("Used width: " + usedWidth + "/" + availWidth); - console.debug("Used height: " + usedHeight + "/" + availHeight); + console.debug("Used width: " + usedWidth + "/" + width); + console.debug("Used height: " + usedHeight + "/" + height); // Process widths for flex stretching/shrinking - if (usedWidth != availWidth) + if (usedWidth != width) { var flexCandidates = []; - var childGrow = usedWidth < availWidth; + var childGrow = usedWidth < width; for (var i=0, l=children.length; i<l; i++) { @@ -174,7 +176,7 @@ if (flexCandidates.length > 0) { - var flexibleOffsets = qx.ui2.layout.Util.computeFlexOffsets(flexCandidates, availWidth - usedWidth); + var flexibleOffsets = qx.ui2.layout.Util.computeFlexOffsets(flexCandidates, width - usedWidth); for (var key in flexibleOffsets) { @@ -188,10 +190,10 @@ // Process height for flex stretching/shrinking - if (usedHeight != availHeight) + if (usedHeight != height) { var flexCandidates = []; - var childGrow = usedHeight < availHeight; + var childGrow = usedHeight < height; for (var i=0, l=children.length; i<l; i++) { @@ -220,7 +222,7 @@ if (flexCandidates.length > 0) { - var flexibleOffsets = qx.ui2.layout.Util.computeFlexOffsets(flexCandidates, availHeight - usedHeight); + var flexibleOffsets = qx.ui2.layout.Util.computeFlexOffsets(flexCandidates, height - usedHeight); for (var key in flexibleOffsets) { @@ -232,8 +234,8 @@ } } - console.debug("Used width: " + usedWidth + "/" + availWidth); - console.debug("Used height: " + usedHeight + "/" + availHeight); + console.debug("Used width: " + usedWidth + "/" + width); + console.debug("Used height: " + usedHeight + "/" + height); // Apply children layout @@ -257,7 +259,7 @@ childWidth = childWidths[i]; // Full available height - childHeight = availHeight - nextTop - nextBottom; + childHeight = height - nextTop - nextBottom; // Update coordinates, for next children nextLeft += childWidth; @@ -269,7 +271,7 @@ childTop = nextTop; // Full available width - childWidth = availWidth - nextLeft - nextRight; + childWidth = width - nextLeft - nextRight; // Child preferred height childHeight = childHeights[i]; @@ -280,14 +282,14 @@ else if (childEdge === "east") { // Simple top coordinate + calculated left position - childLeft = availWidth - nextRight - childWidths[i]; + childLeft = width - nextRight - childWidths[i]; childTop = nextTop; // Child preferred width childWidth = childWidths[i]; // Full available height - childHeight = availHeight - nextTop - nextBottom; + childHeight = height - nextTop - nextBottom; // Update coordinates, for next children nextRight += childWidth; @@ -296,10 +298,10 @@ { // Simple left coordinate + calculated top position childLeft = nextLeft; - childTop = availHeight - nextBottom - childHeights[i]; + childTop = height - nextBottom - childHeights[i]; // Full available width - childWidth = availWidth - nextLeft - nextRight; + childWidth = width - nextLeft - nextRight; // Child preferred height childHeight = childHeights[i]; @@ -314,8 +316,8 @@ childTop = nextTop; // Calculated width/height - childWidth = availWidth - nextLeft - nextRight; - childHeight = availHeight - nextTop - nextBottom; + childWidth = width - nextLeft - nextRight; + childHeight = height - nextTop - nextBottom; } // Apply layout @@ -437,6 +439,13 @@ --------------------------------------------------------------------------- */ + /** + * Returns the list of children, preprocessed by the value of the + * {@link #sort} property. + * + * @type member + * @return {qx.ui2.core.Widget[]} Presorted array of widgets + */ _getSortedChildren : function() { var children = this._children; Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js 2007-10-02 08:31:58 UTC (rev 10424) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js 2007-10-02 09:18:25 UTC (rev 10425) @@ -104,24 +104,26 @@ members : { /** - * Add a widget to the grid at the given cell coordinates + * Adds a new widget to this layout. * + * @type member * @param widget {qx.ui2.core.Widget} The widget to add * @param row {Integer} The cell's row index * @param column {Integer} The cell's column index * @param rowSpan {Integer?1} How many rows the widget should span * @param colSpan {Integer?1} How many columns the widget should span + * @return {qx.ui2.layout.Grid} This object (for chaining support) */ add : function(widget, row, column, rowSpan, colSpan) { // validate arguments var cell = this.getCellWidget(row, column); - if (cell !== undefined) { + if (cell != null) { throw new Error("There is already a widget in this cell (" + row + ", " + column + ")"); } - if (row === undefined || column === undefined) { + if (row == null || column == null) { throw new Error("The arguments 'row' and 'column' must be defined!"); } @@ -151,6 +153,9 @@ this._importProperties(widget, arguments, "grid.row", "grid.column", "grid.rowSpan", "grid.colSpan" ); + + // Chaining support + return this; }, Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-02 08:31:58 UTC (rev 10424) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-02 09:18:25 UTC (rev 10425) @@ -51,18 +51,21 @@ properties : { + /** Spacing between two children */ spacing : { check : "Integer", init : 5 }, + /** Horizontal alignment of the whole children block */ align : { check : [ "left", "center", "right" ], init : "left" }, + /** Whether the actual children data should be reversed for layout (right-to-left) */ reversed : { check : "Boolean", @@ -100,7 +103,8 @@ { this.base(arguments, widget); this._importProperties(widget, arguments, "hbox.flex", "hbox.align"); - + + // Chaining support return this; }, @@ -116,7 +120,7 @@ */ // overridden - layout : function(availWidth, availHeight) + layout : function(width, height) { // Initialize var children = this.getChildren(); @@ -149,20 +153,20 @@ childWidthPercent = child.getLayoutProperty("hbox.width"); childHints[i] = childHint; - childWidths[i] = childWidthPercent ? Math.floor((availWidth - usedGaps) * parseFloat(childWidthPercent) / 100) : childHint.width; + childWidths[i] = childWidthPercent ? Math.floor((width - usedGaps) * parseFloat(childWidthPercent) / 100) : childHint.width; childHeights[i] = childHint.height; usedWidth += childWidths[i]; } - // this.debug("Initial widths: avail=" + availWidth + ", used=" + usedWidth); + // this.debug("Initial widths: avail=" + width + ", used=" + usedWidth); // Process widths for flex stretching/shrinking - if (usedWidth != availWidth) + if (usedWidth != width) { var flexCandidates = []; - var childGrow = usedWidth < availWidth; + var childGrow = usedWidth < width; for (var i=0, l=children.length; i<l; i++) { @@ -188,7 +192,7 @@ if (flexCandidates.length > 0) { - var flexibleOffsets = qx.ui2.layout.Util.computeFlexOffsets(flexCandidates, availWidth - usedWidth); + var flexibleOffsets = qx.ui2.layout.Util.computeFlexOffsets(flexCandidates, width - usedWidth); for (var key in flexibleOffsets) { @@ -200,14 +204,14 @@ } } - // this.debug("Corrected widths: avail=" + availWidth + ", used=" + usedWidth); + // this.debug("Corrected widths: avail=" + width + ", used=" + usedWidth); // Calculate horizontal alignment offset var childAlignOffset = 0; - if (usedWidth < availWidth && align != "left") + if (usedWidth < width && align != "left") { - childAlignOffset = availWidth - usedWidth; + childAlignOffset = width - usedWidth; if (align === "center") { childAlignOffset = Math.round(childAlignOffset / 2); @@ -225,10 +229,10 @@ { child = children[i]; - if (childLeft < availWidth) + if (childLeft < width) { // Respect vertical alignment - childTop = qx.ui2.layout.Util.computeVerticalAlignOffset(child.getLayoutProperty("hbox.align"), childHeights[i], availHeight); + childTop = qx.ui2.layout.Util.computeVerticalAlignOffset(child.getLayoutProperty("hbox.align"), childHeights[i], height); // Layout child child.layout(childLeft, childTop, childWidths[i], childHeights[i]); @@ -325,7 +329,23 @@ }, - /** Computes the spacing sum plus margin. Supports margin collapsing. */ + + + + + + /* + --------------------------------------------------------------------------- + LAYOUT HELPERS + --------------------------------------------------------------------------- + */ + + /** + * Computes the spacing sum plus margin. Supports margin collapsing. + * + * @type member + * @return {void} + */ _getGaps : function() { var children = this.getChildren(); @@ -360,6 +380,14 @@ }, + /** + * Collapses a right and left margin of two widgets. + * + * @type member + * @param right {Integer} Right margin + * @param left {Integer} Left margin + * @return {Integer} The collapsed margin + */ _collapseMargin : function(right, left) { // Math.max detects 'null' as more ('0') than '-1' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-10-02 13:07:43
|
Revision: 10430 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10430&view=rev Author: wpbasti Date: 2007-10-02 06:07:40 -0700 (Tue, 02 Oct 2007) Log Message: ----------- Added left/top property accessors to Basic Layout. Minor other changes. Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/VBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-10-02 12:48:29 UTC (rev 10429) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-10-02 13:07:40 UTC (rev 10430) @@ -22,6 +22,11 @@ * A basic layout, which supports positioning of child widgets by static * left/top coordinates. * + * Supports: + * + * * Integer dimensions (using widget properties) + * * Integer locations (using layout properties) + * * The default min size of a basic layout is the same as its * preferred size and ensures that all child widgets are visible and have their * preferred size. @@ -40,6 +45,12 @@ members : { + /* + --------------------------------------------------------------------------- + CHILDREN MANAGMENT + --------------------------------------------------------------------------- + */ + /** * Adds a new widget to this layout. * @@ -59,7 +70,28 @@ }, + + + + + /* + --------------------------------------------------------------------------- + LAYOUT INTERFACE + --------------------------------------------------------------------------- + */ + // overridden + invalidate : function() + { + if (this._sizeHint) + { + this.debug("Clear layout cache"); + this._sizeHint = null; + } + }, + + + // overridden layout : function(width, height) { var children = this.getChildren(); @@ -83,17 +115,6 @@ // overridden - invalidate : function() - { - if (this._sizeHint) - { - this.debug("Clear layout cache"); - this._sizeHint = null; - } - }, - - - // overridden getSizeHint : function() { if (this._sizeHint) @@ -140,6 +161,114 @@ // Return hint this.debug("Computed size hint: ", hint); return this._sizeHint = hint; - } + }, + + + + + + /* + --------------------------------------------------------------------------- + LAYOUT PROPERTIES: LOCATION: LEFT + --------------------------------------------------------------------------- + */ + + /** + * Sets the left position on the layout. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @param value {Integer} The left position to apply + * @return {qx.ui2.layout.Basic} This layout (for chaining support) + */ + setLeft : function(widget, value) + { + widget.addLayoutProperty("basic.left", value); + + // Chaining support + return this; + }, + + + /** + * Resets the left position on the layout. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @return {qx.ui2.layout.Basic} This layout (for chaining support) + */ + resetLeft : function(widget) + { + widget.removeLayoutProperty("basic.left"); + + // Chaining support + return this; + }, + + + /** + * Returns the currently configured left position on the layout. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to query + * @return {Integer} The currently configured left position + */ + getLeft : function(widget) { + return widget.getLayoutProperty("basic.left"); + }, + + + + + + /* + --------------------------------------------------------------------------- + LAYOUT PROPERTIES: LOCATION: TOP + --------------------------------------------------------------------------- + */ + + /** + * Sets the top position on the layout. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @param value {Integer} The top position to apply + * @return {qx.ui2.layout.Basic} This layout (for chaining support) + */ + setTop : function(widget, value) + { + widget.addLayoutProperty("basic.top", value); + + // Chaining support + return this; + }, + + + /** + * Resets the top position on the layout. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to modify + * @return {qx.ui2.layout.Basic} This layout (for chaining support) + */ + resetTop : function(widget) + { + widget.removeLayoutProperty("basic.top"); + + // Chaining support + return this; + }, + + + /** + * Returns the currently configured top position on the layout. + * + * @type member + * @param widget {qx.ui2.core.Widget} Widget to query + * @return {Integer} The currently configured top position + */ + getTop : function(widget) { + return widget.getLayoutProperty("basic.top"); + }, } }); \ No newline at end of file Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js 2007-10-02 12:48:29 UTC (rev 10429) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js 2007-10-02 13:07:40 UTC (rev 10430) @@ -98,6 +98,17 @@ */ // overridden + invalidate : function() + { + if (this._sizeHint) + { + this.debug("Clear layout cache"); + this._sizeHint = null; + } + }, + + + // overridden layout : function(width, height) { var children = this._getSortedChildren(); Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-02 12:48:29 UTC (rev 10429) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-02 13:07:40 UTC (rev 10430) @@ -120,6 +120,17 @@ */ // overridden + invalidate : function() + { + if (this._sizeHint) + { + this.debug("Clear layout cache"); + this._sizeHint = null; + } + }, + + + // overridden layout : function(width, height) { // Initialize Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/VBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/VBox.js 2007-10-02 12:48:29 UTC (rev 10429) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/VBox.js 2007-10-02 13:07:40 UTC (rev 10430) @@ -120,6 +120,17 @@ */ // overridden + invalidate : function() + { + if (this._sizeHint) + { + this.debug("Clear layout cache"); + this._sizeHint = null; + } + }, + + + // overridden layout : function(width, height) { // Initialize This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-10-02 13:11:09
|
Revision: 10431 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10431&view=rev Author: wpbasti Date: 2007-10-02 06:11:08 -0700 (Tue, 02 Oct 2007) Log Message: ----------- Added apply rountine to properties Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/VBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-02 13:07:40 UTC (rev 10430) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-02 13:11:08 UTC (rev 10431) @@ -55,21 +55,26 @@ spacing : { check : "Integer", - init : 5 + init : 5, + apply : "_applyLayoutProperty" }, + /** Horizontal alignment of the whole children block */ align : { check : [ "left", "center", "right" ], - init : "left" + init : "left", + apply : "_applyLayoutProperty" }, + /** Whether the actual children data should be reversed for layout (right-to-left) */ reversed : { check : "Boolean", - init : false + init : false, + apply : "_applyLayoutProperty" } }, @@ -420,6 +425,23 @@ /* --------------------------------------------------------------------------- + PROPERTY APPLY ROUTINES + --------------------------------------------------------------------------- + */ + + _applyLayoutProperty : function(value, old) + { + this.invalidate(); + + // Anything else TODO here? + }, + + + + + + /* + --------------------------------------------------------------------------- LAYOUT PROPERTIES: MARGIN --------------------------------------------------------------------------- */ Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/VBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/VBox.js 2007-10-02 13:07:40 UTC (rev 10430) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/VBox.js 2007-10-02 13:11:08 UTC (rev 10431) @@ -55,21 +55,26 @@ spacing : { check : "Integer", - init : 5 + init : 5, + apply : "_applyLayoutProperty" }, + /** Vertical alignment of the whole children block */ align : { check : [ "top", "middle", "bottom" ], - init : "top" + init : "top", + apply : "_applyLayoutProperty" }, + /** Whether the actual children data should be reversed for layout (bottom-to-top) */ reversed : { check : "Boolean", - init : false + init : false, + apply : "_applyLayoutProperty" } }, @@ -420,6 +425,23 @@ /* --------------------------------------------------------------------------- + PROPERTY APPLY ROUTINES + --------------------------------------------------------------------------- + */ + + _applyLayoutProperty : function(value, old) + { + this.invalidate(); + + // Anything else TODO here? + }, + + + + + + /* + --------------------------------------------------------------------------- LAYOUT PROPERTIES: MARGIN --------------------------------------------------------------------------- */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-10-02 13:22:46
|
Revision: 10432 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10432&view=rev Author: wpbasti Date: 2007-10-02 06:22:45 -0700 (Tue, 02 Oct 2007) Log Message: ----------- Added documentation to util class Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-10-02 13:11:08 UTC (rev 10431) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-10-02 13:22:45 UTC (rev 10432) @@ -269,6 +269,6 @@ */ getTop : function(widget) { return widget.getLayoutProperty("basic.top"); - }, + } } }); \ No newline at end of file Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js 2007-10-02 13:11:08 UTC (rev 10431) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Util.js 2007-10-02 13:22:45 UTC (rev 10432) @@ -22,6 +22,24 @@ { statics : { + /** + * Computes the flex offsets needed to reduce the space + * difference as much as possible by respecting the + * potential of the given elements (being in the range of + * their min/max values) + * + * @type static + * @param flexibles {Map[]) Each entry must have these keys: + * <code>id</code>, <code>potential</code> and <code>flex</code>. + * The ID is used in the result map as the key for the user to work + * with later (e.g. upgrade sizes etc. to respect the given offset) + * The potential is an integer value which is the difference of the + * currently interesting direction (e.g. shrinking=width-minWidth, growing= + * maxWidth-width). The flex key holds the flex value of the item. + * @param spaceDifference {Integer} The difference which should be reduced. + * @return {Map} A map which contains the calculated offsets under the key + * which is identical to the ID given in the incoming map. + */ computeFlexOffsets : function(flexibles, spaceDifference) { var child; @@ -111,13 +129,23 @@ }, - computeHorizontalAlignOffset : function(hAlign, widgetWidth, outerWidth) + /** + * Computes the offset which needs to be added to the left position + * to result in the stated horizontal alignment. + * + * @type static + * @param hAlign {String} One of <code>left</code>, <code>center</code> or <code>right</code>. + * @param widgetWidth {Integer} The absolute (outer) width of the widget + * @param parentWidth {Integer} The absolute (inner) width of the parent + * @return {Integer} Computed offset left + */ + computeHorizontalAlignOffset : function(hAlign, widgetWidth, parentWidth) { var value = 0; if (widgetWidth !== outerWidth && hAlign && hAlign !== "left") { - value = outerWidth - widgetWidth; + value = parentWidth - widgetWidth; if (hAlign === "center") { value = Math.round(value / 2); @@ -128,13 +156,23 @@ }, - computeVerticalAlignOffset : function(vAlign, widgetHeight, outerHeight) + /** + * Computes the offset which needs to be added to the top position + * to result in the stated vertical alignment. + * + * @type static + * @param hAlign {String} One of <code>top</code>, <code>middle</code> or <code>bottom</code>. + * @param widgetWidth {Integer} The absolute (outer) height of the widget + * @param parentWidth {Integer} The absolute (inner) height of the parent + * @return {Integer} Computed offset top + */ + computeVerticalAlignOffset : function(vAlign, widgetHeight, parentHeight) { var value = 0; if (widgetHeight !== outerHeight && vAlign && vAlign !== "top") { - value = outerHeight - widgetHeight; + value = parentHeight - widgetHeight; if (vAlign === "middle") { value = Math.round(value / 2); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-10-02 14:12:35
|
Revision: 10435 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10435&view=rev Author: wpbasti Date: 2007-10-02 07:12:32 -0700 (Tue, 02 Oct 2007) Log Message: ----------- Updated documentation Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js 2007-10-02 13:35:20 UTC (rev 10434) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js 2007-10-02 14:12:32 UTC (rev 10435) @@ -19,7 +19,26 @@ ************************************************************************ */ /** - * A dock layout. + * A dock layout. Docks children to one of the sides. + * + * Other names (for comparable layouts in other systems): + * + * * DockPanel (XAML) + * * BorderLayout (Java) + * + * Supports: + * + * * Integer dimensions (using widget properties) + * * Min and max dimensions (using widget properties) + * * Priorized stretching/shrinking (flex) (using layout properties) + * * Auto sizing + * * Different sort options (to priorize x- or y-axis in layout) + * + * Notes: + * + * * For left/right attached childs the height is ignored. + * * For top/bottom attached childs the width is ignored. + * * However: In both cases the min/max dimensions are respected. */ qx.Class.define("qx.ui2.layout.Dock", { Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js 2007-10-02 13:35:20 UTC (rev 10434) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js 2007-10-02 14:12:32 UTC (rev 10435) @@ -19,15 +19,19 @@ ************************************************************************ */ /** - * This layout manager lays out its children in a two dimensional grid. The - * grid supports: - * <ul> - * <li>autosizing</li> - * <li>flex values for rows and columns</li> - * <li>minimal and maximal column and row sizes</li> - * <li>horizontal and vertical alignment</li> - * <li>col/row spans</li> - * </ul> + * This layout manager lays out its children in a two dimensional grid. + * + * Other names (for comparable layouts in other systems): + * + * * Grid (XAML) + * + * Supports: + * + * * flex values for rows and columns + * * minimal and maximal column and row sizes + * * horizontal and vertical alignment + * * col/row spans + * * auto-sizing */ qx.Class.define("qx.ui2.layout.Grid", { Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-02 13:35:20 UTC (rev 10434) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-02 14:12:32 UTC (rev 10435) @@ -22,6 +22,10 @@ * A full featured horizontal box layout. It lays out widgets in a * horizontal row, from left to right. * + * Other names (for comparable layouts in other systems): + * + * * StackPanel (XAML) + * * Supports: * * * Integer dimensions (using widget properties) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-10-02 14:18:04
|
Revision: 10436 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10436&view=rev Author: wpbasti Date: 2007-10-02 07:17:43 -0700 (Tue, 02 Oct 2007) Log Message: ----------- Updated documentation Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-10-02 14:12:32 UTC (rev 10435) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Basic.js 2007-10-02 14:17:43 UTC (rev 10436) @@ -27,9 +27,10 @@ * * Integer dimensions (using widget properties) * * Integer locations (using layout properties) * - * The default min size of a basic layout is the same as its - * preferred size and ensures that all child widgets are visible and have their - * preferred size. + * Notes: + * + * * Does not support flex factors (recommended width/height is used) + * * The default min size of a basic layout is the same as its preferred size and ensures that all child widgets are visible and have their preferred size. */ qx.Class.define("qx.ui2.layout.Basic", { Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js 2007-10-02 14:12:32 UTC (rev 10435) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Canvas.js 2007-10-02 14:17:43 UTC (rev 10436) @@ -34,6 +34,7 @@ * * * Stretching has a higher priority than the preferred dimensions * * Stretching has a lower priority than the min/max dimensions. + * * Does not support flex factors (recommended width/height is used) */ qx.Class.define("qx.ui2.layout.Canvas", { Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js 2007-10-02 14:12:32 UTC (rev 10435) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Dock.js 2007-10-02 14:17:43 UTC (rev 10436) @@ -19,10 +19,11 @@ ************************************************************************ */ /** - * A dock layout. Docks children to one of the sides. + * A feature rich dock layout. Docks children to one of the sides. * * Other names (for comparable layouts in other systems): * + * * BorderLayout (Qt) * * DockPanel (XAML) * * BorderLayout (Java) * @@ -30,7 +31,7 @@ * * * Integer dimensions (using widget properties) * * Min and max dimensions (using widget properties) - * * Priorized stretching/shrinking (flex) (using layout properties) + * * Priorized growing/shrinking (flex) (using layout properties) * * Auto sizing * * Different sort options (to priorize x- or y-axis in layout) * Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js 2007-10-02 14:12:32 UTC (rev 10435) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/Grid.js 2007-10-02 14:17:43 UTC (rev 10436) @@ -23,6 +23,7 @@ * * Other names (for comparable layouts in other systems): * + * * QGridLayout (Qt) * * Grid (XAML) * * Supports: Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-02 14:12:32 UTC (rev 10435) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-02 14:17:43 UTC (rev 10436) @@ -24,6 +24,7 @@ * * Other names (for comparable layouts in other systems): * + * * QHBoxLayout (Qt) * * StackPanel (XAML) * * Supports: @@ -31,7 +32,7 @@ * * Integer dimensions (using widget properties) * * Additional percent width (using layout property) * * Min and max dimensions (using widget properties) - * * Priorized stretching/shrinking (flex) (using layout properties) + * * Priorized growing/shrinking (flex) (using layout properties) * * Left and right margins (even negative ones) with margin collapsing support (using layout properties) * * Auto sizing * * Horizontal align This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wp...@us...> - 2007-10-04 09:48:53
|
Revision: 10450 http://qooxdoo.svn.sourceforge.net/qooxdoo/?rev=10450&view=rev Author: wpbasti Date: 2007-10-04 02:48:52 -0700 (Thu, 04 Oct 2007) Log Message: ----------- Support for orthogonal shrinking in vbox/hbox Modified Paths: -------------- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/VBox.js Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-04 09:47:22 UTC (rev 10449) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/HBox.js 2007-10-04 09:48:52 UTC (rev 10450) @@ -175,7 +175,7 @@ childHints[i] = childHint; childWidths[i] = childWidthPercent ? Math.floor((width - usedGaps) * parseFloat(childWidthPercent) / 100) : childHint.width; - childHeights[i] = childHint.height; + childHeights[i] = Math.max(childHint.minHeight, Math.min(childHint.height, height)); usedWidth += childWidths[i]; } Modified: trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/VBox.js =================================================================== --- trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/VBox.js 2007-10-04 09:47:22 UTC (rev 10449) +++ trunk/qooxdoo/frontend/framework/source/class/qx/ui2/layout/VBox.js 2007-10-04 09:48:52 UTC (rev 10450) @@ -175,7 +175,7 @@ childHints[i] = childHint; childHeights[i] = childHeightPercent ? Math.floor((height - usedGaps) * parseFloat(childHeightPercent) / 100) : childHint.height; - childWidths[i] = childHint.width; + childWidths[i] = Math.max(childHint.minWidth, Math.min(childHint.width, width)); usedHeight += childHeights[i]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |