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/03/04 16:49:44 UTC
[royale-asjs] branch develop updated: jewel-prompt-beads: update
all prompt beads to support changes at runtime and data binding
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 10359a1 jewel-prompt-beads: update all prompt beads to support changes at runtime and data binding
10359a1 is described below
commit 10359a18bfd1503692e3bc0bb50413ba4ce3c2f7
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Wed Mar 4 17:49:34 2020 +0100
jewel-prompt-beads: update all prompt beads to support changes at runtime and data binding
---
.../beads/controls/combobox/ComboBoxTextPrompt.as | 53 +++++----------------
.../controls/datefield/DateFieldTextPrompt.as | 55 +++++-----------------
.../dropdownlist/DropDownListTextPrompt.as | 46 +++++-------------
.../jewel/beads/controls/textinput/TextPrompt.as | 50 ++++++++++++++------
.../royale/jewel/beads/views/ComboBoxView.as | 7 ++-
5 files changed, 76 insertions(+), 135 deletions(-)
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/ComboBoxTextPrompt.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/ComboBoxTextPrompt.as
index 2e7cc59..bb6cb94 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/ComboBoxTextPrompt.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/ComboBoxTextPrompt.as
@@ -22,9 +22,6 @@ package org.apache.royale.jewel.beads.controls.combobox
{
import flash.utils.setTimeout;
}
- import org.apache.royale.core.IStrand;
- import org.apache.royale.events.Event;
- import org.apache.royale.events.IEventDispatcher;
import org.apache.royale.jewel.beads.controls.combobox.IComboBoxView;
import org.apache.royale.jewel.beads.controls.textinput.TextPrompt;
@@ -51,46 +48,20 @@ package org.apache.royale.jewel.beads.controls.combobox
public function ComboBoxTextPrompt()
{
}
-
- private var _strand:IStrand;
-
- /**
- * @copy org.apache.royale.core.IBead#strand
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion Royale 0.9.4
- * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
- */
- override public function set strand(value:IStrand):void
- {
- _strand = value;
- IEventDispatcher(_strand).addEventListener("beadsAdded", addPrompt);
- }
/**
- * add prompt when beads are added and we can access the view to retrieve the textinput
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion Royale 0.9.4
- * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
- * @royaleignorecoercion org.apache.royale.jewel.beads.controls.combobox.IComboBoxView
- * @royaleignorecoercion HTMLInputElement
- */
- private function addPrompt(event:Event):void
- {
- IEventDispatcher(_strand).removeEventListener("beadsAdded", addPrompt);
-
- var viewBead:IComboBoxView = _strand.getBeadByType(IComboBoxView) as IComboBoxView;
-
- COMPILE::JS
- {
- var e:HTMLInputElement = viewBead.textinput.element as HTMLInputElement;
- e.placeholder = prompt;
- }
+ * @copy org.apache.royale.jewel.beads.controls.textinput.TextPrompt#updatePromptText()
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ */
+ COMPILE::JS
+ override protected function updatePromptText():void
+ {
+ var e:HTMLInputElement = (host.view as IComboBoxView).textinput.element as HTMLInputElement;
+ e.placeholder = prompt;
}
}
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/DateFieldTextPrompt.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/DateFieldTextPrompt.as
index 82fb55b..d2c4212 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/DateFieldTextPrompt.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/DateFieldTextPrompt.as
@@ -22,11 +22,8 @@ package org.apache.royale.jewel.beads.controls.datefield
{
import flash.utils.setTimeout;
}
- import org.apache.royale.core.IStrand;
- import org.apache.royale.events.Event;
- import org.apache.royale.events.IEventDispatcher;
- import org.apache.royale.jewel.beads.views.DateFieldView;
import org.apache.royale.jewel.beads.controls.textinput.TextPrompt;
+ import org.apache.royale.jewel.beads.views.DateFieldView;
/**
* The DateFieldTextPrompt class is a specialty bead that can be used with
@@ -51,46 +48,20 @@ package org.apache.royale.jewel.beads.controls.datefield
public function DateFieldTextPrompt()
{
}
-
- private var _strand:IStrand;
-
- /**
- * @copy org.apache.royale.core.IBead#strand
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion Royale 0.9.4
- * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
- */
- override public function set strand(value:IStrand):void
- {
- _strand = value;
- IEventDispatcher(_strand).addEventListener("beadsAdded", addPrompt);
- }
/**
- * add prompt when beads are added and we can access the view to retrieve the textinput
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion Royale 0.9.4
- * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
- * @royaleignorecoercion org.apache.royale.jewel.beads.controls.combobox.IComboBoxView
- * @royaleignorecoercion HTMLInputElement
- */
- private function addPrompt(event:Event):void
- {
- IEventDispatcher(_strand).removeEventListener("beadsAdded", addPrompt);
-
- var viewBead:DateFieldView = _strand.getBeadByType(DateFieldView) as DateFieldView;
-
- COMPILE::JS
- {
- var e:HTMLInputElement = viewBead.textInput.element as HTMLInputElement;
- e.placeholder = prompt;
- }
+ * @copy org.apache.royale.jewel.beads.controls.textinput.TextPrompt#updatePromptText()
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ */
+ COMPILE::JS
+ override protected function updatePromptText():void
+ {
+ var e:HTMLInputElement = (host.view as DateFieldView).textInput.element as HTMLInputElement;
+ e.placeholder = prompt;
}
}
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/dropdownlist/DropDownListTextPrompt.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/dropdownlist/DropDownListTextPrompt.as
index 8533278..e2b8cb3 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/dropdownlist/DropDownListTextPrompt.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/dropdownlist/DropDownListTextPrompt.as
@@ -18,9 +18,6 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.jewel.beads.controls.dropdownlist
{
- import org.apache.royale.core.IStrand;
- import org.apache.royale.events.Event;
- import org.apache.royale.events.IEventDispatcher;
import org.apache.royale.jewel.beads.controls.textinput.TextPrompt;
import org.apache.royale.jewel.beads.views.DropDownListView;
@@ -46,40 +43,19 @@ package org.apache.royale.jewel.beads.controls.dropdownlist
public function DropDownListTextPrompt()
{
}
-
- private var _strand:IStrand;
-
- /**
- * @copy org.apache.royale.core.IBead#strand
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion Royale 0.9.4
- * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
- */
- override public function set strand(value:IStrand):void
- {
- _strand = value;
- IEventDispatcher(_strand).addEventListener("beadsAdded", addPrompt);
- }
/**
- * add prompt when beads are added and we can access the view to retrieve the textinput
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion Royale 0.9.4
- * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
- * @royaleignorecoercion org.apache.royale.jewel.beads.controls.dropdownlist.DropDownListView
- */
- private function addPrompt(event:Event):void
- {
- IEventDispatcher(_strand).removeEventListener("beadsAdded", addPrompt);
-
- var viewBead:DropDownListView = _strand.getBeadByType(DropDownListView) as DropDownListView;
- viewBead.prompt = prompt;
+ * @copy org.apache.royale.jewel.beads.controls.textinput.TextPrompt#updatePromptText()
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ */
+ COMPILE::JS
+ override protected function updatePromptText():void
+ {
+ (host.view as DropDownListView).prompt = prompt;
}
}
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/textinput/TextPrompt.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/textinput/TextPrompt.as
index 3c92894..41fb366 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/textinput/TextPrompt.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/textinput/TextPrompt.as
@@ -21,6 +21,7 @@ package org.apache.royale.jewel.beads.controls.textinput
COMPILE::SWF
{
import flash.text.TextFieldType;
+
import org.apache.royale.core.CSSTextField;
}
@@ -28,7 +29,6 @@ package org.apache.royale.jewel.beads.controls.textinput
import org.apache.royale.core.IStrand;
import org.apache.royale.core.UIBase;
import org.apache.royale.events.Event;
- import org.apache.royale.events.IEventDispatcher;
/**
* The TextPrompt class is a specialty bead that can be used with
@@ -55,7 +55,6 @@ package org.apache.royale.jewel.beads.controls.textinput
}
private var _prompt:String;
-
/**
* The string to use as the placeholder prompt.
*
@@ -64,16 +63,25 @@ package org.apache.royale.jewel.beads.controls.textinput
* @playerversion AIR 2.6
* @productversion Royale 0.9.4
*/
+ [Bindable("promptChanged")]
public function get prompt():String
{
return _prompt;
}
public function set prompt(value:String):void
{
- _prompt = value;
+ if(value != _prompt)
+ {
+ _prompt = value;
+ if(host)
+ {
+ updatePromptText();
+ host.dispatchEvent(new Event("promptChanged"));
+ }
+ }
}
- private var _strand:IStrand;
+ protected var host:UIBase;
/**
* @copy org.apache.royale.core.IBead#strand
@@ -87,12 +95,12 @@ package org.apache.royale.jewel.beads.controls.textinput
*/
public function set strand(value:IStrand):void
{
- _strand = value;
+ host = value as UIBase;
COMPILE::SWF
{
// listen for changes in text to hide or show the prompt
- var model:Object = UIBase(_strand).model;
+ var model:Object = host.model;
if (!model.hasOwnProperty("text")) {
throw new Error("Model requires a text property when used with TextPrompt");
}
@@ -113,11 +121,24 @@ package org.apache.royale.jewel.beads.controls.textinput
}
COMPILE::JS
{
- var host:UIBase = value as UIBase;
- var e:HTMLInputElement = host.element as HTMLInputElement;
- e.placeholder = prompt;
+ updatePromptText();
}
}
+
+ /**
+ * Update the internal element placeholder with the prompt property
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ */
+ COMPILE::JS
+ protected function updatePromptText():void
+ {
+ var e:HTMLInputElement = host.element as HTMLInputElement;
+ e.placeholder = prompt;
+ }
COMPILE::SWF
private var promptField:CSSTextField
@@ -133,21 +154,20 @@ package org.apache.royale.jewel.beads.controls.textinput
{
// see what the model currently has to determine if the prompt should be
// displayed or not.
- var model:Object = UIBase(_strand).model;
+ var model:Object = host.model;
if (model.text != null && model.text.length > 0 ) {
- if (promptAdded) UIBase(_strand).removeChild(promptField);
+ if (promptAdded) host.removeChild(promptField);
promptAdded = false;
}
else {
- if (!promptAdded) UIBase(_strand).addChild(promptField);
+ if (!promptAdded) host.addChild(promptField);
promptField.text = prompt;
promptAdded = true;
promptField.x = 2;
promptField.y = 2;
- promptField.width = UIBase(_strand).width-5;
- promptField.height = UIBase(_strand).height-4;
-
+ promptField.width = host.width-5;
+ promptField.height = host.height-4;
}
}
}
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 c547abb..7881abc 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
@@ -152,8 +152,11 @@ package org.apache.royale.jewel.beads.views
//this avoids the need to redispatch new event clones at the component level in the controller
IJewelSelectionModel(model).dispatcher = IEventDispatcher(value);
}
- model.addEventListener("selectionChanged", handleItemChange);
- model.addEventListener("dataProviderChanged", itemChangeAction);
+ if(model)
+ {
+ model.addEventListener("selectionChanged", handleItemChange);
+ model.addEventListener("dataProviderChanged", itemChangeAction);
+ }
listenOnStrand("sizeChanged", handleSizeChange);
}