47 lines
1.4 KiB
Haxe
Executable File
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);
|
|
}
|
|
}
|
|
}
|