This is an automated email from the ASF dual-hosted git repository.

aharui pushed a commit to branch feature/MXRoyale
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 296d625e6e2a875804b9a43530b359526207d887
Author: Alex Harui <[email protected]>
AuthorDate: Mon Apr 2 10:24:16 2018 -0700

    mx_internal and RadioButtonView needed for RadioButton
---
 .../MXRoyale/src/main/royale/MXRoyaleClasses.as    |   2 +
 .../royale/mx/controls/beads/RadioButtonView.as    | 361 +++++++++++++++++++++
 .../{MXRoyaleClasses.as => mx/core/mx_internal.as} |  39 +--
 3 files changed, 377 insertions(+), 25 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as 
b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
index 9c62e94..b8dd606 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
@@ -28,6 +28,7 @@ package
 internal class MXRoyaleClasses
 {
        import mx.collections.ArrayList; ArrayList;
+    import mx.core.mx_internal; mx_internal;
     import mx.core.UIComponent; UIComponent;
        import mx.core.Container; Container;
        import mx.containers.beads.ApplicationLayout; ApplicationLayout;
@@ -41,6 +42,7 @@ internal class MXRoyaleClasses
     {
         import mx.controls.beads.CSSImageAndTextButtonView; 
CSSImageAndTextButtonView;
         import mx.controls.beads.CheckBoxView; CheckBoxView;
+        import mx.controls.beads.RadioButtonView; RadioButtonView;
     }
 }
 
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/RadioButtonView.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/RadioButtonView.as
new file mode 100644
index 0000000..0c3fbf2
--- /dev/null
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/RadioButtonView.as
@@ -0,0 +1,361 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.controls.beads
+{
+       import flash.display.Shape;
+       import flash.display.SimpleButton;
+       import flash.display.Sprite;
+       import flash.events.MouseEvent;
+       import flash.text.TextFieldAutoSize;
+       import flash.text.TextFieldType;
+       
+       import org.apache.royale.core.BeadViewBase;
+       import org.apache.royale.core.CSSTextField;
+       import org.apache.royale.core.IBeadView;
+       import org.apache.royale.core.IStrand;
+       import org.apache.royale.core.IValueToggleButtonModel;
+       import org.apache.royale.core.UIBase;
+       import org.apache.royale.events.Event;
+       
+    import mx.controls.RadioButton;
+    
+       /**
+        *  The RadioButtonView class creates the visual elements of the 
org.apache.royale.html.RadioButton 
+        *  component. 
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.0
+        */
+       public class RadioButtonView extends BeadViewBase implements IBeadView
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function RadioButtonView()
+               {
+                       sprites = [ upSprite = new Sprite(),
+                                       downSprite = new Sprite(),
+                                               overSprite = new Sprite(),
+                                               upAndSelectedSprite = new 
Sprite(),
+                                               downAndSelectedSprite = new 
Sprite(),
+                                               overAndSelectedSprite = new 
Sprite() ];
+                       
+                       for each( var s:Sprite in sprites )
+                       {
+                               var tf:CSSTextField = new CSSTextField();
+                               tf.type = TextFieldType.DYNAMIC;
+                               tf.autoSize = TextFieldAutoSize.LEFT;
+                               tf.name = "textField";
+                               var icon:Shape = new Shape();
+                               icon.name = "icon";
+                               s.addChild(icon);
+                               s.addChild(tf);
+                s.mouseEnabled = false;
+                       }
+               }
+               
+               private var upSprite:Sprite;
+               private var downSprite:Sprite;
+               private var overSprite:Sprite;
+               private var upAndSelectedSprite:Sprite;
+               private var downAndSelectedSprite:Sprite;
+               private var overAndSelectedSprite:Sprite;
+               
+               private var sprites:Array;
+               
+               private var _toggleButtonModel:IValueToggleButtonModel;
+               
+        private var host:Sprite;
+
+               /**
+                *  The model used for the RadioButton.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function get toggleButtonModel() : 
IValueToggleButtonModel
+               {
+                       return _toggleButtonModel;
+               }
+               
+               /**
+                *  @copy org.apache.royale.core.IBead#strand
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               override public function set strand(value:IStrand):void
+               {
+                       super.strand = value;
+                       _toggleButtonModel = 
value.getBeadByType(IValueToggleButtonModel) as IValueToggleButtonModel;
+                       _toggleButtonModel.addEventListener("textChange", 
textChangeHandler);
+                       _toggleButtonModel.addEventListener("htmlChange", 
htmlChangeHandler);
+                       
_toggleButtonModel.addEventListener("selectedValueChange", 
selectedValueChangeHandler);
+                       if (_toggleButtonModel.text != null)
+                               text = _toggleButtonModel.text;
+                       if (_toggleButtonModel.html != null)
+                               html = _toggleButtonModel.html;
+            for each( var s:Sprite in sprites )
+            {
+                var tf:CSSTextField = s.getChildByName("textField") as 
CSSTextField;
+                tf.styleParent = value;
+            }
+                       
+                       layoutControl();
+                       
+            UIBase(value).$addChild(upSprite);
+            UIBase(value).$addChild(downSprite);
+            UIBase(value).$addChild(overSprite);
+            UIBase(value).$addChild(upAndSelectedSprite);
+            UIBase(value).$addChild(downAndSelectedSprite);
+            UIBase(value).$addChild(overAndSelectedSprite);
+            host = Sprite(value);
+            host.mouseEnabled = true;
+            host.buttonMode = true;
+            host.mouseChildren = false;
+            host.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
+            host.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
+            host.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
+            host.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
+            host.addEventListener(MouseEvent.CLICK, mouseClickHandler);
+            
+            /* TODO switch sprites on mouse state 
+                       SimpleButton(value).downState = downSprite;
+                       SimpleButton(value).overState = overSprite;
+                       SimpleButton(value).hitTestState = hitArea;
+            */
+            
+                       if (toggleButtonModel.text !== null)
+                               text = toggleButtonModel.text;
+                       if (toggleButtonModel.html !== null)
+                               html = toggleButtonModel.html;
+                       
+                       selected = (toggleButtonModel.selected && 
toggleButtonModel.value == value);
+            
+            host.addEventListener("selectedChanged", selectionChangeHandler);
+               }
+               
+               /**
+                *  The string label for the org.apache.royale.html.RadioButton.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function get text():String
+               {
+                       var tf:CSSTextField = 
upSprite.getChildByName('textField') as CSSTextField;
+                       return tf.text;
+               }
+               public function set text(value:String):void
+               {
+                       for each( var s:Sprite in sprites )
+                       {
+                               var tf:CSSTextField = 
s.getChildByName('textField') as CSSTextField;
+                               tf.text = value;
+                       }
+                       
+                       layoutControl();
+               }
+               
+               /**
+                *  The HTML string for the org.apache.royale.html.RadioButton.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function get html():String
+               {
+                       var tf:CSSTextField = 
upSprite.getChildByName('textField') as CSSTextField;
+                       return tf.htmlText;
+               }
+               public function set html(value:String):void
+               {
+                       for each(var s:Sprite in sprites)
+                       {
+                               var tf:CSSTextField = 
s.getChildByName('textField') as CSSTextField;
+                               tf.htmlText = value;
+                       }
+                       
+                       layoutControl();
+               }
+               
+               /**
+                * @private
+                */
+               private function textChangeHandler(event:Event):void
+               {
+                       text = toggleButtonModel.text;
+               }
+               
+               /**
+                * @private
+                */
+               private function htmlChangeHandler(event:Event):void
+               {
+                       html = toggleButtonModel.html;
+               }
+               
+               private var _selected:Boolean;
+               
+               /**
+                * The selection state of the RadioButton
+                */
+               public function get selected():Boolean
+               {
+                       return _selected;
+               }
+               public function set selected(value:Boolean):void
+               {
+                       _selected = value;
+                       
+                       if( value ) {
+                downAndSelectedSprite.visible = true;
+                upAndSelectedSprite.visible = false;
+                overAndSelectedSprite.visible = false;
+                upSprite.visible = false;
+                downSprite.visible = false;
+                overSprite.visible = false;
+                       } else {
+                downAndSelectedSprite.visible = false;
+                upAndSelectedSprite.visible = false;
+                overAndSelectedSprite.visible = false;
+                upSprite.visible = false;
+                downSprite.visible = true;
+                overSprite.visible = false;
+                       }
+                       
+                       layoutControl();
+               }
+               
+               /**
+                * @private
+                */
+               private function selectedValueChangeHandler(event:Event):void
+               {
+                       selected = _toggleButtonModel.value == 
_toggleButtonModel.selectedValue;
+               }
+               
+               /**
+                * @private
+                */
+               protected function layoutControl() : void
+               {
+                       for each(var s:Sprite in sprites)
+                       {
+                               var icon:Shape = s.getChildByName("icon") as 
Shape;
+                               var tf:CSSTextField = 
s.getChildByName("textField") as CSSTextField;
+                               
+                               drawRadioButton(icon);
+                               
+                               var mh:Number = Math.max(icon.height,tf.height);
+                               
+                               icon.x = 0;
+                               icon.y = (mh - icon.height)/2;
+                               
+                               tf.x = icon.x + icon.width + 1;
+                               tf.y = (mh - tf.height)/2;
+                       }
+                       
+               }
+               
+               /**
+                * @private
+                */
+               protected function drawRadioButton(icon:Shape) : void
+               {
+                       icon.graphics.clear();
+                       icon.graphics.beginFill(0xf8f8f8);
+                       icon.graphics.lineStyle(1,0x808080);
+                       icon.graphics.drawEllipse(0,0,10,10);
+                       icon.graphics.endFill();
+                       
+                       if( selected ) {
+                               icon.graphics.beginFill(0);
+                               icon.graphics.drawEllipse(3,3,4,4);
+                               icon.graphics.endFill();
+                       }
+               }
+        
+        private function mouseOverHandler(event:MouseEvent):void
+        {
+            downAndSelectedSprite.visible = false;
+            upAndSelectedSprite.visible = false;
+            overAndSelectedSprite.visible = selected;
+            upSprite.visible = false;
+            downSprite.visible = false;
+            overSprite.visible = !selected;           
+        }
+        
+        private function mouseOutHandler(event:MouseEvent):void
+        {
+            downAndSelectedSprite.visible = false;
+            upAndSelectedSprite.visible = selected;
+            overAndSelectedSprite.visible = false;
+            upSprite.visible = !selected;
+            downSprite.visible = false;
+            overSprite.visible = false;           
+        }
+
+        private function mouseUpHandler(event:MouseEvent):void
+        {
+            downAndSelectedSprite.visible = false;
+            upAndSelectedSprite.visible = selected;
+            overAndSelectedSprite.visible = false;
+            upSprite.visible = !selected;
+            downSprite.visible = false;
+            overSprite.visible = false;           
+        }
+        
+        private function mouseDownHandler(event:MouseEvent):void
+        {
+            downAndSelectedSprite.visible = selected;
+            upAndSelectedSprite.visible = false;
+            overAndSelectedSprite.visible = false;
+            upSprite.visible = false;
+            downSprite.visible = !selected;
+            overSprite.visible = false;           
+        }
+        
+        private function mouseClickHandler(event:MouseEvent):void
+        {
+            selected = !selected;
+            RadioButton(host).selected = selected;
+        }
+        
+        private function selectionChangeHandler(event:Event):void
+        {
+            selected = !selected;
+        }
+       }
+}
diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/core/mx_internal.as
similarity index 54%
copy from frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
copy to frameworks/projects/MXRoyale/src/main/royale/mx/core/mx_internal.as
index 9c62e94..e70b0a5 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/core/mx_internal.as
@@ -16,33 +16,22 @@
 //  limitations under the License.
 //
 
