[gui] add DataView
This commit is contained in:
17
src/main/haxework/gui/DataView.hx
Normal file
17
src/main/haxework/gui/DataView.hx
Normal 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));
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user