Added fields to view

This commit is contained in:
2013-08-14 11:11:07 +02:00
parent 2447334936
commit 2a13c20570
7 changed files with 245 additions and 13 deletions

View File

@@ -1,13 +1,26 @@
package com.abit.haxework.gui; package com.abit.haxework.gui;
import com.abit.haxework.gui.core.VAlign;
import com.abit.haxework.gui.core.HAlign;
import com.abit.haxework.gui.layout.DefaultLayout; import com.abit.haxework.gui.layout.DefaultLayout;
import com.abit.haxework.gui.layout.ILayout; import com.abit.haxework.gui.layout.ILayout;
import flash.display.Sprite; import flash.display.Sprite;
class GroupView extends View implements IGroupView<Sprite> { class GroupView extends View implements IGroupView<Sprite> {
public var layout(default, default):ILayout;
public var views(default, null):Array<IView<Sprite>>; public var views(default, null):Array<IView<Sprite>>;
public var layout(default, default):ILayout;
public var layoutVAlign(default, set):VAlign;
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;
private var viewsById:Map<String, IView<Sprite>>; private var viewsById:Map<String, IView<Sprite>>;
public function new(?layout:ILayout) { public function new(?layout:ILayout) {
@@ -46,4 +59,66 @@ class GroupView extends View implements IGroupView<Sprite> {
return null; return null;
} }
} }
private function set_layoutVAlign(value:VAlign):VAlign {
if (layoutVAlign != value) {
layoutVAlign = value;
invalidate();
}
return layoutVAlign;
}
private function set_layoutHAlign(value:HAlign):HAlign {
if (layoutHAlign != value) {
layoutHAlign = value;
invalidate();
}
return layoutHAlign;
}
private function set_layoutMargin(value:Float):Float {
if (layoutMargin != value) {
layoutMargin = value;
invalidate();
}
return layoutMargin;
}
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;
}
} }

View File

