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 bf8cc1f jewel-checkbox: add checkWidth and checkHeight properties to
allow size the check view part
bf8cc1f is described below
commit bf8cc1f96277e96ef24cfae0293fdecfee327111
Author: Carlos Rovira <[email protected]>
AuthorDate: Fri Jan 31 20:21:43 2020 +0100
jewel-checkbox: add checkWidth and checkHeight properties to allow size the
check view part
---
.../projects/Jewel/src/main/resources/defaults.css | 14 +-
.../projects/Jewel/src/main/royale/JewelClasses.as | 2 +-
.../royale/org/apache/royale/jewel/CheckBox.as | 46 +++++-
.../royale/jewel/beads/views/CheckBoxView.as | 172 +++++++++++++++++++--
.../Jewel/src/main/sass/components/_checkbox.sass | 21 +--
5 files changed, 220 insertions(+), 35 deletions(-)
diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css
b/frameworks/projects/Jewel/src/main/resources/defaults.css
index bcc09c3..83c3fd6 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -322,9 +322,6 @@ j|Card {
display: inline-flex;
margin: 0;
padding: 0;
- width: 22px;
- height: 22px;
- line-height: 22px;
opacity: 0;
}
.jewel.checkbox input + span::before {
@@ -355,16 +352,13 @@ j|Card {
}
.jewel.checkbox span {
cursor: pointer;
- margin: 0;
- vertical-align: top;
- line-height: 24px;
+ margin: auto;
}
-@media -royale-swf {
- j|CheckBox {
- IBeadView:
ClassReference("org.apache.royale.jewel.beads.views.CheckBoxView");
- }
+j|CheckBox {
+ IBeadView:
ClassReference("org.apache.royale.jewel.beads.views.CheckBoxView");
}
+
.jewel.controlbar {
background-color: transparent;
padding: 0px;
diff --git a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
index f02c488..c1aa33b 100644
--- a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
+++ b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
@@ -80,6 +80,7 @@ package
import org.apache.royale.jewel.beads.views.FormHeadingView;
FormHeadingView;
import org.apache.royale.jewel.beads.views.WizardView; WizardView;
import org.apache.royale.jewel.beads.views.ButtonBarView;
ButtonBarView;
+ import org.apache.royale.jewel.beads.views.CheckBoxView;
CheckBoxView;
COMPILE::SWF
{
@@ -89,7 +90,6 @@ package
import org.apache.royale.jewel.beads.views.SliderTrackView;
SliderTrackView;
import org.apache.royale.jewel.beads.views.RadioButtonView;
RadioButtonView;
- import org.apache.royale.jewel.beads.views.CheckBoxView;
CheckBoxView;
import org.apache.royale.jewel.beads.views.ButtonView; ButtonView;
// import org.apache.royale.jewel.beads.views.DropDownListView;
DropDownListView;
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/CheckBox.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/CheckBox.as
index 499dbd6..6b78e8a 100644
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/CheckBox.as
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/CheckBox.as
@@ -183,7 +183,7 @@ package org.apache.royale.jewel
* the org.apache.royale.core.HTMLElementWrapper#element for this
component
* added to the positioner. Is a HTMLInputElement.
*/
- protected var input:HTMLInputElement;
+ public var input:HTMLInputElement;
COMPILE::JS
/**
@@ -237,5 +237,49 @@ package org.apache.royale.jewel
_positioner.appendChild(element);
_positioner.appendChild(checkbox);
}
+
+ private var _checkWidth:Number;
+ /**
+ * Check Width
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ */
+ [Bindable("checkWidthChange")]
+ public function get checkWidth():Number
+ {
+ return _checkWidth;
+ }
+ public function set checkWidth(value:Number):void
+ {
+ if(_checkWidth != value)
+ {
+ _checkWidth = value;
+ }
+ }
+
+ private var _checkHeight:Number;
+ /**
+ * Check Height
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ */
+ [Bindable("checkHeightChange")]
+ public function get checkHeight():Number
+ {
+ return _checkHeight;
+ }
+ public function set checkHeight(value:Number):void
+ {
+ if(_checkHeight != value)
+ {
+ _checkHeight = value;
+ }
+ }
}
}
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/CheckBoxView.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/CheckBoxView.as
index 434ee1e..944d9fd 100644
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/CheckBoxView.as
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/CheckBoxView.as
@@ -18,18 +18,26 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.jewel.beads.views
{
- import flash.display.Shape;
- import flash.display.SimpleButton;
- import flash.display.Sprite;
- import flash.text.TextFieldAutoSize;
- import flash.text.TextFieldType;
-
+ COMPILE::SWF
+ {
+ import flash.display.Shape;
+ import flash.display.SimpleButton;
+ import flash.display.Sprite;
+ import flash.text.TextFieldAutoSize;
+ import flash.text.TextFieldType;
+
+ import org.apache.royale.core.CSSTextField;
+ }
+ COMPILE::JS
+ {
+ import org.apache.royale.events.IEventDispatcher;
+ }
import org.apache.royale.core.BeadViewBase;
- import org.apache.royale.core.CSSTextField;
- import org.apache.royale.core.IBeadView;
- import org.apache.royale.core.IStrand;
- import org.apache.royale.core.IToggleButtonModel;
- import org.apache.royale.events.Event;
+ import org.apache.royale.core.IStrand;
+ import org.apache.royale.core.UIBase;
+ import org.apache.royale.jewel.CheckBox;
+ import org.apache.royale.core.IUIBase;
+ // import org.apache.royale.utils.css.addDynamicSelector;
/**
* The CheckBoxView class is the default view for SWF platform
@@ -48,8 +56,10 @@ package org.apache.royale.jewel.beads.views
* @playerversion AIR 2.6
* @productversion Royale 0.9.4
*/
- public class CheckBoxView extends BeadViewBase implements IBeadView
+ public class CheckBoxView extends BeadViewBase
{
+ public static const CHECK_DEFAULT_SIZE:Number = 22;
+
/**
* Constructor.
*
@@ -60,6 +70,8 @@ package org.apache.royale.jewel.beads.views
*/
public function CheckBoxView()
{
+ COMPILE::SWF
+ {
sprites = [ upSprite = new Sprite(),
downSprite = new Sprite(),
overSprite = new Sprite(),
@@ -78,15 +90,17 @@ package org.apache.royale.jewel.beads.views
s.addChild(icon);
s.addChild(tf);
}
+ }
}
+ COMPILE::SWF
+ {
private var upSprite:Sprite;
private var downSprite:Sprite;
private var overSprite:Sprite;
private var upAndSelectedSprite:Sprite;
private var downAndSelectedSprite:Sprite;
private var overAndSelectedSprite:Sprite;
-
private var sprites:Array;
private var _toggleButtonModel:IToggleButtonModel;
@@ -96,7 +110,15 @@ package org.apache.royale.jewel.beads.views
{
return _toggleButtonModel;
}
+ }
+ COMPILE::JS
+ /**
+ * the org.apache.royale.core.HTMLElementWrapper#element for this
component
+ * added to the positioner. Is a HTMLInputElement.
+ */
+ private var input:HTMLInputElement;
+
/**
* @copy org.apache.royale.core.IBead#strand
*
@@ -108,7 +130,21 @@ package org.apache.royale.jewel.beads.views
override public function set strand(value:IStrand):void
{
super.strand = value;
+
+ COMPILE::JS
+ {
+
IEventDispatcher(value).addEventListener("widthChanged",sizeChangeHandler);
+
IEventDispatcher(value).addEventListener("heightChanged",sizeChangeHandler);
+
IEventDispatcher(value).addEventListener("sizeChanged",sizeChangeHandler);
+
+ input = (_strand as CheckBox).input;
+
+ // always run size change since there are no size
change events
+ sizeChangeHandler(null);
+ }
+ COMPILE::SWF
+ {
_toggleButtonModel =
value.getBeadByType(IToggleButtonModel) as IToggleButtonModel;
_toggleButtonModel.addEventListener("textChange",
textChangeHandler);
_toggleButtonModel.addEventListener("htmlChange",
htmlChangeHandler);
@@ -137,6 +173,87 @@ package org.apache.royale.jewel.beads.views
text = toggleButtonModel.text;
if (toggleButtonModel.html !== null)
html = toggleButtonModel.html;
+ }
+ }
+
+ public function addDynamicSelector(selector:String,
rule:String):void
+ {
+ COMPILE::JS
+ {
+ var selectorString:String = selector + ' { ' +
rule + ' }'
+ var element:HTMLStyleElement =
document.getElementById("royale_dynamic_css") as HTMLStyleElement;
+ if(element)
+ {
+ var sheet:CSSStyleSheet = element.sheet
as CSSStyleSheet;
+ sheet.insertRule(selectorString);
+ }
+ else
+ {
+ var style:HTMLStyleElement =
document.createElement('style') as HTMLStyleElement;
+ style.type = 'text/css';
+ style.id = "royale_dynamic_css";
+ style.innerHTML = selectorString;
+
document.getElementsByTagName('head')[0].appendChild(style);
+ }
+ }
+ }
+
+ /**
+ * @private
+ * @royaleignorecoercion org.apache.royale.core.UIBase
+ */
+ COMPILE::JS
+ private function sizeChangeHandler(event:Event) : void
+ {
+ // first reads
+ var widthToContent:Boolean = (_strand as
UIBase).isWidthSizedToContent();
+ // trace("widthToContent:" + widthToContent);
+
+ var checkbox:CheckBox = (_strand as CheckBox);
+ // var inputWidth:String = input.style.width + "px";
+ // var inputHeight:String = input.style.height + "px";
+
+ var ruleName:String;
+ var beforeSelector:String = "";
+ if(checkbox.checkWidth || checkbox.checkHeight) {
+ ruleName = "chkb" + ((new Date()).getTime());
+ // addDynamicSelector(".jewel.checkbox." +
ruleName, "border: 1px solid red;");
+ // addDynamicSelector(".jewel.checkbox",
"border: 1px solid red;");
+ checkbox.className = ruleName;
+ }
+
+ if(checkbox.checkWidth) {
+ input.style.width = checkbox.checkWidth + "px";
+ beforeSelector += "width: "+
checkbox.checkWidth +"px;";
+ }
+ else {
+ input.style.width = CHECK_DEFAULT_SIZE + "px";
+ beforeSelector += "width: "+ CHECK_DEFAULT_SIZE
+"px;";
+ }
+
+ if(checkbox.checkHeight) {
+ input.style.height = checkbox.checkHeight +
"px";
+ beforeSelector += "height: "+
checkbox.checkHeight +"px;";
+ }
+ else {
+ input.style.height = CHECK_DEFAULT_SIZE + "px";
+ beforeSelector += "height: "+
CHECK_DEFAULT_SIZE +"px;";
+ }
+
+ if(checkbox.checkWidth || checkbox.checkHeight) {
+ addDynamicSelector(".jewel.checkbox." +
ruleName + " input+span::before" , beforeSelector);
+ addDynamicSelector(".jewel.checkbox." +
ruleName + " input+span::after" , beforeSelector);
+ }
+ // var strandWidth:Number;
+ // if (!widthToContent)
+ // {
+ // strandWidth = (_strand as UIBase).width;
+ // }
+
+ // // input.x = 0;
+ // // input.y = 0;
+ // if (!widthToContent)
+ // input.width = strandWidth - spinner.width - 2;
}
/**
@@ -149,8 +266,15 @@ package org.apache.royale.jewel.beads.views
*/
public function get text():String
{
+ COMPILE::JS
+ {
+ return "";
+ }
+ COMPILE::SWF
+ {
var tf:CSSTextField =
upSprite.getChildByName('textField') as CSSTextField;
return tf.text;
+ }
}
/**
@@ -158,6 +282,8 @@ package org.apache.royale.jewel.beads.views
*/
public function set text(value:String):void
{
+ COMPILE::SWF
+ {
for each( var s:Sprite in sprites )
{
var tf:CSSTextField =
s.getChildByName('textField') as CSSTextField;
@@ -165,6 +291,7 @@ package org.apache.royale.jewel.beads.views
}
layoutControl();
+ }
}
/**
@@ -177,8 +304,15 @@ package org.apache.royale.jewel.beads.views
*/
public function get html():String
{
+ COMPILE::JS
+ {
+ return "";
+ }
+ COMPILE::SWF
+ {
var tf:CSSTextField =
upSprite.getChildByName('textField') as CSSTextField;
return tf.htmlText;
+ }
}
/**
@@ -186,6 +320,8 @@ package org.apache.royale.jewel.beads.views
*/
public function set html(value:String):void
{
+ COMPILE::SWF
+ {
for each(var s:Sprite in sprites)
{
var tf:CSSTextField =
s.getChildByName('textField') as CSSTextField;
@@ -193,13 +329,16 @@ package org.apache.royale.jewel.beads.views
}
layoutControl();
+ }
}
+ COMPILE::SWF
private function textChangeHandler(event:Event):void
{
text = toggleButtonModel.text;
}
+ COMPILE::SWF
private function htmlChangeHandler(event:Event):void
{
html = toggleButtonModel.html;
@@ -227,6 +366,8 @@ package org.apache.royale.jewel.beads.views
{
_selected = value;
+ COMPILE::SWF
+ {
layoutControl();
if( value ) {
@@ -239,8 +380,10 @@ package org.apache.royale.jewel.beads.views
SimpleButton(_strand).downState = downSprite;
SimpleButton(_strand).overState = overSprite;
}
+ }
}
+ COMPILE::SWF
private function selectedChangeHandler(event:Event):void
{
selected = toggleButtonModel.selected;
@@ -254,6 +397,7 @@ package org.apache.royale.jewel.beads.views
* @playerversion AIR 2.6
* @productversion Royale 0.9.4
*/
+ COMPILE::SWF
protected function layoutControl() : void
{
for each(var s:Sprite in sprites)
@@ -271,7 +415,6 @@ package org.apache.royale.jewel.beads.views
tf.x = icon.x + icon.width + 1;
tf.y = (mh - tf.height)/2;
}
-
}
/**
@@ -282,6 +425,7 @@ package org.apache.royale.jewel.beads.views
* @playerversion AIR 2.6
* @productversion Royale 0.9.4
*/
+ COMPILE::SWF
protected function drawCheckBox(icon:Shape) : void
{
icon.graphics.clear();
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_checkbox.sass
b/frameworks/projects/Jewel/src/main/sass/components/_checkbox.sass
index 8c24493..d04762e 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_checkbox.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_checkbox.sass
@@ -42,10 +42,10 @@ $checkbox-button-yoffset: 0px
margin: 0
padding: 0
- width: $checkbox-button-size
- height: $checkbox-button-size
+ // width: $checkbox-button-size
+ // height: $checkbox-button-size
- line-height: $checkbox-button-size
+ // line-height: $checkbox-button-size
opacity: 0
+ span::before
@@ -84,14 +84,17 @@ $checkbox-button-yoffset: 0px
span
cursor: pointer
- margin: 0
- vertical-align: top
+ margin: auto
+ // vertical-align: top
+
+ // line-height: $checkbox-button-size + 2
- line-height: $checkbox-button-size + 2
+j|CheckBox
+ IBeadView:
ClassReference("org.apache.royale.jewel.beads.views.CheckBoxView")
-@media -royale-swf
- j|CheckBox
+// @media -royale-swf
+ // j|CheckBox
// --- IBeadModel:
ClassReference("org.apache.royale.html.beads.models.ToggleButtonModel")
- IBeadView:
ClassReference("org.apache.royale.jewel.beads.views.CheckBoxView")
+ // IBeadView:
ClassReference("org.apache.royale.jewel.beads.views.CheckBoxView")
//font-size: 11px
//font-family: Arial