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

[7/7] git commit: [flex-asjs] [refs/heads/spark] - enough changes that something showed up in JS

enough changes that something showed up in JS


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

Branch: refs/heads/spark
Commit: 24dc2663cba4aa60c1f559fcf3f770c84783cb1a
Parents: a936d77
Author: Alex Harui <ah...@apache.org>
Authored: Wed Sep 21 15:23:00 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Sep 21 15:23:00 2016 -0700

----------------------------------------------------------------------
 .../main/flex/org/apache/flex/core/UIBase.as    |  7 +++-
 .../main/flex/org/apache/flex/utils/Language.as |  2 +
 .../MX/src/main/flex/flex/display/Sprite.as     | 14 +++++--
 .../MX/src/main/flex/flex/events/Event.as       |  1 +
 .../MX/src/main/flex/flex/text/TextField.as     |  4 +-
 .../MX/src/main/flex/mx/controls/Label.as       |  3 ++
 .../MX/src/main/flex/mx/core/Application.as     |  5 ++-
 .../MX/src/main/flex/mx/core/Container.as       |  2 +-
 .../MX/src/main/flex/mx/core/UIComponent.as     | 11 ++++++
 .../src/main/flex/mx/managers/SystemManager.as  | 41 ++++++++++++++++++--
 .../src/main/flex/mx/styles/StyleProtoChain.as  |  3 ++
 .../MX/src/test/flex/src/TestCompile.mxml       |  1 +
 12 files changed, 81 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24dc2663/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as
index dcbac3a..8ff5bc2 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as
@@ -1201,6 +1201,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
 		 *  @flexjsignorecoercion org.apache.flex.core.IUIBase
+		 *  @flexjsignorecoercion String
          */
         public function getElementIndex(c:IVisualElement):int
         {
@@ -1213,13 +1214,17 @@ package org.apache.flex.core
             }
             COMPILE::JS
             {
+                var index:int = -1;
                 var children:Array = internalChildren();
                 var n:int = children.length;
 				var ui:IUIBase = c as IUIBase;
                 for (var i:int = 0; i < n; i++)
                 {
+                    var nodeName:String = children[i]["nodeName"] as String;
+                    if (children[i]["nodeType"] == 1 && nodeName.toUpperCase() != "SCRIPT")
+                        index++;
                     if (children[i] == ui.element)
-                        return i;
+                        return index;
                 }
                 return -1;                
             }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24dc2663/frameworks/projects/Language/src/main/flex/org/apache/flex/utils/Language.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Language/src/main/flex/org/apache/flex/utils/Language.as b/frameworks/projects/Language/src/main/flex/org/apache/flex/utils/Language.as
index 9ddc0d7..63e0425 100644
--- a/frameworks/projects/Language/src/main/flex/org/apache/flex/utils/Language.as
+++ b/frameworks/projects/Language/src/main/flex/org/apache/flex/utils/Language.as
@@ -72,6 +72,8 @@ package org.apache.flex.utils
 
 			coercion = (coercion !== undefined) ? coercion : false;
 
+            if (coercion && leftOperand == null) return null;
+            
 			itIs = Language.is(leftOperand, rightOperand);
 
 			if (!itIs && coercion)

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24dc2663/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as b/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as
index 64815a3..b68a871 100644
--- a/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as
+++ b/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as
@@ -19,6 +19,7 @@
 
 package flex.display
 {	
+    import org.apache.flex.core.UIBase;
 	import org.apache.flex.svg.CompoundGraphic;
 	import org.apache.flex.geom.Point;
 	import org.apache.flex.utils.PointUtils;
@@ -32,7 +33,7 @@ package flex.display
         import flex.events.IEventDispatcher;
     }
     