////////////////////////////////////////////////////////////////////////////////
-package
+
+package mx.core
 {
 
 /**
- *  @private
- *  This class is used to link additional classes into rpc.swc
- *  beyond those that are found by dependecy analysis starting
- *  from the classes specified in manifest.xml.
+ *  This namespace is used for undocumented APIs -- usually implementation
+ *  details -- which can't be private because they need to visible
+ *  to other classes.
+ *  APIs in this namespace are completely unsupported and are likely to
+ *  change in future versions of Flex.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
-internal class MXRoyaleClasses
-{
-       import mx.collections.ArrayList; ArrayList;
-    import mx.core.UIComponent; UIComponent;
-       import mx.core.Container; Container;
-       import mx.containers.beads.ApplicationLayout; ApplicationLayout;
-       import mx.containers.beads.BoxLayout; BoxLayout;
-       import mx.containers.beads.CanvasLayout; CanvasLayout;
-       import mx.controls.ToolTip; ToolTip;
-       import mx.controls.beads.ToolTipBead; ToolTipBead;
-       import mx.utils.ArrayUtil; ArrayUtil;
-       
-    COMPILE::SWF
-    {
-        import mx.controls.beads.CSSImageAndTextButtonView; 
CSSImageAndTextButtonView;
-        import mx.controls.beads.CheckBoxView; CheckBoxView;
-    }
+public namespace mx_internal =
+       "http://www.adobe.com/2006/flex/mx/internal";;
 }
-
-}
-

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to