@@ -1,5 +1,7 @@
package com.abit.haxework.gui; package com.abit.haxework.gui;
import com.abit.haxework.gui.core.HAlign;
import com.abit.haxework.gui.core.VAlign;
import com.abit.haxework.gui.layout.ILayout; import com.abit.haxework.gui.layout.ILayout;
interface IGroupView<C> extends IView<C> { interface IGroupView<C> extends IView<C> {
@@ -7,6 +9,16 @@ interface IGroupView<C> extends IView<C> {
public var views(default, null):Array<IView<C>>; public var views(default, null):Array<IView<C>>;
public var layout(default, default):ILayout; public var layout(default, default):ILayout;
public var layoutVAlign(default, set):VAlign;
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<C>):IView<C>; public function addView(view:IView<C>):IView<C>;
public function removeView(view:IView<C>):IView<C>; public function removeView(view:IView<C>):IView<C>;
public function removeViewById(id:String):IView<C>; public function removeViewById(id:String):IView<C>;

View File

@@ -1,17 +1,34 @@
package com.abit.haxework.gui; package com.abit.haxework.gui;
import com.abit.haxework.gui.core.VAlign;
import com.abit.haxework.gui.core.HAlign;
import com.abit.haxework.gui.skin.ISkin; import com.abit.haxework.gui.skin.ISkin;
import com.abit.haxework.gui.core.SizeType;
interface IView<C> { interface IView<C> {
public var id(default, null):String; public var id(default, null):String;
public var x(default, set):Float; public var x(default, set):Float;
public var y(default, set):Float; public var y(default, set):Float;
public var widthType(default, null):SizeType;
public var heightType(default, null):SizeType;
public var width(default, set):Float; public var width(default, set):Float;
public var height(default, set):Float; public var height(default, set):Float;
public var pWidth(default, set):Float; public var pWidth(default, set):Float;
public var pHeight(default, set):Float; public var pHeight(default, set):Float;
public var hAlign(default, set):HAlign;
public var vAlign(default, set):VAlign;
public var leftMargin(default, set):Float;
public var rightMargin(default, set):Float;
public var topMargin(default, set):Float;
public var bottomMargin(default, set):Float;
public var margins(null, set):Float;
public var content(default, null):C; public var content(default, null):C;
public var skin(default, set):ISkin<C, IView<C>>; public var skin(default, set):ISkin<C, IView<C>>;

View File

@@ -1,5 +1,8 @@
package com.abit.haxework.gui; package com.abit.haxework.gui;
import com.abit.haxework.gui.core.SizeType;
import com.abit.haxework.gui.core.HAlign;
import com.abit.haxework.gui.core.VAlign;
import flash.events.Event; import flash.events.Event;
import flash.display.Stage; import flash.display.Stage;
import com.abit.haxework.gui.skin.FakeSkin; import com.abit.haxework.gui.skin.FakeSkin;
@@ -16,11 +19,25 @@ class View implements IView<Sprite> {
public var x(default, set):Float; public var x(default, set):Float;
public var y(default, set):Float; public var y(default, set):Float;
public var widthType(default, null):SizeType;
public var heightType(default, null):SizeType;
public var width(default, set):Float; public var width(default, set):Float;
public var height(default, set):Float; public var height(default, set):Float;
public var pWidth(default, set):Float; public var pWidth(default, set):Float;
public var pHeight(default, set):Float; public var pHeight(default, set):Float;
public var hAlign(default, set):HAlign;
public var vAlign(default, set):VAlign;
public var leftMargin(default, set):Float;
public var rightMargin(default, set):Float;
public var topMargin(default, set):Float;
public var bottomMargin(default, set):Float;
public var margins(null, set):Float;
public var content(default, null):Sprite; public var content(default, null):Sprite;
public var skin(default, set):ISkin<Sprite, IView<Sprite>>; public var skin(default, set):ISkin<Sprite, IView<Sprite>>;
@@ -32,12 +49,22 @@ class View implements IView<Sprite> {
skin = new FakeSkin(); skin = new FakeSkin();
x = 0; x = 0;
y = 0; y = 0;
width = 100;
height = 100;
margins = 0;
vAlign = VAlign.CENTER;
hAlign = HAlign.MIDDLE;
} }
private function invalidate():Void { private function invalidate():Void {
updater.invalidate(this); updater.invalidate(this);
} }
private function invalidateParent():Void {
if (parent != null)
updater.invalidate(parent);
}
public function update():Void { public function update():Void {
content.x = x; content.x = x;
content.y = y; content.y = y;
@@ -45,40 +72,121 @@ class View implements IView<Sprite> {
} }
private function set_x(value:Float):Float { private function set_x(value:Float):Float {
x = value; if (x != value) {
invalidate(); x = value;
invalidate();
}
return x; return x;
} }
private function set_y(value:Float):Float { private function set_y(value:Float):Float {
y = value; if (y != value) {
invalidate(); y = value;
invalidate();
}
return y; return y;
} }
private function set_width(value:Float):Float { private function set_width(value:Float):Float {
width = value; if (width != value || widthType != SizeType.NORMAL) {
invalidate(); width = value;
widthType = SizeType.NORMAL;
invalidate();
invalidateParent();
}
return width; return width;
} }
private function set_height(value:Float):Float { private function set_height(value:Float):Float {
height = value; if (height != value || heightType != SizeType.NORMAL) {
invalidate(); height = value;
heightType = SizeType.NORMAL;
invalidate();
invalidateParent();
}
return height; return height;
} }
private function set_pWidth(value:Float):Float { private function set_pWidth(value:Float):Float {
pWidth = value; if (pWidth != value || widthType != SizeType.PERCENT) {
invalidate(); pWidth = value;
widthType = SizeType.PERCENT;
invalidate();
invalidateParent();
}
return pWidth; return pWidth;
} }
private function set_pHeight(value:Float):Float { private function set_pHeight(value:Float):Float {
pHeight = value; if (pHeight != value || heightType != SizeType.PERCENT) {
invalidate(); pHeight = value;
heightType = SizeType.PERCENT;
invalidate();
invalidateParent();
}
return pHeight; return pHeight;
} }
private function set_hAlign(value:HAlign):HAlign {
if (hAlign != value) {
hAlign = value;
invalidate();
invalidateParent();
}
return hAlign;
}
private function set_vAlign(value:VAlign):VAlign {
if (vAlign != value) {
vAlign = value;
invalidate();
invalidateParent();
}
return vAlign;
}
private function set_leftMargin(value:Float):Float {
if (leftMargin != value) {
leftMargin = value;
invalidate();
invalidateParent();
}
return leftMargin;
}
private function set_rightMargin(value:Float):Float {
if (rightMargin != value) {
rightMargin = value;
invalidate();
invalidateParent();
}
return rightMargin;
}
private function set_topMargin(value:Float):Float {
if (topMargin != value) {
topMargin = value;
invalidate();
invalidateParent();
}
return topMargin;
}
private function set_bottomMargin(value:Float):Float {
if (bottomMargin != value) {
bottomMargin = value;
invalidate();
invalidateParent();
}
return bottomMargin;
}
private function set_margins(value:Float):Float {
leftMargin = rightMargin = topMargin = bottomMargin = value;
invalidate();
invalidateParent();
return value;
}
private function set_skin(value:ISkin<Sprite, IView<Sprite>>):ISkin<Sprite, IView<Sprite>> { private function set_skin(value:ISkin<Sprite, IView<Sprite>>):ISkin<Sprite, IView<Sprite>> {
skin = value; skin = value;
invalidate(); invalidate();

View File

@@ -0,0 +1,7 @@
package com.abit.haxework.gui.core;
enum HAlign {
TOP;
MIDDLE;
BOTTOM;
}

View File

@@ -0,0 +1,6 @@
package com.abit.haxework.gui.core;
enum SizeType {
NORMAL;
PERCENT;
}

View File

@@ -0,0 +1,7 @@
package com.abit.haxework.gui.core;
enum VAlign {
LEFT;
CENTER;
RIGHT;
}