You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ca...@apache.org on 2016/11/10 09:23:49 UTC

[42/53] git commit: [flex-asjs] [refs/heads/feature/mdl] - Added ClippingViewport

Added ClippingViewport


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/043b092d
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/043b092d
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/043b092d

Branch: refs/heads/feature/mdl
Commit: 043b092d146e7fece8b9024b8705790e316256a2
Parents: f4caf2c
Author: yishayw <yi...@hotmail.com>
Authored: Wed Nov 9 09:38:10 2016 +0200
Committer: yishayw <yi...@hotmail.com>
Committed: Wed Nov 9 09:38:10 2016 +0200

----------------------------------------------------------------------
 .../html/supportClasses/ClippingViewport.as     | 137 +++++++++++++++++++
 .../HTML/src/main/resources/basic-manifest.xml  |   1 +
 2 files changed, 138 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/043b092d/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
new file mode 100644
index 0000000..00b88c1
--- /dev/null
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ClippingViewport.as
@@ -0,0 +1,137 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.IBeadLayout;
+	import org.apache.flex.core.IViewport;
+	import org.apache.flex.core.UIBase;
+	import org.apache.flex.geom.Size;
+
+	COMPILE::JS
+	{
+		import org.apache.flex.core.IStrand;
+	}
+    COMPILE::SWF
+    {
+        import flash.geom.Rectangle;
+    }
+
+	/**
+	 * The ClippingViewport extends the Viewport class and makes 
+	 * sure that items extending outside the Container are hidden.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public class ClippingViewport extends Viewport implements IBead, IViewport
+	{
+		/**
+		 * Constructor
+	     *
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.0
+		 */
+		public function ClippingViewport()
+		{
+		}
+
+        /**
+         * @flexjsignorecoercion HTMLElement 
+         */
+        COMPILE::JS
+        override public function set strand(value:IStrand):void
+        {
+            super.strand = value;
+            (contentView.element as HTMLElement).style.overflow = 'hidden';
+        }
+
+        private var viewportWidth:Number;
+        private var viewportHeight:Number;
+
+        /**
+         * @copy org.apache.flex.core.IViewport
+         */
+        override public function layoutViewportBeforeContentLayout(width:Number, height:Number):void
+        {
+           super.layoutViewportBeforeContentLayout(width, height);
+           viewportWidth = width;
+           viewportHeight = height;
+        }
+
+        /**
+         * @copy org.apache.flex.core.IViewport
+         */
+		override public function layoutViewportAfterContentLayout():Size
+		{
+            COMPILE::SWF
+            {
+	             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 needsLayout:Boolean = false;
+                    // resize content area
+                    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);
+
+                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/043b092d/frameworks/projects/HTML/src/main/resources/basic-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/resources/basic-manifest.xml b/frameworks/projects/HTML/src/main/resources/basic-manifest.xml
index cf67089..7919e14 100644
--- a/frameworks/projects/HTML/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/HTML/src/main/resources/basic-manifest.xml
@@ -92,6 +92,7 @@
     <component id="ImageAndTextButtonView" class="org.apache.flex.html.beads.ImageAndTextButtonView" />
      -->
     <component id="ScrollingViewport" class="org.apache.flex.html.supportClasses.ScrollingViewport" />
+    <component id="ClippingViewport" class="org.apache.flex.html.supportClasses.ClippingViewport" />
     
     <component id="ArraySelectionModel" class="org.apache.flex.html.beads.models.ArraySelectionModel" />
     <component id="ArrayListSelectionModel" class="org.apache.flex.html.beads.models.ArrayListSelectionModel" />