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

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


The following commit(s) were added to refs/heads/develop by this push:
     new 7dcc0f8  jewel: Add VirtualComboBox for combos that need performance 
in the popup list recycling renderers
7dcc0f8 is described below

commit 7dcc0f8e847e266b36977fa877ead5ff9ea42244
Author: Carlos Rovira <[email protected]>
AuthorDate: Thu Feb 6 18:16:18 2020 +0100

    jewel: Add VirtualComboBox for combos that need performance in the popup 
list recycling renderers
---
 .../projects/Jewel/src/main/resources/defaults.css |  8 +++
 .../Jewel/src/main/resources/jewel-manifest.xml    |  2 +
 .../projects/Jewel/src/main/royale/JewelClasses.as |  1 +
 .../org/apache/royale/jewel/VirtualComboBox.as     | 56 +++++++++++++++
 .../jewel/beads/views/VirtualComboBoxPopUpView.as  | 83 ++++++++++++++++++++++
 .../combobox/VirtualComboBoxPopUp.as               | 45 ++++++++++++
 .../Jewel/src/main/sass/components/_combobox.sass  |  8 ++-
 7 files changed, 202 insertions(+), 1 deletion(-)

diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css 
b/frameworks/projects/Jewel/src/main/resources/defaults.css
index 6c77471..67af3ed 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -484,6 +484,14 @@ j|ComboBoxPopUp {
   IBeadView: 
ClassReference("org.apache.royale.jewel.beads.views.ComboBoxPopUpView");
 }
 
