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 2019/01/03 03:01:39 UTC

[royale-asjs] branch develop updated: PopUp changes: - change bead name from IPopUp to IPopUpContent since is what we really provide - refactor methods "show" and "close" to a property "open" to be able to use in MXML and with bindings - clean the code

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 2540786  PopUp changes: - change bead name from IPopUp to IPopUpContent since is what we really provide - refactor methods "show" and "close" to a property "open" to be able to use in MXML and with bindings - clean the code
2540786 is described below

commit 25407867b0577589461c01ea869ec8111395f889
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Thu Jan 3 04:01:31 2019 +0100

    PopUp changes:
    - change bead name from IPopUp to IPopUpContent since is what we really provide
    - refactor methods "show" and "close" to a property "open" to be able to use in MXML and with bindings
    - clean the code
---
 .../src/main/resources/jewel-example-styles.css    |  2 +-
 .../src/main/royale/PopUpPlayGround.mxml           | 21 ++++++--
 .../projects/Jewel/src/main/resources/defaults.css |  2 +-
 .../main/royale/org/apache/royale/jewel/PopUp.as   | 56 +++++++++++-----------
 .../beads/controllers/PopUpMouseController.as      |  4 +-
 .../apache/royale/jewel/beads/views/PopUpView.as   | 14 +-----
 .../Jewel/src/main/sass/components/_popup.sass     |  2 +-
 7 files changed, 53 insertions(+), 48 deletions(-)

diff --git a/examples/royale/TourDeJewel/src/main/resources/jewel-example-styles.css b/examples/royale/TourDeJewel/src/main/resources/jewel-example-styles.css
index f9098f7..463f93d 100644
--- a/examples/royale/TourDeJewel/src/main/resources/jewel-example-styles.css
+++ b/examples/royale/TourDeJewel/src/main/resources/jewel-example-styles.css
@@ -90,5 +90,5 @@
 
 .somePopUpContent
 {
-    IPopUp: ClassReference("components.SomePopUpContent")
+    IPopUpContent: ClassReference("components.SomePopUpContent")
 }
\ No newline at end of file
diff --git a/examples/royale/TourDeJewel/src/main/royale/PopUpPlayGround.mxml b/examples/royale/TourDeJewel/src/main/royale/PopUpPlayGround.mxml
index 68c6728..2eaead1 100644
--- a/examples/royale/TourDeJewel/src/main/royale/PopUpPlayGround.mxml
+++ b/examples/royale/TourDeJewel/src/main/royale/PopUpPlayGround.mxml
@@ -25,7 +25,16 @@ limitations under the License.
 	
 	<fx:Script>
 		<![CDATA[
-		import org.apache.royale.jewel.PopUp;			
+		import org.apache.royale.events.Event;
+
+		public function openPopUpHandler(event:Event):void
+		{
+			trace("[openPopUp] ", event.target, popup1.content);
+		}
+		public function closePopUpHandler(event:Event):void
+		{
+			trace("[closePopUp] ", event.target, popup1.content);
+		}
 		]]>
 	</fx:Script>
 
@@ -40,8 +49,12 @@ limitations under the License.
 
 				<!-- PopUp 1-->
 				<j:Label text="Click the button below to display a Modal PopUp"/>
-				<j:Button text="show popup" emphasis="primary" click="popup1.open()"/>
-				<j:PopUp id="popup1" className="somePopUpContent" modal="true"/>
+				<j:CheckBox localId="check1" text="open/close the popup: {popup1.open}" selected="{popup1.open}"/>
+				<j:PopUp id="popup1" className="somePopUpContent" modal="true"
+							open="{check1.selected}"
+							openPopUp="openPopUpHandler(event)"
+							closePopUp="closePopUpHandler(event)"
+							/>	
 			</j:Card>
 		</j:GridCell>
 		<j:GridCell desktopNumerator="1" desktopDenominator="2" tabletNumerator="1" tabletDenominator="1" phoneNumerator="1" phoneDenominator="1">
@@ -50,7 +63,7 @@ limitations under the License.
 
 				<!-- PopUp 2-->
 				<j:Label text="Click the button below to display a non modal PopUp"/>
-				<j:Button text="show popup" emphasis="primary" click="popup2.open()"/>
+				<j:Button text="show popup: {popup2.open}" emphasis="primary" click="popup2.open = !popup2.open;"/>
 				<j:PopUp id="popup2">
 					<c:FormExample label="Form example in a PopUp"/>
 				</j:PopUp>
diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css b/frameworks/projects/Jewel/src/main/resources/defaults.css
index 94cdb06..90743fa 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -3149,7 +3149,7 @@ j|PopUp {
   IBeadView: ClassReference("org.apache.royale.jewel.beads.views.PopUpView");
   IBeadModel: ClassReference("org.apache.royale.jewel.beads.models.PopUpModel");
   IBeadController: ClassReference("org.apache.royale.jewel.beads.controllers.PopUpMouseController");
-  IPopUp: ClassReference("org.apache.royale.core.StyledUIBase");
+  IPopUpContent: ClassReference("org.apache.royale.core.StyledUIBase");
 }
 
 .jewel.radiobutton {
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/PopUp.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/PopUp.as
index 279cd5b..d8e4e77 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/PopUp.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/PopUp.as
@@ -23,12 +23,12 @@ package org.apache.royale.jewel
         import org.apache.royale.core.WrappedHTMLElement;
         import org.apache.royale.html.util.addElementToWrapper;
     }
-	import org.apache.royale.core.IPopUp;
+	import org.apache.royale.core.IPopUpHost;
+	import org.apache.royale.core.IPopUpHostParent;
 	import org.apache.royale.core.StyledUIBase;
 	import org.apache.royale.core.UIBase;
 	import org.apache.royale.events.Event;
-	import org.apache.royale.core.IPopUpHost;
-	import org.apache.royale.core.IPopUpHostParent;
+	import org.apache.royale.utils.loadBeadFromValuesManager;
 
 	/**
 	 * The openPopUp event is dispatched when the we want to open the popup
@@ -41,16 +41,6 @@ package org.apache.royale.jewel
 	[Event(name="closePopUp", type="org.apache.royale.events.Event")]
 	
 	/**
-	 *  Indicates that the initialization of the list is complete.
-	 *
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10.2
-	 *  @playerversion AIR 2.6
-	 *  @productversion Royale 0.9.4
-	 */
-	[Event(name="initComplete", type="org.apache.royale.events.Event")]
-	
-	/**
 	 * The default property uses when additional MXML content appears within an element's
 	 * definition in an MXML file.
 	 */
@@ -112,25 +102,30 @@ package org.apache.royale.jewel
 		{
 			_modal = value;
 		}
+		
+		private var _open:Boolean = false;
 
+		[Bindable(event="openPopUp")]
+		[Bindable(event="closePopUp")]
 		/**
-		 * open the popup content
+		 * true, open the popup. close, close
+		 * the popup
 		 */
-		public function open():void
+		public function get open():Boolean
 		{
-			dispatchEvent(new Event("openPopUp"));
+			return _open;
 		}
-		
-		/**
-		 * close the popup content
-		 */
-		public function close():void
+		public function set open(value:Boolean):void
 		{
-			dispatchEvent(new Event("closePopUp"));
+			if(_open != value)
+			{
+				_open = value;
+				
+				_open ? dispatchEvent(new Event("openPopUp")) : dispatchEvent(new Event("closePopUp"));
+			}
 		}
 
 		private var _content:UIBase;
-
 		/**
 		 * the content to be instantiated inside the popup.
 		 * Instead of setup this property, it can be declared through
@@ -142,12 +137,16 @@ package org.apache.royale.jewel
 		}
 		public function set content(value:UIBase):void
 		{
-			_content = value;
+			if(_content != value)
+			{
+				_content = value;
+				_content.className="jewel popupcontent";
+			}
 		}
 		
 		/**
-		 * The method called when added to a parent. The PopUp class uses
-		 * this opportunity to install additional beads.
+		 *  The method called when added to a parent. The PopUp class uses
+		 *  this opportunity to install the content
 		 *  
 		 *  @langversion 3.0
 		 *  @playerversion Flash 10.2
@@ -158,7 +157,10 @@ package org.apache.royale.jewel
 		{
 			super.addedToParent();
 			
-			dispatchEvent(new Event("initComplete"));
+			if(!_content)
+			{
+				content = loadBeadFromValuesManager(UIBase, "iPopUpContent", this) as UIBase;
+			}
 		}
 
 		/**
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/PopUpMouseController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/PopUpMouseController.as
index 45c75cb..886960c 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/PopUpMouseController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/PopUpMouseController.as
@@ -23,8 +23,8 @@ package org.apache.royale.jewel.beads.controllers
 	import org.apache.royale.core.IUIBase;
 	import org.apache.royale.events.IEventDispatcher;
 	import org.apache.royale.events.MouseEvent;
-	import org.apache.royale.jewel.beads.views.PopUpView;
 	import org.apache.royale.jewel.PopUp;
+	import org.apache.royale.jewel.beads.views.PopUpView;
 	
 	/**
 	 * The PopUpMouseController class is responsible for monitoring
@@ -76,6 +76,7 @@ package org.apache.royale.jewel.beads.controllers
 		 */
 		private function openPopUpHandler(event:MouseEvent):void
 		{
+			PopUp(_strand).open = true;
             viewBead.popUpVisible = true;
 			
 			if(!PopUp(_strand).modal)
@@ -99,6 +100,7 @@ package org.apache.royale.jewel.beads.controllers
 				IEventDispatcher(viewBead.content).removeEventListener(MouseEvent.MOUSE_DOWN, handleControlMouseDown);
 				IUIBase(viewBead.popUp).removeEventListener(MouseEvent.MOUSE_DOWN, closePopUpHandler);
 			}
