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/04/16 14:44:23 UTC
[royale-asjs] branch develop updated: jewel-tabbar: improve
renderer for tabbar and make INavigationRenderer extend ITextItemRenderer
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 934bb5d jewel-tabbar: improve renderer for tabbar and make INavigationRenderer extend ITextItemRenderer
934bb5d is described below
commit 934bb5d4388ac8acb32cd8434bd51469023b6abf
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Tue Apr 16 16:44:17 2019 +0200
jewel-tabbar: improve renderer for tabbar and make INavigationRenderer extend ITextItemRenderer
---
.../itemRenderers/NavigationLinkItemRenderer.as | 38 +++--
.../itemRenderers/TabBarButtonItemRenderer.as | 153 ++++++++++++++-------
.../jewel/supportClasses/INavigationRenderer.as | 15 +-
3 files changed, 140 insertions(+), 66 deletions(-)
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/NavigationLinkItemRenderer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/NavigationLinkItemRenderer.as
index 2d0e86d..af3a196 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/NavigationLinkItemRenderer.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/NavigationLinkItemRenderer.as
@@ -18,18 +18,16 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.jewel.itemRenderers
{
- import org.apache.royale.core.StyledMXMLItemRenderer;
- import org.apache.royale.jewel.supportClasses.INavigationRenderer;
- import org.apache.royale.jewel.supportClasses.util.getLabelFromData;
- import org.apache.royale.events.Event;
-
COMPILE::JS
{
- import org.apache.royale.core.WrappedHTMLElement;
- import org.apache.royale.html.util.addElementToWrapper;
+ import org.apache.royale.core.WrappedHTMLElement;
+ import org.apache.royale.html.util.addElementToWrapper;
}
+ import org.apache.royale.core.StyledMXMLItemRenderer;
+ import org.apache.royale.events.Event;
+ import org.apache.royale.jewel.beads.controls.TextAlign;
+ import org.apache.royale.jewel.supportClasses.INavigationRenderer;
-
/**
* The NavigationLinkItemRenderer defines the basic Item Renderer for a Jewel
* Navigation List Component. It handles Objects with "label" and "href" data.
@@ -61,6 +59,30 @@ package org.apache.royale.jewel.itemRenderers
{
addClass("mxmlContent");
}
+
+ textAlign = new TextAlign();
+ textAlign.align = TextAlign.CENTER;
+ addBead(textAlign);
+ }
+
+ private var textAlign:TextAlign;
+
+ /**
+ * How text align in the itemRenderer instance.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.4
+ */
+ public function get align():String
+ {
+ return textAlign.align;
+ }
+
+ public function set align(value:String):void
+ {
+ textAlign.align = value;
}
private var _href:String = "#";
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TabBarButtonItemRenderer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TabBarButtonItemRenderer.as
index 68fb39c..648d7dc 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TabBarButtonItemRenderer.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TabBarButtonItemRenderer.as
@@ -18,17 +18,16 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.jewel.itemRenderers
{
- import org.apache.royale.core.StyledMXMLItemRenderer;
- import org.apache.royale.jewel.supportClasses.INavigationRenderer;
- import org.apache.royale.jewel.supportClasses.util.getLabelFromData;
- import org.apache.royale.events.Event;
-
COMPILE::JS
{
- import org.apache.royale.core.WrappedHTMLElement;
- import org.apache.royale.html.util.addElementToWrapper;
+ import org.apache.royale.core.WrappedHTMLElement;
+ import org.apache.royale.html.util.addElementToWrapper;
}
-
+ import org.apache.royale.core.StyledMXMLItemRenderer;
+ import org.apache.royale.events.Event;
+ import org.apache.royale.jewel.supportClasses.INavigationRenderer;
+ import org.apache.royale.jewel.beads.controls.TextAlign;
+ import org.apache.royale.jewel.supportClasses.util.getLabelFromData;
/**
* The TabBarButtonItemRenderer defines the basic Item Renderer for a Jewel
@@ -56,6 +55,15 @@ package org.apache.royale.jewel.itemRenderers
typeNames = "jewel tabbarbutton";
addClass("selectable");
+
+ if(MXMLDescriptor != null)
+ {
+ addClass("mxmlContent");
+ }
+
+ textAlign = new TextAlign();
+ textAlign.align = TextAlign.CENTER;
+ addBead(textAlign);
}
private var _href:String = "#";
@@ -78,6 +86,7 @@ package org.apache.royale.jewel.itemRenderers
private var _text:String = "";
+ [Bindable(event="textChange")]
/**
* The text of the navigation link
*
@@ -93,11 +102,38 @@ package org.apache.royale.jewel.itemRenderers
public function set text(value:String):void
{
- _text = value;
+ if(value != _text) {
+ _text = value;
+ COMPILE::JS
+ {
+ if(MXMLDescriptor == null)
+ {
+ element.innerHTML = _text;
+ }
+ }
+ dispatchEvent(new Event('textChange'));
+ }
}
- COMPILE::JS
- private var textNode:Text;
+ private var textAlign:TextAlign;
+
+ /**
+ * How text align in the itemRenderer instance.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.4
+ */
+ public function get align():String
+ {
+ return textAlign.align;
+ }
+
+ public function set align(value:String):void
+ {
+ textAlign.align = value;
+ }
/**
* Sets the data value and uses the String version of the data for display.
@@ -111,60 +147,85 @@ package org.apache.royale.jewel.itemRenderers
*/
override public function set data(value:Object):void
{
- super.data = value;
-
- if(value == null) return;
-
- if (labelField)
- {
- text = String(value[labelField]);
- }
- else if(value.label !== undefined)
- {
- text = String(value.label);
- }
- else
- {
- text = String(value);
- }
- // text = getLabelFromData(this, value);
+ text = getLabelFromData(this, value);
+ super.data = value;
if(value.href !== undefined)
{
href = String(value.href);
}
- COMPILE::JS
- {
- if(textNode != null)
- {
- textNode.nodeValue = text;
- (element as HTMLElement).setAttribute('href', href);
- }
- }
-
- dispatchEvent(new Event("dataChange"));
+ // COMPILE::JS
+ // {
+ // if(textNode != null)
+ // {
+ // textNode.nodeValue = text;
+ // (element as HTMLElement).setAttribute('href', href);
+ // }
+ // }
}
/**
* @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement
- * @royaleignorecoercion Text
+ * @royaleignorecoercion HTMLSpanElement
*/
COMPILE::JS
override protected function createElement():WrappedHTMLElement
{
- var a:WrappedHTMLElement = addElementToWrapper(this, 'a');
- a.setAttribute('href', href);
+ var span:HTMLSpanElement = addElementToWrapper(this, 'span') as HTMLSpanElement;
+ span.className = "content";
+ positioner = document.createElement('button') as WrappedHTMLElement;
+ //a.setAttribute('href', href);
- if(MXMLDescriptor == null)
- {
- textNode = document.createTextNode('') as Text;
- a.appendChild(textNode);
- }
+ // if(MXMLDescriptor == null)
+ // {
+ // textNode = document.createTextNode('') as Text;
+ // a.appendChild(textNode);
+ // }
return element;
}
+ COMPILE::JS
+ private var _positioner:WrappedHTMLElement;
+
+ COMPILE::JS
+ override public function get positioner():WrappedHTMLElement
+ {
+ return _positioner;
+ }
+
+ COMPILE::JS
+ override public function set positioner(value:WrappedHTMLElement):void
+ {
+ _positioner = value;
+ _positioner.royale_wrapper = this;
+ _positioner.appendChild(element);
+ }
+
+ private var _selectable:Boolean = true;
+ /**
+ * <code>true</code> if the item renderer is can be selected
+ * false otherwise. Use to configure a renderer to be non
+ * selectable.
+ *
+ * Defaults to true
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.4
+ */
+ override public function get selectable():Boolean
+ {
+ return _selectable;
+ }
+ override public function set selectable(value:Boolean):void
+ {
+ _selectable = value;
+ toggleClass("selectable", _selectable);
+ }
+
/**
* @private
*
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/INavigationRenderer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/INavigationRenderer.as
index 793b633..e0da1e6 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/INavigationRenderer.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/INavigationRenderer.as
@@ -18,6 +18,8 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.jewel.supportClasses
{
+ import org.apache.royale.jewel.beads.itemRenderers.ITextItemRenderer;
+
/**
* INavigationRenderer is the interface that all item renderers used with
* Navigation List component must implement.
@@ -30,7 +32,7 @@ package org.apache.royale.jewel.supportClasses
* @playerversion AIR 2.6
* @productversion Royale 0.9.4
*/
- public interface INavigationRenderer
+ public interface INavigationRenderer extends ITextItemRenderer
{
/**
* the navigation link url
@@ -42,16 +44,5 @@ package org.apache.royale.jewel.supportClasses
*/
function get href():String;
function set href(value:String):void;
-
- /**
- * The text of the navigation link
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion Royale 0.9.4
- */
- function get text():String;
- function set text(value:String):void;
}
}