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 da6f7191b0cb3ad941cc531eb61ad1f48c45e9d1
Author: Alex Harui <aha...@apache.org>
AuthorDate: Fri Aug 10 00:08:39 2018 -0700

    refactor PanelView so we can override layout.  The flexbox layout did not 
like children being absolute positioned which fools its size calculations so we 
will switch to using the Flex BoxLayout
---
 .../org/apache/royale/html/beads/PanelView.as      | 68 ++++++++++++----------
 .../MXRoyale/src/main/resources/defaults.css       |  2 +-
 .../main/royale/mx/containers/beads/PanelView.as   | 18 +++++-
 3 files changed, 54 insertions(+), 34 deletions(-)

diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/PanelView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/PanelView.as
index e356e94..ed26d4d 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/PanelView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/PanelView.as
@@ -160,21 +160,6 @@ package org.apache.royale.html.beads
 
                        _titleBar.id = "panelTitleBar";
 
-                       COMPILE::SWF {
-                               _titleBar.percentWidth = 100;
-
-                               if (_titleBar.style == null) {
-                                       _titleBar.style = new 
SimpleCSSStylesWithFlex();
-                               }
-                               _titleBar.style.flexGrow = 0;
-                               _titleBar.style.order = 1;
-                       }
-
-                       COMPILE::JS {
-                               _titleBar.element.style["flex-grow"] = "0";
-                               _titleBar.element.style["order"] = "1";
-                       }
-
                        _titleBar.addEventListener("close", handleClose);
 
                        // replace the TitleBar's model with the Panel's model 
(it implements ITitleBarModel) so that
@@ -197,21 +182,6 @@ package org.apache.royale.html.beads
                                // add the viewport bead to the content area.
                                if (transferViewportBead) 
_contentArea.addBead(transferViewportBead);
 
-                               COMPILE::SWF {
-                                       _contentArea.percentWidth = 100;
-
-                                       if (_contentArea.style == null) {
-                                               _contentArea.style = new 
SimpleCSSStylesWithFlex();
-                                       }
-                                       _contentArea.style.flexGrow = 1;
-                                       _contentArea.style.order = 2;
-                               }
-
-                               COMPILE::JS {
-                                       _contentArea.element.style["flex-grow"] 
= "1";
-                                       _contentArea.element.style["order"] = 
"2";
-                                       _contentArea.element.style["overflow"] 
= "auto"; // temporary
-                               }
                        }
 
                        COMPILE::SWF {
@@ -228,9 +198,45 @@ package org.apache.royale.html.beads
                                (_strand as 
IContainerBaseStrandChildrenHost).$addElement(contentArea as IChild);
                        }
 
+            setupLayout();
+        }
+        
+        protected function setupLayout():void
+        {
+            COMPILE::JS {
+                _titleBar.element.style["flex-grow"] = "0";
+                _titleBar.element.style["order"] = "1";
+            }
+                
+            COMPILE::SWF {
+                _contentArea.percentWidth = 100;
+                
+                if (_contentArea.style == null) {
+                    _contentArea.style = new SimpleCSSStylesWithFlex();
+                }
+                _contentArea.style.flexGrow = 1;
+                _contentArea.style.order = 2;
+            }
+                
+            COMPILE::SWF {
+                _titleBar.percentWidth = 100;
+                
+                if (_titleBar.style == null) {
+                    _titleBar.style = new SimpleCSSStylesWithFlex();
+                }
+                _titleBar.style.flexGrow = 0;
+                _titleBar.style.order = 1;
+            }
+            
+            COMPILE::JS {
+                _contentArea.element.style["flex-grow"] = "1";
+                _contentArea.element.style["order"] = "2";
+                _contentArea.element.style["overflow"] = "auto"; // temporary
+            }
+            
                        // Now give the Panel its own layout
                        var layoutBead:IBeadLayout = new VerticalFlexLayout();
-                       value.addBead(layoutBead);
+                       _strand.addBead(layoutBead);
                }
 
                private var _panelLayoutProxy:PanelLayoutProxy;
diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css 
b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
index 1767c94..bd55f7b 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -200,7 +200,7 @@ Panel
 {
        IBeadModel: ClassReference("mx.containers.beads.models.PanelModel");
        IBeadView: ClassReference("mx.containers.beads.PanelView");
-       IPanelLayout: 
ClassReference("org.apache.royale.html.beads.layouts.VerticalFlexLayout");
+       IPanelLayout: ClassReference("mx.containers.beads.BoxLayout");
        IPanelContentArea: ClassReference("mx.core.Container"); 
        background-color: #FFFFFF;
        border: 1px solid #333333
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/PanelView.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/PanelView.as
index cf379ef..c86ff27 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/PanelView.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/PanelView.as
@@ -20,16 +20,17 @@
 package mx.containers.beads
 {
 
-import mx.core.ContainerLayout;
 import mx.containers.BoxDirection;
 import mx.containers.beads.BoxLayout;
 import mx.containers.beads.CanvasLayout;
 import mx.containers.beads.models.PanelModel;
+import mx.core.ContainerLayout;
 
-import org.apache.royale.html.beads.PanelView;
 import org.apache.royale.core.IBead;
 import org.apache.royale.core.IStrand;
 import org.apache.royale.core.UIBase;
+import org.apache.royale.html.beads.PanelView;
+import org.apache.royale.html.beads.layouts.VerticalFlexLayout;
 
 /**
  *  @private
@@ -83,6 +84,19 @@ public class PanelView extends 
org.apache.royale.html.beads.PanelView
         if (layoutObject)
             contentArea.addBead(layoutObject);            
     }
+    
+    override protected function setupLayout():void
+    {
+        titleBar.percentWidth = 100;
+            
+        contentArea.percentWidth = 100;
+        contentArea.percentHeight = 100;
+        
+        // Now give the Panel its own layout
+        var boxLayout:BoxLayout = new BoxLayout();
+        boxLayout.direction = "vertical";
+        _strand.addBead(boxLayout);
+    }
 }
 
 }

Reply via email to