Optimize accordion item renderers layout.

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

Branch: refs/heads/feature/mdl
Commit: 133dd3c70d14e07a7cca140fc2b832fc24d7394e
Parents: dfec5b2
Author: yishayw <[email protected]>
Authored: Sun Dec 18 13:14:43 2016 +0200
Committer: yishayw <[email protected]>
Committed: Sun Dec 18 13:14:43 2016 +0200

----------------------------------------------------------------------
 .../projects/HTML/src/main/flex/HTMLClasses.as  |  3 +-
 .../html/beads/AccordionItemRendererView.as     | 63 ++++++++++++++++++++
 .../supportClasses/AccordionItemRenderer.as     |  5 ++
 .../flex/html/supportClasses/ICollapsible.as    |  1 +
 .../HTML/src/main/resources/defaults.css        |  1 +
 5 files changed, 72 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/133dd3c7/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/HTMLClasses.as 
b/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
index 077bd88..35f2a98 100644
--- a/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
+++ b/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
@@ -64,7 +64,8 @@ internal class HTMLClasses
        {
            import org.apache.flex.html.beads.NumericStepperView; 
NumericStepperView;
        }
-    import org.apache.flex.html.beads.PanelView; PanelView;
+       import org.apache.flex.html.beads.PanelView; PanelView;
+       import org.apache.flex.html.beads.AccordionItemRendererView; 
AccordionItemRendererView;
        import org.apache.flex.html.beads.SliderView; SliderView;
        COMPILE::SWF
        {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/133dd3c7/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as
new file mode 100644
index 0000000..29842be
--- /dev/null
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as
@@ -0,0 +1,63 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.beads
+{              
+       import org.apache.flex.events.Event;
+       import org.apache.flex.html.supportClasses.ICollapsible;
+    
+       /**
+        * This class creates and manages the contents of an 
AccordionItemItemRenderer
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+        */
+       public class AccordionItemRendererView extends PanelView
+       {
+               /**
+        *  The AccordionItemRendererView class is the default view for
+         *  the org.apache.flex.html.supportClasses.AccordionItemRenderer 
classes.
+         *  It provides some layout optimizations that can be attained by 
assuming
+                *  the strand to be an 
org.apache.flex.html.supportClasses.ICollapsible.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+               public function AccordionItemRendererView()
+               {
+                       super();
+               }
+               
+               override protected function performLayout(event:Event):void
+               {
+                       var collapsibleStrand:ICollapsible = _strand as 
ICollapsible;
+                       if (!collapsibleStrand.collapsed)
+                       {
+                               super.performLayout(event);
+                       } else // skip layout for viewport children
+                       {
+                               layoutViewBeforeContentLayout();
+                               layoutViewAfterContentLayout();
+                       }
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/133dd3c7/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/AccordionItemRenderer.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/AccordionItemRenderer.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/AccordionItemRenderer.as
index 2b069c7..e1e4b0d 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/AccordionItemRenderer.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/AccordionItemRenderer.as
@@ -158,5 +158,10 @@ package org.apache.flex.html.supportClasses
                        height = collapsedHeight;
                }
                
+               public function get collapsed():Boolean
+               {
+                       return height == collapsedHeight;
+               }
+               
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/133dd3c7/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ICollapsible.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ICollapsible.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ICollapsible.as
index 39a496e..c1f0c4e 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ICollapsible.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ICollapsible.as
@@ -23,5 +23,6 @@ package org.apache.flex.html.supportClasses
                function get collapsedHeight():Number;
                function get collapsedWidth():Number;
                function collapse():void;
+               function get collapsed():Boolean;
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/133dd3c7/frameworks/projects/HTML/src/main/resources/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/resources/defaults.css 
b/frameworks/projects/HTML/src/main/resources/defaults.css
index 24bc5c7..d9989ec 100644
--- a/frameworks/projects/HTML/src/main/resources/defaults.css
+++ b/frameworks/projects/HTML/src/main/resources/defaults.css
@@ -415,6 +415,7 @@ StringItemRenderer
 AccordionItemRenderer
 {
        IBeadController: 
ClassReference("org.apache.flex.html.beads.controllers.AccordionItemRendererMouseController");
+       IBeadView: 
ClassReference("org.apache.flex.html.beads.AccordionItemRendererView");
 }
 
 TreeItemRenderer

Reply via email to