You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2020/05/05 16:20:17 UTC

[royale-asjs] branch develop updated: jewel-combobox: add "popUpOpened" and "popUpClosed"

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 2362094  jewel-combobox: add "popUpOpened" and "popUpClosed"
2362094 is described below

commit 23620944d953824cedfa3d88fcbe3ed833c0d57b
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Tue May 5 18:20:12 2020 +0200

    jewel-combobox: add "popUpOpened" and "popUpClosed"
---
 .../royale/org/apache/royale/jewel/ComboBox.as     | 22 ++++++++++++++++++++++
 .../jewel/beads/controls/combobox/SearchFilter.as  | 12 ++++++++++--
 .../royale/jewel/beads/views/ComboBoxView.as       | 16 ++++++++++------
 3 files changed, 42 insertions(+), 8 deletions(-)

diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as
index ee2bfdf..d408f83 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as
@@ -38,6 +38,28 @@ package org.apache.royale.jewel
      *  @productversion Royale 0.9.4
      */
 	[Event(name="change", type="org.apache.royale.events.Event")]
+    
+	/**
+     *  Dispatched when the popup is opened.
+     *
+     *  @toplevel
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.9.8
+     */
+	[Event(name="popUpOpened", type="org.apache.royale.events.Event")]
+	
+	/**
+     *  Dispatched when the popup is closed.
+     *
+     *  @toplevel
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.9.8
+     */
+	[Event(name="popUpClosed", type="org.apache.royale.events.Event")]
 
 	/**
 	 *  The ComboBox class is a component that displays an input field and
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/SearchFilter.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/SearchFilter.as
index f815310..5049a9b 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/SearchFilter.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/SearchFilter.as
@@ -82,7 +82,9 @@ package org.apache.royale.jewel.beads.controls.combobox
 
 		override protected function onBeadsAdded(event:Event):void{
 			IEventDispatcher(_strand).addEventListener('dismissPopUp', removeListListeners);
-			
+			IEventDispatcher(_strand).addEventListener('popUpOpened', popUpOpenedHandler);
+			IEventDispatcher(_strand).addEventListener('popUpClosed', popUpClosedHandler);
+
 			comboView = event.target.view as IComboBoxView;
             if (comboView)
 			{
@@ -99,9 +101,15 @@ package org.apache.royale.jewel.beads.controls.combobox
 		override protected function onInputFocus(event:Event):void{
             if (!comboView.popUpVisible)
                 comboView.popUpVisible = true;
-			
+		}
+
+		protected function popUpOpenedHandler():void {
 			// fill "list" with the internal list in the combobox popup
 			list = comboView.popup.view.list;
 		}
+
+		protected function popUpClosedHandler():void {
+			list = null;
+		}
 	}
 }
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ComboBoxView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ComboBoxView.as
index 546eeab..3bb8583 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ComboBoxView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ComboBoxView.as
@@ -45,6 +45,7 @@ package org.apache.royale.jewel.beads.views
 	import org.apache.royale.jewel.beads.models.IJewelSelectionModel;
 	import org.apache.royale.jewel.supportClasses.combobox.ComboBoxPopUp;
 	import org.apache.royale.utils.UIUtils;
+	import org.apache.royale.utils.sendStrandEvent;
 
 	/**
 	 *  The ComboBoxView class creates the visual elements of the org.apache.royale.jewel.ComboBox
@@ -218,6 +219,8 @@ package org.apache.royale.jewel.beads.views
                     }
                     setTimeout(prepareForPopUp,  300);
 
+					sendStrandEvent(_strand, "popUpOpened");
+
                     autoResizeHandler();
 				}
 			}
@@ -229,6 +232,7 @@ package org.apache.royale.jewel.beads.views
 				window.removeEventListener('resize', autoResizeHandler, false);
 				}
 				_comboPopUp = null;
+				sendStrandEvent(_strand, "popUpClosed");
 			}
 		}
 
@@ -236,12 +240,12 @@ package org.apache.royale.jewel.beads.views
         {
 			COMPILE::JS
 			{
-				//check here for non-null in case popUpVisible was toggled off before timeout runs
-				if (_comboPopUp != null) {
-                    _comboPopUp.element.classList.add("open");
-                    //avoid scroll in html
-                    document.body.classList.add("viewport");
-				}
+			//check here for non-null in case popUpVisible was toggled off before timeout runs
+			if (_comboPopUp != null) {
+				_comboPopUp.element.classList.add("open");
+				//avoid scroll in html
+				document.body.classList.add("viewport");
+			}
 			}
 		}