-	public class Sprite extends CompoundGraphic implements DisplayObjectContainer, IEventDispatcher
+	public class Sprite extends UIBase implements DisplayObjectContainer, IEventDispatcher
 	{
 		COMPILE::JS
 		private var _name:String;
@@ -153,6 +154,9 @@ package flex.display
 		COMPILE::JS
 		private var _graphics:Graphics;
 		
+        COMPILE::JS
+        private var _graphicsHost:CompoundGraphic;
+        
 		COMPILE::JS
 		/**
 		 *  @flexjsignorecoercion flex.display.DisplayObject
@@ -160,8 +164,12 @@ package flex.display
 		public function get graphics():Graphics
 		{
 			if (!_graphics)
-				_graphics = new Graphics(this);
-			return _graphics
+            {
+                _graphicsHost = new CompoundGraphic();
+                super.addElement(_graphicsHost);
+				_graphics = new Graphics(_graphicsHost);
+            }
+			return _graphics;
 		}
 
 		COMPILE::JS

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24dc2663/frameworks/projects/MX/src/main/flex/flex/events/Event.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/events/Event.as b/frameworks/projects/MX/src/main/flex/flex/events/Event.as
index fa60732..72237a2 100644
--- a/frameworks/projects/MX/src/main/flex/flex/events/Event.as
+++ b/frameworks/projects/MX/src/main/flex/flex/events/Event.as
@@ -18,6 +18,7 @@ package flex.events
 		public static const ENTER_FRAME:String = "enterFrame";
 		public static const REMOVED:String = "removed";
 		public static const REMOVED_FROM_STAGE:String = "removedFromStage";
+        public static const RENDER:String = "render";
 		public static const RESIZE:String = "resize";
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24dc2663/frameworks/projects/MX/src/main/flex/flex/text/TextField.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/text/TextField.as b/frameworks/projects/MX/src/main/flex/flex/text/TextField.as
index 3e97256..2036aff 100644
--- a/frameworks/projects/MX/src/main/flex/flex/text/TextField.as
+++ b/frameworks/projects/MX/src/main/flex/flex/text/TextField.as
@@ -539,8 +539,8 @@ public class TextField extends Label
 	
 	public function getLineMetrics(index:int):TextLineMetrics
 	{
-		trace("TextField.getLineMetrics not implemented");
-		return null;
+		
+		return new TextLineMetrics(0, element.offsetWidth, element.offsetHeight, 0, 0, 0);
 	}
 	
 	public function getLineOffset(index:int):int

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24dc2663/frameworks/projects/MX/src/main/flex/mx/controls/Label.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/controls/Label.as b/frameworks/projects/MX/src/main/flex/mx/controls/Label.as
index f8b46f6..3b3f3e4 100644
--- a/frameworks/projects/MX/src/main/flex/mx/controls/Label.as
+++ b/frameworks/projects/MX/src/main/flex/mx/controls/Label.as
@@ -1502,10 +1502,13 @@ public class Label extends UIComponent
                 truncated = textField.truncateToFit();
             }
 
+            COMPILE::LATER
+            {    
             // If no explicit tooltip has been set,
             // implicitly set or clear a "truncation tip".
             if (!toolTipSet)
                 super.toolTip = truncated ? text : null;
+            }
         }
         
     }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24dc2663/frameworks/projects/MX/src/main/flex/mx/core/Application.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/Application.as b/frameworks/projects/MX/src/main/flex/mx/core/Application.as
index 04fd0a6..de72b11 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/Application.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/Application.as
@@ -354,7 +354,6 @@ public class Application extends LayoutContainer
      */
     public function Application()
     {
-        start();
     }
     
     /**
@@ -375,14 +374,16 @@ public class Application extends LayoutContainer
         
         COMPILE::JS
         {
-            UIComponentGlobals.layoutManager = LayoutManager.getInstance();
             // this is a hack until we get falconjx to put the info on the factory
             SystemManager.setInfo(this["info"]());
             var sm:SystemManager = new SystemManager();
             sm.document = this;
             sm.info()["cssData"] = this["cssData"];
             systemManager = sm;
+            UIComponentGlobals.layoutManager = LayoutManager.getInstance();
             new ChildManager(sm);
+            sm.width = width;
+            sm.height = height;
             sm.kickOff();
         }
                 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24dc2663/frameworks/projects/MX/src/main/flex/mx/core/Container.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/Container.as b/frameworks/projects/MX/src/main/flex/mx/core/Container.as
index ed2c0b5..ec23148 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/Container.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/Container.as
@@ -3143,7 +3143,7 @@ public class Container extends UIComponent
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    override public function removeAllElements():void
+    public function removeAllElements():void
     {
         for (var i:int = numElements - 1; i >= 0; i--)
         {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24dc2663/frameworks/projects/MX/src/main/flex/mx/core/UIComponent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/UIComponent.as b/frameworks/projects/MX/src/main/flex/mx/core/UIComponent.as
index ea50d16..e93a5b6 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/UIComponent.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/UIComponent.as
@@ -1784,6 +1784,13 @@ public class UIComponent extends Sprite
         _width = super.width;
         _height = super.height;
         
+        COMPILE::JS
+        {
+            // UIComponent is born invisible and won't be layed out by
+            // FlexJS layout so needs a default display style
+            setDisplayStyleForLayout("block");        
+        }
+        
     }
 
     //--------------------------------------------------------------------------
@@ -13704,6 +13711,8 @@ public class UIComponent extends Sprite
         if (!hasFontContextBeenSaved)
             return false;
 
+        COMPILE::LATER
+        {
         // Check if the module factory has changed.
         var fontName:String =
             StringUtil.trimArrayElements(getStyle("fontFamily"), ",");
@@ -13716,6 +13725,8 @@ public class UIComponent extends Sprite
                 fontName, bold, italic, this, moduleFactory,
                 systemManager);
         return fontContext != oldEmbeddedFontContext;
+        }
+        return false;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24dc2663/frameworks/projects/MX/src/main/flex/mx/managers/SystemManager.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/managers/SystemManager.as b/frameworks/projects/MX/src/main/flex/mx/managers/SystemManager.as
index e682777..9f09d53 100644
--- a/frameworks/projects/MX/src/main/flex/mx/managers/SystemManager.as
+++ b/frameworks/projects/MX/src/main/flex/mx/managers/SystemManager.as
@@ -63,16 +63,17 @@ COMPILE::JS
 	import org.apache.flex.events.MouseEvent;
 	import org.apache.flex.geom.Point;
 }
-import org.apache.flex.utils.Timer;
-import flex.system.DefinitionManager;
-import org.apache.flex.reflection.getQualifiedClassName;
-
 import mx.core.IChildList;
 import mx.core.IFlexDisplayObject;
 import mx.core.IFlexModuleFactory;
 import mx.core.IInvalidating;
 import mx.core.IRawChildrenContainer;
 import mx.core.IUIComponent;
+
+import flex.system.DefinitionManager;
+
+import org.apache.flex.reflection.getQualifiedClassName;
+import org.apache.flex.utils.Timer;
 COMPILE::LATER
 {
 import mx.core.RSLData;
@@ -1806,6 +1807,38 @@ public class SystemManager extends MovieClip
 		trace(e.type, e.target);
 	}
 	
+    COMPILE::JS
+    public var frameRate:Number = 166;
+    
+    COMPILE::JS
+    private var frameInterval:Number = -1;
+    
+    COMPILE::JS
+    override public function addEventListener(type:String, listener:Function,
+                                              useCapture:Boolean = false, opt_handlerScope:Object = null):void
+    {
+        if (type == FlexEvent.RENDER)
+            type = Event.RENDER;
+        else
+            type = Event.ENTER_FRAME;
+        
+        // TODO (aharui): figure out when to stop the interval
+        if (type == Event.RENDER || type == Event.ENTER_FRAME)
+        {
+            if (frameInterval == -1)
+                frameInterval = setInterval(frameCallback, frameRate);
+        }    
+        super.addEventListener(type, listener, useCapture);
+    }
+    
+    COMPILE::JS
+    private function frameCallback():void
+    {
+        dispatchEvent(new Event(Event.ENTER_FRAME));
+        dispatchEvent(new Event(Event.RENDER));
+    }
+            
+    
     /**
      *  @private
      */

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24dc2663/frameworks/projects/MX/src/main/flex/mx/styles/StyleProtoChain.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/styles/StyleProtoChain.as b/frameworks/projects/MX/src/main/flex/mx/styles/StyleProtoChain.as
index ec4467b..d0479d9 100644
--- a/frameworks/projects/MX/src/main/flex/mx/styles/StyleProtoChain.as
+++ b/frameworks/projects/MX/src/main/flex/mx/styles/StyleProtoChain.as
@@ -779,6 +779,8 @@ public class StyleProtoChain
             object.invalidateSize();
         }
 
+        COMPILE::LATER
+        {
         // TODO (gosmith): Should initThemeColor() be in some interface?
         if (!styleProp || 
             styleProp == "styleName" ||
@@ -787,6 +789,7 @@ public class StyleProtoChain
         	if (object is IUIComponent)
                 object["initThemeColor"]();
         }
+        }
         
         object.invalidateDisplayList();
         

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24dc2663/frameworks/projects/MX/src/test/flex/src/TestCompile.mxml
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/test/flex/src/TestCompile.mxml b/frameworks/projects/MX/src/test/flex/src/TestCompile.mxml
index 427952f..bd6cbb4 100644
--- a/frameworks/projects/MX/src/test/flex/src/TestCompile.mxml
+++ b/frameworks/projects/MX/src/test/flex/src/TestCompile.mxml
@@ -22,6 +22,7 @@ limitations under the License.
 				xmlns:mx="library://ns.apache.org/flexjs/mx"
 				xmlns:js="library://ns.apache.org/flexjs/basic" 
                    applicationComplete="runTests()"
+                   width="500" height="375"
                    usePreloader="false"
                    preloader="mx.preloaders.DownloadProgressBar"
                    >