+			PopUp(_strand).open = false;
 			viewBead.popUpVisible = false;
 		}
 	}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/PopUpView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/PopUpView.as
index 90cbaf3..16cb1f3 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/PopUpView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/PopUpView.as
@@ -26,14 +26,11 @@ package org.apache.royale.jewel.beads.views
     import org.apache.royale.core.BeadViewBase;
     import org.apache.royale.core.IBeadView;
     import org.apache.royale.core.IChild;
-    import org.apache.royale.core.IPopUpHost;
     import org.apache.royale.core.IStrand;
-    import org.apache.royale.core.StyledUIBase;
     import org.apache.royale.core.UIBase;
-    import org.apache.royale.utils.UIUtils;
-    import org.apache.royale.utils.loadBeadFromValuesManager;
     import org.apache.royale.jewel.PopUp;
     import org.apache.royale.jewel.supportClasses.popup.PopUpContent;
+    import org.apache.royale.utils.UIUtils;
 
 	/**
 	 *  The PopUpView class is a bead for PopUp that creates the dialog
@@ -69,11 +66,6 @@ package org.apache.royale.jewel.beads.views
 		 */
 		public function get content():UIBase
 		{
-			if(!getHost().content) {
-				getHost().content = loadBeadFromValuesManager(UIBase, "iPopUp", _strand) as UIBase;
-			}
-			getHost().content.className="jewel popupcontent";
-
             return getHost().content;
 		}
 		
@@ -144,14 +136,11 @@ package org.apache.royale.jewel.beads.views
 					//create the backdrop
 					_popUp = new PopUpContent();
 					_popUp.addElement(content as IChild);
-					// _popUp.addEventListener("initComplete", handlePopUpInitComplete);
-					
 					UIUtils.addPopUp(_popUp, getHost());
 					// viewBead.popUp is StyledUIBase that fills 100% of browser window, then we display the "iPopUp content" inside
 					
 					// rq = requestAnimationFrame(prepareForPopUp); // not work in Chrome/Firefox, while works in Safari, IE11, setInterval/Timer as well doesn't work right in Firefox
 					setTimeout(prepareForPopUp,  300);
-
 					// COMPILE::JS
 					// {
 					// window.addEventListener('resize', autoResizeHandler, false);
@@ -167,7 +156,6 @@ package org.apache.royale.jewel.beads.views
 					document.body.classList.remove("viewport");
 					// window.removeEventListener('resize', autoResizeHandler, false);
 					}
-					//_popUp.removeEventListener("initComplete", handlePopUpInitComplete);
 					_popUp = null;
 				}
 			}
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_popup.sass b/frameworks/projects/Jewel/src/main/sass/components/_popup.sass
index 486a600..6d96943 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_popup.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_popup.sass
@@ -134,7 +134,7 @@ j|PopUp
     IBeadView: ClassReference("org.apache.royale.jewel.beads.views.PopUpView")
     IBeadModel: ClassReference("org.apache.royale.jewel.beads.models.PopUpModel")
     IBeadController: ClassReference("org.apache.royale.jewel.beads.controllers.PopUpMouseController")
-    IPopUp: ClassReference("org.apache.royale.core.StyledUIBase")
+    IPopUpContent: ClassReference("org.apache.royale.core.StyledUIBase")
 
 @media -royale-swf