You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2014/06/09 22:46:42 UTC

git commit: [flex-asjs] [refs/heads/develop] - Label now supports top and bottom padding, plus the width adjusts based on the text. Buttons have better sizing with respect to padding.

Repository: flex-asjs
Updated Branches:
  refs/heads/develop c4a6440b9 -> d2f9ce253


Label now supports top and bottom padding, plus the width adjusts based on the text. Buttons have better sizing with respect to padding.


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/d2f9ce25
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/d2f9ce25
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/d2f9ce25

Branch: refs/heads/develop
Commit: d2f9ce2532d4d28352ec5688bdc0a1a2b294e0ce
Parents: c4a6440
Author: Peter Ent <pe...@apache.org>
Authored: Mon Jun 9 16:46:25 2014 -0400
Committer: Peter Ent <pe...@apache.org>
Committed: Mon Jun 9 16:46:25 2014 -0400

----------------------------------------------------------------------
 frameworks/as/projects/FlexJSUI/defaults.css    |   2 -
 .../src/org/apache/flex/core/CSSTextField.as    |  13 +-
 .../src/org/apache/flex/core/UIButtonBase.as    | 146 +++++++++++++++++++
 .../FlexJSUI/src/org/apache/flex/html/Button.as |  51 ++++++-
 .../FlexJSUI/src/org/apache/flex/html/Label.as  |  25 ++++
 .../apache/flex/html/beads/CSSTextButtonView.as |  22 ++-
 .../org/apache/flex/html/beads/TextFieldView.as |   1 +
 7 files changed, 246 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d2f9ce25/frameworks/as/projects/FlexJSUI/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/defaults.css b/frameworks/as/projects/FlexJSUI/defaults.css
index 64a8ade..fa54d19 100644
--- a/frameworks/as/projects/FlexJSUI/defaults.css
+++ b/frameworks/as/projects/FlexJSUI/defaults.css
@@ -213,8 +213,6 @@ Image
 
 Label
 {
-	width: 95;
-	height: 18;
     IBeadModel: ClassReference("org.apache.flex.html.beads.models.TextModel");
     IBeadView: ClassReference("org.apache.flex.html.beads.TextFieldView");
 	iMeasurementBead: ClassReference("org.apache.flex.html.beads.TextFieldLabelMeasurementBead");

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d2f9ce25/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/CSSTextField.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/CSSTextField.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/CSSTextField.as
index dd74387..bc8cecf 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/CSSTextField.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/CSSTextField.as
@@ -75,11 +75,14 @@ package org.apache.flex.core
 			tf.bold = ValuesManager.valuesImpl.getValue(sp, "fontWeight") == "bold";
 			tf.color = ValuesManager.valuesImpl.getValue(sp, "color");
 			var padding:Object = ValuesManager.valuesImpl.getValue(sp, "padding");
-			if (padding != null)
-			{
-				tf.leftMargin = padding;
-				tf.rightMargin = padding;
-			}
+			if (padding == null) padding = 0;
+			var paddingLeft:Object = ValuesManager.valuesImpl.getValue(sp,"padding-left");
+			if (paddingLeft == null) paddingLeft = padding;
+			var paddingRight:Object = ValuesManager.valuesImpl.getValue(sp,"padding-right");
+			if (paddingRight == null) paddingRight = padding;
+			tf.leftMargin = paddingLeft;
+			tf.rightMargin = paddingRight;
+
 			defaultTextFormat = tf;
 			super.text = value;
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d2f9ce25/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIButtonBase.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIButtonBase.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIButtonBase.as
index b02ffd9..ea446d4 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIButtonBase.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIButtonBase.as
@@ -178,6 +178,142 @@ package org.apache.flex.core
 			return super.y;
 		}
 		
