http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/TileLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/TileLayout.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/TileLayout.as index 77e752c..ec1a761 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/TileLayout.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/TileLayout.as @@ -20,6 +20,7 @@ package org.apache.flex.html.beads.layouts { import org.apache.flex.core.IBeadLayout; import org.apache.flex.core.ILayoutHost; + import org.apache.flex.core.ILayoutObject; import org.apache.flex.core.ILayoutParent; import org.apache.flex.core.IParentIUIBase; import org.apache.flex.core.IStrand; @@ -210,14 +211,14 @@ package org.apache.flex.html.beads.layouts var host:UIBase = _strand as UIBase; var viewBead:ILayoutHost = (host as ILayoutParent).getLayoutHost(); - var contentView:IParentIUIBase = viewBead.contentView; + var contentView:IParentIUIBase = viewBead.contentView as IParentIUIBase; children = contentView.internalChildren(); n = children.length; if (n === 0) return false; - viewBead.contentView.width = host.width; - viewBead.contentView.element.style["display"] = "flex"; - viewBead.contentView.element.style["flex-flow"] = "row wrap"; + contentView.width = host.width; + contentView.element.style["display"] = "flex"; + contentView.element.style["flex-flow"] = "row wrap"; var realN:int = n; for (i = 0; i < n; i++)
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalColumnLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalColumnLayout.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalColumnLayout.as index 0d02425..24c5445 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalColumnLayout.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalColumnLayout.as @@ -21,6 +21,7 @@ package org.apache.flex.html.beads.layouts import org.apache.flex.core.IBeadLayout; import org.apache.flex.core.IContainer; import org.apache.flex.core.ILayoutHost; + import org.apache.flex.core.ILayoutObject; import org.apache.flex.core.ILayoutParent; import org.apache.flex.core.IMeasurementBead; import org.apache.flex.core.IParent; @@ -100,7 +101,7 @@ package org.apache.flex.html.beads.layouts { var host:UIBase = UIBase(_strand); var layoutParent:ILayoutHost = (host as ILayoutParent).getLayoutHost(); - var contentView:IParent = layoutParent.contentView; + var contentView:ILayoutObject = layoutParent.contentView; var padding:Rectangle = CSSContainerUtils.getPaddingMetrics(host); var sw:Number = host.width; var sh:Number = host.height; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalFlexLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalFlexLayout.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalFlexLayout.as index 2365991..f80ddf7 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalFlexLayout.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalFlexLayout.as @@ -22,13 +22,14 @@ package org.apache.flex.html.beads.layouts import org.apache.flex.core.ILayoutChild; import org.apache.flex.core.ILayoutHost; + import org.apache.flex.core.ILayoutObject; import org.apache.flex.core.ILayoutParent; import org.apache.flex.core.IStrand; + import org.apache.flex.core.UIBase; + import org.apache.flex.core.IParentIUIBase; COMPILE::SWF { - import org.apache.flex.core.UIBase; import org.apache.flex.core.IUIBase; - import org.apache.flex.core.IParentIUIBase; import org.apache.flex.core.ValuesManager; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -39,6 +40,14 @@ package org.apache.flex.html.beads.layouts public class VerticalFlexLayout extends VerticalLayout { + /** + * Constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 + */ public function VerticalFlexLayout() { super(); @@ -55,26 +64,70 @@ package org.apache.flex.html.beads.layouts host = value as ILayoutChild; } + private var _grow:Number = -1; + + /** + * Sets the amount items grow in proportion to other items. + * The default is 0 which prevents the items from expanding to + * fit the space. Use a negative value to unset this property. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 + */ + public function get grow():Number { + return _grow; + } + public function set grow(value:Number):void { + _grow = value; + } + + private var _shrink:Number = -1; + + /** + * Sets the amount an item may shrink in proportion to other items. + * The default is 1 which allows items to shrink to fit into the space. + * Set this to 0 if you want to allow scrolling of the space. Use a negative + * value to unset this property. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 + */ + public function get shrink():Number { + return _shrink; + } + public function set shrink(value:Number):void { + _shrink = value; + } + /** * * @flexjsignorecoercion org.apache.flex.core.ILayoutHost + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 */ override public function layout():Boolean { COMPILE::SWF { //return super.layout(); - var layoutParent:ILayoutHost = (host as ILayoutParent).getLayoutHost(); - var contentView:IParentIUIBase = layoutParent.contentView; + var layoutHost:ILayoutHost = (host as ILayoutParent).getLayoutHost(); + var contentView:ILayoutObject = layoutHost.contentView; var n:Number = contentView.numElements; if (n == 0) return false; - - trace("VerticalFlexLayout: contentView size: "+contentView.width+" x "+contentView.height+"; explicit: "+UIBase(contentView).explicitWidth+" x "+UIBase(contentView).explicitHeight); - + var spacing:String = "none"; var maxWidth:Number = 0; var maxHeight:Number = 0; + var growCount:Number = 0; + var remainingHeight:Number = contentView.height; var childData:Array = []; var ilc:ILayoutChild; @@ -91,12 +144,20 @@ package org.apache.flex.html.beads.layouts { var child:IUIBase = contentView.getElementAt(i) as IUIBase; if (child == null || !child.visible) { - childData.push({width:0, height:0, mt:0, ml:0, mr:0, mb:0, canAdjust:false}); + childData.push({width:0, height:0, mt:0, ml:0, mr:0, mb:0, grow:0, canAdjust:false}); continue; } ilc = child as ILayoutChild; + var flexGrow:Object = ValuesManager.valuesImpl.getValue(child, "flex-grow"); + var growValue:Number = -1; + if (flexGrow != null) { + growValue = Number(flexGrow); + if (!isNaN(growValue) && growValue > 0) growCount++; + else growValue = 0; + } + var useWidth:Number = -1; if (ilc) { if (!isNaN(ilc.explicitWidth)) useWidth = ilc.explicitWidth; @@ -109,9 +170,7 @@ package org.apache.flex.html.beads.layouts if (ilc) { if (!isNaN(ilc.explicitHeight)) useHeight = ilc.explicitHeight; else if (!isNaN(ilc.percentHeight)) useHeight = contentView.height * (ilc.percentHeight/100.0); - else { - canAdjust = true; - } + else useHeight = ilc.height; } margin = ValuesManager.valuesImpl.getValue(child, "margin"); @@ -131,7 +190,7 @@ package org.apache.flex.html.beads.layouts if (maxWidth < useWidth) maxWidth = useWidth; if (maxHeight < useHeight) maxHeight = useHeight; - childData.push({width:useWidth, height:useHeight, mt:mt, ml:ml, mr:mr, mb:mb, canAdjust:canAdjust}); + childData.push({width:useWidth, height:useHeight, mt:mt, ml:ml, mr:mr, mb:mb, grow:growValue, canAdjust:canAdjust}); } var xpos:Number = 0; @@ -145,26 +204,34 @@ package org.apache.flex.html.beads.layouts if (data.width == 0 || data.height == 0) continue; useWidth = (data.width < 0 ? maxWidth : data.width); - useHeight = (data.height < 0 ? maxHeight : data.height); + if (data.height > 0) { + if (data.grow > 0 && growCount > 0) { + useHeight = remainingHeight / growCount; + } else { + useHeight = data.height; + } + } else { + useHeight = child.height; + } ilc = child as ILayoutChild; if (ilc) { ilc.setX(xpos + data.ml); ilc.setY(ypos + data.mt); ilc.setWidth(useWidth - data.ml - data.mr); - if (data.height > 0) { - ilc.setHeight(useHeight - data.mt - data.mb); + if (useHeight > 0) { + ilc.setHeight(useHeight); } } else { child.x = xpos + data.ml; child.y = ypos + data.mt; child.width = useWidth - data.ml - data.mr; - if (data.height > 0) { - child.height = useHeight - data.mt - data.mb; + if (useHeight > 0) { + child.height = useHeight; } } - ypos += child.height + data.mt + data.mb; + ypos += useHeight + data.mt + data.mb; trace("VerticalFlexLayout: setting child "+i+" to "+child.width+" x "+child.height+" at "+child.x+", "+child.y); } @@ -178,11 +245,19 @@ package org.apache.flex.html.beads.layouts COMPILE::JS { var viewBead:ILayoutHost = (host as ILayoutParent).getLayoutHost(); + var contentView:ILayoutObject = viewBead.contentView; + + contentView.element.style["display"] = "flex"; + contentView.element.style["flex-flow"] = "column"; - // set the display on the contentView - viewBead.contentView.width = host.width; - viewBead.contentView.element.style["display"] = "flex"; - viewBead.contentView.element.style["flex-flow"] = "column"; + var n:int = contentView.numElements; + if (n == 0) return false; + + for(var i:int=0; i < n; i++) { + var child:UIBase = contentView.getElementAt(i) as UIBase; + if (grow >= 0) child.element.style["flex-grow"] = String(grow); + if (shrink >= 0) child.element.style["flex-shrink"] = String(shrink); + } return true; } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalLayout.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalLayout.as index b3f0638..b4f5443 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalLayout.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalLayout.as @@ -22,6 +22,7 @@ package org.apache.flex.html.beads.layouts import org.apache.flex.core.IBeadModel; import org.apache.flex.core.ILayoutChild; import org.apache.flex.core.ILayoutHost; + import org.apache.flex.core.ILayoutObject; import org.apache.flex.core.ILayoutParent; import org.apache.flex.core.IParentIUIBase; import org.apache.flex.core.IStrand; @@ -93,176 +94,92 @@ package org.apache.flex.html.beads.layouts { COMPILE::SWF { - var layoutParent:ILayoutHost = (host as ILayoutParent).getLayoutHost(); - var contentView:IParentIUIBase = layoutParent ? layoutParent.contentView : IParentIUIBase(host); - var padding:Rectangle = CSSContainerUtils.getPaddingMetrics(host); + var layoutHost:ILayoutHost = (host as ILayoutParent).getLayoutHost(); + var contentView:ILayoutObject = layoutHost.contentView; - var n:int = contentView.numElements; - var hasHorizontalFlex:Boolean; + var n:Number = contentView.numElements; + if (n == 0) return false; + + var maxWidth:Number = 0; + var maxHeight:Number = 0; var hostSizedToContent:Boolean = host.isWidthSizedToContent(); - var flexibleHorizontalMargins:Array = []; + var hostWidth:Number = hostSizedToContent ? 0 : contentView.width; + var hostHeight:Number = contentView.height; + var ilc:ILayoutChild; + var data:Object; + var canAdjust:Boolean = false; var marginLeft:Object; var marginRight:Object; var marginTop:Object; var marginBottom:Object; var margin:Object; - var maxWidth:Number = 0; - var cssValue:*; - // asking for contentView.width can result in infinite loop if host isn't sized already - var w:Number = hostSizedToContent ? 0 : contentView.width; - var h:Number = contentView.height; - for (var i:int = 0; i < n; i++) + var paddingMetrics:Rectangle = CSSContainerUtils.getPaddingMetrics(host); + var borderMetrics:Rectangle = CSSContainerUtils.getBorderMetrics(host); + + var xpos:Number = borderMetrics.left + paddingMetrics.left; + var ypos:Number = borderMetrics.top + paddingMetrics.left; + + // First pass determines the data about the child. + for(var i:int=0; i < n; i++) { var child:IUIBase = contentView.getElementAt(i) as IUIBase; if (child == null || !child.visible) continue; - ilc = child as ILayoutChild; - var left:Number = NaN; - cssValue = ValuesManager.valuesImpl.getValue(child, "left"); - if (cssValue !== undefined) - left = CSSUtils.toNumber(cssValue); - var right:Number = NaN; - cssValue = ValuesManager.valuesImpl.getValue(child, "right"); - if (cssValue !== undefined) - right = CSSUtils.toNumber(cssValue); + var top:Number = ValuesManager.valuesImpl.getValue(child, "top"); + var bottom:Number = ValuesManager.valuesImpl.getValue(child, "bottom"); margin = ValuesManager.valuesImpl.getValue(child, "margin"); marginLeft = ValuesManager.valuesImpl.getValue(child, "margin-left"); marginTop = ValuesManager.valuesImpl.getValue(child, "margin-top"); marginRight = ValuesManager.valuesImpl.getValue(child, "margin-right"); marginBottom = ValuesManager.valuesImpl.getValue(child, "margin-bottom"); - var ml:Number = CSSUtils.getLeftValue(marginLeft, margin, w); - var mr:Number = CSSUtils.getRightValue(marginRight, margin, w); - var mt:Number = CSSUtils.getTopValue(marginTop, margin, h); - var mb:Number = CSSUtils.getBottomValue(marginBottom, margin, h); - var lastmb:Number; - var yy:Number; - if (i == 0) - { - if (ilc) - ilc.setY(mt + padding.top); - else - child.y = mt + padding.top; - } - else - { - if (ilc) - ilc.setY(yy + Math.max(mt, lastmb)); - else - child.y = yy + Math.max(mt, lastmb); - } - if (ilc) - { - if (!isNaN(ilc.percentHeight)) - ilc.setHeight(contentView.height * ilc.percentHeight / 100, !isNaN(ilc.percentWidth)); - } - lastmb = mb; - var marginObject:Object = {}; - flexibleHorizontalMargins[i] = marginObject; + var ml:Number = CSSUtils.getLeftValue(marginLeft, margin, hostWidth); + var mr:Number = CSSUtils.getRightValue(marginRight, margin, hostWidth); + var mt:Number = CSSUtils.getTopValue(marginTop, margin, hostHeight); + var mb:Number = CSSUtils.getBottomValue(marginBottom, margin, hostHeight); if (marginLeft == "auto") - { ml = 0; - marginObject.marginLeft = marginLeft; - hasHorizontalFlex = true; - } - else - { - ml = Number(marginLeft); - if (isNaN(ml)) - { - ml = 0; - marginObject.marginLeft = marginLeft; - } - else - marginObject.marginLeft = ml; - } if (marginRight == "auto") - { mr = 0; - marginObject.marginRight = marginRight; - hasHorizontalFlex = true; - } - else - { - mr = Number(marginRight); - if (isNaN(mr)) - { - mr = 0; - marginObject.marginRight = marginRight; - } - else - marginObject.marginRight = mr; - } - if (!hostSizedToContent) - { - // if host is sized by parent, - // we can position and size children horizontally now - setPositionAndWidth(child, left, ml, padding.left, - right, mr, padding.right, w); - } - else - { - if (!isNaN(left)) - { - ml = left; - marginObject.left = ml; - } - if (!isNaN(right)) - { - mr = right; - marginObject.right = mr; + + ilc = child as ILayoutChild; + + ypos += mt; + + var childXpos:Number = xpos + ml; // default x position + + if (!hostSizedToContent) { + var childWidth:Number = child.width; + if (ilc != null && !isNaN(ilc.percentWidth)) { + childWidth = (hostWidth-borderMetrics.left-borderMetrics.right-paddingMetrics.left-paddingMetrics.right) * ilc.percentWidth/100.0; + ilc.setWidth(childWidth - mr - ml); } - maxWidth = Math.max(maxWidth, ml + child.width + mr); + // the following code center-aligns the child, but since HTML does not + // do this normally, this code is commented. (Use VerticalFlexLayout for + // horizontally centered elements in a vertical column). + // childXpos = hostWidth/2 - (childWidth + ml + mr)/2; } - yy = child.y + child.height; - } - if (hostSizedToContent) - { - for (i = 0; i < n; i++) - { - child = contentView.getElementAt(i) as IUIBase; - if (child == null || !child.visible) continue; - var obj:Object = flexibleHorizontalMargins[i]; - setPositionAndWidth(child, obj.left, obj.marginLeft, padding.left, - obj.right, obj.marginRight, padding.right, maxWidth); - } - } - if (hasHorizontalFlex) - { - for (i = 0; i < n; i++) - { - child = contentView.getElementAt(i) as IUIBase; - if (child == null || !child.visible) continue; - ilc = child as ILayoutChild; - obj = flexibleHorizontalMargins[i]; - if (hasHorizontalFlex) - { - if (ilc) - { - if (obj.marginLeft == "auto" && obj.marginRight == "auto") - ilc.setX(maxWidth - child.width / 2); - else if (obj.marginLeft == "auto") - ilc.setX(maxWidth - child.width - obj.marginRight - padding.right); - } - else - { - if (obj.marginLeft == "auto" && obj.marginRight == "auto") - child.x = maxWidth - child.width / 2; - else if (obj.marginLeft == "auto") - child.x = maxWidth - child.width - obj.marginRight - padding.right; - } + + if (ilc) { + ilc.setX(childXpos); + ilc.setY(ypos); + + if (!isNaN(ilc.percentHeight)) { + var newHeight:Number = (contentView.height-borderMetrics.top-borderMetrics.bottom-paddingMetrics.top-paddingMetrics.bottom) * ilc.percentHeight / 100; + ilc.setHeight(newHeight - mt - mb); } + + } else { + child.x = childXpos; + child.y = ypos; } + + ypos += child.height + mb; } - // Only return true if the contentView needs to be larger; that new - // size is stored in the model. - var sizeChanged:Boolean = true; - host.dispatchEvent( new Event("layoutComplete") ); - return sizeChanged; - + return true; } COMPILE::JS { @@ -271,11 +188,8 @@ package org.apache.flex.html.beads.layouts var n:int; var viewBead:ILayoutHost = (host as ILayoutParent).getLayoutHost(); - var contentView:IParentIUIBase = viewBead.contentView; + var contentView:IParentIUIBase = viewBead.contentView as IParentIUIBase; children = contentView.internalChildren(); - var scv:Object = getComputedStyle(host.positioner); - var hasWidth:Boolean = !host.isWidthSizedToContent(); - var maxWidth:Number = 0; n = children.length; for (i = 0; i < n; i++) { @@ -289,76 +203,14 @@ package org.apache.flex.html.beads.layouts { // block elements don't measure width correctly so set to inline for a second child.style.display = 'inline-block'; - maxWidth = Math.max(maxWidth, child.offsetLeft + child.offsetWidth); child.style.display = 'block'; } child.flexjs_wrapper.dispatchEvent('sizeChanged'); } - if (!hasWidth && n > 0 && !isNaN(maxWidth)) { - var pl:String = scv['padding-left']; - var pr:String = scv['padding-right']; - var npl:int = parseInt(pl.substring(0, pl.length - 2), 10); - var npr:int = parseInt(pr.substring(0, pr.length - 2), 10); - maxWidth += npl + npr; - contentView.width = maxWidth; - } host.dispatchEvent( new Event("layoutComplete") ); return true; } } - COMPILE::SWF - private function setPositionAndWidth(child:IUIBase, left:Number, ml:Number, pl:Number, - right:Number, mr:Number, pr:Number, w:Number):void - { - var widthSet:Boolean = false; - - var ww:Number = w; - var ilc:ILayoutChild = child as ILayoutChild; - if (!isNaN(left)) - { - if (ilc) - ilc.setX(left + ml); - else - child.x = left + ml; - ww -= left + ml; - } - else - { - if (ilc) - ilc.setX(ml + pl); - else - child.x = ml + pl; - ww -= ml + pl; - } - if (!isNaN(right)) - { - if (!isNaN(left)) - { - if (ilc) - ilc.setWidth(ww - right - mr, true); - else - { - child.width = ww - right - mr; - widthSet = true; - } - } - else - { - if (ilc) - ilc.setX(w - right - mr - child.width); - else - child.x = w - right - mr - child.width; - } - } - if (ilc) - { - if (!isNaN(ilc.percentWidth)) - ilc.setWidth(w * ilc.percentWidth / 100, true); - } - if (!widthSet) - child.dispatchEvent(new Event("sizeChanged")); - } - } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/models/ButtonBarModel.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/models/ButtonBarModel.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/models/ButtonBarModel.as new file mode 100644 index 0000000..9eb6a24 --- /dev/null +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/models/ButtonBarModel.as @@ -0,0 +1,102 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.flex.html.beads.models +{ + import org.apache.flex.core.IRollOverModel; + import org.apache.flex.core.ISelectionModel; + import org.apache.flex.core.IStrand; + import org.apache.flex.events.Event; + import org.apache.flex.events.EventDispatcher; + + /** + * The ArraySelectionModel class is a selection model for + * a dataProvider that is an array. It assumes that items + * can be fetched from the dataProvider + * dataProvider[index]. Other selection models + * would support other kinds of data providers. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public class ButtonBarModel extends ArraySelectionModel + { + public static const PIXEL_WIDTHS:Number = 0; + public static const PROPORTIONAL_WIDTHS:Number = 1; + public static const PERCENT_WIDTHS:Number = 2; + + /** + * Constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function ButtonBarModel() + { + } + + private var _buttonWidths:Array = null; + + /** + * The widths of each button. This property may be null (the default) in which + * case the buttons are equally sized. Or this array may contain values, one per + * button, which either indicate each button's width in pixels (set .widthType + * to ButtonBarModel.PIXEL_WIDTHS) or proportional to other buttons (set + * .widthType to ButtonBarModel.PROPORTIONAL_WIDTHS). The array can also contain + * specific percentages (set .widthType to ButtonBarModel.PERCENT_WIDTHS). If + * this array is set, the number of entries must match the number of buttons. + * However, any entry may be null to indicate the button's default size is to be used. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function get buttonWidths():Array + { + return _buttonWidths; + } + public function set buttonWidths(value:Array):void + { + _buttonWidths = value; + dispatchEvent(new Event("buttonWidthsChanged")); + } + + private var _widthType:Number = ButtonBarModel.PIXEL_WIDTHS; + + /** + * Indicates how to interpret the values of the buttonWidths array. + * + * PIXEL_WIDTHS: all of the values are exact pixel widths (unless a value is null). + * PROPORTIONAL_WIDTHS: all of the values are proportions. Use 1 to indicate normal, 2 to be 2x, etc. Use 0 (or null) to mean fixed default size. + */ + public function get widthType():Number + { + return _widthType; + } + public function set widthType(value:Number):void + { + _widthType = value; + dispatchEvent(new Event("widthTypeChanged")); + } + } +} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as index 1d320e3..0ff21d2 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as @@ -107,6 +107,7 @@ package org.apache.flex.html.supportClasses var added:Boolean = false; if (textButton == null) { textButton = new TextButton(); + textButton.percentWidth = 100; // listen for clicks on the button and translate them into // an itemClicked event. http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/CheckBoxIcon.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/CheckBoxIcon.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/CheckBoxIcon.as index 92c3f53..c9eeefb 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/CheckBoxIcon.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/CheckBoxIcon.as @@ -82,7 +82,7 @@ package org.apache.flex.html.supportClasses element = input as WrappedHTMLElement; positioner = element; - positioner.style.position = 'relative'; + //positioner.style.position = 'relative'; (element as WrappedHTMLElement).flexjs_wrapper = this; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ClippingViewport.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ClippingViewport.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ClippingViewport.as index 00b88c1..55cf95d 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ClippingViewport.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ClippingViewport.as @@ -82,14 +82,14 @@ package org.apache.flex.html.supportClasses /** * @copy org.apache.flex.core.IViewport */ - override public function layoutViewportAfterContentLayout():Size + override public function layoutViewportAfterContentLayout(contentSize:Size):void { COMPILE::SWF { - var contentSize:Size; + //var contentSize:Size; do { - contentSize = super.layoutViewportAfterContentLayout(); + /*contentSize = */super.layoutViewportAfterContentLayout(contentSize); if (isNaN(viewportHeight)) viewportHeight = contentSize.height; if (isNaN(viewportWidth)) @@ -123,13 +123,8 @@ package org.apache.flex.html.supportClasses var rect:Rectangle = new Rectangle(0, 0, viewportWidth,viewportHeight); contentArea.$sprite.scrollRect = rect; - return contentSize; } - COMPILE::JS - { - return new Size(contentView.width, contentView.height); - } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ContainerContentArea.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ContainerContentArea.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ContainerContentArea.as index 502211e..947a5f1 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ContainerContentArea.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ContainerContentArea.as @@ -18,26 +18,22 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.flex.html.supportClasses { - import org.apache.flex.core.IContentView; import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; - - COMPILE::SWF { - import org.apache.flex.core.IChild; - } + import org.apache.flex.core.IChild; + import org.apache.flex.core.ILayoutObject; /** * The ContainerContentArea class implements the contentView for - * a Container. Container's don't always parent their children directly as - * that makes it harder to handle scrolling. + * a Container on the SWF platform. * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public class ContainerContentArea extends UIBase implements IContentView + public class ContainerContentArea extends UIBase implements ILayoutObject { /** * Constructor. @@ -67,24 +63,24 @@ package org.apache.flex.html.supportClasses * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public function removeAllElements():void - { - COMPILE::SWF - { - var n:Number = numElements; - for (var i:Number = n-1; i >= 0; i--) { - var child:IChild = getElementAt(i); - removeElement(child,false); - } - $sprite.removeChildren(0); - } - COMPILE::JS - { - while (element.hasChildNodes()) - { - element.removeChild(element.lastChild); - } - } - } +// public function removeAllElements():void +// { +// COMPILE::SWF +// { +// var n:Number = numElements; +// for (var i:Number = n-1; i >= 0; i--) { +// var child:IChild = getElementAt(i); +// removeElement(child,false); +// } +// $sprite.removeChildren(0); +// } +// COMPILE::JS +// { +// while (element.hasChildNodes()) +// { +// element.removeChild(element.lastChild); +// } +// } +// } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataContentBead.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataContentBead.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataContentBead.as new file mode 100644 index 0000000..72db824 --- /dev/null +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataContentBead.as @@ -0,0 +1,124 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.flex.html.supportClasses +{ + import org.apache.flex.core.IBead; + + import org.apache.flex.core.IChild; + import org.apache.flex.core.IContentView; + import org.apache.flex.core.IItemRenderer; + import org.apache.flex.core.IItemRendererParent; + import org.apache.flex.core.IRollOverModel; + import org.apache.flex.core.ISelectionModel; + import org.apache.flex.core.IStrand; + import org.apache.flex.core.UIBase; + import org.apache.flex.events.IEventDispatcher; + import org.apache.flex.events.Event; + import org.apache.flex.events.ItemAddedEvent; + import org.apache.flex.events.ItemClickedEvent; + import org.apache.flex.events.ItemRemovedEvent; + + /** + * The DataGroup class is the IItemRendererParent used internally + * by org.apache.flex.html.List class. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public class DataContent implements IBead + { + /** + * Constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function DataContent() + { + super(); + } + + /** + * @private + */ + override public function addElement(c:IChild, dispatchEvent:Boolean = true):void + { + super.addElement(c, dispatchEvent); + + var newEvent:ItemAddedEvent = new ItemAddedEvent("itemAdded"); + newEvent.item = c; + + var strand:IEventDispatcher = parent as IEventDispatcher; + strand.dispatchEvent(newEvent); + } + + /** + * @private + */ + override public function removeElement(c:IChild, dispatchEvent:Boolean = true):void + { + super.removeElement(c, dispatchEvent); + + var newEvent:ItemRemovedEvent = new ItemRemovedEvent("itemRemoved"); + newEvent.item = c; + + var strand:IEventDispatcher = parent as IEventDispatcher; + strand.dispatchEvent(newEvent); + } + + /** + * @copy org.apache.flex.core.IItemRendererParent#getItemRendererForIndex() + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function getItemRendererForIndex(index:int):IItemRenderer + { + if (index < 0 || index >= numElements) return null; + return getElementAt(index) as IItemRenderer; + } + + /** + * Refreshes the itemRenderers. Useful after a size change by the data group. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function updateAllItemRenderers():void + { + var n:Number = numElements; + for (var i:Number = 0; i < n; i++) + { + var renderer:DataItemRenderer = getItemRendererForIndex(i) as DataItemRenderer; + if (renderer) { + renderer.setWidth(this.width,true); + renderer.adjustSize(); + } + } + } + } +} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGridButtonBarButtonItemRenderer.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGridButtonBarButtonItemRenderer.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGridButtonBarButtonItemRenderer.as index f6663a5..645a393 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGridButtonBarButtonItemRenderer.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGridButtonBarButtonItemRenderer.as @@ -66,6 +66,8 @@ package org.apache.flex.html.supportClasses var added:Boolean = false; if (textButton == null) { textButton = new DataGridButtonBarTextButton(); + textButton.percentWidth = 100; + textButton.percentHeight = 100; // listen for clicks on the button and translate them into // an itemClicked event. @@ -77,5 +79,14 @@ package org.apache.flex.html.supportClasses if (added) addElement(textButton); } + + /** + * @private + */ + COMPILE::JS + override public function adjustSize():void + { + // not neeed for JS platform + } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as index f7ebf01..4b2aad1 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as @@ -41,7 +41,7 @@ package org.apache.flex.html.supportClasses * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public class DataGroup extends ContainerContentArea implements IItemRendererParent, IContentView + public class DataGroup extends ContainerContentArea implements IContentView { /** * Constructor. @@ -118,5 +118,13 @@ package org.apache.flex.html.supportClasses } } } + + /** + * Removes all of the elements + */ + public function removeAllElements():void + { + // TBD + } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataItemRenderer.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataItemRenderer.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataItemRenderer.as index 7de2389..c526977 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataItemRenderer.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/DataItemRenderer.as @@ -163,7 +163,7 @@ package org.apache.flex.html.supportClasses { element = document.createElement('div') as WrappedHTMLElement; positioner = element; - positioner.style.position = 'relative'; + //positioner.style.position = 'relative'; element.flexjs_wrapper = this; className = 'DataItemRenderer'; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/GroupContentProxy.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/GroupContentProxy.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/GroupContentProxy.as new file mode 100644 index 0000000..6212ba1 --- /dev/null +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/GroupContentProxy.as @@ -0,0 +1,91 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.flex.html.supportClasses +{ + import org.apache.flex.core.IContentProxy; + import org.apache.flex.core.UIBase; + import org.apache.flex.core.IChild; + + COMPILE::JS { + import org.apache.flex.core.WrappedHTMLElement; + } + + /** + * The ContainerContentArea class implements the contentView for + * a Container on the SWF platform. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public class GroupContentProxy implements IContentProxy + { + /** + * Constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function GroupContentProxy(host:Object) + { + super(); + _host = host; + } + + private var _host:Object; + + public function set host(value:Object):void + { + _host = value; + } + public function get host():Object + { + return _host; + } + + public function get numElements():Number + { + return (host as UIBase).numElements; + } + + public function getElementAt(index):IChild + { + return (host as UIBase).getElementAt(index); + } + + public function get width():Number + { + return (host as UIBase).width; + } + + public function get height():Number + { + return (host as UIBase).height; + } + + COMPILE::JS + public function get element():WrappedHTMLElement + { + return (host as UIBase).element; + } + } +} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/MXMLItemRenderer.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/MXMLItemRenderer.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/MXMLItemRenderer.as index cacac1e..f70403e 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/MXMLItemRenderer.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/MXMLItemRenderer.as @@ -20,6 +20,7 @@ package org.apache.flex.html.supportClasses { import org.apache.flex.core.ILayoutHost; import org.apache.flex.core.ILayoutParent; + import org.apache.flex.core.ILayoutObject; import org.apache.flex.core.IStrand; import org.apache.flex.core.IBead; import org.apache.flex.core.IBeadLayout; @@ -35,7 +36,7 @@ package org.apache.flex.html.supportClasses * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public class MXMLItemRenderer extends DataItemRenderer implements ILayoutParent, ILayoutHost, IStrand + public class MXMLItemRenderer extends DataItemRenderer implements ILayoutParent, ILayoutHost, IStrand, ILayoutObject { /** * constructor. @@ -65,7 +66,7 @@ package org.apache.flex.html.supportClasses return this; } - public function get contentView():IParentIUIBase + public function get contentView():ILayoutObject { return this; } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/PanelLayoutProxy.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/PanelLayoutProxy.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/PanelLayoutProxy.as new file mode 100644 index 0000000..5c40443 --- /dev/null +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/PanelLayoutProxy.as @@ -0,0 +1,132 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.flex.html.supportClasses +{ + import org.apache.flex.core.UIBase; + import org.apache.flex.core.ILayoutObject; + import org.apache.flex.core.IChild; + import org.apache.flex.events.IEventDispatcher; + + import org.apache.flex.html.Panel; + + COMPILE::JS { + import org.apache.flex.core.WrappedHTMLElement; + } + + /** + * The PanelLayoutProxy class is used by Panel in order for layouts to operate + * on the Panel itself. If Panel were being used, its numElements, getElementAt, etc. + * functions would actually redirect to its Container content. In order for a layout + * to work on the Panel directly (its TitleBar, Container, and ControlBar children), + * this proxy is used which will invoke the Panel's $numElements, $getElementAt, etc + * functions. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public class PanelLayoutProxy implements ILayoutObject + { + /** + * Constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function PanelLayoutProxy(host:Object) + { + super(); + _host = host; + } + + private var _host:Object; + + public function get host():Object + { + return _host; + } + + /** + * The width of the bounding box. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function get width():Number { + return (host as Panel).width; + } + + /** + * The height of the bounding box. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function get height():Number { + return (host as Panel).height; + } + + /** + * The number of elements in the parent. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function get numElements():int + { + return (host as Panel).$numElements; + } + + /** + * Get a component from the parent. + * + * @param c The index of the subcomponent. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function getElementAt(index:int):IChild + { + return (host as Panel).$getElementAt(index); + } + + COMPILE::JS + public function get somethingelse():WrappedHTMLElement + { + return (host as Panel).element; + } + + COMPILE::JS + public function get element():WrappedHTMLElement + { + return (host as Panel).element; + } + } +} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/RadioButtonIcon.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/RadioButtonIcon.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/RadioButtonIcon.as index 119400f..3c29ae5 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/RadioButtonIcon.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/RadioButtonIcon.as @@ -101,7 +101,7 @@ package org.apache.flex.html.supportClasses element = input as WrappedHTMLElement; positioner = element; - positioner.style.position = 'relative'; + //positioner.style.position = 'relative'; (element as WrappedHTMLElement).flexjs_wrapper = this; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as index 74dd040..4d207a2 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as @@ -18,12 +18,9 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.flex.html.supportClasses { - COMPILE::SWF - { - import flash.geom.Rectangle; - } import org.apache.flex.core.IBead; import org.apache.flex.core.IBeadLayout; + import org.apache.flex.core.IContainer; import org.apache.flex.core.IContentViewHost; import org.apache.flex.core.IParentIUIBase; import org.apache.flex.core.IStrand; @@ -33,12 +30,15 @@ package org.apache.flex.html.supportClasses COMPILE::SWF { import org.apache.flex.core.IViewportScroller; + import org.apache.flex.utils.CSSContainerUtils; + import flash.geom.Rectangle; } import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; import org.apache.flex.geom.Size; import org.apache.flex.html.beads.ScrollBarView; import org.apache.flex.html.beads.models.ScrollBarModel; + import org.apache.flex.geom.Rectangle; /** * The ScrollingViewport extends the Viewport class by adding horizontal and @@ -51,6 +51,66 @@ package org.apache.flex.html.supportClasses * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ + COMPILE::JS + public class ScrollingViewport extends Viewport implements IBead, IViewport + { + /** + * Constructor + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function ScrollingViewport() + { + } + + public function get verticalScrollPosition():Number + { + return this.contentView.positioner.scrollTop; + } + public function set verticalScrollPosition(value:Number):void + { + this.contentView.positioner.scrollTop = value; + } + + public function get horizontalScrollPosition():Number + { + return this.contentView.positioner.scrollLeft; + } + public function set horizontalScrollPosition(value:Number):void + { + this.contentView.positioner.scrollLeft = value; + } + + /** + * @flexjsignorecoercion HTMLElement + */ + override public function set strand(value:IStrand):void + { + super.strand = value; + (value as UIBase).element.style.overflow = "auto"; + } + + /** + * @copy org.apache.flex.core.IViewport + */ + override public function layoutViewportBeforeContentLayout(width:Number, height:Number):void + { + // does nothing for the JS platform + } + + /** + * @copy org.apache.flex.core.IViewport + */ + override public function layoutViewportAfterContentLayout(contentSize:Size):void + { + // does nothing for the JS platform + } + } + + COMPILE::SWF public class ScrollingViewport extends Viewport implements IBead, IViewport { /** @@ -65,86 +125,42 @@ package org.apache.flex.html.supportClasses { } - COMPILE::SWF private var _verticalScroller:ScrollBar; - COMPILE::SWF public function get verticalScroller():IViewportScroller { return _verticalScroller; } - COMPILE::SWF private var _horizontalScroller:ScrollBar - COMPILE::SWF public function get horizontalScroller():IViewportScroller { return _horizontalScroller; } - COMPILE::SWF private var _verticalScrollPosition:Number = 0; public function get verticalScrollPosition():Number { - COMPILE::SWF - { - return _verticalScrollPosition; - } - COMPILE::JS - { - return this.contentView.positioner.scrollTop; - } + return _verticalScrollPosition; } public function set verticalScrollPosition(value:Number):void { - COMPILE::SWF - { - _verticalScrollPosition = value; - handleVerticalScrollChange(); - } - COMPILE::JS - { - this.contentView.positioner.scrollTop = value; - } + _verticalScrollPosition = value; + handleVerticalScrollChange(); } - COMPILE::SWF private var _horizontalScrollPosition:Number = 0; public function get horizontalScrollPosition():Number { - COMPILE::SWF - { - return _horizontalScrollPosition; - } - COMPILE::JS - { - return this.contentView.positioner.scrollLeft; - } + return _horizontalScrollPosition; } public function set horizontalScrollPosition(value:Number):void { - COMPILE::SWF - { - _horizontalScrollPosition = value; - handleHorizontalScrollChange(); - } - COMPILE::JS - { - this.contentView.positioner.scrollLeft = value; - } - } - - /** - * @flexjsignorecoercion HTMLElement - */ - COMPILE::JS - override public function set strand(value:IStrand):void - { - super.strand = value; - (contentView.element as HTMLElement).style.overflow = 'auto'; + _horizontalScrollPosition = value; + handleHorizontalScrollChange(); } private var viewportWidth:Number; @@ -155,127 +171,85 @@ package org.apache.flex.html.supportClasses */ override public function layoutViewportBeforeContentLayout(width:Number, height:Number):void { - super.layoutViewportBeforeContentLayout(width, height); - viewportWidth = width; - viewportHeight = height; + super.layoutViewportBeforeContentLayout(width, height); + viewportWidth = width; + viewportHeight = height; } /** * @copy org.apache.flex.core.IViewport */ - override public function layoutViewportAfterContentLayout():Size + override public function layoutViewportAfterContentLayout(contentSize:Size):void { - COMPILE::SWF - { - var hadV:Boolean = _verticalScroller != null && _verticalScroller.visible; - var hadH:Boolean = _horizontalScroller != null && _horizontalScroller.visible; - var contentSize:Size; - do - { - contentSize = super.layoutViewportAfterContentLayout(); - if (isNaN(viewportHeight)) - viewportHeight = contentSize.height; - if (isNaN(viewportWidth)) - viewportWidth = contentSize.width; - - var host:UIBase = UIBase(_strand); - var visibleWidth:Number; - var visibleHeight:Number; - var needV:Boolean = contentSize.height > viewportHeight; - var needH:Boolean = contentSize.width > viewportWidth; - - if (needV) - { - if (_verticalScroller == null) { - _verticalScroller = createVerticalScrollBar(); - (host as IContentViewHost).strandChildren.addElement(_verticalScroller); - } - } - if (needH) - { - if (_horizontalScroller == null) { - _horizontalScroller = createHorizontalScrollBar(); - (host as IContentViewHost).strandChildren.addElement(_horizontalScroller); - } - } - - if (needV) - { - _verticalScroller.visible = true; - _verticalScroller.x = contentArea.x + viewportWidth - _verticalScroller.width; - _verticalScroller.y = contentArea.y; - _verticalScroller.setHeight(viewportHeight - (needH ? _horizontalScroller.height : 0), true); - visibleWidth = _verticalScroller.x; - } - else if (_verticalScroller) - _verticalScroller.visible = false; - - if (needH) - { - _horizontalScroller.visible = true; - _horizontalScroller.x = contentArea.x; - _horizontalScroller.y = contentArea.y + viewportHeight - _horizontalScroller.height; - _horizontalScroller.setWidth(viewportWidth - (needV ? _verticalScroller.width : 0), true); - visibleHeight = _horizontalScroller.y; - } - - var needsLayout:Boolean = false; - // resize content area if needed to get out from under scrollbars - if (!isNaN(visibleWidth) || !isNaN(visibleHeight)) - { - if (!isNaN(visibleWidth)) - needsLayout = visibleWidth != contentView.width; - if (!isNaN(visibleHeight)) - needsLayout = visibleHeight != contentView.height; - if (!isNaN(visibleWidth) && !isNaN(visibleHeight)) - contentArea.setWidthAndHeight(visibleWidth, visibleHeight, false); - else if (!isNaN(visibleWidth)) - contentArea.setWidth(visibleWidth, false); - else if (!isNaN(visibleHeight)) - contentArea.setHeight(visibleHeight, false); - } - if (needsLayout) - { - var layout:IBeadLayout = host.getBeadByType(IBeadLayout) as IBeadLayout; - layout.layout(); - } - } while (needsLayout && (needV != hadV || needH == hadH)); - if (_verticalScroller) - { - ScrollBarModel(_verticalScroller.model).maximum = contentSize.height; - ScrollBarModel(_verticalScroller.model).pageSize = contentArea.height; - ScrollBarModel(_verticalScroller.model).pageStepSize = contentArea.height; - if (contentSize.height > contentArea.height && - (contentSize.height - contentArea.height) < _verticalScrollPosition) - _verticalScrollPosition = contentSize.height - contentArea.height; - } - if (_horizontalScroller) - { - ScrollBarModel(_horizontalScroller.model).maximum = contentSize.width; - ScrollBarModel(_horizontalScroller.model).pageSize = contentArea.width; - ScrollBarModel(_horizontalScroller.model).pageStepSize = contentArea.width; - if (contentSize.width > contentArea.width && - (contentSize.width - contentArea.width) < _horizontalScrollPosition) - _horizontalScrollPosition = contentSize.width - contentArea.width; - } - - var rect:Rectangle = new Rectangle(_horizontalScrollPosition, _verticalScrollPosition, - (_verticalScroller != null && _verticalScroller.visible) ? - _verticalScroller.x : viewportWidth, - (_horizontalScroller != null && _horizontalScroller.visible) ? - _horizontalScroller.y : viewportHeight); - contentArea.$sprite.scrollRect = rect; - return contentSize; - - } - COMPILE::JS - { - return new Size(contentView.width, contentView.height); - } - + var hadV:Boolean = _verticalScroller != null && _verticalScroller.visible; + var hadH:Boolean = _horizontalScroller != null && _horizontalScroller.visible; + + var hostWidth:Number = UIBase(_strand).width; + var hostHeight:Number = UIBase(_strand).height; + + var needV:Boolean = contentSize.height > viewportHeight; + var needH:Boolean = contentSize.width > viewportWidth; + + if (needV) + { + if (_verticalScroller == null) { + _verticalScroller = createVerticalScrollBar(); + (_strand as IContainer).$addElement(_verticalScroller); + } + } + if (needH) + { + if (_horizontalScroller == null) { + _horizontalScroller = createHorizontalScrollBar(); + (_strand as IContainer).$addElement(_horizontalScroller); + } + } + + if (needV) + { + _verticalScroller.visible = true; + _verticalScroller.x = hostWidth - _verticalScroller.width; + _verticalScroller.y = 0; + _verticalScroller.setHeight(hostHeight - (needH ? _horizontalScroller.height : 0), true); + + ScrollBarModel(_verticalScroller.model).maximum = contentSize.height;// + paddingMetrics.top + paddingMetrics.bottom; + ScrollBarModel(_verticalScroller.model).pageSize = contentArea.height; + ScrollBarModel(_verticalScroller.model).pageStepSize = contentArea.height; + + if (contentSize.height > contentArea.height && + (contentSize.height - contentArea.height) < _verticalScrollPosition) + _verticalScrollPosition = contentSize.height - contentArea.height; + } + else if (_verticalScroller) { + _verticalScroller.visible = false; + } + + if (needH) + { + _horizontalScroller.visible = true; + _horizontalScroller.x = 0; + _horizontalScroller.y = hostHeight - _horizontalScroller.height; + _horizontalScroller.setWidth(hostWidth - (needV ? _verticalScroller.width : 0), true); + + ScrollBarModel(_horizontalScroller.model).maximum = contentSize.width;// + paddingMetrics.left + paddingMetrics.right; + ScrollBarModel(_horizontalScroller.model).pageSize = contentArea.width; + ScrollBarModel(_horizontalScroller.model).pageStepSize = contentArea.width; + + if (contentSize.width > contentArea.width && + (contentSize.width - contentArea.width) < _horizontalScrollPosition) + _horizontalScrollPosition = contentSize.width - contentArea.width; + } + else if (_horizontalScroller) { + _horizontalScroller.visible = false; + } + + var rect:flash.geom.Rectangle = new flash.geom.Rectangle(_horizontalScrollPosition, _verticalScrollPosition, + (_verticalScroller != null && _verticalScroller.visible) ? _verticalScroller.x : hostWidth, + (_horizontalScroller != null && _horizontalScroller.visible) ? _horizontalScroller.y : hostHeight); + + contentArea.$sprite.scrollRect = rect; } - COMPILE::SWF private function createVerticalScrollBar():ScrollBar { var vsbm:ScrollBarModel = new ScrollBarModel(); @@ -293,7 +267,6 @@ package org.apache.flex.html.supportClasses return vsb; } - COMPILE::SWF private function createHorizontalScrollBar():ScrollBar { var hsbm:ScrollBarModel = new ScrollBarModel(); @@ -311,31 +284,28 @@ package org.apache.flex.html.supportClasses return hsb; } - COMPILE::SWF private function handleVerticalScroll(event:Event):void { var host:UIBase = UIBase(_strand); var vpos:Number = ScrollBarModel(_verticalScroller.model).value; - var rect:Rectangle = contentArea.$sprite.scrollRect; + var rect:flash.geom.Rectangle = contentArea.$sprite.scrollRect; rect.y = vpos; contentArea.$sprite.scrollRect = rect; _verticalScrollPosition = vpos; } - COMPILE::SWF private function handleHorizontalScroll(event:Event):void { var host:UIBase = UIBase(_strand); var hpos:Number = ScrollBarModel(_horizontalScroller.model).value; - var rect:Rectangle = contentArea.$sprite.scrollRect; + var rect:flash.geom.Rectangle = contentArea.$sprite.scrollRect; rect.x = hpos; contentArea.$sprite.scrollRect = rect; _horizontalScrollPosition = hpos; } - COMPILE::SWF private function handleVerticalScrollChange():void { if (_verticalScroller) { @@ -343,7 +313,6 @@ package org.apache.flex.html.supportClasses } } - COMPILE::SWF private function handleHorizontalScrollChange():void { if (_horizontalScroller) { http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as index aa00f50..cea7673 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as @@ -22,17 +22,17 @@ package org.apache.flex.html.supportClasses { import flash.text.TextFieldAutoSize; import flash.text.TextFieldType; - - import org.apache.flex.core.CSSTextField; + + import org.apache.flex.core.CSSTextField; } COMPILE::JS { import org.apache.flex.core.WrappedHTMLElement; - import org.apache.flex.html.beads.controllers.ItemRendererMouseController; + import org.apache.flex.html.beads.controllers.ItemRendererMouseController; } import org.apache.flex.events.Event; import org.apache.flex.html.beads.ITextItemRenderer; - + /** * The StringItemRenderer class displays data in string form using the data's toString() * function. @@ -55,20 +55,20 @@ package org.apache.flex.html.supportClasses public function StringItemRenderer() { super(); - + COMPILE::SWF { textField = new CSSTextField(); textField.type = TextFieldType.DYNAMIC; textField.autoSize = TextFieldAutoSize.LEFT; textField.selectable = false; - textField.parentDrawsBackground = true; + textField.parentDrawsBackground = true; } } - + COMPILE::SWF public var textField:CSSTextField; - + /** * @private */ @@ -76,12 +76,12 @@ package org.apache.flex.html.supportClasses override public function addedToParent():void { super.addedToParent(); - + $sprite.addChild(textField); adjustSize(); } - + /** * @private */ @@ -89,14 +89,14 @@ package org.apache.flex.html.supportClasses override public function adjustSize():void { var cy:Number = height/2; - + textField.x = 0; textField.y = cy - textField.height/2; textField.width = width; - + updateRenderer(); } - + /** * The text currently displayed by the itemRenderer instance. * @@ -109,29 +109,29 @@ package org.apache.flex.html.supportClasses { COMPILE::SWF { - return textField.text; + return textField.text; } COMPILE::JS { return this.element.innerHTML; } } - + public function set text(value:String):void { COMPILE::SWF { - textField.text = value; + textField.text = value; } COMPILE::JS { this.element.innerHTML = value; } } - + /** * Sets the data value and uses the String version of the data for display. - * + * * @param Object data The object being displayed by the itemRenderer instance. * * @langversion 3.0 @@ -146,33 +146,33 @@ package org.apache.flex.html.supportClasses if (labelField) text = String(value[labelField]); else if (dataField) text = String(value[dataField]); else text = String(value); - + this.text = text; } - + COMPILE::JS private var controller:ItemRendererMouseController; - + COMPILE::JS private var backgroundView:WrappedHTMLElement; - + /** * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement */ COMPILE::JS override protected function createElement():WrappedHTMLElement - { + { element = document.createElement('span') as WrappedHTMLElement; positioner = element; - positioner.style.position = 'relative'; - + //positioner.style.position = 'relative'; + element.flexjs_wrapper = this; className = 'StringItemRenderer'; - + // itemRenderers should provide something for the background to handle // the selection and highlight backgroundView = element; - + return element; } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/Viewport.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/Viewport.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/Viewport.as index 285282a..b155e44 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/Viewport.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/Viewport.as @@ -32,10 +32,15 @@ package org.apache.flex.html.supportClasses import org.apache.flex.geom.Size; import org.apache.flex.html.beads.models.ScrollBarModel; import org.apache.flex.utils.CSSContainerUtils; + COMPILE::SWF + { + import flash.geom.Rectangle; + } /** * A Viewport is the area of a Container set aside for displaying - * content and any scrolling controls. + * content. If the content exceeds the visible area of the viewport + * it will be clipped or hidden. * * @langversion 3.0 * @playerversion Flash 10.2 @@ -76,6 +81,7 @@ package org.apache.flex.html.supportClasses /** * @flexjsignorecoercion Class */ + COMPILE::SWF public function set strand(value:IStrand):void { _strand = value; @@ -86,6 +92,17 @@ package org.apache.flex.html.supportClasses contentArea = new c() as UIBase; } } + + /** + * @flexjsignorecoercion Class + */ + COMPILE::JS + public function set strand(value:IStrand):void + { + _strand = value; + contentArea = value as UIBase; + contentArea.element.style.overflow = "hidden"; + } /** * @copy org.apache.flex.core.IViewport#setPosition() @@ -97,8 +114,10 @@ package org.apache.flex.html.supportClasses */ public function setPosition(x:Number, y:Number):void { - contentArea.x = x; - contentArea.y = y; + COMPILE::SWF { + contentArea.x = x; + contentArea.y = y; + } } /** @@ -111,10 +130,12 @@ package org.apache.flex.html.supportClasses */ public function layoutViewportBeforeContentLayout(width:Number, height:Number):void { + COMPILE::SWF { if (!isNaN(width)) contentArea.width = width; if (!isNaN(height)) contentArea.height = height; + } } /** @@ -125,26 +146,17 @@ package org.apache.flex.html.supportClasses * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public function layoutViewportAfterContentLayout():Size + public function layoutViewportAfterContentLayout(contentSize:Size):void { - // pass through all of the children and determine the maxWidth and maxHeight - // note: this is not done on the JavaScript side because the browser handles - // this automatically. - var maxWidth:Number = 0; - var maxHeight:Number = 0; - var num:Number = contentArea.numElements; - - for (var i:int=0; i < num; i++) { - var child:IUIBase = contentArea.getElementAt(i) as IUIBase; - if (child == null || !child.visible) continue; - var childXMax:Number = child.x + child.width; - var childYMax:Number = child.y + child.height; - maxWidth = Math.max(maxWidth, childXMax); - maxHeight = Math.max(maxHeight, childYMax); - } - - var padding:Rectangle = CSSContainerUtils.getPaddingMetrics(this._strand); - return new Size(maxWidth + padding.right, maxHeight + padding.bottom); + COMPILE::SWF { + var hostWidth:Number = UIBase(_strand).width; + var hostHeight:Number = UIBase(_strand).height; + + var rect:flash.geom.Rectangle = new flash.geom.Rectangle(0, 0, hostWidth, hostHeight); + contentArea.$sprite.scrollRect = rect; + + return; + } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/DOMWrapper.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/DOMWrapper.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/DOMWrapper.as index d341cba..1b5d09a 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/DOMWrapper.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/DOMWrapper.as @@ -33,7 +33,7 @@ package org.apache.flex.svg { super(); } - + /** * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement */ @@ -46,8 +46,8 @@ package org.apache.flex.svg element.style.top = "0px"; //element.offsetParent = null; positioner = element; - positioner.style.position = 'relative'; - + //positioner.style.position = 'relative'; + return element; } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicContainer.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicContainer.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicContainer.as index ca68053..6b05fea 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicContainer.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicContainer.as @@ -35,33 +35,33 @@ package org.apache.flex.svg } } - + COMPILE::JS public class GraphicContainer extends UIBase implements ITransformHost, IContainer { private var graphicGroup:ContainerBase; - + public function GraphicContainer() { super(); } - + /** * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement */ override protected function createElement():org.apache.flex.core.WrappedHTMLElement { element = document.createElementNS('http://www.w3.org/2000/svg', 'svg') as org.apache.flex.core.WrappedHTMLElement; - + positioner = element; - + // absolute positioned children need a non-null // position value in the parent. It might // get set to 'absolute' if the container is // also absolutely positioned - positioner.style.position = 'relative'; + //positioner.style.position = 'relative'; element.flexjs_wrapper = this; - + graphicGroup = new GraphicGroup(); super.addElement(graphicGroup); return element; @@ -70,9 +70,9 @@ package org.apache.flex.svg COMPILE::JS override protected function setClassName(value:String):void { - element.setAttribute('class', value); + element.setAttribute('class', value); } - + override public function get transformElement():org.apache.flex.core.WrappedHTMLElement { return graphicGroup.element; @@ -80,7 +80,7 @@ package org.apache.flex.svg /** * @copy org.apache.flex.core.IParent#getElementAt() - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -89,11 +89,11 @@ package org.apache.flex.svg override public function getElementAt(index:int):IChild { return graphicGroup.getElementAt(index); - } - + } + /** * @copy org.apache.flex.core.IParent#addElement() - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -105,10 +105,10 @@ package org.apache.flex.svg if (dispatchEvent) this.dispatchEvent(new Event("childrenAdded")); } - + /** * @copy org.apache.flex.core.IParent#addElementAt() - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -120,10 +120,10 @@ package org.apache.flex.svg if (dispatchEvent) this.dispatchEvent(new Event("childrenAdded")); } - + /** * @copy org.apache.flex.core.IParent#removeElement() - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -135,10 +135,10 @@ package org.apache.flex.svg if (dispatchEvent) this.dispatchEvent(new Event("childrenRemoved")); } - + /** * @copy org.apache.flex.core.IContainer#childrenAdded() - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -148,10 +148,10 @@ package org.apache.flex.svg { dispatchEvent(new Event("childrenAdded")); } - + /** * @copy org.apache.flex.core.IParent#getElementIndex() - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -161,11 +161,11 @@ package org.apache.flex.svg { return graphicGroup.getElementIndex(c); } - - + + /** * The number of elements in the parent. - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -206,21 +206,21 @@ class GraphicGroup extends ContainerBase override protected function createElement():org.apache.flex.core.WrappedHTMLElement { element = document.createElementNS('http://www.w3.org/2000/svg', 'g') as org.apache.flex.core.WrappedHTMLElement; - + positioner = element; - + // absolute positioned children need a non-null // position value in the parent. It might // get set to 'absolute' if the container is // also absolutely positioned - positioner.style.position = 'relative'; + //positioner.style.position = 'relative'; element.flexjs_wrapper = this; - + /*addEventListener('childrenAdded', runLayoutHandler); addEventListener('elementRemoved', runLayoutHandler);*/ - + return element; } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicShape.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicShape.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicShape.as index 19fb305..da8d0a9 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicShape.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicShape.as @@ -35,7 +35,7 @@ package org.apache.flex.svg public class GraphicShape extends UIBase implements IGraphicShape { - + private var _fill:IFill; private var _stroke:IStroke; @@ -83,7 +83,7 @@ package org.apache.flex.svg { super(); } - + /** * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement */ @@ -94,8 +94,8 @@ package org.apache.flex.svg element.flexjs_wrapper = this; //element.offsetParent = null; positioner = element; - positioner.style.position = 'relative'; - + //positioner.style.position = 'relative'; + return element; } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/679eccb5/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Image.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Image.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Image.as index cd0729f..dd96ceb 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Image.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Image.as @@ -18,7 +18,7 @@ package org.apache.flex.svg COMPILE::JS { - import org.apache.flex.core.WrappedHTMLElement; + import org.apache.flex.core.WrappedHTMLElement; } public class Image extends ImageBase { @@ -34,7 +34,7 @@ package org.apache.flex.svg { super(); } - + /** * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement */ @@ -47,14 +47,14 @@ package org.apache.flex.svg element.setAttribute('y', 0); //element.offsetParent = null; positioner = element; - positioner.style.position = 'relative'; + //positioner.style.position = 'relative'; addImageElement(); return element; } - + COMPILE::JS protected var _image:WrappedHTMLElement; - + /** * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement */ @@ -69,19 +69,19 @@ package org.apache.flex.svg element.appendChild(_image); } } - + COMPILE::JS override public function get imageElement():Element { return _image; } - + COMPILE::JS override public function get transformElement():WrappedHTMLElement { return _image; } - + COMPILE::JS override public function applyImageData(binaryDataAsString:String):void { @@ -100,7 +100,7 @@ package org.apache.flex.svg super.setHeight(value, noEvent); positioner.setAttribute("height", value); } - + COMPILE::JS override public function setX(value:Number):void { @@ -113,16 +113,16 @@ package org.apache.flex.svg { super.setY(value); positioner.setAttribute("y", value); - + } - + COMPILE::JS override public function set x(value:Number):void { super.x = value; positioner.setAttribute("x", value); } - + COMPILE::JS override public function set y(value:Number):void {
