You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by gr...@apache.org on 2020/06/10 07:58:55 UTC
[royale-asjs] 03/03: Improved emulation of PopUpMenuButton. Support
for 'explicit' label assignment as per Flex. Added support for certain
dataProvider changes. Still more to do here, I think.
This is an automated email from the ASF dual-hosted git repository.
gregdove pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit 368c6fe91b6847c50c2331f8b4810a201eefcd5d
Author: greg-dove <gr...@gmail.com>
AuthorDate: Wed Jun 10 19:07:44 2020 +1200
Improved emulation of PopUpMenuButton. Support for 'explicit' label assignment as per Flex. Added support for certain dataProvider changes. Still more to do here, I think.
---
.../src/main/royale/mx/controls/PopUpMenuButton.as | 57 ++++++++++++++++++++--
1 file changed, 53 insertions(+), 4 deletions(-)
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/PopUpMenuButton.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/PopUpMenuButton.as
index 4df49cc..59639a4 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/PopUpMenuButton.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/PopUpMenuButton.as
@@ -203,6 +203,43 @@ public class PopUpMenuButton extends PopUpButton
//invalidateProperties();
}
+
+
+ //--------------------------------------------------------------------------
+ // label
+ //--------------------------------------------------------------------------
+
+ /**
+ * @private
+ * Storage for the label property.
+ */
+ private var _label:String = "";
+ /**
+ * @private
+ */
+ private var labelSet:Boolean = false;
+
+ [Inspectable(category="General", defaultValue="")]
+
+ /**
+ * @private
+ */
+ override public function set label(value:String):void
+ {
+ // labelSet is different from labelChanged as it is never unset.
+ labelSet = true;
+ _label = value;
+ setLabel();
+ }
+
+ override public function get label():String{
+ if (labelSet) return _label
+ var val:String = super.label;
+ if (val) {
+ val = val.substr(0, val.lastIndexOf(downArrowString)).replace(" "," ");
+ }
+ return val;
+ }
//--------------------------------------------------------------------------
// labelField
@@ -307,7 +344,11 @@ public class PopUpMenuButton extends PopUpButton
/*if (labelSet)
super.label = _label;
else*/
- super.label = popUpMenu.itemToLabel(event.item).replace(" ", " ") + downArrowString;
+ // super.label = popUpMenu.itemToLabel(event.item).replace(" ", " ") + downArrowString;
+
+ var labelBase:String = labelSet ? _label || '' : popUpMenu.itemToLabel(event.item);
+ super.label = labelBase.replace(" ", " ") + downArrowString
+
//setSafeIcon(popUpMenu.itemToIcon(event.item));
menuEvent.menu = popUpMenu;
menuEvent.menu.selectedIndex = menuEvent.index =
@@ -335,15 +376,23 @@ public class PopUpMenuButton extends PopUpButton
if (dataProvider != null)
{
- getPopUp();
+ if (popUpMenu) popUpMenu.dataProvider = dataProvider;
+ else getPopUp();
if ((popUpMenu.dataProvider as ICollectionView).length > 0)
{
var cursor:IViewCursor = (popUpMenu.dataProvider as ICollectionView).createCursor();
var value:Object = cursor.current;
- lbl = popUpMenu.itemToLabel(value).replace(" ", " ") + lbl;
+ if (labelSet) lbl = _label ? _label + lbl : lbl;
+ else lbl = popUpMenu.itemToLabel(value) + lbl;
+ }
+ } else {
+ if (popUpMenu) {
+ close();
+ popUpMenu = null; //tbc
}
+ if (labelSet) lbl = _label ? _label + lbl : lbl;
}
- label = lbl;
+ super.label = lbl.replace(" ", " ");
}
}