import util.Observable; import lib.ui.reactive.TextElement; import lib.ui.reactive.ReactiveUI; import kernel.ui.WindowManager; import kernel.net.Net; import kernel.KernelEvents; import kernel.Log; import kernel.Init; using util.Extender.LambdaExtender; class Startup { public static function main() { Init.initKernel(); uiTest(); } private static function uiTest() { var context = WindowManager.instance.createNewContext(); var text1 = new Observable("My text"); var text2 = new Observable("Another one"); var ui = new ReactiveUI(context,[ new TextElement(text1,Orange,White,{ onClick: (p) ->{ text1.set("Click"); } }), new TextElement(text2,Black,White,{ onClick: (p)->{ text2.set("Click"); } }) ]); ui.render(); WindowManager.instance.focusContextToOutput(context,"main"); } private static function sendTest() { Net.instance.registerProto("ping",(pack)->{ Log.debug("Message: " + pack.data); pack.respond("Hello from: "+Net.instance.networkID); }); KernelEvents.instance.onChar.handle((char)->{ if (char == "s"){ Log.debug("Sending to 4"); Net.instance.sendAndAwait(4,"ping","Hello world").handle((result)->{ switch (result){ case Success(pack): Log.debug("Response: "+pack.data); case Failure(err): Log.error(err); } }); } }); } }