changes required to get Application to use a factoryclass so it doesn't have to extend from Sprite
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/5184111d Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/5184111d Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/5184111d Branch: refs/heads/refactor-sprite Commit: 5184111d01d340abe189eeb721a244468df89660 Parents: dfce43b Author: Alex Harui <aha...@apache.org> Authored: Fri Jul 29 10:42:27 2016 -0700 Committer: Alex Harui <aha...@apache.org> Committed: Tue Aug 2 10:20:29 2016 -0700 ---------------------------------------------------------------------- .../projects/Core/src/main/flex/CoreClasses.as | 1 + .../flex/org/apache/flex/core/Application.as | 258 +++++-------------- .../org/apache/flex/core/ApplicationBase.as | 3 +- .../org/apache/flex/core/ApplicationFactory.as | 133 ++++++++++ .../apache/flex/core/BrowserResizeListener.as | 10 +- .../main/flex/org/apache/flex/core/CSSShape.as | 6 +- .../flex/org/apache/flex/core/CSSTextField.as | 6 +- .../org/apache/flex/core/HTMLElementWrapper.as | 6 +- .../main/flex/org/apache/flex/core/IChild.as | 2 +- .../org/apache/flex/core/ISWFApplication.as | 48 ++++ .../org/apache/flex/core/SimpleApplication.as | 28 +- .../apache/flex/core/StyleableCSSTextField.as | 4 +- .../main/flex/org/apache/flex/core/UIBase.as | 6 +- .../flex/org/apache/flex/core/UIButtonBase.as | 6 +- .../flex/utils/ViewSourceContextMenuOption.as | 3 +- 15 files changed, 283 insertions(+), 237 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/CoreClasses.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/CoreClasses.as b/frameworks/projects/Core/src/main/flex/CoreClasses.as index cf97c27..6433f36 100644 --- a/frameworks/projects/Core/src/main/flex/CoreClasses.as +++ b/frameworks/projects/Core/src/main/flex/CoreClasses.as @@ -30,6 +30,7 @@ internal class CoreClasses import org.apache.flex.core.BrowserWindow; BrowserWindow; COMPILE::SWF { + import org.apache.flex.core.ApplicationFactory; ApplicationFactory; import org.apache.flex.core.CSSShape; CSSShape; import org.apache.flex.core.CSSSprite; CSSSprite; import org.apache.flex.core.CSSTextField; CSSTextField; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as index 7d47e9c..43f8494 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/Application.as @@ -28,10 +28,7 @@ package org.apache.flex.core COMPILE::SWF { import flash.display.DisplayObject; import flash.display.Sprite; - import flash.display.StageAlign; - import flash.display.StageQuality; - import flash.display.StageScaleMode; - import flash.events.Event; + import flash.events.Event; import flash.system.ApplicationDomain; import flash.utils.getQualifiedClassName; } @@ -89,6 +86,18 @@ package org.apache.flex.core * @productversion FlexJS 0.0 */ [Event(name="applicationComplete", type="org.apache.flex.events.Event")] + + /** + * A SWF application must be bootstrapped by a Flash Sprite. + * The factory class is the default bootstrap. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + [Frame(factoryClass="org.apache.flex.core.ApplicationFactory")] + /** * The Application class is the main class and entry point for a FlexJS * application. This Application class is different than the @@ -103,7 +112,7 @@ package org.apache.flex.core * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public class Application extends ApplicationBase implements IStrand, IParent, IEventDispatcher, IUIBase + public class Application extends ApplicationBase implements IStrand, IParent, IEventDispatcher, ISWFApplication { /** * Constructor. @@ -116,28 +125,30 @@ package org.apache.flex.core public function Application() { super(); - - COMPILE::SWF { - if (stage) - { - stage.align = StageAlign.TOP_LEFT; - stage.scaleMode = StageScaleMode.NO_SCALE; - // should be opt-in - //stage.quality = StageQuality.HIGH_16X16_LINEAR; - } - - loaderInfo.addEventListener(flash.events.Event.INIT, initHandler); - } } + /** + * Application wraps the root object. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + COMPILE::SWF + public function setRoot(r:Sprite):void + { + $sprite = r; + MouseEventConverter.setupAllConverters(r.stage); + initHandler(); + } + COMPILE::SWF - private function initHandler(event:flash.events.Event):void + private function initHandler():void { if (model is IBead) addBead(model as IBead); if (controller is IBead) addBead(controller as IBead); - MouseEventConverter.setupAllConverters(stage); - for each (var bead:IBead in beads) addBead(bead); @@ -168,11 +179,10 @@ package org.apache.flex.core * @playerversion Flash 10.2 * @playerversion AIR 2.6 * @productversion FlexJS 0.0 + * @flexjsignorecoercion org.apache.flex.core.IBead */ - COMPILE::SWF protected function initialize():void { - MXMLDataInterpreter.generateMXMLInstances(this, null, MXMLDescriptor); dispatchEvent(new org.apache.flex.events.Event("initialize")); @@ -181,28 +191,44 @@ package org.apache.flex.core { initialView.applicationModel = model; this.addElement(initialView); + + COMPILE::SWF + { // if someone has installed a resize listener, fake an event to run it now - if (stage.hasEventListener("resize")) - stage.dispatchEvent(new flash.events.Event("resize")); + if ($sprite.stage.hasEventListener("resize")) + $sprite.stage.dispatchEvent(new flash.events.Event("resize")); else if (initialView is ILayoutChild) { var ilc:ILayoutChild = initialView as ILayoutChild; // otherwise, size once like this if (!isNaN(ilc.percentWidth) && !isNaN(ilc.percentHeight)) - ilc.setWidthAndHeight(stage.stageWidth, stage.stageHeight, true); + ilc.setWidthAndHeight($sprite.stage.stageWidth, $sprite.stage.stageHeight, true); else if (!isNaN(ilc.percentWidth)) - ilc.setWidth(stage.stageWidth); + ilc.setWidth($sprite.stage.stageWidth); else if (!isNaN(ilc.percentHeight)) - ilc.setHeight(stage.stageHeight); + ilc.setHeight($sprite.stage.stageHeight); } + } + COMPILE::JS + { + var baseView:UIBase = initialView as UIBase; + if (!isNaN(baseView.percentWidth) || !isNaN(baseView.percentHeight)) { + this.element.style.height = window.innerHeight.toString() + 'px'; + this.element.style.width = window.innerWidth.toString() + 'px'; + this.initialView.dispatchEvent('sizeChanged'); // kick off layout if % sizes + } + } + COMPILE::SWF + { var bgColor:Object = ValuesManager.valuesImpl.getValue(this, "background-color"); if (bgColor != null) { var backgroundColor:uint = ValuesManager.valuesImpl.convertColor(bgColor); - graphics.beginFill(backgroundColor); - graphics.drawRect(0, 0, initialView.width, initialView.height); - graphics.endFill(); + $sprite.graphics.beginFill(backgroundColor); + $sprite.graphics.drawRect(0, 0, initialView.width, initialView.height); + $sprite.graphics.endFill(); } + } dispatchEvent(new org.apache.flex.events.Event("viewChanged")); } dispatchEvent(new org.apache.flex.events.Event("applicationComplete")); @@ -356,7 +382,7 @@ package org.apache.flex.core * @productversion FlexJS 0.0 */ COMPILE::SWF - public function addBead(bead:IBead):void + override public function addBead(bead:IBead):void { if (!_beads) _beads = new Vector.<IBead>; @@ -424,7 +450,7 @@ package org.apache.flex.core if(_elements == null) _elements = []; _elements[_elements.length] = c; - this.addChild(c.$sprite); + $sprite.addChild(c.$sprite); c.parent = this; if (c is IUIBase) { @@ -453,7 +479,7 @@ package org.apache.flex.core _elements = []; _elements.splice(index,0,c); - this.addChildAt(c.$sprite,index); + $sprite.addChildAt(c.$sprite,index); c.parent = this; if (c is IUIBase) @@ -545,7 +571,7 @@ package org.apache.flex.core _elements.splice(idx,1); c.parent = null; } - this.removeChild(c.$sprite as DisplayObject); + $sprite.removeChild(c.$sprite as DisplayObject); } COMPILE::JS { @@ -627,167 +653,5 @@ package org.apache.flex.core } } - /** - * @flexjsignorecoercion org.apache.flex.core.IBead - */ - COMPILE::JS - protected function initialize():void - { - MXMLDataInterpreter.generateMXMLInstances(this, null, MXMLDescriptor); - - dispatchEvent('initialize'); - - initialView.applicationModel = model; - addElement(initialView); - - if (initialView) - { - var baseView:UIBase = initialView as UIBase; - if (!isNaN(baseView.percentWidth) || !isNaN(baseView.percentHeight)) { - this.element.style.height = window.innerHeight.toString() + 'px'; - this.element.style.width = window.innerWidth.toString() + 'px'; - this.initialView.dispatchEvent('sizeChanged'); // kick off layout if % sizes - } - - dispatchEvent(new org.apache.flex.events.Event("viewChanged")); - } - dispatchEvent(new org.apache.flex.events.Event("applicationComplete")); - } - - COMPILE::SWF - public function get $displayObject():DisplayObject - { - return this; - } - - public function addedToParent():void - { - // Nothing to do now - } - COMPILE::SWF - public function get element():IFlexJSElement - { - // for now until this is refactored return null so it compiles - return null; - } - - COMPILE::SWF - private var _stageProxy:StageProxy; - - /** - * @copy org.apache.flex.core.IUIBase#topMostEventDispatcher - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - * @flexjsignorecoercion org.apache.flex.events.IEventDispatcher - */ - public function get topMostEventDispatcher():IEventDispatcher - { - COMPILE::SWF - { - if (!_stageProxy) - { - _stageProxy = new StageProxy(stage); - _stageProxy.addEventListener("removedFromStage", stageProxy_removedFromStageHandler); - } - - return _stageProxy; - } - COMPILE::JS - { - var e:WrappedHTMLElement = document.body as WrappedHTMLElement; - return e.flexjs_wrapper as IEventDispatcher; - } - } - COMPILE::SWF - private function stageProxy_removedFromStageHandler(event:flash.events.Event):void - { - _stageProxy = null; - } - COMPILE::JS - public function get alpha():Number - { - // TODO Auto Generated method stub - return 0; - } - COMPILE::JS - public function set alpha(value:Number):void - { - // TODO Auto Generated method stub - - } - COMPILE::JS - public function get height():Number - { - // TODO Auto Generated method stub - return 0; - } - COMPILE::JS - public function set height(value:Number):void - { - // TODO Auto Generated method stub - - } - COMPILE::JS - public function get visible():Boolean - { - // TODO Auto Generated method stub - return false; - } - COMPILE::JS - public function set visible(value:Boolean):void - { - // TODO Auto Generated method stub - - } - COMPILE::JS - public function get width():Number - { - // TODO Auto Generated method stub - return 0; - } - COMPILE::JS - public function set width(value:Number):void - { - // TODO Auto Generated method stub - - } - COMPILE::JS - public function get x():Number - { - // TODO Auto Generated method stub - return 0; - } - COMPILE::JS - public function set x(value:Number):void - { - // TODO Auto Generated method stub - - } - COMPILE::JS - public function get y():Number - { - // TODO Auto Generated method stub - return 0; - } - COMPILE::JS - public function set y(value:Number):void - { - // TODO Auto Generated method stub - - } - - COMPILE::JS - public function get positioner():WrappedHTMLElement - { - // TODO Auto Generated method stub - return null - } - - - - } + } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as index 60111ef..4040395 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationBase.as @@ -19,7 +19,6 @@ package org.apache.flex.core { COMPILE::SWF { - import flash.display.Sprite; import flash.system.ApplicationDomain; import flash.utils.getQualifiedClassName; } @@ -34,7 +33,7 @@ package org.apache.flex.core * @productversion FlexJS 0.0 */ COMPILE::SWF - public class ApplicationBase extends Sprite implements IFlexInfo + public class ApplicationBase extends HTMLElementWrapper implements IFlexInfo { /** * Constructor. http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationFactory.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationFactory.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationFactory.as new file mode 100644 index 0000000..e3698c1 --- /dev/null +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ApplicationFactory.as @@ -0,0 +1,133 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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 +{ + COMPILE::SWF { + import flash.display.MovieClip; + import flash.display.StageAlign; + import flash.display.StageQuality; + import flash.display.StageScaleMode; + import flash.events.Event; + import flash.utils.getDefinitionByName; + } + + /** + * This is a platform-dependent base class + * for Application + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + COMPILE::SWF + public class ApplicationFactory extends MovieClip + { + /** + * Constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function ApplicationFactory() + { + super(); + + if (stage) + { + stage.align = StageAlign.TOP_LEFT; + stage.scaleMode = StageScaleMode.NO_SCALE; + // should be opt-in + //stage.quality = StageQuality.HIGH_16X16_LINEAR; + } + + loaderInfo.addEventListener(flash.events.Event.INIT, initHandler); + } + + private function initHandler(event:flash.events.Event):void + { + nextFrame(); + addEventListener(flash.events.Event.ENTER_FRAME, deferredFrameHandler); + } + + private function deferredFrameHandler(e:flash.events.Event):void + { + removeEventListener(flash.events.Event.ENTER_FRAME, deferredFrameHandler); + + var mainClassName:String = info()["mainClassName"]; + + var app:ISWFApplication = create() as ISWFApplication; + if (app) + app.setRoot(this); + } + + /** + * @private + */ + public function info():Object + { + return {}; + } + + /** + * A factory method that requests an instance of a + * definition known to the module. + * + * You can provide an optional set of parameters to let building + * factories change what they create based on the + * input. Passing null indicates that the default definition + * is created, if possible. + * + * This method is overridden in the autogenerated subclass. + * + * @param params An optional list of arguments. You can pass + * any number of arguments, which are then stored in an Array + * called <code>parameters</code>. + * + * @return An instance of the module, or <code>null</code>. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function create(... params):Object + { + var mainClassName:String = info()["mainClassName"]; + + COMPILE::SWF + { + if (mainClassName == null) + { + var url:String = loaderInfo.loaderURL; + var dot:int = url.lastIndexOf("."); + var slash:int = url.lastIndexOf("/"); + mainClassName = url.substring(slash + 1, dot); + } + } + + var mainClass:Class = Class(getDefinitionByName(mainClassName)); + + return mainClass ? new mainClass() : null; + } + + } +} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as index 8d946cd..8c3c456 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/BrowserResizeListener.as @@ -83,7 +83,7 @@ COMPILE::SWF app = value as Application; COMPILE::SWF { - app.stage.addEventListener("resize", resizeHandler); + app.$sprite.stage.addEventListener("resize", resizeHandler); if (ExternalInterface.available && (!isNaN(minWidth) || !isNaN(minHeight))) { // Get application name. This assumes that the wrapper is using an @@ -115,12 +115,12 @@ COMPILE::SWF { var initialView:UIBase = app.initialView as UIBase; if (!isNaN(initialView.percentWidth) && !isNaN(initialView.percentHeight)) - initialView.setWidthAndHeight(Math.max(minWidth, app.stage.stageWidth), - Math.max(minHeight, app.stage.stageHeight), true); + initialView.setWidthAndHeight(Math.max(minWidth, app.$sprite.stage.stageWidth), + Math.max(minHeight, app.$sprite.stage.stageHeight), true); else if (!isNaN(initialView.percentWidth)) - initialView.setWidth(Math.max(minWidth, app.stage.stageWidth)); + initialView.setWidth(Math.max(minWidth, app.$sprite.stage.stageWidth)); else if (!isNaN(initialView.percentHeight)) - initialView.setHeight(Math.max(minHeight, app.stage.stageHeight)); + initialView.setHeight(Math.max(minHeight, app.$sprite.stage.stageHeight)); } COMPILE::JS { http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as index c96ba84..c024822 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as @@ -79,12 +79,12 @@ package org.apache.flex.core return _shape; } - private var _parent:IUIBase; - public function get parent():IUIBase + private var _parent:IParent; + public function get parent():IParent { return _parent; } - public function set parent(val:IUIBase):void + public function set parent(val:IParent):void { _parent = val; } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as index 6636d50..effb787 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSTextField.as @@ -84,12 +84,12 @@ package org.apache.flex.core return _textField; } - private var _parent:IUIBase; - public function get parent():IUIBase + private var _parent:IParent; + public function get parent():IParent { return _parent; } - public function set parent(val:IUIBase):void + public function set parent(val:IParent):void { _parent = val; } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as index 5a8dfd5..4879f42 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as @@ -79,12 +79,12 @@ package org.apache.flex.core { } - private var _parent:IUIBase; - public function get parent():IUIBase + private var _parent:IParent; + public function get parent():IParent { return _parent; } - public function set parent(val:IUIBase):void + public function set parent(val:IParent):void { _parent = val; } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IChild.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IChild.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IChild.as index 9f67872..f1e893b 100755 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IChild.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IChild.as @@ -39,6 +39,6 @@ package org.apache.flex.core * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - function get parent():IUIBase; + function get parent():IParent; } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ISWFApplication.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ISWFApplication.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ISWFApplication.as new file mode 100644 index 0000000..272d6b6 --- /dev/null +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ISWFApplication.as @@ -0,0 +1,48 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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 +{ +COMPILE::SWF +{ + import flash.display.Sprite; +} + + /** + * Interface for bootstrapping SWF Applications. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public interface ISWFApplication + { + /** + * Pass in the root of the SWF. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + COMPILE::SWF + function setRoot(root:Sprite):void; + + } +} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as index b824288..93af131 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/SimpleApplication.as @@ -36,6 +36,17 @@ package org.apache.flex.core import org.apache.flex.events.utils.MouseEventConverter; import org.apache.flex.utils.MXMLDataInterpreter; + /** + * A SWF application must be bootstrapped by a Flash Sprite. + * The factory class is the default bootstrap. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + [Frame(factoryClass="org.apache.flex.core.ApplicationFactory")] + /** * The SimpleApplication class can be used as the main class and entry point * for low-level ActionScript-only FlexJS @@ -61,23 +72,12 @@ package org.apache.flex.core public function SimpleApplication() { super(); - COMPILE::SWF - { - if (stage) - { - stage.align = StageAlign.TOP_LEFT; - stage.scaleMode = StageScaleMode.NO_SCALE; - // should be opt-in - //stage.quality = StageQuality.HIGH_16X16_LINEAR; - } - - loaderInfo.addEventListener(flash.events.Event.INIT, initHandler); - } - } + } COMPILE::SWF - private function initHandler(event:flash.events.Event):void + public function setRoot(r:Sprite):void { + $sprite = r; start(); } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as index 874e3a7..0d6841b 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/StyleableCSSTextField.as @@ -66,10 +66,10 @@ package org.apache.flex.core */ public var CSSParent:Object; - override public function get parent():IUIBase + override public function get parent():IParent { if (CSSParent) - return CSSParent as IUIBase; + return CSSParent as IParent; return super.parent; } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/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 7a583a1..5e65dfc 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 @@ -1466,13 +1466,13 @@ package org.apache.flex.core /** * @param value The event containing new style properties. * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - * @flexjsignorecoercion org.apache.flex.core.IUIBase + * @flexjsignorecoercion org.apache.flex.core.IParent */ COMPILE::JS - public function get parent():IUIBase + public function get parent():IParent { var p:WrappedHTMLElement = this.positioner.parentNode as WrappedHTMLElement; - var wrapper:IUIBase = p ? p.flexjs_wrapper as IUIBase : null; + var wrapper:IParent = p ? p.flexjs_wrapper as IParent : null; return wrapper; } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as index d2af3ef..081a8be 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as @@ -105,12 +105,12 @@ package org.apache.flex.core return _button; } - private var _parent:IUIBase; - public function get parent():IUIBase + private var _parent:IParent; + public function get parent():IParent { return _parent; } - public function set parent(val:IUIBase):void + public function set parent(val:IParent):void { _parent = val; } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5184111d/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as index 8b41a7f..4e5cfed 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as @@ -29,6 +29,7 @@ COMPILE::SWF import flash.ui.ContextMenuItem; } +import org.apache.flex.core.HTMLElementWrapper; import org.apache.flex.core.IBead; import org.apache.flex.core.IStrand; @@ -73,7 +74,7 @@ public class ViewSourceContextMenuOption implements IBead COMPILE::SWF { - var menuHost:InteractiveObject = InteractiveObject(value); + var menuHost:InteractiveObject = InteractiveObject(HTMLElementWrapper(value).$sprite); var cm:ContextMenu = ContextMenu(menuHost.contextMenu); if (!cm) {