+		private var _explicitWidth:Number;
+		
+		/**
+		 *  The explicitly set width (as opposed to measured width
+		 *  or percentage width).
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function get explicitWidth():Number
+		{
+			return _explicitWidth;
+		}
+		
+		/**
+		 *  @private
+		 */
+		public function set explicitWidth(value:Number):void
+		{
+			if (_explicitWidth == value)
+				return;
+			
+			// width can be pixel or percent not both
+			if (!isNaN(value))
+				_percentWidth = NaN;
+			
+			_explicitWidth = value;
+			
+			dispatchEvent(new Event("explicitWidthChanged"));
+		}
+		
+		private var _explicitHeight:Number;
+		
+		/**
+		 *  The explicitly set width (as opposed to measured width
+		 *  or percentage width).
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function get explicitHeight():Number
+		{
+			return _explicitHeight;
+		}
+		
+		/**
+		 *  @private
+		 */
+		public function set explicitHeight(value:Number):void
+		{
+			if (_explicitHeight == value)
+				return;
+			
+			// height can be pixel or percent not both
+			if (!isNaN(value))
+				_percentHeight = NaN;
+			
+			_explicitHeight = value;
+			
+			dispatchEvent(new Event("explicitHeightChanged"));
+		}
+		
+		private var _percentWidth:Number;
+		
+		/**
+		 *  The requested percentage width this component
+		 *  should have in the parent container.  Note that
+		 *  the actual percentage may be different if the 
+		 *  total is more than 100% or if there are other
+		 *  components with explicitly set widths.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function get percentWidth():Number
+		{
+			return _percentWidth;
+		}
+		
+		/**
+		 *  @private
+		 */
+		public function set percentWidth(value:Number):void
+		{
+			if (_percentWidth == value)
+				return;
+			
+			if (!isNaN(value))
+				_explicitWidth = NaN;
+			
+			_percentWidth = value;
+			
+			dispatchEvent(new Event("percentWidthChanged"));
+		}
+		
+		private var _percentHeight:Number;
+		
+		/**
+		 *  The requested percentage height this component
+		 *  should have in the parent container.  Note that
+		 *  the actual percentage may be different if the 
+		 *  total is more than 100% or if there are other
+		 *  components with explicitly set heights.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function get percentHeight():Number
+		{
+			return _percentHeight;
+		}
+		
+		/**
+		 *  @private
+		 */
+		public function set percentHeight(value:Number):void
+		{
+			if (_percentHeight == value)
+				return;
+			
+			if (!isNaN(value))
+				_explicitHeight = NaN;
+			
+			_percentHeight = value;
+			
+			dispatchEvent(new Event("percentHeightChanged"));
+		}
+		
 		private var _width:Number;
         
         /**
@@ -205,6 +341,11 @@ package org.apache.flex.core
          */
 		override public function set width(value:Number):void
 		{
+			if (explicitWidth != value)
+			{
+				explicitWidth = value;
+			}
+			
 			if (_width != value)
 			{
 				_width = value;
@@ -252,6 +393,11 @@ package org.apache.flex.core
          */
 		override public function set height(value:Number):void
 		{
+			if (explicitHeight != value)
+			{
+				explicitHeight = value;
+			}
+			
 			if (_height != value)
 			{
 				_height = value;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d2f9ce25/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Button.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Button.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Button.as
index 4ef4bc8..b9e0ede 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Button.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Button.as
@@ -20,7 +20,8 @@ package org.apache.flex.html
 {
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.IUIBase;
-    import org.apache.flex.core.UIButtonBase;
+	import org.apache.flex.core.UIButtonBase;
+	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.IEventDispatcher;
 	
     //--------------------------------------
@@ -69,6 +70,52 @@ package org.apache.flex.html
 		public function Button()
 		{
 			super();
-		}		
+		}	
+		
+		/**
+		 * @private
+		 */
+		override public function get width():Number
+		{
+			var useWidth:Number;
+			if (isNaN(this.explicitWidth)) {
+				var padding:Object = ValuesManager.valuesImpl.getValue(this,"padding");
+				if (padding == null) padding = 0;
+				var borderThickness:Object = ValuesManager.valuesImpl.getValue(this,"border-thickness");
+				if (borderThickness == null) borderThickness = 0;
+				var paddingLeft:Object = ValuesManager.valuesImpl.getValue(this,"padding-left");
+				if (paddingLeft == null) paddingLeft = padding;
+				var paddingRight:Object = ValuesManager.valuesImpl.getValue(this,"padding-right");
+				if (paddingRight == null) paddingRight = padding;
+				useWidth = super.width + paddingLeft + paddingRight + 2*Number(borderThickness);
+			}
+			else {
+				useWidth = this.explicitWidth;
+			}
+			return useWidth;
+		}
+		
+		/**
+		 * @private
+		 */
+		override public function get height():Number
+		{
+			var useHeight:Number;
+			if (isNaN(this.explicitHeight)) {
+				var padding:Object = ValuesManager.valuesImpl.getValue(this,"padding");
+				if (padding == null) padding = 0;
+				var borderThickness:Object = ValuesManager.valuesImpl.getValue(this,"border-thickness");
+				if (borderThickness == null) borderThickness = 0;
+				var paddingTop:Object = ValuesManager.valuesImpl.getValue(this,"padding-top");
+				if (paddingTop == null) paddingTop = padding;
+				var paddingBottom:Object = ValuesManager.valuesImpl.getValue(this,"padding-bottom");
+				if (paddingBottom == null) paddingBottom = padding;
+				useHeight = super.height + paddingTop + paddingBottom + 2*Number(borderThickness);
+			}
+			else {
+				useHeight = this.explicitHeight;
+			}
+			return useHeight;
+		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d2f9ce25/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Label.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Label.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Label.as
index a18b1d1..9ed74a2 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Label.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Label.as
@@ -20,6 +20,7 @@ package org.apache.flex.html
 {
 	import org.apache.flex.core.ITextModel;
 	import org.apache.flex.core.UIBase;
+	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
 	
@@ -114,5 +115,29 @@ package org.apache.flex.html
 			super.height = value;
 			IEventDispatcher(model).dispatchEvent( new Event("heightChanged") );
 		}
+		
+		/**
+		 *  @private
+		 *  Override height to provide top and bottom padding.
+		 */
+		override public function get height():Number
+		{
+			var useHeight:Number;
+			if (isNaN(this.explicitHeight)) {
+				var padding:Object = ValuesManager.valuesImpl.getValue(this,"padding");
+				if (padding == null) padding = 0;
+				var borderThickness:Object = ValuesManager.valuesImpl.getValue(this,"border-thickness");
+				if (borderThickness == null) borderThickness = 0;
+				var paddingTop:Object = ValuesManager.valuesImpl.getValue(this,"padding-top");
+				if (paddingTop == null) paddingTop = padding;
+				var paddingBottom:Object = ValuesManager.valuesImpl.getValue(this,"padding-bottom");
+				if (paddingBottom == null) paddingBottom = padding;
+				useHeight = super.height + paddingTop + paddingBottom + 2*Number(borderThickness);
+			}
+			else {
+				useHeight = this.explicitHeight;
+			}
+			return useHeight;
+		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d2f9ce25/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/CSSTextButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/CSSTextButtonView.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/CSSTextButtonView.as
index 2d6bd10..45d0fa4 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/CSSTextButtonView.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/CSSTextButtonView.as
@@ -129,6 +129,9 @@ package org.apache.flex.html.beads
 			var sw:uint = DisplayObject(_strand).width;
 			var sh:uint = DisplayObject(_strand).height;
 			
+			textField.defaultTextFormat.leftMargin = 0;
+			textField.defaultTextFormat.rightMargin = 0;
+			
 			var borderColor:uint;
 			var borderThickness:uint;
 			var borderStyle:String;
@@ -256,12 +259,21 @@ package org.apache.flex.html.beads
 		{
 			var useWidth:uint = Math.max(DisplayObject(_strand).width, upTextField.textWidth);
 			var useHeight:uint = Math.max(DisplayObject(_strand).height, upTextField.textHeight);
+			var borderThickness:Object = ValuesManager.valuesImpl.getValue(_strand, "border-thickness");
+			if (borderThickness == null) borderThickness = 0;
 			var padding:Object = ValuesManager.valuesImpl.getValue(_strand, "padding");
-			
-			if ((useWidth-2*Number(padding)) < upTextField.textWidth) 
-				useWidth = upTextField.textWidth+2*Number(padding);
-			if ((useHeight-2*Number(padding)) < upTextField.textHeight) 
-				useHeight = upTextField.textHeight+2*Number(padding);
+			if (padding == null) padding = 0;
+			var paddingLeft:Object = ValuesManager.valuesImpl.getValue(_strand,"padding-left");
+			if (paddingLeft == null) paddingLeft = padding;
+			var paddingRight:Object = ValuesManager.valuesImpl.getValue(_strand,"padding-right");
+			if (paddingRight == null) paddingRight = padding;
+			var paddingTop:Object = ValuesManager.valuesImpl.getValue(_strand,"padding-top");
+			if (paddingTop == null) paddingTop = padding;
+			var paddingBottom:Object = ValuesManager.valuesImpl.getValue(_strand,"padding-bottom");
+			if (paddingBottom == null) paddingBottom = padding;
+
+			useWidth = paddingLeft + paddingRight + 2*Number(borderThickness) + upTextField.textWidth;
+			useHeight = paddingTop + paddingBottom + 2*Number(borderThickness) + upTextField.textHeight;
 			
 			shape.graphics.clear();
 			shape.graphics.beginFill(0xCCCCCC);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d2f9ce25/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/TextFieldView.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/TextFieldView.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/TextFieldView.as
index 2157490..61b6edb 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/TextFieldView.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/TextFieldView.as
@@ -48,6 +48,7 @@ package org.apache.flex.html.beads
 			textField.selectable = false;
 			textField.type = TextFieldType.DYNAMIC;
 			textField.mouseEnabled = false;
+			textField.autoSize = "left";
 		}
 	}
 }