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