Repository: flex-asjs Updated Branches: refs/heads/develop dff62672a -> f62f49c75
Added support for viewports. Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/e0b037f4 Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/e0b037f4 Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/e0b037f4 Branch: refs/heads/develop Commit: e0b037f44eb845e96caeae53d007e3eb9220c089 Parents: dff6267 Author: Peter Ent <[email protected]> Authored: Mon Jun 22 10:37:49 2015 -0400 Committer: Peter Ent <[email protected]> Committed: Mon Jun 22 10:37:49 2015 -0400 ---------------------------------------------------------------------- frameworks/projects/Core/as/src/CoreClasses.as | 3 + .../src/org/apache/flex/core/ContainerBase.as | 15 ++- .../org/apache/flex/core/IItemRendererParent.as | 1 + .../as/src/org/apache/flex/core/IViewport.as | 69 ++++++++++++++ .../src/org/apache/flex/core/IViewportModel.as | 96 ++++++++++++++++++++ .../org/apache/flex/core/IViewportScroller.as | 35 +++++++ .../Core/as/src/org/apache/flex/core/UIBase.as | 2 +- 7 files changed, 217 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e0b037f4/frameworks/projects/Core/as/src/CoreClasses.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/as/src/CoreClasses.as b/frameworks/projects/Core/as/src/CoreClasses.as index 2a89966..43abbdc 100644 --- a/frameworks/projects/Core/as/src/CoreClasses.as +++ b/frameworks/projects/Core/as/src/CoreClasses.as @@ -65,6 +65,9 @@ internal class CoreClasses import org.apache.flex.core.IToggleButtonModel; IToggleButtonModel; import org.apache.flex.core.IUIBase; IUIBase; import org.apache.flex.core.IValueToggleButtonModel; IValueToggleButtonModel; + import org.apache.flex.core.IViewport; IViewport; + import org.apache.flex.core.IViewportModel; IViewportModel; + import org.apache.flex.core.IViewportScroller; IViewportScroller; import org.apache.flex.core.SimpleStatesImpl; SimpleStatesImpl; import org.apache.flex.core.DataBindingBase; DataBindingBase; import org.apache.flex.core.UIBase; UIBase; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e0b037f4/frameworks/projects/Core/as/src/org/apache/flex/core/ContainerBase.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/as/src/org/apache/flex/core/ContainerBase.as b/frameworks/projects/Core/as/src/org/apache/flex/core/ContainerBase.as index f3efca6..bd2ade4 100644 --- a/frameworks/projects/Core/as/src/org/apache/flex/core/ContainerBase.as +++ b/frameworks/projects/Core/as/src/org/apache/flex/core/ContainerBase.as @@ -190,9 +190,18 @@ package org.apache.flex.core override public function removeElement(c:Object, dispatchEvent:Boolean = true):void { if (c is IUIBase) - actualParent.removeChild(IUIBase(c).element as DisplayObject); - else - actualParent.removeChild(c as DisplayObject); + { + if (supportsChromeChildren && c is IChrome) { + removeChild(IUIBase(c).element as DisplayObject); + } + else { + actualParent.removeChild(IUIBase(c).element as DisplayObject); + } + } + else { + actualParent.removeChild(c as DisplayObject); + } + if (dispatchEvent) this.dispatchEvent(new Event("childrenRemoved")); } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e0b037f4/frameworks/projects/Core/as/src/org/apache/flex/core/IItemRendererParent.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/as/src/org/apache/flex/core/IItemRendererParent.as b/frameworks/projects/Core/as/src/org/apache/flex/core/IItemRendererParent.as index cb0531d..2b36d0d 100644 --- a/frameworks/projects/Core/as/src/org/apache/flex/core/IItemRendererParent.as +++ b/frameworks/projects/Core/as/src/org/apache/flex/core/IItemRendererParent.as @@ -47,5 +47,6 @@ package org.apache.flex.core */ function getItemRendererForIndex(index:int):IItemRenderer; function removeAllElements():void; + function updateAllItemRenderers():void; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e0b037f4/frameworks/projects/Core/as/src/org/apache/flex/core/IViewport.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/as/src/org/apache/flex/core/IViewport.as b/frameworks/projects/Core/as/src/org/apache/flex/core/IViewport.as new file mode 100644 index 0000000..ed3c1c2 --- /dev/null +++ b/frameworks/projects/Core/as/src/org/apache/flex/core/IViewport.as @@ -0,0 +1,69 @@ +package org.apache.flex.core +{ + /** + * A Viewport is a window onto an area of content. A viewport is given space + * in which to operate by a View bead. Viewports can control their area which + * is specified by the IViewportModel, adding scrollbars or whatever scrolling + * mechanism they want. + */ + public interface IViewport extends IBead + { + /** + * The IViewportModel the instance of the Viewport should use to determine + * its location and the location/size of the content it is managing. The + * model also contains the layout to use and the contentArea to manage. + */ + function get model():IViewportModel; + function set model(value:IViewportModel):void; + + /** + * Runs the layout that has been set in the IViewportModel. The function + * returns true if the layout changed the size of the content area as + * specified by the IViewportModel. + */ + function runLayout():Boolean; + + /** + * Invoke this function to actually change the contentArea (specified in + * the IViewportModel. + */ + function updateContentAreaSize():void; + + /** + * Invoke this function when the host of the viewport has changed size. + */ + function updateSize():void; + + /** + * If a View determines that scrollers are needed, it can inform the + * Viewport using one of these three methods. + */ + function needsScrollers():void; + function needsVerticalScroller():void; + function needsHorizontalScroller():void; + + /** + * Returns the vertical scroller being used, if any. + */ + function get verticalScroller():IViewportScroller; + + /** + * Returns the horizontal scroller being used, if any. + */ + function get horizontalScroller():IViewportScroller; + + /** + * Returns the effective width of the vertical scroller. This may + * be the actual width of the scroller or it might be zero if the + * scroller has no impact on the view. + */ + function scrollerWidth():Number; + + /** + * Returns the effective height of the horizontal scroller. This may + * be the actual height of the scroller or it might be zero if the + * scroller has no impact on the view. + */ + function scrollerHeight():Number; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e0b037f4/frameworks/projects/Core/as/src/org/apache/flex/core/IViewportModel.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/as/src/org/apache/flex/core/IViewportModel.as b/frameworks/projects/Core/as/src/org/apache/flex/core/IViewportModel.as new file mode 100644 index 0000000..4ce51d0 --- /dev/null +++ b/frameworks/projects/Core/as/src/org/apache/flex/core/IViewportModel.as @@ -0,0 +1,96 @@ +package org.apache.flex.core +{ + /** + * A Viewport is a window onto an area of content. A viewport is given space + * in which to operate by a View bead and given this model with the properties + * necessary for its function. + */ + public interface IViewportModel extends IBeadModel + { + // Layout and Content + + /** + * The layout being used to size and shape the content area + */ + function get layout():IBeadLayout; + function set layout(value:IBeadLayout):void; + + /** + * The content area being managed by the viewport + */ + function get contentArea():IUIBase; + function set contentArea(value:IUIBase):void; + + // Viewport Position and Dimensions + + /** + * The x position of the viewport space as allocated by the View. + */ + function get viewportX():Number; + function set viewportX(value:Number):void; + + /** + * The y position of the viewport space as allocated by the View. + */ + function get viewportY():Number; + function set viewportY(value:Number):void; + + /** + * The width of the viewport space as allocated by the View. + */ + function get viewportWidth():Number; + function set viewportWidth(value:Number):void; + + /** + * The height of the viewport space as allocated by the View. + */ + function get viewportHeight():Number; + function set viewportHeight(value:Number):void; + + // Content Area Size and Position + + /** + * The position of the content area within the viewport. This may + * be an offset from the viewportX due to padding. + */ + function get contentX():Number; + function set contentX(value:Number):void; + + /** + * The position of the content area within the viewport. This may + * be an offset from the viewportY due to padding. + */ + function get contentY():Number; + function set contentY(value:Number):void; + + /** + * The width of the content area within the viewport. The width is + * determined by the content itself, mostly due to the use of + * a layout. + */ + function get contentWidth():Number; + function set contentWidth(value:Number):void; + + /** + * The height of the content area within the viewport. The height + * is determined by the content itself, mostly due to the use of + * a layout. + */ + function get contentHeight():Number; + function set contentHeight(value:Number):void; + + // Scrolling Parameters + + /** + * The top position of the content area that is visible in the viewport. + */ + function get verticalScrollPosition():Number; + function set verticalScrollPosition(value:Number):void; + + /** + * The left position of the content area that is visible in the viewport. + */ + function get horizontalScrollPosition():Number; + function set horizontalScrollPosition(value:Number):void; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e0b037f4/frameworks/projects/Core/as/src/org/apache/flex/core/IViewportScroller.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/as/src/org/apache/flex/core/IViewportScroller.as b/frameworks/projects/Core/as/src/org/apache/flex/core/IViewportScroller.as new file mode 100644 index 0000000..401b908 --- /dev/null +++ b/frameworks/projects/Core/as/src/org/apache/flex/core/IViewportScroller.as @@ -0,0 +1,35 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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.core +{ + /** + * The IViewportScroller interface describes an object that can be used to scroll + * or navigate around a system that uses an IViewport. This may be a traditional + * scroll bar, or it could be something completely different. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public interface IViewportScroller + { + + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e0b037f4/frameworks/projects/Core/as/src/org/apache/flex/core/UIBase.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/as/src/org/apache/flex/core/UIBase.as b/frameworks/projects/Core/as/src/org/apache/flex/core/UIBase.as index eb5d272..e8720f7 100644 --- a/frameworks/projects/Core/as/src/org/apache/flex/core/UIBase.as +++ b/frameworks/projects/Core/as/src/org/apache/flex/core/UIBase.as @@ -463,7 +463,7 @@ package org.apache.flex.core if (_width != newWidth) { _width = newWidth; - if (_height == newHeight) + if (_width == newWidth) if (!noEvent) dispatchEvent(new Event("widthChanged")); }