+j|VirtualComboBox {
+  IPopUp: 
ClassReference("org.apache.royale.jewel.supportClasses.combobox.ComboBoxPopUp");
+}
+
+j|VirtualComboBoxPopUp {
+  IBeadView: 
ClassReference("org.apache.royale.jewel.beads.views.VirtualComboBoxPopUpView");
+}
+
 .jewel.datagrid {
   display: flex;
   position: relative;
diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml 
b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index e57b809..e5e11b7 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -75,6 +75,8 @@
     <component id="DropDownList" class="org.apache.royale.jewel.DropDownList"/>
     <component id="ComboBox" class="org.apache.royale.jewel.ComboBox"/>
     <component id="ComboBoxPopUp" 
class="org.apache.royale.jewel.supportClasses.combobox.ComboBoxPopUp"/>
+    <component id="VirtualComboBox" 
class="org.apache.royale.jewel.VirtualComboBox"/>
+    <component id="VirtualComboBoxPopUp" 
class="org.apache.royale.jewel.supportClasses.combobox.VirtualComboBoxPopUp"/>
     <component id="Spacer" class="org.apache.royale.jewel.Spacer"/>
     <component id="DateChooser" class="org.apache.royale.jewel.DateChooser"/>
     <component id="DateField" class="org.apache.royale.jewel.DateField"/>
diff --git a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as 
b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
index c1aa33b..59b8eec 100644
--- a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
+++ b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
@@ -75,6 +75,7 @@ package
         import org.apache.royale.jewel.beads.views.TableView; TableView;
         import org.apache.royale.jewel.beads.views.ComboBoxView; ComboBoxView;
         import org.apache.royale.jewel.beads.views.ComboBoxPopUpView; 
ComboBoxPopUpView;
+        import org.apache.royale.jewel.beads.views.VirtualComboBoxPopUpView; 
VirtualComboBoxPopUpView;
                import org.apache.royale.jewel.beads.views.SnackbarView; 
SnackbarView;
         import org.apache.royale.jewel.beads.views.FormItemView; FormItemView;
         import org.apache.royale.jewel.beads.views.FormHeadingView; 
FormHeadingView;
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/VirtualComboBox.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/VirtualComboBox.as
new file mode 100644
index 0000000..0c309a3
--- /dev/null
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/VirtualComboBox.as
@@ -0,0 +1,56 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.royale.jewel
+{
+       /**
+        *  The VirtualComboBox class is a component that displays an input 
field and
+        *  pop-up VirtualList with selections. Selecting an item from the 
pop-up List
+        *  places that item into the input field of the ComboBox.
+        *  
+        *  This component should be used when data provider has several items 
for performance
+        *  improvements
+        * 
+        *  The ComboBox uses the following bead types:
+        *
+        *  org.apache.royale.core.IBeadModel: the data model, which includes 
the dataProvider, selectedItem, and
+        *  so forth.
+        *  org.apache.royale.core.IBeadView:  the bead that constructs the 
visual parts of the component.
+        *  org.apache.royale.core.IBeadController: the bead that handles input 
and output.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.9.7
+        */
+       public class VirtualComboBox extends ComboBox
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.7
+                */
+               public function VirtualComboBox()
+               {
+                       super();
+               }
+       }
+}
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/VirtualComboBoxPopUpView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/VirtualComboBoxPopUpView.as
new file mode 100644
index 0000000..fc3a70f
--- /dev/null
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/VirtualComboBoxPopUpView.as
@@ -0,0 +1,83 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.royale.jewel.beads.views
+{
+    import org.apache.royale.core.BeadViewBase;
+    import org.apache.royale.core.IBeadModel;
+    import org.apache.royale.core.IParent;
+    import org.apache.royale.core.IStrand;
+    import org.apache.royale.jewel.VirtualList;
+
+    /**
+        *  The VirtualComboBoxPopUpView class is a view bead for the 
VirtualComboBoxPopUp.
+     * 
+     *  This class creates a VirtualList that will be pop up when the combo 
box needs
+     *  to show the associated list
+     * 
+        *  @viewbead    
+        */
+       public class VirtualComboBoxPopUpView extends BeadViewBase
+       {
+               /**
+                *  constructor
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.7
+                */
+               public function VirtualComboBoxPopUpView()
+               {
+                       super();
+               }
+        
+        /**
+         *  Get the strand for this bead
+         * 
+         *  @copy org.apache.royale.core.IBead#strand
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+        override public function set strand(value:IStrand):void
+               {
+            _strand = value;
+            
+            var model:IBeadModel = _strand.getBeadByType(IBeadModel) as 
IBeadModel;
+
+            _list = new VirtualList();
+            _list.model = model;
+            
+            IParent(_strand).addElement(_list);
+               }
+
+        private var _list:VirtualList;
+
+        public function get list():VirtualList
+        {
+               return _list;
+        }
+        public function set list(value:VirtualList):void
+        {
+               _list = value;
+        }
+    }
+}
\ No newline at end of file
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/combobox/VirtualComboBoxPopUp.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/combobox/VirtualComboBoxPopUp.as
new file mode 100644
index 0000000..d8ef164
--- /dev/null
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/combobox/VirtualComboBoxPopUp.as
@@ -0,0 +1,45 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.royale.jewel.supportClasses.combobox
+{
+       /**
+        *  The VirtualComboBoxPopUp class is the popup that holds the 
VirtualList used internally
+        *  by VirtualComboBox as the dropdown/popup.
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.9.7
+        */
+       public class VirtualComboBoxPopUp extends ComboBoxPopUp
+       {
+               /**
+                *  Constructor.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.7
+                */
+               public function VirtualComboBoxPopUp()
+               {
+                       super();
+               }
+       }
+}
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_combobox.sass 
b/frameworks/projects/Jewel/src/main/sass/components/_combobox.sass
index eaa8653..28f735d 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_combobox.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_combobox.sass
@@ -169,4 +169,10 @@ j|ComboBoxPopUp
 // @media -royale-swf
 //     j|ComboBoxPopUp
 //         IBackgroundBead: 
ClassReference('org.apache.royale.html.beads.SolidBackgroundBead')
-       
\ No newline at end of file
+
+j|VirtualComboBox
+    IPopUp: 
ClassReference("org.apache.royale.jewel.supportClasses.combobox.ComboBoxPopUp")
+
+// this is a StyledUIBase with a List inside
+j|VirtualComboBoxPopUp
+    IBeadView: 
ClassReference("org.apache.royale.jewel.beads.views.VirtualComboBoxPopUpView")
\ No newline at end of file

Reply via email to