diff --git a/haxework/gui/HasPaddings.hx b/haxework/gui/HasPaddings.hx new file mode 100644 index 0000000..1a211dc --- /dev/null +++ b/haxework/gui/HasPaddings.hx @@ -0,0 +1,9 @@ +package haxework.gui; + +interface HasPaddings { + public var leftPadding(default, set):Float; + public var rightPadding(default, set):Float; + public var topPadding(default, set):Float; + public var bottomPadding(default, set):Float; + public var paddings(null, set):Float; +} \ No newline at end of file diff --git a/haxework/gui/IGroupView.hx b/haxework/gui/IGroupView.hx index 0a7e5c0..eec97cf 100755 --- a/haxework/gui/IGroupView.hx +++ b/haxework/gui/IGroupView.hx @@ -5,7 +5,7 @@ import haxework.gui.core.HAlign; import haxework.gui.core.VAlign; import haxework.gui.layout.ILayout; -interface IGroupView extends IView { +interface IGroupView extends IView extends HasPaddings { public var views(default, null):Array>; public var layout(default, default):ILayout; @@ -14,12 +14,6 @@ interface IGroupView extends IView { public var layoutHAlign(default, set):HAlign; public var layoutMargin(default, set):Float; - public var leftPadding(default, set):Float; - public var rightPadding(default, set):Float; - public var topPadding(default, set):Float; - public var bottomPadding(default, set):Float; - public var paddings(null, set):Float; - public function addView(view:IView):IView; public function addViewFirst(view:IView):IView; public function insertView(view:IView, index:Int):IView; diff --git a/haxework/gui/ITextView.hx b/haxework/gui/ITextView.hx index 040613b..b53217f 100755 --- a/haxework/gui/ITextView.hx +++ b/haxework/gui/ITextView.hx @@ -3,7 +3,7 @@ package haxework.gui; import haxework.gui.IView.Content; import flash.text.TextFormatAlign; -interface ITextView extends IView { +interface ITextView extends IView extends HasPaddings { public var textField(default, null):T; public var text(get, set):String; public var align(default, set):TextFormatAlign; diff --git a/haxework/gui/TextView.hx b/haxework/gui/TextView.hx index 6ce1776..63c6765 100755 --- a/haxework/gui/TextView.hx +++ b/haxework/gui/TextView.hx @@ -27,7 +27,12 @@ class TextView extends SpriteView implements ITextView { public var layoutHAlign(default, set):HAlign; public var layoutVAlign(default, set):VAlign; public var fill(default, set):Bool = true; - public var paddings(default, set):Float = 0.0; + + public var leftPadding(default, set):Float = 0.0; + public var rightPadding(default, set):Float = 0.0; + public var topPadding(default, set):Float = 0.0; + public var bottomPadding(default, set):Float = 0.0; + public var paddings(null, set):Float = 0.0; private var textFormat:TextFormat; @@ -59,14 +64,6 @@ class TextView extends SpriteView implements ITextView { return new TextField(); } - private function set_paddings(value:Float):Float { - if (paddings != value) { - paddings = value; - invalidate(); - } - return paddings; - } - private function set_fill(value:Bool):Bool { if (fill != value) { fill = value; @@ -192,10 +189,10 @@ class TextView extends SpriteView implements ITextView { textField.height = h; //textField.width = w; #end - width = textField.width + paddings * 2; - height = textField.height + paddings * 2; - textField.x = paddings; - textField.y = paddings; + width = textField.width + leftPadding + rightPadding; + height = textField.height + topPadding + bottomPadding; + textField.x = leftPadding; + textField.y = topPadding; } else { placeTextField(textField); } @@ -223,16 +220,16 @@ class TextView extends SpriteView implements ITextView { //#if html5 textField.height = _textHeight; #end textField.x = switch (layoutHAlign) { case HAlign.NONE: 0; - case HAlign.LEFT: paddings; - case HAlign.CENTER: (width - textField.width) / 2; - case HAlign.RIGHT: width - textField.width - paddings; + case HAlign.LEFT: leftPadding; + case HAlign.CENTER: (width - textField.width) / 2 + leftPadding - rightPadding; + case HAlign.RIGHT: width - textField.width - rightPadding; default: 0; } textField.y = switch (layoutVAlign) { case VAlign.NONE: 0; - case VAlign.TOP: paddings; - case VAlign.MIDDLE: (height - _textHeight) / 2; - case VAlign.BOTTOM: height - _textHeight - paddings; + case VAlign.TOP: topPadding; + case VAlign.MIDDLE: (height - _textHeight) / 2 + topPadding - bottomPadding; + case VAlign.BOTTOM: height - _textHeight - bottomPadding; default: 0; } //} @@ -242,4 +239,43 @@ class TextView extends SpriteView implements ITextView { textField.mouseEnabled = value; return super.set_mouseEnabled(value); } + + + private function set_leftPadding(value:Float):Float { + if (leftPadding != value) { + leftPadding = value; + invalidate(); + } + return leftPadding; + } + + private function set_rightPadding(value:Float):Float { + if (rightPadding != value) { + rightPadding = value; + invalidate(); + } + return rightPadding; + } + + private function set_topPadding(value:Float):Float { + if (topPadding != value) { + topPadding = value; + invalidate(); + } + return topPadding; + } + + private function set_bottomPadding(value:Float):Float { + if (bottomPadding != value) { + bottomPadding = value; + invalidate(); + } + return bottomPadding; + } + + private function set_paddings(value:Float):Float { + leftPadding = rightPadding = topPadding = bottomPadding = value; + invalidate(); + return value; + } }