[gui] add DataView

This commit is contained in:
2019-03-01 17:33:01 +03:00
parent cad4faa580
commit 66f0e79297
12 changed files with 134 additions and 50 deletions

View File

@@ -0,0 +1,17 @@
package haxework.gui;
class DataView<D> extends GroupView {
public var data(default, set):Array<D>;
public var factory(default, default):Int -> D -> IView<Dynamic>;
private function set_data(value:Array<D>):Array<D> {
data = value;
rebuild();
return data;
}
private function rebuild():Void {
views = Lambda.array(Lambda.mapi(data, factory));
}
}

View File

@@ -57,7 +57,9 @@ class ScrollView extends HGroupView {
private function set_position(value:Float):Float {
position = Math.min(Math.max(0, value), 1 - (height / view.height));
scroll.position = position;
if (scroll != null) {
scroll.position = position;
}
toUpdate();
return position;
}

View File

@@ -4,12 +4,18 @@ import flash.geom.Point;
class HScrollBarView extends ScrollBarView {
override private function onMouseDown(p:Point):Void {
mousePosition = p.x - width * position;
}
public function new() {
super();
geometry.size.percent.width = 100;
geometry.size.fixed.height = 10;
}
override private function onMouseMove(p:Point):Void {
position = (p.x - mousePosition) / width;
onScroll.emit(position);
}
override private function onMouseDown(p:Point):Void {
mousePosition = p.x - width * position;
}
override private function onMouseMove(p:Point):Void {
position = (p.x - mousePosition) / width;
onScroll.emit(position);
}
}

View File

@@ -4,12 +4,18 @@ import flash.geom.Point;
class VScrollBarView extends ScrollBarView {
override private function onMouseDown(p:Point):Void {
mousePosition = p.y - height * position;
}
public function new() {
super();
geometry.size.percent.height = 100;
geometry.size.fixed.width = 10;
}
override private function onMouseMove(p:Point):Void {
position = (p.y - mousePosition) / height;
onScroll.emit(position);
}
override private function onMouseDown(p:Point):Void {
mousePosition = p.y - height * position;
}
override private function onMouseMove(p:Point):Void {
position = (p.y - mousePosition) / height;
onScroll.emit(position);
}
}