Files
haxework/haxework/gui/layout/HorizontalLayout.hx
2013-09-13 14:40:39 +02:00

47 lines
1.4 KiB
Haxe
Executable File

package haxework.gui.layout;
import haxework.gui.core.HAlign;
import haxework.gui.core.SizeType;
class HorizontalLayout extends DefaultLayout {
public function new() {
super();
}
override public function place(group:IGroupView<Dynamic>, views:Array<IView<Dynamic>>):Void {
var fixedSize:Float = group.layoutMargin * (views.length - 1);
var leftSize:Float = group.width - group.leftPadding - group.rightPadding;
for (view in views) {
switch (view.widthType) {
case SizeType.NORMAL: fixedSize += (view.width + view.leftMargin + view.rightMargin);
case SizeType.PERCENT: leftSize -= (view.leftMargin + view.rightMargin);
}
setViewHeight(group, view);
placeViewVertical(group, view);
}
leftSize -= fixedSize;
for (view in views) {
if (view.widthType == SizeType.PERCENT) {
view.w = view.pWidth / 100 * leftSize;
fixedSize += view.width + view.leftMargin + view.rightMargin;
}
}
var x:Float;
switch (group.layoutHAlign) {
case HAlign.LEFT: x = group.leftPadding;
case HAlign.CENTER: x = (group.width - fixedSize) / 2 + group.leftPadding - group.rightPadding;
case HAlign.RIGHT: x = group.width - fixedSize - group.rightPadding;
case HAlign.NONE: x = 0;
}
for (view in views) {
view.x = x + view.leftMargin;
x += (view.width + view.leftMargin + view.rightMargin + group.layoutMargin);
}
}
}